define([], function() {
  'use strict';
  const _root = Object.create(null);
  const dart = Object.create(_root);
  const _debugger = Object.create(_root);
  const _foreign_helper = Object.create(_root);
  const _interceptors = Object.create(_root);
  const _internal = Object.create(_root);
  const _isolate_helper = Object.create(_root);
  const _js_helper = Object.create(_root);
  const _js_mirrors = Object.create(_root);
  const _js_primitives = Object.create(_root);
  const _metadata = Object.create(_root);
  const _native_typed_data = Object.create(_root);
  const async = Object.create(_root);
  const collection = Object.create(_root);
  const convert = Object.create(_root);
  const core = Object.create(_root);
  const developer = Object.create(_root);
  const io = Object.create(_root);
  const isolate = Object.create(_root);
  const js = Object.create(_root);
  const js_util = Object.create(_root);
  const math = Object.create(_root);
  const mirrors = Object.create(_root);
  const typed_data = Object.create(_root);
  const indexed_db = Object.create(_root);
  const html$ = Object.create(_root);
  const html_common = Object.create(_root);
  const svg$ = Object.create(_root);
  const web_audio = Object.create(_root);
  const web_gl = Object.create(_root);
  const web_sql = Object.create(_root);
  const _http = Object.create(_root);
  const dartx = Object.create(_root);
  const $clear = dartx.clear = Symbol("dartx.clear");
  const $hashCode = dartx.hashCode = Symbol("dartx.hashCode");
  const $_equals = dartx._equals = Symbol("dartx._equals");
  const $toString = dartx.toString = Symbol("dartx.toString");
  const $noSuchMethod = dartx.noSuchMethod = Symbol("dartx.noSuchMethod");
  const $runtimeType = dartx.runtimeType = Symbol("dartx.runtimeType");
  const $length = dartx.length = Symbol("dartx.length");
  const $_get = dartx._get = Symbol("dartx._get");
  const $_set = dartx._set = Symbol("dartx._set");
  const $containsKey = dartx.containsKey = Symbol("dartx.containsKey");
  const $any = dartx.any = Symbol("dartx.any");
  const $keys = dartx.keys = Symbol("dartx.keys");
  const $remove = dartx.remove = Symbol("dartx.remove");
  const $isNotEmpty = dartx.isNotEmpty = Symbol("dartx.isNotEmpty");
  const $indexOf = dartx.indexOf = Symbol("dartx.indexOf");
  const $toList = dartx.toList = Symbol("dartx.toList");
  const $trim = dartx.trim = Symbol("dartx.trim");
  const $map = dartx.map = Symbol("dartx.map");
  const $split = dartx.split = Symbol("dartx.split");
  const $substring = dartx.substring = Symbol("dartx.substring");
  const $add = dartx.add = Symbol("dartx.add");
  const $isEmpty = dartx.isEmpty = Symbol("dartx.isEmpty");
  const $values = dartx.values = Symbol("dartx.values");
  const $dartStack = dartx.dartStack = Symbol("dartx.dartStack");
  const $startsWith = dartx.startsWith = Symbol("dartx.startsWith");
  const $compareTo = dartx.compareTo = Symbol("dartx.compareTo");
  const $sort = dartx.sort = Symbol("dartx.sort");
  const $truncate = dartx.truncate = Symbol("dartx.truncate");
  const $asMap = dartx.asMap = Symbol("dartx.asMap");
  const $take = dartx.take = Symbol("dartx.take");
  const $skip = dartx.skip = Symbol("dartx.skip");
  const $forEach = dartx.forEach = Symbol("dartx.forEach");
  const $elementAt = dartx.elementAt = Symbol("dartx.elementAt");
  const $where = dartx.where = Symbol("dartx.where");
  const $console = dartx.console = Symbol("dartx.console");
  const $contains = dartx.contains = Symbol("dartx.contains");
  const $last = dartx.last = Symbol("dartx.last");
  const $join = dartx.join = Symbol("dartx.join");
  const $firstWhere = dartx.firstWhere = Symbol("dartx.firstWhere");
  const $replaceFirst = dartx.replaceFirst = Symbol("dartx.replaceFirst");
  const $putIfAbsent = dartx.putIfAbsent = Symbol("dartx.putIfAbsent");
  const $round = dartx.round = Symbol("dartx.round");
  const $bitAnd = dartx['&'] = Symbol("dartx.&");
  const $bitOr = dartx['|'] = Symbol("dartx.|");
  const $bitXor = dartx['^'] = Symbol("dartx.^");
  const $sublist = dartx.sublist = Symbol("dartx.sublist");
  const $stackTrace = dartx.stackTrace = Symbol("dartx.stackTrace");
  const $invalidValue = dartx.invalidValue = Symbol("dartx.invalidValue");
  const $name = dartx.name = Symbol("dartx.name");
  const $message = dartx.message = Symbol("dartx.message");
  const $checkMutable = dartx.checkMutable = Symbol("dartx.checkMutable");
  const $checkGrowable = dartx.checkGrowable = Symbol("dartx.checkGrowable");
  const $cast = dartx.cast = Symbol("dartx.cast");
  const $removeAt = dartx.removeAt = Symbol("dartx.removeAt");
  const $insert = dartx.insert = Symbol("dartx.insert");
  const $setRange = dartx.setRange = Symbol("dartx.setRange");
  const $insertAll = dartx.insertAll = Symbol("dartx.insertAll");
  const $setAll = dartx.setAll = Symbol("dartx.setAll");
  const $removeLast = dartx.removeLast = Symbol("dartx.removeLast");
  const $removeWhere = dartx.removeWhere = Symbol("dartx.removeWhere");
  const $retainWhere = dartx.retainWhere = Symbol("dartx.retainWhere");
  const $expand = dartx.expand = Symbol("dartx.expand");
  const $addAll = dartx.addAll = Symbol("dartx.addAll");
  const $takeWhile = dartx.takeWhile = Symbol("dartx.takeWhile");
  const $skipWhile = dartx.skipWhile = Symbol("dartx.skipWhile");
  const $reduce = dartx.reduce = Symbol("dartx.reduce");
  const $fold = dartx.fold = Symbol("dartx.fold");
  const $lastWhere = dartx.lastWhere = Symbol("dartx.lastWhere");
  const $singleWhere = dartx.singleWhere = Symbol("dartx.singleWhere");
  const $getRange = dartx.getRange = Symbol("dartx.getRange");
  const $first = dartx.first = Symbol("dartx.first");
  const $single = dartx.single = Symbol("dartx.single");
  const $removeRange = dartx.removeRange = Symbol("dartx.removeRange");
  const $fillRange = dartx.fillRange = Symbol("dartx.fillRange");
  const $replaceRange = dartx.replaceRange = Symbol("dartx.replaceRange");
  const $every = dartx.every = Symbol("dartx.every");
  const $reversed = dartx.reversed = Symbol("dartx.reversed");
  const $shuffle = dartx.shuffle = Symbol("dartx.shuffle");
  const $lastIndexOf = dartx.lastIndexOf = Symbol("dartx.lastIndexOf");
  const $toSet = dartx.toSet = Symbol("dartx.toSet");
  const $iterator = dartx.iterator = Symbol("dartx.iterator");
  const $followedBy = dartx.followedBy = Symbol("dartx.followedBy");
  const $whereType = dartx.whereType = Symbol("dartx.whereType");
  const $plus = dartx['+'] = Symbol("dartx.+");
  const $indexWhere = dartx.indexWhere = Symbol("dartx.indexWhere");
  const $lastIndexWhere = dartx.lastIndexWhere = Symbol("dartx.lastIndexWhere");
  const $isNegative = dartx.isNegative = Symbol("dartx.isNegative");
  const $isNaN = dartx.isNaN = Symbol("dartx.isNaN");
  const $isInfinite = dartx.isInfinite = Symbol("dartx.isInfinite");
  const $isFinite = dartx.isFinite = Symbol("dartx.isFinite");
  const $remainder = dartx.remainder = Symbol("dartx.remainder");
  const $abs = dartx.abs = Symbol("dartx.abs");
  const $sign = dartx.sign = Symbol("dartx.sign");
  const $truncateToDouble = dartx.truncateToDouble = Symbol("dartx.truncateToDouble");
  const $toInt = dartx.toInt = Symbol("dartx.toInt");
  const $ceilToDouble = dartx.ceilToDouble = Symbol("dartx.ceilToDouble");
  const $ceil = dartx.ceil = Symbol("dartx.ceil");
  const $floorToDouble = dartx.floorToDouble = Symbol("dartx.floorToDouble");
  const $floor = dartx.floor = Symbol("dartx.floor");
  const $roundToDouble = dartx.roundToDouble = Symbol("dartx.roundToDouble");
  const $clamp = dartx.clamp = Symbol("dartx.clamp");
  const $toDouble = dartx.toDouble = Symbol("dartx.toDouble");
  const $toStringAsFixed = dartx.toStringAsFixed = Symbol("dartx.toStringAsFixed");
  const $toStringAsExponential = dartx.toStringAsExponential = Symbol("dartx.toStringAsExponential");
  const $toStringAsPrecision = dartx.toStringAsPrecision = Symbol("dartx.toStringAsPrecision");
  const $codeUnitAt = dartx.codeUnitAt = Symbol("dartx.codeUnitAt");
  const $toRadixString = dartx.toRadixString = Symbol("dartx.toRadixString");
  const $times = dartx['*'] = Symbol("dartx.*");
  const $_negate = dartx._negate = Symbol("dartx._negate");
  const $minus = dartx['-'] = Symbol("dartx.-");
  const $divide = dartx['/'] = Symbol("dartx./");
  const $modulo = dartx['%'] = Symbol("dartx.%");
  const $floorDivide = dartx['~/'] = Symbol("dartx.~/");
  const $leftShift = dartx['<<'] = Symbol("dartx.<<");
  const $rightShift = dartx['>>'] = Symbol("dartx.>>");
  const $lessThan = dartx['<'] = Symbol("dartx.<");
  const $greaterThan = dartx['>'] = Symbol("dartx.>");
  const $lessOrEquals = dartx['<='] = Symbol("dartx.<=");
  const $greaterOrEquals = dartx['>='] = Symbol("dartx.>=");
  const $isEven = dartx.isEven = Symbol("dartx.isEven");
  const $isOdd = dartx.isOdd = Symbol("dartx.isOdd");
  const $toUnsigned = dartx.toUnsigned = Symbol("dartx.toUnsigned");
  const $toSigned = dartx.toSigned = Symbol("dartx.toSigned");
  const $bitLength = dartx.bitLength = Symbol("dartx.bitLength");
  const $modPow = dartx.modPow = Symbol("dartx.modPow");
  const $modInverse = dartx.modInverse = Symbol("dartx.modInverse");
  const $gcd = dartx.gcd = Symbol("dartx.gcd");
  const $bitNot = dartx['~'] = Symbol("dartx.~");
  const $allMatches = dartx.allMatches = Symbol("dartx.allMatches");
  const $matchAsPrefix = dartx.matchAsPrefix = Symbol("dartx.matchAsPrefix");
  const $endsWith = dartx.endsWith = Symbol("dartx.endsWith");
  const $replaceAll = dartx.replaceAll = Symbol("dartx.replaceAll");
  const $splitMapJoin = dartx.splitMapJoin = Symbol("dartx.splitMapJoin");
  const $replaceAllMapped = dartx.replaceAllMapped = Symbol("dartx.replaceAllMapped");
  const $replaceFirstMapped = dartx.replaceFirstMapped = Symbol("dartx.replaceFirstMapped");
  const $toLowerCase = dartx.toLowerCase = Symbol("dartx.toLowerCase");
  const $toUpperCase = dartx.toUpperCase = Symbol("dartx.toUpperCase");
  const $trimLeft = dartx.trimLeft = Symbol("dartx.trimLeft");
  const $trimRight = dartx.trimRight = Symbol("dartx.trimRight");
  const $padLeft = dartx.padLeft = Symbol("dartx.padLeft");
  const $padRight = dartx.padRight = Symbol("dartx.padRight");
  const $codeUnits = dartx.codeUnits = Symbol("dartx.codeUnits");
  const $runes = dartx.runes = Symbol("dartx.runes");
  const $containsValue = dartx.containsValue = Symbol("dartx.containsValue");
  const $update = dartx.update = Symbol("dartx.update");
  const $updateAll = dartx.updateAll = Symbol("dartx.updateAll");
  const $entries = dartx.entries = Symbol("dartx.entries");
  const $addEntries = dartx.addEntries = Symbol("dartx.addEntries");
  const $lengthInBytes = dartx.lengthInBytes = Symbol("dartx.lengthInBytes");
  const $asUint8List = dartx.asUint8List = Symbol("dartx.asUint8List");
  const $asInt8List = dartx.asInt8List = Symbol("dartx.asInt8List");
  const $asUint8ClampedList = dartx.asUint8ClampedList = Symbol("dartx.asUint8ClampedList");
  const $asUint16List = dartx.asUint16List = Symbol("dartx.asUint16List");
  const $asInt16List = dartx.asInt16List = Symbol("dartx.asInt16List");
  const $asUint32List = dartx.asUint32List = Symbol("dartx.asUint32List");
  const $asInt32List = dartx.asInt32List = Symbol("dartx.asInt32List");
  const $asUint64List = dartx.asUint64List = Symbol("dartx.asUint64List");
  const $asInt64List = dartx.asInt64List = Symbol("dartx.asInt64List");
  const $asInt32x4List = dartx.asInt32x4List = Symbol("dartx.asInt32x4List");
  const $asFloat32List = dartx.asFloat32List = Symbol("dartx.asFloat32List");
  const $asFloat64List = dartx.asFloat64List = Symbol("dartx.asFloat64List");
  const $asFloat32x4List = dartx.asFloat32x4List = Symbol("dartx.asFloat32x4List");
  const $asFloat64x2List = dartx.asFloat64x2List = Symbol("dartx.asFloat64x2List");
  const $asByteData = dartx.asByteData = Symbol("dartx.asByteData");
  const $offsetInBytes = dartx.offsetInBytes = Symbol("dartx.offsetInBytes");
  const $buffer = dartx.buffer = Symbol("dartx.buffer");
  const $elementSizeInBytes = dartx.elementSizeInBytes = Symbol("dartx.elementSizeInBytes");
  const $getFloat32 = dartx.getFloat32 = Symbol("dartx.getFloat32");
  const $getFloat64 = dartx.getFloat64 = Symbol("dartx.getFloat64");
  const $getInt16 = dartx.getInt16 = Symbol("dartx.getInt16");
  const $getInt32 = dartx.getInt32 = Symbol("dartx.getInt32");
  const $getInt64 = dartx.getInt64 = Symbol("dartx.getInt64");
  const $getInt8 = dartx.getInt8 = Symbol("dartx.getInt8");
  const $getUint16 = dartx.getUint16 = Symbol("dartx.getUint16");
  const $getUint32 = dartx.getUint32 = Symbol("dartx.getUint32");
  const $getUint64 = dartx.getUint64 = Symbol("dartx.getUint64");
  const $getUint8 = dartx.getUint8 = Symbol("dartx.getUint8");
  const $setFloat32 = dartx.setFloat32 = Symbol("dartx.setFloat32");
  const $setFloat64 = dartx.setFloat64 = Symbol("dartx.setFloat64");
  const $setInt16 = dartx.setInt16 = Symbol("dartx.setInt16");
  const $setInt32 = dartx.setInt32 = Symbol("dartx.setInt32");
  const $setInt64 = dartx.setInt64 = Symbol("dartx.setInt64");
  const $setInt8 = dartx.setInt8 = Symbol("dartx.setInt8");
  const $setUint16 = dartx.setUint16 = Symbol("dartx.setUint16");
  const $setUint32 = dartx.setUint32 = Symbol("dartx.setUint32");
  const $setUint64 = dartx.setUint64 = Symbol("dartx.setUint64");
  const $setUint8 = dartx.setUint8 = Symbol("dartx.setUint8");
  const $left = dartx.left = Symbol("dartx.left");
  const $width = dartx.width = Symbol("dartx.width");
  const $top = dartx.top = Symbol("dartx.top");
  const $height = dartx.height = Symbol("dartx.height");
  const $right = dartx.right = Symbol("dartx.right");
  const $bottom = dartx.bottom = Symbol("dartx.bottom");
  const $intersection = dartx.intersection = Symbol("dartx.intersection");
  const $intersects = dartx.intersects = Symbol("dartx.intersects");
  const $boundingBox = dartx.boundingBox = Symbol("dartx.boundingBox");
  const $containsRectangle = dartx.containsRectangle = Symbol("dartx.containsRectangle");
  const $containsPoint = dartx.containsPoint = Symbol("dartx.containsPoint");
  const $topLeft = dartx.topLeft = Symbol("dartx.topLeft");
  const $topRight = dartx.topRight = Symbol("dartx.topRight");
  const $bottomRight = dartx.bottomRight = Symbol("dartx.bottomRight");
  const $bottomLeft = dartx.bottomLeft = Symbol("dartx.bottomLeft");
  const $delete = dartx.delete = Symbol("dartx.delete");
  const $next = dartx.next = Symbol("dartx.next");
  const $direction = dartx.direction = Symbol("dartx.direction");
  const $key = dartx.key = Symbol("dartx.key");
  const $primaryKey = dartx.primaryKey = Symbol("dartx.primaryKey");
  const $source = dartx.source = Symbol("dartx.source");
  const $advance = dartx.advance = Symbol("dartx.advance");
  const $continuePrimaryKey = dartx.continuePrimaryKey = Symbol("dartx.continuePrimaryKey");
  const $value = dartx.value = Symbol("dartx.value");
  const $createObjectStore = dartx.createObjectStore = Symbol("dartx.createObjectStore");
  const $transaction = dartx.transaction = Symbol("dartx.transaction");
  const $transactionStore = dartx.transactionStore = Symbol("dartx.transactionStore");
  const $transactionList = dartx.transactionList = Symbol("dartx.transactionList");
  const $transactionStores = dartx.transactionStores = Symbol("dartx.transactionStores");
  const $objectStoreNames = dartx.objectStoreNames = Symbol("dartx.objectStoreNames");
  const $version = dartx.version = Symbol("dartx.version");
  const $close = dartx.close = Symbol("dartx.close");
  const $deleteObjectStore = dartx.deleteObjectStore = Symbol("dartx.deleteObjectStore");
  const $onAbort = dartx.onAbort = Symbol("dartx.onAbort");
  const $onClose = dartx.onClose = Symbol("dartx.onClose");
  const $onError = dartx.onError = Symbol("dartx.onError");
  const $onVersionChange = dartx.onVersionChange = Symbol("dartx.onVersionChange");
  const $on = dartx.on = Symbol("dartx.on");
  const $addEventListener = dartx.addEventListener = Symbol("dartx.addEventListener");
  const $removeEventListener = dartx.removeEventListener = Symbol("dartx.removeEventListener");
  const $dispatchEvent = dartx.dispatchEvent = Symbol("dartx.dispatchEvent");
  const $open = dartx.open = Symbol("dartx.open");
  const $onBlocked = dartx.onBlocked = Symbol("dartx.onBlocked");
  const $onSuccess = dartx.onSuccess = Symbol("dartx.onSuccess");
  const $deleteDatabase = dartx.deleteDatabase = Symbol("dartx.deleteDatabase");
  const $supportsDatabaseNames = dartx.supportsDatabaseNames = Symbol("dartx.supportsDatabaseNames");
  const $cmp = dartx.cmp = Symbol("dartx.cmp");
  const $result = dartx.result = Symbol("dartx.result");
  const $count = dartx.count = Symbol("dartx.count");
  const $get = dartx.get = Symbol("dartx.get");
  const $getKey = dartx.getKey = Symbol("dartx.getKey");
  const $openCursor = dartx.openCursor = Symbol("dartx.openCursor");
  const $openKeyCursor = dartx.openKeyCursor = Symbol("dartx.openKeyCursor");
  const $keyPath = dartx.keyPath = Symbol("dartx.keyPath");
  const $multiEntry = dartx.multiEntry = Symbol("dartx.multiEntry");
  const $objectStore = dartx.objectStore = Symbol("dartx.objectStore");
  const $unique = dartx.unique = Symbol("dartx.unique");
  const $getAll = dartx.getAll = Symbol("dartx.getAll");
  const $getAllKeys = dartx.getAllKeys = Symbol("dartx.getAllKeys");
  const $lower = dartx.lower = Symbol("dartx.lower");
  const $lowerOpen = dartx.lowerOpen = Symbol("dartx.lowerOpen");
  const $upper = dartx.upper = Symbol("dartx.upper");
  const $upperOpen = dartx.upperOpen = Symbol("dartx.upperOpen");
  const $includes = dartx.includes = Symbol("dartx.includes");
  const $put = dartx.put = Symbol("dartx.put");
  const $getObject = dartx.getObject = Symbol("dartx.getObject");
  const $createIndex = dartx.createIndex = Symbol("dartx.createIndex");
  const $autoIncrement = dartx.autoIncrement = Symbol("dartx.autoIncrement");
  const $indexNames = dartx.indexNames = Symbol("dartx.indexNames");
  const $deleteIndex = dartx.deleteIndex = Symbol("dartx.deleteIndex");
  const $index = dartx.index = Symbol("dartx.index");
  const $type = dartx.type = Symbol("dartx.type");
  const $observe = dartx.observe = Symbol("dartx.observe");
  const $unobserve = dartx.unobserve = Symbol("dartx.unobserve");
  const $database = dartx.database = Symbol("dartx.database");
  const $records = dartx.records = Symbol("dartx.records");
  const $onUpgradeNeeded = dartx.onUpgradeNeeded = Symbol("dartx.onUpgradeNeeded");
  const $error = dartx.error = Symbol("dartx.error");
  const $readyState = dartx.readyState = Symbol("dartx.readyState");
  const $onComplete = dartx.onComplete = Symbol("dartx.onComplete");
  const $completed = dartx.completed = Symbol("dartx.completed");
  const $db = dartx.db = Symbol("dartx.db");
  const $mode = dartx.mode = Symbol("dartx.mode");
  const $abort = dartx.abort = Symbol("dartx.abort");
  const $dataLoss = dartx.dataLoss = Symbol("dartx.dataLoss");
  const $dataLossMessage = dartx.dataLossMessage = Symbol("dartx.dataLossMessage");
  const $newVersion = dartx.newVersion = Symbol("dartx.newVersion");
  const $oldVersion = dartx.oldVersion = Symbol("dartx.oldVersion");
  const $target = dartx.target = Symbol("dartx.target");
  const $currentTarget = dartx.currentTarget = Symbol("dartx.currentTarget");
  const $matches = dartx.matches = Symbol("dartx.matches");
  const $parent = dartx.parent = Symbol("dartx.parent");
  const $matchingTarget = dartx.matchingTarget = Symbol("dartx.matchingTarget");
  const $path = dartx.path = Symbol("dartx.path");
  const $bubbles = dartx.bubbles = Symbol("dartx.bubbles");
  const $cancelable = dartx.cancelable = Symbol("dartx.cancelable");
  const $composed = dartx.composed = Symbol("dartx.composed");
  const $defaultPrevented = dartx.defaultPrevented = Symbol("dartx.defaultPrevented");
  const $eventPhase = dartx.eventPhase = Symbol("dartx.eventPhase");
  const $isTrusted = dartx.isTrusted = Symbol("dartx.isTrusted");
  const $timeStamp = dartx.timeStamp = Symbol("dartx.timeStamp");
  const $composedPath = dartx.composedPath = Symbol("dartx.composedPath");
  const $preventDefault = dartx.preventDefault = Symbol("dartx.preventDefault");
  const $stopImmediatePropagation = dartx.stopImmediatePropagation = Symbol("dartx.stopImmediatePropagation");
  const $stopPropagation = dartx.stopPropagation = Symbol("dartx.stopPropagation");
  const $nonce = dartx.nonce = Symbol("dartx.nonce");
  const $createFragment = dartx.createFragment = Symbol("dartx.createFragment");
  const $nodes = dartx.nodes = Symbol("dartx.nodes");
  const $attributes = dartx.attributes = Symbol("dartx.attributes");
  const $children = dartx.children = Symbol("dartx.children");
  const $querySelectorAll = dartx.querySelectorAll = Symbol("dartx.querySelectorAll");
  const $classes = dartx.classes = Symbol("dartx.classes");
  const $dataset = dartx.dataset = Symbol("dartx.dataset");
  const $getNamespacedAttributes = dartx.getNamespacedAttributes = Symbol("dartx.getNamespacedAttributes");
  const $getComputedStyle = dartx.getComputedStyle = Symbol("dartx.getComputedStyle");
  const $client = dartx.client = Symbol("dartx.client");
  const $offsetLeft = dartx.offsetLeft = Symbol("dartx.offsetLeft");
  const $offsetTop = dartx.offsetTop = Symbol("dartx.offsetTop");
  const $offsetWidth = dartx.offsetWidth = Symbol("dartx.offsetWidth");
  const $offsetHeight = dartx.offsetHeight = Symbol("dartx.offsetHeight");
  const $offset = dartx.offset = Symbol("dartx.offset");
  const $append = dartx.append = Symbol("dartx.append");
  const $appendText = dartx.appendText = Symbol("dartx.appendText");
  const $insertAdjacentHtml = dartx.insertAdjacentHtml = Symbol("dartx.insertAdjacentHtml");
  const $appendHtml = dartx.appendHtml = Symbol("dartx.appendHtml");
  const $enteredView = dartx.enteredView = Symbol("dartx.enteredView");
  const $attached = dartx.attached = Symbol("dartx.attached");
  const $leftView = dartx.leftView = Symbol("dartx.leftView");
  const $detached = dartx.detached = Symbol("dartx.detached");
  const $getClientRects = dartx.getClientRects = Symbol("dartx.getClientRects");
  const $animate = dartx.animate = Symbol("dartx.animate");
  const $attributeChanged = dartx.attributeChanged = Symbol("dartx.attributeChanged");
  const $localName = dartx.localName = Symbol("dartx.localName");
  const $namespaceUri = dartx.namespaceUri = Symbol("dartx.namespaceUri");
  const $scrollIntoView = dartx.scrollIntoView = Symbol("dartx.scrollIntoView");
  const $insertAdjacentText = dartx.insertAdjacentText = Symbol("dartx.insertAdjacentText");
  const $insertAdjacentElement = dartx.insertAdjacentElement = Symbol("dartx.insertAdjacentElement");
  const $nextNode = dartx.nextNode = Symbol("dartx.nextNode");
  const $matchesWithAncestors = dartx.matchesWithAncestors = Symbol("dartx.matchesWithAncestors");
  const $createShadowRoot = dartx.createShadowRoot = Symbol("dartx.createShadowRoot");
  const $shadowRoot = dartx.shadowRoot = Symbol("dartx.shadowRoot");
  const $contentEdge = dartx.contentEdge = Symbol("dartx.contentEdge");
  const $paddingEdge = dartx.paddingEdge = Symbol("dartx.paddingEdge");
  const $borderEdge = dartx.borderEdge = Symbol("dartx.borderEdge");
  const $marginEdge = dartx.marginEdge = Symbol("dartx.marginEdge");
  const $offsetTo = dartx.offsetTo = Symbol("dartx.offsetTo");
  const $documentOffset = dartx.documentOffset = Symbol("dartx.documentOffset");
  const $createHtmlDocument = dartx.createHtmlDocument = Symbol("dartx.createHtmlDocument");
  const $createElement = dartx.createElement = Symbol("dartx.createElement");
  const $baseUri = dartx.baseUri = Symbol("dartx.baseUri");
  const $head = dartx.head = Symbol("dartx.head");
  const $setInnerHtml = dartx.setInnerHtml = Symbol("dartx.setInnerHtml");
  const $innerHtml = dartx.innerHtml = Symbol("dartx.innerHtml");
  const $text = dartx.text = Symbol("dartx.text");
  const $offsetParent = dartx.offsetParent = Symbol("dartx.offsetParent");
  const $scrollHeight = dartx.scrollHeight = Symbol("dartx.scrollHeight");
  const $scrollLeft = dartx.scrollLeft = Symbol("dartx.scrollLeft");
  const $scrollTop = dartx.scrollTop = Symbol("dartx.scrollTop");
  const $scrollWidth = dartx.scrollWidth = Symbol("dartx.scrollWidth");
  const $contentEditable = dartx.contentEditable = Symbol("dartx.contentEditable");
  const $dir = dartx.dir = Symbol("dartx.dir");
  const $draggable = dartx.draggable = Symbol("dartx.draggable");
  const $hidden = dartx.hidden = Symbol("dartx.hidden");
  const $inert = dartx.inert = Symbol("dartx.inert");
  const $inputMode = dartx.inputMode = Symbol("dartx.inputMode");
  const $isContentEditable = dartx.isContentEditable = Symbol("dartx.isContentEditable");
  const $lang = dartx.lang = Symbol("dartx.lang");
  const $spellcheck = dartx.spellcheck = Symbol("dartx.spellcheck");
  const $style = dartx.style = Symbol("dartx.style");
  const $tabIndex = dartx.tabIndex = Symbol("dartx.tabIndex");
  const $title = dartx.title = Symbol("dartx.title");
  const $translate = dartx.translate = Symbol("dartx.translate");
  const $blur = dartx.blur = Symbol("dartx.blur");
  const $click = dartx.click = Symbol("dartx.click");
  const $focus = dartx.focus = Symbol("dartx.focus");
  const $accessibleNode = dartx.accessibleNode = Symbol("dartx.accessibleNode");
  const $assignedSlot = dartx.assignedSlot = Symbol("dartx.assignedSlot");
  const $className = dartx.className = Symbol("dartx.className");
  const $clientHeight = dartx.clientHeight = Symbol("dartx.clientHeight");
  const $clientLeft = dartx.clientLeft = Symbol("dartx.clientLeft");
  const $clientTop = dartx.clientTop = Symbol("dartx.clientTop");
  const $clientWidth = dartx.clientWidth = Symbol("dartx.clientWidth");
  const $computedName = dartx.computedName = Symbol("dartx.computedName");
  const $computedRole = dartx.computedRole = Symbol("dartx.computedRole");
  const $id = dartx.id = Symbol("dartx.id");
  const $outerHtml = dartx.outerHtml = Symbol("dartx.outerHtml");
  const $slot = dartx.slot = Symbol("dartx.slot");
  const $styleMap = dartx.styleMap = Symbol("dartx.styleMap");
  const $tagName = dartx.tagName = Symbol("dartx.tagName");
  const $attachShadow = dartx.attachShadow = Symbol("dartx.attachShadow");
  const $closest = dartx.closest = Symbol("dartx.closest");
  const $getAnimations = dartx.getAnimations = Symbol("dartx.getAnimations");
  const $getAttribute = dartx.getAttribute = Symbol("dartx.getAttribute");
  const $getAttributeNS = dartx.getAttributeNS = Symbol("dartx.getAttributeNS");
  const $getAttributeNames = dartx.getAttributeNames = Symbol("dartx.getAttributeNames");
  const $getBoundingClientRect = dartx.getBoundingClientRect = Symbol("dartx.getBoundingClientRect");
  const $getDestinationInsertionPoints = dartx.getDestinationInsertionPoints = Symbol("dartx.getDestinationInsertionPoints");
  const $getElementsByClassName = dartx.getElementsByClassName = Symbol("dartx.getElementsByClassName");
  const $hasPointerCapture = dartx.hasPointerCapture = Symbol("dartx.hasPointerCapture");
  const $releasePointerCapture = dartx.releasePointerCapture = Symbol("dartx.releasePointerCapture");
  const $requestPointerLock = dartx.requestPointerLock = Symbol("dartx.requestPointerLock");
  const $scroll = dartx.scroll = Symbol("dartx.scroll");
  const $scrollBy = dartx.scrollBy = Symbol("dartx.scrollBy");
  const $scrollTo = dartx.scrollTo = Symbol("dartx.scrollTo");
  const $setApplyScroll = dartx.setApplyScroll = Symbol("dartx.setApplyScroll");
  const $setAttribute = dartx.setAttribute = Symbol("dartx.setAttribute");
  const $setAttributeNS = dartx.setAttributeNS = Symbol("dartx.setAttributeNS");
  const $setDistributeScroll = dartx.setDistributeScroll = Symbol("dartx.setDistributeScroll");
  const $setPointerCapture = dartx.setPointerCapture = Symbol("dartx.setPointerCapture");
  const $requestFullscreen = dartx.requestFullscreen = Symbol("dartx.requestFullscreen");
  const $after = dartx.after = Symbol("dartx.after");
  const $before = dartx.before = Symbol("dartx.before");
  const $nextElementSibling = dartx.nextElementSibling = Symbol("dartx.nextElementSibling");
  const $previousElementSibling = dartx.previousElementSibling = Symbol("dartx.previousElementSibling");
  const $querySelector = dartx.querySelector = Symbol("dartx.querySelector");
  const $onBeforeCopy = dartx.onBeforeCopy = Symbol("dartx.onBeforeCopy");
  const $onBeforeCut = dartx.onBeforeCut = Symbol("dartx.onBeforeCut");
  const $onBeforePaste = dartx.onBeforePaste = Symbol("dartx.onBeforePaste");
  const $onBlur = dartx.onBlur = Symbol("dartx.onBlur");
  const $onCanPlay = dartx.onCanPlay = Symbol("dartx.onCanPlay");
  const $onCanPlayThrough = dartx.onCanPlayThrough = Symbol("dartx.onCanPlayThrough");
  const $onChange = dartx.onChange = Symbol("dartx.onChange");
  const $onClick = dartx.onClick = Symbol("dartx.onClick");
  const $onContextMenu = dartx.onContextMenu = Symbol("dartx.onContextMenu");
  const $onCopy = dartx.onCopy = Symbol("dartx.onCopy");
  const $onCut = dartx.onCut = Symbol("dartx.onCut");
  const $onDoubleClick = dartx.onDoubleClick = Symbol("dartx.onDoubleClick");
  const $onDrag = dartx.onDrag = Symbol("dartx.onDrag");
  const $onDragEnd = dartx.onDragEnd = Symbol("dartx.onDragEnd");
  const $onDragEnter = dartx.onDragEnter = Symbol("dartx.onDragEnter");
  const $onDragLeave = dartx.onDragLeave = Symbol("dartx.onDragLeave");
  const $onDragOver = dartx.onDragOver = Symbol("dartx.onDragOver");
  const $onDragStart = dartx.onDragStart = Symbol("dartx.onDragStart");
  const $onDrop = dartx.onDrop = Symbol("dartx.onDrop");
  const $onDurationChange = dartx.onDurationChange = Symbol("dartx.onDurationChange");
  const $onEmptied = dartx.onEmptied = Symbol("dartx.onEmptied");
  const $onEnded = dartx.onEnded = Symbol("dartx.onEnded");
  const $onFocus = dartx.onFocus = Symbol("dartx.onFocus");
  const $onInput = dartx.onInput = Symbol("dartx.onInput");
  const $onInvalid = dartx.onInvalid = Symbol("dartx.onInvalid");
  const $onKeyDown = dartx.onKeyDown = Symbol("dartx.onKeyDown");
  const $onKeyPress = dartx.onKeyPress = Symbol("dartx.onKeyPress");
  const $onKeyUp = dartx.onKeyUp = Symbol("dartx.onKeyUp");
  const $onLoad = dartx.onLoad = Symbol("dartx.onLoad");
  const $onLoadedData = dartx.onLoadedData = Symbol("dartx.onLoadedData");
  const $onLoadedMetadata = dartx.onLoadedMetadata = Symbol("dartx.onLoadedMetadata");
  const $onMouseDown = dartx.onMouseDown = Symbol("dartx.onMouseDown");
  const $onMouseEnter = dartx.onMouseEnter = Symbol("dartx.onMouseEnter");
  const $onMouseLeave = dartx.onMouseLeave = Symbol("dartx.onMouseLeave");
  const $onMouseMove = dartx.onMouseMove = Symbol("dartx.onMouseMove");
  const $onMouseOut = dartx.onMouseOut = Symbol("dartx.onMouseOut");
  const $onMouseOver = dartx.onMouseOver = Symbol("dartx.onMouseOver");
  const $onMouseUp = dartx.onMouseUp = Symbol("dartx.onMouseUp");
  const $onMouseWheel = dartx.onMouseWheel = Symbol("dartx.onMouseWheel");
  const $onPaste = dartx.onPaste = Symbol("dartx.onPaste");
  const $onPause = dartx.onPause = Symbol("dartx.onPause");
  const $onPlay = dartx.onPlay = Symbol("dartx.onPlay");
  const $onPlaying = dartx.onPlaying = Symbol("dartx.onPlaying");
  const $onRateChange = dartx.onRateChange = Symbol("dartx.onRateChange");
  const $onReset = dartx.onReset = Symbol("dartx.onReset");
  const $onResize = dartx.onResize = Symbol("dartx.onResize");
  const $onScroll = dartx.onScroll = Symbol("dartx.onScroll");
  const $onSearch = dartx.onSearch = Symbol("dartx.onSearch");
  const $onSeeked = dartx.onSeeked = Symbol("dartx.onSeeked");
  const $onSeeking = dartx.onSeeking = Symbol("dartx.onSeeking");
  const $onSelect = dartx.onSelect = Symbol("dartx.onSelect");
  const $onSelectStart = dartx.onSelectStart = Symbol("dartx.onSelectStart");
  const $onStalled = dartx.onStalled = Symbol("dartx.onStalled");
  const $onSubmit = dartx.onSubmit = Symbol("dartx.onSubmit");
  const $onSuspend = dartx.onSuspend = Symbol("dartx.onSuspend");
  const $onTimeUpdate = dartx.onTimeUpdate = Symbol("dartx.onTimeUpdate");
  const $onTouchCancel = dartx.onTouchCancel = Symbol("dartx.onTouchCancel");
  const $onTouchEnd = dartx.onTouchEnd = Symbol("dartx.onTouchEnd");
  const $onTouchEnter = dartx.onTouchEnter = Symbol("dartx.onTouchEnter");
  const $onTouchLeave = dartx.onTouchLeave = Symbol("dartx.onTouchLeave");
  const $onTouchMove = dartx.onTouchMove = Symbol("dartx.onTouchMove");
  const $onTouchStart = dartx.onTouchStart = Symbol("dartx.onTouchStart");
  const $onTransitionEnd = dartx.onTransitionEnd = Symbol("dartx.onTransitionEnd");
  const $onVolumeChange = dartx.onVolumeChange = Symbol("dartx.onVolumeChange");
  const $onWaiting = dartx.onWaiting = Symbol("dartx.onWaiting");
  const $onFullscreenChange = dartx.onFullscreenChange = Symbol("dartx.onFullscreenChange");
  const $onFullscreenError = dartx.onFullscreenError = Symbol("dartx.onFullscreenError");
  const $onWheel = dartx.onWheel = Symbol("dartx.onWheel");
  const $replaceWith = dartx.replaceWith = Symbol("dartx.replaceWith");
  const $insertAllBefore = dartx.insertAllBefore = Symbol("dartx.insertAllBefore");
  const $childNodes = dartx.childNodes = Symbol("dartx.childNodes");
  const $firstChild = dartx.firstChild = Symbol("dartx.firstChild");
  const $isConnected = dartx.isConnected = Symbol("dartx.isConnected");
  const $lastChild = dartx.lastChild = Symbol("dartx.lastChild");
  const $nodeName = dartx.nodeName = Symbol("dartx.nodeName");
  const $nodeType = dartx.nodeType = Symbol("dartx.nodeType");
  const $nodeValue = dartx.nodeValue = Symbol("dartx.nodeValue");
  const $ownerDocument = dartx.ownerDocument = Symbol("dartx.ownerDocument");
  const $parentNode = dartx.parentNode = Symbol("dartx.parentNode");
  const $previousNode = dartx.previousNode = Symbol("dartx.previousNode");
  const $clone = dartx.clone = Symbol("dartx.clone");
  const $getRootNode = dartx.getRootNode = Symbol("dartx.getRootNode");
  const $hasChildNodes = dartx.hasChildNodes = Symbol("dartx.hasChildNodes");
  const $insertBefore = dartx.insertBefore = Symbol("dartx.insertBefore");
  const $respondWith = dartx.respondWith = Symbol("dartx.respondWith");
  const $waitUntil = dartx.waitUntil = Symbol("dartx.waitUntil");
  const $quaternion = dartx.quaternion = Symbol("dartx.quaternion");
  const $populateMatrix = dartx.populateMatrix = Symbol("dartx.populateMatrix");
  const $activated = dartx.activated = Symbol("dartx.activated");
  const $hasReading = dartx.hasReading = Symbol("dartx.hasReading");
  const $timestamp = dartx.timestamp = Symbol("dartx.timestamp");
  const $start = dartx.start = Symbol("dartx.start");
  const $stop = dartx.stop = Symbol("dartx.stop");
  const $x = dartx.x = Symbol("dartx.x");
  const $y = dartx.y = Symbol("dartx.y");
  const $z = dartx.z = Symbol("dartx.z");
  const $activeDescendant = dartx.activeDescendant = Symbol("dartx.activeDescendant");
  const $atomic = dartx.atomic = Symbol("dartx.atomic");
  const $autocomplete = dartx.autocomplete = Symbol("dartx.autocomplete");
  const $busy = dartx.busy = Symbol("dartx.busy");
  const $checked = dartx.checked = Symbol("dartx.checked");
  const $colCount = dartx.colCount = Symbol("dartx.colCount");
  const $colIndex = dartx.colIndex = Symbol("dartx.colIndex");
  const $colSpan = dartx.colSpan = Symbol("dartx.colSpan");
  const $controls = dartx.controls = Symbol("dartx.controls");
  const $current = dartx.current = Symbol("dartx.current");
  const $describedBy = dartx.describedBy = Symbol("dartx.describedBy");
  const $details = dartx.details = Symbol("dartx.details");
  const $disabled = dartx.disabled = Symbol("dartx.disabled");
  const $errorMessage = dartx.errorMessage = Symbol("dartx.errorMessage");
  const $expanded = dartx.expanded = Symbol("dartx.expanded");
  const $flowTo = dartx.flowTo = Symbol("dartx.flowTo");
  const $hasPopUp = dartx.hasPopUp = Symbol("dartx.hasPopUp");
  const $invalid = dartx.invalid = Symbol("dartx.invalid");
  const $keyShortcuts = dartx.keyShortcuts = Symbol("dartx.keyShortcuts");
  const $label = dartx.label = Symbol("dartx.label");
  const $labeledBy = dartx.labeledBy = Symbol("dartx.labeledBy");
  const $level = dartx.level = Symbol("dartx.level");
  const $live = dartx.live = Symbol("dartx.live");
  const $modal = dartx.modal = Symbol("dartx.modal");
  const $multiline = dartx.multiline = Symbol("dartx.multiline");
  const $multiselectable = dartx.multiselectable = Symbol("dartx.multiselectable");
  const $orientation = dartx.orientation = Symbol("dartx.orientation");
  const $owns = dartx.owns = Symbol("dartx.owns");
  const $placeholder = dartx.placeholder = Symbol("dartx.placeholder");
  const $posInSet = dartx.posInSet = Symbol("dartx.posInSet");
  const $pressed = dartx.pressed = Symbol("dartx.pressed");
  const $readOnly = dartx.readOnly = Symbol("dartx.readOnly");
  const $relevant = dartx.relevant = Symbol("dartx.relevant");
  const $required = dartx.required = Symbol("dartx.required");
  const $role = dartx.role = Symbol("dartx.role");
  const $roleDescription = dartx.roleDescription = Symbol("dartx.roleDescription");
  const $rowCount = dartx.rowCount = Symbol("dartx.rowCount");
  const $rowIndex = dartx.rowIndex = Symbol("dartx.rowIndex");
  const $rowSpan = dartx.rowSpan = Symbol("dartx.rowSpan");
  const $selected = dartx.selected = Symbol("dartx.selected");
  const $setSize = dartx.setSize = Symbol("dartx.setSize");
  const $valueMax = dartx.valueMax = Symbol("dartx.valueMax");
  const $valueMin = dartx.valueMin = Symbol("dartx.valueMin");
  const $valueNow = dartx.valueNow = Symbol("dartx.valueNow");
  const $valueText = dartx.valueText = Symbol("dartx.valueText");
  const $appendChild = dartx.appendChild = Symbol("dartx.appendChild");
  const $onAccessibleClick = dartx.onAccessibleClick = Symbol("dartx.onAccessibleClick");
  const $onAccessibleContextMenu = dartx.onAccessibleContextMenu = Symbol("dartx.onAccessibleContextMenu");
  const $onAccessibleDecrement = dartx.onAccessibleDecrement = Symbol("dartx.onAccessibleDecrement");
  const $onAccessibleFocus = dartx.onAccessibleFocus = Symbol("dartx.onAccessibleFocus");
  const $onAccessibleIncrement = dartx.onAccessibleIncrement = Symbol("dartx.onAccessibleIncrement");
  const $onAccessibleScrollIntoView = dartx.onAccessibleScrollIntoView = Symbol("dartx.onAccessibleScrollIntoView");
  const $item = dartx.item = Symbol("dartx.item");
  const $illuminance = dartx.illuminance = Symbol("dartx.illuminance");
  const $download = dartx.download = Symbol("dartx.download");
  const $hreflang = dartx.hreflang = Symbol("dartx.hreflang");
  const $referrerPolicy = dartx.referrerPolicy = Symbol("dartx.referrerPolicy");
  const $rel = dartx.rel = Symbol("dartx.rel");
  const $hash = dartx.hash = Symbol("dartx.hash");
  const $host = dartx.host = Symbol("dartx.host");
  const $hostname = dartx.hostname = Symbol("dartx.hostname");
  const $href = dartx.href = Symbol("dartx.href");
  const $origin = dartx.origin = Symbol("dartx.origin");
  const $password = dartx.password = Symbol("dartx.password");
  const $pathname = dartx.pathname = Symbol("dartx.pathname");
  const $port = dartx.port = Symbol("dartx.port");
  const $protocol = dartx.protocol = Symbol("dartx.protocol");
  const $search = dartx.search = Symbol("dartx.search");
  const $username = dartx.username = Symbol("dartx.username");
  const $currentTime = dartx.currentTime = Symbol("dartx.currentTime");
  const $effect = dartx.effect = Symbol("dartx.effect");
  const $finished = dartx.finished = Symbol("dartx.finished");
  const $playState = dartx.playState = Symbol("dartx.playState");
  const $playbackRate = dartx.playbackRate = Symbol("dartx.playbackRate");
  const $ready = dartx.ready = Symbol("dartx.ready");
  const $startTime = dartx.startTime = Symbol("dartx.startTime");
  const $timeline = dartx.timeline = Symbol("dartx.timeline");
  const $cancel = dartx.cancel = Symbol("dartx.cancel");
  const $finish = dartx.finish = Symbol("dartx.finish");
  const $pause = dartx.pause = Symbol("dartx.pause");
  const $play = dartx.play = Symbol("dartx.play");
  const $reverse = dartx.reverse = Symbol("dartx.reverse");
  const $onCancel = dartx.onCancel = Symbol("dartx.onCancel");
  const $onFinish = dartx.onFinish = Symbol("dartx.onFinish");
  const $timing = dartx.timing = Symbol("dartx.timing");
  const $getComputedTiming = dartx.getComputedTiming = Symbol("dartx.getComputedTiming");
  const $delay = dartx.delay = Symbol("dartx.delay");
  const $duration = dartx.duration = Symbol("dartx.duration");
  const $easing = dartx.easing = Symbol("dartx.easing");
  const $endDelay = dartx.endDelay = Symbol("dartx.endDelay");
  const $fill = dartx.fill = Symbol("dartx.fill");
  const $iterationStart = dartx.iterationStart = Symbol("dartx.iterationStart");
  const $iterations = dartx.iterations = Symbol("dartx.iterations");
  const $animationName = dartx.animationName = Symbol("dartx.animationName");
  const $elapsedTime = dartx.elapsedTime = Symbol("dartx.elapsedTime");
  const $timelineTime = dartx.timelineTime = Symbol("dartx.timelineTime");
  const $registerAnimator = dartx.registerAnimator = Symbol("dartx.registerAnimator");
  const $status = dartx.status = Symbol("dartx.status");
  const $swapCache = dartx.swapCache = Symbol("dartx.swapCache");
  const $onCached = dartx.onCached = Symbol("dartx.onCached");
  const $onChecking = dartx.onChecking = Symbol("dartx.onChecking");
  const $onDownloading = dartx.onDownloading = Symbol("dartx.onDownloading");
  const $onNoUpdate = dartx.onNoUpdate = Symbol("dartx.onNoUpdate");
  const $onObsolete = dartx.onObsolete = Symbol("dartx.onObsolete");
  const $onProgress = dartx.onProgress = Symbol("dartx.onProgress");
  const $onUpdateReady = dartx.onUpdateReady = Symbol("dartx.onUpdateReady");
  const $reason = dartx.reason = Symbol("dartx.reason");
  const $url = dartx.url = Symbol("dartx.url");
  const $alt = dartx.alt = Symbol("dartx.alt");
  const $coords = dartx.coords = Symbol("dartx.coords");
  const $shape = dartx.shape = Symbol("dartx.shape");
  const $audioTracks = dartx.audioTracks = Symbol("dartx.audioTracks");
  const $autoplay = dartx.autoplay = Symbol("dartx.autoplay");
  const $buffered = dartx.buffered = Symbol("dartx.buffered");
  const $controlsList = dartx.controlsList = Symbol("dartx.controlsList");
  const $crossOrigin = dartx.crossOrigin = Symbol("dartx.crossOrigin");
  const $currentSrc = dartx.currentSrc = Symbol("dartx.currentSrc");
  const $defaultMuted = dartx.defaultMuted = Symbol("dartx.defaultMuted");
  const $defaultPlaybackRate = dartx.defaultPlaybackRate = Symbol("dartx.defaultPlaybackRate");
  const $disableRemotePlayback = dartx.disableRemotePlayback = Symbol("dartx.disableRemotePlayback");
  const $ended = dartx.ended = Symbol("dartx.ended");
  const $loop = dartx.loop = Symbol("dartx.loop");
  const $mediaKeys = dartx.mediaKeys = Symbol("dartx.mediaKeys");
  const $muted = dartx.muted = Symbol("dartx.muted");
  const $networkState = dartx.networkState = Symbol("dartx.networkState");
  const $paused = dartx.paused = Symbol("dartx.paused");
  const $played = dartx.played = Symbol("dartx.played");
  const $preload = dartx.preload = Symbol("dartx.preload");
  const $remote = dartx.remote = Symbol("dartx.remote");
  const $seekable = dartx.seekable = Symbol("dartx.seekable");
  const $seeking = dartx.seeking = Symbol("dartx.seeking");
  const $sinkId = dartx.sinkId = Symbol("dartx.sinkId");
  const $src = dartx.src = Symbol("dartx.src");
  const $srcObject = dartx.srcObject = Symbol("dartx.srcObject");
  const $textTracks = dartx.textTracks = Symbol("dartx.textTracks");
  const $videoTracks = dartx.videoTracks = Symbol("dartx.videoTracks");
  const $volume = dartx.volume = Symbol("dartx.volume");
  const $audioDecodedByteCount = dartx.audioDecodedByteCount = Symbol("dartx.audioDecodedByteCount");
  const $videoDecodedByteCount = dartx.videoDecodedByteCount = Symbol("dartx.videoDecodedByteCount");
  const $addTextTrack = dartx.addTextTrack = Symbol("dartx.addTextTrack");
  const $canPlayType = dartx.canPlayType = Symbol("dartx.canPlayType");
  const $captureStream = dartx.captureStream = Symbol("dartx.captureStream");
  const $load = dartx.load = Symbol("dartx.load");
  const $setMediaKeys = dartx.setMediaKeys = Symbol("dartx.setMediaKeys");
  const $setSinkId = dartx.setSinkId = Symbol("dartx.setSinkId");
  const $authenticatorData = dartx.authenticatorData = Symbol("dartx.authenticatorData");
  const $signature = dartx.signature = Symbol("dartx.signature");
  const $clientDataJson = dartx.clientDataJson = Symbol("dartx.clientDataJson");
  const $attestationObject = dartx.attestationObject = Symbol("dartx.attestationObject");
  const $state = dartx.state = Symbol("dartx.state");
  const $fetches = dartx.fetches = Symbol("dartx.fetches");
  const $request = dartx.request = Symbol("dartx.request");
  const $fetch = dartx.fetch = Symbol("dartx.fetch");
  const $getIds = dartx.getIds = Symbol("dartx.getIds");
  const $downloadTotal = dartx.downloadTotal = Symbol("dartx.downloadTotal");
  const $downloaded = dartx.downloaded = Symbol("dartx.downloaded");
  const $totalDownloadSize = dartx.totalDownloadSize = Symbol("dartx.totalDownloadSize");
  const $uploadTotal = dartx.uploadTotal = Symbol("dartx.uploadTotal");
  const $uploaded = dartx.uploaded = Symbol("dartx.uploaded");
  const $response = dartx.response = Symbol("dartx.response");
  const $updateUI = dartx.updateUI = Symbol("dartx.updateUI");
  const $visible = dartx.visible = Symbol("dartx.visible");
  const $detect = dartx.detect = Symbol("dartx.detect");
  const $charging = dartx.charging = Symbol("dartx.charging");
  const $chargingTime = dartx.chargingTime = Symbol("dartx.chargingTime");
  const $dischargingTime = dartx.dischargingTime = Symbol("dartx.dischargingTime");
  const $platforms = dartx.platforms = Symbol("dartx.platforms");
  const $userChoice = dartx.userChoice = Symbol("dartx.userChoice");
  const $prompt = dartx.prompt = Symbol("dartx.prompt");
  const $returnValue = dartx.returnValue = Symbol("dartx.returnValue");
  const $size = dartx.size = Symbol("dartx.size");
  const $slice = dartx.slice = Symbol("dartx.slice");
  const $data = dartx.data = Symbol("dartx.data");
  const $timecode = dartx.timecode = Symbol("dartx.timecode");
  const $characteristic = dartx.characteristic = Symbol("dartx.characteristic");
  const $uuid = dartx.uuid = Symbol("dartx.uuid");
  const $readValue = dartx.readValue = Symbol("dartx.readValue");
  const $writeValue = dartx.writeValue = Symbol("dartx.writeValue");
  const $bodyUsed = dartx.bodyUsed = Symbol("dartx.bodyUsed");
  const $arrayBuffer = dartx.arrayBuffer = Symbol("dartx.arrayBuffer");
  const $blob = dartx.blob = Symbol("dartx.blob");
  const $formData = dartx.formData = Symbol("dartx.formData");
  const $json = dartx.json = Symbol("dartx.json");
  const $onHashChange = dartx.onHashChange = Symbol("dartx.onHashChange");
  const $onMessage = dartx.onMessage = Symbol("dartx.onMessage");
  const $onOffline = dartx.onOffline = Symbol("dartx.onOffline");
  const $onOnline = dartx.onOnline = Symbol("dartx.onOnline");
  const $onPopState = dartx.onPopState = Symbol("dartx.onPopState");
  const $onStorage = dartx.onStorage = Symbol("dartx.onStorage");
  const $onUnload = dartx.onUnload = Symbol("dartx.onUnload");
  const $postMessage = dartx.postMessage = Symbol("dartx.postMessage");
  const $budgetAt = dartx.budgetAt = Symbol("dartx.budgetAt");
  const $time = dartx.time = Symbol("dartx.time");
  const $autofocus = dartx.autofocus = Symbol("dartx.autofocus");
  const $form = dartx.form = Symbol("dartx.form");
  const $formAction = dartx.formAction = Symbol("dartx.formAction");
  const $formEnctype = dartx.formEnctype = Symbol("dartx.formEnctype");
  const $formMethod = dartx.formMethod = Symbol("dartx.formMethod");
  const $formNoValidate = dartx.formNoValidate = Symbol("dartx.formNoValidate");
  const $formTarget = dartx.formTarget = Symbol("dartx.formTarget");
  const $labels = dartx.labels = Symbol("dartx.labels");
  const $validationMessage = dartx.validationMessage = Symbol("dartx.validationMessage");
  const $validity = dartx.validity = Symbol("dartx.validity");
  const $willValidate = dartx.willValidate = Symbol("dartx.willValidate");
  const $checkValidity = dartx.checkValidity = Symbol("dartx.checkValidity");
  const $reportValidity = dartx.reportValidity = Symbol("dartx.reportValidity");
  const $setCustomValidity = dartx.setCustomValidity = Symbol("dartx.setCustomValidity");
  const $wholeText = dartx.wholeText = Symbol("dartx.wholeText");
  const $splitText = dartx.splitText = Symbol("dartx.splitText");
  const $appendData = dartx.appendData = Symbol("dartx.appendData");
  const $deleteData = dartx.deleteData = Symbol("dartx.deleteData");
  const $insertData = dartx.insertData = Symbol("dartx.insertData");
  const $replaceData = dartx.replaceData = Symbol("dartx.replaceData");
  const $substringData = dartx.substringData = Symbol("dartx.substringData");
  const $has = dartx.has = Symbol("dartx.has");
  const $match = dartx.match = Symbol("dartx.match");
  const $methodData = dartx.methodData = Symbol("dartx.methodData");
  const $modifiers = dartx.modifiers = Symbol("dartx.modifiers");
  const $paymentRequestOrigin = dartx.paymentRequestOrigin = Symbol("dartx.paymentRequestOrigin");
  const $topLevelOrigin = dartx.topLevelOrigin = Symbol("dartx.topLevelOrigin");
  const $canvas = dartx.canvas = Symbol("dartx.canvas");
  const $requestFrame = dartx.requestFrame = Symbol("dartx.requestFrame");
  const $contentHint = dartx.contentHint = Symbol("dartx.contentHint");
  const $enabled = dartx.enabled = Symbol("dartx.enabled");
  const $kind = dartx.kind = Symbol("dartx.kind");
  const $applyConstraints = dartx.applyConstraints = Symbol("dartx.applyConstraints");
  const $getCapabilities = dartx.getCapabilities = Symbol("dartx.getCapabilities");
  const $getConstraints = dartx.getConstraints = Symbol("dartx.getConstraints");
  const $getSettings = dartx.getSettings = Symbol("dartx.getSettings");
  const $onMute = dartx.onMute = Symbol("dartx.onMute");
  const $onUnmute = dartx.onUnmute = Symbol("dartx.onUnmute");
  const $getContext = dartx.getContext = Symbol("dartx.getContext");
  const $toBlob = dartx.toBlob = Symbol("dartx.toBlob");
  const $transferControlToOffscreen = dartx.transferControlToOffscreen = Symbol("dartx.transferControlToOffscreen");
  const $onWebGlContextLost = dartx.onWebGlContextLost = Symbol("dartx.onWebGlContextLost");
  const $onWebGlContextRestored = dartx.onWebGlContextRestored = Symbol("dartx.onWebGlContextRestored");
  const $context2D = dartx.context2D = Symbol("dartx.context2D");
  const $getContext3d = dartx.getContext3d = Symbol("dartx.getContext3d");
  const $toDataUrl = dartx.toDataUrl = Symbol("dartx.toDataUrl");
  const $addColorStop = dartx.addColorStop = Symbol("dartx.addColorStop");
  const $setTransform = dartx.setTransform = Symbol("dartx.setTransform");
  const $currentTransform = dartx.currentTransform = Symbol("dartx.currentTransform");
  const $fillStyle = dartx.fillStyle = Symbol("dartx.fillStyle");
  const $filter = dartx.filter = Symbol("dartx.filter");
  const $font = dartx.font = Symbol("dartx.font");
  const $globalAlpha = dartx.globalAlpha = Symbol("dartx.globalAlpha");
  const $globalCompositeOperation = dartx.globalCompositeOperation = Symbol("dartx.globalCompositeOperation");
  const $imageSmoothingEnabled = dartx.imageSmoothingEnabled = Symbol("dartx.imageSmoothingEnabled");
  const $imageSmoothingQuality = dartx.imageSmoothingQuality = Symbol("dartx.imageSmoothingQuality");
  const $lineCap = dartx.lineCap = Symbol("dartx.lineCap");
  const $lineJoin = dartx.lineJoin = Symbol("dartx.lineJoin");
  const $lineWidth = dartx.lineWidth = Symbol("dartx.lineWidth");
  const $miterLimit = dartx.miterLimit = Symbol("dartx.miterLimit");
  const $shadowBlur = dartx.shadowBlur = Symbol("dartx.shadowBlur");
  const $shadowColor = dartx.shadowColor = Symbol("dartx.shadowColor");
  const $shadowOffsetX = dartx.shadowOffsetX = Symbol("dartx.shadowOffsetX");
  const $shadowOffsetY = dartx.shadowOffsetY = Symbol("dartx.shadowOffsetY");
  const $strokeStyle = dartx.strokeStyle = Symbol("dartx.strokeStyle");
  const $textAlign = dartx.textAlign = Symbol("dartx.textAlign");
  const $textBaseline = dartx.textBaseline = Symbol("dartx.textBaseline");
  const $addHitRegion = dartx.addHitRegion = Symbol("dartx.addHitRegion");
  const $beginPath = dartx.beginPath = Symbol("dartx.beginPath");
  const $clearHitRegions = dartx.clearHitRegions = Symbol("dartx.clearHitRegions");
  const $clearRect = dartx.clearRect = Symbol("dartx.clearRect");
  const $clip = dartx.clip = Symbol("dartx.clip");
  const $createImageData = dartx.createImageData = Symbol("dartx.createImageData");
  const $createLinearGradient = dartx.createLinearGradient = Symbol("dartx.createLinearGradient");
  const $createPattern = dartx.createPattern = Symbol("dartx.createPattern");
  const $createRadialGradient = dartx.createRadialGradient = Symbol("dartx.createRadialGradient");
  const $drawFocusIfNeeded = dartx.drawFocusIfNeeded = Symbol("dartx.drawFocusIfNeeded");
  const $fillRect = dartx.fillRect = Symbol("dartx.fillRect");
  const $getContextAttributes = dartx.getContextAttributes = Symbol("dartx.getContextAttributes");
  const $getImageData = dartx.getImageData = Symbol("dartx.getImageData");
  const $isContextLost = dartx.isContextLost = Symbol("dartx.isContextLost");
  const $isPointInPath = dartx.isPointInPath = Symbol("dartx.isPointInPath");
  const $isPointInStroke = dartx.isPointInStroke = Symbol("dartx.isPointInStroke");
  const $measureText = dartx.measureText = Symbol("dartx.measureText");
  const $putImageData = dartx.putImageData = Symbol("dartx.putImageData");
  const $removeHitRegion = dartx.removeHitRegion = Symbol("dartx.removeHitRegion");
  const $resetTransform = dartx.resetTransform = Symbol("dartx.resetTransform");
  const $restore = dartx.restore = Symbol("dartx.restore");
  const $rotate = dartx.rotate = Symbol("dartx.rotate");
  const $save = dartx.save = Symbol("dartx.save");
  const $scale = dartx.scale = Symbol("dartx.scale");
  const $scrollPathIntoView = dartx.scrollPathIntoView = Symbol("dartx.scrollPathIntoView");
  const $stroke = dartx.stroke = Symbol("dartx.stroke");
  const $strokeRect = dartx.strokeRect = Symbol("dartx.strokeRect");
  const $strokeText = dartx.strokeText = Symbol("dartx.strokeText");
  const $transform = dartx.transform = Symbol("dartx.transform");
  const $arcTo = dartx.arcTo = Symbol("dartx.arcTo");
  const $bezierCurveTo = dartx.bezierCurveTo = Symbol("dartx.bezierCurveTo");
  const $closePath = dartx.closePath = Symbol("dartx.closePath");
  const $ellipse = dartx.ellipse = Symbol("dartx.ellipse");
  const $lineTo = dartx.lineTo = Symbol("dartx.lineTo");
  const $moveTo = dartx.moveTo = Symbol("dartx.moveTo");
  const $quadraticCurveTo = dartx.quadraticCurveTo = Symbol("dartx.quadraticCurveTo");
  const $rect = dartx.rect = Symbol("dartx.rect");
  const $createImageDataFromImageData = dartx.createImageDataFromImageData = Symbol("dartx.createImageDataFromImageData");
  const $setFillColorRgb = dartx.setFillColorRgb = Symbol("dartx.setFillColorRgb");
  const $setFillColorHsl = dartx.setFillColorHsl = Symbol("dartx.setFillColorHsl");
  const $setStrokeColorRgb = dartx.setStrokeColorRgb = Symbol("dartx.setStrokeColorRgb");
  const $setStrokeColorHsl = dartx.setStrokeColorHsl = Symbol("dartx.setStrokeColorHsl");
  const $arc = dartx.arc = Symbol("dartx.arc");
  const $createPatternFromImage = dartx.createPatternFromImage = Symbol("dartx.createPatternFromImage");
  const $drawImageScaled = dartx.drawImageScaled = Symbol("dartx.drawImageScaled");
  const $drawImageScaledFromSource = dartx.drawImageScaledFromSource = Symbol("dartx.drawImageScaledFromSource");
  const $drawImageToRect = dartx.drawImageToRect = Symbol("dartx.drawImageToRect");
  const $drawImage = dartx.drawImage = Symbol("dartx.drawImage");
  const $lineDashOffset = dartx.lineDashOffset = Symbol("dartx.lineDashOffset");
  const $getLineDash = dartx.getLineDash = Symbol("dartx.getLineDash");
  const $setLineDash = dartx.setLineDash = Symbol("dartx.setLineDash");
  const $fillText = dartx.fillText = Symbol("dartx.fillText");
  const $backingStorePixelRatio = dartx.backingStorePixelRatio = Symbol("dartx.backingStorePixelRatio");
  const $frameType = dartx.frameType = Symbol("dartx.frameType");
  const $claim = dartx.claim = Symbol("dartx.claim");
  const $matchAll = dartx.matchAll = Symbol("dartx.matchAll");
  const $openWindow = dartx.openWindow = Symbol("dartx.openWindow");
  const $clipboardData = dartx.clipboardData = Symbol("dartx.clipboardData");
  const $code = dartx.code = Symbol("dartx.code");
  const $wasClean = dartx.wasClean = Symbol("dartx.wasClean");
  const $detail = dartx.detail = Symbol("dartx.detail");
  const $sourceCapabilities = dartx.sourceCapabilities = Symbol("dartx.sourceCapabilities");
  const $view = dartx.view = Symbol("dartx.view");
  const $select = dartx.select = Symbol("dartx.select");
  const $getDistributedNodes = dartx.getDistributedNodes = Symbol("dartx.getDistributedNodes");
  const $set = dartx.set = Symbol("dartx.set");
  const $accuracy = dartx.accuracy = Symbol("dartx.accuracy");
  const $altitude = dartx.altitude = Symbol("dartx.altitude");
  const $altitudeAccuracy = dartx.altitudeAccuracy = Symbol("dartx.altitudeAccuracy");
  const $heading = dartx.heading = Symbol("dartx.heading");
  const $latitude = dartx.latitude = Symbol("dartx.latitude");
  const $longitude = dartx.longitude = Symbol("dartx.longitude");
  const $speed = dartx.speed = Symbol("dartx.speed");
  const $iconUrl = dartx.iconUrl = Symbol("dartx.iconUrl");
  const $create = dartx.create = Symbol("dartx.create");
  const $preventSilentAccess = dartx.preventSilentAccess = Symbol("dartx.preventSilentAccess");
  const $requireUserMediation = dartx.requireUserMediation = Symbol("dartx.requireUserMediation");
  const $store = dartx.store = Symbol("dartx.store");
  const $getRandomValues = dartx.getRandomValues = Symbol("dartx.getRandomValues");
  const $subtle = dartx.subtle = Symbol("dartx.subtle");
  const $algorithm = dartx.algorithm = Symbol("dartx.algorithm");
  const $extractable = dartx.extractable = Symbol("dartx.extractable");
  const $usages = dartx.usages = Symbol("dartx.usages");
  const $encoding = dartx.encoding = Symbol("dartx.encoding");
  const $cssText = dartx.cssText = Symbol("dartx.cssText");
  const $parentRule = dartx.parentRule = Symbol("dartx.parentRule");
  const $parentStyleSheet = dartx.parentStyleSheet = Symbol("dartx.parentStyleSheet");
  const $conditionText = dartx.conditionText = Symbol("dartx.conditionText");
  const $cssRules = dartx.cssRules = Symbol("dartx.cssRules");
  const $deleteRule = dartx.deleteRule = Symbol("dartx.deleteRule");
  const $insertRule = dartx.insertRule = Symbol("dartx.insertRule");
  const $intrinsicHeight = dartx.intrinsicHeight = Symbol("dartx.intrinsicHeight");
  const $intrinsicRatio = dartx.intrinsicRatio = Symbol("dartx.intrinsicRatio");
  const $intrinsicWidth = dartx.intrinsicWidth = Symbol("dartx.intrinsicWidth");
  const $media = dartx.media = Symbol("dartx.media");
  const $styleSheet = dartx.styleSheet = Symbol("dartx.styleSheet");
  const $keyText = dartx.keyText = Symbol("dartx.keyText");
  const $appendRule = dartx.appendRule = Symbol("dartx.appendRule");
  const $findRule = dartx.findRule = Symbol("dartx.findRule");
  const $matrix = dartx.matrix = Symbol("dartx.matrix");
  const $is2D = dartx.is2D = Symbol("dartx.is2D");
  const $prefix = dartx.prefix = Symbol("dartx.prefix");
  const $div = dartx.div = Symbol("dartx.div");
  const $mul = dartx.mul = Symbol("dartx.mul");
  const $sub = dartx.sub = Symbol("dartx.sub");
  const $to = dartx.to = Symbol("dartx.to");
  const $selectorText = dartx.selectorText = Symbol("dartx.selectorText");
  const $angle = dartx.angle = Symbol("dartx.angle");
  const $ax = dartx.ax = Symbol("dartx.ax");
  const $ay = dartx.ay = Symbol("dartx.ay");
  const $getPropertyValue = dartx.getPropertyValue = Symbol("dartx.getPropertyValue");
  const $supportsProperty = dartx.supportsProperty = Symbol("dartx.supportsProperty");
  const $setProperty = dartx.setProperty = Symbol("dartx.setProperty");
  const $cssFloat = dartx.cssFloat = Symbol("dartx.cssFloat");
  const $getPropertyPriority = dartx.getPropertyPriority = Symbol("dartx.getPropertyPriority");
  const $removeProperty = dartx.removeProperty = Symbol("dartx.removeProperty");
  const $background = dartx.background = Symbol("dartx.background");
  const $backgroundAttachment = dartx.backgroundAttachment = Symbol("dartx.backgroundAttachment");
  const $backgroundColor = dartx.backgroundColor = Symbol("dartx.backgroundColor");
  const $backgroundImage = dartx.backgroundImage = Symbol("dartx.backgroundImage");
  const $backgroundPosition = dartx.backgroundPosition = Symbol("dartx.backgroundPosition");
  const $backgroundRepeat = dartx.backgroundRepeat = Symbol("dartx.backgroundRepeat");
  const $border = dartx.border = Symbol("dartx.border");
  const $borderBottom = dartx.borderBottom = Symbol("dartx.borderBottom");
  const $borderBottomColor = dartx.borderBottomColor = Symbol("dartx.borderBottomColor");
  const $borderBottomStyle = dartx.borderBottomStyle = Symbol("dartx.borderBottomStyle");
  const $borderBottomWidth = dartx.borderBottomWidth = Symbol("dartx.borderBottomWidth");
  const $borderCollapse = dartx.borderCollapse = Symbol("dartx.borderCollapse");
  const $borderColor = dartx.borderColor = Symbol("dartx.borderColor");
  const $borderLeft = dartx.borderLeft = Symbol("dartx.borderLeft");
  const $borderLeftColor = dartx.borderLeftColor = Symbol("dartx.borderLeftColor");
  const $borderLeftStyle = dartx.borderLeftStyle = Symbol("dartx.borderLeftStyle");
  const $borderLeftWidth = dartx.borderLeftWidth = Symbol("dartx.borderLeftWidth");
  const $borderRight = dartx.borderRight = Symbol("dartx.borderRight");
  const $borderRightColor = dartx.borderRightColor = Symbol("dartx.borderRightColor");
  const $borderRightStyle = dartx.borderRightStyle = Symbol("dartx.borderRightStyle");
  const $borderRightWidth = dartx.borderRightWidth = Symbol("dartx.borderRightWidth");
  const $borderSpacing = dartx.borderSpacing = Symbol("dartx.borderSpacing");
  const $borderStyle = dartx.borderStyle = Symbol("dartx.borderStyle");
  const $borderTop = dartx.borderTop = Symbol("dartx.borderTop");
  const $borderTopColor = dartx.borderTopColor = Symbol("dartx.borderTopColor");
  const $borderTopStyle = dartx.borderTopStyle = Symbol("dartx.borderTopStyle");
  const $borderTopWidth = dartx.borderTopWidth = Symbol("dartx.borderTopWidth");
  const $borderWidth = dartx.borderWidth = Symbol("dartx.borderWidth");
  const $captionSide = dartx.captionSide = Symbol("dartx.captionSide");
  const $color = dartx.color = Symbol("dartx.color");
  const $content = dartx.content = Symbol("dartx.content");
  const $cursor = dartx.cursor = Symbol("dartx.cursor");
  const $display = dartx.display = Symbol("dartx.display");
  const $emptyCells = dartx.emptyCells = Symbol("dartx.emptyCells");
  const $fontFamily = dartx.fontFamily = Symbol("dartx.fontFamily");
  const $fontSize = dartx.fontSize = Symbol("dartx.fontSize");
  const $fontStyle = dartx.fontStyle = Symbol("dartx.fontStyle");
  const $fontVariant = dartx.fontVariant = Symbol("dartx.fontVariant");
  const $fontWeight = dartx.fontWeight = Symbol("dartx.fontWeight");
  const $letterSpacing = dartx.letterSpacing = Symbol("dartx.letterSpacing");
  const $lineHeight = dartx.lineHeight = Symbol("dartx.lineHeight");
  const $listStyle = dartx.listStyle = Symbol("dartx.listStyle");
  const $listStyleImage = dartx.listStyleImage = Symbol("dartx.listStyleImage");
  const $listStylePosition = dartx.listStylePosition = Symbol("dartx.listStylePosition");
  const $listStyleType = dartx.listStyleType = Symbol("dartx.listStyleType");
  const $margin = dartx.margin = Symbol("dartx.margin");
  const $marginBottom = dartx.marginBottom = Symbol("dartx.marginBottom");
  const $marginLeft = dartx.marginLeft = Symbol("dartx.marginLeft");
  const $marginRight = dartx.marginRight = Symbol("dartx.marginRight");
  const $marginTop = dartx.marginTop = Symbol("dartx.marginTop");
  const $maxHeight = dartx.maxHeight = Symbol("dartx.maxHeight");
  const $maxWidth = dartx.maxWidth = Symbol("dartx.maxWidth");
  const $minHeight = dartx.minHeight = Symbol("dartx.minHeight");
  const $minWidth = dartx.minWidth = Symbol("dartx.minWidth");
  const $outline = dartx.outline = Symbol("dartx.outline");
  const $outlineColor = dartx.outlineColor = Symbol("dartx.outlineColor");
  const $outlineStyle = dartx.outlineStyle = Symbol("dartx.outlineStyle");
  const $outlineWidth = dartx.outlineWidth = Symbol("dartx.outlineWidth");
  const $overflow = dartx.overflow = Symbol("dartx.overflow");
  const $padding = dartx.padding = Symbol("dartx.padding");
  const $paddingBottom = dartx.paddingBottom = Symbol("dartx.paddingBottom");
  const $paddingLeft = dartx.paddingLeft = Symbol("dartx.paddingLeft");
  const $paddingRight = dartx.paddingRight = Symbol("dartx.paddingRight");
  const $paddingTop = dartx.paddingTop = Symbol("dartx.paddingTop");
  const $pageBreakAfter = dartx.pageBreakAfter = Symbol("dartx.pageBreakAfter");
  const $pageBreakBefore = dartx.pageBreakBefore = Symbol("dartx.pageBreakBefore");
  const $pageBreakInside = dartx.pageBreakInside = Symbol("dartx.pageBreakInside");
  const $position = dartx.position = Symbol("dartx.position");
  const $quotes = dartx.quotes = Symbol("dartx.quotes");
  const $tableLayout = dartx.tableLayout = Symbol("dartx.tableLayout");
  const $textDecoration = dartx.textDecoration = Symbol("dartx.textDecoration");
  const $textIndent = dartx.textIndent = Symbol("dartx.textIndent");
  const $textTransform = dartx.textTransform = Symbol("dartx.textTransform");
  const $unicodeBidi = dartx.unicodeBidi = Symbol("dartx.unicodeBidi");
  const $verticalAlign = dartx.verticalAlign = Symbol("dartx.verticalAlign");
  const $visibility = dartx.visibility = Symbol("dartx.visibility");
  const $whiteSpace = dartx.whiteSpace = Symbol("dartx.whiteSpace");
  const $wordSpacing = dartx.wordSpacing = Symbol("dartx.wordSpacing");
  const $zIndex = dartx.zIndex = Symbol("dartx.zIndex");
  const $alignContent = dartx.alignContent = Symbol("dartx.alignContent");
  const $alignItems = dartx.alignItems = Symbol("dartx.alignItems");
  const $alignSelf = dartx.alignSelf = Symbol("dartx.alignSelf");
  const $animation = dartx.animation = Symbol("dartx.animation");
  const $animationDelay = dartx.animationDelay = Symbol("dartx.animationDelay");
  const $animationDirection = dartx.animationDirection = Symbol("dartx.animationDirection");
  const $animationDuration = dartx.animationDuration = Symbol("dartx.animationDuration");
  const $animationFillMode = dartx.animationFillMode = Symbol("dartx.animationFillMode");
  const $animationIterationCount = dartx.animationIterationCount = Symbol("dartx.animationIterationCount");
  const $animationPlayState = dartx.animationPlayState = Symbol("dartx.animationPlayState");
  const $animationTimingFunction = dartx.animationTimingFunction = Symbol("dartx.animationTimingFunction");
  const $appRegion = dartx.appRegion = Symbol("dartx.appRegion");
  const $appearance = dartx.appearance = Symbol("dartx.appearance");
  const $aspectRatio = dartx.aspectRatio = Symbol("dartx.aspectRatio");
  const $backfaceVisibility = dartx.backfaceVisibility = Symbol("dartx.backfaceVisibility");
  const $backgroundBlendMode = dartx.backgroundBlendMode = Symbol("dartx.backgroundBlendMode");
  const $backgroundClip = dartx.backgroundClip = Symbol("dartx.backgroundClip");
  const $backgroundComposite = dartx.backgroundComposite = Symbol("dartx.backgroundComposite");
  const $backgroundOrigin = dartx.backgroundOrigin = Symbol("dartx.backgroundOrigin");
  const $backgroundPositionX = dartx.backgroundPositionX = Symbol("dartx.backgroundPositionX");
  const $backgroundPositionY = dartx.backgroundPositionY = Symbol("dartx.backgroundPositionY");
  const $backgroundRepeatX = dartx.backgroundRepeatX = Symbol("dartx.backgroundRepeatX");
  const $backgroundRepeatY = dartx.backgroundRepeatY = Symbol("dartx.backgroundRepeatY");
  const $backgroundSize = dartx.backgroundSize = Symbol("dartx.backgroundSize");
  const $borderAfter = dartx.borderAfter = Symbol("dartx.borderAfter");
  const $borderAfterColor = dartx.borderAfterColor = Symbol("dartx.borderAfterColor");
  const $borderAfterStyle = dartx.borderAfterStyle = Symbol("dartx.borderAfterStyle");
  const $borderAfterWidth = dartx.borderAfterWidth = Symbol("dartx.borderAfterWidth");
  const $borderBefore = dartx.borderBefore = Symbol("dartx.borderBefore");
  const $borderBeforeColor = dartx.borderBeforeColor = Symbol("dartx.borderBeforeColor");
  const $borderBeforeStyle = dartx.borderBeforeStyle = Symbol("dartx.borderBeforeStyle");
  const $borderBeforeWidth = dartx.borderBeforeWidth = Symbol("dartx.borderBeforeWidth");
  const $borderBottomLeftRadius = dartx.borderBottomLeftRadius = Symbol("dartx.borderBottomLeftRadius");
  const $borderBottomRightRadius = dartx.borderBottomRightRadius = Symbol("dartx.borderBottomRightRadius");
  const $borderEnd = dartx.borderEnd = Symbol("dartx.borderEnd");
  const $borderEndColor = dartx.borderEndColor = Symbol("dartx.borderEndColor");
  const $borderEndStyle = dartx.borderEndStyle = Symbol("dartx.borderEndStyle");
  const $borderEndWidth = dartx.borderEndWidth = Symbol("dartx.borderEndWidth");
  const $borderFit = dartx.borderFit = Symbol("dartx.borderFit");
  const $borderHorizontalSpacing = dartx.borderHorizontalSpacing = Symbol("dartx.borderHorizontalSpacing");
  const $borderImage = dartx.borderImage = Symbol("dartx.borderImage");
  const $borderImageOutset = dartx.borderImageOutset = Symbol("dartx.borderImageOutset");
  const $borderImageRepeat = dartx.borderImageRepeat = Symbol("dartx.borderImageRepeat");
  const $borderImageSlice = dartx.borderImageSlice = Symbol("dartx.borderImageSlice");
  const $borderImageSource = dartx.borderImageSource = Symbol("dartx.borderImageSource");
  const $borderImageWidth = dartx.borderImageWidth = Symbol("dartx.borderImageWidth");
  const $borderRadius = dartx.borderRadius = Symbol("dartx.borderRadius");
  const $borderStart = dartx.borderStart = Symbol("dartx.borderStart");
  const $borderStartColor = dartx.borderStartColor = Symbol("dartx.borderStartColor");
  const $borderStartStyle = dartx.borderStartStyle = Symbol("dartx.borderStartStyle");
  const $borderStartWidth = dartx.borderStartWidth = Symbol("dartx.borderStartWidth");
  const $borderTopLeftRadius = dartx.borderTopLeftRadius = Symbol("dartx.borderTopLeftRadius");
  const $borderTopRightRadius = dartx.borderTopRightRadius = Symbol("dartx.borderTopRightRadius");
  const $borderVerticalSpacing = dartx.borderVerticalSpacing = Symbol("dartx.borderVerticalSpacing");
  const $boxAlign = dartx.boxAlign = Symbol("dartx.boxAlign");
  const $boxDecorationBreak = dartx.boxDecorationBreak = Symbol("dartx.boxDecorationBreak");
  const $boxDirection = dartx.boxDirection = Symbol("dartx.boxDirection");
  const $boxFlex = dartx.boxFlex = Symbol("dartx.boxFlex");
  const $boxFlexGroup = dartx.boxFlexGroup = Symbol("dartx.boxFlexGroup");
  const $boxLines = dartx.boxLines = Symbol("dartx.boxLines");
  const $boxOrdinalGroup = dartx.boxOrdinalGroup = Symbol("dartx.boxOrdinalGroup");
  const $boxOrient = dartx.boxOrient = Symbol("dartx.boxOrient");
  const $boxPack = dartx.boxPack = Symbol("dartx.boxPack");
  const $boxReflect = dartx.boxReflect = Symbol("dartx.boxReflect");
  const $boxShadow = dartx.boxShadow = Symbol("dartx.boxShadow");
  const $boxSizing = dartx.boxSizing = Symbol("dartx.boxSizing");
  const $clipPath = dartx.clipPath = Symbol("dartx.clipPath");
  const $columnBreakAfter = dartx.columnBreakAfter = Symbol("dartx.columnBreakAfter");
  const $columnBreakBefore = dartx.columnBreakBefore = Symbol("dartx.columnBreakBefore");
  const $columnBreakInside = dartx.columnBreakInside = Symbol("dartx.columnBreakInside");
  const $columnCount = dartx.columnCount = Symbol("dartx.columnCount");
  const $columnFill = dartx.columnFill = Symbol("dartx.columnFill");
  const $columnGap = dartx.columnGap = Symbol("dartx.columnGap");
  const $columnRule = dartx.columnRule = Symbol("dartx.columnRule");
  const $columnRuleColor = dartx.columnRuleColor = Symbol("dartx.columnRuleColor");
  const $columnRuleStyle = dartx.columnRuleStyle = Symbol("dartx.columnRuleStyle");
  const $columnRuleWidth = dartx.columnRuleWidth = Symbol("dartx.columnRuleWidth");
  const $columnSpan = dartx.columnSpan = Symbol("dartx.columnSpan");
  const $columnWidth = dartx.columnWidth = Symbol("dartx.columnWidth");
  const $columns = dartx.columns = Symbol("dartx.columns");
  const $counterIncrement = dartx.counterIncrement = Symbol("dartx.counterIncrement");
  const $counterReset = dartx.counterReset = Symbol("dartx.counterReset");
  const $flex = dartx.flex = Symbol("dartx.flex");
  const $flexBasis = dartx.flexBasis = Symbol("dartx.flexBasis");
  const $flexDirection = dartx.flexDirection = Symbol("dartx.flexDirection");
  const $flexFlow = dartx.flexFlow = Symbol("dartx.flexFlow");
  const $flexGrow = dartx.flexGrow = Symbol("dartx.flexGrow");
  const $flexShrink = dartx.flexShrink = Symbol("dartx.flexShrink");
  const $flexWrap = dartx.flexWrap = Symbol("dartx.flexWrap");
  const $float = dartx.float = Symbol("dartx.float");
  const $fontFeatureSettings = dartx.fontFeatureSettings = Symbol("dartx.fontFeatureSettings");
  const $fontKerning = dartx.fontKerning = Symbol("dartx.fontKerning");
  const $fontSizeDelta = dartx.fontSizeDelta = Symbol("dartx.fontSizeDelta");
  const $fontSmoothing = dartx.fontSmoothing = Symbol("dartx.fontSmoothing");
  const $fontStretch = dartx.fontStretch = Symbol("dartx.fontStretch");
  const $fontVariantLigatures = dartx.fontVariantLigatures = Symbol("dartx.fontVariantLigatures");
  const $grid = dartx.grid = Symbol("dartx.grid");
  const $gridArea = dartx.gridArea = Symbol("dartx.gridArea");
  const $gridAutoColumns = dartx.gridAutoColumns = Symbol("dartx.gridAutoColumns");
  const $gridAutoFlow = dartx.gridAutoFlow = Symbol("dartx.gridAutoFlow");
  const $gridAutoRows = dartx.gridAutoRows = Symbol("dartx.gridAutoRows");
  const $gridColumn = dartx.gridColumn = Symbol("dartx.gridColumn");
  const $gridColumnEnd = dartx.gridColumnEnd = Symbol("dartx.gridColumnEnd");
  const $gridColumnStart = dartx.gridColumnStart = Symbol("dartx.gridColumnStart");
  const $gridRow = dartx.gridRow = Symbol("dartx.gridRow");
  const $gridRowEnd = dartx.gridRowEnd = Symbol("dartx.gridRowEnd");
  const $gridRowStart = dartx.gridRowStart = Symbol("dartx.gridRowStart");
  const $gridTemplate = dartx.gridTemplate = Symbol("dartx.gridTemplate");
  const $gridTemplateAreas = dartx.gridTemplateAreas = Symbol("dartx.gridTemplateAreas");
  const $gridTemplateColumns = dartx.gridTemplateColumns = Symbol("dartx.gridTemplateColumns");
  const $gridTemplateRows = dartx.gridTemplateRows = Symbol("dartx.gridTemplateRows");
  const $highlight = dartx.highlight = Symbol("dartx.highlight");
  const $hyphenateCharacter = dartx.hyphenateCharacter = Symbol("dartx.hyphenateCharacter");
  const $imageRendering = dartx.imageRendering = Symbol("dartx.imageRendering");
  const $isolation = dartx.isolation = Symbol("dartx.isolation");
  const $justifyContent = dartx.justifyContent = Symbol("dartx.justifyContent");
  const $justifySelf = dartx.justifySelf = Symbol("dartx.justifySelf");
  const $lineBoxContain = dartx.lineBoxContain = Symbol("dartx.lineBoxContain");
  const $lineBreak = dartx.lineBreak = Symbol("dartx.lineBreak");
  const $lineClamp = dartx.lineClamp = Symbol("dartx.lineClamp");
  const $locale = dartx.locale = Symbol("dartx.locale");
  const $logicalHeight = dartx.logicalHeight = Symbol("dartx.logicalHeight");
  const $logicalWidth = dartx.logicalWidth = Symbol("dartx.logicalWidth");
  const $marginAfter = dartx.marginAfter = Symbol("dartx.marginAfter");
  const $marginAfterCollapse = dartx.marginAfterCollapse = Symbol("dartx.marginAfterCollapse");
  const $marginBefore = dartx.marginBefore = Symbol("dartx.marginBefore");
  const $marginBeforeCollapse = dartx.marginBeforeCollapse = Symbol("dartx.marginBeforeCollapse");
  const $marginBottomCollapse = dartx.marginBottomCollapse = Symbol("dartx.marginBottomCollapse");
  const $marginCollapse = dartx.marginCollapse = Symbol("dartx.marginCollapse");
  const $marginEnd = dartx.marginEnd = Symbol("dartx.marginEnd");
  const $marginStart = dartx.marginStart = Symbol("dartx.marginStart");
  const $marginTopCollapse = dartx.marginTopCollapse = Symbol("dartx.marginTopCollapse");
  const $mask = dartx.mask = Symbol("dartx.mask");
  const $maskBoxImage = dartx.maskBoxImage = Symbol("dartx.maskBoxImage");
  const $maskBoxImageOutset = dartx.maskBoxImageOutset = Symbol("dartx.maskBoxImageOutset");
  const $maskBoxImageRepeat = dartx.maskBoxImageRepeat = Symbol("dartx.maskBoxImageRepeat");
  const $maskBoxImageSlice = dartx.maskBoxImageSlice = Symbol("dartx.maskBoxImageSlice");
  const $maskBoxImageSource = dartx.maskBoxImageSource = Symbol("dartx.maskBoxImageSource");
  const $maskBoxImageWidth = dartx.maskBoxImageWidth = Symbol("dartx.maskBoxImageWidth");
  const $maskClip = dartx.maskClip = Symbol("dartx.maskClip");
  const $maskComposite = dartx.maskComposite = Symbol("dartx.maskComposite");
  const $maskImage = dartx.maskImage = Symbol("dartx.maskImage");
  const $maskOrigin = dartx.maskOrigin = Symbol("dartx.maskOrigin");
  const $maskPosition = dartx.maskPosition = Symbol("dartx.maskPosition");
  const $maskPositionX = dartx.maskPositionX = Symbol("dartx.maskPositionX");
  const $maskPositionY = dartx.maskPositionY = Symbol("dartx.maskPositionY");
  const $maskRepeat = dartx.maskRepeat = Symbol("dartx.maskRepeat");
  const $maskRepeatX = dartx.maskRepeatX = Symbol("dartx.maskRepeatX");
  const $maskRepeatY = dartx.maskRepeatY = Symbol("dartx.maskRepeatY");
  const $maskSize = dartx.maskSize = Symbol("dartx.maskSize");
  const $maskSourceType = dartx.maskSourceType = Symbol("dartx.maskSourceType");
  const $maxLogicalHeight = dartx.maxLogicalHeight = Symbol("dartx.maxLogicalHeight");
  const $maxLogicalWidth = dartx.maxLogicalWidth = Symbol("dartx.maxLogicalWidth");
  const $maxZoom = dartx.maxZoom = Symbol("dartx.maxZoom");
  const $minLogicalHeight = dartx.minLogicalHeight = Symbol("dartx.minLogicalHeight");
  const $minLogicalWidth = dartx.minLogicalWidth = Symbol("dartx.minLogicalWidth");
  const $minZoom = dartx.minZoom = Symbol("dartx.minZoom");
  const $mixBlendMode = dartx.mixBlendMode = Symbol("dartx.mixBlendMode");
  const $objectFit = dartx.objectFit = Symbol("dartx.objectFit");
  const $objectPosition = dartx.objectPosition = Symbol("dartx.objectPosition");
  const $opacity = dartx.opacity = Symbol("dartx.opacity");
  const $order = dartx.order = Symbol("dartx.order");
  const $orphans = dartx.orphans = Symbol("dartx.orphans");
  const $outlineOffset = dartx.outlineOffset = Symbol("dartx.outlineOffset");
  const $overflowWrap = dartx.overflowWrap = Symbol("dartx.overflowWrap");
  const $overflowX = dartx.overflowX = Symbol("dartx.overflowX");
  const $overflowY = dartx.overflowY = Symbol("dartx.overflowY");
  const $paddingAfter = dartx.paddingAfter = Symbol("dartx.paddingAfter");
  const $paddingBefore = dartx.paddingBefore = Symbol("dartx.paddingBefore");
  const $paddingEnd = dartx.paddingEnd = Symbol("dartx.paddingEnd");
  const $paddingStart = dartx.paddingStart = Symbol("dartx.paddingStart");
  const $page = dartx.page = Symbol("dartx.page");
  const $perspective = dartx.perspective = Symbol("dartx.perspective");
  const $perspectiveOrigin = dartx.perspectiveOrigin = Symbol("dartx.perspectiveOrigin");
  const $perspectiveOriginX = dartx.perspectiveOriginX = Symbol("dartx.perspectiveOriginX");
  const $perspectiveOriginY = dartx.perspectiveOriginY = Symbol("dartx.perspectiveOriginY");
  const $pointerEvents = dartx.pointerEvents = Symbol("dartx.pointerEvents");
  const $printColorAdjust = dartx.printColorAdjust = Symbol("dartx.printColorAdjust");
  const $resize = dartx.resize = Symbol("dartx.resize");
  const $rtlOrdering = dartx.rtlOrdering = Symbol("dartx.rtlOrdering");
  const $rubyPosition = dartx.rubyPosition = Symbol("dartx.rubyPosition");
  const $scrollBehavior = dartx.scrollBehavior = Symbol("dartx.scrollBehavior");
  const $shapeImageThreshold = dartx.shapeImageThreshold = Symbol("dartx.shapeImageThreshold");
  const $shapeMargin = dartx.shapeMargin = Symbol("dartx.shapeMargin");
  const $shapeOutside = dartx.shapeOutside = Symbol("dartx.shapeOutside");
  const $speak = dartx.speak = Symbol("dartx.speak");
  const $tabSize = dartx.tabSize = Symbol("dartx.tabSize");
  const $tapHighlightColor = dartx.tapHighlightColor = Symbol("dartx.tapHighlightColor");
  const $textAlignLast = dartx.textAlignLast = Symbol("dartx.textAlignLast");
  const $textCombine = dartx.textCombine = Symbol("dartx.textCombine");
  const $textDecorationColor = dartx.textDecorationColor = Symbol("dartx.textDecorationColor");
  const $textDecorationLine = dartx.textDecorationLine = Symbol("dartx.textDecorationLine");
  const $textDecorationStyle = dartx.textDecorationStyle = Symbol("dartx.textDecorationStyle");
  const $textDecorationsInEffect = dartx.textDecorationsInEffect = Symbol("dartx.textDecorationsInEffect");
  const $textEmphasis = dartx.textEmphasis = Symbol("dartx.textEmphasis");
  const $textEmphasisColor = dartx.textEmphasisColor = Symbol("dartx.textEmphasisColor");
  const $textEmphasisPosition = dartx.textEmphasisPosition = Symbol("dartx.textEmphasisPosition");
  const $textEmphasisStyle = dartx.textEmphasisStyle = Symbol("dartx.textEmphasisStyle");
  const $textFillColor = dartx.textFillColor = Symbol("dartx.textFillColor");
  const $textJustify = dartx.textJustify = Symbol("dartx.textJustify");
  const $textLineThroughColor = dartx.textLineThroughColor = Symbol("dartx.textLineThroughColor");
  const $textLineThroughMode = dartx.textLineThroughMode = Symbol("dartx.textLineThroughMode");
  const $textLineThroughStyle = dartx.textLineThroughStyle = Symbol("dartx.textLineThroughStyle");
  const $textLineThroughWidth = dartx.textLineThroughWidth = Symbol("dartx.textLineThroughWidth");
  const $textOrientation = dartx.textOrientation = Symbol("dartx.textOrientation");
  const $textOverflow = dartx.textOverflow = Symbol("dartx.textOverflow");
  const $textOverlineColor = dartx.textOverlineColor = Symbol("dartx.textOverlineColor");
  const $textOverlineMode = dartx.textOverlineMode = Symbol("dartx.textOverlineMode");
  const $textOverlineStyle = dartx.textOverlineStyle = Symbol("dartx.textOverlineStyle");
  const $textOverlineWidth = dartx.textOverlineWidth = Symbol("dartx.textOverlineWidth");
  const $textRendering = dartx.textRendering = Symbol("dartx.textRendering");
  const $textSecurity = dartx.textSecurity = Symbol("dartx.textSecurity");
  const $textShadow = dartx.textShadow = Symbol("dartx.textShadow");
  const $textStroke = dartx.textStroke = Symbol("dartx.textStroke");
  const $textStrokeColor = dartx.textStrokeColor = Symbol("dartx.textStrokeColor");
  const $textStrokeWidth = dartx.textStrokeWidth = Symbol("dartx.textStrokeWidth");
  const $textUnderlineColor = dartx.textUnderlineColor = Symbol("dartx.textUnderlineColor");
  const $textUnderlineMode = dartx.textUnderlineMode = Symbol("dartx.textUnderlineMode");
  const $textUnderlinePosition = dartx.textUnderlinePosition = Symbol("dartx.textUnderlinePosition");
  const $textUnderlineStyle = dartx.textUnderlineStyle = Symbol("dartx.textUnderlineStyle");
  const $textUnderlineWidth = dartx.textUnderlineWidth = Symbol("dartx.textUnderlineWidth");
  const $touchAction = dartx.touchAction = Symbol("dartx.touchAction");
  const $touchActionDelay = dartx.touchActionDelay = Symbol("dartx.touchActionDelay");
  const $transformOrigin = dartx.transformOrigin = Symbol("dartx.transformOrigin");
  const $transformOriginX = dartx.transformOriginX = Symbol("dartx.transformOriginX");
  const $transformOriginY = dartx.transformOriginY = Symbol("dartx.transformOriginY");
  const $transformOriginZ = dartx.transformOriginZ = Symbol("dartx.transformOriginZ");
  const $transformStyle = dartx.transformStyle = Symbol("dartx.transformStyle");
  const $transition = dartx.transition = Symbol("dartx.transition");
  const $transitionDelay = dartx.transitionDelay = Symbol("dartx.transitionDelay");
  const $transitionDuration = dartx.transitionDuration = Symbol("dartx.transitionDuration");
  const $transitionProperty = dartx.transitionProperty = Symbol("dartx.transitionProperty");
  const $transitionTimingFunction = dartx.transitionTimingFunction = Symbol("dartx.transitionTimingFunction");
  const $unicodeRange = dartx.unicodeRange = Symbol("dartx.unicodeRange");
  const $userDrag = dartx.userDrag = Symbol("dartx.userDrag");
  const $userModify = dartx.userModify = Symbol("dartx.userModify");
  const $userSelect = dartx.userSelect = Symbol("dartx.userSelect");
  const $userZoom = dartx.userZoom = Symbol("dartx.userZoom");
  const $widows = dartx.widows = Symbol("dartx.widows");
  const $willChange = dartx.willChange = Symbol("dartx.willChange");
  const $wordBreak = dartx.wordBreak = Symbol("dartx.wordBreak");
  const $wordWrap = dartx.wordWrap = Symbol("dartx.wordWrap");
  const $wrapFlow = dartx.wrapFlow = Symbol("dartx.wrapFlow");
  const $wrapThrough = dartx.wrapThrough = Symbol("dartx.wrapThrough");
  const $writingMode = dartx.writingMode = Symbol("dartx.writingMode");
  const $zoom = dartx.zoom = Symbol("dartx.zoom");
  const $ownerRule = dartx.ownerRule = Symbol("dartx.ownerRule");
  const $rules = dartx.rules = Symbol("dartx.rules");
  const $addRule = dartx.addRule = Symbol("dartx.addRule");
  const $removeRule = dartx.removeRule = Symbol("dartx.removeRule");
  const $ownerNode = dartx.ownerNode = Symbol("dartx.ownerNode");
  const $componentAtIndex = dartx.componentAtIndex = Symbol("dartx.componentAtIndex");
  const $toMatrix = dartx.toMatrix = Symbol("dartx.toMatrix");
  const $unit = dartx.unit = Symbol("dartx.unit");
  const $fragmentAtIndex = dartx.fragmentAtIndex = Symbol("dartx.fragmentAtIndex");
  const $fallback = dartx.fallback = Symbol("dartx.fallback");
  const $variable = dartx.variable = Symbol("dartx.variable");
  const $define = dartx.define = Symbol("dartx.define");
  const $whenDefined = dartx.whenDefined = Symbol("dartx.whenDefined");
  const $options = dartx.options = Symbol("dartx.options");
  const $dropEffect = dartx.dropEffect = Symbol("dartx.dropEffect");
  const $effectAllowed = dartx.effectAllowed = Symbol("dartx.effectAllowed");
  const $files = dartx.files = Symbol("dartx.files");
  const $items = dartx.items = Symbol("dartx.items");
  const $types = dartx.types = Symbol("dartx.types");
  const $clearData = dartx.clearData = Symbol("dartx.clearData");
  const $getData = dartx.getData = Symbol("dartx.getData");
  const $setData = dartx.setData = Symbol("dartx.setData");
  const $setDragImage = dartx.setDragImage = Symbol("dartx.setDragImage");
  const $getAsFile = dartx.getAsFile = Symbol("dartx.getAsFile");
  const $getAsEntry = dartx.getAsEntry = Symbol("dartx.getAsEntry");
  const $addData = dartx.addData = Symbol("dartx.addData");
  const $addFile = dartx.addFile = Symbol("dartx.addFile");
  const $requestFileSystemSync = dartx.requestFileSystemSync = Symbol("dartx.requestFileSystemSync");
  const $resolveLocalFileSystemSyncUrl = dartx.resolveLocalFileSystemSyncUrl = Symbol("dartx.resolveLocalFileSystemSyncUrl");
  const $addressSpace = dartx.addressSpace = Symbol("dartx.addressSpace");
  const $caches = dartx.caches = Symbol("dartx.caches");
  const $crypto = dartx.crypto = Symbol("dartx.crypto");
  const $indexedDB = dartx.indexedDB = Symbol("dartx.indexedDB");
  const $isSecureContext = dartx.isSecureContext = Symbol("dartx.isSecureContext");
  const $location = dartx.location = Symbol("dartx.location");
  const $navigator = dartx.navigator = Symbol("dartx.navigator");
  const $performance = dartx.performance = Symbol("dartx.performance");
  const $self = dartx.self = Symbol("dartx.self");
  const $importScripts = dartx.importScripts = Symbol("dartx.importScripts");
  const $atob = dartx.atob = Symbol("dartx.atob");
  const $btoa = dartx.btoa = Symbol("dartx.btoa");
  const $queryUsageAndQuota = dartx.queryUsageAndQuota = Symbol("dartx.queryUsageAndQuota");
  const $requestQuota = dartx.requestQuota = Symbol("dartx.requestQuota");
  const $lineNumber = dartx.lineNumber = Symbol("dartx.lineNumber");
  const $sourceFile = dartx.sourceFile = Symbol("dartx.sourceFile");
  const $cornerPoints = dartx.cornerPoints = Symbol("dartx.cornerPoints");
  const $rawValue = dartx.rawValue = Symbol("dartx.rawValue");
  const $landmarks = dartx.landmarks = Symbol("dartx.landmarks");
  const $acceleration = dartx.acceleration = Symbol("dartx.acceleration");
  const $accelerationIncludingGravity = dartx.accelerationIncludingGravity = Symbol("dartx.accelerationIncludingGravity");
  const $interval = dartx.interval = Symbol("dartx.interval");
  const $rotationRate = dartx.rotationRate = Symbol("dartx.rotationRate");
  const $absolute = dartx.absolute = Symbol("dartx.absolute");
  const $alpha = dartx.alpha = Symbol("dartx.alpha");
  const $beta = dartx.beta = Symbol("dartx.beta");
  const $gamma = dartx.gamma = Symbol("dartx.gamma");
  const $show = dartx.show = Symbol("dartx.show");
  const $showModal = dartx.showModal = Symbol("dartx.showModal");
  const $createDirectory = dartx.createDirectory = Symbol("dartx.createDirectory");
  const $createReader = dartx.createReader = Symbol("dartx.createReader");
  const $getDirectory = dartx.getDirectory = Symbol("dartx.getDirectory");
  const $createFile = dartx.createFile = Symbol("dartx.createFile");
  const $getFile = dartx.getFile = Symbol("dartx.getFile");
  const $removeRecursively = dartx.removeRecursively = Symbol("dartx.removeRecursively");
  const $filesystem = dartx.filesystem = Symbol("dartx.filesystem");
  const $fullPath = dartx.fullPath = Symbol("dartx.fullPath");
  const $isDirectory = dartx.isDirectory = Symbol("dartx.isDirectory");
  const $isFile = dartx.isFile = Symbol("dartx.isFile");
  const $copyTo = dartx.copyTo = Symbol("dartx.copyTo");
  const $getMetadata = dartx.getMetadata = Symbol("dartx.getMetadata");
  const $getParent = dartx.getParent = Symbol("dartx.getParent");
  const $toUrl = dartx.toUrl = Symbol("dartx.toUrl");
  const $readEntries = dartx.readEntries = Symbol("dartx.readEntries");
  const $contentType = dartx.contentType = Symbol("dartx.contentType");
  const $cookie = dartx.cookie = Symbol("dartx.cookie");
  const $currentScript = dartx.currentScript = Symbol("dartx.currentScript");
  const $window = dartx.window = Symbol("dartx.window");
  const $documentElement = dartx.documentElement = Symbol("dartx.documentElement");
  const $domain = dartx.domain = Symbol("dartx.domain");
  const $fullscreenEnabled = dartx.fullscreenEnabled = Symbol("dartx.fullscreenEnabled");
  const $implementation = dartx.implementation = Symbol("dartx.implementation");
  const $rootElement = dartx.rootElement = Symbol("dartx.rootElement");
  const $rootScroller = dartx.rootScroller = Symbol("dartx.rootScroller");
  const $scrollingElement = dartx.scrollingElement = Symbol("dartx.scrollingElement");
  const $suborigin = dartx.suborigin = Symbol("dartx.suborigin");
  const $adoptNode = dartx.adoptNode = Symbol("dartx.adoptNode");
  const $createDocumentFragment = dartx.createDocumentFragment = Symbol("dartx.createDocumentFragment");
  const $createRange = dartx.createRange = Symbol("dartx.createRange");
  const $execCommand = dartx.execCommand = Symbol("dartx.execCommand");
  const $exitFullscreen = dartx.exitFullscreen = Symbol("dartx.exitFullscreen");
  const $exitPointerLock = dartx.exitPointerLock = Symbol("dartx.exitPointerLock");
  const $getElementsByName = dartx.getElementsByName = Symbol("dartx.getElementsByName");
  const $getElementsByTagName = dartx.getElementsByTagName = Symbol("dartx.getElementsByTagName");
  const $importNode = dartx.importNode = Symbol("dartx.importNode");
  const $queryCommandEnabled = dartx.queryCommandEnabled = Symbol("dartx.queryCommandEnabled");
  const $queryCommandIndeterm = dartx.queryCommandIndeterm = Symbol("dartx.queryCommandIndeterm");
  const $queryCommandState = dartx.queryCommandState = Symbol("dartx.queryCommandState");
  const $queryCommandSupported = dartx.queryCommandSupported = Symbol("dartx.queryCommandSupported");
  const $queryCommandValue = dartx.queryCommandValue = Symbol("dartx.queryCommandValue");
  const $registerElement2 = dartx.registerElement2 = Symbol("dartx.registerElement2");
  const $getElementById = dartx.getElementById = Symbol("dartx.getElementById");
  const $activeElement = dartx.activeElement = Symbol("dartx.activeElement");
  const $fullscreenElement = dartx.fullscreenElement = Symbol("dartx.fullscreenElement");
  const $pointerLockElement = dartx.pointerLockElement = Symbol("dartx.pointerLockElement");
  const $elementsFromPoint = dartx.elementsFromPoint = Symbol("dartx.elementsFromPoint");
  const $fonts = dartx.fonts = Symbol("dartx.fonts");
  const $onPointerLockChange = dartx.onPointerLockChange = Symbol("dartx.onPointerLockChange");
  const $onPointerLockError = dartx.onPointerLockError = Symbol("dartx.onPointerLockError");
  const $onReadyStateChange = dartx.onReadyStateChange = Symbol("dartx.onReadyStateChange");
  const $onSecurityPolicyViolation = dartx.onSecurityPolicyViolation = Symbol("dartx.onSecurityPolicyViolation");
  const $onSelectionChange = dartx.onSelectionChange = Symbol("dartx.onSelectionChange");
  const $supportsRegisterElement = dartx.supportsRegisterElement = Symbol("dartx.supportsRegisterElement");
  const $supportsRegister = dartx.supportsRegister = Symbol("dartx.supportsRegister");
  const $registerElement = dartx.registerElement = Symbol("dartx.registerElement");
  const $createElementNS = dartx.createElementNS = Symbol("dartx.createElementNS");
  const $visibilityState = dartx.visibilityState = Symbol("dartx.visibilityState");
  const $styleSheets = dartx.styleSheets = Symbol("dartx.styleSheets");
  const $elementFromPoint = dartx.elementFromPoint = Symbol("dartx.elementFromPoint");
  const $getSelection = dartx.getSelection = Symbol("dartx.getSelection");
  const $createDocument = dartx.createDocument = Symbol("dartx.createDocument");
  const $createDocumentType = dartx.createDocumentType = Symbol("dartx.createDocumentType");
  const $hasFeature = dartx.hasFeature = Symbol("dartx.hasFeature");
  const $a = dartx.a = Symbol("dartx.a");
  const $b = dartx.b = Symbol("dartx.b");
  const $c = dartx.c = Symbol("dartx.c");
  const $d = dartx.d = Symbol("dartx.d");
  const $e = dartx.e = Symbol("dartx.e");
  const $f = dartx.f = Symbol("dartx.f");
  const $m11 = dartx.m11 = Symbol("dartx.m11");
  const $m12 = dartx.m12 = Symbol("dartx.m12");
  const $m13 = dartx.m13 = Symbol("dartx.m13");
  const $m14 = dartx.m14 = Symbol("dartx.m14");
  const $m21 = dartx.m21 = Symbol("dartx.m21");
  const $m22 = dartx.m22 = Symbol("dartx.m22");
  const $m23 = dartx.m23 = Symbol("dartx.m23");
  const $m24 = dartx.m24 = Symbol("dartx.m24");
  const $m31 = dartx.m31 = Symbol("dartx.m31");
  const $m32 = dartx.m32 = Symbol("dartx.m32");
  const $m33 = dartx.m33 = Symbol("dartx.m33");
  const $m34 = dartx.m34 = Symbol("dartx.m34");
  const $m41 = dartx.m41 = Symbol("dartx.m41");
  const $m42 = dartx.m42 = Symbol("dartx.m42");
  const $m43 = dartx.m43 = Symbol("dartx.m43");
  const $m44 = dartx.m44 = Symbol("dartx.m44");
  const $invertSelf = dartx.invertSelf = Symbol("dartx.invertSelf");
  const $multiplySelf = dartx.multiplySelf = Symbol("dartx.multiplySelf");
  const $preMultiplySelf = dartx.preMultiplySelf = Symbol("dartx.preMultiplySelf");
  const $rotateAxisAngleSelf = dartx.rotateAxisAngleSelf = Symbol("dartx.rotateAxisAngleSelf");
  const $rotateFromVectorSelf = dartx.rotateFromVectorSelf = Symbol("dartx.rotateFromVectorSelf");
  const $rotateSelf = dartx.rotateSelf = Symbol("dartx.rotateSelf");
  const $scale3dSelf = dartx.scale3dSelf = Symbol("dartx.scale3dSelf");
  const $scaleSelf = dartx.scaleSelf = Symbol("dartx.scaleSelf");
  const $setMatrixValue = dartx.setMatrixValue = Symbol("dartx.setMatrixValue");
  const $skewXSelf = dartx.skewXSelf = Symbol("dartx.skewXSelf");
  const $skewYSelf = dartx.skewYSelf = Symbol("dartx.skewYSelf");
  const $translateSelf = dartx.translateSelf = Symbol("dartx.translateSelf");
  const $isIdentity = dartx.isIdentity = Symbol("dartx.isIdentity");
  const $flipX = dartx.flipX = Symbol("dartx.flipX");
  const $flipY = dartx.flipY = Symbol("dartx.flipY");
  const $inverse = dartx.inverse = Symbol("dartx.inverse");
  const $multiply = dartx.multiply = Symbol("dartx.multiply");
  const $rotateAxisAngle = dartx.rotateAxisAngle = Symbol("dartx.rotateAxisAngle");
  const $rotateFromVector = dartx.rotateFromVector = Symbol("dartx.rotateFromVector");
  const $scale3d = dartx.scale3d = Symbol("dartx.scale3d");
  const $skewX = dartx.skewX = Symbol("dartx.skewX");
  const $skewY = dartx.skewY = Symbol("dartx.skewY");
  const $toFloat32Array = dartx.toFloat32Array = Symbol("dartx.toFloat32Array");
  const $toFloat64Array = dartx.toFloat64Array = Symbol("dartx.toFloat64Array");
  const $transformPoint = dartx.transformPoint = Symbol("dartx.transformPoint");
  const $parseFromString = dartx.parseFromString = Symbol("dartx.parseFromString");
  const $w = dartx.w = Symbol("dartx.w");
  const $matrixTransform = dartx.matrixTransform = Symbol("dartx.matrixTransform");
  const $p1 = dartx.p1 = Symbol("dartx.p1");
  const $p2 = dartx.p2 = Symbol("dartx.p2");
  const $p3 = dartx.p3 = Symbol("dartx.p3");
  const $p4 = dartx.p4 = Symbol("dartx.p4");
  const $getBounds = dartx.getBounds = Symbol("dartx.getBounds");
  const $replace = dartx.replace = Symbol("dartx.replace");
  const $supports = dartx.supports = Symbol("dartx.supports");
  const $toggle = dartx.toggle = Symbol("dartx.toggle");
  const $colno = dartx.colno = Symbol("dartx.colno");
  const $filename = dartx.filename = Symbol("dartx.filename");
  const $lineno = dartx.lineno = Symbol("dartx.lineno");
  const $withCredentials = dartx.withCredentials = Symbol("dartx.withCredentials");
  const $onOpen = dartx.onOpen = Symbol("dartx.onOpen");
  const $lastEventId = dartx.lastEventId = Symbol("dartx.lastEventId");
  const $ports = dartx.ports = Symbol("dartx.ports");
  const $AddSearchProvider = dartx.AddSearchProvider = Symbol("dartx.AddSearchProvider");
  const $IsSearchProviderInstalled = dartx.IsSearchProviderInstalled = Symbol("dartx.IsSearchProviderInstalled");
  const $provider = dartx.provider = Symbol("dartx.provider");
  const $clientId = dartx.clientId = Symbol("dartx.clientId");
  const $isReload = dartx.isReload = Symbol("dartx.isReload");
  const $preloadResponse = dartx.preloadResponse = Symbol("dartx.preloadResponse");
  const $elements = dartx.elements = Symbol("dartx.elements");
  const $lastModified = dartx.lastModified = Symbol("dartx.lastModified");
  const $lastModifiedDate = dartx.lastModifiedDate = Symbol("dartx.lastModifiedDate");
  const $relativePath = dartx.relativePath = Symbol("dartx.relativePath");
  const $createWriter = dartx.createWriter = Symbol("dartx.createWriter");
  const $file = dartx.file = Symbol("dartx.file");
  const $readAsArrayBuffer = dartx.readAsArrayBuffer = Symbol("dartx.readAsArrayBuffer");
  const $readAsDataUrl = dartx.readAsDataUrl = Symbol("dartx.readAsDataUrl");
  const $readAsText = dartx.readAsText = Symbol("dartx.readAsText");
  const $onLoadEnd = dartx.onLoadEnd = Symbol("dartx.onLoadEnd");
  const $onLoadStart = dartx.onLoadStart = Symbol("dartx.onLoadStart");
  const $root = dartx.root = Symbol("dartx.root");
  const $seek = dartx.seek = Symbol("dartx.seek");
  const $write = dartx.write = Symbol("dartx.write");
  const $onWrite = dartx.onWrite = Symbol("dartx.onWrite");
  const $onWriteEnd = dartx.onWriteEnd = Symbol("dartx.onWriteEnd");
  const $onWriteStart = dartx.onWriteStart = Symbol("dartx.onWriteStart");
  const $relatedTarget = dartx.relatedTarget = Symbol("dartx.relatedTarget");
  const $family = dartx.family = Symbol("dartx.family");
  const $featureSettings = dartx.featureSettings = Symbol("dartx.featureSettings");
  const $loaded = dartx.loaded = Symbol("dartx.loaded");
  const $stretch = dartx.stretch = Symbol("dartx.stretch");
  const $variant = dartx.variant = Symbol("dartx.variant");
  const $weight = dartx.weight = Symbol("dartx.weight");
  const $check = dartx.check = Symbol("dartx.check");
  const $onLoading = dartx.onLoading = Symbol("dartx.onLoading");
  const $onLoadingDone = dartx.onLoadingDone = Symbol("dartx.onLoadingDone");
  const $onLoadingError = dartx.onLoadingError = Symbol("dartx.onLoadingError");
  const $fontfaces = dartx.fontfaces = Symbol("dartx.fontfaces");
  const $appendBlob = dartx.appendBlob = Symbol("dartx.appendBlob");
  const $acceptCharset = dartx.acceptCharset = Symbol("dartx.acceptCharset");
  const $action = dartx.action = Symbol("dartx.action");
  const $enctype = dartx.enctype = Symbol("dartx.enctype");
  const $method = dartx.method = Symbol("dartx.method");
  const $noValidate = dartx.noValidate = Symbol("dartx.noValidate");
  const $requestAutocomplete = dartx.requestAutocomplete = Symbol("dartx.requestAutocomplete");
  const $reset = dartx.reset = Symbol("dartx.reset");
  const $submit = dartx.submit = Symbol("dartx.submit");
  const $axes = dartx.axes = Symbol("dartx.axes");
  const $buttons = dartx.buttons = Symbol("dartx.buttons");
  const $connected = dartx.connected = Symbol("dartx.connected");
  const $displayId = dartx.displayId = Symbol("dartx.displayId");
  const $hand = dartx.hand = Symbol("dartx.hand");
  const $mapping = dartx.mapping = Symbol("dartx.mapping");
  const $pose = dartx.pose = Symbol("dartx.pose");
  const $touched = dartx.touched = Symbol("dartx.touched");
  const $gamepad = dartx.gamepad = Symbol("dartx.gamepad");
  const $angularAcceleration = dartx.angularAcceleration = Symbol("dartx.angularAcceleration");
  const $angularVelocity = dartx.angularVelocity = Symbol("dartx.angularVelocity");
  const $hasOrientation = dartx.hasOrientation = Symbol("dartx.hasOrientation");
  const $hasPosition = dartx.hasPosition = Symbol("dartx.hasPosition");
  const $linearAcceleration = dartx.linearAcceleration = Symbol("dartx.linearAcceleration");
  const $linearVelocity = dartx.linearVelocity = Symbol("dartx.linearVelocity");
  const $getCurrentPosition = dartx.getCurrentPosition = Symbol("dartx.getCurrentPosition");
  const $watchPosition = dartx.watchPosition = Symbol("dartx.watchPosition");
  const $newUrl = dartx.newUrl = Symbol("dartx.newUrl");
  const $oldUrl = dartx.oldUrl = Symbol("dartx.oldUrl");
  const $scrollRestoration = dartx.scrollRestoration = Symbol("dartx.scrollRestoration");
  const $back = dartx.back = Symbol("dartx.back");
  const $forward = dartx.forward = Symbol("dartx.forward");
  const $go = dartx.go = Symbol("dartx.go");
  const $pushState = dartx.pushState = Symbol("dartx.pushState");
  const $replaceState = dartx.replaceState = Symbol("dartx.replaceState");
  const $namedItem = dartx.namedItem = Symbol("dartx.namedItem");
  const $body = dartx.body = Symbol("dartx.body");
  const $caretRangeFromPoint = dartx.caretRangeFromPoint = Symbol("dartx.caretRangeFromPoint");
  const $preferredStylesheetSet = dartx.preferredStylesheetSet = Symbol("dartx.preferredStylesheetSet");
  const $referrer = dartx.referrer = Symbol("dartx.referrer");
  const $selectedStylesheetSet = dartx.selectedStylesheetSet = Symbol("dartx.selectedStylesheetSet");
  const $register = dartx.register = Symbol("dartx.register");
  const $onVisibilityChange = dartx.onVisibilityChange = Symbol("dartx.onVisibilityChange");
  const $createElementUpgrader = dartx.createElementUpgrader = Symbol("dartx.createElementUpgrader");
  const $responseHeaders = dartx.responseHeaders = Symbol("dartx.responseHeaders");
  const $responseText = dartx.responseText = Symbol("dartx.responseText");
  const $responseType = dartx.responseType = Symbol("dartx.responseType");
  const $responseUrl = dartx.responseUrl = Symbol("dartx.responseUrl");
  const $responseXml = dartx.responseXml = Symbol("dartx.responseXml");
  const $statusText = dartx.statusText = Symbol("dartx.statusText");
  const $timeout = dartx.timeout = Symbol("dartx.timeout");
  const $upload = dartx.upload = Symbol("dartx.upload");
  const $getAllResponseHeaders = dartx.getAllResponseHeaders = Symbol("dartx.getAllResponseHeaders");
  const $getResponseHeader = dartx.getResponseHeader = Symbol("dartx.getResponseHeader");
  const $overrideMimeType = dartx.overrideMimeType = Symbol("dartx.overrideMimeType");
  const $send = dartx.send = Symbol("dartx.send");
  const $setRequestHeader = dartx.setRequestHeader = Symbol("dartx.setRequestHeader");
  const $onTimeout = dartx.onTimeout = Symbol("dartx.onTimeout");
  const $allow = dartx.allow = Symbol("dartx.allow");
  const $allowFullscreen = dartx.allowFullscreen = Symbol("dartx.allowFullscreen");
  const $allowPaymentRequest = dartx.allowPaymentRequest = Symbol("dartx.allowPaymentRequest");
  const $contentWindow = dartx.contentWindow = Symbol("dartx.contentWindow");
  const $csp = dartx.csp = Symbol("dartx.csp");
  const $sandbox = dartx.sandbox = Symbol("dartx.sandbox");
  const $srcdoc = dartx.srcdoc = Symbol("dartx.srcdoc");
  const $didTimeout = dartx.didTimeout = Symbol("dartx.didTimeout");
  const $timeRemaining = dartx.timeRemaining = Symbol("dartx.timeRemaining");
  const $transferFromImageBitmap = dartx.transferFromImageBitmap = Symbol("dartx.transferFromImageBitmap");
  const $track = dartx.track = Symbol("dartx.track");
  const $getPhotoCapabilities = dartx.getPhotoCapabilities = Symbol("dartx.getPhotoCapabilities");
  const $getPhotoSettings = dartx.getPhotoSettings = Symbol("dartx.getPhotoSettings");
  const $grabFrame = dartx.grabFrame = Symbol("dartx.grabFrame");
  const $setOptions = dartx.setOptions = Symbol("dartx.setOptions");
  const $takePhoto = dartx.takePhoto = Symbol("dartx.takePhoto");
  const $async = dartx.async = Symbol("dartx.async");
  const $complete = dartx.complete = Symbol("dartx.complete");
  const $isMap = dartx.isMap = Symbol("dartx.isMap");
  const $naturalHeight = dartx.naturalHeight = Symbol("dartx.naturalHeight");
  const $naturalWidth = dartx.naturalWidth = Symbol("dartx.naturalWidth");
  const $sizes = dartx.sizes = Symbol("dartx.sizes");
  const $srcset = dartx.srcset = Symbol("dartx.srcset");
  const $useMap = dartx.useMap = Symbol("dartx.useMap");
  const $decode = dartx.decode = Symbol("dartx.decode");
  const $firesTouchEvents = dartx.firesTouchEvents = Symbol("dartx.firesTouchEvents");
  const $accept = dartx.accept = Symbol("dartx.accept");
  const $autocapitalize = dartx.autocapitalize = Symbol("dartx.autocapitalize");
  const $capture = dartx.capture = Symbol("dartx.capture");
  const $defaultChecked = dartx.defaultChecked = Symbol("dartx.defaultChecked");
  const $defaultValue = dartx.defaultValue = Symbol("dartx.defaultValue");
  const $dirName = dartx.dirName = Symbol("dartx.dirName");
  const $incremental = dartx.incremental = Symbol("dartx.incremental");
  const $indeterminate = dartx.indeterminate = Symbol("dartx.indeterminate");
  const $list = dartx.list = Symbol("dartx.list");
  const $max = dartx.max = Symbol("dartx.max");
  const $maxLength = dartx.maxLength = Symbol("dartx.maxLength");
  const $min = dartx.min = Symbol("dartx.min");
  const $minLength = dartx.minLength = Symbol("dartx.minLength");
  const $multiple = dartx.multiple = Symbol("dartx.multiple");
  const $pattern = dartx.pattern = Symbol("dartx.pattern");
  const $selectionDirection = dartx.selectionDirection = Symbol("dartx.selectionDirection");
  const $selectionEnd = dartx.selectionEnd = Symbol("dartx.selectionEnd");
  const $selectionStart = dartx.selectionStart = Symbol("dartx.selectionStart");
  const $step = dartx.step = Symbol("dartx.step");
  const $valueAsDate = dartx.valueAsDate = Symbol("dartx.valueAsDate");
  const $valueAsNumber = dartx.valueAsNumber = Symbol("dartx.valueAsNumber");
  const $directory = dartx.directory = Symbol("dartx.directory");
  const $setRangeText = dartx.setRangeText = Symbol("dartx.setRangeText");
  const $setSelectionRange = dartx.setSelectionRange = Symbol("dartx.setSelectionRange");
  const $stepDown = dartx.stepDown = Symbol("dartx.stepDown");
  const $stepUp = dartx.stepUp = Symbol("dartx.stepUp");
  const $registerForeignFetch = dartx.registerForeignFetch = Symbol("dartx.registerForeignFetch");
  const $rootMargin = dartx.rootMargin = Symbol("dartx.rootMargin");
  const $thresholds = dartx.thresholds = Symbol("dartx.thresholds");
  const $disconnect = dartx.disconnect = Symbol("dartx.disconnect");
  const $takeRecords = dartx.takeRecords = Symbol("dartx.takeRecords");
  const $boundingClientRect = dartx.boundingClientRect = Symbol("dartx.boundingClientRect");
  const $intersectionRatio = dartx.intersectionRatio = Symbol("dartx.intersectionRatio");
  const $intersectionRect = dartx.intersectionRect = Symbol("dartx.intersectionRect");
  const $isIntersecting = dartx.isIntersecting = Symbol("dartx.isIntersecting");
  const $rootBounds = dartx.rootBounds = Symbol("dartx.rootBounds");
  const $keyCode = dartx.keyCode = Symbol("dartx.keyCode");
  const $charCode = dartx.charCode = Symbol("dartx.charCode");
  const $which = dartx.which = Symbol("dartx.which");
  const $altKey = dartx.altKey = Symbol("dartx.altKey");
  const $ctrlKey = dartx.ctrlKey = Symbol("dartx.ctrlKey");
  const $isComposing = dartx.isComposing = Symbol("dartx.isComposing");
  const $metaKey = dartx.metaKey = Symbol("dartx.metaKey");
  const $repeat = dartx.repeat = Symbol("dartx.repeat");
  const $shiftKey = dartx.shiftKey = Symbol("dartx.shiftKey");
  const $getModifierState = dartx.getModifierState = Symbol("dartx.getModifierState");
  const $control = dartx.control = Symbol("dartx.control");
  const $htmlFor = dartx.htmlFor = Symbol("dartx.htmlFor");
  const $as = dartx.as = Symbol("dartx.as");
  const $import = dartx.import = Symbol("dartx.import");
  const $integrity = dartx.integrity = Symbol("dartx.integrity");
  const $relList = dartx.relList = Symbol("dartx.relList");
  const $scope = dartx.scope = Symbol("dartx.scope");
  const $sheet = dartx.sheet = Symbol("dartx.sheet");
  const $supportsImport = dartx.supportsImport = Symbol("dartx.supportsImport");
  const $ancestorOrigins = dartx.ancestorOrigins = Symbol("dartx.ancestorOrigins");
  const $trustedHref = dartx.trustedHref = Symbol("dartx.trustedHref");
  const $assign = dartx.assign = Symbol("dartx.assign");
  const $reload = dartx.reload = Symbol("dartx.reload");
  const $areas = dartx.areas = Symbol("dartx.areas");
  const $decodingInfo = dartx.decodingInfo = Symbol("dartx.decodingInfo");
  const $encodingInfo = dartx.encodingInfo = Symbol("dartx.encodingInfo");
  const $powerEfficient = dartx.powerEfficient = Symbol("dartx.powerEfficient");
  const $smooth = dartx.smooth = Symbol("dartx.smooth");
  const $supported = dartx.supported = Symbol("dartx.supported");
  const $deviceId = dartx.deviceId = Symbol("dartx.deviceId");
  const $groupId = dartx.groupId = Symbol("dartx.groupId");
  const $enumerateDevices = dartx.enumerateDevices = Symbol("dartx.enumerateDevices");
  const $getSupportedConstraints = dartx.getSupportedConstraints = Symbol("dartx.getSupportedConstraints");
  const $initData = dartx.initData = Symbol("dartx.initData");
  const $initDataType = dartx.initDataType = Symbol("dartx.initDataType");
  const $messageType = dartx.messageType = Symbol("dartx.messageType");
  const $closed = dartx.closed = Symbol("dartx.closed");
  const $expiration = dartx.expiration = Symbol("dartx.expiration");
  const $keyStatuses = dartx.keyStatuses = Symbol("dartx.keyStatuses");
  const $sessionId = dartx.sessionId = Symbol("dartx.sessionId");
  const $generateRequest = dartx.generateRequest = Symbol("dartx.generateRequest");
  const $keySystem = dartx.keySystem = Symbol("dartx.keySystem");
  const $createMediaKeys = dartx.createMediaKeys = Symbol("dartx.createMediaKeys");
  const $getConfiguration = dartx.getConfiguration = Symbol("dartx.getConfiguration");
  const $getStatusForPolicy = dartx.getStatusForPolicy = Symbol("dartx.getStatusForPolicy");
  const $setServerCertificate = dartx.setServerCertificate = Symbol("dartx.setServerCertificate");
  const $minHdcpVersion = dartx.minHdcpVersion = Symbol("dartx.minHdcpVersion");
  const $mediaText = dartx.mediaText = Symbol("dartx.mediaText");
  const $appendMedium = dartx.appendMedium = Symbol("dartx.appendMedium");
  const $deleteMedium = dartx.deleteMedium = Symbol("dartx.deleteMedium");
  const $album = dartx.album = Symbol("dartx.album");
  const $artist = dartx.artist = Symbol("dartx.artist");
  const $artwork = dartx.artwork = Symbol("dartx.artwork");
  const $addListener = dartx.addListener = Symbol("dartx.addListener");
  const $removeListener = dartx.removeListener = Symbol("dartx.removeListener");
  const $audioBitsPerSecond = dartx.audioBitsPerSecond = Symbol("dartx.audioBitsPerSecond");
  const $mimeType = dartx.mimeType = Symbol("dartx.mimeType");
  const $stream = dartx.stream = Symbol("dartx.stream");
  const $videoBitsPerSecond = dartx.videoBitsPerSecond = Symbol("dartx.videoBitsPerSecond");
  const $requestData = dartx.requestData = Symbol("dartx.requestData");
  const $resume = dartx.resume = Symbol("dartx.resume");
  const $metadata = dartx.metadata = Symbol("dartx.metadata");
  const $playbackState = dartx.playbackState = Symbol("dartx.playbackState");
  const $setActionHandler = dartx.setActionHandler = Symbol("dartx.setActionHandler");
  const $activeSourceBuffers = dartx.activeSourceBuffers = Symbol("dartx.activeSourceBuffers");
  const $sourceBuffers = dartx.sourceBuffers = Symbol("dartx.sourceBuffers");
  const $addSourceBuffer = dartx.addSourceBuffer = Symbol("dartx.addSourceBuffer");
  const $clearLiveSeekableRange = dartx.clearLiveSeekableRange = Symbol("dartx.clearLiveSeekableRange");
  const $endOfStream = dartx.endOfStream = Symbol("dartx.endOfStream");
  const $removeSourceBuffer = dartx.removeSourceBuffer = Symbol("dartx.removeSourceBuffer");
  const $setLiveSeekableRange = dartx.setLiveSeekableRange = Symbol("dartx.setLiveSeekableRange");
  const $active = dartx.active = Symbol("dartx.active");
  const $addTrack = dartx.addTrack = Symbol("dartx.addTrack");
  const $getAudioTracks = dartx.getAudioTracks = Symbol("dartx.getAudioTracks");
  const $getTrackById = dartx.getTrackById = Symbol("dartx.getTrackById");
  const $getTracks = dartx.getTracks = Symbol("dartx.getTracks");
  const $getVideoTracks = dartx.getVideoTracks = Symbol("dartx.getVideoTracks");
  const $removeTrack = dartx.removeTrack = Symbol("dartx.removeTrack");
  const $onAddTrack = dartx.onAddTrack = Symbol("dartx.onAddTrack");
  const $onRemoveTrack = dartx.onRemoveTrack = Symbol("dartx.onRemoveTrack");
  const $jsHeapSizeLimit = dartx.jsHeapSizeLimit = Symbol("dartx.jsHeapSizeLimit");
  const $totalJSHeapSize = dartx.totalJSHeapSize = Symbol("dartx.totalJSHeapSize");
  const $usedJSHeapSize = dartx.usedJSHeapSize = Symbol("dartx.usedJSHeapSize");
  const $port1 = dartx.port1 = Symbol("dartx.port1");
  const $port2 = dartx.port2 = Symbol("dartx.port2");
  const $httpEquiv = dartx.httpEquiv = Symbol("dartx.httpEquiv");
  const $modificationTime = dartx.modificationTime = Symbol("dartx.modificationTime");
  const $high = dartx.high = Symbol("dartx.high");
  const $low = dartx.low = Symbol("dartx.low");
  const $optimum = dartx.optimum = Symbol("dartx.optimum");
  const $inputs = dartx.inputs = Symbol("dartx.inputs");
  const $outputs = dartx.outputs = Symbol("dartx.outputs");
  const $sysexEnabled = dartx.sysexEnabled = Symbol("dartx.sysexEnabled");
  const $onMidiMessage = dartx.onMidiMessage = Symbol("dartx.onMidiMessage");
  const $connection = dartx.connection = Symbol("dartx.connection");
  const $manufacturer = dartx.manufacturer = Symbol("dartx.manufacturer");
  const $description = dartx.description = Symbol("dartx.description");
  const $enabledPlugin = dartx.enabledPlugin = Symbol("dartx.enabledPlugin");
  const $suffixes = dartx.suffixes = Symbol("dartx.suffixes");
  const $cite = dartx.cite = Symbol("dartx.cite");
  const $dateTime = dartx.dateTime = Symbol("dartx.dateTime");
  const $button = dartx.button = Symbol("dartx.button");
  const $fromElement = dartx.fromElement = Symbol("dartx.fromElement");
  const $region = dartx.region = Symbol("dartx.region");
  const $toElement = dartx.toElement = Symbol("dartx.toElement");
  const $movement = dartx.movement = Symbol("dartx.movement");
  const $screen = dartx.screen = Symbol("dartx.screen");
  const $layer = dartx.layer = Symbol("dartx.layer");
  const $dataTransfer = dartx.dataTransfer = Symbol("dartx.dataTransfer");
  const $attrChange = dartx.attrChange = Symbol("dartx.attrChange");
  const $attrName = dartx.attrName = Symbol("dartx.attrName");
  const $newValue = dartx.newValue = Symbol("dartx.newValue");
  const $prevValue = dartx.prevValue = Symbol("dartx.prevValue");
  const $relatedNode = dartx.relatedNode = Symbol("dartx.relatedNode");
  const $initMutationEvent = dartx.initMutationEvent = Symbol("dartx.initMutationEvent");
  const $addedNodes = dartx.addedNodes = Symbol("dartx.addedNodes");
  const $attributeName = dartx.attributeName = Symbol("dartx.attributeName");
  const $attributeNamespace = dartx.attributeNamespace = Symbol("dartx.attributeNamespace");
  const $nextSibling = dartx.nextSibling = Symbol("dartx.nextSibling");
  const $oldValue = dartx.oldValue = Symbol("dartx.oldValue");
  const $previousSibling = dartx.previousSibling = Symbol("dartx.previousSibling");
  const $removedNodes = dartx.removedNodes = Symbol("dartx.removedNodes");
  const $disable = dartx.disable = Symbol("dartx.disable");
  const $enable = dartx.enable = Symbol("dartx.enable");
  const $getState = dartx.getState = Symbol("dartx.getState");
  const $getGamepads = dartx.getGamepads = Symbol("dartx.getGamepads");
  const $language = dartx.language = Symbol("dartx.language");
  const $getUserMedia = dartx.getUserMedia = Symbol("dartx.getUserMedia");
  const $budget = dartx.budget = Symbol("dartx.budget");
  const $clipboard = dartx.clipboard = Symbol("dartx.clipboard");
  const $credentials = dartx.credentials = Symbol("dartx.credentials");
  const $deviceMemory = dartx.deviceMemory = Symbol("dartx.deviceMemory");
  const $doNotTrack = dartx.doNotTrack = Symbol("dartx.doNotTrack");
  const $geolocation = dartx.geolocation = Symbol("dartx.geolocation");
  const $maxTouchPoints = dartx.maxTouchPoints = Symbol("dartx.maxTouchPoints");
  const $mediaCapabilities = dartx.mediaCapabilities = Symbol("dartx.mediaCapabilities");
  const $mediaDevices = dartx.mediaDevices = Symbol("dartx.mediaDevices");
  const $mediaSession = dartx.mediaSession = Symbol("dartx.mediaSession");
  const $mimeTypes = dartx.mimeTypes = Symbol("dartx.mimeTypes");
  const $nfc = dartx.nfc = Symbol("dartx.nfc");
  const $permissions = dartx.permissions = Symbol("dartx.permissions");
  const $presentation = dartx.presentation = Symbol("dartx.presentation");
  const $productSub = dartx.productSub = Symbol("dartx.productSub");
  const $serviceWorker = dartx.serviceWorker = Symbol("dartx.serviceWorker");
  const $storage = dartx.storage = Symbol("dartx.storage");
  const $vendor = dartx.vendor = Symbol("dartx.vendor");
  const $vendorSub = dartx.vendorSub = Symbol("dartx.vendorSub");
  const $vr = dartx.vr = Symbol("dartx.vr");
  const $persistentStorage = dartx.persistentStorage = Symbol("dartx.persistentStorage");
  const $temporaryStorage = dartx.temporaryStorage = Symbol("dartx.temporaryStorage");
  const $cancelKeyboardLock = dartx.cancelKeyboardLock = Symbol("dartx.cancelKeyboardLock");
  const $getBattery = dartx.getBattery = Symbol("dartx.getBattery");
  const $getInstalledRelatedApps = dartx.getInstalledRelatedApps = Symbol("dartx.getInstalledRelatedApps");
  const $getVRDisplays = dartx.getVRDisplays = Symbol("dartx.getVRDisplays");
  const $registerProtocolHandler = dartx.registerProtocolHandler = Symbol("dartx.registerProtocolHandler");
  const $requestKeyboardLock = dartx.requestKeyboardLock = Symbol("dartx.requestKeyboardLock");
  const $requestMidiAccess = dartx.requestMidiAccess = Symbol("dartx.requestMidiAccess");
  const $requestMediaKeySystemAccess = dartx.requestMediaKeySystemAccess = Symbol("dartx.requestMediaKeySystemAccess");
  const $sendBeacon = dartx.sendBeacon = Symbol("dartx.sendBeacon");
  const $share = dartx.share = Symbol("dartx.share");
  const $webdriver = dartx.webdriver = Symbol("dartx.webdriver");
  const $cookieEnabled = dartx.cookieEnabled = Symbol("dartx.cookieEnabled");
  const $appCodeName = dartx.appCodeName = Symbol("dartx.appCodeName");
  const $appName = dartx.appName = Symbol("dartx.appName");
  const $appVersion = dartx.appVersion = Symbol("dartx.appVersion");
  const $dartEnabled = dartx.dartEnabled = Symbol("dartx.dartEnabled");
  const $platform = dartx.platform = Symbol("dartx.platform");
  const $product = dartx.product = Symbol("dartx.product");
  const $userAgent = dartx.userAgent = Symbol("dartx.userAgent");
  const $languages = dartx.languages = Symbol("dartx.languages");
  const $onLine = dartx.onLine = Symbol("dartx.onLine");
  const $hardwareConcurrency = dartx.hardwareConcurrency = Symbol("dartx.hardwareConcurrency");
  const $constraintName = dartx.constraintName = Symbol("dartx.constraintName");
  const $downlink = dartx.downlink = Symbol("dartx.downlink");
  const $downlinkMax = dartx.downlinkMax = Symbol("dartx.downlinkMax");
  const $effectiveType = dartx.effectiveType = Symbol("dartx.effectiveType");
  const $rtt = dartx.rtt = Symbol("dartx.rtt");
  const $pointerBeforeReferenceNode = dartx.pointerBeforeReferenceNode = Symbol("dartx.pointerBeforeReferenceNode");
  const $referenceNode = dartx.referenceNode = Symbol("dartx.referenceNode");
  const $whatToShow = dartx.whatToShow = Symbol("dartx.whatToShow");
  const $detach = dartx.detach = Symbol("dartx.detach");
  const $actions = dartx.actions = Symbol("dartx.actions");
  const $badge = dartx.badge = Symbol("dartx.badge");
  const $icon = dartx.icon = Symbol("dartx.icon");
  const $image = dartx.image = Symbol("dartx.image");
  const $renotify = dartx.renotify = Symbol("dartx.renotify");
  const $requireInteraction = dartx.requireInteraction = Symbol("dartx.requireInteraction");
  const $silent = dartx.silent = Symbol("dartx.silent");
  const $tag = dartx.tag = Symbol("dartx.tag");
  const $vibrate = dartx.vibrate = Symbol("dartx.vibrate");
  const $onShow = dartx.onShow = Symbol("dartx.onShow");
  const $notification = dartx.notification = Symbol("dartx.notification");
  const $reply = dartx.reply = Symbol("dartx.reply");
  const $convertToBlob = dartx.convertToBlob = Symbol("dartx.convertToBlob");
  const $transferToImageBitmap = dartx.transferToImageBitmap = Symbol("dartx.transferToImageBitmap");
  const $commit = dartx.commit = Symbol("dartx.commit");
  const $defaultSelected = dartx.defaultSelected = Symbol("dartx.defaultSelected");
  const $constraint = dartx.constraint = Symbol("dartx.constraint");
  const $persisted = dartx.persisted = Symbol("dartx.persisted");
  const $devicePixelRatio = dartx.devicePixelRatio = Symbol("dartx.devicePixelRatio");
  const $registerPaint = dartx.registerPaint = Symbol("dartx.registerPaint");
  const $additionalData = dartx.additionalData = Symbol("dartx.additionalData");
  const $idName = dartx.idName = Symbol("dartx.idName");
  const $passwordName = dartx.passwordName = Symbol("dartx.passwordName");
  const $addPath = dartx.addPath = Symbol("dartx.addPath");
  const $addressLine = dartx.addressLine = Symbol("dartx.addressLine");
  const $city = dartx.city = Symbol("dartx.city");
  const $country = dartx.country = Symbol("dartx.country");
  const $dependentLocality = dartx.dependentLocality = Symbol("dartx.dependentLocality");
  const $languageCode = dartx.languageCode = Symbol("dartx.languageCode");
  const $organization = dartx.organization = Symbol("dartx.organization");
  const $phone = dartx.phone = Symbol("dartx.phone");
  const $postalCode = dartx.postalCode = Symbol("dartx.postalCode");
  const $recipient = dartx.recipient = Symbol("dartx.recipient");
  const $sortingCode = dartx.sortingCode = Symbol("dartx.sortingCode");
  const $instruments = dartx.instruments = Symbol("dartx.instruments");
  const $userHint = dartx.userHint = Symbol("dartx.userHint");
  const $shippingAddress = dartx.shippingAddress = Symbol("dartx.shippingAddress");
  const $shippingOption = dartx.shippingOption = Symbol("dartx.shippingOption");
  const $shippingType = dartx.shippingType = Symbol("dartx.shippingType");
  const $canMakePayment = dartx.canMakePayment = Symbol("dartx.canMakePayment");
  const $instrumentKey = dartx.instrumentKey = Symbol("dartx.instrumentKey");
  const $paymentRequestId = dartx.paymentRequestId = Symbol("dartx.paymentRequestId");
  const $total = dartx.total = Symbol("dartx.total");
  const $updateWith = dartx.updateWith = Symbol("dartx.updateWith");
  const $methodName = dartx.methodName = Symbol("dartx.methodName");
  const $payerEmail = dartx.payerEmail = Symbol("dartx.payerEmail");
  const $payerName = dartx.payerName = Symbol("dartx.payerName");
  const $payerPhone = dartx.payerPhone = Symbol("dartx.payerPhone");
  const $requestId = dartx.requestId = Symbol("dartx.requestId");
  const $memory = dartx.memory = Symbol("dartx.memory");
  const $navigation = dartx.navigation = Symbol("dartx.navigation");
  const $timeOrigin = dartx.timeOrigin = Symbol("dartx.timeOrigin");
  const $clearMarks = dartx.clearMarks = Symbol("dartx.clearMarks");
  const $clearMeasures = dartx.clearMeasures = Symbol("dartx.clearMeasures");
  const $clearResourceTimings = dartx.clearResourceTimings = Symbol("dartx.clearResourceTimings");
  const $getEntries = dartx.getEntries = Symbol("dartx.getEntries");
  const $getEntriesByName = dartx.getEntriesByName = Symbol("dartx.getEntriesByName");
  const $getEntriesByType = dartx.getEntriesByType = Symbol("dartx.getEntriesByType");
  const $mark = dartx.mark = Symbol("dartx.mark");
  const $measure = dartx.measure = Symbol("dartx.measure");
  const $now = dartx.now = Symbol("dartx.now");
  const $setResourceTimingBufferSize = dartx.setResourceTimingBufferSize = Symbol("dartx.setResourceTimingBufferSize");
  const $entryType = dartx.entryType = Symbol("dartx.entryType");
  const $attribution = dartx.attribution = Symbol("dartx.attribution");
  const $redirectCount = dartx.redirectCount = Symbol("dartx.redirectCount");
  const $domComplete = dartx.domComplete = Symbol("dartx.domComplete");
  const $domContentLoadedEventEnd = dartx.domContentLoadedEventEnd = Symbol("dartx.domContentLoadedEventEnd");
  const $domContentLoadedEventStart = dartx.domContentLoadedEventStart = Symbol("dartx.domContentLoadedEventStart");
  const $domInteractive = dartx.domInteractive = Symbol("dartx.domInteractive");
  const $loadEventEnd = dartx.loadEventEnd = Symbol("dartx.loadEventEnd");
  const $loadEventStart = dartx.loadEventStart = Symbol("dartx.loadEventStart");
  const $unloadEventEnd = dartx.unloadEventEnd = Symbol("dartx.unloadEventEnd");
  const $unloadEventStart = dartx.unloadEventStart = Symbol("dartx.unloadEventStart");
  const $connectEnd = dartx.connectEnd = Symbol("dartx.connectEnd");
  const $connectStart = dartx.connectStart = Symbol("dartx.connectStart");
  const $decodedBodySize = dartx.decodedBodySize = Symbol("dartx.decodedBodySize");
  const $domainLookupEnd = dartx.domainLookupEnd = Symbol("dartx.domainLookupEnd");
  const $domainLookupStart = dartx.domainLookupStart = Symbol("dartx.domainLookupStart");
  const $encodedBodySize = dartx.encodedBodySize = Symbol("dartx.encodedBodySize");
  const $fetchStart = dartx.fetchStart = Symbol("dartx.fetchStart");
  const $initiatorType = dartx.initiatorType = Symbol("dartx.initiatorType");
  const $nextHopProtocol = dartx.nextHopProtocol = Symbol("dartx.nextHopProtocol");
  const $redirectEnd = dartx.redirectEnd = Symbol("dartx.redirectEnd");
  const $redirectStart = dartx.redirectStart = Symbol("dartx.redirectStart");
  const $requestStart = dartx.requestStart = Symbol("dartx.requestStart");
  const $responseEnd = dartx.responseEnd = Symbol("dartx.responseEnd");
  const $responseStart = dartx.responseStart = Symbol("dartx.responseStart");
  const $secureConnectionStart = dartx.secureConnectionStart = Symbol("dartx.secureConnectionStart");
  const $serverTiming = dartx.serverTiming = Symbol("dartx.serverTiming");
  const $transferSize = dartx.transferSize = Symbol("dartx.transferSize");
  const $workerStart = dartx.workerStart = Symbol("dartx.workerStart");
  const $domLoading = dartx.domLoading = Symbol("dartx.domLoading");
  const $navigationStart = dartx.navigationStart = Symbol("dartx.navigationStart");
  const $query = dartx.query = Symbol("dartx.query");
  const $requestAll = dartx.requestAll = Symbol("dartx.requestAll");
  const $revoke = dartx.revoke = Symbol("dartx.revoke");
  const $fillLightMode = dartx.fillLightMode = Symbol("dartx.fillLightMode");
  const $imageHeight = dartx.imageHeight = Symbol("dartx.imageHeight");
  const $imageWidth = dartx.imageWidth = Symbol("dartx.imageWidth");
  const $redEyeReduction = dartx.redEyeReduction = Symbol("dartx.redEyeReduction");
  const $refresh = dartx.refresh = Symbol("dartx.refresh");
  const $isPrimary = dartx.isPrimary = Symbol("dartx.isPrimary");
  const $pointerId = dartx.pointerId = Symbol("dartx.pointerId");
  const $pointerType = dartx.pointerType = Symbol("dartx.pointerType");
  const $pressure = dartx.pressure = Symbol("dartx.pressure");
  const $tangentialPressure = dartx.tangentialPressure = Symbol("dartx.tangentialPressure");
  const $tiltX = dartx.tiltX = Symbol("dartx.tiltX");
  const $tiltY = dartx.tiltY = Symbol("dartx.tiltY");
  const $twist = dartx.twist = Symbol("dartx.twist");
  const $getCoalescedEvents = dartx.getCoalescedEvents = Symbol("dartx.getCoalescedEvents");
  const $defaultRequest = dartx.defaultRequest = Symbol("dartx.defaultRequest");
  const $receiver = dartx.receiver = Symbol("dartx.receiver");
  const $binaryType = dartx.binaryType = Symbol("dartx.binaryType");
  const $terminate = dartx.terminate = Symbol("dartx.terminate");
  const $connections = dartx.connections = Symbol("dartx.connections");
  const $connectionList = dartx.connectionList = Symbol("dartx.connectionList");
  const $getAvailability = dartx.getAvailability = Symbol("dartx.getAvailability");
  const $reconnect = dartx.reconnect = Symbol("dartx.reconnect");
  const $lengthComputable = dartx.lengthComputable = Symbol("dartx.lengthComputable");
  const $promise = dartx.promise = Symbol("dartx.promise");
  const $rawId = dartx.rawId = Symbol("dartx.rawId");
  const $getSubscription = dartx.getSubscription = Symbol("dartx.getSubscription");
  const $permissionState = dartx.permissionState = Symbol("dartx.permissionState");
  const $subscribe = dartx.subscribe = Symbol("dartx.subscribe");
  const $endpoint = dartx.endpoint = Symbol("dartx.endpoint");
  const $expirationTime = dartx.expirationTime = Symbol("dartx.expirationTime");
  const $unsubscribe = dartx.unsubscribe = Symbol("dartx.unsubscribe");
  const $applicationServerKey = dartx.applicationServerKey = Symbol("dartx.applicationServerKey");
  const $userVisibleOnly = dartx.userVisibleOnly = Symbol("dartx.userVisibleOnly");
  const $collapsed = dartx.collapsed = Symbol("dartx.collapsed");
  const $commonAncestorContainer = dartx.commonAncestorContainer = Symbol("dartx.commonAncestorContainer");
  const $endContainer = dartx.endContainer = Symbol("dartx.endContainer");
  const $endOffset = dartx.endOffset = Symbol("dartx.endOffset");
  const $startContainer = dartx.startContainer = Symbol("dartx.startContainer");
  const $startOffset = dartx.startOffset = Symbol("dartx.startOffset");
  const $cloneContents = dartx.cloneContents = Symbol("dartx.cloneContents");
  const $cloneRange = dartx.cloneRange = Symbol("dartx.cloneRange");
  const $collapse = dartx.collapse = Symbol("dartx.collapse");
  const $compareBoundaryPoints = dartx.compareBoundaryPoints = Symbol("dartx.compareBoundaryPoints");
  const $comparePoint = dartx.comparePoint = Symbol("dartx.comparePoint");
  const $createContextualFragment = dartx.createContextualFragment = Symbol("dartx.createContextualFragment");
  const $deleteContents = dartx.deleteContents = Symbol("dartx.deleteContents");
  const $extractContents = dartx.extractContents = Symbol("dartx.extractContents");
  const $insertNode = dartx.insertNode = Symbol("dartx.insertNode");
  const $isPointInRange = dartx.isPointInRange = Symbol("dartx.isPointInRange");
  const $selectNode = dartx.selectNode = Symbol("dartx.selectNode");
  const $selectNodeContents = dartx.selectNodeContents = Symbol("dartx.selectNodeContents");
  const $setEnd = dartx.setEnd = Symbol("dartx.setEnd");
  const $setEndAfter = dartx.setEndAfter = Symbol("dartx.setEndAfter");
  const $setEndBefore = dartx.setEndBefore = Symbol("dartx.setEndBefore");
  const $setStart = dartx.setStart = Symbol("dartx.setStart");
  const $setStartAfter = dartx.setStartAfter = Symbol("dartx.setStartAfter");
  const $setStartBefore = dartx.setStartBefore = Symbol("dartx.setStartBefore");
  const $surroundContents = dartx.surroundContents = Symbol("dartx.surroundContents");
  const $cancelWatchAvailability = dartx.cancelWatchAvailability = Symbol("dartx.cancelWatchAvailability");
  const $watchAvailability = dartx.watchAvailability = Symbol("dartx.watchAvailability");
  const $contentRect = dartx.contentRect = Symbol("dartx.contentRect");
  const $expires = dartx.expires = Symbol("dartx.expires");
  const $getFingerprints = dartx.getFingerprints = Symbol("dartx.getFingerprints");
  const $bufferedAmount = dartx.bufferedAmount = Symbol("dartx.bufferedAmount");
  const $bufferedAmountLowThreshold = dartx.bufferedAmountLowThreshold = Symbol("dartx.bufferedAmountLowThreshold");
  const $maxRetransmitTime = dartx.maxRetransmitTime = Symbol("dartx.maxRetransmitTime");
  const $maxRetransmits = dartx.maxRetransmits = Symbol("dartx.maxRetransmits");
  const $negotiated = dartx.negotiated = Symbol("dartx.negotiated");
  const $ordered = dartx.ordered = Symbol("dartx.ordered");
  const $reliable = dartx.reliable = Symbol("dartx.reliable");
  const $sendBlob = dartx.sendBlob = Symbol("dartx.sendBlob");
  const $sendByteBuffer = dartx.sendByteBuffer = Symbol("dartx.sendByteBuffer");
  const $sendString = dartx.sendString = Symbol("dartx.sendString");
  const $sendTypedData = dartx.sendTypedData = Symbol("dartx.sendTypedData");
  const $channel = dartx.channel = Symbol("dartx.channel");
  const $canInsertDtmf = dartx.canInsertDtmf = Symbol("dartx.canInsertDtmf");
  const $interToneGap = dartx.interToneGap = Symbol("dartx.interToneGap");
  const $toneBuffer = dartx.toneBuffer = Symbol("dartx.toneBuffer");
  const $insertDtmf = dartx.insertDtmf = Symbol("dartx.insertDtmf");
  const $onToneChange = dartx.onToneChange = Symbol("dartx.onToneChange");
  const $tone = dartx.tone = Symbol("dartx.tone");
  const $candidate = dartx.candidate = Symbol("dartx.candidate");
  const $sdpMLineIndex = dartx.sdpMLineIndex = Symbol("dartx.sdpMLineIndex");
  const $sdpMid = dartx.sdpMid = Symbol("dartx.sdpMid");
  const $names = dartx.names = Symbol("dartx.names");
  const $stat = dartx.stat = Symbol("dartx.stat");
  const $getLegacyStats = dartx.getLegacyStats = Symbol("dartx.getLegacyStats");
  const $iceConnectionState = dartx.iceConnectionState = Symbol("dartx.iceConnectionState");
  const $iceGatheringState = dartx.iceGatheringState = Symbol("dartx.iceGatheringState");
  const $localDescription = dartx.localDescription = Symbol("dartx.localDescription");
  const $remoteDescription = dartx.remoteDescription = Symbol("dartx.remoteDescription");
  const $signalingState = dartx.signalingState = Symbol("dartx.signalingState");
  const $addIceCandidate = dartx.addIceCandidate = Symbol("dartx.addIceCandidate");
  const $addStream = dartx.addStream = Symbol("dartx.addStream");
  const $createAnswer = dartx.createAnswer = Symbol("dartx.createAnswer");
  const $createDtmfSender = dartx.createDtmfSender = Symbol("dartx.createDtmfSender");
  const $createDataChannel = dartx.createDataChannel = Symbol("dartx.createDataChannel");
  const $createOffer = dartx.createOffer = Symbol("dartx.createOffer");
  const $getLocalStreams = dartx.getLocalStreams = Symbol("dartx.getLocalStreams");
  const $getReceivers = dartx.getReceivers = Symbol("dartx.getReceivers");
  const $getRemoteStreams = dartx.getRemoteStreams = Symbol("dartx.getRemoteStreams");
  const $getSenders = dartx.getSenders = Symbol("dartx.getSenders");
  const $getStats = dartx.getStats = Symbol("dartx.getStats");
  const $removeStream = dartx.removeStream = Symbol("dartx.removeStream");
  const $setConfiguration = dartx.setConfiguration = Symbol("dartx.setConfiguration");
  const $setLocalDescription = dartx.setLocalDescription = Symbol("dartx.setLocalDescription");
  const $setRemoteDescription = dartx.setRemoteDescription = Symbol("dartx.setRemoteDescription");
  const $onAddStream = dartx.onAddStream = Symbol("dartx.onAddStream");
  const $onDataChannel = dartx.onDataChannel = Symbol("dartx.onDataChannel");
  const $onIceCandidate = dartx.onIceCandidate = Symbol("dartx.onIceCandidate");
  const $onIceConnectionStateChange = dartx.onIceConnectionStateChange = Symbol("dartx.onIceConnectionStateChange");
  const $onNegotiationNeeded = dartx.onNegotiationNeeded = Symbol("dartx.onNegotiationNeeded");
  const $onRemoveStream = dartx.onRemoveStream = Symbol("dartx.onRemoveStream");
  const $onSignalingStateChange = dartx.onSignalingStateChange = Symbol("dartx.onSignalingStateChange");
  const $getContributingSources = dartx.getContributingSources = Symbol("dartx.getContributingSources");
  const $sdp = dartx.sdp = Symbol("dartx.sdp");
  const $streams = dartx.streams = Symbol("dartx.streams");
  const $available = dartx.available = Symbol("dartx.available");
  const $colorDepth = dartx.colorDepth = Symbol("dartx.colorDepth");
  const $keepAwake = dartx.keepAwake = Symbol("dartx.keepAwake");
  const $pixelDepth = dartx.pixelDepth = Symbol("dartx.pixelDepth");
  const $lock = dartx.lock = Symbol("dartx.lock");
  const $unlock = dartx.unlock = Symbol("dartx.unlock");
  const $charset = dartx.charset = Symbol("dartx.charset");
  const $defer = dartx.defer = Symbol("dartx.defer");
  const $noModule = dartx.noModule = Symbol("dartx.noModule");
  const $deltaGranularity = dartx.deltaGranularity = Symbol("dartx.deltaGranularity");
  const $deltaX = dartx.deltaX = Symbol("dartx.deltaX");
  const $deltaY = dartx.deltaY = Symbol("dartx.deltaY");
  const $fromUserInput = dartx.fromUserInput = Symbol("dartx.fromUserInput");
  const $inInertialPhase = dartx.inInertialPhase = Symbol("dartx.inInertialPhase");
  const $isBeginning = dartx.isBeginning = Symbol("dartx.isBeginning");
  const $isDirectManipulation = dartx.isDirectManipulation = Symbol("dartx.isDirectManipulation");
  const $isEnding = dartx.isEnding = Symbol("dartx.isEnding");
  const $positionX = dartx.positionX = Symbol("dartx.positionX");
  const $positionY = dartx.positionY = Symbol("dartx.positionY");
  const $velocityX = dartx.velocityX = Symbol("dartx.velocityX");
  const $velocityY = dartx.velocityY = Symbol("dartx.velocityY");
  const $consumeDelta = dartx.consumeDelta = Symbol("dartx.consumeDelta");
  const $distributeToScrollChainDescendant = dartx.distributeToScrollChainDescendant = Symbol("dartx.distributeToScrollChainDescendant");
  const $scrollSource = dartx.scrollSource = Symbol("dartx.scrollSource");
  const $timeRange = dartx.timeRange = Symbol("dartx.timeRange");
  const $blockedUri = dartx.blockedUri = Symbol("dartx.blockedUri");
  const $columnNumber = dartx.columnNumber = Symbol("dartx.columnNumber");
  const $disposition = dartx.disposition = Symbol("dartx.disposition");
  const $documentUri = dartx.documentUri = Symbol("dartx.documentUri");
  const $effectiveDirective = dartx.effectiveDirective = Symbol("dartx.effectiveDirective");
  const $originalPolicy = dartx.originalPolicy = Symbol("dartx.originalPolicy");
  const $sample = dartx.sample = Symbol("dartx.sample");
  const $statusCode = dartx.statusCode = Symbol("dartx.statusCode");
  const $violatedDirective = dartx.violatedDirective = Symbol("dartx.violatedDirective");
  const $selectedIndex = dartx.selectedIndex = Symbol("dartx.selectedIndex");
  const $selectedOptions = dartx.selectedOptions = Symbol("dartx.selectedOptions");
  const $anchorNode = dartx.anchorNode = Symbol("dartx.anchorNode");
  const $anchorOffset = dartx.anchorOffset = Symbol("dartx.anchorOffset");
  const $baseNode = dartx.baseNode = Symbol("dartx.baseNode");
  const $baseOffset = dartx.baseOffset = Symbol("dartx.baseOffset");
  const $extentNode = dartx.extentNode = Symbol("dartx.extentNode");
  const $extentOffset = dartx.extentOffset = Symbol("dartx.extentOffset");
  const $focusNode = dartx.focusNode = Symbol("dartx.focusNode");
  const $focusOffset = dartx.focusOffset = Symbol("dartx.focusOffset");
  const $isCollapsed = dartx.isCollapsed = Symbol("dartx.isCollapsed");
  const $rangeCount = dartx.rangeCount = Symbol("dartx.rangeCount");
  const $addRange = dartx.addRange = Symbol("dartx.addRange");
  const $collapseToEnd = dartx.collapseToEnd = Symbol("dartx.collapseToEnd");
  const $collapseToStart = dartx.collapseToStart = Symbol("dartx.collapseToStart");
  const $containsNode = dartx.containsNode = Symbol("dartx.containsNode");
  const $deleteFromDocument = dartx.deleteFromDocument = Symbol("dartx.deleteFromDocument");
  const $empty = dartx.empty = Symbol("dartx.empty");
  const $extend = dartx.extend = Symbol("dartx.extend");
  const $getRangeAt = dartx.getRangeAt = Symbol("dartx.getRangeAt");
  const $modify = dartx.modify = Symbol("dartx.modify");
  const $removeAllRanges = dartx.removeAllRanges = Symbol("dartx.removeAllRanges");
  const $selectAllChildren = dartx.selectAllChildren = Symbol("dartx.selectAllChildren");
  const $setBaseAndExtent = dartx.setBaseAndExtent = Symbol("dartx.setBaseAndExtent");
  const $setPosition = dartx.setPosition = Symbol("dartx.setPosition");
  const $scriptUrl = dartx.scriptUrl = Symbol("dartx.scriptUrl");
  const $controller = dartx.controller = Symbol("dartx.controller");
  const $getRegistration = dartx.getRegistration = Symbol("dartx.getRegistration");
  const $getRegistrations = dartx.getRegistrations = Symbol("dartx.getRegistrations");
  const $clients = dartx.clients = Symbol("dartx.clients");
  const $registration = dartx.registration = Symbol("dartx.registration");
  const $skipWaiting = dartx.skipWaiting = Symbol("dartx.skipWaiting");
  const $onActivate = dartx.onActivate = Symbol("dartx.onActivate");
  const $onFetch = dartx.onFetch = Symbol("dartx.onFetch");
  const $onForeignfetch = dartx.onForeignfetch = Symbol("dartx.onForeignfetch");
  const $onInstall = dartx.onInstall = Symbol("dartx.onInstall");
  const $backgroundFetch = dartx.backgroundFetch = Symbol("dartx.backgroundFetch");
  const $installing = dartx.installing = Symbol("dartx.installing");
  const $navigationPreload = dartx.navigationPreload = Symbol("dartx.navigationPreload");
  const $paymentManager = dartx.paymentManager = Symbol("dartx.paymentManager");
  const $pushManager = dartx.pushManager = Symbol("dartx.pushManager");
  const $sync = dartx.sync = Symbol("dartx.sync");
  const $waiting = dartx.waiting = Symbol("dartx.waiting");
  const $getNotifications = dartx.getNotifications = Symbol("dartx.getNotifications");
  const $showNotification = dartx.showNotification = Symbol("dartx.showNotification");
  const $unregister = dartx.unregister = Symbol("dartx.unregister");
  const $delegatesFocus = dartx.delegatesFocus = Symbol("dartx.delegatesFocus");
  const $olderShadowRoot = dartx.olderShadowRoot = Symbol("dartx.olderShadowRoot");
  const $resetStyleInheritance = dartx.resetStyleInheritance = Symbol("dartx.resetStyleInheritance");
  const $applyAuthorStyles = dartx.applyAuthorStyles = Symbol("dartx.applyAuthorStyles");
  const $byteLength = dartx.byteLength = Symbol("dartx.byteLength");
  const $onConnect = dartx.onConnect = Symbol("dartx.onConnect");
  const $assignedNodes = dartx.assignedNodes = Symbol("dartx.assignedNodes");
  const $appendWindowEnd = dartx.appendWindowEnd = Symbol("dartx.appendWindowEnd");
  const $appendWindowStart = dartx.appendWindowStart = Symbol("dartx.appendWindowStart");
  const $timestampOffset = dartx.timestampOffset = Symbol("dartx.timestampOffset");
  const $trackDefaults = dartx.trackDefaults = Symbol("dartx.trackDefaults");
  const $updating = dartx.updating = Symbol("dartx.updating");
  const $appendBuffer = dartx.appendBuffer = Symbol("dartx.appendBuffer");
  const $appendTypedData = dartx.appendTypedData = Symbol("dartx.appendTypedData");
  const $addFromString = dartx.addFromString = Symbol("dartx.addFromString");
  const $addFromUri = dartx.addFromUri = Symbol("dartx.addFromUri");
  const $audioTrack = dartx.audioTrack = Symbol("dartx.audioTrack");
  const $continuous = dartx.continuous = Symbol("dartx.continuous");
  const $grammars = dartx.grammars = Symbol("dartx.grammars");
  const $interimResults = dartx.interimResults = Symbol("dartx.interimResults");
  const $maxAlternatives = dartx.maxAlternatives = Symbol("dartx.maxAlternatives");
  const $onAudioEnd = dartx.onAudioEnd = Symbol("dartx.onAudioEnd");
  const $onAudioStart = dartx.onAudioStart = Symbol("dartx.onAudioStart");
  const $onEnd = dartx.onEnd = Symbol("dartx.onEnd");
  const $onNoMatch = dartx.onNoMatch = Symbol("dartx.onNoMatch");
  const $onResult = dartx.onResult = Symbol("dartx.onResult");
  const $onSoundEnd = dartx.onSoundEnd = Symbol("dartx.onSoundEnd");
  const $onSoundStart = dartx.onSoundStart = Symbol("dartx.onSoundStart");
  const $onSpeechEnd = dartx.onSpeechEnd = Symbol("dartx.onSpeechEnd");
  const $onSpeechStart = dartx.onSpeechStart = Symbol("dartx.onSpeechStart");
  const $onStart = dartx.onStart = Symbol("dartx.onStart");
  const $confidence = dartx.confidence = Symbol("dartx.confidence");
  const $transcript = dartx.transcript = Symbol("dartx.transcript");
  const $emma = dartx.emma = Symbol("dartx.emma");
  const $interpretation = dartx.interpretation = Symbol("dartx.interpretation");
  const $resultIndex = dartx.resultIndex = Symbol("dartx.resultIndex");
  const $results = dartx.results = Symbol("dartx.results");
  const $isFinal = dartx.isFinal = Symbol("dartx.isFinal");
  const $getVoices = dartx.getVoices = Symbol("dartx.getVoices");
  const $pending = dartx.pending = Symbol("dartx.pending");
  const $speaking = dartx.speaking = Symbol("dartx.speaking");
  const $charIndex = dartx.charIndex = Symbol("dartx.charIndex");
  const $utterance = dartx.utterance = Symbol("dartx.utterance");
  const $pitch = dartx.pitch = Symbol("dartx.pitch");
  const $rate = dartx.rate = Symbol("dartx.rate");
  const $voice = dartx.voice = Symbol("dartx.voice");
  const $onBoundary = dartx.onBoundary = Symbol("dartx.onBoundary");
  const $onMark = dartx.onMark = Symbol("dartx.onMark");
  const $onResume = dartx.onResume = Symbol("dartx.onResume");
  const $localService = dartx.localService = Symbol("dartx.localService");
  const $voiceUri = dartx.voiceUri = Symbol("dartx.voiceUri");
  const $storageArea = dartx.storageArea = Symbol("dartx.storageArea");
  const $estimate = dartx.estimate = Symbol("dartx.estimate");
  const $persist = dartx.persist = Symbol("dartx.persist");
  const $matchMedium = dartx.matchMedium = Symbol("dartx.matchMedium");
  const $getProperties = dartx.getProperties = Symbol("dartx.getProperties");
  const $lastChance = dartx.lastChance = Symbol("dartx.lastChance");
  const $getTags = dartx.getTags = Symbol("dartx.getTags");
  const $cellIndex = dartx.cellIndex = Symbol("dartx.cellIndex");
  const $headers = dartx.headers = Symbol("dartx.headers");
  const $span = dartx.span = Symbol("dartx.span");
  const $tBodies = dartx.tBodies = Symbol("dartx.tBodies");
  const $rows = dartx.rows = Symbol("dartx.rows");
  const $insertRow = dartx.insertRow = Symbol("dartx.insertRow");
  const $addRow = dartx.addRow = Symbol("dartx.addRow");
  const $createCaption = dartx.createCaption = Symbol("dartx.createCaption");
  const $createTBody = dartx.createTBody = Symbol("dartx.createTBody");
  const $createTFoot = dartx.createTFoot = Symbol("dartx.createTFoot");
  const $createTHead = dartx.createTHead = Symbol("dartx.createTHead");
  const $caption = dartx.caption = Symbol("dartx.caption");
  const $tFoot = dartx.tFoot = Symbol("dartx.tFoot");
  const $tHead = dartx.tHead = Symbol("dartx.tHead");
  const $deleteCaption = dartx.deleteCaption = Symbol("dartx.deleteCaption");
  const $deleteRow = dartx.deleteRow = Symbol("dartx.deleteRow");
  const $deleteTFoot = dartx.deleteTFoot = Symbol("dartx.deleteTFoot");
  const $deleteTHead = dartx.deleteTHead = Symbol("dartx.deleteTHead");
  const $cells = dartx.cells = Symbol("dartx.cells");
  const $insertCell = dartx.insertCell = Symbol("dartx.insertCell");
  const $addCell = dartx.addCell = Symbol("dartx.addCell");
  const $sectionRowIndex = dartx.sectionRowIndex = Symbol("dartx.sectionRowIndex");
  const $deleteCell = dartx.deleteCell = Symbol("dartx.deleteCell");
  const $containerId = dartx.containerId = Symbol("dartx.containerId");
  const $containerName = dartx.containerName = Symbol("dartx.containerName");
  const $containerSrc = dartx.containerSrc = Symbol("dartx.containerSrc");
  const $containerType = dartx.containerType = Symbol("dartx.containerType");
  const $cols = dartx.cols = Symbol("dartx.cols");
  const $textLength = dartx.textLength = Symbol("dartx.textLength");
  const $wrap = dartx.wrap = Symbol("dartx.wrap");
  const $actualBoundingBoxAscent = dartx.actualBoundingBoxAscent = Symbol("dartx.actualBoundingBoxAscent");
  const $actualBoundingBoxDescent = dartx.actualBoundingBoxDescent = Symbol("dartx.actualBoundingBoxDescent");
  const $actualBoundingBoxLeft = dartx.actualBoundingBoxLeft = Symbol("dartx.actualBoundingBoxLeft");
  const $actualBoundingBoxRight = dartx.actualBoundingBoxRight = Symbol("dartx.actualBoundingBoxRight");
  const $alphabeticBaseline = dartx.alphabeticBaseline = Symbol("dartx.alphabeticBaseline");
  const $emHeightAscent = dartx.emHeightAscent = Symbol("dartx.emHeightAscent");
  const $emHeightDescent = dartx.emHeightDescent = Symbol("dartx.emHeightDescent");
  const $fontBoundingBoxAscent = dartx.fontBoundingBoxAscent = Symbol("dartx.fontBoundingBoxAscent");
  const $fontBoundingBoxDescent = dartx.fontBoundingBoxDescent = Symbol("dartx.fontBoundingBoxDescent");
  const $hangingBaseline = dartx.hangingBaseline = Symbol("dartx.hangingBaseline");
  const $ideographicBaseline = dartx.ideographicBaseline = Symbol("dartx.ideographicBaseline");
  const $activeCues = dartx.activeCues = Symbol("dartx.activeCues");
  const $cues = dartx.cues = Symbol("dartx.cues");
  const $addCue = dartx.addCue = Symbol("dartx.addCue");
  const $removeCue = dartx.removeCue = Symbol("dartx.removeCue");
  const $onCueChange = dartx.onCueChange = Symbol("dartx.onCueChange");
  const $endTime = dartx.endTime = Symbol("dartx.endTime");
  const $pauseOnExit = dartx.pauseOnExit = Symbol("dartx.pauseOnExit");
  const $onEnter = dartx.onEnter = Symbol("dartx.onEnter");
  const $onExit = dartx.onExit = Symbol("dartx.onExit");
  const $getCueById = dartx.getCueById = Symbol("dartx.getCueById");
  const $end = dartx.end = Symbol("dartx.end");
  const $force = dartx.force = Symbol("dartx.force");
  const $identifier = dartx.identifier = Symbol("dartx.identifier");
  const $rotationAngle = dartx.rotationAngle = Symbol("dartx.rotationAngle");
  const $radiusX = dartx.radiusX = Symbol("dartx.radiusX");
  const $radiusY = dartx.radiusY = Symbol("dartx.radiusY");
  const $changedTouches = dartx.changedTouches = Symbol("dartx.changedTouches");
  const $targetTouches = dartx.targetTouches = Symbol("dartx.targetTouches");
  const $touches = dartx.touches = Symbol("dartx.touches");
  const $byteStreamTrackID = dartx.byteStreamTrackID = Symbol("dartx.byteStreamTrackID");
  const $kinds = dartx.kinds = Symbol("dartx.kinds");
  const $srclang = dartx.srclang = Symbol("dartx.srclang");
  const $propertyName = dartx.propertyName = Symbol("dartx.propertyName");
  const $pseudoElement = dartx.pseudoElement = Symbol("dartx.pseudoElement");
  const $currentNode = dartx.currentNode = Symbol("dartx.currentNode");
  const $notifyLockAcquired = dartx.notifyLockAcquired = Symbol("dartx.notifyLockAcquired");
  const $notifyLockReleased = dartx.notifyLockReleased = Symbol("dartx.notifyLockReleased");
  const $pull = dartx.pull = Symbol("dartx.pull");
  const $searchParams = dartx.searchParams = Symbol("dartx.searchParams");
  const $getDevices = dartx.getDevices = Symbol("dartx.getDevices");
  const $getTransformTo = dartx.getTransformTo = Symbol("dartx.getTransformTo");
  const $deviceName = dartx.deviceName = Symbol("dartx.deviceName");
  const $isExternal = dartx.isExternal = Symbol("dartx.isExternal");
  const $requestSession = dartx.requestSession = Symbol("dartx.requestSession");
  const $supportsSession = dartx.supportsSession = Symbol("dartx.supportsSession");
  const $device = dartx.device = Symbol("dartx.device");
  const $capabilities = dartx.capabilities = Symbol("dartx.capabilities");
  const $depthFar = dartx.depthFar = Symbol("dartx.depthFar");
  const $depthNear = dartx.depthNear = Symbol("dartx.depthNear");
  const $displayName = dartx.displayName = Symbol("dartx.displayName");
  const $isPresenting = dartx.isPresenting = Symbol("dartx.isPresenting");
  const $stageParameters = dartx.stageParameters = Symbol("dartx.stageParameters");
  const $cancelAnimationFrame = dartx.cancelAnimationFrame = Symbol("dartx.cancelAnimationFrame");
  const $exitPresent = dartx.exitPresent = Symbol("dartx.exitPresent");
  const $getEyeParameters = dartx.getEyeParameters = Symbol("dartx.getEyeParameters");
  const $getFrameData = dartx.getFrameData = Symbol("dartx.getFrameData");
  const $getLayers = dartx.getLayers = Symbol("dartx.getLayers");
  const $requestAnimationFrame = dartx.requestAnimationFrame = Symbol("dartx.requestAnimationFrame");
  const $requestPresent = dartx.requestPresent = Symbol("dartx.requestPresent");
  const $submitFrame = dartx.submitFrame = Symbol("dartx.submitFrame");
  const $canPresent = dartx.canPresent = Symbol("dartx.canPresent");
  const $hasExternalDisplay = dartx.hasExternalDisplay = Symbol("dartx.hasExternalDisplay");
  const $maxLayers = dartx.maxLayers = Symbol("dartx.maxLayers");
  const $renderHeight = dartx.renderHeight = Symbol("dartx.renderHeight");
  const $renderWidth = dartx.renderWidth = Symbol("dartx.renderWidth");
  const $leftProjectionMatrix = dartx.leftProjectionMatrix = Symbol("dartx.leftProjectionMatrix");
  const $leftViewMatrix = dartx.leftViewMatrix = Symbol("dartx.leftViewMatrix");
  const $rightProjectionMatrix = dartx.rightProjectionMatrix = Symbol("dartx.rightProjectionMatrix");
  const $rightViewMatrix = dartx.rightViewMatrix = Symbol("dartx.rightViewMatrix");
  const $bounds = dartx.bounds = Symbol("dartx.bounds");
  const $emulatedHeight = dartx.emulatedHeight = Symbol("dartx.emulatedHeight");
  const $exclusive = dartx.exclusive = Symbol("dartx.exclusive");
  const $requestFrameOfReference = dartx.requestFrameOfReference = Symbol("dartx.requestFrameOfReference");
  const $session = dartx.session = Symbol("dartx.session");
  const $geometry = dartx.geometry = Symbol("dartx.geometry");
  const $sittingToStandingTransform = dartx.sittingToStandingTransform = Symbol("dartx.sittingToStandingTransform");
  const $sizeX = dartx.sizeX = Symbol("dartx.sizeX");
  const $sizeZ = dartx.sizeZ = Symbol("dartx.sizeZ");
  const $badInput = dartx.badInput = Symbol("dartx.badInput");
  const $customError = dartx.customError = Symbol("dartx.customError");
  const $patternMismatch = dartx.patternMismatch = Symbol("dartx.patternMismatch");
  const $rangeOverflow = dartx.rangeOverflow = Symbol("dartx.rangeOverflow");
  const $rangeUnderflow = dartx.rangeUnderflow = Symbol("dartx.rangeUnderflow");
  const $stepMismatch = dartx.stepMismatch = Symbol("dartx.stepMismatch");
  const $tooLong = dartx.tooLong = Symbol("dartx.tooLong");
  const $tooShort = dartx.tooShort = Symbol("dartx.tooShort");
  const $typeMismatch = dartx.typeMismatch = Symbol("dartx.typeMismatch");
  const $valid = dartx.valid = Symbol("dartx.valid");
  const $valueMissing = dartx.valueMissing = Symbol("dartx.valueMissing");
  const $poster = dartx.poster = Symbol("dartx.poster");
  const $videoHeight = dartx.videoHeight = Symbol("dartx.videoHeight");
  const $videoWidth = dartx.videoWidth = Symbol("dartx.videoWidth");
  const $decodedFrameCount = dartx.decodedFrameCount = Symbol("dartx.decodedFrameCount");
  const $droppedFrameCount = dartx.droppedFrameCount = Symbol("dartx.droppedFrameCount");
  const $getVideoPlaybackQuality = dartx.getVideoPlaybackQuality = Symbol("dartx.getVideoPlaybackQuality");
  const $enterFullscreen = dartx.enterFullscreen = Symbol("dartx.enterFullscreen");
  const $corruptedVideoFrames = dartx.corruptedVideoFrames = Symbol("dartx.corruptedVideoFrames");
  const $creationTime = dartx.creationTime = Symbol("dartx.creationTime");
  const $droppedVideoFrames = dartx.droppedVideoFrames = Symbol("dartx.droppedVideoFrames");
  const $totalVideoFrames = dartx.totalVideoFrames = Symbol("dartx.totalVideoFrames");
  const $sourceBuffer = dartx.sourceBuffer = Symbol("dartx.sourceBuffer");
  const $pageLeft = dartx.pageLeft = Symbol("dartx.pageLeft");
  const $pageTop = dartx.pageTop = Symbol("dartx.pageTop");
  const $align = dartx.align = Symbol("dartx.align");
  const $line = dartx.line = Symbol("dartx.line");
  const $snapToLines = dartx.snapToLines = Symbol("dartx.snapToLines");
  const $vertical = dartx.vertical = Symbol("dartx.vertical");
  const $getCueAsHtml = dartx.getCueAsHtml = Symbol("dartx.getCueAsHtml");
  const $lines = dartx.lines = Symbol("dartx.lines");
  const $regionAnchorX = dartx.regionAnchorX = Symbol("dartx.regionAnchorX");
  const $regionAnchorY = dartx.regionAnchorY = Symbol("dartx.regionAnchorY");
  const $viewportAnchorX = dartx.viewportAnchorX = Symbol("dartx.viewportAnchorX");
  const $viewportAnchorY = dartx.viewportAnchorY = Symbol("dartx.viewportAnchorY");
  const $extensions = dartx.extensions = Symbol("dartx.extensions");
  const $deltaZ = dartx.deltaZ = Symbol("dartx.deltaZ");
  const $deltaMode = dartx.deltaMode = Symbol("dartx.deltaMode");
  const $animationFrame = dartx.animationFrame = Symbol("dartx.animationFrame");
  const $document = dartx.document = Symbol("dartx.document");
  const $requestFileSystem = dartx.requestFileSystem = Symbol("dartx.requestFileSystem");
  const $animationWorklet = dartx.animationWorklet = Symbol("dartx.animationWorklet");
  const $applicationCache = dartx.applicationCache = Symbol("dartx.applicationCache");
  const $audioWorklet = dartx.audioWorklet = Symbol("dartx.audioWorklet");
  const $cookieStore = dartx.cookieStore = Symbol("dartx.cookieStore");
  const $customElements = dartx.customElements = Symbol("dartx.customElements");
  const $defaultStatus = dartx.defaultStatus = Symbol("dartx.defaultStatus");
  const $defaultstatus = dartx.defaultstatus = Symbol("dartx.defaultstatus");
  const $external = dartx.external = Symbol("dartx.external");
  const $history = dartx.history = Symbol("dartx.history");
  const $innerHeight = dartx.innerHeight = Symbol("dartx.innerHeight");
  const $innerWidth = dartx.innerWidth = Symbol("dartx.innerWidth");
  const $localStorage = dartx.localStorage = Symbol("dartx.localStorage");
  const $locationbar = dartx.locationbar = Symbol("dartx.locationbar");
  const $menubar = dartx.menubar = Symbol("dartx.menubar");
  const $offscreenBuffering = dartx.offscreenBuffering = Symbol("dartx.offscreenBuffering");
  const $opener = dartx.opener = Symbol("dartx.opener");
  const $outerHeight = dartx.outerHeight = Symbol("dartx.outerHeight");
  const $outerWidth = dartx.outerWidth = Symbol("dartx.outerWidth");
  const $screenLeft = dartx.screenLeft = Symbol("dartx.screenLeft");
  const $screenTop = dartx.screenTop = Symbol("dartx.screenTop");
  const $screenX = dartx.screenX = Symbol("dartx.screenX");
  const $screenY = dartx.screenY = Symbol("dartx.screenY");
  const $scrollbars = dartx.scrollbars = Symbol("dartx.scrollbars");
  const $sessionStorage = dartx.sessionStorage = Symbol("dartx.sessionStorage");
  const $speechSynthesis = dartx.speechSynthesis = Symbol("dartx.speechSynthesis");
  const $statusbar = dartx.statusbar = Symbol("dartx.statusbar");
  const $styleMedia = dartx.styleMedia = Symbol("dartx.styleMedia");
  const $toolbar = dartx.toolbar = Symbol("dartx.toolbar");
  const $visualViewport = dartx.visualViewport = Symbol("dartx.visualViewport");
  const $alert = dartx.alert = Symbol("dartx.alert");
  const $cancelIdleCallback = dartx.cancelIdleCallback = Symbol("dartx.cancelIdleCallback");
  const $confirm = dartx.confirm = Symbol("dartx.confirm");
  const $find = dartx.find = Symbol("dartx.find");
  const $getComputedStyleMap = dartx.getComputedStyleMap = Symbol("dartx.getComputedStyleMap");
  const $getMatchedCssRules = dartx.getMatchedCssRules = Symbol("dartx.getMatchedCssRules");
  const $matchMedia = dartx.matchMedia = Symbol("dartx.matchMedia");
  const $moveBy = dartx.moveBy = Symbol("dartx.moveBy");
  const $print = dartx.print = Symbol("dartx.print");
  const $requestIdleCallback = dartx.requestIdleCallback = Symbol("dartx.requestIdleCallback");
  const $resizeBy = dartx.resizeBy = Symbol("dartx.resizeBy");
  const $resizeTo = dartx.resizeTo = Symbol("dartx.resizeTo");
  const $resolveLocalFileSystemUrl = dartx.resolveLocalFileSystemUrl = Symbol("dartx.resolveLocalFileSystemUrl");
  const $onContentLoaded = dartx.onContentLoaded = Symbol("dartx.onContentLoaded");
  const $onDeviceMotion = dartx.onDeviceMotion = Symbol("dartx.onDeviceMotion");
  const $onDeviceOrientation = dartx.onDeviceOrientation = Symbol("dartx.onDeviceOrientation");
  const $onPageHide = dartx.onPageHide = Symbol("dartx.onPageHide");
  const $onPageShow = dartx.onPageShow = Symbol("dartx.onPageShow");
  const $onAnimationEnd = dartx.onAnimationEnd = Symbol("dartx.onAnimationEnd");
  const $onAnimationIteration = dartx.onAnimationIteration = Symbol("dartx.onAnimationIteration");
  const $onAnimationStart = dartx.onAnimationStart = Symbol("dartx.onAnimationStart");
  const $onBeforeUnload = dartx.onBeforeUnload = Symbol("dartx.onBeforeUnload");
  const $openDatabase = dartx.openDatabase = Symbol("dartx.openDatabase");
  const $pageXOffset = dartx.pageXOffset = Symbol("dartx.pageXOffset");
  const $pageYOffset = dartx.pageYOffset = Symbol("dartx.pageYOffset");
  const $scrollX = dartx.scrollX = Symbol("dartx.scrollX");
  const $scrollY = dartx.scrollY = Symbol("dartx.scrollY");
  const $focused = dartx.focused = Symbol("dartx.focused");
  const $navigate = dartx.navigate = Symbol("dartx.navigate");
  const $createExpression = dartx.createExpression = Symbol("dartx.createExpression");
  const $createNSResolver = dartx.createNSResolver = Symbol("dartx.createNSResolver");
  const $evaluate = dartx.evaluate = Symbol("dartx.evaluate");
  const $lookupNamespaceUri = dartx.lookupNamespaceUri = Symbol("dartx.lookupNamespaceUri");
  const $booleanValue = dartx.booleanValue = Symbol("dartx.booleanValue");
  const $invalidIteratorState = dartx.invalidIteratorState = Symbol("dartx.invalidIteratorState");
  const $numberValue = dartx.numberValue = Symbol("dartx.numberValue");
  const $resultType = dartx.resultType = Symbol("dartx.resultType");
  const $singleNodeValue = dartx.singleNodeValue = Symbol("dartx.singleNodeValue");
  const $snapshotLength = dartx.snapshotLength = Symbol("dartx.snapshotLength");
  const $stringValue = dartx.stringValue = Symbol("dartx.stringValue");
  const $iterateNext = dartx.iterateNext = Symbol("dartx.iterateNext");
  const $snapshotItem = dartx.snapshotItem = Symbol("dartx.snapshotItem");
  const $serializeToString = dartx.serializeToString = Symbol("dartx.serializeToString");
  const $clearParameters = dartx.clearParameters = Symbol("dartx.clearParameters");
  const $getParameter = dartx.getParameter = Symbol("dartx.getParameter");
  const $importStylesheet = dartx.importStylesheet = Symbol("dartx.importStylesheet");
  const $removeParameter = dartx.removeParameter = Symbol("dartx.removeParameter");
  const $setParameter = dartx.setParameter = Symbol("dartx.setParameter");
  const $transformToDocument = dartx.transformToDocument = Symbol("dartx.transformToDocument");
  const $transformToFragment = dartx.transformToFragment = Symbol("dartx.transformToFragment");
  const $getBudget = dartx.getBudget = Symbol("dartx.getBudget");
  const $getCost = dartx.getCost = Symbol("dartx.getCost");
  const $reserve = dartx.reserve = Symbol("dartx.reserve");
  const $read = dartx.read = Symbol("dartx.read");
  const $readText = dartx.readText = Symbol("dartx.readText");
  const $writeText = dartx.writeText = Symbol("dartx.writeText");
  const $getNamedItem = dartx.getNamedItem = Symbol("dartx.getNamedItem");
  const $getNamedItemNS = dartx.getNamedItemNS = Symbol("dartx.getNamedItemNS");
  const $removeNamedItem = dartx.removeNamedItem = Symbol("dartx.removeNamedItem");
  const $removeNamedItemNS = dartx.removeNamedItemNS = Symbol("dartx.removeNamedItemNS");
  const $setNamedItem = dartx.setNamedItem = Symbol("dartx.setNamedItem");
  const $setNamedItemNS = dartx.setNamedItemNS = Symbol("dartx.setNamedItemNS");
  const $cache = dartx.cache = Symbol("dartx.cache");
  const $redirect = dartx.redirect = Symbol("dartx.redirect");
  const $farthestViewportElement = dartx.farthestViewportElement = Symbol("dartx.farthestViewportElement");
  const $nearestViewportElement = dartx.nearestViewportElement = Symbol("dartx.nearestViewportElement");
  const $getBBox = dartx.getBBox = Symbol("dartx.getBBox");
  const $getCtm = dartx.getCtm = Symbol("dartx.getCtm");
  const $getScreenCtm = dartx.getScreenCtm = Symbol("dartx.getScreenCtm");
  const $requiredExtensions = dartx.requiredExtensions = Symbol("dartx.requiredExtensions");
  const $systemLanguage = dartx.systemLanguage = Symbol("dartx.systemLanguage");
  const $ownerSvgElement = dartx.ownerSvgElement = Symbol("dartx.ownerSvgElement");
  const $viewportElement = dartx.viewportElement = Symbol("dartx.viewportElement");
  const $unitType = dartx.unitType = Symbol("dartx.unitType");
  const $valueAsString = dartx.valueAsString = Symbol("dartx.valueAsString");
  const $valueInSpecifiedUnits = dartx.valueInSpecifiedUnits = Symbol("dartx.valueInSpecifiedUnits");
  const $convertToSpecifiedUnits = dartx.convertToSpecifiedUnits = Symbol("dartx.convertToSpecifiedUnits");
  const $newValueSpecifiedUnits = dartx.newValueSpecifiedUnits = Symbol("dartx.newValueSpecifiedUnits");
  const $targetElement = dartx.targetElement = Symbol("dartx.targetElement");
  const $beginElement = dartx.beginElement = Symbol("dartx.beginElement");
  const $beginElementAt = dartx.beginElementAt = Symbol("dartx.beginElementAt");
  const $endElement = dartx.endElement = Symbol("dartx.endElement");
  const $endElementAt = dartx.endElementAt = Symbol("dartx.endElementAt");
  const $getCurrentTime = dartx.getCurrentTime = Symbol("dartx.getCurrentTime");
  const $getSimpleDuration = dartx.getSimpleDuration = Symbol("dartx.getSimpleDuration");
  const $getStartTime = dartx.getStartTime = Symbol("dartx.getStartTime");
  const $animVal = dartx.animVal = Symbol("dartx.animVal");
  const $baseVal = dartx.baseVal = Symbol("dartx.baseVal");
  const $cx = dartx.cx = Symbol("dartx.cx");
  const $cy = dartx.cy = Symbol("dartx.cy");
  const $r = dartx.r = Symbol("dartx.r");
  const $pathLength = dartx.pathLength = Symbol("dartx.pathLength");
  const $getPointAtLength = dartx.getPointAtLength = Symbol("dartx.getPointAtLength");
  const $getTotalLength = dartx.getTotalLength = Symbol("dartx.getTotalLength");
  const $isPointInFill = dartx.isPointInFill = Symbol("dartx.isPointInFill");
  const $clipPathUnits = dartx.clipPathUnits = Symbol("dartx.clipPathUnits");
  const $rx = dartx.rx = Symbol("dartx.rx");
  const $ry = dartx.ry = Symbol("dartx.ry");
  const $in1 = dartx.in1 = Symbol("dartx.in1");
  const $in2 = dartx.in2 = Symbol("dartx.in2");
  const $k1 = dartx.k1 = Symbol("dartx.k1");
  const $k2 = dartx.k2 = Symbol("dartx.k2");
  const $k3 = dartx.k3 = Symbol("dartx.k3");
  const $k4 = dartx.k4 = Symbol("dartx.k4");
  const $operator = dartx.operator = Symbol("dartx.operator");
  const $bias = dartx.bias = Symbol("dartx.bias");
  const $divisor = dartx.divisor = Symbol("dartx.divisor");
  const $edgeMode = dartx.edgeMode = Symbol("dartx.edgeMode");
  const $kernelMatrix = dartx.kernelMatrix = Symbol("dartx.kernelMatrix");
  const $kernelUnitLengthX = dartx.kernelUnitLengthX = Symbol("dartx.kernelUnitLengthX");
  const $kernelUnitLengthY = dartx.kernelUnitLengthY = Symbol("dartx.kernelUnitLengthY");
  const $orderX = dartx.orderX = Symbol("dartx.orderX");
  const $orderY = dartx.orderY = Symbol("dartx.orderY");
  const $preserveAlpha = dartx.preserveAlpha = Symbol("dartx.preserveAlpha");
  const $targetX = dartx.targetX = Symbol("dartx.targetX");
  const $targetY = dartx.targetY = Symbol("dartx.targetY");
  const $diffuseConstant = dartx.diffuseConstant = Symbol("dartx.diffuseConstant");
  const $surfaceScale = dartx.surfaceScale = Symbol("dartx.surfaceScale");
  const $xChannelSelector = dartx.xChannelSelector = Symbol("dartx.xChannelSelector");
  const $yChannelSelector = dartx.yChannelSelector = Symbol("dartx.yChannelSelector");
  const $azimuth = dartx.azimuth = Symbol("dartx.azimuth");
  const $elevation = dartx.elevation = Symbol("dartx.elevation");
  const $stdDeviationX = dartx.stdDeviationX = Symbol("dartx.stdDeviationX");
  const $stdDeviationY = dartx.stdDeviationY = Symbol("dartx.stdDeviationY");
  const $setStdDeviation = dartx.setStdDeviation = Symbol("dartx.setStdDeviation");
  const $preserveAspectRatio = dartx.preserveAspectRatio = Symbol("dartx.preserveAspectRatio");
  const $dx = dartx.dx = Symbol("dartx.dx");
  const $dy = dartx.dy = Symbol("dartx.dy");
  const $specularConstant = dartx.specularConstant = Symbol("dartx.specularConstant");
  const $specularExponent = dartx.specularExponent = Symbol("dartx.specularExponent");
  const $limitingConeAngle = dartx.limitingConeAngle = Symbol("dartx.limitingConeAngle");
  const $pointsAtX = dartx.pointsAtX = Symbol("dartx.pointsAtX");
  const $pointsAtY = dartx.pointsAtY = Symbol("dartx.pointsAtY");
  const $pointsAtZ = dartx.pointsAtZ = Symbol("dartx.pointsAtZ");
  const $baseFrequencyX = dartx.baseFrequencyX = Symbol("dartx.baseFrequencyX");
  const $baseFrequencyY = dartx.baseFrequencyY = Symbol("dartx.baseFrequencyY");
  const $numOctaves = dartx.numOctaves = Symbol("dartx.numOctaves");
  const $seed = dartx.seed = Symbol("dartx.seed");
  const $stitchTiles = dartx.stitchTiles = Symbol("dartx.stitchTiles");
  const $filterUnits = dartx.filterUnits = Symbol("dartx.filterUnits");
  const $primitiveUnits = dartx.primitiveUnits = Symbol("dartx.primitiveUnits");
  const $viewBox = dartx.viewBox = Symbol("dartx.viewBox");
  const $numberOfItems = dartx.numberOfItems = Symbol("dartx.numberOfItems");
  const $appendItem = dartx.appendItem = Symbol("dartx.appendItem");
  const $getItem = dartx.getItem = Symbol("dartx.getItem");
  const $initialize = dartx.initialize = Symbol("dartx.initialize");
  const $insertItemBefore = dartx.insertItemBefore = Symbol("dartx.insertItemBefore");
  const $removeItem = dartx.removeItem = Symbol("dartx.removeItem");
  const $replaceItem = dartx.replaceItem = Symbol("dartx.replaceItem");
  const $x1 = dartx.x1 = Symbol("dartx.x1");
  const $x2 = dartx.x2 = Symbol("dartx.x2");
  const $y1 = dartx.y1 = Symbol("dartx.y1");
  const $y2 = dartx.y2 = Symbol("dartx.y2");
  const $gradientTransform = dartx.gradientTransform = Symbol("dartx.gradientTransform");
  const $gradientUnits = dartx.gradientUnits = Symbol("dartx.gradientUnits");
  const $spreadMethod = dartx.spreadMethod = Symbol("dartx.spreadMethod");
  const $markerHeight = dartx.markerHeight = Symbol("dartx.markerHeight");
  const $markerUnits = dartx.markerUnits = Symbol("dartx.markerUnits");
  const $markerWidth = dartx.markerWidth = Symbol("dartx.markerWidth");
  const $orientAngle = dartx.orientAngle = Symbol("dartx.orientAngle");
  const $orientType = dartx.orientType = Symbol("dartx.orientType");
  const $refX = dartx.refX = Symbol("dartx.refX");
  const $refY = dartx.refY = Symbol("dartx.refY");
  const $setOrientToAngle = dartx.setOrientToAngle = Symbol("dartx.setOrientToAngle");
  const $setOrientToAuto = dartx.setOrientToAuto = Symbol("dartx.setOrientToAuto");
  const $maskContentUnits = dartx.maskContentUnits = Symbol("dartx.maskContentUnits");
  const $maskUnits = dartx.maskUnits = Symbol("dartx.maskUnits");
  const $scaleNonUniform = dartx.scaleNonUniform = Symbol("dartx.scaleNonUniform");
  const $patternContentUnits = dartx.patternContentUnits = Symbol("dartx.patternContentUnits");
  const $patternTransform = dartx.patternTransform = Symbol("dartx.patternTransform");
  const $patternUnits = dartx.patternUnits = Symbol("dartx.patternUnits");
  const $animatedPoints = dartx.animatedPoints = Symbol("dartx.animatedPoints");
  const $points = dartx.points = Symbol("dartx.points");
  const $meetOrSlice = dartx.meetOrSlice = Symbol("dartx.meetOrSlice");
  const $fr = dartx.fr = Symbol("dartx.fr");
  const $fx = dartx.fx = Symbol("dartx.fx");
  const $fy = dartx.fy = Symbol("dartx.fy");
  const $gradientOffset = dartx.gradientOffset = Symbol("dartx.gradientOffset");
  const $currentScale = dartx.currentScale = Symbol("dartx.currentScale");
  const $currentTranslate = dartx.currentTranslate = Symbol("dartx.currentTranslate");
  const $animationsPaused = dartx.animationsPaused = Symbol("dartx.animationsPaused");
  const $checkEnclosure = dartx.checkEnclosure = Symbol("dartx.checkEnclosure");
  const $checkIntersection = dartx.checkIntersection = Symbol("dartx.checkIntersection");
  const $createSvgAngle = dartx.createSvgAngle = Symbol("dartx.createSvgAngle");
  const $createSvgLength = dartx.createSvgLength = Symbol("dartx.createSvgLength");
  const $createSvgMatrix = dartx.createSvgMatrix = Symbol("dartx.createSvgMatrix");
  const $createSvgNumber = dartx.createSvgNumber = Symbol("dartx.createSvgNumber");
  const $createSvgPoint = dartx.createSvgPoint = Symbol("dartx.createSvgPoint");
  const $createSvgRect = dartx.createSvgRect = Symbol("dartx.createSvgRect");
  const $createSvgTransform = dartx.createSvgTransform = Symbol("dartx.createSvgTransform");
  const $createSvgTransformFromMatrix = dartx.createSvgTransformFromMatrix = Symbol("dartx.createSvgTransformFromMatrix");
  const $deselectAll = dartx.deselectAll = Symbol("dartx.deselectAll");
  const $forceRedraw = dartx.forceRedraw = Symbol("dartx.forceRedraw");
  const $getEnclosureList = dartx.getEnclosureList = Symbol("dartx.getEnclosureList");
  const $getIntersectionList = dartx.getIntersectionList = Symbol("dartx.getIntersectionList");
  const $pauseAnimations = dartx.pauseAnimations = Symbol("dartx.pauseAnimations");
  const $setCurrentTime = dartx.setCurrentTime = Symbol("dartx.setCurrentTime");
  const $suspendRedraw = dartx.suspendRedraw = Symbol("dartx.suspendRedraw");
  const $unpauseAnimations = dartx.unpauseAnimations = Symbol("dartx.unpauseAnimations");
  const $unsuspendRedraw = dartx.unsuspendRedraw = Symbol("dartx.unsuspendRedraw");
  const $unsuspendRedrawAll = dartx.unsuspendRedrawAll = Symbol("dartx.unsuspendRedrawAll");
  const $zoomAndPan = dartx.zoomAndPan = Symbol("dartx.zoomAndPan");
  const $lengthAdjust = dartx.lengthAdjust = Symbol("dartx.lengthAdjust");
  const $getCharNumAtPosition = dartx.getCharNumAtPosition = Symbol("dartx.getCharNumAtPosition");
  const $getComputedTextLength = dartx.getComputedTextLength = Symbol("dartx.getComputedTextLength");
  const $getEndPositionOfChar = dartx.getEndPositionOfChar = Symbol("dartx.getEndPositionOfChar");
  const $getExtentOfChar = dartx.getExtentOfChar = Symbol("dartx.getExtentOfChar");
  const $getNumberOfChars = dartx.getNumberOfChars = Symbol("dartx.getNumberOfChars");
  const $getRotationOfChar = dartx.getRotationOfChar = Symbol("dartx.getRotationOfChar");
  const $getStartPositionOfChar = dartx.getStartPositionOfChar = Symbol("dartx.getStartPositionOfChar");
  const $getSubStringLength = dartx.getSubStringLength = Symbol("dartx.getSubStringLength");
  const $selectSubString = dartx.selectSubString = Symbol("dartx.selectSubString");
  const $spacing = dartx.spacing = Symbol("dartx.spacing");
  const $setMatrix = dartx.setMatrix = Symbol("dartx.setMatrix");
  const $setRotate = dartx.setRotate = Symbol("dartx.setRotate");
  const $setScale = dartx.setScale = Symbol("dartx.setScale");
  const $setSkewX = dartx.setSkewX = Symbol("dartx.setSkewX");
  const $setSkewY = dartx.setSkewY = Symbol("dartx.setSkewY");
  const $setTranslate = dartx.setTranslate = Symbol("dartx.setTranslate");
  const $consolidate = dartx.consolidate = Symbol("dartx.consolidate");
  const $fftSize = dartx.fftSize = Symbol("dartx.fftSize");
  const $frequencyBinCount = dartx.frequencyBinCount = Symbol("dartx.frequencyBinCount");
  const $maxDecibels = dartx.maxDecibels = Symbol("dartx.maxDecibels");
  const $minDecibels = dartx.minDecibels = Symbol("dartx.minDecibels");
  const $smoothingTimeConstant = dartx.smoothingTimeConstant = Symbol("dartx.smoothingTimeConstant");
  const $getByteFrequencyData = dartx.getByteFrequencyData = Symbol("dartx.getByteFrequencyData");
  const $getByteTimeDomainData = dartx.getByteTimeDomainData = Symbol("dartx.getByteTimeDomainData");
  const $getFloatFrequencyData = dartx.getFloatFrequencyData = Symbol("dartx.getFloatFrequencyData");
  const $getFloatTimeDomainData = dartx.getFloatTimeDomainData = Symbol("dartx.getFloatTimeDomainData");
  const $channelCount = dartx.channelCount = Symbol("dartx.channelCount");
  const $channelCountMode = dartx.channelCountMode = Symbol("dartx.channelCountMode");
  const $channelInterpretation = dartx.channelInterpretation = Symbol("dartx.channelInterpretation");
  const $context = dartx.context = Symbol("dartx.context");
  const $numberOfInputs = dartx.numberOfInputs = Symbol("dartx.numberOfInputs");
  const $numberOfOutputs = dartx.numberOfOutputs = Symbol("dartx.numberOfOutputs");
  const $connectNode = dartx.connectNode = Symbol("dartx.connectNode");
  const $connectParam = dartx.connectParam = Symbol("dartx.connectParam");
  const $numberOfChannels = dartx.numberOfChannels = Symbol("dartx.numberOfChannels");
  const $sampleRate = dartx.sampleRate = Symbol("dartx.sampleRate");
  const $copyFromChannel = dartx.copyFromChannel = Symbol("dartx.copyFromChannel");
  const $copyToChannel = dartx.copyToChannel = Symbol("dartx.copyToChannel");
  const $getChannelData = dartx.getChannelData = Symbol("dartx.getChannelData");
  const $detune = dartx.detune = Symbol("dartx.detune");
  const $loopEnd = dartx.loopEnd = Symbol("dartx.loopEnd");
  const $loopStart = dartx.loopStart = Symbol("dartx.loopStart");
  const $start2 = dartx.start2 = Symbol("dartx.start2");
  const $baseLatency = dartx.baseLatency = Symbol("dartx.baseLatency");
  const $getOutputTimestamp = dartx.getOutputTimestamp = Symbol("dartx.getOutputTimestamp");
  const $suspend = dartx.suspend = Symbol("dartx.suspend");
  const $createGain = dartx.createGain = Symbol("dartx.createGain");
  const $createScriptProcessor = dartx.createScriptProcessor = Symbol("dartx.createScriptProcessor");
  const $decodeAudioData = dartx.decodeAudioData = Symbol("dartx.decodeAudioData");
  const $destination = dartx.destination = Symbol("dartx.destination");
  const $listener = dartx.listener = Symbol("dartx.listener");
  const $createAnalyser = dartx.createAnalyser = Symbol("dartx.createAnalyser");
  const $createBiquadFilter = dartx.createBiquadFilter = Symbol("dartx.createBiquadFilter");
  const $createBuffer = dartx.createBuffer = Symbol("dartx.createBuffer");
  const $createBufferSource = dartx.createBufferSource = Symbol("dartx.createBufferSource");
  const $createChannelMerger = dartx.createChannelMerger = Symbol("dartx.createChannelMerger");
  const $createChannelSplitter = dartx.createChannelSplitter = Symbol("dartx.createChannelSplitter");
  const $createConstantSource = dartx.createConstantSource = Symbol("dartx.createConstantSource");
  const $createConvolver = dartx.createConvolver = Symbol("dartx.createConvolver");
  const $createDelay = dartx.createDelay = Symbol("dartx.createDelay");
  const $createDynamicsCompressor = dartx.createDynamicsCompressor = Symbol("dartx.createDynamicsCompressor");
  const $createIirFilter = dartx.createIirFilter = Symbol("dartx.createIirFilter");
  const $createMediaElementSource = dartx.createMediaElementSource = Symbol("dartx.createMediaElementSource");
  const $createMediaStreamDestination = dartx.createMediaStreamDestination = Symbol("dartx.createMediaStreamDestination");
  const $createMediaStreamSource = dartx.createMediaStreamSource = Symbol("dartx.createMediaStreamSource");
  const $createOscillator = dartx.createOscillator = Symbol("dartx.createOscillator");
  const $createPanner = dartx.createPanner = Symbol("dartx.createPanner");
  const $createPeriodicWave = dartx.createPeriodicWave = Symbol("dartx.createPeriodicWave");
  const $createStereoPanner = dartx.createStereoPanner = Symbol("dartx.createStereoPanner");
  const $createWaveShaper = dartx.createWaveShaper = Symbol("dartx.createWaveShaper");
  const $maxChannelCount = dartx.maxChannelCount = Symbol("dartx.maxChannelCount");
  const $forwardX = dartx.forwardX = Symbol("dartx.forwardX");
  const $forwardY = dartx.forwardY = Symbol("dartx.forwardY");
  const $forwardZ = dartx.forwardZ = Symbol("dartx.forwardZ");
  const $positionZ = dartx.positionZ = Symbol("dartx.positionZ");
  const $upX = dartx.upX = Symbol("dartx.upX");
  const $upY = dartx.upY = Symbol("dartx.upY");
  const $upZ = dartx.upZ = Symbol("dartx.upZ");
  const $setOrientation = dartx.setOrientation = Symbol("dartx.setOrientation");
  const $maxValue = dartx.maxValue = Symbol("dartx.maxValue");
  const $minValue = dartx.minValue = Symbol("dartx.minValue");
  const $cancelAndHoldAtTime = dartx.cancelAndHoldAtTime = Symbol("dartx.cancelAndHoldAtTime");
  const $cancelScheduledValues = dartx.cancelScheduledValues = Symbol("dartx.cancelScheduledValues");
  const $exponentialRampToValueAtTime = dartx.exponentialRampToValueAtTime = Symbol("dartx.exponentialRampToValueAtTime");
  const $linearRampToValueAtTime = dartx.linearRampToValueAtTime = Symbol("dartx.linearRampToValueAtTime");
  const $setTargetAtTime = dartx.setTargetAtTime = Symbol("dartx.setTargetAtTime");
  const $setValueAtTime = dartx.setValueAtTime = Symbol("dartx.setValueAtTime");
  const $setValueCurveAtTime = dartx.setValueCurveAtTime = Symbol("dartx.setValueCurveAtTime");
  const $inputBuffer = dartx.inputBuffer = Symbol("dartx.inputBuffer");
  const $outputBuffer = dartx.outputBuffer = Symbol("dartx.outputBuffer");
  const $playbackTime = dartx.playbackTime = Symbol("dartx.playbackTime");
  const $registerProcessor = dartx.registerProcessor = Symbol("dartx.registerProcessor");
  const $parameters = dartx.parameters = Symbol("dartx.parameters");
  const $Q = dartx.Q = Symbol("dartx.Q");
  const $frequency = dartx.frequency = Symbol("dartx.frequency");
  const $gain = dartx.gain = Symbol("dartx.gain");
  const $getFrequencyResponse = dartx.getFrequencyResponse = Symbol("dartx.getFrequencyResponse");
  const $normalize = dartx.normalize = Symbol("dartx.normalize");
  const $delayTime = dartx.delayTime = Symbol("dartx.delayTime");
  const $attack = dartx.attack = Symbol("dartx.attack");
  const $knee = dartx.knee = Symbol("dartx.knee");
  const $ratio = dartx.ratio = Symbol("dartx.ratio");
  const $reduction = dartx.reduction = Symbol("dartx.reduction");
  const $release = dartx.release = Symbol("dartx.release");
  const $threshold = dartx.threshold = Symbol("dartx.threshold");
  const $mediaElement = dartx.mediaElement = Symbol("dartx.mediaElement");
  const $mediaStream = dartx.mediaStream = Symbol("dartx.mediaStream");
  const $renderedBuffer = dartx.renderedBuffer = Symbol("dartx.renderedBuffer");
  const $startRendering = dartx.startRendering = Symbol("dartx.startRendering");
  const $suspendFor = dartx.suspendFor = Symbol("dartx.suspendFor");
  const $setPeriodicWave = dartx.setPeriodicWave = Symbol("dartx.setPeriodicWave");
  const $coneInnerAngle = dartx.coneInnerAngle = Symbol("dartx.coneInnerAngle");
  const $coneOuterAngle = dartx.coneOuterAngle = Symbol("dartx.coneOuterAngle");
  const $coneOuterGain = dartx.coneOuterGain = Symbol("dartx.coneOuterGain");
  const $distanceModel = dartx.distanceModel = Symbol("dartx.distanceModel");
  const $maxDistance = dartx.maxDistance = Symbol("dartx.maxDistance");
  const $orientationX = dartx.orientationX = Symbol("dartx.orientationX");
  const $orientationY = dartx.orientationY = Symbol("dartx.orientationY");
  const $orientationZ = dartx.orientationZ = Symbol("dartx.orientationZ");
  const $panningModel = dartx.panningModel = Symbol("dartx.panningModel");
  const $refDistance = dartx.refDistance = Symbol("dartx.refDistance");
  const $rolloffFactor = dartx.rolloffFactor = Symbol("dartx.rolloffFactor");
  const $bufferSize = dartx.bufferSize = Symbol("dartx.bufferSize");
  const $setEventListener = dartx.setEventListener = Symbol("dartx.setEventListener");
  const $onAudioProcess = dartx.onAudioProcess = Symbol("dartx.onAudioProcess");
  const $pan = dartx.pan = Symbol("dartx.pan");
  const $curve = dartx.curve = Symbol("dartx.curve");
  const $oversample = dartx.oversample = Symbol("dartx.oversample");
  const $drawArraysInstancedAngle = dartx.drawArraysInstancedAngle = Symbol("dartx.drawArraysInstancedAngle");
  const $drawElementsInstancedAngle = dartx.drawElementsInstancedAngle = Symbol("dartx.drawElementsInstancedAngle");
  const $vertexAttribDivisorAngle = dartx.vertexAttribDivisorAngle = Symbol("dartx.vertexAttribDivisorAngle");
  const $offscreenCanvas = dartx.offscreenCanvas = Symbol("dartx.offscreenCanvas");
  const $statusMessage = dartx.statusMessage = Symbol("dartx.statusMessage");
  const $getTranslatedShaderSource = dartx.getTranslatedShaderSource = Symbol("dartx.getTranslatedShaderSource");
  const $drawBuffersWebgl = dartx.drawBuffersWebgl = Symbol("dartx.drawBuffersWebgl");
  const $beginQueryExt = dartx.beginQueryExt = Symbol("dartx.beginQueryExt");
  const $createQueryExt = dartx.createQueryExt = Symbol("dartx.createQueryExt");
  const $deleteQueryExt = dartx.deleteQueryExt = Symbol("dartx.deleteQueryExt");
  const $endQueryExt = dartx.endQueryExt = Symbol("dartx.endQueryExt");
  const $getQueryExt = dartx.getQueryExt = Symbol("dartx.getQueryExt");
  const $getQueryObjectExt = dartx.getQueryObjectExt = Symbol("dartx.getQueryObjectExt");
  const $isQueryExt = dartx.isQueryExt = Symbol("dartx.isQueryExt");
  const $queryCounterExt = dartx.queryCounterExt = Symbol("dartx.queryCounterExt");
  const $getBufferSubDataAsync = dartx.getBufferSubDataAsync = Symbol("dartx.getBufferSubDataAsync");
  const $loseContext = dartx.loseContext = Symbol("dartx.loseContext");
  const $restoreContext = dartx.restoreContext = Symbol("dartx.restoreContext");
  const $bindVertexArray = dartx.bindVertexArray = Symbol("dartx.bindVertexArray");
  const $createVertexArray = dartx.createVertexArray = Symbol("dartx.createVertexArray");
  const $deleteVertexArray = dartx.deleteVertexArray = Symbol("dartx.deleteVertexArray");
  const $isVertexArray = dartx.isVertexArray = Symbol("dartx.isVertexArray");
  const $drawingBufferHeight = dartx.drawingBufferHeight = Symbol("dartx.drawingBufferHeight");
  const $drawingBufferWidth = dartx.drawingBufferWidth = Symbol("dartx.drawingBufferWidth");
  const $activeTexture = dartx.activeTexture = Symbol("dartx.activeTexture");
  const $attachShader = dartx.attachShader = Symbol("dartx.attachShader");
  const $bindAttribLocation = dartx.bindAttribLocation = Symbol("dartx.bindAttribLocation");
  const $bindBuffer = dartx.bindBuffer = Symbol("dartx.bindBuffer");
  const $bindFramebuffer = dartx.bindFramebuffer = Symbol("dartx.bindFramebuffer");
  const $bindRenderbuffer = dartx.bindRenderbuffer = Symbol("dartx.bindRenderbuffer");
  const $bindTexture = dartx.bindTexture = Symbol("dartx.bindTexture");
  const $blendColor = dartx.blendColor = Symbol("dartx.blendColor");
  const $blendEquation = dartx.blendEquation = Symbol("dartx.blendEquation");
  const $blendEquationSeparate = dartx.blendEquationSeparate = Symbol("dartx.blendEquationSeparate");
  const $blendFunc = dartx.blendFunc = Symbol("dartx.blendFunc");
  const $blendFuncSeparate = dartx.blendFuncSeparate = Symbol("dartx.blendFuncSeparate");
  const $bufferData = dartx.bufferData = Symbol("dartx.bufferData");
  const $bufferSubData = dartx.bufferSubData = Symbol("dartx.bufferSubData");
  const $checkFramebufferStatus = dartx.checkFramebufferStatus = Symbol("dartx.checkFramebufferStatus");
  const $clearColor = dartx.clearColor = Symbol("dartx.clearColor");
  const $clearDepth = dartx.clearDepth = Symbol("dartx.clearDepth");
  const $clearStencil = dartx.clearStencil = Symbol("dartx.clearStencil");
  const $colorMask = dartx.colorMask = Symbol("dartx.colorMask");
  const $compileShader = dartx.compileShader = Symbol("dartx.compileShader");
  const $compressedTexImage2D = dartx.compressedTexImage2D = Symbol("dartx.compressedTexImage2D");
  const $compressedTexSubImage2D = dartx.compressedTexSubImage2D = Symbol("dartx.compressedTexSubImage2D");
  const $copyTexImage2D = dartx.copyTexImage2D = Symbol("dartx.copyTexImage2D");
  const $copyTexSubImage2D = dartx.copyTexSubImage2D = Symbol("dartx.copyTexSubImage2D");
  const $createFramebuffer = dartx.createFramebuffer = Symbol("dartx.createFramebuffer");
  const $createProgram = dartx.createProgram = Symbol("dartx.createProgram");
  const $createRenderbuffer = dartx.createRenderbuffer = Symbol("dartx.createRenderbuffer");
  const $createShader = dartx.createShader = Symbol("dartx.createShader");
  const $createTexture = dartx.createTexture = Symbol("dartx.createTexture");
  const $cullFace = dartx.cullFace = Symbol("dartx.cullFace");
  const $deleteBuffer = dartx.deleteBuffer = Symbol("dartx.deleteBuffer");
  const $deleteFramebuffer = dartx.deleteFramebuffer = Symbol("dartx.deleteFramebuffer");
  const $deleteProgram = dartx.deleteProgram = Symbol("dartx.deleteProgram");
  const $deleteRenderbuffer = dartx.deleteRenderbuffer = Symbol("dartx.deleteRenderbuffer");
  const $deleteShader = dartx.deleteShader = Symbol("dartx.deleteShader");
  const $deleteTexture = dartx.deleteTexture = Symbol("dartx.deleteTexture");
  const $depthFunc = dartx.depthFunc = Symbol("dartx.depthFunc");
  const $depthMask = dartx.depthMask = Symbol("dartx.depthMask");
  const $depthRange = dartx.depthRange = Symbol("dartx.depthRange");
  const $detachShader = dartx.detachShader = Symbol("dartx.detachShader");
  const $disableVertexAttribArray = dartx.disableVertexAttribArray = Symbol("dartx.disableVertexAttribArray");
  const $drawArrays = dartx.drawArrays = Symbol("dartx.drawArrays");
  const $drawElements = dartx.drawElements = Symbol("dartx.drawElements");
  const $enableVertexAttribArray = dartx.enableVertexAttribArray = Symbol("dartx.enableVertexAttribArray");
  const $flush = dartx.flush = Symbol("dartx.flush");
  const $framebufferRenderbuffer = dartx.framebufferRenderbuffer = Symbol("dartx.framebufferRenderbuffer");
  const $framebufferTexture2D = dartx.framebufferTexture2D = Symbol("dartx.framebufferTexture2D");
  const $frontFace = dartx.frontFace = Symbol("dartx.frontFace");
  const $generateMipmap = dartx.generateMipmap = Symbol("dartx.generateMipmap");
  const $getActiveAttrib = dartx.getActiveAttrib = Symbol("dartx.getActiveAttrib");
  const $getActiveUniform = dartx.getActiveUniform = Symbol("dartx.getActiveUniform");
  const $getAttachedShaders = dartx.getAttachedShaders = Symbol("dartx.getAttachedShaders");
  const $getAttribLocation = dartx.getAttribLocation = Symbol("dartx.getAttribLocation");
  const $getBufferParameter = dartx.getBufferParameter = Symbol("dartx.getBufferParameter");
  const $getError = dartx.getError = Symbol("dartx.getError");
  const $getExtension = dartx.getExtension = Symbol("dartx.getExtension");
  const $getFramebufferAttachmentParameter = dartx.getFramebufferAttachmentParameter = Symbol("dartx.getFramebufferAttachmentParameter");
  const $getProgramInfoLog = dartx.getProgramInfoLog = Symbol("dartx.getProgramInfoLog");
  const $getProgramParameter = dartx.getProgramParameter = Symbol("dartx.getProgramParameter");
  const $getRenderbufferParameter = dartx.getRenderbufferParameter = Symbol("dartx.getRenderbufferParameter");
  const $getShaderInfoLog = dartx.getShaderInfoLog = Symbol("dartx.getShaderInfoLog");
  const $getShaderParameter = dartx.getShaderParameter = Symbol("dartx.getShaderParameter");
  const $getShaderPrecisionFormat = dartx.getShaderPrecisionFormat = Symbol("dartx.getShaderPrecisionFormat");
  const $getShaderSource = dartx.getShaderSource = Symbol("dartx.getShaderSource");
  const $getSupportedExtensions = dartx.getSupportedExtensions = Symbol("dartx.getSupportedExtensions");
  const $getTexParameter = dartx.getTexParameter = Symbol("dartx.getTexParameter");
  const $getUniform = dartx.getUniform = Symbol("dartx.getUniform");
  const $getUniformLocation = dartx.getUniformLocation = Symbol("dartx.getUniformLocation");
  const $getVertexAttrib = dartx.getVertexAttrib = Symbol("dartx.getVertexAttrib");
  const $getVertexAttribOffset = dartx.getVertexAttribOffset = Symbol("dartx.getVertexAttribOffset");
  const $hint = dartx.hint = Symbol("dartx.hint");
  const $isBuffer = dartx.isBuffer = Symbol("dartx.isBuffer");
  const $isEnabled = dartx.isEnabled = Symbol("dartx.isEnabled");
  const $isFramebuffer = dartx.isFramebuffer = Symbol("dartx.isFramebuffer");
  const $isProgram = dartx.isProgram = Symbol("dartx.isProgram");
  const $isRenderbuffer = dartx.isRenderbuffer = Symbol("dartx.isRenderbuffer");
  const $isShader = dartx.isShader = Symbol("dartx.isShader");
  const $isTexture = dartx.isTexture = Symbol("dartx.isTexture");
  const $linkProgram = dartx.linkProgram = Symbol("dartx.linkProgram");
  const $pixelStorei = dartx.pixelStorei = Symbol("dartx.pixelStorei");
  const $polygonOffset = dartx.polygonOffset = Symbol("dartx.polygonOffset");
  const $renderbufferStorage = dartx.renderbufferStorage = Symbol("dartx.renderbufferStorage");
  const $sampleCoverage = dartx.sampleCoverage = Symbol("dartx.sampleCoverage");
  const $scissor = dartx.scissor = Symbol("dartx.scissor");
  const $shaderSource = dartx.shaderSource = Symbol("dartx.shaderSource");
  const $stencilFunc = dartx.stencilFunc = Symbol("dartx.stencilFunc");
  const $stencilFuncSeparate = dartx.stencilFuncSeparate = Symbol("dartx.stencilFuncSeparate");
  const $stencilMask = dartx.stencilMask = Symbol("dartx.stencilMask");
  const $stencilMaskSeparate = dartx.stencilMaskSeparate = Symbol("dartx.stencilMaskSeparate");
  const $stencilOp = dartx.stencilOp = Symbol("dartx.stencilOp");
  const $stencilOpSeparate = dartx.stencilOpSeparate = Symbol("dartx.stencilOpSeparate");
  const $texImage2D = dartx.texImage2D = Symbol("dartx.texImage2D");
  const $texParameterf = dartx.texParameterf = Symbol("dartx.texParameterf");
  const $texParameteri = dartx.texParameteri = Symbol("dartx.texParameteri");
  const $texSubImage2D = dartx.texSubImage2D = Symbol("dartx.texSubImage2D");
  const $uniform1f = dartx.uniform1f = Symbol("dartx.uniform1f");
  const $uniform1fv = dartx.uniform1fv = Symbol("dartx.uniform1fv");
  const $uniform1i = dartx.uniform1i = Symbol("dartx.uniform1i");
  const $uniform1iv = dartx.uniform1iv = Symbol("dartx.uniform1iv");
  const $uniform2f = dartx.uniform2f = Symbol("dartx.uniform2f");
  const $uniform2fv = dartx.uniform2fv = Symbol("dartx.uniform2fv");
  const $uniform2i = dartx.uniform2i = Symbol("dartx.uniform2i");
  const $uniform2iv = dartx.uniform2iv = Symbol("dartx.uniform2iv");
  const $uniform3f = dartx.uniform3f = Symbol("dartx.uniform3f");
  const $uniform3fv = dartx.uniform3fv = Symbol("dartx.uniform3fv");
  const $uniform3i = dartx.uniform3i = Symbol("dartx.uniform3i");
  const $uniform3iv = dartx.uniform3iv = Symbol("dartx.uniform3iv");
  const $uniform4f = dartx.uniform4f = Symbol("dartx.uniform4f");
  const $uniform4fv = dartx.uniform4fv = Symbol("dartx.uniform4fv");
  const $uniform4i = dartx.uniform4i = Symbol("dartx.uniform4i");
  const $uniform4iv = dartx.uniform4iv = Symbol("dartx.uniform4iv");
  const $uniformMatrix2fv = dartx.uniformMatrix2fv = Symbol("dartx.uniformMatrix2fv");
  const $uniformMatrix3fv = dartx.uniformMatrix3fv = Symbol("dartx.uniformMatrix3fv");
  const $uniformMatrix4fv = dartx.uniformMatrix4fv = Symbol("dartx.uniformMatrix4fv");
  const $useProgram = dartx.useProgram = Symbol("dartx.useProgram");
  const $validateProgram = dartx.validateProgram = Symbol("dartx.validateProgram");
  const $vertexAttrib1f = dartx.vertexAttrib1f = Symbol("dartx.vertexAttrib1f");
  const $vertexAttrib1fv = dartx.vertexAttrib1fv = Symbol("dartx.vertexAttrib1fv");
  const $vertexAttrib2f = dartx.vertexAttrib2f = Symbol("dartx.vertexAttrib2f");
  const $vertexAttrib2fv = dartx.vertexAttrib2fv = Symbol("dartx.vertexAttrib2fv");
  const $vertexAttrib3f = dartx.vertexAttrib3f = Symbol("dartx.vertexAttrib3f");
  const $vertexAttrib3fv = dartx.vertexAttrib3fv = Symbol("dartx.vertexAttrib3fv");
  const $vertexAttrib4f = dartx.vertexAttrib4f = Symbol("dartx.vertexAttrib4f");
  const $vertexAttrib4fv = dartx.vertexAttrib4fv = Symbol("dartx.vertexAttrib4fv");
  const $vertexAttribPointer = dartx.vertexAttribPointer = Symbol("dartx.vertexAttribPointer");
  const $viewport = dartx.viewport = Symbol("dartx.viewport");
  const $readPixels = dartx.readPixels = Symbol("dartx.readPixels");
  const $texImage2DUntyped = dartx.texImage2DUntyped = Symbol("dartx.texImage2DUntyped");
  const $texImage2DTyped = dartx.texImage2DTyped = Symbol("dartx.texImage2DTyped");
  const $texSubImage2DUntyped = dartx.texSubImage2DUntyped = Symbol("dartx.texSubImage2DUntyped");
  const $texSubImage2DTyped = dartx.texSubImage2DTyped = Symbol("dartx.texSubImage2DTyped");
  const $bufferDataTyped = dartx.bufferDataTyped = Symbol("dartx.bufferDataTyped");
  const $bufferSubDataTyped = dartx.bufferSubDataTyped = Symbol("dartx.bufferSubDataTyped");
  const $beginQuery = dartx.beginQuery = Symbol("dartx.beginQuery");
  const $beginTransformFeedback = dartx.beginTransformFeedback = Symbol("dartx.beginTransformFeedback");
  const $bindBufferBase = dartx.bindBufferBase = Symbol("dartx.bindBufferBase");
  const $bindBufferRange = dartx.bindBufferRange = Symbol("dartx.bindBufferRange");
  const $bindSampler = dartx.bindSampler = Symbol("dartx.bindSampler");
  const $bindTransformFeedback = dartx.bindTransformFeedback = Symbol("dartx.bindTransformFeedback");
  const $blitFramebuffer = dartx.blitFramebuffer = Symbol("dartx.blitFramebuffer");
  const $bufferData2 = dartx.bufferData2 = Symbol("dartx.bufferData2");
  const $bufferSubData2 = dartx.bufferSubData2 = Symbol("dartx.bufferSubData2");
  const $clearBufferfi = dartx.clearBufferfi = Symbol("dartx.clearBufferfi");
  const $clearBufferfv = dartx.clearBufferfv = Symbol("dartx.clearBufferfv");
  const $clearBufferiv = dartx.clearBufferiv = Symbol("dartx.clearBufferiv");
  const $clearBufferuiv = dartx.clearBufferuiv = Symbol("dartx.clearBufferuiv");
  const $clientWaitSync = dartx.clientWaitSync = Symbol("dartx.clientWaitSync");
  const $compressedTexImage2D2 = dartx.compressedTexImage2D2 = Symbol("dartx.compressedTexImage2D2");
  const $compressedTexImage2D3 = dartx.compressedTexImage2D3 = Symbol("dartx.compressedTexImage2D3");
  const $compressedTexImage3D = dartx.compressedTexImage3D = Symbol("dartx.compressedTexImage3D");
  const $compressedTexImage3D2 = dartx.compressedTexImage3D2 = Symbol("dartx.compressedTexImage3D2");
  const $compressedTexSubImage2D2 = dartx.compressedTexSubImage2D2 = Symbol("dartx.compressedTexSubImage2D2");
  const $compressedTexSubImage2D3 = dartx.compressedTexSubImage2D3 = Symbol("dartx.compressedTexSubImage2D3");
  const $compressedTexSubImage3D = dartx.compressedTexSubImage3D = Symbol("dartx.compressedTexSubImage3D");
  const $compressedTexSubImage3D2 = dartx.compressedTexSubImage3D2 = Symbol("dartx.compressedTexSubImage3D2");
  const $copyBufferSubData = dartx.copyBufferSubData = Symbol("dartx.copyBufferSubData");
  const $copyTexSubImage3D = dartx.copyTexSubImage3D = Symbol("dartx.copyTexSubImage3D");
  const $createQuery = dartx.createQuery = Symbol("dartx.createQuery");
  const $createSampler = dartx.createSampler = Symbol("dartx.createSampler");
  const $createTransformFeedback = dartx.createTransformFeedback = Symbol("dartx.createTransformFeedback");
  const $deleteQuery = dartx.deleteQuery = Symbol("dartx.deleteQuery");
  const $deleteSampler = dartx.deleteSampler = Symbol("dartx.deleteSampler");
  const $deleteSync = dartx.deleteSync = Symbol("dartx.deleteSync");
  const $deleteTransformFeedback = dartx.deleteTransformFeedback = Symbol("dartx.deleteTransformFeedback");
  const $drawArraysInstanced = dartx.drawArraysInstanced = Symbol("dartx.drawArraysInstanced");
  const $drawBuffers = dartx.drawBuffers = Symbol("dartx.drawBuffers");
  const $drawElementsInstanced = dartx.drawElementsInstanced = Symbol("dartx.drawElementsInstanced");
  const $drawRangeElements = dartx.drawRangeElements = Symbol("dartx.drawRangeElements");
  const $endQuery = dartx.endQuery = Symbol("dartx.endQuery");
  const $endTransformFeedback = dartx.endTransformFeedback = Symbol("dartx.endTransformFeedback");
  const $fenceSync = dartx.fenceSync = Symbol("dartx.fenceSync");
  const $framebufferTextureLayer = dartx.framebufferTextureLayer = Symbol("dartx.framebufferTextureLayer");
  const $getActiveUniformBlockName = dartx.getActiveUniformBlockName = Symbol("dartx.getActiveUniformBlockName");
  const $getActiveUniformBlockParameter = dartx.getActiveUniformBlockParameter = Symbol("dartx.getActiveUniformBlockParameter");
  const $getActiveUniforms = dartx.getActiveUniforms = Symbol("dartx.getActiveUniforms");
  const $getBufferSubData = dartx.getBufferSubData = Symbol("dartx.getBufferSubData");
  const $getFragDataLocation = dartx.getFragDataLocation = Symbol("dartx.getFragDataLocation");
  const $getIndexedParameter = dartx.getIndexedParameter = Symbol("dartx.getIndexedParameter");
  const $getInternalformatParameter = dartx.getInternalformatParameter = Symbol("dartx.getInternalformatParameter");
  const $getQuery = dartx.getQuery = Symbol("dartx.getQuery");
  const $getQueryParameter = dartx.getQueryParameter = Symbol("dartx.getQueryParameter");
  const $getSamplerParameter = dartx.getSamplerParameter = Symbol("dartx.getSamplerParameter");
  const $getSyncParameter = dartx.getSyncParameter = Symbol("dartx.getSyncParameter");
  const $getTransformFeedbackVarying = dartx.getTransformFeedbackVarying = Symbol("dartx.getTransformFeedbackVarying");
  const $getUniformBlockIndex = dartx.getUniformBlockIndex = Symbol("dartx.getUniformBlockIndex");
  const $getUniformIndices = dartx.getUniformIndices = Symbol("dartx.getUniformIndices");
  const $invalidateFramebuffer = dartx.invalidateFramebuffer = Symbol("dartx.invalidateFramebuffer");
  const $invalidateSubFramebuffer = dartx.invalidateSubFramebuffer = Symbol("dartx.invalidateSubFramebuffer");
  const $isQuery = dartx.isQuery = Symbol("dartx.isQuery");
  const $isSampler = dartx.isSampler = Symbol("dartx.isSampler");
  const $isSync = dartx.isSync = Symbol("dartx.isSync");
  const $isTransformFeedback = dartx.isTransformFeedback = Symbol("dartx.isTransformFeedback");
  const $pauseTransformFeedback = dartx.pauseTransformFeedback = Symbol("dartx.pauseTransformFeedback");
  const $readBuffer = dartx.readBuffer = Symbol("dartx.readBuffer");
  const $readPixels2 = dartx.readPixels2 = Symbol("dartx.readPixels2");
  const $renderbufferStorageMultisample = dartx.renderbufferStorageMultisample = Symbol("dartx.renderbufferStorageMultisample");
  const $resumeTransformFeedback = dartx.resumeTransformFeedback = Symbol("dartx.resumeTransformFeedback");
  const $samplerParameterf = dartx.samplerParameterf = Symbol("dartx.samplerParameterf");
  const $samplerParameteri = dartx.samplerParameteri = Symbol("dartx.samplerParameteri");
  const $texImage2D2 = dartx.texImage2D2 = Symbol("dartx.texImage2D2");
  const $texImage3D = dartx.texImage3D = Symbol("dartx.texImage3D");
  const $texStorage2D = dartx.texStorage2D = Symbol("dartx.texStorage2D");
  const $texStorage3D = dartx.texStorage3D = Symbol("dartx.texStorage3D");
  const $texSubImage2D2 = dartx.texSubImage2D2 = Symbol("dartx.texSubImage2D2");
  const $texSubImage3D = dartx.texSubImage3D = Symbol("dartx.texSubImage3D");
  const $transformFeedbackVaryings = dartx.transformFeedbackVaryings = Symbol("dartx.transformFeedbackVaryings");
  const $uniform1fv2 = dartx.uniform1fv2 = Symbol("dartx.uniform1fv2");
  const $uniform1iv2 = dartx.uniform1iv2 = Symbol("dartx.uniform1iv2");
  const $uniform1ui = dartx.uniform1ui = Symbol("dartx.uniform1ui");
  const $uniform1uiv = dartx.uniform1uiv = Symbol("dartx.uniform1uiv");
  const $uniform2fv2 = dartx.uniform2fv2 = Symbol("dartx.uniform2fv2");
  const $uniform2iv2 = dartx.uniform2iv2 = Symbol("dartx.uniform2iv2");
  const $uniform2ui = dartx.uniform2ui = Symbol("dartx.uniform2ui");
  const $uniform2uiv = dartx.uniform2uiv = Symbol("dartx.uniform2uiv");
  const $uniform3fv2 = dartx.uniform3fv2 = Symbol("dartx.uniform3fv2");
  const $uniform3iv2 = dartx.uniform3iv2 = Symbol("dartx.uniform3iv2");
  const $uniform3ui = dartx.uniform3ui = Symbol("dartx.uniform3ui");
  const $uniform3uiv = dartx.uniform3uiv = Symbol("dartx.uniform3uiv");
  const $uniform4fv2 = dartx.uniform4fv2 = Symbol("dartx.uniform4fv2");
  const $uniform4iv2 = dartx.uniform4iv2 = Symbol("dartx.uniform4iv2");
  const $uniform4ui = dartx.uniform4ui = Symbol("dartx.uniform4ui");
  const $uniform4uiv = dartx.uniform4uiv = Symbol("dartx.uniform4uiv");
  const $uniformBlockBinding = dartx.uniformBlockBinding = Symbol("dartx.uniformBlockBinding");
  const $uniformMatrix2fv2 = dartx.uniformMatrix2fv2 = Symbol("dartx.uniformMatrix2fv2");
  const $uniformMatrix2x3fv = dartx.uniformMatrix2x3fv = Symbol("dartx.uniformMatrix2x3fv");
  const $uniformMatrix2x4fv = dartx.uniformMatrix2x4fv = Symbol("dartx.uniformMatrix2x4fv");
  const $uniformMatrix3fv2 = dartx.uniformMatrix3fv2 = Symbol("dartx.uniformMatrix3fv2");
  const $uniformMatrix3x2fv = dartx.uniformMatrix3x2fv = Symbol("dartx.uniformMatrix3x2fv");
  const $uniformMatrix3x4fv = dartx.uniformMatrix3x4fv = Symbol("dartx.uniformMatrix3x4fv");
  const $uniformMatrix4fv2 = dartx.uniformMatrix4fv2 = Symbol("dartx.uniformMatrix4fv2");
  const $uniformMatrix4x2fv = dartx.uniformMatrix4x2fv = Symbol("dartx.uniformMatrix4x2fv");
  const $uniformMatrix4x3fv = dartx.uniformMatrix4x3fv = Symbol("dartx.uniformMatrix4x3fv");
  const $vertexAttribDivisor = dartx.vertexAttribDivisor = Symbol("dartx.vertexAttribDivisor");
  const $vertexAttribI4i = dartx.vertexAttribI4i = Symbol("dartx.vertexAttribI4i");
  const $vertexAttribI4iv = dartx.vertexAttribI4iv = Symbol("dartx.vertexAttribI4iv");
  const $vertexAttribI4ui = dartx.vertexAttribI4ui = Symbol("dartx.vertexAttribI4ui");
  const $vertexAttribI4uiv = dartx.vertexAttribI4uiv = Symbol("dartx.vertexAttribI4uiv");
  const $vertexAttribIPointer = dartx.vertexAttribIPointer = Symbol("dartx.vertexAttribIPointer");
  const $waitSync = dartx.waitSync = Symbol("dartx.waitSync");
  const $precision = dartx.precision = Symbol("dartx.precision");
  const $rangeMax = dartx.rangeMax = Symbol("dartx.rangeMax");
  const $rangeMin = dartx.rangeMin = Symbol("dartx.rangeMin");
  const $lastUploadedVideoFrameWasSkipped = dartx.lastUploadedVideoFrameWasSkipped = Symbol("dartx.lastUploadedVideoFrameWasSkipped");
  const $lastUploadedVideoHeight = dartx.lastUploadedVideoHeight = Symbol("dartx.lastUploadedVideoHeight");
  const $lastUploadedVideoTimestamp = dartx.lastUploadedVideoTimestamp = Symbol("dartx.lastUploadedVideoTimestamp");
  const $lastUploadedVideoWidth = dartx.lastUploadedVideoWidth = Symbol("dartx.lastUploadedVideoWidth");
  const $changeVersion = dartx.changeVersion = Symbol("dartx.changeVersion");
  const $readTransaction = dartx.readTransaction = Symbol("dartx.readTransaction");
  const $transaction_future = dartx.transaction_future = Symbol("dartx.transaction_future");
  const $insertId = dartx.insertId = Symbol("dartx.insertId");
  const $rowsAffected = dartx.rowsAffected = Symbol("dartx.rowsAffected");
  const $executeSql = dartx.executeSql = Symbol("dartx.executeSql");
  let JSArrayOfString = () => (JSArrayOfString = dart.constFn(_interceptors.JSArray$(core.String)))();
  let VoidTodynamic = () => (VoidTodynamic = dart.constFn(dart.fnType(dart.dynamic, [])))();
  let IdentityMapOfString$Object = () => (IdentityMapOfString$Object = dart.constFn(_js_helper.IdentityMap$(core.String, core.Object)))();
  let IdentityMapOfObject$int = () => (IdentityMapOfObject$int = dart.constFn(_js_helper.IdentityMap$(core.Object, core.int)))();
  let ListOfObject = () => (ListOfObject = dart.constFn(core.List$(core.Object)))();
  let IdentityMapOfTypeVariable$Object = () => (IdentityMapOfTypeVariable$Object = dart.constFn(_js_helper.IdentityMap$(dart.TypeVariable, core.Object)))();
  let ListOfTypeVariable = () => (ListOfTypeVariable = dart.constFn(core.List$(dart.TypeVariable)))();
  let IterableOfTypeVariable = () => (IterableOfTypeVariable = dart.constFn(core.Iterable$(dart.TypeVariable)))();
  let JSArrayOfTypeVariable = () => (JSArrayOfTypeVariable = dart.constFn(_interceptors.JSArray$(dart.TypeVariable)))();
  let ListOfType = () => (ListOfType = dart.constFn(core.List$(core.Type)))();
  let IterableOfTypeConstraint = () => (IterableOfTypeConstraint = dart.constFn(core.Iterable$(dart.TypeConstraint)))();
  let MapOfTypeVariable$TypeConstraint = () => (MapOfTypeVariable$TypeConstraint = dart.constFn(core.Map$(dart.TypeVariable, dart.TypeConstraint)))();
  let JSArrayOfObject = () => (JSArrayOfObject = dart.constFn(_interceptors.JSArray$(core.Object)))();
  let MapOfSymbol$dynamic = () => (MapOfSymbol$dynamic = dart.constFn(core.Map$(core.Symbol, dart.dynamic)))();
  let NameValuePairAndNameValuePairToint = () => (NameValuePairAndNameValuePairToint = dart.constFn(dart.fnType(core.int, [_debugger.NameValuePair, _debugger.NameValuePair])))();
  let JSArrayOfNameValuePair = () => (JSArrayOfNameValuePair = dart.constFn(_interceptors.JSArray$(_debugger.NameValuePair)))();
  let intAnddynamicToNull = () => (intAnddynamicToNull = dart.constFn(dart.fnType(core.Null, [core.int, dart.dynamic])))();
  let StringTobool = () => (StringTobool = dart.constFn(dart.fnType(core.bool, [core.String])))();
  let dynamicTodynamic = () => (dynamicTodynamic = dart.constFn(dart.fnType(dart.dynamic, [dart.dynamic])))();
  let dynamicToObject = () => (dynamicToObject = dart.constFn(dart.fnType(core.Object, [dart.dynamic])))();
  let MapOfdynamic$Object = () => (MapOfdynamic$Object = dart.constFn(core.Map$(dart.dynamic, core.Object)))();
  let JSArrayOfFormatter = () => (JSArrayOfFormatter = dart.constFn(_interceptors.JSArray$(_debugger.Formatter)))();
  let ListOfFormatter = () => (ListOfFormatter = dart.constFn(core.List$(_debugger.Formatter)))();
  let _HashSetOfNameValuePair = () => (_HashSetOfNameValuePair = dart.constFn(collection._HashSet$(_debugger.NameValuePair)))();
  let IdentityMapOfString$String = () => (IdentityMapOfString$String = dart.constFn(_js_helper.IdentityMap$(core.String, core.String)))();
  let dynamicAnddynamicToNull = () => (dynamicAnddynamicToNull = dart.constFn(dart.fnType(core.Null, [dart.dynamic, dart.dynamic])))();
  let HashMapOfString$String = () => (HashMapOfString$String = dart.constFn(collection.HashMap$(core.String, core.String)))();
  let dynamicToString = () => (dynamicToString = dart.constFn(dart.fnType(core.String, [dart.dynamic])))();
  let IterableOfString = () => (IterableOfString = dart.constFn(core.Iterable$(core.String)))();
  let ListOfNameValuePair = () => (ListOfNameValuePair = dart.constFn(core.List$(_debugger.NameValuePair)))();
  let VoidToNull = () => (VoidToNull = dart.constFn(dart.fnType(core.Null, [])))();
  let StringToNameValuePair = () => (StringToNameValuePair = dart.constFn(dart.fnType(_debugger.NameValuePair, [core.String])))();
  let IterableOfNameValuePair = () => (IterableOfNameValuePair = dart.constFn(core.Iterable$(_debugger.NameValuePair)))();
  let JSArrayOf_CallMethodRecord = () => (JSArrayOf_CallMethodRecord = dart.constFn(_interceptors.JSArray$(_debugger._CallMethodRecord)))();
  let IdentityMapOfString$_MethodStats = () => (IdentityMapOfString$_MethodStats = dart.constFn(_js_helper.IdentityMap$(core.String, _debugger._MethodStats)))();
  let VoidToString = () => (VoidToString = dart.constFn(dart.fnType(core.String, [])))();
  let StringToString = () => (StringToString = dart.constFn(dart.fnType(core.String, [core.String])))();
  let VoidTo_MethodStats = () => (VoidTo_MethodStats = dart.constFn(dart.fnType(_debugger._MethodStats, [])))();
  let StringAndStringToint = () => (StringAndStringToint = dart.constFn(dart.fnType(core.int, [core.String, core.String])))();
  let JSArrayOfListOfObject = () => (JSArrayOfListOfObject = dart.constFn(_interceptors.JSArray$(ListOfObject())))();
  let dynamicAnddynamicToint = () => (dynamicAnddynamicToint = dart.constFn(dart.fnType(core.int, [dart.dynamic, dart.dynamic])))();
  let JSIndexableOfString = () => (JSIndexableOfString = dart.constFn(_interceptors.JSIndexable$(core.String)))();
  let dynamicToNull = () => (dynamicToNull = dart.constFn(dart.fnType(core.Null, [dart.dynamic])))();
  let ComparableOfnum = () => (ComparableOfnum = dart.constFn(core.Comparable$(core.num)))();
  let FutureOfNull = () => (FutureOfNull = dart.constFn(async.Future$(core.Null)))();
  let dynamicAndStackTraceToNull = () => (dynamicAndStackTraceToNull = dart.constFn(dart.fnType(core.Null, [dart.dynamic, core.StackTrace])))();
  let VoidTovoid = () => (VoidTovoid = dart.constFn(dart.fnType(dart.void, [])))();
  let TimerToNull = () => (TimerToNull = dart.constFn(dart.fnType(core.Null, [async.Timer])))();
  let _FutureOfNull = () => (_FutureOfNull = dart.constFn(async._Future$(core.Null)))();
  let VoidTo_FutureOfNull = () => (VoidTo_FutureOfNull = dart.constFn(dart.fnType(_FutureOfNull(), [])))();
  let VoidToFuture = () => (VoidToFuture = dart.constFn(dart.fnType(async.Future, [])))();
  let dynamicToFuture = () => (dynamicToFuture = dart.constFn(dart.fnType(async.Future, [dart.dynamic])))();
  let _FutureOfString = () => (_FutureOfString = dart.constFn(async._Future$(core.String)))();
  let _FutureOfbool = () => (_FutureOfbool = dart.constFn(async._Future$(core.bool)))();
  let VoidTobool = () => (VoidTobool = dart.constFn(dart.fnType(core.bool, [])))();
  let boolToNull = () => (boolToNull = dart.constFn(dart.fnType(core.Null, [core.bool])))();
  let _FutureOfint = () => (_FutureOfint = dart.constFn(async._Future$(core.int)))();
  let dynamicAndStackTraceTovoid = () => (dynamicAndStackTraceTovoid = dart.constFn(dart.fnType(dart.void, [dart.dynamic, core.StackTrace])))();
  let NullAndNullTodynamic = () => (NullAndNullTodynamic = dart.constFn(dart.fnType(dart.dynamic, [core.Null, core.Null])))();
  let ObjectAndStackTraceTodynamic = () => (ObjectAndStackTraceTodynamic = dart.constFn(dart.fnType(dart.dynamic, [core.Object, core.StackTrace])))();
  let ObjectTodynamic = () => (ObjectTodynamic = dart.constFn(dart.fnType(dart.dynamic, [core.Object])))();
  let dynamicTovoid = () => (dynamicTovoid = dart.constFn(dart.fnType(dart.void, [dart.dynamic])))();
  let EventSinkTo_ConverterStreamEventSink = () => (EventSinkTo_ConverterStreamEventSink = dart.constFn(dart.fnType(convert._ConverterStreamEventSink, [async.EventSink])))();
  let VoidToSetOfR = () => (VoidToSetOfR = dart.constFn(dart.gFnType(R => [core.Set$(R), []])))();
  let IterableOfObject = () => (IterableOfObject = dart.constFn(core.Iterable$(core.Object)))();
  let IteratorOfObject = () => (IteratorOfObject = dart.constFn(core.Iterator$(core.Object)))();
  let ListOfString = () => (ListOfString = dart.constFn(core.List$(core.String)))();
  let VoidToint = () => (VoidToint = dart.constFn(dart.fnType(core.int, [])))();
  let JSArrayOfint = () => (JSArrayOfint = dart.constFn(_interceptors.JSArray$(core.int)))();
  let ObjectTobool = () => (ObjectTobool = dart.constFn(dart.fnType(core.bool, [core.Object])))();
  let IteratorOfMatch = () => (IteratorOfMatch = dart.constFn(core.Iterator$(core.Match)))();
  let MatchToString = () => (MatchToString = dart.constFn(dart.fnType(core.String, [core.Match])))();
  let LinkedMapOfSymbol$dynamic = () => (LinkedMapOfSymbol$dynamic = dart.constFn(_js_helper.LinkedMap$(core.Symbol, dart.dynamic)))();
  let SymbolAnddynamicToNull = () => (SymbolAnddynamicToNull = dart.constFn(dart.fnType(core.Null, [core.Symbol, dart.dynamic])))();
  let ListOfSymbol = () => (ListOfSymbol = dart.constFn(core.List$(core.Symbol)))();
  let ListOfInstanceMirror = () => (ListOfInstanceMirror = dart.constFn(core.List$(mirrors.InstanceMirror)))();
  let FutureOfLibraryMirror = () => (FutureOfLibraryMirror = dart.constFn(async.Future$(mirrors.LibraryMirror)))();
  let ListOfCombinatorMirror = () => (ListOfCombinatorMirror = dart.constFn(core.List$(mirrors.CombinatorMirror)))();
  let dynamicToTypeMirror = () => (dynamicToTypeMirror = dart.constFn(dart.fnType(mirrors.TypeMirror, [dart.dynamic])))();
  let ListOfTypeMirror = () => (ListOfTypeMirror = dart.constFn(core.List$(mirrors.TypeMirror)))();
  let dynamicToInstanceMirror = () => (dynamicToInstanceMirror = dart.constFn(dart.fnType(mirrors.InstanceMirror, [dart.dynamic])))();
  let LinkedMapOfSymbol$DeclarationMirror = () => (LinkedMapOfSymbol$DeclarationMirror = dart.constFn(_js_helper.LinkedMap$(core.Symbol, mirrors.DeclarationMirror)))();
  let MapOfSymbol$DeclarationMirror = () => (MapOfSymbol$DeclarationMirror = dart.constFn(core.Map$(core.Symbol, mirrors.DeclarationMirror)))();
  let JSArrayOfClassMirror = () => (JSArrayOfClassMirror = dart.constFn(_interceptors.JSArray$(mirrors.ClassMirror)))();
  let TypeToTypeMirror = () => (TypeToTypeMirror = dart.constFn(dart.fnType(mirrors.TypeMirror, [core.Type])))();
  let IterableOfTypeMirror = () => (IterableOfTypeMirror = dart.constFn(core.Iterable$(mirrors.TypeMirror)))();
  let ListOfClassMirror = () => (ListOfClassMirror = dart.constFn(core.List$(mirrors.ClassMirror)))();
  let ListOfTypeVariableMirror = () => (ListOfTypeVariableMirror = dart.constFn(core.List$(mirrors.TypeVariableMirror)))();
  let MapOfSymbol$MethodMirror = () => (MapOfSymbol$MethodMirror = dart.constFn(core.Map$(core.Symbol, mirrors.MethodMirror)))();
  let ListOfParameterMirror = () => (ListOfParameterMirror = dart.constFn(core.List$(mirrors.ParameterMirror)))();
  let IterableOfdouble = () => (IterableOfdouble = dart.constFn(core.Iterable$(core.double)))();
  let IterableOfint = () => (IterableOfint = dart.constFn(core.Iterable$(core.int)))();
  let ListOfint = () => (ListOfint = dart.constFn(core.List$(core.int)))();
  let ObjectAndStackTraceToNull = () => (ObjectAndStackTraceToNull = dart.constFn(dart.fnType(core.Null, [core.Object, core.StackTrace])))();
  let __Tovoid = () => (__Tovoid = dart.constFn(dart.fnType(dart.void, [], [core.Object])))();
  let ObjectTovoid = () => (ObjectTovoid = dart.constFn(dart.fnType(dart.void, [core.Object])))();
  let Object__Tovoid = () => (Object__Tovoid = dart.constFn(dart.fnType(dart.void, [core.Object], [core.StackTrace])))();
  let ObjectAndStackTraceTovoid = () => (ObjectAndStackTraceTovoid = dart.constFn(dart.fnType(dart.void, [core.Object, core.StackTrace])))();
  let dynamicTobool = () => (dynamicTobool = dart.constFn(dart.fnType(core.bool, [dart.dynamic])))();
  let FutureOfbool = () => (FutureOfbool = dart.constFn(async.Future$(core.bool)))();
  let FutureOrOfbool = () => (FutureOrOfbool = dart.constFn(async.FutureOr$(core.bool)))();
  let VoidToFutureOrOfbool = () => (VoidToFutureOrOfbool = dart.constFn(dart.fnType(FutureOrOfbool(), [])))();
  let dynamic__ToNull = () => (dynamic__ToNull = dart.constFn(dart.fnType(core.Null, [dart.dynamic], [core.StackTrace])))();
  let dynamicTo_Future = () => (dynamicTo_Future = dart.constFn(dart.fnType(async._Future, [dart.dynamic])))();
  let FnTovoid = () => (FnTovoid = dart.constFn(dart.fnType(dart.void, [VoidTovoid()])))();
  let FnToNull = () => (FnToNull = dart.constFn(dart.fnType(core.Null, [VoidTovoid()])))();
  let EmptyIteratorOfNull = () => (EmptyIteratorOfNull = dart.constFn(_internal.EmptyIterator$(core.Null)))();
  let ZoneAndZoneDelegateAndZone__Tovoid = () => (ZoneAndZoneDelegateAndZone__Tovoid = dart.constFn(dart.fnType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, core.Object, core.StackTrace])))();
  let ZoneAndZoneDelegateAndZone__ToR = () => (ZoneAndZoneDelegateAndZone__ToR = dart.constFn(dart.gFnType(R => [R, [async.Zone, async.ZoneDelegate, async.Zone, dart.fnType(R, [])]])))();
  let ZoneAndZoneDelegateAndZone__ToR$ = () => (ZoneAndZoneDelegateAndZone__ToR$ = dart.constFn(dart.gFnType((R, T) => [R, [async.Zone, async.ZoneDelegate, async.Zone, dart.fnType(R, [T]), T]])))();
  let ZoneAndZoneDelegateAndZone__ToR$0 = () => (ZoneAndZoneDelegateAndZone__ToR$0 = dart.constFn(dart.gFnType((R, T1, T2) => [R, [async.Zone, async.ZoneDelegate, async.Zone, dart.fnType(R, [T1, T2]), T1, T2]])))();
  let ZoneAndZoneDelegateAndZone__ToFn = () => (ZoneAndZoneDelegateAndZone__ToFn = dart.constFn(dart.gFnType(R => [dart.fnType(R, []), [async.Zone, async.ZoneDelegate, async.Zone, dart.fnType(R, [])]])))();
  let ZoneAndZoneDelegateAndZone__ToFn$ = () => (ZoneAndZoneDelegateAndZone__ToFn$ = dart.constFn(dart.gFnType((R, T) => [dart.fnType(R, [T]), [async.Zone, async.ZoneDelegate, async.Zone, dart.fnType(R, [T])]])))();
  let ZoneAndZoneDelegateAndZone__ToFn$0 = () => (ZoneAndZoneDelegateAndZone__ToFn$0 = dart.constFn(dart.gFnType((R, T1, T2) => [dart.fnType(R, [T1, T2]), [async.Zone, async.ZoneDelegate, async.Zone, dart.fnType(R, [T1, T2])]])))();
  let ZoneAndZoneDelegateAndZone__ToAsyncError = () => (ZoneAndZoneDelegateAndZone__ToAsyncError = dart.constFn(dart.fnType(async.AsyncError, [async.Zone, async.ZoneDelegate, async.Zone, core.Object, core.StackTrace])))();
  let ZoneAndZoneDelegateAndZone__Tovoid$ = () => (ZoneAndZoneDelegateAndZone__Tovoid$ = dart.constFn(dart.fnType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, VoidTovoid()])))();
  let ZoneAndZoneDelegateAndZone__ToTimer = () => (ZoneAndZoneDelegateAndZone__ToTimer = dart.constFn(dart.fnType(async.Timer, [async.Zone, async.ZoneDelegate, async.Zone, core.Duration, VoidTovoid()])))();
  let TimerTovoid = () => (TimerTovoid = dart.constFn(dart.fnType(dart.void, [async.Timer])))();
  let ZoneAndZoneDelegateAndZone__ToTimer$ = () => (ZoneAndZoneDelegateAndZone__ToTimer$ = dart.constFn(dart.fnType(async.Timer, [async.Zone, async.ZoneDelegate, async.Zone, core.Duration, TimerTovoid()])))();
  let ZoneAndZoneDelegateAndZone__Tovoid$0 = () => (ZoneAndZoneDelegateAndZone__Tovoid$0 = dart.constFn(dart.fnType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, core.String])))();
  let ZoneAndZoneDelegateAndZone__ToZone = () => (ZoneAndZoneDelegateAndZone__ToZone = dart.constFn(dart.fnType(async.Zone, [async.Zone, async.ZoneDelegate, async.Zone, async.ZoneSpecification, core.Map])))();
  let _ZoneFunctionOfFunction = () => (_ZoneFunctionOfFunction = dart.constFn(async._ZoneFunction$(core.Function)))();
  let _ZoneFunctionOfZoneAndZoneDelegateAndZone__ToAsyncError = () => (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToAsyncError = dart.constFn(async._ZoneFunction$(ZoneAndZoneDelegateAndZone__ToAsyncError())))();
  let _ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid = () => (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid = dart.constFn(async._ZoneFunction$(ZoneAndZoneDelegateAndZone__Tovoid$())))();
  let _ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer = () => (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer = dart.constFn(async._ZoneFunction$(ZoneAndZoneDelegateAndZone__ToTimer())))();
  let _ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer$ = () => (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer$ = dart.constFn(async._ZoneFunction$(ZoneAndZoneDelegateAndZone__ToTimer$())))();
  let _ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$ = () => (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$ = dart.constFn(async._ZoneFunction$(ZoneAndZoneDelegateAndZone__Tovoid$0())))();
  let _ZoneFunctionOfZoneAndZoneDelegateAndZone__ToZone = () => (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToZone = dart.constFn(async._ZoneFunction$(ZoneAndZoneDelegateAndZone__ToZone())))();
  let _ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$0 = () => (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$0 = dart.constFn(async._ZoneFunction$(ZoneAndZoneDelegateAndZone__Tovoid())))();
  let StringTovoid = () => (StringTovoid = dart.constFn(dart.fnType(dart.void, [core.String])))();
  let ZoneAndZoneDelegateAndZone__Tovoid$1 = () => (ZoneAndZoneDelegateAndZone__Tovoid$1 = dart.constFn(dart.fnType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, dart.dynamic, core.StackTrace])))();
  let ZoneAndZoneDelegateAndZone__ToNull = () => (ZoneAndZoneDelegateAndZone__ToNull = dart.constFn(dart.fnType(core.Null, [async.Zone, async.ZoneDelegate, async.Zone, core.Object, core.StackTrace])))();
  let ObjectToint = () => (ObjectToint = dart.constFn(dart.fnType(core.int, [core.Object])))();
  let ObjectAndObjectTobool = () => (ObjectAndObjectTobool = dart.constFn(dart.fnType(core.bool, [core.Object, core.Object])))();
  let ComparableAndComparableToint = () => (ComparableAndComparableToint = dart.constFn(dart.fnType(core.int, [core.Comparable, core.Comparable])))();
  let _SplayTreeMapNodeTobool = () => (_SplayTreeMapNodeTobool = dart.constFn(dart.fnType(core.bool, [collection._SplayTreeMapNode])))();
  let MappedIterableOfString$dynamic = () => (MappedIterableOfString$dynamic = dart.constFn(_internal.MappedIterable$(core.String, dart.dynamic)))();
  let MapOfString$dynamic = () => (MapOfString$dynamic = dart.constFn(core.Map$(core.String, dart.dynamic)))();
  let StringAnddynamicToNull = () => (StringAnddynamicToNull = dart.constFn(dart.fnType(core.Null, [core.String, dart.dynamic])))();
  let IdentityMapOfString$dynamic = () => (IdentityMapOfString$dynamic = dart.constFn(_js_helper.IdentityMap$(core.String, dart.dynamic)))();
  let ComparableOfString = () => (ComparableOfString = dart.constFn(core.Comparable$(core.String)))();
  let ObjectAndObjectTodynamic = () => (ObjectAndObjectTodynamic = dart.constFn(dart.fnType(dart.dynamic, [core.Object, core.Object])))();
  let SinkOfObject = () => (SinkOfObject = dart.constFn(core.Sink$(core.Object)))();
  let StringBufferToString = () => (StringBufferToString = dart.constFn(dart.fnType(core.String, [core.StringBuffer])))();
  let StringBufferAndStringToStringBuffer = () => (StringBufferAndStringToStringBuffer = dart.constFn(dart.fnType(core.StringBuffer, [core.StringBuffer, core.String])))();
  let StreamOfString = () => (StreamOfString = dart.constFn(async.Stream$(core.String)))();
  let FutureOfStringBuffer = () => (FutureOfStringBuffer = dart.constFn(async.Future$(core.StringBuffer)))();
  let FutureOfString = () => (FutureOfString = dart.constFn(async.Future$(core.String)))();
  let IdentityMapOfString$Encoding = () => (IdentityMapOfString$Encoding = dart.constFn(_js_helper.IdentityMap$(core.String, convert.Encoding)))();
  let SinkOfListOfint = () => (SinkOfListOfint = dart.constFn(core.Sink$(ListOfint())))();
  let StreamOfListOfint = () => (StreamOfListOfint = dart.constFn(async.Stream$(ListOfint())))();
  let SinkOfString = () => (SinkOfString = dart.constFn(core.Sink$(core.String)))();
  let ListOfintTovoid = () => (ListOfintTovoid = dart.constFn(dart.fnType(dart.void, [ListOfint()])))();
  let JSArrayOfListOfint = () => (JSArrayOfListOfint = dart.constFn(_interceptors.JSArray$(ListOfint())))();
  let Uint8ListAndintAndintTovoid = () => (Uint8ListAndintAndintTovoid = dart.constFn(dart.fnType(dart.void, [typed_data.Uint8List, core.int, core.int])))();
  let SyncIterableOfString = () => (SyncIterableOfString = dart.constFn(_js_helper.SyncIterable$(core.String)))();
  let EventSinkOfString = () => (EventSinkOfString = dart.constFn(async.EventSink$(core.String)))();
  let EventSinkOfStringTo_LineSplitterEventSink = () => (EventSinkOfStringTo_LineSplitterEventSink = dart.constFn(dart.fnType(convert._LineSplitterEventSink, [EventSinkOfString()])))();
  let _StringSinkConversionSinkOfStringSink = () => (_StringSinkConversionSinkOfStringSink = dart.constFn(convert._StringSinkConversionSink$(core.StringSink)))();
  let intAndintTovoid = () => (intAndintTovoid = dart.constFn(dart.fnType(dart.void, [core.int, core.int])))();
  let intAndintToint = () => (intAndintToint = dart.constFn(dart.fnType(core.int, [core.int, core.int])))();
  let intToint = () => (intToint = dart.constFn(dart.fnType(core.int, [core.int])))();
  let ComparableOfBigInt = () => (ComparableOfBigInt = dart.constFn(core.Comparable$(core.BigInt)))();
  let StringToint = () => (StringToint = dart.constFn(dart.fnType(core.int, [core.String])))();
  let ComparableOfDateTime = () => (ComparableOfDateTime = dart.constFn(core.Comparable$(core.DateTime)))();
  let intToString = () => (intToString = dart.constFn(dart.fnType(core.String, [core.int])))();
  let ComparableOfDuration = () => (ComparableOfDuration = dart.constFn(core.Comparable$(core.Duration)))();
  let MapOfSymbol$Object = () => (MapOfSymbol$Object = dart.constFn(core.Map$(core.Symbol, core.Object)))();
  let BidirectionalIteratorOfint = () => (BidirectionalIteratorOfint = dart.constFn(core.BidirectionalIterator$(core.int)))();
  let MapOfString$String = () => (MapOfString$String = dart.constFn(core.Map$(core.String, core.String)))();
  let MapOfString$StringAndStringToMapOfString$String = () => (MapOfString$StringAndStringToMapOfString$String = dart.constFn(dart.fnType(MapOfString$String(), [MapOfString$String(), core.String])))();
  let StringAndintTovoid = () => (StringAndintTovoid = dart.constFn(dart.fnType(dart.void, [core.String, core.int])))();
  let String__Tovoid = () => (String__Tovoid = dart.constFn(dart.fnType(dart.void, [core.String], [dart.dynamic])))();
  let StringToNull = () => (StringToNull = dart.constFn(dart.fnType(core.Null, [core.String])))();
  let UnmodifiableMapViewOfString$String = () => (UnmodifiableMapViewOfString$String = dart.constFn(collection.UnmodifiableMapView$(core.String, core.String)))();
  let MapOfString$ListOfString = () => (MapOfString$ListOfString = dart.constFn(core.Map$(core.String, ListOfString())))();
  let StringAndStringTovoid = () => (StringAndStringTovoid = dart.constFn(dart.fnType(dart.void, [core.String, core.String])))();
  let IdentityMapOfString$ListOfString = () => (IdentityMapOfString$ListOfString = dart.constFn(_js_helper.IdentityMap$(core.String, ListOfString())))();
  let VoidToListOfString = () => (VoidToListOfString = dart.constFn(dart.fnType(ListOfString(), [])))();
  let intAndintAndintTovoid = () => (intAndintAndintTovoid = dart.constFn(dart.fnType(dart.void, [core.int, core.int, core.int])))();
  let StringAndStringToNull = () => (StringAndStringToNull = dart.constFn(dart.fnType(core.Null, [core.String, core.String])))();
  let intToUint8List = () => (intToUint8List = dart.constFn(dart.fnType(typed_data.Uint8List, [core.int])))();
  let ListOfUint8List = () => (ListOfUint8List = dart.constFn(core.List$(typed_data.Uint8List)))();
  let dynamicAnddynamicToUint8List = () => (dynamicAnddynamicToUint8List = dart.constFn(dart.fnType(typed_data.Uint8List, [dart.dynamic, dart.dynamic])))();
  let Uint8ListAndStringAndintTovoid = () => (Uint8ListAndStringAndintTovoid = dart.constFn(dart.fnType(dart.void, [typed_data.Uint8List, core.String, core.int])))();
  let FutureOfServiceExtensionResponse = () => (FutureOfServiceExtensionResponse = dart.constFn(async.Future$(developer.ServiceExtensionResponse)))();
  let StringAndMapOfString$StringToFutureOfServiceExtensionResponse = () => (StringAndMapOfString$StringToFutureOfServiceExtensionResponse = dart.constFn(dart.fnType(FutureOfServiceExtensionResponse(), [core.String, MapOfString$String()])))();
  let IdentityMapOfString$StringAndMapOfString$StringToFutureOfServiceExtensionResponse = () => (IdentityMapOfString$StringAndMapOfString$StringToFutureOfServiceExtensionResponse = dart.constFn(_js_helper.IdentityMap$(core.String, StringAndMapOfString$StringToFutureOfServiceExtensionResponse())))();
  let IdentityMapOfString$Metric = () => (IdentityMapOfString$Metric = dart.constFn(_js_helper.IdentityMap$(core.String, developer.Metric)))();
  let CompleterOfUri = () => (CompleterOfUri = dart.constFn(async.Completer$(core.Uri)))();
  let UriTovoid = () => (UriTovoid = dart.constFn(dart.fnType(dart.void, [core.Uri])))();
  let JSArrayOf_SyncBlock = () => (JSArrayOf_SyncBlock = dart.constFn(_interceptors.JSArray$(developer._SyncBlock)))();
  let JSArrayOf_AsyncBlock = () => (JSArrayOf_AsyncBlock = dart.constFn(_interceptors.JSArray$(developer._AsyncBlock)))();
  let ListOf_AsyncBlock = () => (ListOf_AsyncBlock = dart.constFn(core.List$(developer._AsyncBlock)))();
  let JSArrayOfUint8List = () => (JSArrayOfUint8List = dart.constFn(_interceptors.JSArray$(typed_data.Uint8List)))();
  let FutureOfDirectory = () => (FutureOfDirectory = dart.constFn(async.Future$(io.Directory)))();
  let DirectoryToFutureOfDirectory = () => (DirectoryToFutureOfDirectory = dart.constFn(dart.fnType(FutureOfDirectory(), [io.Directory])))();
  let FutureOrOfDirectory = () => (FutureOrOfDirectory = dart.constFn(async.FutureOr$(io.Directory)))();
  let boolToFutureOrOfDirectory = () => (boolToFutureOrOfDirectory = dart.constFn(dart.fnType(FutureOrOfDirectory(), [core.bool])))();
  let dynamicTo_Directory = () => (dynamicTo_Directory = dart.constFn(dart.fnType(io._Directory, [dart.dynamic])))();
  let dynamicToDirectory = () => (dynamicToDirectory = dart.constFn(dart.fnType(io.Directory, [dart.dynamic])))();
  let JSArrayOfFileSystemEntity = () => (JSArrayOfFileSystemEntity = dart.constFn(_interceptors.JSArray$(io.FileSystemEntity)))();
  let FutureOrOfString = () => (FutureOrOfString = dart.constFn(async.FutureOr$(core.String)))();
  let dynamicToFutureOrOfString = () => (dynamicToFutureOrOfString = dart.constFn(dart.fnType(FutureOrOfString(), [dart.dynamic])))();
  let dynamicToFutureOrOfbool = () => (dynamicToFutureOrOfbool = dart.constFn(dart.fnType(FutureOrOfbool(), [dart.dynamic])))();
  let FileSystemEntityTypeTobool = () => (FileSystemEntityTypeTobool = dart.constFn(dart.fnType(core.bool, [io.FileSystemEntityType])))();
  let dynamicToFileSystemEntityType = () => (dynamicToFileSystemEntityType = dart.constFn(dart.fnType(io.FileSystemEntityType, [dart.dynamic])))();
  let FutureOfFileSystemEntityType = () => (FutureOfFileSystemEntityType = dart.constFn(async.Future$(io.FileSystemEntityType)))();
  let StreamControllerOfFileSystemEntity = () => (StreamControllerOfFileSystemEntity = dart.constFn(async.StreamController$(io.FileSystemEntity)))();
  let StreamControllerOfListOfint = () => (StreamControllerOfListOfint = dart.constFn(async.StreamController$(ListOfint())))();
  let ListOfintToNull = () => (ListOfintToNull = dart.constFn(dart.fnType(core.Null, [ListOfint()])))();
  let RandomAccessFileTovoid = () => (RandomAccessFileTovoid = dart.constFn(dart.fnType(dart.void, [io.RandomAccessFile])))();
  let dynamicAnddynamicTovoid = () => (dynamicAnddynamicTovoid = dart.constFn(dart.fnType(dart.void, [dart.dynamic, dart.dynamic])))();
  let FutureOfRandomAccessFile = () => (FutureOfRandomAccessFile = dart.constFn(async.Future$(io.RandomAccessFile)))();
  let CompleterOfFile = () => (CompleterOfFile = dart.constFn(async.Completer$(io.File)))();
  let dynamic__Tovoid = () => (dynamic__Tovoid = dart.constFn(dart.fnType(dart.void, [dart.dynamic], [core.StackTrace])))();
  let RandomAccessFileTodynamic = () => (RandomAccessFileTodynamic = dart.constFn(dart.fnType(dart.dynamic, [io.RandomAccessFile])))();
  let RandomAccessFileToNull = () => (RandomAccessFileToNull = dart.constFn(dart.fnType(core.Null, [io.RandomAccessFile])))();
  let voidToFile = () => (voidToFile = dart.constFn(dart.fnType(io.File, [dart.void])))();
  let FutureOfvoid = () => (FutureOfvoid = dart.constFn(async.Future$(dart.void)))();
  let RandomAccessFileToFutureOfvoid = () => (RandomAccessFileToFutureOfvoid = dart.constFn(dart.fnType(FutureOfvoid(), [io.RandomAccessFile])))();
  let FutureOfFile = () => (FutureOfFile = dart.constFn(async.Future$(io.File)))();
  let dynamicTo_File = () => (dynamicTo_File = dart.constFn(dart.fnType(io._File, [dart.dynamic])))();
  let DirectoryToFuture = () => (DirectoryToFuture = dart.constFn(dart.fnType(async.Future, [io.Directory])))();
  let FileSystemEntityTo_File = () => (FileSystemEntityTo_File = dart.constFn(dart.fnType(io._File, [io.FileSystemEntity])))();
  let dynamicToFile = () => (dynamicToFile = dart.constFn(dart.fnType(io.File, [dart.dynamic])))();
  let dynamicTo_RandomAccessFile = () => (dynamicTo_RandomAccessFile = dart.constFn(dart.fnType(io._RandomAccessFile, [dart.dynamic])))();
  let FutureOrOfint = () => (FutureOrOfint = dart.constFn(async.FutureOr$(core.int)))();
  let dynamicToFutureOrOfint = () => (dynamicToFutureOrOfint = dart.constFn(dart.fnType(FutureOrOfint(), [dart.dynamic])))();
  let FutureOfint = () => (FutureOfint = dart.constFn(async.Future$(core.int)))();
  let dynamicToDateTime = () => (dynamicToDateTime = dart.constFn(dart.fnType(core.DateTime, [dart.dynamic])))();
  let FutureOfDateTime = () => (FutureOfDateTime = dart.constFn(async.Future$(core.DateTime)))();
  let CompleterOfListOfint = () => (CompleterOfListOfint = dart.constFn(async.Completer$(ListOfint())))();
  let FutureOfListOfint = () => (FutureOfListOfint = dart.constFn(async.Future$(ListOfint())))();
  let RandomAccessFileToFutureOfListOfint = () => (RandomAccessFileToFutureOfListOfint = dart.constFn(dart.fnType(FutureOfListOfint(), [io.RandomAccessFile])))();
  let intToFutureOfListOfint = () => (intToFutureOfListOfint = dart.constFn(dart.fnType(FutureOfListOfint(), [core.int])))();
  let ListOfintToFutureOrOfString = () => (ListOfintToFutureOrOfString = dart.constFn(dart.fnType(FutureOrOfString(), [ListOfint()])))();
  let FutureOfListOfString = () => (FutureOfListOfString = dart.constFn(async.Future$(ListOfString())))();
  let RandomAccessFileTo_File = () => (RandomAccessFileTo_File = dart.constFn(dart.fnType(io._File, [io.RandomAccessFile])))();
  let FutureOrOfFile = () => (FutureOrOfFile = dart.constFn(async.FutureOr$(io.File)))();
  let RandomAccessFileToFutureOrOfFile = () => (RandomAccessFileToFutureOrOfFile = dart.constFn(dart.fnType(FutureOrOfFile(), [io.RandomAccessFile])))();
  let RandomAccessFileToFutureOfFile = () => (RandomAccessFileToFutureOfFile = dart.constFn(dart.fnType(FutureOfFile(), [io.RandomAccessFile])))();
  let dynamicAnddynamicToFutureOfServiceExtensionResponse = () => (dynamicAnddynamicToFutureOfServiceExtensionResponse = dart.constFn(dart.fnType(FutureOfServiceExtensionResponse(), [dart.dynamic, dart.dynamic])))();
  let dynamicToListOfint = () => (dynamicToListOfint = dart.constFn(dart.fnType(ListOfint(), [dart.dynamic])))();
  let dynamicToint = () => (dynamicToint = dart.constFn(dart.fnType(core.int, [dart.dynamic])))();
  let dynamicToFileStat = () => (dynamicToFileStat = dart.constFn(dart.fnType(io.FileStat, [dart.dynamic])))();
  let FutureOfFileStat = () => (FutureOfFileStat = dart.constFn(async.Future$(io.FileStat)))();
  let _FileResourceInfoToMapOfString$dynamic = () => (_FileResourceInfoToMapOfString$dynamic = dart.constFn(dart.fnType(MapOfString$dynamic(), [io._FileResourceInfo])))();
  let ListOfMapOfString$dynamic = () => (ListOfMapOfString$dynamic = dart.constFn(core.List$(MapOfString$dynamic())))();
  let IdentityMapOfint$_FileResourceInfo = () => (IdentityMapOfint$_FileResourceInfo = dart.constFn(_js_helper.IdentityMap$(core.int, io._FileResourceInfo)))();
  let _ProcessResourceInfoToMapOfString$dynamic = () => (_ProcessResourceInfoToMapOfString$dynamic = dart.constFn(dart.fnType(MapOfString$dynamic(), [io._ProcessResourceInfo])))();
  let IdentityMapOfint$_ProcessResourceInfo = () => (IdentityMapOfint$_ProcessResourceInfo = dart.constFn(_js_helper.IdentityMap$(core.int, io._ProcessResourceInfo)))();
  let _SocketResourceInfoToMapOfString$dynamic = () => (_SocketResourceInfoToMapOfString$dynamic = dart.constFn(dart.fnType(MapOfString$dynamic(), [io._SocketResourceInfo])))();
  let IdentityMapOfint$_SocketResourceInfo = () => (IdentityMapOfint$_SocketResourceInfo = dart.constFn(_js_helper.IdentityMap$(core.int, io._SocketResourceInfo)))();
  let StreamSinkOfListOfint = () => (StreamSinkOfListOfint = dart.constFn(async.StreamSink$(ListOfint())))();
  let dynamicTo_Link = () => (dynamicTo_Link = dart.constFn(dart.fnType(io._Link, [dart.dynamic])))();
  let FutureOfLink = () => (FutureOfLink = dart.constFn(async.Future$(io.Link)))();
  let FileSystemEntityToFutureOfLink = () => (FileSystemEntityToFutureOfLink = dart.constFn(dart.fnType(FutureOfLink(), [io.FileSystemEntity])))();
  let FileSystemEntityTo_Link = () => (FileSystemEntityTo_Link = dart.constFn(dart.fnType(io._Link, [io.FileSystemEntity])))();
  let dynamicToLink = () => (dynamicToLink = dart.constFn(dart.fnType(io.Link, [dart.dynamic])))();
  let Fn__ToR = () => (Fn__ToR = dart.constFn(dart.gFnType(R => [R, [dart.fnType(R, [])], {zoneValues: core.Map, zoneSpecification: async.ZoneSpecification, onError: core.Function}])))();
  let StringToDirectory = () => (StringToDirectory = dart.constFn(dart.fnType(io.Directory, [core.String])))();
  let VoidToDirectory = () => (VoidToDirectory = dart.constFn(dart.fnType(io.Directory, [])))();
  let StringToFile = () => (StringToFile = dart.constFn(dart.fnType(io.File, [core.String])))();
  let StringToFutureOfFileStat = () => (StringToFutureOfFileStat = dart.constFn(dart.fnType(FutureOfFileStat(), [core.String])))();
  let StringToFileStat = () => (StringToFileStat = dart.constFn(dart.fnType(io.FileStat, [core.String])))();
  let StringAndStringToFutureOfbool = () => (StringAndStringToFutureOfbool = dart.constFn(dart.fnType(FutureOfbool(), [core.String, core.String])))();
  let StringAndStringTobool = () => (StringAndStringTobool = dart.constFn(dart.fnType(core.bool, [core.String, core.String])))();
  let StringAndboolToFutureOfFileSystemEntityType = () => (StringAndboolToFutureOfFileSystemEntityType = dart.constFn(dart.fnType(FutureOfFileSystemEntityType(), [core.String, core.bool])))();
  let StringAndboolToFileSystemEntityType = () => (StringAndboolToFileSystemEntityType = dart.constFn(dart.fnType(io.FileSystemEntityType, [core.String, core.bool])))();
  let StreamOfFileSystemEvent = () => (StreamOfFileSystemEvent = dart.constFn(async.Stream$(io.FileSystemEvent)))();
  let StringAndintAndboolToStreamOfFileSystemEvent = () => (StringAndintAndboolToStreamOfFileSystemEvent = dart.constFn(dart.fnType(StreamOfFileSystemEvent(), [core.String, core.int, core.bool])))();
  let StringToLink = () => (StringToLink = dart.constFn(dart.fnType(io.Link, [core.String])))();
  let FutureOfSocket = () => (FutureOfSocket = dart.constFn(async.Future$(io.Socket)))();
  let dynamicAndint__ToFutureOfSocket = () => (dynamicAndint__ToFutureOfSocket = dart.constFn(dart.fnType(FutureOfSocket(), [dart.dynamic, core.int], {sourceAddress: dart.dynamic, timeout: core.Duration})))();
  let ConnectionTaskOfSocket = () => (ConnectionTaskOfSocket = dart.constFn(io.ConnectionTask$(io.Socket)))();
  let FutureOfConnectionTaskOfSocket = () => (FutureOfConnectionTaskOfSocket = dart.constFn(async.Future$(ConnectionTaskOfSocket())))();
  let dynamicAndint__ToFutureOfConnectionTaskOfSocket = () => (dynamicAndint__ToFutureOfConnectionTaskOfSocket = dart.constFn(dart.fnType(FutureOfConnectionTaskOfSocket(), [dart.dynamic, core.int], {sourceAddress: dart.dynamic})))();
  let _CaseInsensitiveStringMapOfString = () => (_CaseInsensitiveStringMapOfString = dart.constFn(io._CaseInsensitiveStringMap$(core.String)))();
  let RawSecureServerSocketToSecureServerSocket = () => (RawSecureServerSocketToSecureServerSocket = dart.constFn(dart.fnType(io.SecureServerSocket, [io.RawSecureServerSocket])))();
  let FutureOfSecureServerSocket = () => (FutureOfSecureServerSocket = dart.constFn(async.Future$(io.SecureServerSocket)))();
  let RawSecureSocketToSecureSocket = () => (RawSecureSocketToSecureSocket = dart.constFn(dart.fnType(io.SecureSocket, [io.RawSecureSocket])))();
  let FutureOfSecureSocket = () => (FutureOfSecureSocket = dart.constFn(async.Future$(io.SecureSocket)))();
  let ConnectionTaskOfSecureSocket = () => (ConnectionTaskOfSecureSocket = dart.constFn(io.ConnectionTask$(io.SecureSocket)))();
  let ConnectionTaskOfRawSecureSocket = () => (ConnectionTaskOfRawSecureSocket = dart.constFn(io.ConnectionTask$(io.RawSecureSocket)))();
  let ConnectionTaskOfRawSecureSocketToConnectionTaskOfSecureSocket = () => (ConnectionTaskOfRawSecureSocketToConnectionTaskOfSecureSocket = dart.constFn(dart.fnType(ConnectionTaskOfSecureSocket(), [ConnectionTaskOfRawSecureSocket()])))();
  let FutureOfConnectionTaskOfSecureSocket = () => (FutureOfConnectionTaskOfSecureSocket = dart.constFn(async.Future$(ConnectionTaskOfSecureSocket())))();
  let StreamSubscriptionOfRawSocketEvent = () => (StreamSubscriptionOfRawSocketEvent = dart.constFn(async.StreamSubscription$(io.RawSocketEvent)))();
  let FutureOfRawSecureSocket = () => (FutureOfRawSecureSocket = dart.constFn(async.Future$(io.RawSecureSocket)))();
  let dynamicToFutureOfRawSecureSocket = () => (dynamicToFutureOfRawSecureSocket = dart.constFn(dart.fnType(FutureOfRawSecureSocket(), [dart.dynamic])))();
  let StreamControllerOfRawSecureSocket = () => (StreamControllerOfRawSecureSocket = dart.constFn(async.StreamController$(io.RawSecureSocket)))();
  let RawServerSocketToRawSecureServerSocket = () => (RawServerSocketToRawSecureServerSocket = dart.constFn(dart.fnType(io.RawSecureServerSocket, [io.RawServerSocket])))();
  let FutureOfRawSecureServerSocket = () => (FutureOfRawSecureServerSocket = dart.constFn(async.Future$(io.RawSecureServerSocket)))();
  let RawSecureSocketToNull = () => (RawSecureSocketToNull = dart.constFn(dart.fnType(core.Null, [io.RawSecureSocket])))();
  let RawSocketToFutureOfRawSecureSocket = () => (RawSocketToFutureOfRawSecureSocket = dart.constFn(dart.fnType(FutureOfRawSecureSocket(), [io.RawSocket])))();
  let ConnectionTaskOfRawSocket = () => (ConnectionTaskOfRawSocket = dart.constFn(io.ConnectionTask$(io.RawSocket)))();
  let ConnectionTaskOfRawSocketToConnectionTaskOfRawSecureSocket = () => (ConnectionTaskOfRawSocketToConnectionTaskOfRawSecureSocket = dart.constFn(dart.fnType(ConnectionTaskOfRawSecureSocket(), [ConnectionTaskOfRawSocket()])))();
  let FutureOfConnectionTaskOfRawSecureSocket = () => (FutureOfConnectionTaskOfRawSecureSocket = dart.constFn(async.Future$(ConnectionTaskOfRawSecureSocket())))();
  let StreamSubscriptionOfRawSocket = () => (StreamSubscriptionOfRawSocket = dart.constFn(async.StreamSubscription$(io.RawSocket)))();
  let CompleterOf_RawSecureSocket = () => (CompleterOf_RawSecureSocket = dart.constFn(async.Completer$(io._RawSecureSocket)))();
  let CompleterOfRawSecureSocket = () => (CompleterOfRawSecureSocket = dart.constFn(async.Completer$(io.RawSecureSocket)))();
  let StreamControllerOfRawSocketEvent = () => (StreamControllerOfRawSocketEvent = dart.constFn(async.StreamController$(io.RawSocketEvent)))();
  let _FilterStatusToNull = () => (_FilterStatusToNull = dart.constFn(dart.fnType(core.Null, [io._FilterStatus])))();
  let dynamicTo_FilterStatus = () => (dynamicTo_FilterStatus = dart.constFn(dart.fnType(io._FilterStatus, [dart.dynamic])))();
  let FutureOf_FilterStatus = () => (FutureOf_FilterStatus = dart.constFn(async.Future$(io._FilterStatus)))();
  let StreamOfRawSocketEvent = () => (StreamOfRawSocketEvent = dart.constFn(async.Stream$(io.RawSocketEvent)))();
  let ListOfintAndStringTovoid = () => (ListOfintAndStringTovoid = dart.constFn(dart.fnType(dart.void, [ListOfint(), core.String])))();
  let StreamOfRawSocket = () => (StreamOfRawSocket = dart.constFn(async.Stream$(io.RawSocket)))();
  let StreamOfSocket = () => (StreamOfSocket = dart.constFn(async.Stream$(io.Socket)))();
  let StreamConsumerOfListOfint = () => (StreamConsumerOfListOfint = dart.constFn(async.StreamConsumer$(ListOfint())))();
  let dynamicTo_DartObject = () => (dynamicTo_DartObject = dart.constFn(dart.fnType(js._DartObject, [dart.dynamic])))();
  let ExpandoOfFunction = () => (ExpandoOfFunction = dart.constFn(core.Expando$(core.Function)))();
  let PointOfnum = () => (PointOfnum = dart.constFn(math.Point$(core.num)))();
  let RectangleOfnum = () => (RectangleOfnum = dart.constFn(math.Rectangle$(core.num)))();
  let LibraryMirrorTobool = () => (LibraryMirrorTobool = dart.constFn(dart.fnType(core.bool, [mirrors.LibraryMirror])))();
  let ListOfdouble = () => (ListOfdouble = dart.constFn(core.List$(core.double)))();
  let ListOfFloat32x4 = () => (ListOfFloat32x4 = dart.constFn(core.List$(typed_data.Float32x4)))();
  let ListOfInt32x4 = () => (ListOfInt32x4 = dart.constFn(core.List$(typed_data.Int32x4)))();
  let ListOfFloat64x2 = () => (ListOfFloat64x2 = dart.constFn(core.List$(typed_data.Float64x2)))();
  let EventStreamProviderOfEvent = () => (EventStreamProviderOfEvent = dart.constFn(html$.EventStreamProvider$(html$.Event)))();
  let EventStreamProviderOfVersionChangeEvent = () => (EventStreamProviderOfVersionChangeEvent = dart.constFn(html$.EventStreamProvider$(indexed_db.VersionChangeEvent)))();
  let FutureOfDatabase = () => (FutureOfDatabase = dart.constFn(async.Future$(indexed_db.Database)))();
  let CompleterOfIdbFactory = () => (CompleterOfIdbFactory = dart.constFn(async.Completer$(indexed_db.IdbFactory)))();
  let EventToNull = () => (EventToNull = dart.constFn(dart.fnType(core.Null, [html$.Event])))();
  let FutureOfIdbFactory = () => (FutureOfIdbFactory = dart.constFn(async.Future$(indexed_db.IdbFactory)))();
  let CompleterOfDatabase = () => (CompleterOfDatabase = dart.constFn(async.Completer$(indexed_db.Database)))();
  let JSArrayOfEventTarget = () => (JSArrayOfEventTarget = dart.constFn(_interceptors.JSArray$(html$.EventTarget)))();
  let CompleterOfMapOfString$dynamic = () => (CompleterOfMapOfString$dynamic = dart.constFn(async.Completer$(MapOfString$dynamic())))();
  let NodeTobool = () => (NodeTobool = dart.constFn(dart.fnType(core.bool, [html$.Node])))();
  let MapOfString$dynamicTobool = () => (MapOfString$dynamicTobool = dart.constFn(dart.fnType(core.bool, [MapOfString$dynamic()])))();
  let Map__Todynamic = () => (Map__Todynamic = dart.constFn(dart.fnType(dart.dynamic, [core.Map], [ObjectTovoid()])))();
  let ListOfNode = () => (ListOfNode = dart.constFn(core.List$(html$.Node)))();
  let EventTargetToString = () => (EventTargetToString = dart.constFn(dart.fnType(core.String, [html$.EventTarget])))();
  let _CustomEventStreamProviderOfWheelEvent = () => (_CustomEventStreamProviderOfWheelEvent = dart.constFn(html$._CustomEventStreamProvider$(html$.WheelEvent)))();
  let _CustomEventStreamProviderOfTransitionEvent = () => (_CustomEventStreamProviderOfTransitionEvent = dart.constFn(html$._CustomEventStreamProvider$(html$.TransitionEvent)))();
  let EventStreamProviderOfMouseEvent = () => (EventStreamProviderOfMouseEvent = dart.constFn(html$.EventStreamProvider$(html$.MouseEvent)))();
  let EventStreamProviderOfClipboardEvent = () => (EventStreamProviderOfClipboardEvent = dart.constFn(html$.EventStreamProvider$(html$.ClipboardEvent)))();
  let EventStreamProviderOfKeyboardEvent = () => (EventStreamProviderOfKeyboardEvent = dart.constFn(html$.EventStreamProvider$(html$.KeyboardEvent)))();
  let EventStreamProviderOfTouchEvent = () => (EventStreamProviderOfTouchEvent = dart.constFn(html$.EventStreamProvider$(html$.TouchEvent)))();
  let EventStreamProviderOfWheelEvent = () => (EventStreamProviderOfWheelEvent = dart.constFn(html$.EventStreamProvider$(html$.WheelEvent)))();
  let ListOfnum = () => (ListOfnum = dart.constFn(core.List$(core.num)))();
  let EventStreamProviderOfProgressEvent = () => (EventStreamProviderOfProgressEvent = dart.constFn(html$.EventStreamProvider$(html$.ProgressEvent)))();
  let ListOfBackgroundFetchSettledFetch = () => (ListOfBackgroundFetchSettledFetch = dart.constFn(core.List$(html$.BackgroundFetchSettledFetch)))();
  let ListOfDetectedBarcode = () => (ListOfDetectedBarcode = dart.constFn(core.List$(html$.DetectedBarcode)))();
  let EventStreamProviderOfMessageEvent = () => (EventStreamProviderOfMessageEvent = dart.constFn(html$.EventStreamProvider$(html$.MessageEvent)))();
  let EventStreamProviderOfPopStateEvent = () => (EventStreamProviderOfPopStateEvent = dart.constFn(html$.EventStreamProvider$(html$.PopStateEvent)))();
  let EventStreamProviderOfStorageEvent = () => (EventStreamProviderOfStorageEvent = dart.constFn(html$.EventStreamProvider$(html$.StorageEvent)))();
  let EventStreamProviderOfContextEvent = () => (EventStreamProviderOfContextEvent = dart.constFn(html$.EventStreamProvider$(web_gl.ContextEvent)))();
  let ListOfClient = () => (ListOfClient = dart.constFn(core.List$(html$.Client)))();
  let ListOfCssRule = () => (ListOfCssRule = dart.constFn(core.List$(html$.CssRule)))();
  let dynamicToCssStyleDeclaration = () => (dynamicToCssStyleDeclaration = dart.constFn(dart.fnType(html$.CssStyleDeclaration, [dart.dynamic])))();
  let IterableOfCssStyleDeclaration = () => (IterableOfCssStyleDeclaration = dart.constFn(core.Iterable$(html$.CssStyleDeclaration)))();
  let CssStyleDeclarationTovoid = () => (CssStyleDeclarationTovoid = dart.constFn(dart.fnType(dart.void, [html$.CssStyleDeclaration])))();
  let IterableOfElement = () => (IterableOfElement = dart.constFn(core.Iterable$(html$.Element)))();
  let ListOfCssTransformComponent = () => (ListOfCssTransformComponent = dart.constFn(core.List$(html$.CssTransformComponent)))();
  let ListOfFile = () => (ListOfFile = dart.constFn(core.List$(html$.File)))();
  let CompleterOfEntry = () => (CompleterOfEntry = dart.constFn(async.Completer$(html$.Entry)))();
  let EntryToNull = () => (EntryToNull = dart.constFn(dart.fnType(core.Null, [html$.Entry])))();
  let DomExceptionToNull = () => (DomExceptionToNull = dart.constFn(dart.fnType(core.Null, [html$.DomException])))();
  let CompleterOfMetadata = () => (CompleterOfMetadata = dart.constFn(async.Completer$(html$.Metadata)))();
  let MetadataToNull = () => (MetadataToNull = dart.constFn(dart.fnType(core.Null, [html$.Metadata])))();
  let ListOfEntry = () => (ListOfEntry = dart.constFn(core.List$(html$.Entry)))();
  let CompleterOfListOfEntry = () => (CompleterOfListOfEntry = dart.constFn(async.Completer$(ListOfEntry())))();
  let ListToNull = () => (ListToNull = dart.constFn(dart.fnType(core.Null, [core.List])))();
  let ListOfStyleSheet = () => (ListOfStyleSheet = dart.constFn(core.List$(html$.StyleSheet)))();
  let EventStreamProviderOfSecurityPolicyViolationEvent = () => (EventStreamProviderOfSecurityPolicyViolationEvent = dart.constFn(html$.EventStreamProvider$(html$.SecurityPolicyViolationEvent)))();
  let ListOfElement = () => (ListOfElement = dart.constFn(core.List$(html$.Element)))();
  let ListOfRectangleOfnum = () => (ListOfRectangleOfnum = dart.constFn(core.List$(RectangleOfnum())))();
  let JavaScriptIndexingBehaviorOfRectangleOfnum = () => (JavaScriptIndexingBehaviorOfRectangleOfnum = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(RectangleOfnum())))();
  let JavaScriptIndexingBehaviorOfString = () => (JavaScriptIndexingBehaviorOfString = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(core.String)))();
  let ElementTobool = () => (ElementTobool = dart.constFn(dart.fnType(core.bool, [html$.Element])))();
  let _EventStreamOfEvent = () => (_EventStreamOfEvent = dart.constFn(html$._EventStream$(html$.Event)))();
  let _ElementEventStreamImplOfEvent = () => (_ElementEventStreamImplOfEvent = dart.constFn(html$._ElementEventStreamImpl$(html$.Event)))();
  let ListOfMessagePort = () => (ListOfMessagePort = dart.constFn(core.List$(html$.MessagePort)))();
  let ListOfDetectedFace = () => (ListOfDetectedFace = dart.constFn(core.List$(html$.DetectedFace)))();
  let CompleterOfFileWriter = () => (CompleterOfFileWriter = dart.constFn(async.Completer$(html$.FileWriter)))();
  let FileWriterToNull = () => (FileWriterToNull = dart.constFn(dart.fnType(core.Null, [html$.FileWriter])))();
  let CompleterOfFile$ = () => (CompleterOfFile$ = dart.constFn(async.Completer$(html$.File)))();
  let FileToNull = () => (FileToNull = dart.constFn(dart.fnType(core.Null, [html$.File])))();
  let JavaScriptIndexingBehaviorOfFile = () => (JavaScriptIndexingBehaviorOfFile = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.File)))();
  let EventStreamProviderOfFontFaceSetLoadEvent = () => (EventStreamProviderOfFontFaceSetLoadEvent = dart.constFn(html$.EventStreamProvider$(html$.FontFaceSetLoadEvent)))();
  let ListOfFontFace = () => (ListOfFontFace = dart.constFn(core.List$(html$.FontFace)))();
  let ListOfGamepadButton = () => (ListOfGamepadButton = dart.constFn(core.List$(html$.GamepadButton)))();
  let CompleterOfGeoposition = () => (CompleterOfGeoposition = dart.constFn(async.Completer$(html$.Geoposition)))();
  let GeopositionToNull = () => (GeopositionToNull = dart.constFn(dart.fnType(core.Null, [html$.Geoposition])))();
  let PositionErrorToNull = () => (PositionErrorToNull = dart.constFn(dart.fnType(core.Null, [html$.PositionError])))();
  let StreamControllerOfGeoposition = () => (StreamControllerOfGeoposition = dart.constFn(async.StreamController$(html$.Geoposition)))();
  let JavaScriptIndexingBehaviorOfNode = () => (JavaScriptIndexingBehaviorOfNode = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.Node)))();
  let _CustomEventStreamProviderOfEvent = () => (_CustomEventStreamProviderOfEvent = dart.constFn(html$._CustomEventStreamProvider$(html$.Event)))();
  let HttpRequestToString = () => (HttpRequestToString = dart.constFn(dart.fnType(core.String, [html$.HttpRequest])))();
  let CompleterOfHttpRequest = () => (CompleterOfHttpRequest = dart.constFn(async.Completer$(html$.HttpRequest)))();
  let ProgressEventToNull = () => (ProgressEventToNull = dart.constFn(dart.fnType(core.Null, [html$.ProgressEvent])))();
  let CompleterOfString = () => (CompleterOfString = dart.constFn(async.Completer$(core.String)))();
  let ListOfMediaDeviceInfo = () => (ListOfMediaDeviceInfo = dart.constFn(core.List$(html$.MediaDeviceInfo)))();
  let ListOfMediaStreamTrack = () => (ListOfMediaStreamTrack = dart.constFn(core.List$(html$.MediaStreamTrack)))();
  let EventStreamProviderOfMidiMessageEvent = () => (EventStreamProviderOfMidiMessageEvent = dart.constFn(html$.EventStreamProvider$(html$.MidiMessageEvent)))();
  let MapTobool = () => (MapTobool = dart.constFn(dart.fnType(core.bool, [core.Map])))();
  let StringAnddynamicTovoid = () => (StringAnddynamicTovoid = dart.constFn(dart.fnType(dart.void, [core.String, dart.dynamic])))();
  let JSArrayOfMap = () => (JSArrayOfMap = dart.constFn(_interceptors.JSArray$(core.Map)))();
  let ListOfMimeType = () => (ListOfMimeType = dart.constFn(core.List$(html$.MimeType)))();
  let JavaScriptIndexingBehaviorOfMimeType = () => (JavaScriptIndexingBehaviorOfMimeType = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.MimeType)))();
  let ListAndMutationObserverTovoid = () => (ListAndMutationObserverTovoid = dart.constFn(dart.fnType(dart.void, [core.List, html$.MutationObserver])))();
  let CompleterOfMediaStream = () => (CompleterOfMediaStream = dart.constFn(async.Completer$(html$.MediaStream)))();
  let MediaStreamToNull = () => (MediaStreamToNull = dart.constFn(dart.fnType(core.Null, [html$.MediaStream])))();
  let NavigatorUserMediaErrorToNull = () => (NavigatorUserMediaErrorToNull = dart.constFn(dart.fnType(core.Null, [html$.NavigatorUserMediaError])))();
  let IterableOfNode = () => (IterableOfNode = dart.constFn(core.Iterable$(html$.Node)))();
  let ListOfTaskAttributionTiming = () => (ListOfTaskAttributionTiming = dart.constFn(core.List$(html$.TaskAttributionTiming)))();
  let ListOfPerformanceServerTiming = () => (ListOfPerformanceServerTiming = dart.constFn(core.List$(html$.PerformanceServerTiming)))();
  let JavaScriptIndexingBehaviorOfPlugin = () => (JavaScriptIndexingBehaviorOfPlugin = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.Plugin)))();
  let ListOfPlugin = () => (ListOfPlugin = dart.constFn(core.List$(html$.Plugin)))();
  let ListOfPresentationConnection = () => (ListOfPresentationConnection = dart.constFn(core.List$(html$.PresentationConnection)))();
  let EventStreamProviderOfRtcDtmfToneChangeEvent = () => (EventStreamProviderOfRtcDtmfToneChangeEvent = dart.constFn(html$.EventStreamProvider$(html$.RtcDtmfToneChangeEvent)))();
  let JSArrayOfMapOfString$String = () => (JSArrayOfMapOfString$String = dart.constFn(_interceptors.JSArray$(MapOfString$String())))();
  let CompleterOfRtcStatsResponse = () => (CompleterOfRtcStatsResponse = dart.constFn(async.Completer$(html$.RtcStatsResponse)))();
  let RtcStatsResponseToNull = () => (RtcStatsResponseToNull = dart.constFn(dart.fnType(core.Null, [html$.RtcStatsResponse])))();
  let EventStreamProviderOfMediaStreamEvent = () => (EventStreamProviderOfMediaStreamEvent = dart.constFn(html$.EventStreamProvider$(html$.MediaStreamEvent)))();
  let EventStreamProviderOfRtcDataChannelEvent = () => (EventStreamProviderOfRtcDataChannelEvent = dart.constFn(html$.EventStreamProvider$(html$.RtcDataChannelEvent)))();
  let EventStreamProviderOfRtcPeerConnectionIceEvent = () => (EventStreamProviderOfRtcPeerConnectionIceEvent = dart.constFn(html$.EventStreamProvider$(html$.RtcPeerConnectionIceEvent)))();
  let ListOfMediaStream = () => (ListOfMediaStream = dart.constFn(core.List$(html$.MediaStream)))();
  let IterableOfOptionElement = () => (IterableOfOptionElement = dart.constFn(core.Iterable$(html$.OptionElement)))();
  let UnmodifiableListViewOfOptionElement = () => (UnmodifiableListViewOfOptionElement = dart.constFn(collection.UnmodifiableListView$(html$.OptionElement)))();
  let OptionElementTobool = () => (OptionElementTobool = dart.constFn(dart.fnType(core.bool, [html$.OptionElement])))();
  let JSArrayOfOptionElement = () => (JSArrayOfOptionElement = dart.constFn(_interceptors.JSArray$(html$.OptionElement)))();
  let ListOfServiceWorkerRegistration = () => (ListOfServiceWorkerRegistration = dart.constFn(core.List$(html$.ServiceWorkerRegistration)))();
  let EventStreamProviderOfForeignFetchEvent = () => (EventStreamProviderOfForeignFetchEvent = dart.constFn(html$.EventStreamProvider$(html$.ForeignFetchEvent)))();
  let ListOfNotification = () => (ListOfNotification = dart.constFn(core.List$(html$.Notification)))();
  let JavaScriptIndexingBehaviorOfSourceBuffer = () => (JavaScriptIndexingBehaviorOfSourceBuffer = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.SourceBuffer)))();
  let ListOfSourceBuffer = () => (ListOfSourceBuffer = dart.constFn(core.List$(html$.SourceBuffer)))();
  let JavaScriptIndexingBehaviorOfSpeechGrammar = () => (JavaScriptIndexingBehaviorOfSpeechGrammar = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.SpeechGrammar)))();
  let ListOfSpeechGrammar = () => (ListOfSpeechGrammar = dart.constFn(core.List$(html$.SpeechGrammar)))();
  let EventStreamProviderOfSpeechRecognitionError = () => (EventStreamProviderOfSpeechRecognitionError = dart.constFn(html$.EventStreamProvider$(html$.SpeechRecognitionError)))();
  let EventStreamProviderOfSpeechRecognitionEvent = () => (EventStreamProviderOfSpeechRecognitionEvent = dart.constFn(html$.EventStreamProvider$(html$.SpeechRecognitionEvent)))();
  let ListOfSpeechRecognitionResult = () => (ListOfSpeechRecognitionResult = dart.constFn(core.List$(html$.SpeechRecognitionResult)))();
  let EventStreamProviderOfSpeechSynthesisEvent = () => (EventStreamProviderOfSpeechSynthesisEvent = dart.constFn(html$.EventStreamProvider$(html$.SpeechSynthesisEvent)))();
  let _WrappedListOfTableSectionElement = () => (_WrappedListOfTableSectionElement = dart.constFn(html$._WrappedList$(html$.TableSectionElement)))();
  let _WrappedListOfTableRowElement = () => (_WrappedListOfTableRowElement = dart.constFn(html$._WrappedList$(html$.TableRowElement)))();
  let _WrappedListOfTableCellElement = () => (_WrappedListOfTableCellElement = dart.constFn(html$._WrappedList$(html$.TableCellElement)))();
  let ListOfDetectedText = () => (ListOfDetectedText = dart.constFn(core.List$(html$.DetectedText)))();
  let ListOfTextTrackCue = () => (ListOfTextTrackCue = dart.constFn(core.List$(html$.TextTrackCue)))();
  let JavaScriptIndexingBehaviorOfTextTrackCue = () => (JavaScriptIndexingBehaviorOfTextTrackCue = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.TextTrackCue)))();
  let ListOfTextTrack = () => (ListOfTextTrack = dart.constFn(core.List$(html$.TextTrack)))();
  let JavaScriptIndexingBehaviorOfTextTrack = () => (JavaScriptIndexingBehaviorOfTextTrack = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.TextTrack)))();
  let EventStreamProviderOfTrackEvent = () => (EventStreamProviderOfTrackEvent = dart.constFn(html$.EventStreamProvider$(html$.TrackEvent)))();
  let JavaScriptIndexingBehaviorOfTouch = () => (JavaScriptIndexingBehaviorOfTouch = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.Touch)))();
  let ListOfTouch = () => (ListOfTouch = dart.constFn(core.List$(html$.Touch)))();
  let ListOfVRStageBoundsPoint = () => (ListOfVRStageBoundsPoint = dart.constFn(core.List$(html$.VRStageBoundsPoint)))();
  let EventStreamProviderOfCloseEvent = () => (EventStreamProviderOfCloseEvent = dart.constFn(html$.EventStreamProvider$(html$.CloseEvent)))();
  let CompleterOfnum = () => (CompleterOfnum = dart.constFn(async.Completer$(core.num)))();
  let numToNull = () => (numToNull = dart.constFn(dart.fnType(core.Null, [core.num])))();
  let CompleterOfFileSystem = () => (CompleterOfFileSystem = dart.constFn(async.Completer$(html$.FileSystem)))();
  let FileSystemToNull = () => (FileSystemToNull = dart.constFn(dart.fnType(core.Null, [html$.FileSystem])))();
  let EventStreamProviderOfDeviceMotionEvent = () => (EventStreamProviderOfDeviceMotionEvent = dart.constFn(html$.EventStreamProvider$(html$.DeviceMotionEvent)))();
  let EventStreamProviderOfDeviceOrientationEvent = () => (EventStreamProviderOfDeviceOrientationEvent = dart.constFn(html$.EventStreamProvider$(html$.DeviceOrientationEvent)))();
  let EventStreamProviderOfAnimationEvent = () => (EventStreamProviderOfAnimationEvent = dart.constFn(html$.EventStreamProvider$(html$.AnimationEvent)))();
  let _EventStreamOfBeforeUnloadEvent = () => (_EventStreamOfBeforeUnloadEvent = dart.constFn(html$._EventStream$(html$.BeforeUnloadEvent)))();
  let StreamControllerOfBeforeUnloadEvent = () => (StreamControllerOfBeforeUnloadEvent = dart.constFn(async.StreamController$(html$.BeforeUnloadEvent)))();
  let BeforeUnloadEventToNull = () => (BeforeUnloadEventToNull = dart.constFn(dart.fnType(core.Null, [html$.BeforeUnloadEvent])))();
  let _ElementEventStreamImplOfBeforeUnloadEvent = () => (_ElementEventStreamImplOfBeforeUnloadEvent = dart.constFn(html$._ElementEventStreamImpl$(html$.BeforeUnloadEvent)))();
  let _ElementListEventStreamImplOfBeforeUnloadEvent = () => (_ElementListEventStreamImplOfBeforeUnloadEvent = dart.constFn(html$._ElementListEventStreamImpl$(html$.BeforeUnloadEvent)))();
  let EventStreamProviderOfBeforeUnloadEvent = () => (EventStreamProviderOfBeforeUnloadEvent = dart.constFn(html$.EventStreamProvider$(html$.BeforeUnloadEvent)))();
  let JavaScriptIndexingBehaviorOfCssRule = () => (JavaScriptIndexingBehaviorOfCssRule = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.CssRule)))();
  let ListOfGamepad = () => (ListOfGamepad = dart.constFn(core.List$(html$.Gamepad)))();
  let JavaScriptIndexingBehaviorOfGamepad = () => (JavaScriptIndexingBehaviorOfGamepad = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.Gamepad)))();
  let JavaScriptIndexingBehaviorOfSpeechRecognitionResult = () => (JavaScriptIndexingBehaviorOfSpeechRecognitionResult = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.SpeechRecognitionResult)))();
  let JavaScriptIndexingBehaviorOfStyleSheet = () => (JavaScriptIndexingBehaviorOfStyleSheet = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.StyleSheet)))();
  let SetOfString = () => (SetOfString = dart.constFn(core.Set$(core.String)))();
  let ElementTodynamic = () => (ElementTodynamic = dart.constFn(dart.fnType(dart.dynamic, [html$.Element])))();
  let ElementToCssClassSet = () => (ElementToCssClassSet = dart.constFn(dart.fnType(html$.CssClassSet, [html$.Element])))();
  let ListOfCssClassSetImpl = () => (ListOfCssClassSetImpl = dart.constFn(core.List$(html_common.CssClassSetImpl)))();
  let _IdentityHashSetOfString = () => (_IdentityHashSetOfString = dart.constFn(collection._IdentityHashSet$(core.String)))();
  let CssClassSetImplTovoid = () => (CssClassSetImplTovoid = dart.constFn(dart.fnType(dart.void, [html_common.CssClassSetImpl])))();
  let CssClassSetImplTodynamic = () => (CssClassSetImplTodynamic = dart.constFn(dart.fnType(dart.dynamic, [html_common.CssClassSetImpl])))();
  let boolAndCssClassSetImplTobool = () => (boolAndCssClassSetImplTobool = dart.constFn(dart.fnType(core.bool, [core.bool, html_common.CssClassSetImpl])))();
  let StringAndStringToString = () => (StringAndStringToString = dart.constFn(dart.fnType(core.String, [core.String, core.String])))();
  let SetOfStringTobool = () => (SetOfStringTobool = dart.constFn(dart.fnType(core.bool, [SetOfString()])))();
  let SetOfStringTovoid = () => (SetOfStringTovoid = dart.constFn(dart.fnType(dart.void, [SetOfString()])))();
  let EventTodynamic = () => (EventTodynamic = dart.constFn(dart.fnType(dart.dynamic, [html$.Event])))();
  let EventTovoid = () => (EventTovoid = dart.constFn(dart.fnType(dart.void, [html$.Event])))();
  let CustomStreamOfKeyEvent = () => (CustomStreamOfKeyEvent = dart.constFn(html$.CustomStream$(html$.KeyEvent)))();
  let ElementAndStringAndString__Tobool = () => (ElementAndStringAndString__Tobool = dart.constFn(dart.fnType(core.bool, [html$.Element, core.String, core.String, html$._Html5NodeValidator])))();
  let IdentityMapOfString$Function = () => (IdentityMapOfString$Function = dart.constFn(_js_helper.IdentityMap$(core.String, core.Function)))();
  let JSArrayOfKeyEvent = () => (JSArrayOfKeyEvent = dart.constFn(_interceptors.JSArray$(html$.KeyEvent)))();
  let KeyEventTobool = () => (KeyEventTobool = dart.constFn(dart.fnType(core.bool, [html$.KeyEvent])))();
  let ListOfKeyEvent = () => (ListOfKeyEvent = dart.constFn(core.List$(html$.KeyEvent)))();
  let JSArrayOfNodeValidator = () => (JSArrayOfNodeValidator = dart.constFn(_interceptors.JSArray$(html$.NodeValidator)))();
  let NodeValidatorTobool = () => (NodeValidatorTobool = dart.constFn(dart.fnType(core.bool, [html$.NodeValidator])))();
  let ListOfNodeValidator = () => (ListOfNodeValidator = dart.constFn(core.List$(html$.NodeValidator)))();
  let NodeAndNodeToint = () => (NodeAndNodeToint = dart.constFn(dart.fnType(core.int, [html$.Node, html$.Node])))();
  let IteratorOfNode = () => (IteratorOfNode = dart.constFn(core.Iterator$(html$.Node)))();
  let NodeAndNodeTovoid = () => (NodeAndNodeTovoid = dart.constFn(dart.fnType(dart.void, [html$.Node, html$.Node])))();
  let dynamicAnddynamicTodynamic = () => (dynamicAnddynamicTodynamic = dart.constFn(dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic])))();
  let NodeToElement = () => (NodeToElement = dart.constFn(dart.fnType(html$.Element, [html$.Node])))();
  let ListOfLength = () => (ListOfLength = dart.constFn(core.List$(svg$.Length)))();
  let ListOfNumber = () => (ListOfNumber = dart.constFn(core.List$(svg$.Number)))();
  let ListOfTransform = () => (ListOfTransform = dart.constFn(core.List$(svg$.Transform)))();
  let FutureOfAudioBuffer = () => (FutureOfAudioBuffer = dart.constFn(async.Future$(web_audio.AudioBuffer)))();
  let CompleterOfAudioBuffer = () => (CompleterOfAudioBuffer = dart.constFn(async.Completer$(web_audio.AudioBuffer)))();
  let AudioBufferToNull = () => (AudioBufferToNull = dart.constFn(dart.fnType(core.Null, [web_audio.AudioBuffer])))();
  let EventStreamProviderOfAudioProcessingEvent = () => (EventStreamProviderOfAudioProcessingEvent = dart.constFn(html$.EventStreamProvider$(web_audio.AudioProcessingEvent)))();
  let CompleterOfSqlTransaction = () => (CompleterOfSqlTransaction = dart.constFn(async.Completer$(web_sql.SqlTransaction)))();
  let SqlTransactionToNull = () => (SqlTransactionToNull = dart.constFn(dart.fnType(core.Null, [web_sql.SqlTransaction])))();
  let SqlErrorToNull = () => (SqlErrorToNull = dart.constFn(dart.fnType(core.Null, [web_sql.SqlError])))();
  let ListOfMap = () => (ListOfMap = dart.constFn(core.List$(core.Map)))();
  let CompleterOfSqlResultSet = () => (CompleterOfSqlResultSet = dart.constFn(async.Completer$(web_sql.SqlResultSet)))();
  let SqlTransactionAndSqlResultSetToNull = () => (SqlTransactionAndSqlResultSetToNull = dart.constFn(dart.fnType(core.Null, [web_sql.SqlTransaction, web_sql.SqlResultSet])))();
  let SqlTransactionAndSqlErrorToNull = () => (SqlTransactionAndSqlErrorToNull = dart.constFn(dart.fnType(core.Null, [web_sql.SqlTransaction, web_sql.SqlError])))();
  let StreamOfHttpRequest = () => (StreamOfHttpRequest = dart.constFn(async.Stream$(_http.HttpRequest)))();
  let ListOfRedirectInfo = () => (ListOfRedirectInfo = dart.constFn(core.List$(_http.RedirectInfo)))();
  let StringAndListOfStringToListOfString = () => (StringAndListOfStringToListOfString = dart.constFn(dart.fnType(ListOfString(), [core.String, ListOfString()])))();
  let StringAndListOfStringToNull = () => (StringAndListOfStringToNull = dart.constFn(dart.fnType(core.Null, [core.String, ListOfString()])))();
  let JSArrayOfCookie = () => (JSArrayOfCookie = dart.constFn(_interceptors.JSArray$(_http.Cookie)))();
  let ListOfCookie = () => (ListOfCookie = dart.constFn(core.List$(_http.Cookie)))();
  let CookieToString = () => (CookieToString = dart.constFn(dart.fnType(core.String, [_http.Cookie])))();
  let CookieTobool = () => (CookieTobool = dart.constFn(dart.fnType(core.bool, [_http.Cookie])))();
  let FutureOfHttpClientResponse = () => (FutureOfHttpClientResponse = dart.constFn(async.Future$(_http.HttpClientResponse)))();
  let _HttpClientRequestToFutureOfHttpClientResponse = () => (_HttpClientRequestToFutureOfHttpClientResponse = dart.constFn(dart.fnType(FutureOfHttpClientResponse(), [_http._HttpClientRequest])))();
  let dynamicToFutureOfHttpClientResponse = () => (dynamicToFutureOfHttpClientResponse = dart.constFn(dart.fnType(FutureOfHttpClientResponse(), [dart.dynamic])))();
  let VoidToFutureOfHttpClientResponse = () => (VoidToFutureOfHttpClientResponse = dart.constFn(dart.fnType(FutureOfHttpClientResponse(), [])))();
  let _AuthenticationSchemeTo_Credentials = () => (_AuthenticationSchemeTo_Credentials = dart.constFn(dart.fnType(_http._Credentials, [_http._AuthenticationScheme])))();
  let _CredentialsTovoid = () => (_CredentialsTovoid = dart.constFn(dart.fnType(dart.void, [_http._Credentials])))();
  let _AuthenticationSchemeAndStringToFuture = () => (_AuthenticationSchemeAndStringToFuture = dart.constFn(dart.fnType(async.Future, [_http._AuthenticationScheme, core.String])))();
  let FutureOrOfHttpClientResponse = () => (FutureOrOfHttpClientResponse = dart.constFn(async.FutureOr$(_http.HttpClientResponse)))();
  let dynamicToFutureOrOfHttpClientResponse = () => (dynamicToFutureOrOfHttpClientResponse = dart.constFn(dart.fnType(FutureOrOfHttpClientResponse(), [dart.dynamic])))();
  let CookieToNull = () => (CookieToNull = dart.constFn(dart.fnType(core.Null, [_http.Cookie])))();
  let CompleterOfHttpClientResponse = () => (CompleterOfHttpClientResponse = dart.constFn(async.Completer$(_http.HttpClientResponse)))();
  let JSArrayOfRedirectInfo = () => (JSArrayOfRedirectInfo = dart.constFn(_interceptors.JSArray$(_http.RedirectInfo)))();
  let ListToFutureOrOfHttpClientResponse = () => (ListToFutureOrOfHttpClientResponse = dart.constFn(dart.fnType(FutureOrOfHttpClientResponse(), [core.List])))();
  let JSArrayOfFuture = () => (JSArrayOfFuture = dart.constFn(_interceptors.JSArray$(async.Future)))();
  let HttpClientResponseTovoid = () => (HttpClientResponseTovoid = dart.constFn(dart.fnType(dart.void, [_http.HttpClientResponse])))();
  let CompleterOfSocket = () => (CompleterOfSocket = dart.constFn(async.Completer$(io.Socket)))();
  let dynamicToIterable = () => (dynamicToIterable = dart.constFn(dart.fnType(core.Iterable, [dart.dynamic])))();
  let dynamicTo_HttpOutboundMessage = () => (dynamicTo_HttpOutboundMessage = dart.constFn(dart.fnType(_http._HttpOutboundMessage, [dart.dynamic])))();
  let dynamicAnddynamicTo_HttpOutboundMessage = () => (dynamicAnddynamicTo_HttpOutboundMessage = dart.constFn(dart.fnType(_http._HttpOutboundMessage, [dart.dynamic, dart.dynamic])))();
  let _HttpIncomingToNull = () => (_HttpIncomingToNull = dart.constFn(dart.fnType(core.Null, [_http._HttpIncoming])))();
  let CompleterOf_HttpIncoming = () => (CompleterOf_HttpIncoming = dart.constFn(async.Completer$(_http._HttpIncoming)))();
  let SocketToSocket = () => (SocketToSocket = dart.constFn(dart.fnType(io.Socket, [io.Socket])))();
  let SocketTo_DetachedSocket = () => (SocketTo_DetachedSocket = dart.constFn(dart.fnType(_http._DetachedSocket, [io.Socket])))();
  let SocketTovoid = () => (SocketTovoid = dart.constFn(dart.fnType(dart.void, [io.Socket])))();
  let SecureSocketTo_HttpClientConnection = () => (SecureSocketTo_HttpClientConnection = dart.constFn(dart.fnType(_http._HttpClientConnection, [io.SecureSocket])))();
  let HttpClientResponseToFutureOfSecureSocket = () => (HttpClientResponseToFutureOfSecureSocket = dart.constFn(dart.fnType(FutureOfSecureSocket(), [_http.HttpClientResponse])))();
  let FutureOf_HttpClientConnection = () => (FutureOf_HttpClientConnection = dart.constFn(async.Future$(_http._HttpClientConnection)))();
  let _HashSetOf_HttpClientConnection = () => (_HashSetOf_HttpClientConnection = dart.constFn(collection._HashSet$(_http._HttpClientConnection)))();
  let _HashSetOfConnectionTask = () => (_HashSetOfConnectionTask = dart.constFn(collection._HashSet$(io.ConnectionTask)))();
  let FutureOf_ConnectionInfo = () => (FutureOf_ConnectionInfo = dart.constFn(async.Future$(_http._ConnectionInfo)))();
  let CompleterOf_ConnectionInfo = () => (CompleterOf_ConnectionInfo = dart.constFn(async.Completer$(_http._ConnectionInfo)))();
  let X509CertificateTobool = () => (X509CertificateTobool = dart.constFn(dart.fnType(core.bool, [io.X509Certificate])))();
  let _HttpClientConnectionTo_ConnectionInfo = () => (_HttpClientConnectionTo_ConnectionInfo = dart.constFn(dart.fnType(_http._ConnectionInfo, [_http._HttpClientConnection])))();
  let FutureOrOf_ConnectionInfo = () => (FutureOrOf_ConnectionInfo = dart.constFn(async.FutureOr$(_http._ConnectionInfo)))();
  let dynamicToFutureOrOf_ConnectionInfo = () => (dynamicToFutureOrOf_ConnectionInfo = dart.constFn(dart.fnType(FutureOrOf_ConnectionInfo(), [dart.dynamic])))();
  let ConnectionTaskToFutureOf_ConnectionInfo = () => (ConnectionTaskToFutureOf_ConnectionInfo = dart.constFn(dart.fnType(FutureOf_ConnectionInfo(), [io.ConnectionTask])))();
  let SetOf_HttpClientConnection = () => (SetOf_HttpClientConnection = dart.constFn(core.Set$(_http._HttpClientConnection)))();
  let SetOfConnectionTask = () => (SetOfConnectionTask = dart.constFn(core.Set$(io.ConnectionTask)))();
  let IdentityMapOfString$_ConnectionTarget = () => (IdentityMapOfString$_ConnectionTarget = dart.constFn(_js_helper.IdentityMap$(core.String, _http._ConnectionTarget)))();
  let JSArrayOf_Credentials = () => (JSArrayOf_Credentials = dart.constFn(_interceptors.JSArray$(_http._Credentials)))();
  let JSArrayOf_ProxyCredentials = () => (JSArrayOf_ProxyCredentials = dart.constFn(_interceptors.JSArray$(_http._ProxyCredentials)))();
  let Uri__ToString = () => (Uri__ToString = dart.constFn(dart.fnType(core.String, [core.Uri], {environment: MapOfString$String()})))();
  let _ConnectionTargetTobool = () => (_ConnectionTargetTobool = dart.constFn(dart.fnType(core.bool, [_http._ConnectionTarget])))();
  let FutureOf_HttpClientRequest = () => (FutureOf_HttpClientRequest = dart.constFn(async.Future$(_http._HttpClientRequest)))();
  let _ConnectionInfoTo_HttpClientRequest = () => (_ConnectionInfoTo_HttpClientRequest = dart.constFn(dart.fnType(_http._HttpClientRequest, [_http._ConnectionInfo])))();
  let FutureOrOf_HttpClientRequest = () => (FutureOrOf_HttpClientRequest = dart.constFn(async.FutureOr$(_http._HttpClientRequest)))();
  let _ConnectionInfoToFutureOrOf_HttpClientRequest = () => (_ConnectionInfoToFutureOrOf_HttpClientRequest = dart.constFn(dart.fnType(FutureOrOf_HttpClientRequest(), [_http._ConnectionInfo])))();
  let _HttpClientRequestTo_HttpClientRequest = () => (_HttpClientRequestTo_HttpClientRequest = dart.constFn(dart.fnType(_http._HttpClientRequest, [_http._HttpClientRequest])))();
  let VoidTo_ConnectionTarget = () => (VoidTo_ConnectionTarget = dart.constFn(dart.fnType(_http._ConnectionTarget, [])))();
  let dynamicToFutureOf_ConnectionInfo = () => (dynamicToFutureOf_ConnectionInfo = dart.constFn(dart.fnType(FutureOf_ConnectionInfo(), [dart.dynamic])))();
  let _SiteCredentialsAnd_CredentialsTo_SiteCredentials = () => (_SiteCredentialsAnd_CredentialsTo_SiteCredentials = dart.constFn(dart.fnType(_http._SiteCredentials, [_http._SiteCredentials, _http._Credentials])))();
  let MapOfString$_ConnectionTarget = () => (MapOfString$_ConnectionTarget = dart.constFn(core.Map$(core.String, _http._ConnectionTarget)))();
  let ListOf_Credentials = () => (ListOf_Credentials = dart.constFn(core.List$(_http._Credentials)))();
  let ListOf_ProxyCredentials = () => (ListOf_ProxyCredentials = dart.constFn(core.List$(_http._ProxyCredentials)))();
  let X509CertificateAndStringAndintTobool = () => (X509CertificateAndStringAndintTobool = dart.constFn(dart.fnType(core.bool, [io.X509Certificate, core.String, core.int])))();
  let SocketToNull = () => (SocketToNull = dart.constFn(dart.fnType(core.Null, [io.Socket])))();
  let dynamicTo_DetachedSocket = () => (dynamicTo_DetachedSocket = dart.constFn(dart.fnType(_http._DetachedSocket, [dart.dynamic])))();
  let IdentityMapOfint$_HttpConnection = () => (IdentityMapOfint$_HttpConnection = dart.constFn(_js_helper.IdentityMap$(core.int, _http._HttpConnection)))();
  let LinkedListOf_HttpConnection = () => (LinkedListOf_HttpConnection = dart.constFn(collection.LinkedList$(_http._HttpConnection)))();
  let StreamControllerOfHttpRequest = () => (StreamControllerOfHttpRequest = dart.constFn(async.StreamController$(_http.HttpRequest)))();
  let ServerSocketTo_HttpServer = () => (ServerSocketTo_HttpServer = dart.constFn(dart.fnType(_http._HttpServer, [io.ServerSocket])))();
  let FutureOfHttpServer = () => (FutureOfHttpServer = dart.constFn(async.Future$(_http.HttpServer)))();
  let SecureServerSocketTo_HttpServer = () => (SecureServerSocketTo_HttpServer = dart.constFn(dart.fnType(_http._HttpServer, [io.SecureServerSocket])))();
  let _HttpConnectionToNull = () => (_HttpConnectionToNull = dart.constFn(dart.fnType(core.Null, [_http._HttpConnection])))();
  let _HttpConnectionToMap = () => (_HttpConnectionToMap = dart.constFn(dart.fnType(core.Map, [_http._HttpConnection])))();
  let IterableOfMap = () => (IterableOfMap = dart.constFn(core.Iterable$(core.Map)))();
  let IdentityMapOfint$_HttpServer = () => (IdentityMapOfint$_HttpServer = dart.constFn(_js_helper.IdentityMap$(core.int, _http._HttpServer)))();
  let JSArrayOf_Proxy = () => (JSArrayOf_Proxy = dart.constFn(_interceptors.JSArray$(_http._Proxy)))();
  let ListOf_Proxy = () => (ListOf_Proxy = dart.constFn(core.List$(_http._Proxy)))();
  let StreamSubscriptionOfListOfint = () => (StreamSubscriptionOfListOfint = dart.constFn(async.StreamSubscription$(ListOfint())))();
  let StreamControllerOf_HttpIncoming = () => (StreamControllerOf_HttpIncoming = dart.constFn(async.StreamController$(_http._HttpIncoming)))();
  let IdentityMapOfString$_HttpSession = () => (IdentityMapOfString$_HttpSession = dart.constFn(_js_helper.IdentityMap$(core.String, _http._HttpSession)))();
  let MapOfString$_HttpSession = () => (MapOfString$_HttpSession = dart.constFn(core.Map$(core.String, _http._HttpSession)))();
  let SecurityContextToHttpClient = () => (SecurityContextToHttpClient = dart.constFn(dart.fnType(_http.HttpClient, [io.SecurityContext])))();
  let UriAndMapOfString$StringToString = () => (UriAndMapOfString$StringToString = dart.constFn(dart.fnType(core.String, [core.Uri, MapOfString$String()])))();
  let StreamTransformerOfHttpRequest$WebSocket = () => (StreamTransformerOfHttpRequest$WebSocket = dart.constFn(async.StreamTransformer$(_http.HttpRequest, _http.WebSocket)))();
  let EventSinkTo_WebSocketProtocolTransformer = () => (EventSinkTo_WebSocketProtocolTransformer = dart.constFn(dart.fnType(_http._WebSocketProtocolTransformer, [async.EventSink])))();
  let EventSinkOfListOfint = () => (EventSinkOfListOfint = dart.constFn(async.EventSink$(ListOfint())))();
  let StreamControllerOfWebSocket = () => (StreamControllerOfWebSocket = dart.constFn(async.StreamController$(_http.WebSocket)))();
  let WebSocketTovoid = () => (WebSocketTovoid = dart.constFn(dart.fnType(dart.void, [_http.WebSocket])))();
  let HttpRequestToNull = () => (HttpRequestToNull = dart.constFn(dart.fnType(core.Null, [_http.HttpRequest])))();
  let FutureOfWebSocket = () => (FutureOfWebSocket = dart.constFn(async.Future$(_http.WebSocket)))();
  let SocketTo_WebSocketImpl = () => (SocketTo_WebSocketImpl = dart.constFn(dart.fnType(_http._WebSocketImpl, [io.Socket])))();
  let StringToFutureOfWebSocket = () => (StringToFutureOfWebSocket = dart.constFn(dart.fnType(FutureOfWebSocket(), [core.String])))();
  let VoidToFutureOrOfString = () => (VoidToFutureOrOfString = dart.constFn(dart.fnType(FutureOrOfString(), [])))();
  let ListOfStringTodynamic = () => (ListOfStringTodynamic = dart.constFn(dart.fnType(dart.dynamic, [ListOfString()])))();
  let EventSinkOfListOfintTo_WebSocketOutgoingTransformer = () => (EventSinkOfListOfintTo_WebSocketOutgoingTransformer = dart.constFn(dart.fnType(_http._WebSocketOutgoingTransformer, [EventSinkOfListOfint()])))();
  let CompleterOfWebSocket = () => (CompleterOfWebSocket = dart.constFn(async.Completer$(_http.WebSocket)))();
  let dynamicTo_WebSocketImpl = () => (dynamicTo_WebSocketImpl = dart.constFn(dart.fnType(_http._WebSocketImpl, [dart.dynamic])))();
  let HttpClientResponseToFutureOfWebSocket = () => (HttpClientResponseToFutureOfWebSocket = dart.constFn(dart.fnType(FutureOfWebSocket(), [_http.HttpClientResponse])))();
  let HttpClientRequestToFutureOfHttpClientResponse = () => (HttpClientRequestToFutureOfHttpClientResponse = dart.constFn(dart.fnType(FutureOfHttpClientResponse(), [_http.HttpClientRequest])))();
  let dynamicToMap = () => (dynamicToMap = dart.constFn(dart.fnType(core.Map, [dart.dynamic])))();
  let IdentityMapOfint$_WebSocketImpl = () => (IdentityMapOfint$_WebSocketImpl = dart.constFn(_js_helper.IdentityMap$(core.int, _http._WebSocketImpl)))();
  dart.polyfill = function(window) {
    if (window[dart._polyfilled]) return false;
    window[dart._polyfilled] = true;
    if (typeof window.NodeList !== "undefined") {
      window.NodeList.prototype.get = function(i) {
        return this[i];
      };
      window.NamedNodeMap.prototype.get = function(i) {
        return this[i];
      };
      window.DOMTokenList.prototype.get = function(i) {
        return this[i];
      };
      window.HTMLCollection.prototype.get = function(i) {
        return this[i];
      };
      if (typeof window.PannerNode == "undefined") {
        let audioContext;
        if (typeof window.AudioContext == "undefined" && typeof window.webkitAudioContext != "undefined") {
          audioContext = new window.webkitAudioContext();
        } else {
          audioContext = new window.AudioContext();
          window.StereoPannerNode = audioContext.createStereoPanner().constructor;
        }
        window.PannerNode = audioContext.createPanner().constructor;
      }
      if (typeof window.AudioSourceNode == "undefined") {
        window.AudioSourceNode = MediaElementAudioSourceNode.__proto__;
      }
      if (typeof window.FontFaceSet == "undefined") {
        if (typeof window.document.fonts != "undefined") {
          window.FontFaceSet = window.document.fonts.__proto__.constructor;
        }
      }
      if (typeof window.MemoryInfo == "undefined") {
        if (typeof window.performance.memory != "undefined") {
          window.MemoryInfo = window.performance.memory.constructor;
        }
      }
      if (typeof window.Geolocation == "undefined") {
        window.Geolocation == window.navigator.geolocation.constructor;
      }
      if (typeof window.Animation == "undefined") {
        let d = window.document.createElement('div');
        if (typeof d.animate != "undefined") {
          window.Animation = d.animate(d).constructor;
        }
      }
      if (typeof window.SourceBufferList == "undefined") {
        window.SourceBufferList = new window.MediaSource().sourceBuffers.constructor;
      }
      if (typeof window.SpeechRecognition == "undefined") {
        window.SpeechRecognition = window.webkitSpeechRecognition;
        window.SpeechRecognitionError = window.webkitSpeechRecognitionError;
        window.SpeechRecognitionEvent = window.webkitSpeechRecognitionEvent;
      }
    }
    return true;
  };
  dart.trackProfile = function(flag) {
    dart.__trackProfile = flag;
  };
  dart.setStartAsyncSynchronously = function(value) {
    if (value === void 0) value = true;
    dart.startAsyncSynchronously = value;
  };
  dart.hotRestart = function() {
    for (let f of dart._resetFields)
      f();
    dart._resetFields[$clear]();
    for (let m of dart._cacheMaps)
      m.clear();
    dart._cacheMaps[$clear]();
    dart.constantMaps.clear();
    dart._ignoreSubtypeCache.clear();
  };
  dart.defineValue = function(obj, name, value) {
    dart.defineAccessor(obj, name, {value: value, configurable: true, writable: true});
    return value;
  };
  dart.throwTypeError = function(message) {
    if (dart.__trapRuntimeErrors) debugger;
    dart.throw(new _js_helper.TypeErrorImpl.new(message));
  };
  dart.throwInternalError = function(message) {
    if (dart.__trapRuntimeErrors) debugger;
    throw Error(message);
  };
  dart.getOwnNamesAndSymbols = function(obj) {
    let names = dart.getOwnPropertyNames(obj);
    let symbols = dart.getOwnPropertySymbols(obj);
    return names.concat(symbols);
  };
  dart.safeGetOwnProperty = function(obj, name) {
    let desc = dart.getOwnPropertyDescriptor(obj, name);
    if (desc != null) return desc.value;
  };
  dart.defineLazyField = function(to, name, desc) {
    const initializer = desc.get;
    let init = initializer;
    let value = null;
    desc.get = function() {
      if (init == null) return value;
      let f = init;
      init = dart.throwCyclicInitializationError;
      if (f === init) f(name);
      try {
        value = f();
        init = null;
        return value;
      } catch (e) {
        init = null;
        value = null;
        throw e;
      }
    };
    desc.configurable = true;
    if (desc.set != null) {
      desc.set = function(x) {
        init = null;
        value = x;
      };
    }
    dart._resetFields.push(() => {
      init = initializer;
      value = null;
    });
    return dart.defineProperty(to, name, desc);
  };
  dart.copyTheseProperties = function(to, from, names) {
    for (let i = 0, n = names.length; i < n; ++i) {
      let name = names[i];
      if (dart.equals(name, "constructor")) continue;
      dart.copyProperty(to, from, name);
    }
    return to;
  };
  dart.copyProperty = function(to, from, name) {
    let desc = dart.getOwnPropertyDescriptor(from, name);
    if (name == Symbol.iterator) {
      let existing = dart.getOwnPropertyDescriptor(to, name);
      if (existing != null) {
        if (existing.writable) {
          to[name] = desc.value;
        }
        return;
      }
    }
    dart.defineProperty(to, name, desc);
  };
  dart.export = function(to, from, name) {
    return dart.copyProperty(to, from, name);
  };
  dart.copyProperties = function(to, from) {
    return dart.copyTheseProperties(to, from, dart.getOwnNamesAndSymbols(from));
  };
  dart.applyMixin = function(to, from) {
    to[dart._mixin] = from;
    let toProto = to.prototype;
    let fromProto = from.prototype;
    dart._copyMembers(toProto, fromProto);
    dart._mixinSignature(to, from, dart._methodSig);
    dart._mixinSignature(to, from, dart._fieldSig);
    dart._mixinSignature(to, from, dart._getterSig);
    dart._mixinSignature(to, from, dart._setterSig);
    let mixinOnFn = from[dart.mixinOn];
    if (mixinOnFn != null) {
      let proto = mixinOnFn(to.__proto__).prototype;
      dart._copyMembers(toProto, proto);
    }
  };
  dart._copyMembers = function(to, from) {
    let names = dart.getOwnNamesAndSymbols(from);
    for (let i = 0, n = names.length; i < n; ++i) {
      let name = names[i];
      if (name === "constructor") continue;
      dart._copyMember(to, from, name);
    }
    return to;
  };
  dart._copyMember = function(to, from, name) {
    let desc = dart.getOwnPropertyDescriptor(from, name);
    if (name == Symbol.iterator) {
      let existing = dart.getOwnPropertyDescriptor(to, name);
      if (existing != null) {
        if (existing.writable) {
          to[name] = desc.value;
        }
        return;
      }
    }
    let getter = desc.get;
    let setter = desc.set;
    if (getter != null) {
      if (setter == null) {
        let obj = desc.set = {
          __proto__: to.__proto__,
          set [name](x) {
            return super[name] = x;
          }
        };
        desc.set = dart.getOwnPropertyDescriptor(obj, name).set;
      }
    } else if (setter != null) {
      if (getter == null) {
        let obj = desc.get = {
          __proto__: to.__proto__,
          get [name]() {
            return super[name];
          }
        };
        desc.get = dart.getOwnPropertyDescriptor(obj, name).get;
      }
    }
    dart.defineProperty(to, name, desc);
  };
  dart._mixinSignature = function(to, from, kind) {
    to[kind] = () => {
      let baseMembers = dart._getMembers(to.__proto__, kind);
      let fromMembers = dart._getMembers(from, kind);
      if (fromMembers == null) return baseMembers;
      let toSignature = {__proto__: baseMembers};
      dart.copyProperties(toSignature, fromMembers);
      return toSignature;
    };
  };
  dart.getMixin = function(clazz) {
    return Object.hasOwnProperty.call(clazz, dart._mixin) ? clazz[dart._mixin] : null;
  };
  dart.getImplements = function(clazz) {
    return Object.hasOwnProperty.call(clazz, dart.implements) ? clazz[dart.implements] : null;
  };
  dart.generic = function(typeConstructor, setBaseClass) {
    let length = typeConstructor.length;
    if (length < 1) {
      dart.throwInternalError('must have at least one generic type argument');
    }
    let resultMap = new Map();
    dart._cacheMaps.push(resultMap);
    function makeGenericType(...args) {
      if (args.length != length && args.length != 0) {
        dart.throwInternalError('requires ' + length + ' or 0 type arguments');
      }
      while (args.length < length)
        args.push(dart.dynamic);
      let value = resultMap;
      for (let i = 0; i < length; i++) {
        let arg = args[i];
        if (arg == null) {
          dart.throwInternalError('type arguments should not be null: ' + typeConstructor);
        }
        let map = value;
        value = map.get(arg);
        if (value === void 0) {
          if (i + 1 == length) {
            value = typeConstructor.apply(null, args);
            if (value) {
              value[dart._typeArguments] = args;
              value[dart._originalDeclaration] = makeGenericType;
            }
            map.set(arg, value);
            if (setBaseClass != null) setBaseClass.apply(null, args);
          } else {
            value = new Map();
            map.set(arg, value);
          }
        }
      }
      return value;
    }
    makeGenericType[dart._genericTypeCtor] = typeConstructor;
    return makeGenericType;
  };
  dart.getGenericClass = function(type) {
    return dart.safeGetOwnProperty(type, dart._originalDeclaration);
  };
  dart.getGenericArgs = function(type) {
    return dart.safeGetOwnProperty(type, dart._typeArguments);
  };
  dart.getGenericTypeFormals = function(genericClass) {
    return dart._typeFormalsFromFunction(dart.getGenericTypeCtor(genericClass));
  };
  dart.instantiateClass = function(genericClass, typeArgs) {
    return genericClass.apply(null, typeArgs);
  };
  dart.getConstructors = function(value) {
    return dart._getMembers(value, dart._constructorSig);
  };
  dart.getMethods = function(value) {
    return dart._getMembers(value, dart._methodSig);
  };
  dart.getFields = function(value) {
    return dart._getMembers(value, dart._fieldSig);
  };
  dart.getGetters = function(value) {
    return dart._getMembers(value, dart._getterSig);
  };
  dart.getSetters = function(value) {
    return dart._getMembers(value, dart._setterSig);
  };
  dart.getStaticMethods = function(value) {
    return dart._getMembers(value, dart._staticMethodSig);
  };
  dart.getStaticFields = function(value) {
    return dart._getMembers(value, dart._staticFieldSig);
  };
  dart.getStaticGetters = function(value) {
    return dart._getMembers(value, dart._staticGetterSig);
  };
  dart.getStaticSetters = function(value) {
    return dart._getMembers(value, dart._staticSetterSig);
  };
  dart.getGenericTypeCtor = function(value) {
    return value[dart._genericTypeCtor];
  };
  dart.getType = function(obj) {
    return obj == null ? core.Object : obj.__proto__.constructor;
  };
  dart.isJsInterop = function(obj) {
    if (obj == null) return false;
    if (typeof obj === "function") {
      return obj[dart._runtimeType] == null;
    }
    if (typeof obj !== "object") return false;
    if (obj[dart._extensionType] != null) return false;
    return !(obj instanceof core.Object);
  };
  dart.getMethodType = function(type, name) {
    let m = dart.getMethods(type);
    return m != null ? m[name] : null;
  };
  dart.getSetterType = function(type, name) {
    let setters = dart.getSetters(type);
    if (setters != null) {
      let type = setters[name];
      if (type != null) {
        if (type instanceof Array) {
          return type[0];
        }
        return type;
      }
    }
    let fields = dart.getFields(type);
    if (fields != null) {
      let fieldInfo = fields[name];
      if (fieldInfo != null && !fieldInfo.isFinal) {
        return fieldInfo.type;
      }
    }
    return null;
  };
  dart.finalFieldType = function(type, metadata) {
    return {type: type, isFinal: true, metadata: metadata};
  };
  dart.fieldType = function(type, metadata) {
    return {type: type, isFinal: false, metadata: metadata};
  };
  dart.classGetConstructorType = function(cls, name) {
    if (cls == null) return null;
    if (name == null) name = "new";
    let ctors = dart.getConstructors(cls);
    return ctors != null ? ctors[name] : null;
  };
  dart.setMethodSignature = function(f, sigF) {
    return f[dart._methodSig] = sigF;
  };
  dart.setFieldSignature = function(f, sigF) {
    return f[dart._fieldSig] = sigF;
  };
  dart.setGetterSignature = function(f, sigF) {
    return f[dart._getterSig] = sigF;
  };
  dart.setSetterSignature = function(f, sigF) {
    return f[dart._setterSig] = sigF;
  };
  dart.setConstructorSignature = function(f, sigF) {
    return f[dart._constructorSig] = sigF;
  };
  dart.setStaticMethodSignature = function(f, sigF) {
    return f[dart._staticMethodSig] = sigF;
  };
  dart.setStaticFieldSignature = function(f, sigF) {
    return f[dart._staticFieldSig] = sigF;
  };
  dart.setStaticGetterSignature = function(f, sigF) {
    return f[dart._staticGetterSig] = sigF;
  };
  dart.setStaticSetterSignature = function(f, sigF) {
    return f[dart._staticSetterSig] = sigF;
  };
  dart._getMembers = function(type, kind) {
    let sig = type[kind];
    return typeof sig == "function" ? type[kind] = sig() : sig;
  };
  dart._hasMember = function(type, kind, name) {
    let sig = dart._getMembers(type, kind);
    return sig != null && name in sig;
  };
  dart.hasMethod = function(type, name) {
    return dart._hasMember(type, dart._methodSig, name);
  };
  dart.hasGetter = function(type, name) {
    return dart._hasMember(type, dart._getterSig, name);
  };
  dart.hasSetter = function(type, name) {
    return dart._hasMember(type, dart._setterSig, name);
  };
  dart.hasField = function(type, name) {
    return dart._hasMember(type, dart._fieldSig, name);
  };
  dart._installProperties = function(jsProto, dartType, installedParent) {
    if (dartType === core.Object) {
      dart._installPropertiesForObject(jsProto);
      return;
    }
    let dartSupertype = dartType.__proto__;
    if (dartSupertype !== installedParent) {
      dart._installProperties(jsProto, dartSupertype, installedParent);
    }
    let dartProto = dartType.prototype;
    dart.copyTheseProperties(jsProto, dartProto, dart.getOwnPropertySymbols(dartProto));
  };
  dart._installPropertiesForObject = function(jsProto) {
    let coreObjProto = core.Object.prototype;
    let names = dart.getOwnPropertyNames(coreObjProto);
    for (let i = 0, n = names.length; i < n; ++i) {
      let name = names[i];
      if (name === "constructor") continue;
      let desc = dart.getOwnPropertyDescriptor(coreObjProto, name);
      dart.defineProperty(jsProto, dart.dartx[name], desc);
    }
  };
  dart._installPropertiesForGlobalObject = function(jsProto) {
    dart._installPropertiesForObject(jsProto);
    jsProto[dartx.toString] = function() {
      return this.toString();
    };
    let t = dart.identityEquals;
    t == null ? dart.identityEquals = jsProto[dartx._equals] : t;
  };
  dart._applyExtension = function(jsType, dartExtType) {
    if (jsType == null) return;
    let jsProto = jsType.prototype;
    if (jsProto == null) return;
    if (dartExtType === core.Object) {
      dart._installPropertiesForGlobalObject(jsProto);
      return;
    }
    dart._installProperties(jsProto, dartExtType, jsProto[dart._extensionType]);
    if (dartExtType !== _interceptors.JSFunction) {
      jsProto[dart._extensionType] = dartExtType;
    }
    jsType[dart._methodSig] = dartExtType[dart._methodSig];
    jsType[dart._fieldSig] = dartExtType[dart._fieldSig];
    jsType[dart._getterSig] = dartExtType[dart._getterSig];
    jsType[dart._setterSig] = dartExtType[dart._setterSig];
  };
  dart.applyExtension = function(name, nativeObject) {
    let dartExtType = dart._extensionMap.get(name);
    let jsType = nativeObject.constructor;
    dart._applyExtension(jsType, dartExtType);
  };
  dart.applyAllExtensions = function(global) {
    dart._extensionMap.forEach((dartExtType, name) => dart._applyExtension(global[name], dartExtType));
  };
  dart.registerExtension = function(name, dartExtType) {
    dart._extensionMap.set(name, dartExtType);
    let jsType = dart.global[name];
    dart._applyExtension(jsType, dartExtType);
  };
  dart.defineExtensionMethods = function(type, memberNames) {
    let proto = type.prototype;
    for (let name of memberNames) {
      proto[dartx[name]] = proto[name];
    }
  };
  dart.defineExtensionAccessors = function(type, memberNames) {
    let proto = type.prototype;
    for (let name of memberNames) {
      let member = null;
      let p = proto;
      for (;; p = p.__proto__) {
        member = dart.getOwnPropertyDescriptor(p, name);
        if (member != null) break;
      }
      dart.defineProperty(proto, dartx[name], member);
    }
  };
  dart.definePrimitiveHashCode = function(proto) {
    dart.defineProperty(proto, dart.identityHashCode_, dart.getOwnPropertyDescriptor(proto, $hashCode));
  };
  dart.setBaseClass = function(derived, base) {
    derived.prototype.__proto__ = base.prototype;
    derived.__proto__ = base;
  };
  dart.setExtensionBaseClass = function(dartType, jsType) {
    let dartProto = dartType.prototype;
    dartProto[dart._extensionType] = dartType;
    dartProto.__proto__ = jsType.prototype;
  };
  dart.addTypeTests = function(ctor, isClass) {
    if (isClass == null) isClass = Symbol("_is_" + ctor.name);
    ctor.prototype[isClass] = true;
    ctor.is = function is_C(obj) {
      return obj != null && (obj[isClass] || dart.is(obj, this));
    };
    ctor.as = function as_C(obj) {
      if (obj == null || obj[isClass]) return obj;
      return dart.as(obj, this, false);
    };
    ctor._check = function check_C(obj) {
      if (obj == null || obj[isClass]) return obj;
      return dart.as(obj, this, true);
    };
  };
  dart.fn = function(closure, type) {
    closure[dart._runtimeType] = type;
    return closure;
  };
  dart.lazyFn = function(closure, computeType) {
    dart.defineAccessor(closure, dart._runtimeType, {
      get: () => dart.defineValue(closure, dart._runtimeType, computeType()),
      set: value => dart.defineValue(closure, dart._runtimeType, value),
      configurable: true
    });
    return closure;
  };
  dart.getFunctionType = function(obj) {
    let args = Array(obj.length).fill(dart.dynamic);
    return dart.fnType(dart.bottom, args, void 0);
  };
  dart.getReifiedType = function(obj) {
    switch (typeof obj) {
      case "object":
      {
        if (obj == null) return core.Null;
        if (obj instanceof core.Object) {
          return obj.constructor;
        }
        let result = obj[dart._extensionType];
        if (result == null) return dart.jsobject;
        return result;
      }
      case "function":
      {
        let result = obj[dart._runtimeType];
        if (result != null) return result;
        return dart.jsobject;
      }
      case "undefined":
      {
        return core.Null;
      }
      case "number":
      {
        return Math.floor(obj) == obj ? core.int : core.double;
      }
      case "boolean":
      {
        return core.bool;
      }
      case "string":
      {
        return core.String;
      }
      case "symbol":
      default:
      {
        return dart.jsobject;
      }
    }
  };
  dart.getModuleName = function(module) {
    return module[dart._moduleName];
  };
  dart.getModuleNames = function() {
    return JSArrayOfString().of(Array.from(dart._loadedModules.keys()));
  };
  dart.getSourceMap = function(moduleName) {
    return dart._loadedSourceMaps.get(moduleName);
  };
  dart.getModuleLibraries = function(name) {
    let module = dart._loadedModules.get(name);
    if (module == null) return null;
    module[dart._moduleName] = name;
    return module;
  };
  dart.trackLibraries = function(moduleName, libraries, sourceMap) {
    dart._loadedSourceMaps.set(moduleName, sourceMap);
    dart._loadedModules.set(moduleName, libraries);
  };
  dart._isJsObject = function(obj) {
    return dart.getReifiedType(obj) === dart.jsobject;
  };
  dart._warn = function(arg) {
    console.warn(arg);
  };
  dart.lazyJSType = function(getJSTypeCallback, name) {
    let ret = dart._lazyJSTypes.get(name);
    if (ret == null) {
      ret = new dart.LazyJSType.new(getJSTypeCallback, name);
      dart._lazyJSTypes.set(name, ret);
    }
    return ret;
  };
  dart.anonymousJSType = function(name) {
    let ret = dart._anonymousJSTypes.get(name);
    if (ret == null) {
      ret = new dart.AnonymousJSType.new(name);
      dart._anonymousJSTypes.set(name, ret);
    }
    return ret;
  };
  dart.wrapType = function(type) {
    if (type.hasOwnProperty(dart._typeObject)) {
      return type[dart._typeObject];
    }
    let result = new dart._Type.new(type);
    type[dart._typeObject] = result;
    return result;
  };
  dart.unwrapType = function(obj) {
    return obj[_type];
  };
  dart._memoizeArray = function(map, arr, create) {
    let len = arr.length;
    map = dart._lookupNonTerminal(map, len);
    for (var i = 0; i < len - 1; ++i) {
      map = dart._lookupNonTerminal(map, arr[i]);
    }
    let result = map.get(arr[len - 1]);
    if (result !== void 0) return result;
    map.set(arr[len - 1], result = create());
    return result;
  };
  dart._canonicalizeArray = function(array, map) {
    return dart._memoizeArray(map, array, () => array);
  };
  dart._canonicalizeNamed = function(named, map) {
    let key = [];
    let names = dart.getOwnPropertyNames(named);
    for (var i = 0; i < names.length; ++i) {
      let name = names[i];
      let type = named[name];
      key.push(name);
      key.push(type);
    }
    return dart._memoizeArray(map, key, () => named);
  };
  dart._createSmall = function(returnType, required) {
    let count = required.length;
    let map = dart._fnTypeSmallMap[count];
    for (var i = 0; i < count; ++i) {
      map = dart._lookupNonTerminal(map, required[i]);
    }
    let result = map.get(returnType);
    if (result !== void 0) return result;
    result = new dart.FunctionType.new(returnType, required, [], {});
    map.set(returnType, result);
    return result;
  };
  dart._typeFormalsFromFunction = function(typeConstructor) {
    let str = typeConstructor.toString();
    let hasParens = str[$_get](0) === "(";
    let end = str[$indexOf](hasParens ? ")" : "=>");
    if (hasParens) {
      return IterableOfTypeVariable()._check(str[$substring](1, end)[$split](",")[$map](dart.TypeVariable, n => new dart.TypeVariable.new(n[$trim]())))[$toList]();
    } else {
      return JSArrayOfTypeVariable().of([new dart.TypeVariable.new(str[$substring](0, end)[$trim]())]);
    }
  };
  dart.fnType = function(returnType, args, extra) {
    return dart.FunctionType.create(returnType, args, extra);
  };
  dart.gFnType = function(instantiateFn, typeBounds) {
    return new dart.GenericFunctionType.new(instantiateFn, typeBounds);
  };
  dart.getFunctionTypeMirror = function(type) {
    if (dart.GenericFunctionType.is(type)) {
      let typeArgs = ListOfType().filled(type.formalCount, dart.wrapType(dart.dynamic));
      return type.instantiate(typeArgs);
    }
    return type;
  };
  dart.isType = function(obj) {
    return obj[dart._runtimeType] === core.Type;
  };
  dart.checkTypeBound = function(type, bound, name) {
    if (!dart.isSubtypeOf(type, bound)) {
      dart.throwTypeError("type `" + dart.str(type) + "` does not extend `" + dart.str(bound) + "` of `" + name + "`.");
    }
  };
  dart.typeName = function(type) {
    if (type === void 0) return "undefined type";
    if (type === null) return "null type";
    if (type instanceof dart.DartType) {
      return type.toString();
    }
    let tag = type[dart._runtimeType];
    if (tag === core.Type) {
      let name = type.name;
      let args = dart.getGenericArgs(type);
      if (args == null) return name;
      if (dart.getGenericClass(type) == _interceptors.JSArray$) name = 'List';
      let result = name;
      result += '<';
      for (let i = 0; i < args.length; ++i) {
        if (i > 0) result += ', ';
        result += dart.typeName(args[i]);
      }
      result += '>';
      return result;
    }
    if (tag) return "Not a type: " + tag.name;
    return "JSObject<" + type.name + ">";
  };
  dart._isFunctionSubtype = function(ft1, ft2, isCovariant) {
    let ret1 = ft1.returnType;
    let ret2 = ft2.returnType;
    let args1 = ft1.args;
    let args2 = ft2.args;
    if (args1.length > args2.length) {
      return isCovariant ? false : null;
    }
    for (let i = 0; i < args1.length; ++i) {
      if (!dart._isSubtype(args2[i], args1[i], !isCovariant)) {
        return null;
      }
    }
    let optionals1 = ft1.optionals;
    let optionals2 = ft2.optionals;
    if (args1.length + optionals1.length < args2.length + optionals2.length) {
      return isCovariant ? false : null;
    }
    let j = 0;
    for (let i = args1.length; i < args2.length; ++i, ++j) {
      if (!dart._isSubtype(args2[i], optionals1[j], !isCovariant)) {
        return null;
      }
    }
    for (let i = 0; i < optionals2.length; ++i, ++j) {
      if (!dart._isSubtype(optionals2[i], optionals1[j], !isCovariant)) {
        return null;
      }
    }
    let named1 = ft1.named;
    let named2 = ft2.named;
    let names = dart.getOwnPropertyNames(named2);
    for (let i = 0; i < names.length; ++i) {
      let name = names[i];
      let n1 = named1[name];
      let n2 = named2[name];
      if (n1 === void 0) {
        return isCovariant ? false : null;
      }
      if (!dart._isSubtype(n2, n1, !isCovariant)) {
        return null;
      }
    }
    if (ret1 === dart.void) return dart._isTop(ret2);
    if (!dart._isSubtype(ret1, ret2, isCovariant)) return null;
    return true;
  };
  dart.isSubtypeOf = function(t1, t2) {
    return !!dart._isSubtypeOrLegacySubtype(t1, t2);
  };
  dart._isSubtypeOrLegacySubtype = function(t1, t2) {
    let map = null;
    if (!t1.hasOwnProperty(dart._subtypeCache)) {
      t1[dart._subtypeCache] = map = new Map();
      dart._cacheMaps[$add](map);
    } else {
      map = t1[dart._subtypeCache];
      let result = map.get(t2);
      if (result !== void 0) return result;
    }
    let result = dart._isSubtype(t1, t2, true);
    map.set(t2, result);
    return result;
  };
  dart._isBottom = function(type) {
    return type == dart.bottom || type == core.Null;
  };
  dart._isTop = function(type) {
    if (dart._isFutureOr(type)) {
      return dart._isTop(dart.getGenericArgs(type)[0]);
    }
    return type == core.Object || type == dart.dynamic || type == dart.void;
  };
  dart._isFutureOr = function(type) {
    return core.identical(dart.getGenericClass(type), async.FutureOr$);
  };
  dart._isSubtype = function(t1, t2, isCovariant) {
    if (t1 === t2) return true;
    if (dart._isTop(t2) || dart._isBottom(t1)) {
      return true;
    }
    if (dart._isBottom(t2)) return null;
    if (dart._isTop(t1)) {
      if (t1 === dart.dynamic) return null;
      return false;
    }
    if (dart._isFutureOr(t1)) {
      let t1TypeArg = dart.getGenericArgs(t1)[0];
      if (dart._isFutureOr(t2)) {
        let t2TypeArg = dart.getGenericArgs(t2)[0];
        return dart._isSubtype(t1TypeArg, t2TypeArg, isCovariant);
      }
      let t1Future = async.Future$(t1TypeArg);
      return dart._isSubtype(t1Future, t2, isCovariant) && dart._isSubtype(t1TypeArg, t2, isCovariant);
    }
    if (dart._isFutureOr(t2)) {
      let t2TypeArg = dart.getGenericArgs(t2)[0];
      let t2Future = async.Future$(t2TypeArg);
      let s1 = dart._isSubtype(t1, t2Future, isCovariant);
      let s2 = dart._isSubtype(t1, t2TypeArg, isCovariant);
      if (s1 === true || s2 === true) return true;
      if (s1 === null || s2 === null) return null;
      return false;
    }
    if (!(t2 instanceof dart.AbstractFunctionType)) {
      if (t1 instanceof dart.AbstractFunctionType) {
        return t2 === core.Function;
      }
      if (t1 === dart.jsobject && t2 instanceof dart.AnonymousJSType) return true;
      return dart._isInterfaceSubtype(t1, t2, isCovariant);
    }
    if (!(t1 instanceof dart.AbstractFunctionType)) return false;
    if (t1 instanceof dart.GenericFunctionType) {
      if (!(t2 instanceof dart.GenericFunctionType)) return false;
      let formalCount = t1.formalCount;
      if (formalCount !== t2.formalCount) return false;
      let fresh = t2.typeFormals;
      let t1Bounds = t1.instantiateTypeBounds(fresh);
      let t2Bounds = t2.instantiateTypeBounds(fresh);
      for (let i = 0; i < formalCount; i++) {
        if (!dart._isSubtype(t2Bounds[i], t1Bounds[i], !isCovariant)) {
          return false;
        }
      }
      t1 = t1.instantiate(fresh);
      t2 = t2.instantiate(fresh);
    } else if (t2 instanceof dart.GenericFunctionType) {
      return false;
    }
    return dart._isFunctionSubtype(t1, t2, isCovariant);
  };
  dart._isInterfaceSubtype = function(t1, t2, isCovariant) {
    if (t1 instanceof dart.LazyJSType) t1 = t1.rawJSTypeForCheck();
    if (t2 instanceof dart.LazyJSType) t2 = t2.rawJSTypeForCheck();
    if (t1 === t2) return true;
    if (t1 === core.Object) return false;
    if (t1 === core.Function || t2 === core.Function) return false;
    if (t1 == null) return t2 == core.Object || t2 == dart.dynamic;
    let raw1 = dart.getGenericClass(t1);
    let raw2 = dart.getGenericClass(t2);
    if (raw1 != null && raw1 == raw2) {
      let typeArguments1 = dart.getGenericArgs(t1);
      let typeArguments2 = dart.getGenericArgs(t2);
      let length = typeArguments1.length;
      if (typeArguments2.length == 0) {
        return true;
      } else if (length == 0) {
        if (typeArguments2.every(dart._isTop)) return true;
        return null;
      }
      if (length != typeArguments2.length) dart.assertFailed();
      for (let i = 0; i < length; ++i) {
        let result = dart._isSubtype(typeArguments1[i], typeArguments2[i], isCovariant);
        if (!result) {
          return result;
        }
      }
      return true;
    }
    let indefinite = false;
    function definitive(t1, t2) {
      let result = dart._isInterfaceSubtype(t1, t2, isCovariant);
      if (result == null) {
        indefinite = true;
        return false;
      }
      return result;
    }
    if (definitive(t1.__proto__, t2)) return true;
    let m1 = dart.getMixin(t1);
    if (m1 != null) {
      if (definitive(m1, t2)) return true;
    }
    let getInterfaces = dart.getImplements(t1);
    if (getInterfaces) {
      for (let i1 of getInterfaces()) {
        if (definitive(i1, t2)) return true;
      }
    }
    if (indefinite) return null;
    return false;
  };
  dart.extractTypeArguments = function(T, instance, f) {
    if (instance == null) {
      dart.throw(new core.ArgumentError.new("Cannot extract type of null instance."));
    }
    let type = T;
    if (dart.AbstractFunctionType.is(type) || dart._isFutureOr(type)) {
      dart.throw(new core.ArgumentError.new("Cannot extract from non-class type (" + dart.str(type) + ")."));
    }
    let typeArguments = dart.getGenericArgs(type);
    if (dart.test(typeArguments[$isEmpty])) {
      dart.throw(new core.ArgumentError.new("Cannot extract from non-generic type (" + dart.str(type) + ")."));
    }
    let supertype = dart._getMatchingSupertype(dart.getReifiedType(instance), type);
    if (!(supertype != null)) dart.assertFailed();
    let typeArgs = dart.getGenericArgs(supertype);
    if (!(typeArgs != null && dart.test(typeArgs[$isNotEmpty]))) dart.assertFailed();
    return dart.dgcall(f, typeArgs, []);
  };
  dart._getMatchingSupertype = function(subtype, supertype) {
    if (core.identical(subtype, supertype)) return supertype;
    if (subtype == null || dart.equals(subtype, core.Object)) return null;
    let subclass = dart.getGenericClass(subtype);
    let superclass = dart.getGenericClass(supertype);
    if (subclass != null && core.identical(subclass, superclass)) {
      return subtype;
    }
    let result = dart._getMatchingSupertype(subtype.__proto__, supertype);
    if (result != null) return result;
    let mixin = dart.getMixin(subtype);
    if (mixin != null) {
      result = dart._getMatchingSupertype(mixin, supertype);
      if (result != null) return result;
    }
    let getInterfaces = dart.getImplements(subtype);
    if (getInterfaces != null) {
      for (let iface of getInterfaces()) {
        result = dart._getMatchingSupertype(iface, supertype);
        if (result != null) return result;
      }
    }
    return null;
  };
  dart.trapRuntimeErrors = function(flag) {
    dart.__trapRuntimeErrors = flag;
  };
  dart.ignoreWhitelistedErrors = function(flag) {
    dart.__ignoreWhitelistedErrors = flag;
  };
  dart.ignoreAllErrors = function(flag) {
    dart.__ignoreAllErrors = flag;
  };
  dart.argumentError = function(value) {
    if (dart.__trapRuntimeErrors) debugger;
    dart.throw(new core.ArgumentError.value(value));
  };
  dart.throwUnimplementedError = function(message) {
    if (dart.__trapRuntimeErrors) debugger;
    dart.throw(new core.UnimplementedError.new(message));
  };
  dart.assertFailed = function(message) {
    if (dart.__trapRuntimeErrors) debugger;
    dart.throw(new _js_helper.AssertionErrorImpl.new(message));
  };
  dart.throwCyclicInitializationError = function(field) {
    if (field === void 0) field = null;
    if (dart.__trapRuntimeErrors) debugger;
    dart.throw(new core.CyclicInitializationError.new(core.String._check(field)));
  };
  dart.throwNullValueError = function() {
    if (dart.__trapRuntimeErrors) debugger;
    dart.throw(new core.NoSuchMethodError.new(null, core.Symbol.new("<Unexpected Null Value>"), null, null, null));
  };
  dart.castError = function(obj, expectedType, isImplicit) {
    if (isImplicit === void 0) isImplicit = false;
    let actualType = dart.getReifiedType(obj);
    let message = dart._castErrorMessage(actualType, expectedType);
    if (dart.__ignoreAllErrors) {
      console.error(message);
      return obj;
    }
    if (dart.__trapRuntimeErrors) debugger;
    let error = isImplicit ? new _js_helper.TypeErrorImpl.new(message) : new _js_helper.CastErrorImpl.new(message);
    dart.throw(error);
  };
  dart._castErrorMessage = function(from, to) {
    let fromClass = dart.getGenericClass(from);
    if (fromClass != null) {
      let fromTypeFormals = dart.getGenericTypeFormals(fromClass);
      let fromType = dart.instantiateClass(fromClass, fromTypeFormals);
      let inferrer = new dart._TypeInferrer.new(fromTypeFormals);
      if (dart.test(inferrer.trySubtypeMatch(fromType, to))) {
        let inferredTypes = inferrer.getInferredTypes();
        if (inferredTypes != null) {
          let inferred = dart.instantiateClass(fromClass, inferredTypes);
          return "Type '" + dart.typeName(from) + "' should be '" + dart.typeName(inferred) + "' " + ("to implement expected type '" + dart.typeName(to) + "'.");
        }
      }
    }
    return "Expected a value of type '" + dart.typeName(to) + "', " + ("but got one of type '" + dart.typeName(from) + "'");
  };
  dart.getThrown = function(error) {
    if (error != null) {
      let value = error[dart._thrownValue];
      if (value != null) return value;
    }
    return error;
  };
  dart.stackTrace = function(error) {
    if (!(error instanceof Error)) {
      return new dart._StackTrace.missing(error);
    }
    let trace = error[dart._stackTrace];
    if (trace != null) return trace;
    return error[dart._stackTrace] = new dart._StackTrace.new(error);
  };
  dart.stackTraceForError = function(error) {
    return dart.stackTrace(error[dart._jsError]);
  };
  dart.rethrow = function(error) {
    throw error;
  };
  dart.throw = function(exception) {
    throw new dart.DartError(exception);
  };
  dart.createErrorWithStack = function(exception, trace) {
    if (trace == null) {
      let error = exception[dart._jsError];
      return error != null ? error : new dart.DartError(exception);
    }
    if (dart._StackTrace.is(trace)) {
      let originalError = trace[_jsError];
      if (core.identical(exception, dart.getThrown(originalError))) {
        return originalError;
      }
    }
    return new dart.RethrownDartError(exception, trace);
  };
  dart.stackPrint = function(error) {
    console.log(error.stack ? error.stack : "No stack trace for: " + error);
  };
  dart.bind = function(obj, name, method) {
    if (obj == null) obj = _interceptors.jsNull;
    if (method == null) method = obj[name];
    let f = method.bind(obj);
    f._boundObject = obj;
    f._boundMethod = method;
    f[dart._runtimeType] = dart.getMethodType(dart.getType(obj), name);
    return f;
  };
  dart.bindCall = function(obj, name) {
    if (obj == null) return null;
    let ftype = dart.getMethodType(dart.getType(obj), name);
    if (ftype == null) return null;
    let method = obj[name];
    let f = method.bind(obj);
    f._boundObject = obj;
    f._boundMethod = method;
    f[dart._runtimeType] = ftype;
    return f;
  };
  dart.gbind = function(f, ...typeArgs) {
    let type = f[dart._runtimeType];
    type.checkBounds(typeArgs);
    let result = (...args) => f.apply(null, typeArgs.concat(args));
    return dart.fn(result, type.instantiate(typeArgs));
  };
  dart.dloadRepl = function(obj, field) {
    return dart.dload(obj, dart.replNameLookup(obj, field), false);
  };
  dart.dload = function(obj, field, mirrors) {
    if (typeof obj == "function" && field == "call") {
      return obj;
    }
    let f = dart._canonicalMember(obj, field);
    _debugger.trackCall(obj);
    if (f != null) {
      let type = dart.getType(obj);
      if (dart.test(dart.hasField(type, f)) || dart.test(dart.hasGetter(type, f))) return obj[f];
      if (dart.test(dart.hasMethod(type, f))) return dart.bind(obj, f, null);
      if (!mirrors && dart.test(dart.isJsInterop(obj))) {
        return obj[f];
      }
    }
    return dart.noSuchMethod(obj, new dart.InvocationImpl.new(field, [], {isGetter: true}));
  };
  dart.dloadMirror = function(obj, field) {
    return dart.dload(obj, field, true);
  };
  dart._stripGenericArguments = function(type) {
    let genericClass = dart.getGenericClass(type);
    if (genericClass != null) return genericClass();
    return type;
  };
  dart.dputMirror = function(obj, field, value) {
    return dart.dput(obj, field, value, true);
  };
  dart.dputRepl = function(obj, field, value) {
    return dart.dput(obj, dart.replNameLookup(obj, field), value, false);
  };
  dart.dput = function(obj, field, value, mirrors) {
    let f = dart._canonicalMember(obj, field);
    _debugger.trackCall(obj);
    if (f != null) {
      let setterType = dart.getSetterType(dart.getType(obj), f);
      if (setterType != null) {
        if (mirrors) setterType = dart._stripGenericArguments(setterType);
        return obj[f] = setterType._check(value);
      }
      if (!mirrors && dart.test(dart.isJsInterop(obj))) {
        return obj[f] = value;
      }
    }
    dart.noSuchMethod(obj, new dart.InvocationImpl.new(field, [value], {isSetter: true}));
    return value;
  };
  dart._checkApply = function(type, actuals, namedActuals) {
    let actualsCount = actuals.length;
    let required = type.args;
    let requiredCount = required.length;
    if (actualsCount < requiredCount) return false;
    let extras = actualsCount - requiredCount;
    let optionals = type.optionals;
    if (extras > optionals.length) return false;
    let names = null;
    let named = type.named;
    if (namedActuals != null) {
      names = dart.getOwnPropertyNames(namedActuals);
      for (let name of names) {
        if (!named.hasOwnProperty(name)) return false;
      }
    }
    for (let i = 0; i < requiredCount; ++i) {
      required[i]._check(actuals[i]);
    }
    for (let i = 0; i < extras; ++i) {
      optionals[i]._check(actuals[i + requiredCount]);
    }
    if (names != null) {
      for (let name of names) {
        named[name]._check(namedActuals[name]);
      }
    }
    return true;
  };
  dart._toSymbolName = function(symbol) {
    let str = symbol.toString();
    return str.substring(7, str.length - 1);
  };
  dart._toDisplayName = function(name) {
    if (name[0] === '_') {
      switch (name) {
        case '_get':
        {
          return '[]';
        }
        case '_set':
        {
          return '[]=';
        }
        case '_negate':
        {
          return 'unary-';
        }
        case '_constructor':
        case '_prototype':
        {
          return name.substring(1);
        }
      }
    }
    return name;
  };
  dart._dartSymbol = function(name) {
    return typeof name === "symbol" ? dart.const(new _js_helper.PrivateSymbol.new(dart._toSymbolName(name), name)) : dart.const(new _internal.Symbol.new(dart._toDisplayName(name)));
  };
  dart._setterSymbol = function(name) {
    return typeof name === "symbol" ? dart.const(new _js_helper.PrivateSymbol.new(dart._toSymbolName(name) + "=", name)) : dart.const(new _internal.Symbol.new(dart._toDisplayName(name) + "="));
  };
  dart._checkAndCall = function(f, ftype, obj, typeArgs, args, named, displayName) {
    _debugger.trackCall(obj);
    let originalTarget = obj === void 0 ? f : obj;
    function callNSM() {
      return dart.noSuchMethod(originalTarget, new dart.InvocationImpl.new(displayName, args, {namedArguments: named, typeArguments: typeArgs, isMethod: true}));
    }
    if (!(f instanceof Function)) {
      if (f != null) {
        f = dart.bindCall(f, dart._canonicalMember(f, "call"));
        ftype = null;
      }
      if (f == null) return callNSM();
    }
    if (ftype == null) ftype = f[dart._runtimeType];
    if (ftype == null) {
      if (typeArgs != null) {
        dart.throwTypeError('call to JS object `' + obj + '` with type arguments <' + typeArgs + '> is not supported.');
      }
      if (named != null) args.push(named);
      return f.apply(obj, args);
    }
    if (ftype instanceof Array) ftype = ftype[0];
    if (ftype instanceof dart.GenericFunctionType) {
      let formalCount = ftype.formalCount;
      if (typeArgs == null) {
        typeArgs = ftype.instantiateDefaultBounds();
      } else if (typeArgs.length != formalCount) {
        return callNSM();
      } else {
        ftype.checkBounds(typeArgs);
      }
      ftype = ftype.instantiate(typeArgs);
    } else if (typeArgs != null) {
      return callNSM();
    }
    if (dart._checkApply(ftype, args, named)) {
      if (typeArgs != null) args = typeArgs.concat(args);
      if (named != null) args.push(named);
      return f.apply(obj, args);
    }
    return callNSM();
  };
  dart.dcall = function(f, args, named) {
    return dart._checkAndCall(f, null, void 0, null, args, named, "call");
  };
  dart.dgcall = function(f, typeArgs, args, named) {
    return dart._checkAndCall(f, null, void 0, typeArgs, args, named, "call");
  };
  dart.replNameLookup = function(object, field) {
    let rawField = field;
    if (typeof field == 'symbol') {
      if (field in object) return field;
      field = field.toString();
      field = field.substring('Symbol('.length, field.length - 1);
    } else if (field.charAt(0) != '_') {
      return field;
    }
    if (field in object) return field;
    let proto = object;
    while (proto !== null) {
      let symbols = Object.getOwnPropertySymbols(proto);
      let target = 'Symbol(' + field + ')';
      for (let s = 0; s < symbols.length; s++) {
        let sym = symbols[s];
        if (target == sym.toString()) return sym;
      }
      proto = proto.__proto__;
    }
    return rawField;
  };
  dart._dhelperRepl = function(obj, field, callback) {
    return callback(dart.replNameLookup(obj, field));
  };
  dart.callMethod = function(obj, name, typeArgs, args, named, displayName) {
    if (typeof obj == "function" && name == "call") {
      return dart.dgcall(obj, typeArgs, args, named);
    }
    let symbol = dart._canonicalMember(obj, name);
    if (symbol == null) {
      return dart.noSuchMethod(obj, new dart.InvocationImpl.new(displayName, ListOfObject()._check(args), {isMethod: true}));
    }
    let f = obj != null ? obj[symbol] : null;
    let type = dart.getType(obj);
    let ftype = dart.getMethodType(type, symbol);
    return dart._checkAndCall(f, ftype, obj, typeArgs, args, named, displayName);
  };
  dart.dsend = function(obj, method, args, named) {
    return dart.callMethod(obj, method, null, args, named, method);
  };
  dart.dgsend = function(obj, typeArgs, method, args, named) {
    return dart.callMethod(obj, method, typeArgs, args, named, method);
  };
  dart.dsendRepl = function(obj, method, args, named) {
    return dart.callMethod(obj, dart.replNameLookup(obj, method), null, args, named, method);
  };
  dart.dgsendRepl = function(obj, typeArgs, method, args, named) {
    return dart.callMethod(obj, dart.replNameLookup(obj, method), typeArgs, args, named, method);
  };
  dart.dindex = function(obj, index) {
    return dart.callMethod(obj, "_get", null, [index], null, "[]");
  };
  dart.dsetindex = function(obj, index, value) {
    return dart.callMethod(obj, "_set", null, [index, value], null, "[]=");
  };
  dart._isSubtypeOrIgnorableCastFailure = function(t1, t2, isImplicit) {
    let result = dart._isSubtypeOrLegacySubtype(t1, t2);
    return result === true || result == null && isImplicit && dart.__ignoreWhitelistedErrors && dart._ignoreTypeFailure(t1, t2);
  };
  dart._ignoreTypeFailure = function(t1, t2) {
    let map = dart._ignoreSubtypeCache.get(t1);
    if (map != null) {
      let result = map.get(t2);
      if (result !== void 0) return result;
    } else {
      map = new Map();
      dart._ignoreSubtypeCache.set(t1, map);
    }
    let result = null;
    if (dart._isFutureOr(t2)) {
      let typeArg = dart.getGenericArgs(t2)[$_get](0);
      let typeFuture = async.Future$(typeArg);
      result = dart._ignoreTypeFailure(t1, typeFuture) || dart._ignoreTypeFailure(t1, typeArg);
    } else {
      result = dart.FunctionType.is(t1) && dart.FunctionType.is(t2) || dart.isSubtypeOf(t2, core.Iterable) && dart.isSubtypeOf(t1, core.Iterable);
      if (result) {
        dart._warn("Ignoring cast fail from " + dart.typeName(t1) + " to " + dart.typeName(t2));
      }
    }
    map.set(t2, result);
    return result;
  };
  dart.is = function(obj, type) {
    if (obj == null) {
      return core.identical(type, core.Null) || dart._isTop(type);
    }
    return dart.isSubtypeOf(dart.getReifiedType(obj), type);
  };
  dart.as = function(obj, type, isImplicit) {
    if (obj == null) return obj;
    let actual = dart.getReifiedType(obj);
    if (dart._isSubtypeOrIgnorableCastFailure(actual, type, isImplicit)) {
      return obj;
    }
    return dart.castError(obj, type, isImplicit);
  };
  dart.test = function(obj) {
    if (obj == null) dart._throwBooleanConversionError();
    return obj;
  };
  dart.dtest = function(obj) {
    if (!(typeof obj == 'boolean')) dart.booleanConversionFailed(obj);
    return core.bool._check(obj);
  };
  dart._throwBooleanConversionError = function() {
    return dart.throw(new _js_helper.BooleanConversionAssertionError.new());
  };
  dart.booleanConversionFailed = function(obj) {
    let actual = dart.typeName(dart.getReifiedType(dart.test(core.bool._check(obj))));
    dart.throw(new _js_helper.TypeErrorImpl.new("type '" + actual + "' is not a 'bool' in boolean expression"));
  };
  dart.asInt = function(obj) {
    if (obj == null) return null;
    if (Math.floor(obj) != obj) {
      dart.castError(obj, core.int, false);
    }
    return obj;
  };
  dart.notNull = function(x) {
    if (x == null) dart.throwNullValueError();
    return x;
  };
  dart._lookupNonTerminal = function(map, key) {
    let result = map.get(key);
    if (result != null) return result;
    map.set(key, result = new Map());
    return result;
  };
  dart.constMap = function(K, V, elements) {
    let count = elements[$length];
    let map = dart._lookupNonTerminal(dart.constantMaps, count);
    for (let i = 0; i < count; i++) {
      map = dart._lookupNonTerminal(map, elements[i]);
    }
    map = dart._lookupNonTerminal(map, dart.wrapType(K));
    let result = map.get(V);
    if (result != null) return core.Map$(K, V)._check(result);
    result = new (_js_helper.ImmutableMap$(K, V)).from(elements);
    map.set(V, result);
    return core.Map$(K, V)._check(result);
  };
  dart.constSet = function(E, elements) {
    let count = elements[$length];
    let map = dart._lookupNonTerminal(dart.constantSets, count);
    for (let i = 0; i < count; i++) {
      map = dart._lookupNonTerminal(map, elements[i]);
    }
    let result = map.get(E);
    if (result != null) return core.Set$(E)._check(result);
    result = new (collection.ImmutableSet$(E)).from(elements);
    map.set(E, result);
    return core.Set$(E)._check(result);
  };
  dart.dassert = function(value) {
    if (value != null && value[dart._runtimeType] instanceof dart.AbstractFunctionType) {
      value = dart.dcall(value, []);
    }
    return dart.dtest(value);
  };
  dart.multiKeyPutIfAbsent = function(map, keys, valueFn) {
    for (let k of keys) {
      let value = map.get(k);
      if (!value) {
        map.set(k, value = new Map());
      }
      map = value;
    }
    if (map.has(dart._value)) return map.get(dart._value);
    let value = valueFn();
    map.set(dart._value, value);
    return value;
  };
  dart.const = function(obj) {
    let names = dart.getOwnNamesAndSymbols(obj);
    let count = names.length;
    let map = dart._lookupNonTerminal(dart.constants, count);
    for (let i = 0; i < count; i++) {
      let name = names[i];
      map = dart._lookupNonTerminal(map, name);
      map = dart._lookupNonTerminal(map, obj[name]);
    }
    let type = dart.getReifiedType(obj);
    let value = map.get(type);
    if (value) return value;
    map.set(type, obj);
    return obj;
  };
  dart.constList = function(elements, elementType) {
    let count = elements.length;
    let map = dart._lookupNonTerminal(dart.constantLists, count);
    for (let i = 0; i < count; i++) {
      map = dart._lookupNonTerminal(map, elements[i]);
    }
    let value = map.get(elementType);
    if (value) return value;
    _interceptors.JSArray$(elementType).unmodifiable(elements);
    map.set(elementType, elements);
    return elements;
  };
  dart.constFn = function(x) {
    return () => x;
  };
  dart.extensionSymbol = function(name) {
    return dartx[name];
  };
  dart.equals = function(x, y) {
    return x == null ? y == null : x[$_equals](y);
  };
  dart.hashCode = function(obj) {
    return obj == null ? 0 : obj[$hashCode];
  };
  dart.toString = function(obj) {
    if (obj == null) return "null";
    if (typeof obj == 'string') return obj;
    return obj[$toString]();
  };
  dart.str = function(obj) {
    if (obj == null) return "null";
    if (typeof obj == 'string') return obj;
    return core.String._check(dart.notNull(obj[$toString]()));
  };
  dart.noSuchMethod = function(obj, invocation) {
    if (obj == null) dart.defaultNoSuchMethod(obj, invocation);
    return obj[$noSuchMethod](invocation);
  };
  dart.defaultNoSuchMethod = function(obj, i) {
    if (dart.__trapRuntimeErrors) debugger;
    dart.throw(new core.NoSuchMethodError.withInvocation(obj, i));
  };
  dart.runtimeType = function(obj) {
    return obj == null ? dart.wrapType(core.Null) : obj[dartx.runtimeType];
  };
  dart._canonicalMember = function(obj, name) {
    if (typeof name === "symbol") return name;
    if (obj != null && obj[dart._extensionType] != null) {
      return dartx[name];
    }
    if (name == "constructor" || name == "prototype") {
      name = "+" + name;
    }
    return name;
  };
  dart.loadLibrary = function() {
    return async.Future.value();
  };
  dart.defineLazy = function(to, from) {
    for (let name of dart.getOwnNamesAndSymbols(from)) {
      dart.defineLazyField(to, name, dart.getOwnPropertyDescriptor(from, name));
    }
  };
  dart._polyfilled = Symbol("_polyfilled");
  dart.global = (function() {
    var globalState = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : null;
    if (!globalState) {
      globalState = new Function('return this;')();
    }
    dart.polyfill(globalState);
    if (globalState.Error) {
      globalState.Error.stackTraceLimit = Infinity;
    }
    let settings = 'ddcSettings' in globalState ? globalState.ddcSettings : {};
    dart.trapRuntimeErrors('trapRuntimeErrors' in settings ? settings.trapRuntimeErrors : false);
    dart.ignoreWhitelistedErrors('ignoreWhitelistedErrors' in settings ? settings.ignoreWhitelistedErrors : false);
    dart.ignoreAllErrors('ignoreAllErrors' in settings ? settings.ignoreAllErrors : false);
    dart.trackProfile('trackProfile' in settings ? settings.trackProfile : false);
    return globalState;
  })();
  dart.JsSymbol = Symbol;
  dart.startAsyncSynchronously = true;
  dart._cacheMaps = [];
  dart._resetFields = [];
  dart.defineProperty = Object.defineProperty;
  dart.defineAccessor = Object.defineProperty;
  dart.getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
  dart.getOwnPropertyNames = Object.getOwnPropertyNames;
  dart.getOwnPropertySymbols = Object.getOwnPropertySymbols;
  dart.getPrototypeOf = Object.getPrototypeOf;
  dart._mixin = Symbol("mixin");
  dart.mixinOn = Symbol("mixinOn");
  dart.implements = Symbol("implements");
  dart._typeArguments = Symbol("typeArguments");
  dart._originalDeclaration = Symbol("originalDeclaration");
  dart.mixinNew = Symbol("dart.mixinNew");
  dart._constructorSig = Symbol("sigCtor");
  dart._methodSig = Symbol("sigMethod");
  dart._fieldSig = Symbol("sigField");
  dart._getterSig = Symbol("sigGetter");
  dart._setterSig = Symbol("sigSetter");
  dart._staticMethodSig = Symbol("sigStaticMethod");
  dart._staticFieldSig = Symbol("sigStaticField");
  dart._staticGetterSig = Symbol("sigStaticGetter");
  dart._staticSetterSig = Symbol("sigStaticSetter");
  dart._genericTypeCtor = Symbol("genericType");
  dart._extensionType = Symbol("extensionType");
  dart.dartx = dartx;
  dart._extensionMap = new Map();
  dart.isFuture = Symbol("_is_Future");
  dart.isIterable = Symbol("_is_Iterable");
  dart.isList = Symbol("_is_List");
  dart.isMap = Symbol("_is_Map");
  dart.isStream = Symbol("_is_Stream");
  dart.isStreamSubscription = Symbol("_is_StreamSubscription");
  dart.identityEquals = null;
  dart._runtimeType = Symbol("_runtimeType");
  dart._moduleName = Symbol("_moduleName");
  dart._loadedModules = new Map();
  dart._loadedSourceMaps = new Map();
  dart.metadata = Symbol("metadata");
  core.Object = class Object {
    constructor() {
      throw Error("use `new " + dart.typeName(dart.getReifiedType(this)) + ".new(...)` to create a Dart object");
    }
    _equals(other) {
      return this === other;
    }
    get hashCode() {
      return core.identityHashCode(this);
    }
    toString() {
      return "Instance of '" + dart.typeName(dart.getReifiedType(this)) + "'";
    }
    noSuchMethod(invocation) {
      return dart.defaultNoSuchMethod(this, invocation);
    }
    get runtimeType() {
      return dart.wrapType(dart.getReifiedType(this));
    }
  };
  (core.Object.new = function() {
  }).prototype = core.Object.prototype;
  core.Object.is = function is_Object(o) {
    return true;
  };
  core.Object.as = function as_Object(o) {
    return o;
  };
  core.Object._check = function check_Object(o) {
    return o;
  };
  dart.setMethodSignature(core.Object, () => ({
    __proto__: Object.create(null),
    _equals: dart.fnType(core.bool, [dart.dynamic]),
    [$_equals]: dart.fnType(core.bool, [dart.dynamic]),
    toString: dart.fnType(core.String, []),
    [$toString]: dart.fnType(core.String, []),
    noSuchMethod: dart.fnType(dart.dynamic, [core.Invocation]),
    [$noSuchMethod]: dart.fnType(dart.dynamic, [core.Invocation])
  }));
  dart.setGetterSignature(core.Object, () => ({
    __proto__: Object.create(null),
    hashCode: core.int,
    [$hashCode]: core.int,
    runtimeType: core.Type,
    [$runtimeType]: core.Type
  }));
  dart.lazyFn(core.Object, () => core.Type);
  dart.defineExtensionMethods(core.Object, ['_equals', 'toString', 'noSuchMethod']);
  dart.defineExtensionAccessors(core.Object, ['hashCode', 'runtimeType']);
  dart.registerExtension("Object", core.Object);
  dart.DartType = class DartType extends core.Object {
    get name() {
      return this.toString();
    }
    is(object) {
      return dart.is(object, this);
    }
    as(object) {
      return dart.as(object, this, false);
    }
    _check(object) {
      return dart.as(object, this, true);
    }
  };
  (dart.DartType.new = function() {
  }).prototype = dart.DartType.prototype;
  dart.addTypeTests(dart.DartType);
  dart.DartType[dart.implements] = () => [core.Type];
  dart.setMethodSignature(dart.DartType, () => ({
    __proto__: dart.getMethods(dart.DartType.__proto__),
    is: dart.fnType(core.bool, [dart.dynamic]),
    as: dart.fnType(dart.dynamic, [dart.dynamic]),
    _check: dart.fnType(dart.dynamic, [dart.dynamic])
  }));
  dart.setGetterSignature(dart.DartType, () => ({
    __proto__: dart.getGetters(dart.DartType.__proto__),
    name: core.String
  }));
  dart.DynamicType = class DynamicType extends dart.DartType {
    toString() {
      return "dynamic";
    }
    is(object) {
      return true;
    }
    as(object) {
      return object;
    }
    _check(object) {
      return object;
    }
  };
  (dart.DynamicType.new = function() {
  }).prototype = dart.DynamicType.prototype;
  dart.addTypeTests(dart.DynamicType);
  dart.defineExtensionMethods(dart.DynamicType, ['toString']);
  const _getRawJSTypeFn = Symbol('_getRawJSTypeFn');
  const _dartName = Symbol('_dartName');
  const _rawJSType = Symbol('_rawJSType');
  const _getRawJSType = Symbol('_getRawJSType');
  dart.LazyJSType = class LazyJSType extends dart.DartType {
    toString() {
      let raw = this[_getRawJSType]();
      return raw != null ? dart.typeName(raw) : "JSObject<" + this[_dartName] + ">";
    }
    [_getRawJSType]() {
      let raw = this[_rawJSType];
      if (raw != null) return raw;
      try {
        raw = this[_getRawJSTypeFn]();
      } catch (e$) {
        let e = dart.getThrown(e$);
      }
      if (raw == null) {
        dart._warn("Cannot find native JavaScript type (" + this[_dartName] + ") for type check");
      } else {
        this[_rawJSType] = raw;
        this[_getRawJSTypeFn] = null;
      }
      return raw;
    }
    rawJSTypeForCheck() {
      let l = this[_getRawJSType]();
      return l != null ? l : dart.jsobject;
    }
    isRawJSType(obj) {
      let raw = this[_getRawJSType]();
      if (raw != null) return obj instanceof raw;
      return dart._isJsObject(obj);
    }
    is(obj) {
      return this.isRawJSType(obj) || dart.is(obj, this);
    }
    as(obj) {
      return obj == null || this.is(obj) ? obj : dart.castError(obj, this, false);
    }
    _check(obj) {
      return obj == null || this.is(obj) ? obj : dart.castError(obj, this, true);
    }
  };
  (dart.LazyJSType.new = function(getRawJSTypeFn, dartName) {
    this[_rawJSType] = null;
    this[_getRawJSTypeFn] = getRawJSTypeFn;
    this[_dartName] = dartName;
  }).prototype = dart.LazyJSType.prototype;
  dart.addTypeTests(dart.LazyJSType);
  dart.setMethodSignature(dart.LazyJSType, () => ({
    __proto__: dart.getMethods(dart.LazyJSType.__proto__),
    [_getRawJSType]: dart.fnType(core.Object, []),
    rawJSTypeForCheck: dart.fnType(core.Object, []),
    isRawJSType: dart.fnType(core.bool, [dart.dynamic])
  }));
  dart.setFieldSignature(dart.LazyJSType, () => ({
    __proto__: dart.getFields(dart.LazyJSType.__proto__),
    [_getRawJSTypeFn]: dart.fieldType(VoidTodynamic()),
    [_dartName]: dart.finalFieldType(core.String),
    [_rawJSType]: dart.fieldType(core.Object)
  }));
  dart.defineExtensionMethods(dart.LazyJSType, ['toString']);
  dart.AnonymousJSType = class AnonymousJSType extends dart.DartType {
    toString() {
      return this[_dartName];
    }
    is(obj) {
      return dart._isJsObject(obj) || dart.is(obj, this);
    }
    as(obj) {
      return obj == null || dart._isJsObject(obj) ? obj : dart.as(obj, this, false);
    }
    _check(obj) {
      return obj == null || dart._isJsObject(obj) ? obj : dart.as(obj, this, true);
    }
  };
  (dart.AnonymousJSType.new = function(dartName) {
    this[_dartName] = dartName;
  }).prototype = dart.AnonymousJSType.prototype;
  dart.addTypeTests(dart.AnonymousJSType);
  dart.setFieldSignature(dart.AnonymousJSType, () => ({
    __proto__: dart.getFields(dart.AnonymousJSType.__proto__),
    [_dartName]: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(dart.AnonymousJSType, ['toString']);
  dart._lazyJSTypes = new Map();
  dart._anonymousJSTypes = new Map();
  dart.dynamic = new dart.DynamicType.new();
  dart.VoidType = class VoidType extends dart.DartType {
    toString() {
      return "void";
    }
  };
  (dart.VoidType.new = function() {
  }).prototype = dart.VoidType.prototype;
  dart.addTypeTests(dart.VoidType);
  dart.defineExtensionMethods(dart.VoidType, ['toString']);
  dart.void = new dart.VoidType.new();
  dart.BottomType = class BottomType extends dart.DartType {
    toString() {
      return "bottom";
    }
  };
  (dart.BottomType.new = function() {
  }).prototype = dart.BottomType.prototype;
  dart.addTypeTests(dart.BottomType);
  dart.defineExtensionMethods(dart.BottomType, ['toString']);
  dart.bottom = new dart.BottomType.new();
  dart.JSObjectType = class JSObjectType extends dart.DartType {
    toString() {
      return "NativeJavaScriptObject";
    }
  };
  (dart.JSObjectType.new = function() {
  }).prototype = dart.JSObjectType.prototype;
  dart.addTypeTests(dart.JSObjectType);
  dart.defineExtensionMethods(dart.JSObjectType, ['toString']);
  dart.jsobject = new dart.JSObjectType.new();
  const _type = Symbol('_type');
  core.Type = class Type extends core.Object {};
  (core.Type.new = function() {
  }).prototype = core.Type.prototype;
  dart.addTypeTests(core.Type);
  dart._Type = class _Type extends core.Type {
    toString() {
      return dart.typeName(this[_type]);
    }
    get runtimeType() {
      return dart.wrapType(core.Type);
    }
  };
  (dart._Type.new = function(type) {
    this[_type] = type;
  }).prototype = dart._Type.prototype;
  dart.addTypeTests(dart._Type);
  dart.setFieldSignature(dart._Type, () => ({
    __proto__: dart.getFields(dart._Type.__proto__),
    [_type]: dart.finalFieldType(core.Object)
  }));
  dart.defineExtensionMethods(dart._Type, ['toString']);
  dart.defineExtensionAccessors(dart._Type, ['runtimeType']);
  dart._typeObject = Symbol("typeObject");
  dart.AbstractFunctionType = class AbstractFunctionType extends dart.DartType {};
  (dart.AbstractFunctionType.new = function() {
  }).prototype = dart.AbstractFunctionType.prototype;
  dart.addTypeTests(dart.AbstractFunctionType);
  dart._fnTypeNamedArgMap = new Map();
  dart._fnTypeArrayArgMap = new Map();
  dart._fnTypeTypeMap = new Map();
  dart._fnTypeSmallMap = [new Map(), new Map(), new Map()];
  const _stringValue = Symbol('_stringValue');
  const _process = Symbol('_process');
  dart.FunctionType = class FunctionType extends dart.AbstractFunctionType {
    static create(returnType, args, extra) {
      if (extra == null && args.length < 3) {
        return dart._createSmall(returnType, args);
      }
      args = dart._canonicalizeArray(args, dart._fnTypeArrayArgMap);
      let keys = null;
      let create = null;
      if (extra == null) {
        keys = [returnType, args];
        create = () => new dart.FunctionType.new(returnType, args, [], {});
      } else if (extra instanceof Array) {
        let optionals = dart._canonicalizeArray(extra, dart._fnTypeArrayArgMap);
        keys = [returnType, args, optionals];
        create = () => new dart.FunctionType.new(returnType, args, optionals, {});
      } else {
        let named = dart._canonicalizeNamed(extra, dart._fnTypeNamedArgMap);
        keys = [returnType, args, named];
        create = () => new dart.FunctionType.new(returnType, args, [], named);
      }
      return dart._memoizeArray(dart._fnTypeTypeMap, keys, create);
    }
    [_process](array) {
      let result = [];
      for (let i = 0; i < array.length; ++i) {
        let arg = array[i];
        if (arg instanceof Array) {
          this.metadata.push(arg.slice(1));
          result.push(arg[0]);
        } else {
          this.metadata.push([]);
          result.push(arg);
        }
      }
      return result;
    }
    toString() {
      return this.name;
    }
    get requiredParameterCount() {
      return this.args[$length];
    }
    get positionalParameterCount() {
      return dart.notNull(this.args[$length]) + dart.notNull(this.optionals[$length]);
    }
    getPositionalParameter(i) {
      let n = this.args[$length];
      return dart.notNull(i) < dart.notNull(n) ? this.args[$_get](i) : this.optionals[$_get](dart.notNull(i) + dart.notNull(n));
    }
    getNamedParameters() {
      let result = new (IdentityMapOfString$Object()).new();
      let names = dart.getOwnPropertyNames(this.named);
      names.sort();
      for (let i = 0; i < names.length; ++i) {
        let name = names[i];
        result[$_set](name, this.named[name]);
      }
      return result;
    }
    get name() {
      if (this[_stringValue] != null) return this[_stringValue];
      let buffer = "(";
      for (let i = 0; i < this.args.length; ++i) {
        if (i > 0) {
          buffer = buffer + ", ";
        }
        buffer = buffer + dart.typeName(this.args[i]);
      }
      if (this.optionals.length > 0) {
        if (this.args.length > 0) {
          buffer = buffer + ", ";
        }
        buffer = buffer + "[";
        for (let i = 0; i < this.optionals.length; ++i) {
          if (i > 0) {
            buffer = buffer + ", ";
          }
          buffer = buffer + dart.typeName(this.optionals[i]);
        }
        buffer = buffer + "]";
      } else if (Object.keys(this.named).length > 0) {
        if (this.args.length > 0) {
          buffer = buffer + ", ";
        }
        buffer = buffer + "{";
        let names = dart.getOwnPropertyNames(this.named);
        names.sort();
        for (let i = 0; i < names.length; ++i) {
          if (i > 0) {
            buffer = buffer + ", ";
          }
          let typeNameString = dart.typeName(this.named[names[i]]);
          buffer = buffer + (typeNameString + " " + dart.str(names[i]));
        }
        buffer = buffer + "}";
      }
      let returnTypeName = dart.typeName(this.returnType);
      buffer = buffer + (") => " + returnTypeName);
      this[_stringValue] = buffer;
      return buffer;
    }
    is(obj) {
      if (typeof obj == "function") {
        let actual = obj[dart._runtimeType];
        return actual == null || dart.isSubtypeOf(actual, this);
      }
      return false;
    }
    as(obj, isImplicit) {
      if (isImplicit === void 0) isImplicit = false;
      if (obj == null) return obj;
      if (typeof obj == "function") {
        let actual = obj[dart._runtimeType];
        if (actual == null || dart._isSubtypeOrIgnorableCastFailure(actual, this, isImplicit)) {
          return obj;
        }
      }
      return dart.castError(obj, this, isImplicit);
    }
    _check(obj) {
      return this.as(obj, true);
    }
  };
  (dart.FunctionType.new = function(returnType, args, optionals, named) {
    this.metadata = [];
    this[_stringValue] = null;
    this.returnType = returnType;
    this.args = args;
    this.optionals = optionals;
    this.named = named;
    this.args = this[_process](this.args);
    this.optionals = this[_process](this.optionals);
  }).prototype = dart.FunctionType.prototype;
  dart.addTypeTests(dart.FunctionType);
  dart.setMethodSignature(dart.FunctionType, () => ({
    __proto__: dart.getMethods(dart.FunctionType.__proto__),
    [_process]: dart.fnType(core.List, [core.List]),
    getPositionalParameter: dart.fnType(dart.dynamic, [core.int]),
    getNamedParameters: dart.fnType(core.Map$(core.String, core.Object), []),
    as: dart.fnType(dart.dynamic, [dart.dynamic], [core.bool])
  }));
  dart.setGetterSignature(dart.FunctionType, () => ({
    __proto__: dart.getGetters(dart.FunctionType.__proto__),
    requiredParameterCount: core.int,
    positionalParameterCount: core.int
  }));
  dart.setFieldSignature(dart.FunctionType, () => ({
    __proto__: dart.getFields(dart.FunctionType.__proto__),
    returnType: dart.finalFieldType(dart.dynamic),
    args: dart.fieldType(core.List),
    optionals: dart.fieldType(core.List),
    named: dart.finalFieldType(dart.dynamic),
    metadata: dart.fieldType(core.List),
    [_stringValue]: dart.fieldType(core.String)
  }));
  dart.defineExtensionMethods(dart.FunctionType, ['toString']);
  dart.TypeVariable = class TypeVariable extends dart.DartType {
    get name() {
      return this[name$];
    }
    set name(value) {
      super.name = value;
    }
    toString() {
      return this.name;
    }
  };
  (dart.TypeVariable.new = function(name) {
    this[name$] = name;
  }).prototype = dart.TypeVariable.prototype;
  dart.addTypeTests(dart.TypeVariable);
  const name$ = Symbol("TypeVariable.name");
  dart.setFieldSignature(dart.TypeVariable, () => ({
    __proto__: dart.getFields(dart.TypeVariable.__proto__),
    name: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(dart.TypeVariable, ['toString']);
  const _instantiateTypeBounds = Symbol('_instantiateTypeBounds');
  const _instantiateTypeParts = Symbol('_instantiateTypeParts');
  const _typeFormals = Symbol('_typeFormals');
  dart.GenericFunctionType = class GenericFunctionType extends dart.AbstractFunctionType {
    get typeFormals() {
      if (this[_typeFormals] != null) return this[_typeFormals];
      return this[_typeFormals] = dart._typeFormalsFromFunction(this[_instantiateTypeParts]);
    }
    checkBounds(typeArgs) {
      if (this[_instantiateTypeBounds] == null) return;
      let bounds = this.instantiateTypeBounds(typeArgs);
      let typeFormals = this.typeFormals;
      for (let i = 0; i < dart.notNull(typeArgs[$length]); i++) {
        dart.checkTypeBound(typeArgs[$_get](i), bounds[$_get](i), typeFormals[$_get](i).name);
      }
    }
    instantiate(typeArgs) {
      let parts = this[_instantiateTypeParts].apply(null, typeArgs);
      return dart.FunctionType.create(parts[0], parts[1], parts[2]);
    }
    instantiateTypeBounds(typeArgs) {
      let boundsFn = this[_instantiateTypeBounds];
      if (boundsFn == null) {
        return core.List.filled(this.formalCount, dart.dynamic);
      }
      return boundsFn.apply(null, typeArgs);
    }
    toString() {
      let s = "<";
      let typeFormals = this.typeFormals;
      let typeBounds = this.instantiateTypeBounds(typeFormals);
      for (let i = 0, n = typeFormals[$length]; i < dart.notNull(n); i++) {
        if (i !== 0) {
          s = s + ", ";
        }
        s = s + typeFormals[i].name;
        let bound = typeBounds[$_get](i);
        if (bound !== dart.dynamic && bound !== core.Object) {
          s = s + (" extends " + dart.str(bound));
        }
      }
      s = s + (">" + dart.notNull(dart.toString(this.instantiate(typeFormals))));
      return s;
    }
    instantiateDefaultBounds() {
      let typeFormals = this.typeFormals;
      let all = new (IdentityMapOfObject$int()).new();
      let defaults = ListOfObject().new(typeFormals[$length]);
      let partials = new (IdentityMapOfTypeVariable$Object()).new();
      let typeBounds = this.instantiateTypeBounds(typeFormals);
      for (let i = 0; i < dart.notNull(typeFormals[$length]); i++) {
        let typeFormal = typeFormals[$_get](i);
        let bound = typeBounds[$_get](i);
        all._set(typeFormal, i);
        if (core.identical(bound, dart.dynamic)) {
          defaults[$_set](i, bound);
        } else {
          defaults[$_set](i, typeFormal);
          partials[$_set](typeFormal, bound);
        }
      }
      function hasFreeFormal(t) {
        if (dart.test(partials[$containsKey](t))) return true;
        let typeArgs = dart.getGenericArgs(t);
        if (typeArgs != null) return typeArgs[$any](hasFreeFormal);
        if (dart.GenericFunctionType.is(t)) {
          return hasFreeFormal(t.instantiate(t.typeFormals));
        }
        if (dart.FunctionType.is(t)) {
          return dart.test(hasFreeFormal(t.returnType)) || dart.test(t.args[$any](hasFreeFormal));
        }
        return false;
      }
      let hasProgress = true;
      while (hasProgress) {
        hasProgress = false;
        for (let typeFormal of partials[$keys]) {
          let partialBound = partials[$_get](typeFormal);
          if (!dart.test(hasFreeFormal(partialBound))) {
            let index = all._get(typeFormal);
            defaults[$_set](index, this.instantiateTypeBounds(defaults)[$_get](index));
            partials[$remove](typeFormal);
            hasProgress = true;
            break;
          }
        }
      }
      if (dart.test(partials[$isNotEmpty])) {
        dart.throwTypeError("Instantiate to bounds failed for type with " + ("recursive generic bounds: " + dart.typeName(this) + ". ") + "Try passing explicit type arguments.");
      }
      return defaults;
    }
    is(obj) {
      if (typeof obj == "function") {
        let actual = obj[dart._runtimeType];
        return actual != null && dart.isSubtypeOf(actual, this);
      }
      return false;
    }
    as(obj) {
      if (obj == null || this.is(obj)) return obj;
      return dart.castError(obj, this, false);
    }
    _check(obj) {
      if (obj == null || this.is(obj)) return obj;
      return dart.castError(obj, this, true);
    }
  };
  (dart.GenericFunctionType.new = function(instantiateTypeParts, instantiateTypeBounds) {
    this[_typeFormals] = null;
    this[_instantiateTypeBounds] = instantiateTypeBounds;
    this[_instantiateTypeParts] = instantiateTypeParts;
    this.formalCount = instantiateTypeParts.length;
  }).prototype = dart.GenericFunctionType.prototype;
  dart.addTypeTests(dart.GenericFunctionType);
  dart.setMethodSignature(dart.GenericFunctionType, () => ({
    __proto__: dart.getMethods(dart.GenericFunctionType.__proto__),
    checkBounds: dart.fnType(dart.void, [core.List]),
    instantiate: dart.fnType(dart.FunctionType, [dart.dynamic]),
    instantiateTypeBounds: dart.fnType(core.List, [core.List]),
    instantiateDefaultBounds: dart.fnType(core.List, [])
  }));
  dart.setGetterSignature(dart.GenericFunctionType, () => ({
    __proto__: dart.getGetters(dart.GenericFunctionType.__proto__),
    typeFormals: core.List$(dart.TypeVariable)
  }));
  dart.setFieldSignature(dart.GenericFunctionType, () => ({
    __proto__: dart.getFields(dart.GenericFunctionType.__proto__),
    [_instantiateTypeParts]: dart.finalFieldType(dart.dynamic),
    formalCount: dart.finalFieldType(core.int),
    [_instantiateTypeBounds]: dart.finalFieldType(dart.dynamic),
    [_typeFormals]: dart.fieldType(ListOfTypeVariable())
  }));
  dart.defineExtensionMethods(dart.GenericFunctionType, ['toString']);
  dart._subtypeCache = Symbol("_subtypeCache");
  const _typeVariables = Symbol('_typeVariables');
  const _isSubtypeMatch = Symbol('_isSubtypeMatch');
  const _constrainLower = Symbol('_constrainLower');
  const _constrainUpper = Symbol('_constrainUpper');
  const _isFunctionSubtypeMatch = Symbol('_isFunctionSubtypeMatch');
  const _isInterfaceSubtypeMatch = Symbol('_isInterfaceSubtypeMatch');
  const _isNull = Symbol('_isNull');
  const _isTop = Symbol('_isTop');
  dart._TypeInferrer = class _TypeInferrer extends core.Object {
    getInferredTypes() {
      let result = JSArrayOfObject().of([]);
      for (let constraint of this[_typeVariables][$values]) {
        if (constraint.lower != null) {
          result[$add](constraint.lower);
        } else if (constraint.upper != null) {
          result[$add](constraint.upper);
        } else {
          return null;
        }
      }
      return result;
    }
    trySubtypeMatch(subtype, supertype) {
      return this[_isSubtypeMatch](subtype, supertype);
    }
    [_constrainLower](parameter, lower) {
      this[_typeVariables][$_get](parameter)[_constrainLower](lower);
    }
    [_constrainUpper](parameter, upper) {
      this[_typeVariables][$_get](parameter)[_constrainUpper](upper);
    }
    [_isFunctionSubtypeMatch](subtype, supertype) {
      if (dart.notNull(subtype.requiredParameterCount) > dart.notNull(supertype.requiredParameterCount)) {
        return false;
      }
      if (dart.notNull(subtype.positionalParameterCount) < dart.notNull(supertype.positionalParameterCount)) {
        return false;
      }
      if (!dart.VoidType.is(supertype.returnType) && !dart.test(this[_isSubtypeMatch](subtype.returnType, supertype.returnType))) {
        return false;
      }
      for (let i = 0, n = supertype.positionalParameterCount; i < dart.notNull(n); ++i) {
        if (!dart.test(this[_isSubtypeMatch](supertype.getPositionalParameter(i), subtype.getPositionalParameter(i)))) {
          return false;
        }
      }
      let supertypeNamed = supertype.getNamedParameters();
      let subtypeNamed = supertype.getNamedParameters();
      for (let name of supertypeNamed[$keys]) {
        let subtypeParamType = subtypeNamed[$_get](name);
        if (subtypeParamType == null) return false;
        if (!dart.test(this[_isSubtypeMatch](supertypeNamed[$_get](name), subtypeParamType))) {
          return false;
        }
      }
      return true;
    }
    [_isInterfaceSubtypeMatch](subtype, supertype) {
      let matchingSupertype = dart._getMatchingSupertype(subtype, supertype);
      if (matchingSupertype == null) return false;
      let matchingTypeArgs = dart.getGenericArgs(matchingSupertype);
      let supertypeTypeArgs = dart.getGenericArgs(supertype);
      for (let i = 0; i < dart.notNull(supertypeTypeArgs[$length]); i++) {
        if (!dart.test(this[_isSubtypeMatch](matchingTypeArgs[$_get](i), supertypeTypeArgs[$_get](i)))) {
          return false;
        }
      }
      return true;
    }
    [_isNull](type) {
      return core.identical(type, core.Null);
    }
    [_isSubtypeMatch](subtype, supertype) {
      if (dart.TypeVariable.is(subtype) && dart.test(this[_typeVariables][$containsKey](subtype))) {
        this[_constrainUpper](subtype, supertype);
        return true;
      }
      if (dart.TypeVariable.is(supertype) && dart.test(this[_typeVariables][$containsKey](supertype))) {
        this[_constrainLower](supertype, subtype);
        return true;
      }
      if (core.identical(subtype, supertype)) return true;
      if (dart.test(this[_isTop](supertype))) return true;
      if (dart.test(this[_isNull](subtype))) return true;
      if (dart._isFutureOr(subtype)) {
        let subtypeArg = dart.getGenericArgs(subtype)[$_get](0);
        if (dart._isFutureOr(supertype)) {
          let supertypeArg = dart.getGenericArgs(supertype)[$_get](0);
          return this[_isSubtypeMatch](subtypeArg, supertypeArg);
        }
        let subtypeFuture = async.Future$(subtypeArg);
        return dart.test(this[_isSubtypeMatch](subtypeFuture, supertype)) && dart.test(this[_isSubtypeMatch](subtypeArg, supertype));
      }
      if (dart._isFutureOr(supertype)) {
        let supertypeArg = dart.getGenericArgs(supertype)[$_get](0);
        let supertypeFuture = async.Future$(supertypeArg);
        return dart.test(this[_isSubtypeMatch](subtype, supertypeFuture)) || dart.test(this[_isSubtypeMatch](subtype, supertypeArg));
      }
      if (dart.TypeVariable.is(subtype)) {
        return dart.TypeVariable.is(supertype) && subtype == supertype;
      }
      if (dart.GenericFunctionType.is(subtype)) {
        if (dart.GenericFunctionType.is(supertype)) {
          let formalCount = subtype.formalCount;
          if (formalCount != supertype.formalCount) return false;
          let fresh = supertype.typeFormals;
          let t1Bounds = subtype.instantiateTypeBounds(fresh);
          let t2Bounds = supertype.instantiateTypeBounds(fresh);
          for (let i = 0; i < dart.notNull(formalCount); i++) {
            if (!dart.test(this[_isSubtypeMatch](t2Bounds[$_get](i), t1Bounds[$_get](i)))) {
              return false;
            }
          }
          return this[_isFunctionSubtypeMatch](subtype.instantiate(fresh), supertype.instantiate(fresh));
        } else {
          return false;
        }
      } else if (dart.GenericFunctionType.is(supertype)) {
        return false;
      }
      if (dart.FunctionType.is(subtype)) {
        if (!dart.FunctionType.is(supertype)) {
          if (core.identical(supertype, core.Function) || core.identical(supertype, core.Object)) {
            return true;
          } else {
            return false;
          }
        }
        if (dart.FunctionType.is(supertype)) {
          return this[_isFunctionSubtypeMatch](subtype, supertype);
        }
      }
      return this[_isInterfaceSubtypeMatch](subtype, supertype);
    }
    [_isTop](type) {
      return core.identical(type, dart.dynamic) || core.identical(type, dart.void) || core.identical(type, core.Object);
    }
  };
  (dart._TypeInferrer.new = function(typeVariables) {
    this[_typeVariables] = MapOfTypeVariable$TypeConstraint().fromIterables(typeVariables, IterableOfTypeConstraint()._check(typeVariables[$map](dart.TypeConstraint, _ => new dart.TypeConstraint.new())));
  }).prototype = dart._TypeInferrer.prototype;
  dart.addTypeTests(dart._TypeInferrer);
  dart.setMethodSignature(dart._TypeInferrer, () => ({
    __proto__: dart.getMethods(dart._TypeInferrer.__proto__),
    getInferredTypes: dart.fnType(core.List$(core.Object), []),
    trySubtypeMatch: dart.fnType(core.bool, [core.Object, core.Object]),
    [_constrainLower]: dart.fnType(dart.void, [dart.TypeVariable, core.Object]),
    [_constrainUpper]: dart.fnType(dart.void, [dart.TypeVariable, core.Object]),
    [_isFunctionSubtypeMatch]: dart.fnType(core.bool, [dart.FunctionType, dart.FunctionType]),
    [_isInterfaceSubtypeMatch]: dart.fnType(core.bool, [core.Object, core.Object]),
    [_isNull]: dart.fnType(core.bool, [core.Object]),
    [_isSubtypeMatch]: dart.fnType(core.bool, [core.Object, core.Object]),
    [_isTop]: dart.fnType(core.bool, [core.Object])
  }));
  dart.setFieldSignature(dart._TypeInferrer, () => ({
    __proto__: dart.getFields(dart._TypeInferrer.__proto__),
    [_typeVariables]: dart.finalFieldType(MapOfTypeVariable$TypeConstraint())
  }));
  dart.TypeConstraint = class TypeConstraint extends core.Object {
    [_constrainLower](type) {
      if (this.lower != null) {
        if (dart.isSubtypeOf(this.lower, type)) {
          return;
        }
        if (!dart.isSubtypeOf(type, this.lower)) {
          type = core.Null;
        }
      }
      this.lower = type;
    }
    [_constrainUpper](type) {
      if (this.upper != null) {
        if (dart.isSubtypeOf(type, this.upper)) {
          return;
        }
        if (!dart.isSubtypeOf(this.upper, type)) {
          type = core.Object;
        }
      }
      this.upper = type;
    }
    toString() {
      return dart.typeName(this.lower) + " <: <type> <: " + dart.typeName(this.upper);
    }
  };
  (dart.TypeConstraint.new = function() {
    this.lower = null;
    this.upper = null;
  }).prototype = dart.TypeConstraint.prototype;
  dart.addTypeTests(dart.TypeConstraint);
  dart.setMethodSignature(dart.TypeConstraint, () => ({
    __proto__: dart.getMethods(dart.TypeConstraint.__proto__),
    [_constrainLower]: dart.fnType(dart.void, [core.Object]),
    [_constrainUpper]: dart.fnType(dart.void, [core.Object])
  }));
  dart.setFieldSignature(dart.TypeConstraint, () => ({
    __proto__: dart.getFields(dart.TypeConstraint.__proto__),
    lower: dart.fieldType(core.Object),
    upper: dart.fieldType(core.Object)
  }));
  dart.defineExtensionMethods(dart.TypeConstraint, ['toString']);
  dart._thrownValue = Symbol("_thrownValue");
  dart._jsError = Symbol("_jsError");
  dart._stackTrace = Symbol("_stackTrace");
  dart.DartError = class DartError extends Error {
    constructor(error) {
      super();
      this[dart._thrownValue] = error;
      if (error != null && typeof error == "object" && error[dart._jsError] == null) {
        error[dart._jsError] = this;
      }
    }
    get message() {
      return dart.toString(this[dart._thrownValue]);
    }
  };
  dart.RethrownDartError = class RethrownDartError extends dart.DartError {
    constructor(error, stackTrace) {
      super(error);
      this[dart._stackTrace] = stackTrace;
    }
    get message() {
      return super.message + "\n    " + dart.toString(this[dart._stackTrace]) + "\n";
    }
  };
  const _jsError = Symbol('_jsError');
  const _jsObjectMissingTrace = Symbol('_jsObjectMissingTrace');
  const _trace = Symbol('_trace');
  dart._StackTrace = class _StackTrace extends core.Object {
    toString() {
      if (this[_trace] != null) return this[_trace];
      let e = this[_jsError];
      let trace = "";
      if (e != null && typeof e === "object") {
        trace = _interceptors.NativeError.is(e) ? e[$dartStack]() : e.stack;
        if (trace != null && _debugger.stackTraceMapper != null) {
          trace = _debugger.stackTraceMapper(trace);
        }
      }
      if (trace[$isEmpty] || this[_jsObjectMissingTrace] != null) {
        let jsToString = null;
        try {
          jsToString = "" + this[_jsObjectMissingTrace];
        } catch (e$) {
          let _ = dart.getThrown(e$);
          jsToString = "<error converting JS object to string>";
        }
        trace = "Non-error `" + dart.str(jsToString) + "` thrown by JS does not have stack trace." + ("\nCaught in Dart at:\n\n" + dart.str(trace));
      }
      return this[_trace] = trace;
    }
  };
  (dart._StackTrace.new = function(jsError) {
    this[_trace] = null;
    this[_jsError] = jsError;
    this[_jsObjectMissingTrace] = null;
  }).prototype = dart._StackTrace.prototype;
  (dart._StackTrace.missing = function(caughtObj) {
    this[_trace] = null;
    this[_jsObjectMissingTrace] = caughtObj != null ? caughtObj : "null";
    this[_jsError] = Error();
  }).prototype = dart._StackTrace.prototype;
  dart.addTypeTests(dart._StackTrace);
  dart._StackTrace[dart.implements] = () => [core.StackTrace];
  dart.setFieldSignature(dart._StackTrace, () => ({
    __proto__: dart.getFields(dart._StackTrace.__proto__),
    [_jsError]: dart.finalFieldType(core.Object),
    [_jsObjectMissingTrace]: dart.finalFieldType(core.Object),
    [_trace]: dart.fieldType(core.String)
  }));
  dart.defineExtensionMethods(dart._StackTrace, ['toString']);
  let const$;
  let const$0;
  let const$1;
  core.Invocation = class Invocation extends core.Object {
    static method(memberName, positionalArguments, namedArguments) {
      if (namedArguments === void 0) namedArguments = null;
      return new core._Invocation.method(memberName, null, positionalArguments, namedArguments);
    }
    static genericMethod(memberName, typeArguments, positionalArguments, namedArguments) {
      if (namedArguments === void 0) namedArguments = null;
      return new core._Invocation.method(memberName, typeArguments, positionalArguments, namedArguments);
    }
    static getter(name) {
      return new core._Invocation.getter(name);
    }
    static setter(memberName, argument) {
      return new core._Invocation.setter(memberName, argument);
    }
    get typeArguments() {
      return const$1 || (const$1 = dart.constList([], core.Type));
    }
    get isAccessor() {
      return dart.test(this.isGetter) || dart.test(this.isSetter);
    }
  };
  (core.Invocation.new = function() {
  }).prototype = core.Invocation.prototype;
  dart.addTypeTests(core.Invocation);
  dart.setGetterSignature(core.Invocation, () => ({
    __proto__: dart.getGetters(core.Invocation.__proto__),
    typeArguments: core.List$(core.Type),
    isAccessor: core.bool
  }));
  dart.InvocationImpl = class InvocationImpl extends core.Invocation {
    get typeArguments() {
      return this[typeArguments$];
    }
    set typeArguments(value) {
      super.typeArguments = value;
    }
    static _namedArgsToSymbols(namedArgs) {
      if (namedArgs == null) return const$0 || (const$0 = dart.constMap(core.Symbol, dart.dynamic, []));
      return MapOfSymbol$dynamic().unmodifiable(core.Map.fromIterable(dart.getOwnPropertyNames(namedArgs), {
        key: dart._dartSymbol,
        value: k => namedArgs[k]
      }));
    }
  };
  (dart.InvocationImpl.new = function(memberName, positionalArguments, opts) {
    let namedArguments = opts && 'namedArguments' in opts ? opts.namedArguments : null;
    let typeArguments = opts && 'typeArguments' in opts ? opts.typeArguments : null;
    let isMethod = opts && 'isMethod' in opts ? opts.isMethod : false;
    let isGetter = opts && 'isGetter' in opts ? opts.isGetter : false;
    let isSetter = opts && 'isSetter' in opts ? opts.isSetter : false;
    this.isMethod = isMethod;
    this.isGetter = isGetter;
    this.isSetter = isSetter;
    this.memberName = dart.test(isSetter) ? dart._setterSymbol(memberName) : dart._dartSymbol(memberName);
    this.positionalArguments = core.List.unmodifiable(positionalArguments);
    this.namedArguments = dart.InvocationImpl._namedArgsToSymbols(namedArguments);
    this[typeArguments$] = typeArguments == null ? const$ || (const$ = dart.constList([], core.Type)) : ListOfType().unmodifiable(typeArguments[$map](dart.dynamic, dart.wrapType));
    dart.InvocationImpl.__proto__.new.call(this);
  }).prototype = dart.InvocationImpl.prototype;
  dart.addTypeTests(dart.InvocationImpl);
  const typeArguments$ = Symbol("InvocationImpl.typeArguments");
  dart.setFieldSignature(dart.InvocationImpl, () => ({
    __proto__: dart.getFields(dart.InvocationImpl.__proto__),
    memberName: dart.finalFieldType(core.Symbol),
    positionalArguments: dart.finalFieldType(core.List),
    namedArguments: dart.finalFieldType(MapOfSymbol$dynamic()),
    typeArguments: dart.finalFieldType(ListOfType()),
    isMethod: dart.finalFieldType(core.bool),
    isGetter: dart.finalFieldType(core.bool),
    isSetter: dart.finalFieldType(core.bool)
  }));
  dart._ignoreSubtypeCache = new Map();
  dart.constantMaps = new Map();
  dart.constantSets = new Map();
  dart._value = Symbol("_value");
  dart.constants = new Map();
  dart.constantLists = new Map();
  dart.identityHashCode_ = Symbol("_identityHashCode");
  dart.JsIterator = class JsIterator {
    constructor(dartIterator) {
      this.dartIterator = dartIterator;
    }
    next() {
      let i = this.dartIterator;
      let done = !i.moveNext();
      return {done: done, value: done ? void 0 : i.current};
    }
  };
  _debugger.JsonMLConfig = class JsonMLConfig extends core.Object {
    toString() {
      return "JsonMLConfig(" + dart.str(this.name) + ")";
    }
  };
  (_debugger.JsonMLConfig.new = function(name) {
    this.name = name;
  }).prototype = _debugger.JsonMLConfig.prototype;
  dart.addTypeTests(_debugger.JsonMLConfig);
  dart.setFieldSignature(_debugger.JsonMLConfig, () => ({
    __proto__: dart.getFields(_debugger.JsonMLConfig.__proto__),
    name: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(_debugger.JsonMLConfig, ['toString']);
  dart.defineLazy(_debugger.JsonMLConfig, {
    /*_debugger.JsonMLConfig.none*/get none() {
      return dart.const(new _debugger.JsonMLConfig.new("none"));
    },
    /*_debugger.JsonMLConfig.skipDart*/get skipDart() {
      return dart.const(new _debugger.JsonMLConfig.new("skipDart"));
    },
    /*_debugger.JsonMLConfig.keyToString*/get keyToString() {
      return dart.const(new _debugger.JsonMLConfig.new("keyToString"));
    },
    /*_debugger.JsonMLConfig.asClass*/get asClass() {
      return dart.const(new _debugger.JsonMLConfig.new("asClass"));
    },
    /*_debugger.JsonMLConfig.asObject*/get asObject() {
      return dart.const(new _debugger.JsonMLConfig.new("asObject"));
    }
  });
  dart.defineLazy(_debugger, {
    /*_debugger._maxSpanLength*/get _maxSpanLength() {
      return 100;
    },
    set _maxSpanLength(_) {},
    /*_debugger._devtoolsFormatter*/get _devtoolsFormatter() {
      return new _debugger.JsonMLFormatter.new(new _debugger.DartFormatter.new());
    },
    set _devtoolsFormatter(_) {},
    /*_debugger.maxFormatterStringLength*/get maxFormatterStringLength() {
      return 100;
    },
    set maxFormatterStringLength(_) {}
  });
  _debugger._typeof = function(object) {
    return typeof object;
  };
  _debugger.getOwnPropertyNames = function(object) {
    return JSArrayOfString().of(dart.getOwnPropertyNames(object));
  };
  _debugger.getOwnPropertySymbols = function(object) {
    return Object.getOwnPropertySymbols(object);
  };
  _debugger.JSNative = class JSNative extends core.Object {
    static getProperty(object, name) {
      return object[name];
    }
    static setProperty(object, name, value) {
      return object[name] = value;
    }
  };
  (_debugger.JSNative.new = function() {
  }).prototype = _debugger.JSNative.prototype;
  dart.addTypeTests(_debugger.JSNative);
  _debugger.addMetadataChildren = function(object, ret) {
    ret.add(new _debugger.NameValuePair.new({name: "[[class]]", value: dart.getReifiedType(object), config: _debugger.JsonMLConfig.asClass}));
  };
  _debugger.addPropertiesFromSignature = function(sig, properties, object, walkPrototypeChain, opts) {
    let tagTypes = opts && 'tagTypes' in opts ? opts.tagTypes : false;
    let skippedNames = new collection._HashSet.new();
    skippedNames.add("hashCode");
    let objectPrototype = Object.prototype;
    while (sig != null && !core.identical(sig, objectPrototype)) {
      for (let symbol of _debugger.getOwnPropertySymbols(sig)) {
        let dartName = _debugger.symbolName(symbol);
        let dartXPrefix = "dartx.";
        if (dartName[$startsWith](dartXPrefix)) {
          dartName = dartName[$substring](dartXPrefix.length);
        }
        if (dart.test(skippedNames.contains(dartName))) continue;
        let value = _debugger.safeGetProperty(object, symbol);
        if (dart.dtest(tagTypes) && _debugger._typeof(value) === "function") {
          dart.fn(value, sig[symbol]);
        }
        properties.add(new _debugger.NameValuePair.new({name: dartName, value: value}));
      }
      for (let name of _debugger.getOwnPropertyNames(sig)) {
        let value = _debugger.safeGetProperty(object, name);
        if (dart.test(skippedNames.contains(name))) continue;
        if (dart.dtest(tagTypes) && _debugger._typeof(value) === "function") {
          dart.fn(value, sig[name]);
        }
        properties.add(new _debugger.NameValuePair.new({name: name, value: value}));
      }
      if (!dart.test(walkPrototypeChain)) break;
      sig = dart.getPrototypeOf(sig);
    }
  };
  _debugger.sortProperties = function(properties) {
    let sortedProperties = properties[$toList]();
    sortedProperties[$sort](dart.fn((a, b) => {
      let aPrivate = a.name[$startsWith]("_");
      let bPrivate = b.name[$startsWith]("_");
      if (aPrivate !== bPrivate) return aPrivate ? 1 : -1;
      return a.name[$compareTo](b.name);
    }, NameValuePairAndNameValuePairToint()));
    return sortedProperties;
  };
  _debugger.getObjectTypeName = function(object) {
    let reifiedType = dart.getReifiedType(object);
    if (reifiedType == null) {
      if (_debugger._typeof(object) === "function") {
        return "[[Raw JavaScript Function]]";
      }
      return "<Error getting type name>";
    }
    return _debugger.getTypeName(reifiedType);
  };
  _debugger.getTypeName = function(type) {
    return dart.typeName(type);
  };
  const _simpleFormatter = Symbol('_simpleFormatter');
  _debugger.safePreview = function(object, config) {
    try {
      let preview = _debugger._devtoolsFormatter[_simpleFormatter].preview(object, config);
      if (preview != null) return preview;
      return dart.toString(object);
    } catch (e$) {
      let e = dart.getThrown(e$);
      return "<Exception thrown> " + dart.str(e);
    }
  };
  _debugger.symbolName = function(symbol) {
    let name = dart.toString(symbol);
    if (!name[$startsWith]("Symbol(")) dart.assertFailed();
    return name[$substring]("Symbol(".length, name.length - 1);
  };
  _debugger.hasMethod = function(object, name) {
    try {
      return dart.hasMethod(object, name);
    } catch (e$) {
      let e = dart.getThrown(e$);
      return false;
    }
  };
  _debugger.NameValuePair = class NameValuePair extends core.Object {
    _equals(other) {
      if (!_debugger.NameValuePair.is(other)) return false;
      if (dart.test(this.hideName) || dart.dtest(dart.dload(other, 'hideName'))) return this === other;
      return dart.equals(dart.dload(other, 'name'), this.name);
    }
    get hashCode() {
      return dart.hashCode(this.name);
    }
    get displayName() {
      return dart.test(this.hideName) ? "" : this.name;
    }
  };
  (_debugger.NameValuePair.new = function(opts) {
    let name = opts && 'name' in opts ? opts.name : null;
    let value = opts && 'value' in opts ? opts.value : null;
    let config = opts && 'config' in opts ? opts.config : _debugger.JsonMLConfig.none;
    let hideName = opts && 'hideName' in opts ? opts.hideName : false;
    this.name = name;
    this.value = value;
    this.config = config;
    this.hideName = hideName;
  }).prototype = _debugger.NameValuePair.prototype;
  dart.addTypeTests(_debugger.NameValuePair);
  dart.setGetterSignature(_debugger.NameValuePair, () => ({
    __proto__: dart.getGetters(_debugger.NameValuePair.__proto__),
    displayName: core.String
  }));
  dart.setFieldSignature(_debugger.NameValuePair, () => ({
    __proto__: dart.getFields(_debugger.NameValuePair.__proto__),
    name: dart.finalFieldType(core.String),
    value: dart.finalFieldType(core.Object),
    config: dart.finalFieldType(_debugger.JsonMLConfig),
    hideName: dart.finalFieldType(core.bool)
  }));
  dart.defineExtensionMethods(_debugger.NameValuePair, ['_equals']);
  dart.defineExtensionAccessors(_debugger.NameValuePair, ['hashCode']);
  _debugger.MapEntry = class MapEntry extends core.Object {};
  (_debugger.MapEntry.new = function(opts) {
    let key = opts && 'key' in opts ? opts.key : null;
    let value = opts && 'value' in opts ? opts.value : null;
    this.key = key;
    this.value = value;
  }).prototype = _debugger.MapEntry.prototype;
  dart.addTypeTests(_debugger.MapEntry);
  dart.setFieldSignature(_debugger.MapEntry, () => ({
    __proto__: dart.getFields(_debugger.MapEntry.__proto__),
    key: dart.finalFieldType(core.Object),
    value: dart.finalFieldType(core.Object)
  }));
  _debugger.IterableSpan = class IterableSpan extends core.Object {
    get length() {
      return dart.notNull(this.end) - dart.notNull(this.start);
    }
    get maxPowerOfSubsetSize() {
      return (math.log(dart.notNull(this.length) - 0.5) / math.log(_debugger._maxSpanLength))[$truncate]();
    }
    get subsetSize() {
      return dart.asInt(math.pow(_debugger._maxSpanLength, this.maxPowerOfSubsetSize));
    }
    asMap() {
      return this.iterable[$skip](this.start)[$take](this.length)[$toList]()[$asMap]();
    }
    children() {
      let children = JSArrayOfNameValuePair().of([]);
      if (dart.notNull(this.length) <= dart.notNull(_debugger._maxSpanLength)) {
        this.asMap()[$forEach](dart.fn((i, element) => {
          children[$add](new _debugger.NameValuePair.new({name: (dart.notNull(i) + dart.notNull(this.start))[$toString](), value: element}));
        }, intAnddynamicToNull()));
      } else {
        for (let i = this.start; dart.notNull(i) < dart.notNull(this.end); i = dart.notNull(i) + dart.notNull(this.subsetSize)) {
          let subSpan = new _debugger.IterableSpan.new(i, math.min(core.int, this.end, dart.notNull(this.subsetSize) + dart.notNull(i)), this.iterable);
          if (subSpan.length === 1) {
            children[$add](new _debugger.NameValuePair.new({name: dart.toString(i), value: this.iterable[$elementAt](i)}));
          } else {
            children[$add](new _debugger.NameValuePair.new({name: "[" + dart.str(i) + "..." + dart.str(dart.notNull(subSpan.end) - 1) + "]", value: subSpan, hideName: true}));
          }
        }
      }
      return children;
    }
  };
  (_debugger.IterableSpan.new = function(start, end, iterable) {
    this.start = start;
    this.end = end;
    this.iterable = iterable;
  }).prototype = _debugger.IterableSpan.prototype;
  dart.addTypeTests(_debugger.IterableSpan);
  dart.setMethodSignature(_debugger.IterableSpan, () => ({
    __proto__: dart.getMethods(_debugger.IterableSpan.__proto__),
    asMap: dart.fnType(core.Map$(core.int, dart.dynamic), []),
    children: dart.fnType(core.List$(_debugger.NameValuePair), [])
  }));
  dart.setGetterSignature(_debugger.IterableSpan, () => ({
    __proto__: dart.getGetters(_debugger.IterableSpan.__proto__),
    length: core.int,
    maxPowerOfSubsetSize: core.int,
    subsetSize: core.int
  }));
  dart.setFieldSignature(_debugger.IterableSpan, () => ({
    __proto__: dart.getFields(_debugger.IterableSpan.__proto__),
    start: dart.finalFieldType(core.int),
    end: dart.finalFieldType(core.int),
    iterable: dart.finalFieldType(core.Iterable)
  }));
  _debugger.Library = class Library extends core.Object {};
  (_debugger.Library.new = function(name, object) {
    this.name = name;
    this.object = object;
  }).prototype = _debugger.Library.prototype;
  dart.addTypeTests(_debugger.Library);
  dart.setFieldSignature(_debugger.Library, () => ({
    __proto__: dart.getFields(_debugger.Library.__proto__),
    name: dart.finalFieldType(core.String),
    object: dart.finalFieldType(core.Object)
  }));
  _debugger.NamedConstructor = class NamedConstructor extends core.Object {};
  (_debugger.NamedConstructor.new = function(object) {
    this.object = object;
  }).prototype = _debugger.NamedConstructor.prototype;
  dart.addTypeTests(_debugger.NamedConstructor);
  dart.setFieldSignature(_debugger.NamedConstructor, () => ({
    __proto__: dart.getFields(_debugger.NamedConstructor.__proto__),
    object: dart.finalFieldType(core.Object)
  }));
  _debugger.HeritageClause = class HeritageClause extends core.Object {};
  (_debugger.HeritageClause.new = function(name, types) {
    this.name = name;
    this.types = types;
  }).prototype = _debugger.HeritageClause.prototype;
  dart.addTypeTests(_debugger.HeritageClause);
  dart.setFieldSignature(_debugger.HeritageClause, () => ({
    __proto__: dart.getFields(_debugger.HeritageClause.__proto__),
    name: dart.finalFieldType(core.String),
    types: dart.finalFieldType(core.List)
  }));
  _debugger.safeGetProperty = function(protoChain, name) {
    try {
      return _debugger.JSNative.getProperty(protoChain, name);
    } catch (e$) {
      let e = dart.getThrown(e$);
      return "<Exception thrown> " + dart.str(e);
    }
  };
  _debugger.safeProperties = function(object) {
    return MapOfdynamic$Object().fromIterable(_debugger.getOwnPropertyNames(object)[$where](dart.fn(each => _debugger.safeGetProperty(object, each) != null, StringTobool())), {key: dart.fn(name => name, dynamicTodynamic()), value: dart.fn(name => _debugger.safeGetProperty(object, name), dynamicToObject())});
  };
  const _attributes = Symbol('_attributes');
  const _jsonML = Symbol('_jsonML');
  _debugger.JsonMLElement = class JsonMLElement extends core.Object {
    appendChild(element) {
      this[_jsonML][$add](dart.dsend(element, 'toJsonML', []));
    }
    createChild(tagName) {
      let c = new _debugger.JsonMLElement.new(tagName);
      this[_jsonML][$add](c.toJsonML());
      return c;
    }
    createObjectTag(object) {
      let _ = this.createChild("object");
      _.addAttribute("object", object);
      return _;
    }
    setStyle(style) {
      dart.dput(this[_attributes], 'style', style);
    }
    addStyle(style) {
      if (dart.dload(this[_attributes], 'style') == null) {
        dart.dput(this[_attributes], 'style', style);
      } else {
        let o = this[_attributes];
        dart.dput(o, 'style', dart.dsend(dart.dload(o, 'style'), '+', [style]));
      }
    }
    addAttribute(key, value) {
      _debugger.JSNative.setProperty(this[_attributes], key, value);
    }
    createTextChild(text) {
      this[_jsonML][$add](text);
    }
    toJsonML() {
      return this[_jsonML];
    }
  };
  (_debugger.JsonMLElement.new = function(tagName) {
    this[_attributes] = null;
    this[_jsonML] = null;
    this[_attributes] = {};
    this[_jsonML] = [tagName, this[_attributes]];
  }).prototype = _debugger.JsonMLElement.prototype;
  dart.addTypeTests(_debugger.JsonMLElement);
  dart.setMethodSignature(_debugger.JsonMLElement, () => ({
    __proto__: dart.getMethods(_debugger.JsonMLElement.__proto__),
    appendChild: dart.fnType(dart.dynamic, [dart.dynamic]),
    createChild: dart.fnType(_debugger.JsonMLElement, [core.String]),
    createObjectTag: dart.fnType(_debugger.JsonMLElement, [dart.dynamic]),
    setStyle: dart.fnType(dart.void, [core.String]),
    addStyle: dart.fnType(dart.dynamic, [core.String]),
    addAttribute: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic]),
    createTextChild: dart.fnType(dart.dynamic, [core.String]),
    toJsonML: dart.fnType(dart.dynamic, [])
  }));
  dart.setFieldSignature(_debugger.JsonMLElement, () => ({
    __proto__: dart.getFields(_debugger.JsonMLElement.__proto__),
    [_attributes]: dart.fieldType(dart.dynamic),
    [_jsonML]: dart.fieldType(core.List)
  }));
  _debugger.isNativeJavaScriptObject = function(object) {
    let type = _debugger._typeof(object);
    if (type !== "object" && type !== "function") return true;
    if (dart.test(dart.isJsInterop(object)) && dart.getModuleName(object) == null) {
      return true;
    }
    return html$.Node.is(object);
  };
  _debugger.JsonMLFormatter = class JsonMLFormatter extends core.Object {
    setMaxSpanLengthForTestingOnly(spanLength) {
      _debugger._maxSpanLength = spanLength;
    }
    header(object, config) {
      this.customFormattersOn = true;
      if (dart.equals(config, _debugger.JsonMLConfig.skipDart) || dart.test(_debugger.isNativeJavaScriptObject(object))) {
        return null;
      }
      let c = this[_simpleFormatter].preview(object, config);
      if (c == null) return null;
      if (dart.equals(config, _debugger.JsonMLConfig.keyToString)) {
        c = dart.toString(object);
      }
      let element = new _debugger.JsonMLElement.new("span");
      element.setStyle("background-color: #d9edf7;color: black");
      element.createTextChild(c);
      return element.toJsonML();
    }
    hasBody(object, config) {
      return this[_simpleFormatter].hasChildren(object, config);
    }
    body(object, config) {
      let body = new _debugger.JsonMLElement.new("ol");
      body.setStyle("list-style-type: none;" + "padding-left: 0px;" + "margin-top: 0px;" + "margin-bottom: 0px;" + "margin-left: 12px;");
      if (core.StackTrace.is(object)) {
        body.addStyle("background-color: thistle;color: rgb(196, 26, 22);");
      }
      let children = this[_simpleFormatter].children(object, config);
      if (children == null) return body.toJsonML();
      for (let child of children) {
        let li = body.createChild("li");
        li.setStyle("padding-left: 13px;");
        let nameSpan = null;
        let valueStyle = "";
        if (!dart.test(child.hideName)) {
          nameSpan = new _debugger.JsonMLElement.new("span");
          nameSpan.createTextChild(child.displayName[$isNotEmpty] ? dart.str(child.displayName) + ": " : "");
          nameSpan.setStyle("background-color: thistle; color: rgb(136, 19, 145); margin-right: -13px");
          valueStyle = "margin-left: 13px";
        }
        if (_debugger._typeof(child.value) === "object" || _debugger._typeof(child.value) === "function") {
          let valueSpan = new _debugger.JsonMLElement.new("span");
          valueSpan.setStyle(valueStyle);
          valueSpan.createObjectTag(child.value).addAttribute("config", child.config);
          if (nameSpan != null) {
            li.appendChild(nameSpan);
          }
          li.appendChild(valueSpan);
        } else {
          let line = li.createChild("span");
          if (nameSpan != null) {
            line.appendChild(nameSpan);
          }
          line.appendChild((() => {
            let _ = new _debugger.JsonMLElement.new("span");
            _.createTextChild(_debugger.safePreview(child.value, child.config));
            _.setStyle(valueStyle);
            return _;
          })());
        }
      }
      return body.toJsonML();
    }
  };
  (_debugger.JsonMLFormatter.new = function(simpleFormatter) {
    this.customFormattersOn = false;
    this[_simpleFormatter] = simpleFormatter;
  }).prototype = _debugger.JsonMLFormatter.prototype;
  dart.addTypeTests(_debugger.JsonMLFormatter);
  dart.setMethodSignature(_debugger.JsonMLFormatter, () => ({
    __proto__: dart.getMethods(_debugger.JsonMLFormatter.__proto__),
    setMaxSpanLengthForTestingOnly: dart.fnType(dart.void, [core.int]),
    header: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic]),
    hasBody: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
    body: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic])
  }));
  dart.setFieldSignature(_debugger.JsonMLFormatter, () => ({
    __proto__: dart.getFields(_debugger.JsonMLFormatter.__proto__),
    [_simpleFormatter]: dart.fieldType(_debugger.DartFormatter),
    customFormattersOn: dart.fieldType(core.bool)
  }));
  _debugger.Formatter = class Formatter extends core.Object {};
  (_debugger.Formatter.new = function() {
  }).prototype = _debugger.Formatter.prototype;
  dart.addTypeTests(_debugger.Formatter);
  const _formatters = Symbol('_formatters');
  _debugger.DartFormatter = class DartFormatter extends core.Object {
    preview(object, config) {
      try {
        if (object == null || typeof object == 'number' || typeof object == 'string' || dart.test(_debugger.isNativeJavaScriptObject(object))) {
          return dart.toString(object);
        }
        for (let formatter of this[_formatters]) {
          if (dart.test(formatter.accept(object, config))) return formatter.preview(object);
        }
      } catch (e$) {
        let e = dart.getThrown(e$);
        let trace = dart.stackTrace(e$);
        html$.window[$console].error("Caught exception " + dart.str(e) + "\n trace:\n" + dart.str(trace));
      }
      return null;
    }
    hasChildren(object, config) {
      if (object == null) return false;
      try {
        for (let formatter of this[_formatters]) {
          if (dart.test(formatter.accept(object, config))) return formatter.hasChildren(object);
        }
      } catch (e$) {
        let e = dart.getThrown(e$);
        let trace = dart.stackTrace(e$);
        html$.window[$console].error("[hasChildren] Caught exception " + dart.str(e) + "\n trace:\n" + dart.str(trace));
      }
      return false;
    }
    children(object, config) {
      try {
        if (object != null) {
          for (let formatter of this[_formatters]) {
            if (dart.test(formatter.accept(object, config))) return formatter.children(object);
          }
        }
      } catch (e$) {
        let e = dart.getThrown(e$);
        let trace = dart.stackTrace(e$);
        html$.window[$console].error("Caught exception " + dart.str(e) + "\n trace:\n" + dart.str(trace));
      }
      return JSArrayOfNameValuePair().of([]);
    }
  };
  (_debugger.DartFormatter.new = function() {
    this[_formatters] = null;
    this[_formatters] = JSArrayOfFormatter().of([new _debugger.ObjectInternalsFormatter.new(), new _debugger.ClassFormatter.new(), new _debugger.TypeFormatter.new(), new _debugger.NamedConstructorFormatter.new(), new _debugger.MapFormatter.new(), new _debugger.IterableFormatter.new(), new _debugger.IterableSpanFormatter.new(), new _debugger.MapEntryFormatter.new(), new _debugger.StackTraceFormatter.new(), new _debugger.ErrorAndExceptionFormatter.new(), new _debugger.FunctionFormatter.new(), new _debugger.HeritageClauseFormatter.new(), new _debugger.LibraryModuleFormatter.new(), new _debugger.LibraryFormatter.new(), new _debugger.ObjectFormatter.new()]);
  }).prototype = _debugger.DartFormatter.prototype;
  dart.addTypeTests(_debugger.DartFormatter);
  dart.setMethodSignature(_debugger.DartFormatter, () => ({
    __proto__: dart.getMethods(_debugger.DartFormatter.__proto__),
    preview: dart.fnType(core.String, [dart.dynamic, dart.dynamic]),
    hasChildren: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
    children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic, dart.dynamic])
  }));
  dart.setFieldSignature(_debugger.DartFormatter, () => ({
    __proto__: dart.getFields(_debugger.DartFormatter.__proto__),
    [_formatters]: dart.fieldType(ListOfFormatter())
  }));
  _debugger.ObjectFormatter = class ObjectFormatter extends _debugger.Formatter {
    accept(object, config) {
      return !dart.test(_debugger.isNativeJavaScriptObject(object));
    }
    preview(object) {
      let typeName = _debugger.getObjectTypeName(object);
      try {
        let toString = dart.str(object);
        if (toString.length > dart.notNull(_debugger.maxFormatterStringLength)) {
          toString = toString[$substring](0, dart.notNull(_debugger.maxFormatterStringLength) - 3) + "...";
        }
        if (toString[$contains](typeName)) {
          return toString;
        } else {
          return toString + " (" + dart.str(typeName) + ")";
        }
      } catch (e$) {
        let e = dart.getThrown(e$);
      }
      return typeName;
    }
    hasChildren(object) {
      return true;
    }
    children(object) {
      let type = dart.getType(object);
      let ret = new (_HashSetOfNameValuePair()).new();
      let fields = new (_HashSetOfNameValuePair()).new();
      _debugger.addPropertiesFromSignature(dart.getFields(type), fields, object, true);
      let getters = new (_HashSetOfNameValuePair()).new();
      _debugger.addPropertiesFromSignature(dart.getGetters(type), getters, object, true);
      ret.addAll(_debugger.sortProperties(fields));
      ret.addAll(_debugger.sortProperties(getters));
      _debugger.addMetadataChildren(object, ret);
      return ret.toList();
    }
  };
  (_debugger.ObjectFormatter.new = function() {
  }).prototype = _debugger.ObjectFormatter.prototype;
  dart.addTypeTests(_debugger.ObjectFormatter);
  dart.setMethodSignature(_debugger.ObjectFormatter, () => ({
    __proto__: dart.getMethods(_debugger.ObjectFormatter.__proto__),
    accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
    preview: dart.fnType(core.String, [dart.dynamic]),
    hasChildren: dart.fnType(core.bool, [dart.dynamic]),
    children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  }));
  _debugger.ObjectInternalsFormatter = class ObjectInternalsFormatter extends _debugger.ObjectFormatter {
    accept(object, config) {
      return dart.test(super.accept(object, config)) && dart.equals(config, _debugger.JsonMLConfig.asObject);
    }
    preview(object) {
      return _debugger.getObjectTypeName(object);
    }
  };
  (_debugger.ObjectInternalsFormatter.new = function() {
  }).prototype = _debugger.ObjectInternalsFormatter.prototype;
  dart.addTypeTests(_debugger.ObjectInternalsFormatter);
  _debugger.LibraryModuleFormatter = class LibraryModuleFormatter extends core.Object {
    accept(object, config) {
      return dart.getModuleName(object) != null;
    }
    hasChildren(object) {
      return true;
    }
    preview(object) {
      let libraryNames = dart.getModuleName(object)[$split]("/");
      if (dart.notNull(libraryNames[$length]) > 1 && libraryNames[$last] == libraryNames[$_get](dart.notNull(libraryNames[$length]) - 2)) {
        libraryNames[$_set](dart.notNull(libraryNames[$length]) - 1, "");
      }
      return "Library Module: " + dart.str(libraryNames[$join]("/"));
    }
    children(object) {
      let children = new (_HashSetOfNameValuePair()).new();
      for (let name of _debugger.getOwnPropertyNames(object)) {
        let value = _debugger.safeGetProperty(object, name);
        children.add(new _debugger.NameValuePair.new({name: name, value: new _debugger.Library.new(name, value), hideName: true}));
      }
      return children.toList();
    }
  };
  (_debugger.LibraryModuleFormatter.new = function() {
  }).prototype = _debugger.LibraryModuleFormatter.prototype;
  dart.addTypeTests(_debugger.LibraryModuleFormatter);
  _debugger.LibraryModuleFormatter[dart.implements] = () => [_debugger.Formatter];
  dart.setMethodSignature(_debugger.LibraryModuleFormatter, () => ({
    __proto__: dart.getMethods(_debugger.LibraryModuleFormatter.__proto__),
    accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
    hasChildren: dart.fnType(core.bool, [dart.dynamic]),
    preview: dart.fnType(core.String, [dart.dynamic]),
    children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  }));
  _debugger.LibraryFormatter = class LibraryFormatter extends core.Object {
    accept(object, config) {
      return _debugger.Library.is(object);
    }
    hasChildren(object) {
      return true;
    }
    preview(object) {
      return core.String._check(dart.dload(object, 'name'));
    }
    children(object) {
      let children = new (_HashSetOfNameValuePair()).new();
      let objectProperties = _debugger.safeProperties(dart.dload(object, 'object'));
      dart.dsend(objectProperties, 'forEach', [dart.fn((name, value) => {
          if (dart.getGenericTypeCtor(value) != null) return;
          children.add(_debugger.NameValuePair._check(dart.isType(value) ? this.classChild(core.String._check(name), value) : new _debugger.NameValuePair.new({name: core.String._check(name), value: value})));
        }, dynamicAnddynamicToNull())]);
      return children.toList();
    }
    classChild(name, child) {
      let typeName = _debugger.getTypeName(child);
      return new _debugger.NameValuePair.new({name: typeName, value: child, config: _debugger.JsonMLConfig.asClass});
    }
  };
  (_debugger.LibraryFormatter.new = function() {
    this.genericParameters = new (IdentityMapOfString$String()).new();
  }).prototype = _debugger.LibraryFormatter.prototype;
  dart.addTypeTests(_debugger.LibraryFormatter);
  _debugger.LibraryFormatter[dart.implements] = () => [_debugger.Formatter];
  dart.setMethodSignature(_debugger.LibraryFormatter, () => ({
    __proto__: dart.getMethods(_debugger.LibraryFormatter.__proto__),
    accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
    hasChildren: dart.fnType(core.bool, [dart.dynamic]),
    preview: dart.fnType(core.String, [dart.dynamic]),
    children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic]),
    classChild: dart.fnType(dart.dynamic, [core.String, core.Object])
  }));
  dart.setFieldSignature(_debugger.LibraryFormatter, () => ({
    __proto__: dart.getFields(_debugger.LibraryFormatter.__proto__),
    genericParameters: dart.fieldType(HashMapOfString$String())
  }));
  _debugger.FunctionFormatter = class FunctionFormatter extends core.Object {
    accept(object, config) {
      if (_debugger._typeof(object) !== "function") return false;
      return dart.getReifiedType(object) != null;
    }
    hasChildren(object) {
      return true;
    }
    preview(object) {
      return dart.typeName(dart.getReifiedType(object));
    }
    children(object) {
      return JSArrayOfNameValuePair().of([new _debugger.NameValuePair.new({name: "signature", value: this.preview(object)}), new _debugger.NameValuePair.new({name: "JavaScript Function", value: object, config: _debugger.JsonMLConfig.skipDart})]);
    }
  };
  (_debugger.FunctionFormatter.new = function() {
  }).prototype = _debugger.FunctionFormatter.prototype;
  dart.addTypeTests(_debugger.FunctionFormatter);
  _debugger.FunctionFormatter[dart.implements] = () => [_debugger.Formatter];
  dart.setMethodSignature(_debugger.FunctionFormatter, () => ({
    __proto__: dart.getMethods(_debugger.FunctionFormatter.__proto__),
    accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
    hasChildren: dart.fnType(core.bool, [dart.dynamic]),
    preview: dart.fnType(core.String, [dart.dynamic]),
    children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  }));
  _debugger.MapFormatter = class MapFormatter extends core.Object {
    accept(object, config) {
      return core.Map.is(object);
    }
    hasChildren(object) {
      return true;
    }
    preview(object) {
      let map = core.Map._check(object);
      return dart.str(_debugger.getObjectTypeName(map)) + " length " + dart.str(map[$length]);
    }
    children(object) {
      let map = core.Map._check(object);
      let entries = new (_HashSetOfNameValuePair()).new();
      map[$forEach](dart.fn((key, value) => {
        let entryWrapper = new _debugger.MapEntry.new({key: key, value: value});
        entries.add(new _debugger.NameValuePair.new({name: dart.toString(entries.length), value: entryWrapper}));
      }, dynamicAnddynamicToNull()));
      this.addInstanceMembers(object, entries);
      _debugger.addMetadataChildren(object, entries);
      return entries.toList();
    }
    addInstanceMembers(object, ret) {
      ret.add(new _debugger.NameValuePair.new({name: "[[instance members]]", value: object, config: _debugger.JsonMLConfig.asObject}));
    }
  };
  (_debugger.MapFormatter.new = function() {
  }).prototype = _debugger.MapFormatter.prototype;
  dart.addTypeTests(_debugger.MapFormatter);
  _debugger.MapFormatter[dart.implements] = () => [_debugger.Formatter];
  dart.setMethodSignature(_debugger.MapFormatter, () => ({
    __proto__: dart.getMethods(_debugger.MapFormatter.__proto__),
    accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
    hasChildren: dart.fnType(core.bool, [dart.dynamic]),
    preview: dart.fnType(core.String, [dart.dynamic]),
    children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic]),
    addInstanceMembers: dart.fnType(dart.void, [dart.dynamic, core.Set$(_debugger.NameValuePair)])
  }));
  _debugger.IterableFormatter = class IterableFormatter extends core.Object {
    accept(object, config) {
      return core.Iterable.is(object);
    }
    preview(object) {
      let iterable = core.Iterable._check(object);
      try {
        let length = iterable[$length];
        return dart.str(_debugger.getObjectTypeName(iterable)) + " length " + dart.str(length);
      } catch (e) {
        let _ = dart.getThrown(e);
        return dart.str(_debugger.getObjectTypeName(iterable));
      }
    }
    hasChildren(object) {
      return true;
    }
    children(object) {
      let children = new (_HashSetOfNameValuePair()).new();
      children.addAll(new _debugger.IterableSpan.new(0, core.int._check(dart.dload(object, 'length')), core.Iterable._check(object)).children());
      _debugger.addMetadataChildren(object, children);
      return children.toList();
    }
  };
  (_debugger.IterableFormatter.new = function() {
  }).prototype = _debugger.IterableFormatter.prototype;
  dart.addTypeTests(_debugger.IterableFormatter);
  _debugger.IterableFormatter[dart.implements] = () => [_debugger.Formatter];
  dart.setMethodSignature(_debugger.IterableFormatter, () => ({
    __proto__: dart.getMethods(_debugger.IterableFormatter.__proto__),
    accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
    preview: dart.fnType(core.String, [dart.dynamic]),
    hasChildren: dart.fnType(core.bool, [dart.dynamic]),
    children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  }));
  _debugger.NamedConstructorFormatter = class NamedConstructorFormatter extends core.Object {
    accept(object, config) {
      return _debugger.NamedConstructor.is(object);
    }
    preview(object) {
      return "Named Constructor";
    }
    hasChildren(object) {
      return true;
    }
    children(object) {
      return JSArrayOfNameValuePair().of([new _debugger.NameValuePair.new({name: "JavaScript Function", value: object, config: _debugger.JsonMLConfig.skipDart})]);
    }
  };
  (_debugger.NamedConstructorFormatter.new = function() {
  }).prototype = _debugger.NamedConstructorFormatter.prototype;
  dart.addTypeTests(_debugger.NamedConstructorFormatter);
  _debugger.NamedConstructorFormatter[dart.implements] = () => [_debugger.Formatter];
  dart.setMethodSignature(_debugger.NamedConstructorFormatter, () => ({
    __proto__: dart.getMethods(_debugger.NamedConstructorFormatter.__proto__),
    accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
    preview: dart.fnType(core.String, [dart.dynamic]),
    hasChildren: dart.fnType(core.bool, [dart.dynamic]),
    children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  }));
  _debugger.MapEntryFormatter = class MapEntryFormatter extends core.Object {
    accept(object, config) {
      return _debugger.MapEntry.is(object);
    }
    preview(object) {
      let entry = _debugger.MapEntry._check(object);
      return dart.str(_debugger.safePreview(entry.key, _debugger.JsonMLConfig.none)) + " => " + dart.str(_debugger.safePreview(entry.value, _debugger.JsonMLConfig.none));
    }
    hasChildren(object) {
      return true;
    }
    children(object) {
      return JSArrayOfNameValuePair().of([new _debugger.NameValuePair.new({name: "key", value: dart.dload(object, 'key'), config: _debugger.JsonMLConfig.keyToString}), new _debugger.NameValuePair.new({name: "value", value: dart.dload(object, 'value')})]);
    }
  };
  (_debugger.MapEntryFormatter.new = function() {
  }).prototype = _debugger.MapEntryFormatter.prototype;
  dart.addTypeTests(_debugger.MapEntryFormatter);
  _debugger.MapEntryFormatter[dart.implements] = () => [_debugger.Formatter];
  dart.setMethodSignature(_debugger.MapEntryFormatter, () => ({
    __proto__: dart.getMethods(_debugger.MapEntryFormatter.__proto__),
    accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
    preview: dart.fnType(core.String, [dart.dynamic]),
    hasChildren: dart.fnType(core.bool, [dart.dynamic]),
    children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  }));
  _debugger.HeritageClauseFormatter = class HeritageClauseFormatter extends core.Object {
    accept(object, config) {
      return _debugger.HeritageClause.is(object);
    }
    preview(object) {
      let clause = _debugger.HeritageClause._check(object);
      let typeNames = IterableOfString()._check(clause.types[$map](core.String, dart.fn(_debugger.getTypeName, dynamicToString())));
      return dart.str(clause.name) + " " + dart.str(typeNames[$join](", "));
    }
    hasChildren(object) {
      return true;
    }
    children(object) {
      let clause = _debugger.HeritageClause._check(object);
      let children = JSArrayOfNameValuePair().of([]);
      for (let type of clause.types) {
        children[$add](new _debugger.NameValuePair.new({value: type, config: _debugger.JsonMLConfig.asClass}));
      }
      return children;
    }
  };
  (_debugger.HeritageClauseFormatter.new = function() {
  }).prototype = _debugger.HeritageClauseFormatter.prototype;
  dart.addTypeTests(_debugger.HeritageClauseFormatter);
  _debugger.HeritageClauseFormatter[dart.implements] = () => [_debugger.Formatter];
  dart.setMethodSignature(_debugger.HeritageClauseFormatter, () => ({
    __proto__: dart.getMethods(_debugger.HeritageClauseFormatter.__proto__),
    accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
    preview: dart.fnType(core.String, [dart.dynamic]),
    hasChildren: dart.fnType(core.bool, [dart.dynamic]),
    children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  }));
  _debugger.IterableSpanFormatter = class IterableSpanFormatter extends core.Object {
    accept(object, config) {
      return _debugger.IterableSpan.is(object);
    }
    preview(object) {
      return "[" + dart.str(dart.dload(object, 'start')) + "..." + dart.str(dart.dsend(dart.dload(object, 'end'), '-', [1])) + "]";
    }
    hasChildren(object) {
      return true;
    }
    children(object) {
      return ListOfNameValuePair()._check(dart.dsend(object, 'children', []));
    }
  };
  (_debugger.IterableSpanFormatter.new = function() {
  }).prototype = _debugger.IterableSpanFormatter.prototype;
  dart.addTypeTests(_debugger.IterableSpanFormatter);
  _debugger.IterableSpanFormatter[dart.implements] = () => [_debugger.Formatter];
  dart.setMethodSignature(_debugger.IterableSpanFormatter, () => ({
    __proto__: dart.getMethods(_debugger.IterableSpanFormatter.__proto__),
    accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
    preview: dart.fnType(core.String, [dart.dynamic]),
    hasChildren: dart.fnType(core.bool, [dart.dynamic]),
    children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  }));
  _debugger.ErrorAndExceptionFormatter = class ErrorAndExceptionFormatter extends _debugger.ObjectFormatter {
    accept(object, config) {
      return core.Error.is(object) || core.Exception.is(object);
    }
    hasChildren(object) {
      return true;
    }
    preview(object) {
      let trace = dart.stackTrace(object);
      let line = dart.str(trace)[$split]("\n")[$firstWhere](dart.fn(l => l[$contains](_debugger.ErrorAndExceptionFormatter._pattern) && !l[$contains]("dart:sdk") && !l[$contains]("dart_sdk"), StringTobool()), {orElse: dart.fn(() => null, VoidToNull())});
      return line != null ? dart.str(object) + " at " + dart.str(line) : dart.str(object);
    }
    children(object) {
      let trace = dart.stackTrace(object);
      let entries = new (_HashSetOfNameValuePair()).new();
      entries.add(new _debugger.NameValuePair.new({name: "stackTrace", value: trace}));
      this.addInstanceMembers(object, entries);
      _debugger.addMetadataChildren(object, entries);
      return entries.toList();
    }
    addInstanceMembers(object, ret) {
      ret.add(new _debugger.NameValuePair.new({name: "[[instance members]]", value: object, config: _debugger.JsonMLConfig.asObject}));
    }
  };
  (_debugger.ErrorAndExceptionFormatter.new = function() {
  }).prototype = _debugger.ErrorAndExceptionFormatter.prototype;
  dart.addTypeTests(_debugger.ErrorAndExceptionFormatter);
  dart.setMethodSignature(_debugger.ErrorAndExceptionFormatter, () => ({
    __proto__: dart.getMethods(_debugger.ErrorAndExceptionFormatter.__proto__),
    addInstanceMembers: dart.fnType(dart.void, [dart.dynamic, core.Set$(_debugger.NameValuePair)])
  }));
  dart.defineLazy(_debugger.ErrorAndExceptionFormatter, {
    /*_debugger.ErrorAndExceptionFormatter._pattern*/get _pattern() {
      return core.RegExp.new("\\d+\\:\\d+");
    }
  });
  _debugger.StackTraceFormatter = class StackTraceFormatter extends core.Object {
    accept(object, config) {
      return core.StackTrace.is(object);
    }
    preview(object) {
      return "StackTrace";
    }
    hasChildren(object) {
      return true;
    }
    children(object) {
      return IterableOfNameValuePair()._check(dart.toString(object)[$split]("\n")[$map](_debugger.NameValuePair, dart.fn(line => new _debugger.NameValuePair.new({value: line[$replaceFirst](core.RegExp.new("^\\s+at\\s"), ""), hideName: true}), StringToNameValuePair())))[$toList]();
    }
  };
  (_debugger.StackTraceFormatter.new = function() {
  }).prototype = _debugger.StackTraceFormatter.prototype;
  dart.addTypeTests(_debugger.StackTraceFormatter);
  _debugger.StackTraceFormatter[dart.implements] = () => [_debugger.Formatter];
  dart.setMethodSignature(_debugger.StackTraceFormatter, () => ({
    __proto__: dart.getMethods(_debugger.StackTraceFormatter.__proto__),
    accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
    preview: dart.fnType(core.String, [dart.dynamic]),
    hasChildren: dart.fnType(core.bool, [dart.dynamic]),
    children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  }));
  _debugger.ClassFormatter = class ClassFormatter extends core.Object {
    accept(object, config) {
      return dart.equals(config, _debugger.JsonMLConfig.asClass);
    }
    preview(type) {
      let implements$ = dart.getImplements(type);
      let typeName = _debugger.getTypeName(type);
      if (implements$ != null) {
        let typeNames = IterableOfString()._check(implements$()[$map](core.String, dart.fn(_debugger.getTypeName, dynamicToString())));
        return dart.str(typeName) + " implements " + dart.str(typeNames[$join](", "));
      } else {
        return typeName;
      }
    }
    hasChildren(object) {
      return true;
    }
    children(type) {
      let ret = new (_HashSetOfNameValuePair()).new();
      let staticProperties = new (_HashSetOfNameValuePair()).new();
      let staticMethods = new (_HashSetOfNameValuePair()).new();
      _debugger.addPropertiesFromSignature(dart.getStaticFields(type), staticProperties, type, false);
      _debugger.addPropertiesFromSignature(dart.getStaticGetters(type), staticProperties, type, false);
      _debugger.addPropertiesFromSignature(dart.getStaticMethods(type), staticMethods, type, false);
      if (dart.test(staticProperties.isNotEmpty) || dart.test(staticMethods.isNotEmpty)) {
        ret.add(new _debugger.NameValuePair.new({value: "[[Static members]]", hideName: true}));
        ret.addAll(_debugger.sortProperties(staticProperties));
        ret.addAll(_debugger.sortProperties(staticMethods));
      }
      let instanceMethods = new (_HashSetOfNameValuePair()).new();
      _debugger.addPropertiesFromSignature(dart.getMethods(type), instanceMethods, type.prototype, false, {tagTypes: true});
      if (dart.test(instanceMethods.isNotEmpty)) {
        ret.add(new _debugger.NameValuePair.new({value: "[[Instance Methods]]", hideName: true}));
        ret.addAll(_debugger.sortProperties(instanceMethods));
      }
      let mixin = dart.getMixin(type);
      if (mixin != null) {
        ret.add(new _debugger.NameValuePair.new({name: "[[Mixins]]", value: new _debugger.HeritageClause.new("mixins", [mixin])}));
      }
      let baseProto = type.__proto__;
      if (baseProto != null && !dart.test(dart.isJsInterop(baseProto))) {
        ret.add(new _debugger.NameValuePair.new({name: "[[base class]]", value: baseProto, config: _debugger.JsonMLConfig.asClass}));
      }
      return ret.toList();
    }
  };
  (_debugger.ClassFormatter.new = function() {
  }).prototype = _debugger.ClassFormatter.prototype;
  dart.addTypeTests(_debugger.ClassFormatter);
  _debugger.ClassFormatter[dart.implements] = () => [_debugger.Formatter];
  dart.setMethodSignature(_debugger.ClassFormatter, () => ({
    __proto__: dart.getMethods(_debugger.ClassFormatter.__proto__),
    accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
    preview: dart.fnType(core.String, [dart.dynamic]),
    hasChildren: dart.fnType(core.bool, [dart.dynamic]),
    children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  }));
  _debugger.TypeFormatter = class TypeFormatter extends core.Object {
    accept(object, config) {
      return core.Type.is(object);
    }
    preview(object) {
      return dart.toString(object);
    }
    hasChildren(object) {
      return false;
    }
    children(object) {
      return JSArrayOfNameValuePair().of([]);
    }
  };
  (_debugger.TypeFormatter.new = function() {
  }).prototype = _debugger.TypeFormatter.prototype;
  dart.addTypeTests(_debugger.TypeFormatter);
  _debugger.TypeFormatter[dart.implements] = () => [_debugger.Formatter];
  dart.setMethodSignature(_debugger.TypeFormatter, () => ({
    __proto__: dart.getMethods(_debugger.TypeFormatter.__proto__),
    accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
    preview: dart.fnType(core.String, [dart.dynamic]),
    hasChildren: dart.fnType(core.bool, [dart.dynamic]),
    children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
  }));
  dart.copyProperties(_debugger, {
    get stackTraceMapper() {
      let _util = dart.global.$dartStackTraceUtility;
      return _util != null ? _util.mapper : null;
    }
  });
  _debugger.registerDevtoolsFormatter = function() {
    dart.global.devtoolsFormatters = [_debugger._devtoolsFormatter];
  };
  _debugger.getModuleNames = function() {
    return dart.getModuleNames();
  };
  _debugger.getModuleLibraries = function(name) {
    return dart.getModuleLibraries(name);
  };
  _debugger._MethodStats = class _MethodStats extends core.Object {};
  (_debugger._MethodStats.new = function(typeName, frame) {
    this.count = null;
    this.typeName = typeName;
    this.frame = frame;
    this.count = 0.0;
  }).prototype = _debugger._MethodStats.prototype;
  dart.addTypeTests(_debugger._MethodStats);
  dart.setFieldSignature(_debugger._MethodStats, () => ({
    __proto__: dart.getFields(_debugger._MethodStats.__proto__),
    typeName: dart.finalFieldType(core.String),
    frame: dart.finalFieldType(core.String),
    count: dart.fieldType(core.double)
  }));
  _debugger._CallMethodRecord = class _CallMethodRecord extends core.Object {};
  (_debugger._CallMethodRecord.new = function(jsError, type) {
    this.jsError = jsError;
    this.type = type;
  }).prototype = _debugger._CallMethodRecord.prototype;
  dart.addTypeTests(_debugger._CallMethodRecord);
  dart.setFieldSignature(_debugger._CallMethodRecord, () => ({
    __proto__: dart.getFields(_debugger._CallMethodRecord.__proto__),
    jsError: dart.fieldType(dart.dynamic),
    type: dart.fieldType(dart.dynamic)
  }));
  dart.defineLazy(_debugger, {
    /*_debugger._callRecordSampleSize*/get _callRecordSampleSize() {
      return 5000;
    },
    set _callRecordSampleSize(_) {},
    /*_debugger._callMethodRecords*/get _callMethodRecords() {
      return JSArrayOf_CallMethodRecord().of([]);
    },
    set _callMethodRecords(_) {},
    /*_debugger._totalCallRecords*/get _totalCallRecords() {
      return 0;
    },
    set _totalCallRecords(_) {},
    /*_debugger._minCount*/get _minCount() {
      return 2;
    },
    set _minCount(_) {},
    /*_debugger._frameMappingCache*/get _frameMappingCache() {
      return new (IdentityMapOfString$String()).new();
    },
    set _frameMappingCache(_) {}
  });
  _debugger.getDynamicStats = function() {
    let callMethodStats = new (IdentityMapOfString$_MethodStats()).new();
    if (dart.notNull(_debugger._callMethodRecords[$length]) > 0) {
      let recordRatio = dart.notNull(_debugger._totalCallRecords) / dart.notNull(_debugger._callMethodRecords[$length]);
      for (let record of _debugger._callMethodRecords) {
        let stackStr = record.jsError.stack;
        let frames = stackStr[$split]("\n");
        let src = IterableOfString()._check(frames[$skip](2)[$map](core.String, dart.fn(f => _debugger._frameMappingCache[$putIfAbsent](f, dart.fn(() => _debugger.stackTraceMapper("\n" + dart.str(f)), VoidToString())), StringToString())))[$firstWhere](dart.fn(f => !f[$startsWith]("dart:"), StringTobool()), {orElse: dart.fn(() => "", VoidToString())});
        let actualTypeName = dart.typeName(record.type);
        let o = callMethodStats[$putIfAbsent](actualTypeName + " <" + dart.str(src) + ">", dart.fn(() => new _debugger._MethodStats.new(actualTypeName, src), VoidTo_MethodStats()));
        o.count = dart.notNull(o.count) + recordRatio;
      }
      if (_debugger._totalCallRecords != _debugger._callMethodRecords[$length]) {
        for (let k of callMethodStats[$keys][$toList]()) {
          let stats = callMethodStats[$_get](k);
          let threshold = dart.notNull(_debugger._minCount) * recordRatio;
          if (dart.notNull(stats.count) + 0.001 < threshold) {
            callMethodStats[$remove](k);
          }
        }
      }
    }
    _debugger._callMethodRecords[$clear]();
    _debugger._totalCallRecords = 0;
    let keys = callMethodStats[$keys][$toList]();
    keys[$sort](dart.fn((a, b) => callMethodStats[$_get](b).count[$compareTo](callMethodStats[$_get](a).count), StringAndStringToint()));
    let ret = JSArrayOfListOfObject().of([]);
    for (let key of keys) {
      let stats = callMethodStats[$_get](key);
      ret[$add](JSArrayOfObject().of([stats.typeName, stats.frame, stats.count[$round]()]));
    }
    return ret;
  };
  _debugger.clearDynamicStats = function() {
    _debugger._callMethodRecords[$clear]();
  };
  dart.copyProperties(_debugger, {
    get _trackProfile() {
      return dart.__trackProfile;
    }
  });
  _debugger.trackCall = function(obj) {
    if (!_debugger._trackProfile) return;
    let index = -1;
    _debugger._totalCallRecords = dart.notNull(_debugger._totalCallRecords) + 1;
    if (_debugger._callMethodRecords[$length] == _debugger._callRecordSampleSize) {
      index = Math.floor(Math.random() * _debugger._totalCallRecords);
      if (index >= dart.notNull(_debugger._callMethodRecords[$length])) return;
    }
    let record = new _debugger._CallMethodRecord.new(new Error(), dart.getReifiedType(obj));
    if (index === -1) {
      _debugger._callMethodRecords[$add](record);
    } else {
      _debugger._callMethodRecords[$_set](index, record);
    }
  };
  _foreign_helper.JS = function(T, typeDescription, codeTemplate, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19) {
    if (arg0 === void 0) arg0 = null;
    if (arg1 === void 0) arg1 = null;
    if (arg2 === void 0) arg2 = null;
    if (arg3 === void 0) arg3 = null;
    if (arg4 === void 0) arg4 = null;
    if (arg5 === void 0) arg5 = null;
    if (arg6 === void 0) arg6 = null;
    if (arg7 === void 0) arg7 = null;
    if (arg8 === void 0) arg8 = null;
    if (arg9 === void 0) arg9 = null;
    if (arg10 === void 0) arg10 = null;
    if (arg11 === void 0) arg11 = null;
    if (arg12 === void 0) arg12 = null;
    if (arg13 === void 0) arg13 = null;
    if (arg14 === void 0) arg14 = null;
    if (arg15 === void 0) arg15 = null;
    if (arg16 === void 0) arg16 = null;
    if (arg17 === void 0) arg17 = null;
    if (arg18 === void 0) arg18 = null;
    if (arg19 === void 0) arg19 = null;
  };
  _foreign_helper.JSExportName = class JSExportName extends core.Object {};
  (_foreign_helper.JSExportName.new = function(name) {
    this.name = name;
  }).prototype = _foreign_helper.JSExportName.prototype;
  dart.addTypeTests(_foreign_helper.JSExportName);
  dart.setFieldSignature(_foreign_helper.JSExportName, () => ({
    __proto__: dart.getFields(_foreign_helper.JSExportName.__proto__),
    name: dart.finalFieldType(core.String)
  }));
  _foreign_helper.JS_DART_OBJECT_CONSTRUCTOR = function() {
  };
  _foreign_helper.JS_INTERCEPTOR_CONSTANT = function(type) {
  };
  _foreign_helper.JS_OPERATOR_IS_PREFIX = function() {
  };
  _foreign_helper.JS_OPERATOR_AS_PREFIX = function() {
  };
  _foreign_helper.JS_OBJECT_CLASS_NAME = function() {
  };
  _foreign_helper.JS_NULL_CLASS_NAME = function() {
  };
  _foreign_helper.JS_FUNCTION_CLASS_NAME = function() {
  };
  _foreign_helper.JS_IS_INDEXABLE_FIELD_NAME = function() {
  };
  _foreign_helper.JS_SIGNATURE_NAME = function() {
  };
  _foreign_helper.JS_TYPEDEF_TAG = function() {
  };
  _foreign_helper.JS_FUNCTION_TYPE_TAG = function() {
  };
  _foreign_helper.JS_FUNCTION_TYPE_VOID_RETURN_TAG = function() {
  };
  _foreign_helper.JS_FUNCTION_TYPE_RETURN_TYPE_TAG = function() {
  };
  _foreign_helper.JS_FUNCTION_TYPE_REQUIRED_PARAMETERS_TAG = function() {
  };
  _foreign_helper.JS_FUNCTION_TYPE_OPTIONAL_PARAMETERS_TAG = function() {
  };
  _foreign_helper.JS_FUNCTION_TYPE_NAMED_PARAMETERS_TAG = function() {
  };
  _foreign_helper.JS_GET_NAME = function(name) {
  };
  _foreign_helper.JS_GET_FLAG = function(name) {
  };
  _foreign_helper.JS_EFFECT = function(code) {
    dart.dcall(code, [null]);
  };
  _foreign_helper.JS_CONST = class JS_CONST extends core.Object {};
  (_foreign_helper.JS_CONST.new = function(code) {
    this.code = code;
  }).prototype = _foreign_helper.JS_CONST.prototype;
  dart.addTypeTests(_foreign_helper.JS_CONST);
  dart.setFieldSignature(_foreign_helper.JS_CONST, () => ({
    __proto__: dart.getFields(_foreign_helper.JS_CONST.__proto__),
    code: dart.finalFieldType(core.String)
  }));
  _foreign_helper.JS_STRING_CONCAT = function(a, b) {
    return a + b;
  };
  _foreign_helper._Rest = class _Rest extends core.Object {};
  (_foreign_helper._Rest.new = function() {
  }).prototype = _foreign_helper._Rest.prototype;
  dart.addTypeTests(_foreign_helper._Rest);
  dart.defineLazy(_foreign_helper, {
    /*_foreign_helper.rest*/get rest() {
      return dart.const(new _foreign_helper._Rest.new());
    }
  });
  _foreign_helper.spread = function(args) {
    dart.throw(new core.StateError.new("The spread function cannot be called, " + "it should be compiled away."));
  };
  _interceptors.Interceptor = class Interceptor extends core.Object {
    toString() {
      return this.toString();
    }
  };
  (_interceptors.Interceptor.new = function() {
  }).prototype = _interceptors.Interceptor.prototype;
  dart.addTypeTests(_interceptors.Interceptor);
  dart.defineExtensionMethods(_interceptors.Interceptor, ['toString']);
  _interceptors.getInterceptor = function(obj) {
    return obj;
  };
  _interceptors.JSBool = class JSBool extends _interceptors.Interceptor {
    [$toString]() {
      return String(this);
    }
    get [$hashCode]() {
      return this ? 2 * 3 * 23 * 3761 : 269 * 811;
    }
    [$bitAnd](other) {
      if (other == null) dart.argumentError(other);
      return other && this;
    }
    [$bitOr](other) {
      if (other == null) dart.argumentError(other);
      return other || this;
    }
    [$bitXor](other) {
      if (other == null) dart.argumentError(other);
      return !(this === other);
    }
    get [$runtimeType]() {
      return dart.wrapType(core.bool);
    }
  };
  (_interceptors.JSBool.new = function() {
    _interceptors.JSBool.__proto__.new.call(this);
  }).prototype = _interceptors.JSBool.prototype;
  dart.addTypeTests(_interceptors.JSBool);
  _interceptors.JSBool[dart.implements] = () => [core.bool];
  dart.setMethodSignature(_interceptors.JSBool, () => ({
    __proto__: dart.getMethods(_interceptors.JSBool.__proto__),
    [$bitAnd]: dart.fnType(core.bool, [core.bool]),
    [$bitOr]: dart.fnType(core.bool, [core.bool]),
    [$bitXor]: dart.fnType(core.bool, [core.bool])
  }));
  dart.definePrimitiveHashCode(_interceptors.JSBool.prototype);
  dart.registerExtension("Boolean", _interceptors.JSBool);
  const _is_JSIndexable_default = Symbol('_is_JSIndexable_default');
  _interceptors.JSIndexable$ = dart.generic(E => {
    class JSIndexable extends core.Object {}
    (JSIndexable.new = function() {
    }).prototype = JSIndexable.prototype;
    dart.addTypeTests(JSIndexable);
    JSIndexable.prototype[_is_JSIndexable_default] = true;
    return JSIndexable;
  });
  _interceptors.JSIndexable = _interceptors.JSIndexable$();
  dart.addTypeTests(_interceptors.JSIndexable, _is_JSIndexable_default);
  _interceptors.JSObject = class JSObject extends core.Object {};
  (_interceptors.JSObject.new = function() {
  }).prototype = _interceptors.JSObject.prototype;
  dart.addTypeTests(_interceptors.JSObject);
  _interceptors.JavaScriptObject = class JavaScriptObject extends _interceptors.Interceptor {
    get hashCode() {
      return 0;
    }
    get runtimeType() {
      return dart.wrapType(_interceptors.JSObject);
    }
  };
  (_interceptors.JavaScriptObject.new = function() {
    _interceptors.JavaScriptObject.__proto__.new.call(this);
  }).prototype = _interceptors.JavaScriptObject.prototype;
  dart.addTypeTests(_interceptors.JavaScriptObject);
  _interceptors.JavaScriptObject[dart.implements] = () => [_interceptors.JSObject];
  dart.defineExtensionAccessors(_interceptors.JavaScriptObject, ['hashCode', 'runtimeType']);
  _interceptors.PlainJavaScriptObject = class PlainJavaScriptObject extends _interceptors.JavaScriptObject {};
  (_interceptors.PlainJavaScriptObject.new = function() {
    _interceptors.PlainJavaScriptObject.__proto__.new.call(this);
  }).prototype = _interceptors.PlainJavaScriptObject.prototype;
  dart.addTypeTests(_interceptors.PlainJavaScriptObject);
  _interceptors.UnknownJavaScriptObject = class UnknownJavaScriptObject extends _interceptors.JavaScriptObject {
    toString() {
      return String(this);
    }
  };
  (_interceptors.UnknownJavaScriptObject.new = function() {
    _interceptors.UnknownJavaScriptObject.__proto__.new.call(this);
  }).prototype = _interceptors.UnknownJavaScriptObject.prototype;
  dart.addTypeTests(_interceptors.UnknownJavaScriptObject);
  dart.defineExtensionMethods(_interceptors.UnknownJavaScriptObject, ['toString']);
  _interceptors.NativeError = class NativeError extends _interceptors.Interceptor {
    dartStack() {
      return this.stack;
    }
  };
  (_interceptors.NativeError.new = function() {
    _interceptors.NativeError.__proto__.new.call(this);
  }).prototype = _interceptors.NativeError.prototype;
  dart.addTypeTests(_interceptors.NativeError);
  dart.setMethodSignature(_interceptors.NativeError, () => ({
    __proto__: dart.getMethods(_interceptors.NativeError.__proto__),
    dartStack: dart.fnType(core.String, []),
    [$dartStack]: dart.fnType(core.String, [])
  }));
  dart.defineExtensionMethods(_interceptors.NativeError, ['dartStack']);
  const _fieldName = Symbol('_fieldName');
  const _functionCallTarget = Symbol('_functionCallTarget');
  _interceptors.JSNoSuchMethodError = class JSNoSuchMethodError extends _interceptors.NativeError {
    [_fieldName](message) {
      let match = _interceptors.JSNoSuchMethodError._nullError.firstMatch(message);
      if (match == null) return null;
      let name = match._get(1);
      let l = _interceptors.JSNoSuchMethodError._extensionName.firstMatch(name);
      match = l != null ? l : _interceptors.JSNoSuchMethodError._privateName.firstMatch(name);
      return match != null ? match._get(1) : name;
    }
    [_functionCallTarget](message) {
      let match = _interceptors.JSNoSuchMethodError._notAFunction.firstMatch(message);
      return match != null ? match._get(1) : null;
    }
    [$dartStack]() {
      let stack = super[$dartStack]();
      stack = dart.notNull(this[$toString]()) + "\n" + dart.notNull(stack[$split]("\n")[$sublist](1)[$join]("\n"));
      return stack;
    }
    get [$stackTrace]() {
      return dart.stackTrace(this);
    }
    [$toString]() {
      let message = this.message;
      let callTarget = this[_functionCallTarget](message);
      if (callTarget != null) {
        return "NoSuchMethodError: tried to call a non-function, such as null: " + ("'" + dart.str(callTarget) + "'");
      }
      let name = this[_fieldName](message);
      if (name == null) {
        return this.toString();
      }
      return "NoSuchMethodError: invalid member on null: '" + dart.str(name) + "'";
    }
  };
  (_interceptors.JSNoSuchMethodError.new = function() {
    _interceptors.JSNoSuchMethodError.__proto__.new.call(this);
  }).prototype = _interceptors.JSNoSuchMethodError.prototype;
  dart.addTypeTests(_interceptors.JSNoSuchMethodError);
  _interceptors.JSNoSuchMethodError[dart.implements] = () => [core.NoSuchMethodError];
  dart.setMethodSignature(_interceptors.JSNoSuchMethodError, () => ({
    __proto__: dart.getMethods(_interceptors.JSNoSuchMethodError.__proto__),
    [_fieldName]: dart.fnType(core.String, [core.String]),
    [_functionCallTarget]: dart.fnType(core.String, [core.String])
  }));
  dart.setGetterSignature(_interceptors.JSNoSuchMethodError, () => ({
    __proto__: dart.getGetters(_interceptors.JSNoSuchMethodError.__proto__),
    [$stackTrace]: core.StackTrace
  }));
  dart.defineLazy(_interceptors.JSNoSuchMethodError, {
    /*_interceptors.JSNoSuchMethodError._nullError*/get _nullError() {
      return core.RegExp.new("^Cannot read property '(.+)' of null$");
    },
    /*_interceptors.JSNoSuchMethodError._notAFunction*/get _notAFunction() {
      return core.RegExp.new("^(.+) is not a function$");
    },
    /*_interceptors.JSNoSuchMethodError._extensionName*/get _extensionName() {
      return core.RegExp.new("^Symbol\\(dartx\\.(.+)\\)$");
    },
    /*_interceptors.JSNoSuchMethodError._privateName*/get _privateName() {
      return core.RegExp.new("^Symbol\\((_.+)\\)$");
    }
  });
  dart.registerExtension("TypeError", _interceptors.JSNoSuchMethodError);
  _interceptors.JSFunction = class JSFunction extends _interceptors.Interceptor {
    [$toString]() {
      if (dart.isType(this)) return dart.typeName(this);
      return "Closure: " + dart.typeName(dart.getReifiedType(this)) + " from: " + this;
    }
    [$_equals](other) {
      if (other == null) return false;
      let boundObj = this._boundObject;
      if (boundObj == null) return this === other;
      return boundObj === other._boundObject && this._boundMethod === other._boundMethod;
    }
    get [$hashCode]() {
      let boundObj = this._boundObject;
      if (boundObj == null) return core.identityHashCode(this);
      let boundMethod = this._boundMethod;
      let hash = 17 * 31 + dart.notNull(dart.hashCode(boundObj)) & 536870911;
      return hash * 31 + dart.notNull(core.identityHashCode(boundMethod)) & 536870911;
    }
    get [$runtimeType]() {
      return dart.wrapType(dart.getReifiedType(this));
    }
  };
  (_interceptors.JSFunction.new = function() {
    _interceptors.JSFunction.__proto__.new.call(this);
  }).prototype = _interceptors.JSFunction.prototype;
  dart.addTypeTests(_interceptors.JSFunction);
  dart.registerExtension("Function", _interceptors.JSFunction);
  _interceptors.JSNull = class JSNull extends core.Object {
    toString() {
      return "null";
    }
    noSuchMethod(i) {
      return dart.defaultNoSuchMethod(null, i);
    }
  };
  (_interceptors.JSNull.new = function() {
  }).prototype = _interceptors.JSNull.prototype;
  dart.addTypeTests(_interceptors.JSNull);
  dart.defineExtensionMethods(_interceptors.JSNull, ['toString', 'noSuchMethod']);
  dart.defineLazy(_interceptors, {
    /*_interceptors.jsNull*/get jsNull() {
      return new _interceptors.JSNull.new();
    }
  });
  _interceptors.JSRangeError = class JSRangeError extends _interceptors.Interceptor {
    get [$stackTrace]() {
      return dart.stackTrace(this);
    }
    get [$invalidValue]() {
      return null;
    }
    get [$name]() {
      return null;
    }
    get [$message]() {
      return this.message;
    }
    [$toString]() {
      return "Invalid argument: " + dart.str(this[$message]);
    }
  };
  (_interceptors.JSRangeError.new = function() {
    _interceptors.JSRangeError.__proto__.new.call(this);
  }).prototype = _interceptors.JSRangeError.prototype;
  dart.addTypeTests(_interceptors.JSRangeError);
  _interceptors.JSRangeError[dart.implements] = () => [core.ArgumentError];
  dart.setGetterSignature(_interceptors.JSRangeError, () => ({
    __proto__: dart.getGetters(_interceptors.JSRangeError.__proto__),
    [$stackTrace]: core.StackTrace,
    [$invalidValue]: dart.dynamic,
    [$name]: core.String,
    [$message]: dart.dynamic
  }));
  dart.registerExtension("RangeError", _interceptors.JSRangeError);
  _interceptors.findInterceptorConstructorForType = function(type) {
  };
  _interceptors.findConstructorForNativeSubclassType = function(type, name) {
  };
  _interceptors.getNativeInterceptor = function(object) {
  };
  _interceptors.setDispatchProperty = function(object, value) {
  };
  const _removeWhere = Symbol('_removeWhere');
  const _is_JSArray_default = Symbol('_is_JSArray_default');
  _interceptors.JSArray$ = dart.generic(E => {
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let WhereIterableOfE = () => (WhereIterableOfE = dart.constFn(_internal.WhereIterable$(E)))();
    let SubListIterableOfE = () => (SubListIterableOfE = dart.constFn(_internal.SubListIterable$(E)))();
    let TakeWhileIterableOfE = () => (TakeWhileIterableOfE = dart.constFn(_internal.TakeWhileIterable$(E)))();
    let SkipWhileIterableOfE = () => (SkipWhileIterableOfE = dart.constFn(_internal.SkipWhileIterable$(E)))();
    let EAndEToE = () => (EAndEToE = dart.constFn(dart.fnType(E, [E, E])))();
    let VoidToE = () => (VoidToE = dart.constFn(dart.fnType(E, [])))();
    let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
    let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
    let ReversedListIterableOfE = () => (ReversedListIterableOfE = dart.constFn(_internal.ReversedListIterable$(E)))();
    let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
    let ArrayIteratorOfE = () => (ArrayIteratorOfE = dart.constFn(_interceptors.ArrayIterator$(E)))();
    let ListMapViewOfE = () => (ListMapViewOfE = dart.constFn(_internal.ListMapView$(E)))();
    let FollowedByIterableOfE = () => (FollowedByIterableOfE = dart.constFn(_internal.FollowedByIterable$(E)))();
    let JSIndexableOfE = () => (JSIndexableOfE = dart.constFn(_interceptors.JSIndexable$(E)))();
    class JSArray extends core.Object {
      static of(list) {
        list.__proto__ = JSArray.prototype;
        return list;
      }
      static fixed(list) {
        list.__proto__ = JSArray.prototype;
        list.fixed$length = Array;
        return list;
      }
      static unmodifiable(list) {
        list.__proto__ = JSArray.prototype;
        list.fixed$length = Array;
        list.immutable$list = Array;
        return list;
      }
      static markFixedList(list) {
        list.fixed$length = Array;
      }
      static markUnmodifiableList(list) {
        list.fixed$length = Array;
        list.immutable$list = Array;
      }
      [$checkMutable](reason) {
        if (this.immutable$list) {
          dart.throw(new core.UnsupportedError.new(core.String._check(reason)));
        }
      }
      [$checkGrowable](reason) {
        if (this.fixed$length) {
          dart.throw(new core.UnsupportedError.new(core.String._check(reason)));
        }
      }
      [$cast](R) {
        return core.List.castFrom(E, R, this);
      }
      [$add](value) {
        E._check(value);
        this[$checkGrowable]("add");
        this.push(value);
      }
      [$removeAt](index) {
        if (index == null) dart.argumentError(index);
        this[$checkGrowable]("removeAt");
        if (index < 0 || index >= this[$length]) {
          dart.throw(new core.RangeError.value(index));
        }
        return this.splice(index, 1)[0];
      }
      [$insert](index, value) {
        if (index == null) dart.argumentError(index);
        E._check(value);
        this[$checkGrowable]("insert");
        if (index < 0 || index > this[$length]) {
          dart.throw(new core.RangeError.value(index));
        }
        this.splice(index, 0, value);
      }
      [$insertAll](index, iterable) {
        if (index == null) dart.argumentError(index);
        IterableOfE()._check(iterable);
        this[$checkGrowable]("insertAll");
        core.RangeError.checkValueInInterval(index, 0, this[$length], "index");
        if (!_internal.EfficientLengthIterable.is(iterable)) {
          iterable = iterable[$toList]();
        }
        let insertionLength = dart.notNull(iterable[$length]);
        this[$length] = dart.notNull(this[$length]) + insertionLength;
        let end = index + insertionLength;
        this[$setRange](end, this[$length], this, index);
        this[$setRange](index, end, iterable);
      }
      [$setAll](index, iterable) {
        if (index == null) dart.argumentError(index);
        IterableOfE()._check(iterable);
        this[$checkMutable]("setAll");
        core.RangeError.checkValueInInterval(index, 0, this[$length], "index");
        for (let element of iterable) {
          this[$_set](index++, element);
        }
      }
      [$removeLast]() {
        this[$checkGrowable]("removeLast");
        if (this[$length] === 0) dart.throw(_js_helper.diagnoseIndexError(this, -1));
        return this.pop();
      }
      [$remove](element) {
        this[$checkGrowable]("remove");
        let length = this[$length];
        for (let i = 0; i < length; i++) {
          if (dart.equals(this[$_get](i), element)) {
            this.splice(i, 1);
            return true;
          }
        }
        return false;
      }
      [$removeWhere](test) {
        this[$checkGrowable]("removeWhere");
        this[_removeWhere](test, true);
      }
      [$retainWhere](test) {
        this[$checkGrowable]("retainWhere");
        this[_removeWhere](test, false);
      }
      [_removeWhere](test, removeMatching) {
        let retained = [];
        let end = this[$length];
        for (let i = 0; i < end; i++) {
          let element = this[i];
          if (!dart.test(test(element)) === removeMatching) {
            retained[$add](element);
          }
          if (this[$length] !== end) dart.throw(new core.ConcurrentModificationError.new(this));
        }
        if (retained[$length] === end) return;
        this[$length] = retained[$length];
        let length = dart.notNull(retained[$length]);
        for (let i = 0; i < length; i++) {
          this[i] = retained[i];
        }
      }
      [$where](f) {
        return new (WhereIterableOfE()).new(this, f);
      }
      [$expand](T, f) {
        return new (_internal.ExpandIterable$(E, T)).new(this, f);
      }
      [$addAll](collection) {
        IterableOfE()._check(collection);
        let i = this[$length];
        this[$checkGrowable]("addAll");
        for (let e of collection) {
          if (!(i === this[$length] || dart.test(dart.throw(new core.ConcurrentModificationError.new(this))))) dart.assertFailed();
          i++;
          this.push(e);
        }
      }
      [$clear]() {
        this[$length] = 0;
      }
      [$forEach](f) {
        let end = this[$length];
        for (let i = 0; i < end; i++) {
          let element = this[i];
          f(E._check(element));
          if (this[$length] !== end) dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      [$map](T, f) {
        return new (_internal.MappedListIterable$(E, T)).new(this, f);
      }
      [$join](separator) {
        if (separator === void 0) separator = "";
        let length = this[$length];
        let list = core.List.new(length);
        for (let i = 0; i < length; i++) {
          list[$_set](i, dart.str(this[$_get](i)));
        }
        return list.join(separator);
      }
      [$take](n) {
        return new (SubListIterableOfE()).new(this, 0, n);
      }
      [$takeWhile](test) {
        return new (TakeWhileIterableOfE()).new(this, test);
      }
      [$skip](n) {
        return new (SubListIterableOfE()).new(this, n, null);
      }
      [$skipWhile](test) {
        return new (SkipWhileIterableOfE()).new(this, test);
      }
      [$reduce](combine) {
        EAndEToE()._check(combine);
        let length = this[$length];
        if (length === 0) dart.throw(_internal.IterableElementError.noElement());
        let value = this[$_get](0);
        for (let i = 1; i < length; i++) {
          let element = this[i];
          value = combine(value, E._check(element));
          if (length !== this[$length]) dart.throw(new core.ConcurrentModificationError.new(this));
        }
        return value;
      }
      [$fold](T, initialValue, combine) {
        let value = initialValue;
        let length = this[$length];
        for (let i = 0; i < length; i++) {
          let element = this[i];
          value = combine(value, E._check(element));
          if (this[$length] !== length) dart.throw(new core.ConcurrentModificationError.new(this));
        }
        return value;
      }
      [$firstWhere](test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        let end = this[$length];
        for (let i = 0; i < end; ++i) {
          let element = this[i];
          if (dart.test(test(E._check(element)))) return E._check(element);
          if (this[$length] !== end) dart.throw(new core.ConcurrentModificationError.new(this));
        }
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      [$lastWhere](test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        let length = this[$length];
        for (let i = length - 1; i >= 0; i--) {
          let element = this[i];
          if (dart.test(test(E._check(element)))) return E._check(element);
          if (length !== this[$length]) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      [$singleWhere](test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        let length = this[$length];
        let match = null;
        let matchFound = false;
        for (let i = 0; i < length; i++) {
          let element = this[i];
          if (dart.test(test(element))) {
            if (matchFound) {
              dart.throw(_internal.IterableElementError.tooMany());
            }
            matchFound = true;
            match = element;
          }
          if (length !== this[$length]) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        if (matchFound) return match;
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      [$elementAt](index) {
        return this[$_get](index);
      }
      [$sublist](start, end) {
        if (start == null) dart.argumentError(start);
        if (end === void 0) end = null;
        if (start < 0 || start > this[$length]) {
          dart.throw(new core.RangeError.range(start, 0, this[$length], "start"));
        }
        if (end == null) {
          end = this[$length];
        } else {
          let _end = end;
          if (_end < start || _end > this[$length]) {
            dart.throw(new core.RangeError.range(end, start, this[$length], "end"));
          }
        }
        if (start === end) return JSArrayOfE().of([]);
        return JSArrayOfE().of(this.slice(start, end));
      }
      [$getRange](start, end) {
        core.RangeError.checkValidRange(start, end, this[$length]);
        return new (SubListIterableOfE()).new(this, start, end);
      }
      get [$first]() {
        if (this[$length] > 0) return this[$_get](0);
        dart.throw(_internal.IterableElementError.noElement());
      }
      get [$last]() {
        if (this[$length] > 0) return this[$_get](this[$length] - 1);
        dart.throw(_internal.IterableElementError.noElement());
      }
      get [$single]() {
        if (this[$length] === 1) return this[$_get](0);
        if (this[$length] === 0) dart.throw(_internal.IterableElementError.noElement());
        dart.throw(_internal.IterableElementError.tooMany());
      }
      [$removeRange](start, end) {
        if (start == null) dart.argumentError(start);
        if (end == null) dart.argumentError(end);
        this[$checkGrowable]("removeRange");
        core.RangeError.checkValidRange(start, end, this[$length]);
        let deleteCount = end - start;
        this.splice(start, deleteCount);
      }
      [$setRange](start, end, iterable, skipCount) {
        if (start == null) dart.argumentError(start);
        if (end == null) dart.argumentError(end);
        IterableOfE()._check(iterable);
        if (skipCount === void 0) skipCount = 0;
        if (skipCount == null) dart.argumentError(skipCount);
        this[$checkMutable]("set range");
        core.RangeError.checkValidRange(start, end, this[$length]);
        let length = end - start;
        if (length === 0) return;
        core.RangeError.checkNotNegative(skipCount, "skipCount");
        let otherList = null;
        let otherStart = 0;
        if (ListOfE().is(iterable)) {
          otherList = iterable;
          otherStart = skipCount;
        } else {
          otherList = iterable[$skip](skipCount)[$toList]({growable: false});
          otherStart = 0;
        }
        if (otherStart + length > dart.notNull(otherList[$length])) {
          dart.throw(_internal.IterableElementError.tooFew());
        }
        if (otherStart < start) {
          for (let i = length - 1; i >= 0; i--) {
            let element = otherList[$_get](otherStart + i);
            this[start + i] = element;
          }
        } else {
          for (let i = 0; i < length; i++) {
            let element = otherList[$_get](otherStart + i);
            this[start + i] = element;
          }
        }
      }
      [$fillRange](start, end, fillValue) {
        if (start == null) dart.argumentError(start);
        if (end == null) dart.argumentError(end);
        if (fillValue === void 0) fillValue = null;
        E._check(fillValue);
        this[$checkMutable]("fill range");
        core.RangeError.checkValidRange(start, end, this[$length]);
        for (let i = start; i < end; i++) {
          this[i] = fillValue;
        }
      }
      [$replaceRange](start, end, replacement) {
        if (start == null) dart.argumentError(start);
        if (end == null) dart.argumentError(end);
        IterableOfE()._check(replacement);
        this[$checkGrowable]("replace range");
        core.RangeError.checkValidRange(start, end, this[$length]);
        if (!_internal.EfficientLengthIterable.is(replacement)) {
          replacement = replacement[$toList]();
        }
        let removeLength = end - start;
        let insertLength = dart.notNull(replacement[$length]);
        if (removeLength >= insertLength) {
          let delta = removeLength - insertLength;
          let insertEnd = start + insertLength;
          let newLength = this[$length] - delta;
          this[$setRange](start, insertEnd, replacement);
          if (delta !== 0) {
            this[$setRange](insertEnd, newLength, this, end);
            this[$length] = newLength;
          }
        } else {
          let delta = insertLength - removeLength;
          let newLength = this[$length] + delta;
          let insertEnd = start + insertLength;
          this[$length] = newLength;
          this[$setRange](insertEnd, newLength, this, end);
          this[$setRange](start, insertEnd, replacement);
        }
      }
      [$any](test) {
        let end = this[$length];
        for (let i = 0; i < end; i++) {
          let element = this[i];
          if (dart.test(test(E._check(element)))) return true;
          if (this[$length] !== end) dart.throw(new core.ConcurrentModificationError.new(this));
        }
        return false;
      }
      [$every](test) {
        let end = this[$length];
        for (let i = 0; i < end; i++) {
          let element = this[i];
          if (!dart.test(test(element))) return false;
          if (this[$length] !== end) dart.throw(new core.ConcurrentModificationError.new(this));
        }
        return true;
      }
      get [$reversed]() {
        return new (ReversedListIterableOfE()).new(this);
      }
      [$sort](compare) {
        if (compare === void 0) compare = null;
        this[$checkMutable]("sort");
        if (compare == null) {
          _internal.Sort.sort(E, this, dart.fn((a, b) => core.Comparable.compare(core.Comparable._check(a), core.Comparable._check(b)), dynamicAnddynamicToint()));
        } else {
          _internal.Sort.sort(E, this, compare);
        }
      }
      [$shuffle](random) {
        if (random === void 0) random = null;
        this[$checkMutable]("shuffle");
        if (random == null) random = math.Random.new();
        let length = this[$length];
        while (length > 1) {
          let pos = random.nextInt(length);
          length = length - 1;
          let tmp = this[$_get](length);
          this[$_set](length, this[$_get](pos));
          this[$_set](pos, tmp);
        }
      }
      [$indexOf](element, start) {
        if (start === void 0) start = 0;
        if (start == null) dart.argumentError(start);
        let length = this[$length];
        if (start >= length) {
          return -1;
        }
        if (start < 0) {
          start = 0;
        }
        for (let i = start; i < length; i++) {
          if (dart.equals(this[$_get](i), element)) {
            return i;
          }
        }
        return -1;
      }
      [$lastIndexOf](element, _startIndex) {
        if (_startIndex === void 0) _startIndex = null;
        let startIndex = _startIndex != null ? _startIndex : this[$length] - 1;
        if (startIndex >= this[$length]) {
          startIndex = this[$length] - 1;
        } else if (startIndex < 0) {
          return -1;
        }
        for (let i = startIndex; i >= 0; i--) {
          if (dart.equals(this[$_get](i), element)) {
            return i;
          }
        }
        return -1;
      }
      [$contains](other) {
        let length = this[$length];
        for (let i = 0; i < length; i++) {
          let element = this[i];
          if (dart.equals(element, other)) return true;
        }
        return false;
      }
      get [$isEmpty]() {
        return this[$length] === 0;
      }
      get [$isNotEmpty]() {
        return !this[$isEmpty];
      }
      [$toString]() {
        return collection.ListBase.listToString(this);
      }
      [$toList](opts) {
        let growable = opts && 'growable' in opts ? opts.growable : true;
        if (growable == null) dart.argumentError(growable);
        let list = this.slice();
        if (!growable) _interceptors.JSArray.markFixedList(list);
        return JSArrayOfE().of(list);
      }
      [$toSet]() {
        return SetOfE().from(this);
      }
      get [$iterator]() {
        return new (ArrayIteratorOfE()).new(this);
      }
      get [$hashCode]() {
        return core.identityHashCode(this);
      }
      [$_equals](other) {
        return this === other;
      }
      get [$length]() {
        return this.length;
      }
      set [$length](newLength) {
        if (newLength == null) dart.argumentError(newLength);
        this[$checkGrowable]("set length");
        if (newLength < 0) {
          dart.throw(new core.RangeError.range(newLength, 0, null, "newLength"));
        }
        this.length = newLength;
      }
      [$_get](index) {
        if (index == null || index >= this.length || index < 0) {
          dart.throw(_js_helper.diagnoseIndexError(this, index));
        }
        return this[index];
      }
      [$_set](index, value) {
        E._check(value);
        this[$checkMutable]("indexed set");
        if (index == null || index >= this.length || index < 0) {
          dart.throw(_js_helper.diagnoseIndexError(this, index));
        }
        this[index] = value;
        return value;
      }
      [$asMap]() {
        return new (ListMapViewOfE()).new(this);
      }
      get [$runtimeType]() {
        return dart.wrapType(core.List$(E));
      }
      [$followedBy](other) {
        IterableOfE()._check(other);
        return FollowedByIterableOfE().firstEfficient(this, other);
      }
      [$whereType](T) {
        return new (_internal.WhereTypeIterable$(T)).new(this);
      }
      [$plus](other) {
        ListOfE()._check(other);
        let totalLength = this[$length] + dart.notNull(other[$length]);
        let _ = JSArrayOfE().of([]);
        _[$length] = totalLength;
        _[$setRange](0, this[$length], this);
        _[$setRange](this[$length], totalLength, other);
        return _;
      }
      [$indexWhere](test, start) {
        if (start === void 0) start = 0;
        if (dart.notNull(start) >= this[$length]) return -1;
        if (dart.notNull(start) < 0) start = 0;
        for (let i = start; dart.notNull(i) < this[$length]; i = dart.notNull(i) + 1) {
          if (dart.test(test(this[$_get](i)))) return i;
        }
        return -1;
      }
      [$lastIndexWhere](test, start) {
        if (start === void 0) start = null;
        if (start == null) start = this[$length] - 1;
        if (dart.notNull(start) < 0) return -1;
        for (let i = start; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
          if (dart.test(test(this[$_get](i)))) return i;
        }
        return -1;
      }
      set [$first](element) {
        E._check(element);
        if (this[$isEmpty]) dart.throw(core.RangeError.index(0, this));
        this[$_set](0, element);
      }
      set [$last](element) {
        E._check(element);
        if (this[$isEmpty]) dart.throw(core.RangeError.index(0, this));
        this[$_set](this[$length] - 1, element);
      }
    }
    (JSArray.new = function() {
    }).prototype = JSArray.prototype;
    dart.setExtensionBaseClass(JSArray, dart.global.Array);
    JSArray.prototype[dart.isList] = true;
    dart.addTypeTests(JSArray);
    JSArray.prototype[_is_JSArray_default] = true;
    JSArray[dart.implements] = () => [ListOfE(), JSIndexableOfE()];
    dart.setMethodSignature(JSArray, () => ({
      __proto__: dart.getMethods(JSArray.__proto__),
      [$checkMutable]: dart.fnType(dart.dynamic, [dart.dynamic]),
      [$checkGrowable]: dart.fnType(dart.dynamic, [dart.dynamic]),
      [$cast]: dart.gFnType(R => [core.List$(R), []]),
      [$add]: dart.fnType(dart.void, [core.Object]),
      [$removeAt]: dart.fnType(E, [core.int]),
      [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
      [$insertAll]: dart.fnType(dart.void, [core.int, core.Object]),
      [$setAll]: dart.fnType(dart.void, [core.int, core.Object]),
      [$removeLast]: dart.fnType(E, []),
      [$remove]: dart.fnType(core.bool, [core.Object]),
      [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      [$retainWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      [_removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E]), core.bool]),
      [$where]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$expand]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
      [$addAll]: dart.fnType(dart.void, [core.Object]),
      [$clear]: dart.fnType(dart.void, []),
      [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
      [$map]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
      [$join]: dart.fnType(core.String, [], [core.String]),
      [$take]: dart.fnType(core.Iterable$(E), [core.int]),
      [$takeWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$skip]: dart.fnType(core.Iterable$(E), [core.int]),
      [$skipWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$reduce]: dart.fnType(E, [core.Object]),
      [$fold]: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
      [$firstWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$lastWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$singleWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$elementAt]: dart.fnType(E, [core.int]),
      [$sublist]: dart.fnType(core.List$(E), [core.int], [core.int]),
      [$getRange]: dart.fnType(core.Iterable$(E), [core.int, core.int]),
      [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
      [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
      [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
      [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object]),
      [$any]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      [$every]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      [$sort]: dart.fnType(dart.void, [], [dart.fnType(core.int, [E, E])]),
      [$shuffle]: dart.fnType(dart.void, [], [math.Random]),
      [$indexOf]: dart.fnType(core.int, [core.Object], [core.int]),
      [$lastIndexOf]: dart.fnType(core.int, [core.Object], [core.int]),
      [$contains]: dart.fnType(core.bool, [core.Object]),
      [$toString]: dart.fnType(core.String, []),
      [$toList]: dart.fnType(core.List$(E), [], {growable: core.bool}),
      [$toSet]: dart.fnType(core.Set$(E), []),
      [$_equals]: dart.fnType(core.bool, [dart.dynamic]),
      [$_get]: dart.fnType(E, [core.int]),
      [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
      [$asMap]: dart.fnType(core.Map$(core.int, E), []),
      [$followedBy]: dart.fnType(core.Iterable$(E), [core.Object]),
      [$whereType]: dart.gFnType(T => [core.Iterable$(T), []]),
      [$plus]: dart.fnType(core.List$(E), [core.Object]),
      [$indexWhere]: dart.fnType(core.int, [dart.fnType(core.bool, [E])], [core.int]),
      [$lastIndexWhere]: dart.fnType(core.int, [dart.fnType(core.bool, [E])], [core.int])
    }));
    dart.setGetterSignature(JSArray, () => ({
      __proto__: dart.getGetters(JSArray.__proto__),
      [$first]: E,
      [$last]: E,
      [$single]: E,
      [$reversed]: core.Iterable$(E),
      [$isEmpty]: core.bool,
      [$isNotEmpty]: core.bool,
      [$iterator]: core.Iterator$(E),
      [$hashCode]: core.int,
      [$length]: core.int,
      [$runtimeType]: core.Type
    }));
    dart.setSetterSignature(JSArray, () => ({
      __proto__: dart.getSetters(JSArray.__proto__),
      [$length]: core.int,
      [$first]: E,
      [$last]: E
    }));
    return JSArray;
  });
  _interceptors.JSArray = _interceptors.JSArray$();
  dart.addTypeTests(_interceptors.JSArray, _is_JSArray_default);
  dart.registerExtension("Array", _interceptors.JSArray);
  const _is_JSMutableArray_default = Symbol('_is_JSMutableArray_default');
  _interceptors.JSMutableArray$ = dart.generic(E => {
    class JSMutableArray extends _interceptors.JSArray$(E) {}
    (JSMutableArray.new = function() {
      JSMutableArray.__proto__.new.call(this);
    }).prototype = JSMutableArray.prototype;
    dart.addTypeTests(JSMutableArray);
    JSMutableArray.prototype[_is_JSMutableArray_default] = true;
    return JSMutableArray;
  });
  _interceptors.JSMutableArray = _interceptors.JSMutableArray$();
  dart.addTypeTests(_interceptors.JSMutableArray, _is_JSMutableArray_default);
  const _is_JSFixedArray_default = Symbol('_is_JSFixedArray_default');
  _interceptors.JSFixedArray$ = dart.generic(E => {
    class JSFixedArray extends _interceptors.JSMutableArray$(E) {}
    (JSFixedArray.new = function() {
      JSFixedArray.__proto__.new.call(this);
    }).prototype = JSFixedArray.prototype;
    dart.addTypeTests(JSFixedArray);
    JSFixedArray.prototype[_is_JSFixedArray_default] = true;
    return JSFixedArray;
  });
  _interceptors.JSFixedArray = _interceptors.JSFixedArray$();
  dart.addTypeTests(_interceptors.JSFixedArray, _is_JSFixedArray_default);
  const _is_JSExtendableArray_default = Symbol('_is_JSExtendableArray_default');
  _interceptors.JSExtendableArray$ = dart.generic(E => {
    class JSExtendableArray extends _interceptors.JSMutableArray$(E) {}
    (JSExtendableArray.new = function() {
      JSExtendableArray.__proto__.new.call(this);
    }).prototype = JSExtendableArray.prototype;
    dart.addTypeTests(JSExtendableArray);
    JSExtendableArray.prototype[_is_JSExtendableArray_default] = true;
    return JSExtendableArray;
  });
  _interceptors.JSExtendableArray = _interceptors.JSExtendableArray$();
  dart.addTypeTests(_interceptors.JSExtendableArray, _is_JSExtendableArray_default);
  const _is_JSUnmodifiableArray_default = Symbol('_is_JSUnmodifiableArray_default');
  _interceptors.JSUnmodifiableArray$ = dart.generic(E => {
    class JSUnmodifiableArray extends _interceptors.JSArray$(E) {}
    (JSUnmodifiableArray.new = function() {
      JSUnmodifiableArray.__proto__.new.call(this);
    }).prototype = JSUnmodifiableArray.prototype;
    dart.addTypeTests(JSUnmodifiableArray);
    JSUnmodifiableArray.prototype[_is_JSUnmodifiableArray_default] = true;
    return JSUnmodifiableArray;
  });
  _interceptors.JSUnmodifiableArray = _interceptors.JSUnmodifiableArray$();
  dart.addTypeTests(_interceptors.JSUnmodifiableArray, _is_JSUnmodifiableArray_default);
  const _iterable = Symbol('_iterable');
  const _length = Symbol('_length');
  const _index = Symbol('_index');
  const _current = Symbol('_current');
  const _is_ArrayIterator_default = Symbol('_is_ArrayIterator_default');
  _interceptors.ArrayIterator$ = dart.generic(E => {
    let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
    let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
    class ArrayIterator extends core.Object {
      get current() {
        return this[_current];
      }
      moveNext() {
        let length = this[_iterable][$length];
        if (this[_length] !== length) {
          dart.throw(_js_helper.throwConcurrentModificationError(this[_iterable]));
        }
        if (this[_index] >= length) {
          this[_current] = null;
          return false;
        }
        this[_current] = this[_iterable][$_get](this[_index]);
        this[_index]++;
        return true;
      }
    }
    (ArrayIterator.new = function(iterable) {
      this[_current] = null;
      this[_iterable] = iterable;
      this[_length] = iterable[$length];
      this[_index] = 0;
    }).prototype = ArrayIterator.prototype;
    dart.addTypeTests(ArrayIterator);
    ArrayIterator.prototype[_is_ArrayIterator_default] = true;
    ArrayIterator[dart.implements] = () => [IteratorOfE()];
    dart.setMethodSignature(ArrayIterator, () => ({
      __proto__: dart.getMethods(ArrayIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(ArrayIterator, () => ({
      __proto__: dart.getGetters(ArrayIterator.__proto__),
      current: E
    }));
    dart.setFieldSignature(ArrayIterator, () => ({
      __proto__: dart.getFields(ArrayIterator.__proto__),
      [_iterable]: dart.finalFieldType(JSArrayOfE()),
      [_length]: dart.finalFieldType(core.int),
      [_index]: dart.fieldType(core.int),
      [_current]: dart.fieldType(E)
    }));
    return ArrayIterator;
  });
  _interceptors.ArrayIterator = _interceptors.ArrayIterator$();
  dart.addTypeTests(_interceptors.ArrayIterator, _is_ArrayIterator_default);
  const _isInt32 = Symbol('_isInt32');
  const _tdivSlow = Symbol('_tdivSlow');
  const _shlPositive = Symbol('_shlPositive');
  const _shrOtherPositive = Symbol('_shrOtherPositive');
  const _shrBothPositive = Symbol('_shrBothPositive');
  _interceptors.JSNumber = class JSNumber extends _interceptors.Interceptor {
    [$compareTo](b) {
      core.num._check(b);
      if (b == null) dart.argumentError(b);
      if (this < b) {
        return -1;
      } else if (this > b) {
        return 1;
      } else if (this === b) {
        if (this === 0) {
          let bIsNegative = b[$isNegative];
          if (this[$isNegative] === bIsNegative) return 0;
          if (this[$isNegative]) return -1;
          return 1;
        }
        return 0;
      } else if (this[$isNaN]) {
        if (b[$isNaN]) {
          return 0;
        }
        return 1;
      } else {
        return -1;
      }
    }
    get [$isNegative]() {
      return this === 0 ? 1 / this < 0 : this < 0;
    }
    get [$isNaN]() {
      return isNaN(this);
    }
    get [$isInfinite]() {
      return this == 1 / 0 || this == -1 / 0;
    }
    get [$isFinite]() {
      return isFinite(this);
    }
    [$remainder](b) {
      if (b == null) dart.argumentError(b);
      return this % b;
    }
    [$abs]() {
      return Math.abs(this);
    }
    get [$sign]() {
      return this > 0 ? 1 : this < 0 ? -1 : this;
    }
    [$toInt]() {
      if (this >= -2147483648 && this <= 2147483647) {
        return this | 0;
      }
      if (isFinite(this)) {
        return this[$truncateToDouble]() + 0;
      }
      dart.throw(new core.UnsupportedError.new("" + this));
    }
    [$truncate]() {
      return this[$toInt]();
    }
    [$ceil]() {
      return this[$ceilToDouble]()[$toInt]();
    }
    [$floor]() {
      return this[$floorToDouble]()[$toInt]();
    }
    [$round]() {
      if (this > 0) {
        if (this !== 1 / 0) {
          return Math.round(this);
        }
      } else if (this > -1 / 0) {
        return 0 - Math.round(0 - this);
      }
      dart.throw(new core.UnsupportedError.new("" + this));
    }
    [$ceilToDouble]() {
      return Math.ceil(this);
    }
    [$floorToDouble]() {
      return Math.floor(this);
    }
    [$roundToDouble]() {
      if (this < 0) {
        return -Math.round(-this);
      } else {
        return Math.round(this);
      }
    }
    [$truncateToDouble]() {
      return this < 0 ? this[$ceilToDouble]() : this[$floorToDouble]();
    }
    [$clamp](lowerLimit, upperLimit) {
      if (lowerLimit == null) dart.argumentError(lowerLimit);
      if (upperLimit == null) dart.argumentError(upperLimit);
      if (lowerLimit[$compareTo](upperLimit) > 0) {
        dart.throw(_js_helper.argumentErrorValue(lowerLimit));
      }
      if (this[$compareTo](lowerLimit) < 0) return lowerLimit;
      if (this[$compareTo](upperLimit) > 0) return upperLimit;
      return this;
    }
    [$toDouble]() {
      return this;
    }
    [$toStringAsFixed](fractionDigits) {
      if (fractionDigits < 0 || fractionDigits > 20) {
        dart.throw(new core.RangeError.range(fractionDigits, 0, 20, "fractionDigits"));
      }
      let result = this.toFixed(fractionDigits);
      if (this === 0 && this[$isNegative]) return "-" + result;
      return result;
    }
    [$toStringAsExponential](fractionDigits) {
      if (fractionDigits === void 0) fractionDigits = null;
      let result = null;
      if (fractionDigits != null) {
        let _fractionDigits = fractionDigits;
        if (_fractionDigits < 0 || _fractionDigits > 20) {
          dart.throw(new core.RangeError.range(_fractionDigits, 0, 20, "fractionDigits"));
        }
        result = this.toExponential(_fractionDigits);
      } else {
        result = this.toExponential();
      }
      if (this === 0 && this[$isNegative]) return "-" + dart.str(result);
      return result;
    }
    [$toStringAsPrecision](precision) {
      if (precision == null) dart.argumentError(precision);
      if (precision < 1 || precision > 21) {
        dart.throw(new core.RangeError.range(precision, 1, 21, "precision"));
      }
      let result = this.toPrecision(precision);
      if (this === 0 && this[$isNegative]) return "-" + result;
      return result;
    }
    [$toRadixString](radix) {
      if (radix == null) dart.argumentError(radix);
      if (radix < 2 || radix > 36) {
        dart.throw(new core.RangeError.range(radix, 2, 36, "radix"));
      }
      let result = this.toString(radix);
      let rightParenCode = 41;
      if (result[$codeUnitAt](result.length - 1) !== rightParenCode) {
        return result;
      }
      return _interceptors.JSNumber._handleIEtoString(result);
    }
    static _handleIEtoString(result) {
      let match = /^([\da-z]+)(?:\.([\da-z]+))?\(e\+(\d+)\)$/.exec(result);
      if (match == null) {
        dart.throw(new core.UnsupportedError.new("Unexpected toString result: " + dart.str(result)));
      }
      result = match[$_get](1);
      let exponent = +match[$_get](3);
      if (match[$_get](2) != null) {
        result = result + match[$_get](2);
        exponent = exponent - match[$_get](2).length;
      }
      return dart.notNull(result) + "0"[$times](exponent);
    }
    [$toString]() {
      if (this === 0 && 1 / this < 0) {
        return "-0.0";
      } else {
        return "" + this;
      }
    }
    get [$hashCode]() {
      let intValue = this | 0;
      if (this === intValue) return 536870911 & intValue;
      let absolute = Math.abs(this);
      let lnAbsolute = Math.log(absolute);
      let log2 = lnAbsolute / 0.6931471805599453;
      let floorLog2 = log2 | 0;
      let factor = Math.pow(2, floorLog2);
      let scaled = absolute < 1 ? absolute / factor : factor / absolute;
      let rescaled1 = scaled * 9007199254740992;
      let rescaled2 = scaled * 3542243181176521;
      let d1 = rescaled1 | 0;
      let d2 = rescaled2 | 0;
      let d3 = floorLog2;
      let h = 536870911 & (d1 + d2) * (601 * 997) + d3 * 1259;
      return h;
    }
    [$_negate]() {
      return -this;
    }
    [$plus](other) {
      if (other == null) dart.argumentError(other);
      return this + other;
    }
    [$minus](other) {
      if (other == null) dart.argumentError(other);
      return this - other;
    }
    [$divide](other) {
      if (other == null) dart.argumentError(other);
      return this / other;
    }
    [$times](other) {
      if (other == null) dart.argumentError(other);
      return this * other;
    }
    [$modulo](other) {
      if (other == null) dart.argumentError(other);
      let result = this % other;
      if (result === 0) return 0;
      if (result > 0) return result;
      if (other < 0) {
        return result - other;
      } else {
        return result + other;
      }
    }
    [_isInt32](value) {
      return (value | 0) === value;
    }
    [$floorDivide](other) {
      if (other == null) dart.argumentError(other);
      if (this[_isInt32](this) && this[_isInt32](other) && 0 !== other && -1 !== other) {
        return this / other | 0;
      } else {
        return this[_tdivSlow](other);
      }
    }
    [_tdivSlow](other) {
      return (this / other)[$toInt]();
    }
    [$leftShift](other) {
      if (other == null) dart.argumentError(other);
      if (other < 0) _js_helper.throwArgumentErrorValue(other);
      return this[_shlPositive](other);
    }
    [_shlPositive](other) {
      return other > 31 ? 0 : this << other >>> 0;
    }
    [$rightShift](other) {
      if (other == null) dart.argumentError(other);
      if (other < 0) _js_helper.throwArgumentErrorValue(other);
      return this[_shrOtherPositive](other);
    }
    [_shrOtherPositive](other) {
      return this > 0 ? this[_shrBothPositive](other) : this >> (other > 31 ? 31 : other) >>> 0;
    }
    [_shrBothPositive](other) {
      return other > 31 ? 0 : this >>> other;
    }
    [$bitAnd](other) {
      if (other == null) dart.argumentError(other);
      return (this & other) >>> 0;
    }
    [$bitOr](other) {
      if (other == null) dart.argumentError(other);
      return (this | other) >>> 0;
    }
    [$bitXor](other) {
      if (other == null) dart.argumentError(other);
      return (this ^ other) >>> 0;
    }
    [$lessThan](other) {
      if (other == null) dart.argumentError(other);
      return this < other;
    }
    [$greaterThan](other) {
      if (other == null) dart.argumentError(other);
      return this > other;
    }
    [$lessOrEquals](other) {
      if (other == null) dart.argumentError(other);
      return this <= other;
    }
    [$greaterOrEquals](other) {
      if (other == null) dart.argumentError(other);
      return this >= other;
    }
    get [$isEven]() {
      return (this & 1) === 0;
    }
    get [$isOdd]() {
      return (this & 1) === 1;
    }
    [$toUnsigned](width) {
      if (width == null) dart.argumentError(width);
      return (this & (1)[$leftShift](width) - 1) >>> 0;
    }
    [$toSigned](width) {
      if (width == null) dart.argumentError(width);
      let signMask = (1)[$leftShift](width - 1);
      return ((this & signMask - 1) >>> 0) - ((this & signMask) >>> 0);
    }
    get [$bitLength]() {
      let nonneg = this < 0 ? -this - 1 : this;
      let wordBits = 32;
      while (nonneg >= 4294967296) {
        nonneg = (nonneg / 4294967296)[$truncate]();
        wordBits = wordBits + 32;
      }
      return wordBits - _interceptors.JSNumber._clz32(nonneg);
    }
    static _clz32(uint32) {
      return 32 - _interceptors.JSNumber._bitCount(_interceptors.JSNumber._spread(uint32));
    }
    [$modPow](e, m) {
      if (e == null) dart.argumentError(e);
      if (m == null) dart.argumentError(m);
      if (e < 0) dart.throw(new core.RangeError.range(e, 0, null, "exponent"));
      if (m <= 0) dart.throw(new core.RangeError.range(m, 1, null, "modulus"));
      if (e === 0) return 1;
      let b = this;
      if (b < 0 || b > m) {
        b = b[$modulo](m);
      }
      let r = 1;
      while (e > 0) {
        if (e[$isOdd]) {
          r = (r * b)[$modulo](m);
        }
        e = (e / 2)[$truncate]();
        b = (b * b)[$modulo](m);
      }
      return r;
    }
    static _binaryGcd(x, y, inv) {
      let s = 1;
      if (!inv) {
        while (x[$isEven] && y[$isEven]) {
          x = (x / 2)[$truncate]();
          y = (y / 2)[$truncate]();
          s = s * 2;
        }
        if (y[$isOdd]) {
          let t = x;
          x = y;
          y = t;
        }
      }
      let ac = x[$isEven];
      let u = x;
      let v = y;
      let a = 1, b = 0, c = 0, d = 1;
      do {
        while (u[$isEven]) {
          u = (u / 2)[$truncate]();
          if (ac) {
            if (!a[$isEven] || !b[$isEven]) {
              a = a + y;
              b = b - x;
            }
            a = (a / 2)[$truncate]();
          } else if (!b[$isEven]) {
            b = b - x;
          }
          b = (b / 2)[$truncate]();
        }
        while (v[$isEven]) {
          v = (v / 2)[$truncate]();
          if (ac) {
            if (!c[$isEven] || !d[$isEven]) {
              c = c + y;
              d = d - x;
            }
            c = (c / 2)[$truncate]();
          } else if (!d[$isEven]) {
            d = d - x;
          }
          d = (d / 2)[$truncate]();
        }
        if (u >= v) {
          u = u - v;
          if (ac) {
            a = a - c;
          }
          b = b - d;
        } else {
          v = v - u;
          if (ac) {
            c = c - a;
          }
          d = d - b;
        }
      } while (u !== 0);
      if (!inv) return s * v;
      if (v !== 1) dart.throw(core.Exception.new("Not coprime"));
      if (d < 0) {
        d = d + x;
        if (d < 0) {
          d = d + x;
        }
      } else if (d > x) {
        d = d - x;
        if (d > x) {
          d = d - x;
        }
      }
      return d;
    }
    [$modInverse](m) {
      if (m == null) dart.argumentError(m);
      if (m <= 0) dart.throw(new core.RangeError.range(m, 1, null, "modulus"));
      if (m === 1) return 0;
      let t = this;
      if (t < 0 || t >= m) {
        t = t[$modulo](m);
      }
      if (t === 1) return 1;
      if (t === 0 || t[$isEven] && m[$isEven]) {
        dart.throw(core.Exception.new("Not coprime"));
      }
      return _interceptors.JSNumber._binaryGcd(m, t, true);
    }
    [$gcd](other) {
      if (other == null) dart.argumentError(other);
      let x = this[$abs]();
      let y = other[$abs]();
      if (x === 0) return y;
      if (y === 0) return x;
      if (x === 1 || y === 1) return 1;
      return _interceptors.JSNumber._binaryGcd(x, y, false);
    }
    static _bitCount(i) {
      i = _interceptors.JSNumber._shru(i, 0) - (_interceptors.JSNumber._shru(i, 1) & 1431655765);
      i = (i & 858993459) + (_interceptors.JSNumber._shru(i, 2) & 858993459);
      i = 252645135 & i + _interceptors.JSNumber._shru(i, 4);
      i = i + _interceptors.JSNumber._shru(i, 8);
      i = i + _interceptors.JSNumber._shru(i, 16);
      return i & 63;
    }
    static _shru(value, shift) {
      return value >>> shift;
    }
    static _shrs(value, shift) {
      return value >> shift;
    }
    static _ors(a, b) {
      return a | b;
    }
    static _spread(i) {
      i = _interceptors.JSNumber._ors(i, _interceptors.JSNumber._shrs(i, 1));
      i = _interceptors.JSNumber._ors(i, _interceptors.JSNumber._shrs(i, 2));
      i = _interceptors.JSNumber._ors(i, _interceptors.JSNumber._shrs(i, 4));
      i = _interceptors.JSNumber._ors(i, _interceptors.JSNumber._shrs(i, 8));
      i = _interceptors.JSNumber._shru(_interceptors.JSNumber._ors(i, _interceptors.JSNumber._shrs(i, 16)), 0);
      return i;
    }
    [$bitNot]() {
      return ~this >>> 0;
    }
  };
  (_interceptors.JSNumber.new = function() {
    _interceptors.JSNumber.__proto__.new.call(this);
  }).prototype = _interceptors.JSNumber.prototype;
  dart.addTypeTests(_interceptors.JSNumber);
  _interceptors.JSNumber[dart.implements] = () => [core.int, core.double];
  dart.setMethodSignature(_interceptors.JSNumber, () => ({
    __proto__: dart.getMethods(_interceptors.JSNumber.__proto__),
    [$compareTo]: dart.fnType(core.int, [core.Object]),
    [$remainder]: dart.fnType(_interceptors.JSNumber, [core.num]),
    [$abs]: dart.fnType(_interceptors.JSNumber, []),
    [$toInt]: dart.fnType(core.int, []),
    [$truncate]: dart.fnType(core.int, []),
    [$ceil]: dart.fnType(core.int, []),
    [$floor]: dart.fnType(core.int, []),
    [$round]: dart.fnType(core.int, []),
    [$ceilToDouble]: dart.fnType(core.double, []),
    [$floorToDouble]: dart.fnType(core.double, []),
    [$roundToDouble]: dart.fnType(core.double, []),
    [$truncateToDouble]: dart.fnType(core.double, []),
    [$clamp]: dart.fnType(core.num, [core.num, core.num]),
    [$toDouble]: dart.fnType(core.double, []),
    [$toStringAsFixed]: dart.fnType(core.String, [core.int]),
    [$toStringAsExponential]: dart.fnType(core.String, [], [core.int]),
    [$toStringAsPrecision]: dart.fnType(core.String, [core.int]),
    [$toRadixString]: dart.fnType(core.String, [core.int]),
    [$_negate]: dart.fnType(_interceptors.JSNumber, []),
    [$plus]: dart.fnType(_interceptors.JSNumber, [core.num]),
    [$minus]: dart.fnType(_interceptors.JSNumber, [core.num]),
    [$divide]: dart.fnType(core.double, [core.num]),
    [$times]: dart.fnType(_interceptors.JSNumber, [core.num]),
    [$modulo]: dart.fnType(_interceptors.JSNumber, [core.num]),
    [_isInt32]: dart.fnType(core.bool, [core.num]),
    [$floorDivide]: dart.fnType(core.int, [core.num]),
    [_tdivSlow]: dart.fnType(core.int, [core.num]),
    [$leftShift]: dart.fnType(core.int, [core.num]),
    [_shlPositive]: dart.fnType(core.int, [core.num]),
    [$rightShift]: dart.fnType(core.int, [core.num]),
    [_shrOtherPositive]: dart.fnType(core.int, [core.num]),
    [_shrBothPositive]: dart.fnType(core.int, [core.num]),
    [$bitAnd]: dart.fnType(core.int, [core.num]),
    [$bitOr]: dart.fnType(core.int, [core.num]),
    [$bitXor]: dart.fnType(core.int, [core.num]),
    [$lessThan]: dart.fnType(core.bool, [core.num]),
    [$greaterThan]: dart.fnType(core.bool, [core.num]),
    [$lessOrEquals]: dart.fnType(core.bool, [core.num]),
    [$greaterOrEquals]: dart.fnType(core.bool, [core.num]),
    [$toUnsigned]: dart.fnType(core.int, [core.int]),
    [$toSigned]: dart.fnType(core.int, [core.int]),
    [$modPow]: dart.fnType(core.int, [core.int, core.int]),
    [$modInverse]: dart.fnType(core.int, [core.int]),
    [$gcd]: dart.fnType(core.int, [core.int]),
    [$bitNot]: dart.fnType(core.int, [])
  }));
  dart.setGetterSignature(_interceptors.JSNumber, () => ({
    __proto__: dart.getGetters(_interceptors.JSNumber.__proto__),
    [$isNegative]: core.bool,
    [$isNaN]: core.bool,
    [$isInfinite]: core.bool,
    [$isFinite]: core.bool,
    [$sign]: _interceptors.JSNumber,
    [$isEven]: core.bool,
    [$isOdd]: core.bool,
    [$bitLength]: core.int
  }));
  dart.defineLazy(_interceptors.JSNumber, {
    /*_interceptors.JSNumber._MIN_INT32*/get _MIN_INT32() {
      return -2147483648;
    },
    /*_interceptors.JSNumber._MAX_INT32*/get _MAX_INT32() {
      return 2147483647;
    }
  });
  dart.definePrimitiveHashCode(_interceptors.JSNumber.prototype);
  dart.registerExtension("Number", _interceptors.JSNumber);
  const _defaultSplit = Symbol('_defaultSplit');
  let const$2;
  _interceptors.JSString = class JSString extends _interceptors.Interceptor {
    [$codeUnitAt](index) {
      if (index == null) dart.argumentError(index);
      let len = this.length;
      if (index < 0 || index >= len) {
        dart.throw(core.RangeError.index(index, this, "index", null, len));
      }
      return this.charCodeAt(index);
    }
    [$allMatches](string, start) {
      if (string == null) dart.argumentError(string);
      if (start === void 0) start = 0;
      if (start == null) dart.argumentError(start);
      let len = string.length;
      if (0 > start || start > len) {
        dart.throw(new core.RangeError.range(start, 0, len));
      }
      return _js_helper.allMatchesInStringUnchecked(this, string, start);
    }
    [$matchAsPrefix](string, start) {
      if (string == null) dart.argumentError(string);
      if (start === void 0) start = 0;
      if (start == null) dart.argumentError(start);
      let stringLength = string.length;
      if (start < 0 || start > stringLength) {
        dart.throw(new core.RangeError.range(start, 0, stringLength));
      }
      let thisLength = this.length;
      if (start + thisLength > stringLength) return null;
      for (let i = 0; i < thisLength; i++) {
        if (string[$codeUnitAt](start + i) !== this[$codeUnitAt](i)) {
          return null;
        }
      }
      return new _js_helper.StringMatch.new(start, string, this);
    }
    [$plus](other) {
      if (other == null) dart.argumentError(other);
      return this + other;
    }
    [$endsWith](other) {
      if (other == null) dart.argumentError(other);
      let otherLength = other.length;
      let thisLength = this.length;
      if (otherLength > thisLength) return false;
      return other === this[$substring](thisLength - otherLength);
    }
    [$replaceAll](from, to) {
      if (to == null) dart.argumentError(to);
      return _js_helper.stringReplaceAllUnchecked(this, from, to);
    }
    [$replaceAllMapped](from, convert) {
      return this[$splitMapJoin](from, {onMatch: convert});
    }
    [$splitMapJoin](from, opts) {
      let onMatch = opts && 'onMatch' in opts ? opts.onMatch : null;
      let onNonMatch = opts && 'onNonMatch' in opts ? opts.onNonMatch : null;
      return _js_helper.stringReplaceAllFuncUnchecked(this, from, onMatch, onNonMatch);
    }
    [$replaceFirst](from, to, startIndex) {
      if (to == null) dart.argumentError(to);
      if (startIndex === void 0) startIndex = 0;
      if (startIndex == null) dart.argumentError(startIndex);
      core.RangeError.checkValueInInterval(startIndex, 0, this.length, "startIndex");
      return _js_helper.stringReplaceFirstUnchecked(this, from, to, startIndex);
    }
    [$replaceFirstMapped](from, replace, startIndex) {
      if (replace == null) dart.argumentError(replace);
      if (startIndex === void 0) startIndex = 0;
      if (startIndex == null) dart.argumentError(startIndex);
      core.RangeError.checkValueInInterval(startIndex, 0, this.length, "startIndex");
      return _js_helper.stringReplaceFirstMappedUnchecked(this, from, replace, startIndex);
    }
    [$split](pattern) {
      if (pattern == null) dart.argumentError(pattern);
      if (typeof pattern == 'string') {
        return JSArrayOfString().of(this.split(pattern));
      } else if (_js_helper.JSSyntaxRegExp.is(pattern) && _js_helper.regExpCaptureCount(pattern) === 0) {
        let re = _js_helper.regExpGetNative(pattern);
        return JSArrayOfString().of(this.split(re));
      } else {
        return this[_defaultSplit](pattern);
      }
    }
    [$replaceRange](start, end, replacement) {
      if (start == null) dart.argumentError(start);
      if (replacement == null) dart.argumentError(replacement);
      end = core.RangeError.checkValidRange(start, end, this.length);
      return _js_helper.stringReplaceRangeUnchecked(this, start, end, replacement);
    }
    [_defaultSplit](pattern) {
      let result = JSArrayOfString().of([]);
      let start = 0;
      let length = 1;
      for (let match of pattern[$allMatches](this)) {
        let matchStart = match.start;
        let matchEnd = match.end;
        length = matchEnd - matchStart;
        if (length === 0 && start === matchStart) {
          continue;
        }
        let end = matchStart;
        result[$add](this[$substring](start, end));
        start = matchEnd;
      }
      if (start < this.length || length > 0) {
        result[$add](this[$substring](start));
      }
      return result;
    }
    [$startsWith](pattern, index) {
      if (index === void 0) index = 0;
      if (index == null) dart.argumentError(index);
      let length = this.length;
      if (index < 0 || index > length) {
        dart.throw(new core.RangeError.range(index, 0, this.length));
      }
      if (typeof pattern == 'string') {
        let other = pattern;
        let otherLength = other.length;
        let endIndex = index + otherLength;
        if (endIndex > length) return false;
        return other === this.substring(index, endIndex);
      }
      return pattern[$matchAsPrefix](this, index) != null;
    }
    [$substring](startIndex, _endIndex) {
      if (startIndex == null) dart.argumentError(startIndex);
      if (_endIndex === void 0) _endIndex = null;
      let length = this.length;
      let endIndex = _endIndex != null ? _endIndex : length;
      if (startIndex < 0) dart.throw(new core.RangeError.value(startIndex));
      if (startIndex > endIndex) dart.throw(new core.RangeError.value(startIndex));
      if (endIndex > length) dart.throw(new core.RangeError.value(endIndex));
      return this.substring(startIndex, endIndex);
    }
    [$toLowerCase]() {
      return this.toLowerCase();
    }
    [$toUpperCase]() {
      return this.toUpperCase();
    }
    static _isWhitespace(codeUnit) {
      if (codeUnit < 256) {
        switch (codeUnit) {
          case 9:
          case 10:
          case 11:
          case 12:
          case 13:
          case 32:
          case 133:
          case 160:
          {
            return true;
          }
          default:
          {
            return false;
          }
        }
      }
      switch (codeUnit) {
        case 5760:
        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 true;
        }
        default:
        {
          return false;
        }
      }
    }
    static _skipLeadingWhitespace(string, index) {
      if (index == null) dart.argumentError(index);
      let SPACE = 32;
      let CARRIAGE_RETURN = 13;
      let stringLength = string.length;
      while (index < stringLength) {
        let codeUnit = string[$codeUnitAt](index);
        if (codeUnit !== SPACE && codeUnit !== CARRIAGE_RETURN && !_interceptors.JSString._isWhitespace(codeUnit)) {
          break;
        }
        index++;
      }
      return index;
    }
    static _skipTrailingWhitespace(string, index) {
      if (index == null) dart.argumentError(index);
      let SPACE = 32;
      let CARRIAGE_RETURN = 13;
      while (index > 0) {
        let codeUnit = string[$codeUnitAt](index - 1);
        if (codeUnit !== SPACE && codeUnit !== CARRIAGE_RETURN && !_interceptors.JSString._isWhitespace(codeUnit)) {
          break;
        }
        index--;
      }
      return index;
    }
    [$trim]() {
      let NEL = 133;
      let result = this.trim();
      let length = result.length;
      if (length === 0) return result;
      let firstCode = result[$codeUnitAt](0);
      let startIndex = 0;
      if (firstCode === NEL) {
        startIndex = _interceptors.JSString._skipLeadingWhitespace(result, 1);
        if (startIndex === length) return "";
      }
      let endIndex = length;
      let lastCode = result[$codeUnitAt](endIndex - 1);
      if (lastCode === NEL) {
        endIndex = _interceptors.JSString._skipTrailingWhitespace(result, endIndex - 1);
      }
      if (startIndex === 0 && endIndex === length) return result;
      return result.substring(startIndex, endIndex);
    }
    [$trimLeft]() {
      let NEL = 133;
      let result = null;
      let startIndex = 0;
      if (typeof this.trimLeft != "undefined") {
        result = this.trimLeft();
        if (result.length === 0) return result;
        let firstCode = result[$codeUnitAt](0);
        if (firstCode === NEL) {
          startIndex = _interceptors.JSString._skipLeadingWhitespace(result, 1);
        }
      } else {
        result = this;
        startIndex = _interceptors.JSString._skipLeadingWhitespace(this, 0);
      }
      if (startIndex === 0) return result;
      if (startIndex === result.length) return "";
      return result.substring(startIndex);
    }
    [$trimRight]() {
      let NEL = 133;
      let result = null;
      let endIndex = 0;
      if (typeof this.trimRight != "undefined") {
        result = this.trimRight();
        endIndex = result.length;
        if (endIndex === 0) return result;
        let lastCode = result[$codeUnitAt](endIndex - 1);
        if (lastCode === NEL) {
          endIndex = _interceptors.JSString._skipTrailingWhitespace(result, endIndex - 1);
        }
      } else {
        result = this;
        endIndex = _interceptors.JSString._skipTrailingWhitespace(this, this.length);
      }
      if (endIndex === result.length) return result;
      if (endIndex === 0) return "";
      return result.substring(0, endIndex);
    }
    [$times](times) {
      if (times == null) dart.argumentError(times);
      if (0 >= times) return "";
      if (times === 1 || this.length === 0) return this;
      if (times !== times >>> 0) {
        dart.throw(const$2 || (const$2 = dart.const(new core.OutOfMemoryError.new())));
      }
      let result = "";
      let s = this;
      while (true) {
        if ((times & 1) === 1) result = s + result;
        times = times >>> 1;
        if (times === 0) break;
        s = s + s;
      }
      return result;
    }
    [$padLeft](width, padding) {
      if (width == null) dart.argumentError(width);
      if (padding === void 0) padding = " ";
      let delta = width - this.length;
      if (delta <= 0) return this;
      return padding[$times](delta) + this;
    }
    [$padRight](width, padding) {
      if (width == null) dart.argumentError(width);
      if (padding === void 0) padding = " ";
      let delta = width - this.length;
      if (delta <= 0) return this;
      return this[$plus](padding[$times](delta));
    }
    get [$codeUnits]() {
      return new _internal.CodeUnits.new(this);
    }
    get [$runes]() {
      return new core.Runes.new(this);
    }
    [$indexOf](pattern, start) {
      if (pattern == null) dart.argumentError(pattern);
      if (start === void 0) start = 0;
      if (start == null) dart.argumentError(start);
      if (start < 0 || start > this.length) {
        dart.throw(new core.RangeError.range(start, 0, this.length));
      }
      if (typeof pattern == 'string') {
        return _js_helper.stringIndexOfStringUnchecked(this, pattern, start);
      }
      if (_js_helper.JSSyntaxRegExp.is(pattern)) {
        let re = pattern;
        let match = _js_helper.firstMatchAfter(re, this, start);
        return match == null ? -1 : match.start;
      }
      let length = this.length;
      for (let i = start; i <= length; i++) {
        if (pattern[$matchAsPrefix](this, i) != null) return i;
      }
      return -1;
    }
    [$lastIndexOf](pattern, _start) {
      if (pattern == null) dart.argumentError(pattern);
      if (_start === void 0) _start = null;
      let length = this.length;
      let start = _start != null ? _start : length;
      if (start < 0 || start > length) {
        dart.throw(new core.RangeError.range(start, 0, length));
      }
      if (typeof pattern == 'string') {
        let other = pattern;
        if (start + other.length > length) {
          start = length - other.length;
        }
        return _js_helper.stringLastIndexOfUnchecked(this, other, start);
      }
      for (let i = start; i >= 0; i--) {
        if (pattern[$matchAsPrefix](this, i) != null) return i;
      }
      return -1;
    }
    [$contains](other, startIndex) {
      if (other == null) dart.argumentError(other);
      if (startIndex === void 0) startIndex = 0;
      if (startIndex == null) dart.argumentError(startIndex);
      if (startIndex < 0 || startIndex > this.length) {
        dart.throw(new core.RangeError.range(startIndex, 0, this.length));
      }
      return _js_helper.stringContainsUnchecked(this, other, startIndex);
    }
    get [$isEmpty]() {
      return this.length === 0;
    }
    get [$isNotEmpty]() {
      return !this[$isEmpty];
    }
    [$compareTo](other) {
      core.String._check(other);
      if (other == null) dart.argumentError(other);
      return this === other ? 0 : this < other ? -1 : 1;
    }
    [$toString]() {
      return this;
    }
    get [$hashCode]() {
      let hash = 0;
      let length = this.length;
      for (let i = 0; i < length; i++) {
        hash = 536870911 & hash + this.charCodeAt(i);
        hash = 536870911 & hash + ((524287 & hash) << 10);
        hash = hash ^ hash >> 6;
      }
      hash = 536870911 & hash + ((67108863 & hash) << 3);
      hash = hash ^ hash >> 11;
      return 536870911 & hash + ((16383 & hash) << 15);
    }
    get [$runtimeType]() {
      return dart.wrapType(core.String);
    }
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index == null) dart.argumentError(index);
      if (index >= this.length || index < 0) {
        dart.throw(_js_helper.diagnoseIndexError(this, index));
      }
      return this[index];
    }
  };
  (_interceptors.JSString.new = function() {
    this[$length] = null;
    _interceptors.JSString.__proto__.new.call(this);
  }).prototype = _interceptors.JSString.prototype;
  dart.addTypeTests(_interceptors.JSString);
  _interceptors.JSString[dart.implements] = () => [core.String, JSIndexableOfString()];
  dart.setMethodSignature(_interceptors.JSString, () => ({
    __proto__: dart.getMethods(_interceptors.JSString.__proto__),
    [$codeUnitAt]: dart.fnType(core.int, [core.int]),
    [$allMatches]: dart.fnType(core.Iterable$(core.Match), [core.String], [core.int]),
    [$matchAsPrefix]: dart.fnType(core.Match, [core.String], [core.int]),
    [$plus]: dart.fnType(core.String, [core.String]),
    [$endsWith]: dart.fnType(core.bool, [core.String]),
    [$replaceAll]: dart.fnType(core.String, [core.Pattern, core.String]),
    [$replaceAllMapped]: dart.fnType(core.String, [core.Pattern, dart.fnType(core.String, [core.Match])]),
    [$splitMapJoin]: dart.fnType(core.String, [core.Pattern], {onMatch: dart.fnType(core.String, [core.Match]), onNonMatch: dart.fnType(core.String, [core.String])}),
    [$replaceFirst]: dart.fnType(core.String, [core.Pattern, core.String], [core.int]),
    [$replaceFirstMapped]: dart.fnType(core.String, [core.Pattern, dart.fnType(core.String, [core.Match])], [core.int]),
    [$split]: dart.fnType(core.List$(core.String), [core.Pattern]),
    [$replaceRange]: dart.fnType(core.String, [core.int, core.int, core.String]),
    [_defaultSplit]: dart.fnType(core.List$(core.String), [core.Pattern]),
    [$startsWith]: dart.fnType(core.bool, [core.Pattern], [core.int]),
    [$substring]: dart.fnType(core.String, [core.int], [core.int]),
    [$toLowerCase]: dart.fnType(core.String, []),
    [$toUpperCase]: dart.fnType(core.String, []),
    [$trim]: dart.fnType(core.String, []),
    [$trimLeft]: dart.fnType(core.String, []),
    [$trimRight]: dart.fnType(core.String, []),
    [$times]: dart.fnType(core.String, [core.int]),
    [$padLeft]: dart.fnType(core.String, [core.int], [core.String]),
    [$padRight]: dart.fnType(core.String, [core.int], [core.String]),
    [$indexOf]: dart.fnType(core.int, [core.Pattern], [core.int]),
    [$lastIndexOf]: dart.fnType(core.int, [core.Pattern], [core.int]),
    [$contains]: dart.fnType(core.bool, [core.Pattern], [core.int]),
    [$compareTo]: dart.fnType(core.int, [core.Object]),
    [$_get]: dart.fnType(core.String, [core.int])
  }));
  dart.setGetterSignature(_interceptors.JSString, () => ({
    __proto__: dart.getGetters(_interceptors.JSString.__proto__),
    [$codeUnits]: core.List$(core.int),
    [$runes]: core.Runes,
    [$isEmpty]: core.bool,
    [$isNotEmpty]: core.bool
  }));
  dart.setFieldSignature(_interceptors.JSString, () => ({
    __proto__: dart.getFields(_interceptors.JSString.__proto__),
    [$length]: dart.finalFieldType(core.int)
  }));
  dart.definePrimitiveHashCode(_interceptors.JSString.prototype);
  dart.registerExtension("String", _interceptors.JSString);
  dart.defineLazy(_internal, {
    /*_internal.POWERS_OF_TEN*/get POWERS_OF_TEN() {
      return dart.constList([1.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 10000000.0, 100000000.0, 1000000000.0, 10000000000.0, 100000000000.0, 1000000000000.0, 10000000000000.0, 100000000000000.0, 1000000000000000.0, 10000000000000000.0, 100000000000000000.0, 1000000000000000000.0, 10000000000000000000.0, 100000000000000000000.0, 1e+21, 1e+22], core.double);
    }
  });
  const _string = Symbol('_string');
  const _closeGap = Symbol('_closeGap');
  const _filter = Symbol('_filter');
  const _is_ListMixin_default = Symbol('_is_ListMixin_default');
  collection.ListMixin$ = dart.generic(E => {
    let ListIteratorOfE = () => (ListIteratorOfE = dart.constFn(_internal.ListIterator$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let FollowedByIterableOfE = () => (FollowedByIterableOfE = dart.constFn(_internal.FollowedByIterable$(E)))();
    let VoidToE = () => (VoidToE = dart.constFn(dart.fnType(E, [])))();
    let WhereIterableOfE = () => (WhereIterableOfE = dart.constFn(_internal.WhereIterable$(E)))();
    let EAndEToE = () => (EAndEToE = dart.constFn(dart.fnType(E, [E, E])))();
    let SubListIterableOfE = () => (SubListIterableOfE = dart.constFn(_internal.SubListIterable$(E)))();
    let SkipWhileIterableOfE = () => (SkipWhileIterableOfE = dart.constFn(_internal.SkipWhileIterable$(E)))();
    let TakeWhileIterableOfE = () => (TakeWhileIterableOfE = dart.constFn(_internal.TakeWhileIterable$(E)))();
    let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
    let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
    let _HashSetOfE = () => (_HashSetOfE = dart.constFn(collection._HashSet$(E)))();
    let ListMapViewOfE = () => (ListMapViewOfE = dart.constFn(_internal.ListMapView$(E)))();
    let ReversedListIterableOfE = () => (ReversedListIterableOfE = dart.constFn(_internal.ReversedListIterable$(E)))();
    class ListMixin extends core.Object {
      get iterator() {
        return new (ListIteratorOfE()).new(this);
      }
      [Symbol.iterator]() {
        return new dart.JsIterator(this[$iterator]);
      }
      elementAt(index) {
        return this[$_get](index);
      }
      followedBy(other) {
        IterableOfE()._check(other);
        return FollowedByIterableOfE().firstEfficient(this, other);
      }
      forEach(action) {
        let length = this[$length];
        for (let i = 0; i < dart.notNull(length); i++) {
          action(this[$_get](i));
          if (length != this[$length]) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
      }
      get isEmpty() {
        return this[$length] === 0;
      }
      get isNotEmpty() {
        return !dart.test(this[$isEmpty]);
      }
      get first() {
        if (this[$length] === 0) dart.throw(_internal.IterableElementError.noElement());
        return this[$_get](0);
      }
      set first(value) {
        E._check(value);
        if (this[$length] === 0) dart.throw(_internal.IterableElementError.noElement());
        this[$_set](0, value);
      }
      get last() {
        if (this[$length] === 0) dart.throw(_internal.IterableElementError.noElement());
        return this[$_get](dart.notNull(this[$length]) - 1);
      }
      set last(value) {
        E._check(value);
        if (this[$length] === 0) dart.throw(_internal.IterableElementError.noElement());
        this[$_set](dart.notNull(this[$length]) - 1, value);
      }
      get single() {
        if (this[$length] === 0) dart.throw(_internal.IterableElementError.noElement());
        if (dart.notNull(this[$length]) > 1) dart.throw(_internal.IterableElementError.tooMany());
        return this[$_get](0);
      }
      contains(element) {
        let length = this[$length];
        for (let i = 0; i < dart.notNull(length); i++) {
          if (dart.equals(this[$_get](i), element)) return true;
          if (length != this[$length]) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        return false;
      }
      every(test) {
        let length = this[$length];
        for (let i = 0; i < dart.notNull(length); i++) {
          if (!dart.test(test(this[$_get](i)))) return false;
          if (length != this[$length]) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        return true;
      }
      any(test) {
        let length = this[$length];
        for (let i = 0; i < dart.notNull(length); i++) {
          if (dart.test(test(this[$_get](i)))) return true;
          if (length != this[$length]) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        return false;
      }
      firstWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        let length = this[$length];
        for (let i = 0; i < dart.notNull(length); i++) {
          let element = this[$_get](i);
          if (dart.test(test(element))) return element;
          if (length != this[$length]) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      lastWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        let length = this[$length];
        for (let i = dart.notNull(length) - 1; i >= 0; i--) {
          let element = this[$_get](i);
          if (dart.test(test(element))) return element;
          if (length != this[$length]) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      singleWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        let length = this[$length];
        let match = null;
        let matchFound = false;
        for (let i = 0; i < dart.notNull(length); i++) {
          let element = this[$_get](i);
          if (dart.test(test(element))) {
            if (matchFound) {
              dart.throw(_internal.IterableElementError.tooMany());
            }
            matchFound = true;
            match = element;
          }
          if (length != this[$length]) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        if (matchFound) return match;
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      join(separator) {
        if (separator === void 0) separator = "";
        if (this[$length] === 0) return "";
        let buffer = new core.StringBuffer.new();
        buffer.writeAll(this, separator);
        return buffer.toString();
      }
      where(test) {
        return new (WhereIterableOfE()).new(this, test);
      }
      whereType(T) {
        return new (_internal.WhereTypeIterable$(T)).new(this);
      }
      map(T, f) {
        return new (_internal.MappedListIterable$(E, T)).new(this, f);
      }
      expand(T, f) {
        return new (_internal.ExpandIterable$(E, T)).new(this, f);
      }
      reduce(combine) {
        EAndEToE()._check(combine);
        let length = this[$length];
        if (length === 0) dart.throw(_internal.IterableElementError.noElement());
        let value = this[$_get](0);
        for (let i = 1; i < dart.notNull(length); i++) {
          value = combine(value, this[$_get](i));
          if (length != this[$length]) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        return value;
      }
      fold(T, initialValue, combine) {
        let value = initialValue;
        let length = this[$length];
        for (let i = 0; i < dart.notNull(length); i++) {
          value = combine(value, this[$_get](i));
          if (length != this[$length]) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        return value;
      }
      skip(count) {
        return new (SubListIterableOfE()).new(this, count, null);
      }
      skipWhile(test) {
        return new (SkipWhileIterableOfE()).new(this, test);
      }
      take(count) {
        return new (SubListIterableOfE()).new(this, 0, count);
      }
      takeWhile(test) {
        return new (TakeWhileIterableOfE()).new(this, test);
      }
      toList(opts) {
        let growable = opts && 'growable' in opts ? opts.growable : true;
        let result = null;
        if (dart.test(growable)) {
          result = JSArrayOfE().of([]);
          result[$length] = this[$length];
        } else {
          result = ListOfE().new(this[$length]);
        }
        for (let i = 0; i < dart.notNull(this[$length]); i++) {
          result[$_set](i, this[$_get](i));
        }
        return result;
      }
      toSet() {
        let result = new (_HashSetOfE()).new();
        for (let i = 0; i < dart.notNull(this[$length]); i++) {
          result.add(this[$_get](i));
        }
        return result;
      }
      add(element) {
        E._check(element);
        this[$_set]((() => {
          let x = this[$length];
          this[$length] = dart.notNull(x) + 1;
          return x;
        })(), element);
      }
      addAll(iterable) {
        IterableOfE()._check(iterable);
        let i = this[$length];
        for (let element of iterable) {
          if (!(this[$length] == i || dart.test(dart.throw(new core.ConcurrentModificationError.new(this))))) dart.assertFailed();
          this[$length] = dart.notNull(i) + 1;
          this[$_set](i, element);
          i = dart.notNull(i) + 1;
        }
      }
      remove(element) {
        for (let i = 0; i < dart.notNull(this[$length]); i++) {
          if (dart.equals(this[$_get](i), element)) {
            this[_closeGap](i, i + 1);
            return true;
          }
        }
        return false;
      }
      [_closeGap](start, end) {
        let length = this[$length];
        if (!(0 <= dart.notNull(start))) dart.assertFailed();
        if (!(dart.notNull(start) < dart.notNull(end))) dart.assertFailed();
        if (!(dart.notNull(end) <= dart.notNull(length))) dart.assertFailed();
        let size = dart.notNull(end) - dart.notNull(start);
        for (let i = end; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
          this[$_set](dart.notNull(i) - size, this[$_get](i));
        }
        this[$length] = dart.notNull(length) - size;
      }
      removeWhere(test) {
        this[_filter](test, false);
      }
      retainWhere(test) {
        this[_filter](test, true);
      }
      [_filter](test, retainMatching) {
        let retained = JSArrayOfE().of([]);
        let length = this[$length];
        for (let i = 0; i < dart.notNull(length); i++) {
          let element = this[$_get](i);
          if (test(element) == retainMatching) {
            retained[$add](element);
          }
          if (length != this[$length]) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        if (retained[$length] != this[$length]) {
          this[$setRange](0, retained[$length], retained);
          this[$length] = retained[$length];
        }
      }
      clear() {
        this[$length] = 0;
      }
      cast(R) {
        return core.List.castFrom(E, R, this);
      }
      removeLast() {
        if (this[$length] === 0) {
          dart.throw(_internal.IterableElementError.noElement());
        }
        let result = this[$_get](dart.notNull(this[$length]) - 1);
        this[$length] = dart.notNull(this[$length]) - 1;
        return result;
      }
      sort(compare) {
        if (compare === void 0) compare = null;
        _internal.Sort.sort(E, this, compare != null ? compare : dart.fn(collection.ListMixin._compareAny, dynamicAnddynamicToint()));
      }
      static _compareAny(a, b) {
        return core.Comparable.compare(core.Comparable._check(a), core.Comparable._check(b));
      }
      shuffle(random) {
        if (random === void 0) random = null;
        let t = random;
        t == null ? random = math.Random.new() : t;
        let length = this[$length];
        while (dart.notNull(length) > 1) {
          let pos = random.nextInt(length);
          length = dart.notNull(length) - 1;
          let tmp = this[$_get](length);
          this[$_set](length, this[$_get](pos));
          this[$_set](pos, tmp);
        }
      }
      asMap() {
        return new (ListMapViewOfE()).new(this);
      }
      ['+'](other) {
        ListOfE()._check(other);
        let result = JSArrayOfE().of([]);
        result[$length] = dart.notNull(this[$length]) + dart.notNull(other[$length]);
        result[$setRange](0, this[$length], this);
        result[$setRange](this[$length], result[$length], other);
        return result;
      }
      sublist(start, end) {
        if (end === void 0) end = null;
        let listLength = this[$length];
        let t = end;
        t == null ? end = listLength : t;
        core.RangeError.checkValidRange(start, end, listLength);
        let length = dart.notNull(end) - dart.notNull(start);
        let result = JSArrayOfE().of([]);
        result[$length] = length;
        for (let i = 0; i < length; i++) {
          result[$_set](i, this[$_get](dart.notNull(start) + i));
        }
        return result;
      }
      getRange(start, end) {
        core.RangeError.checkValidRange(start, end, this[$length]);
        return new (SubListIterableOfE()).new(this, start, end);
      }
      removeRange(start, end) {
        core.RangeError.checkValidRange(start, end, this[$length]);
        if (dart.notNull(end) > dart.notNull(start)) {
          this[_closeGap](start, end);
        }
      }
      fillRange(start, end, fill) {
        if (fill === void 0) fill = null;
        E._check(fill);
        core.RangeError.checkValidRange(start, end, this[$length]);
        for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
          this[$_set](i, fill);
        }
      }
      setRange(start, end, iterable, skipCount) {
        IterableOfE()._check(iterable);
        if (skipCount === void 0) skipCount = 0;
        core.RangeError.checkValidRange(start, end, this[$length]);
        let length = dart.notNull(end) - dart.notNull(start);
        if (length === 0) return;
        core.RangeError.checkNotNegative(skipCount, "skipCount");
        let otherList = null;
        let otherStart = null;
        if (ListOfE().is(iterable)) {
          otherList = iterable;
          otherStart = skipCount;
        } else {
          otherList = iterable[$skip](skipCount)[$toList]({growable: false});
          otherStart = 0;
        }
        if (dart.notNull(otherStart) + length > dart.notNull(otherList[$length])) {
          dart.throw(_internal.IterableElementError.tooFew());
        }
        if (dart.notNull(otherStart) < dart.notNull(start)) {
          for (let i = length - 1; i >= 0; i--) {
            this[$_set](dart.notNull(start) + i, otherList[$_get](dart.notNull(otherStart) + i));
          }
        } else {
          for (let i = 0; i < length; i++) {
            this[$_set](dart.notNull(start) + i, otherList[$_get](dart.notNull(otherStart) + i));
          }
        }
      }
      replaceRange(start, end, newContents) {
        IterableOfE()._check(newContents);
        core.RangeError.checkValidRange(start, end, this[$length]);
        if (!_internal.EfficientLengthIterable.is(newContents)) {
          newContents = newContents[$toList]();
        }
        let removeLength = dart.notNull(end) - dart.notNull(start);
        let insertLength = newContents[$length];
        if (removeLength >= dart.notNull(insertLength)) {
          let insertEnd = dart.notNull(start) + dart.notNull(insertLength);
          this[$setRange](start, insertEnd, newContents);
          if (removeLength > dart.notNull(insertLength)) {
            this[_closeGap](insertEnd, end);
          }
        } else {
          let delta = dart.notNull(insertLength) - removeLength;
          let newLength = dart.notNull(this[$length]) + delta;
          let insertEnd = dart.notNull(start) + dart.notNull(insertLength);
          this[$length] = newLength;
          this[$setRange](insertEnd, newLength, this, end);
          this[$setRange](start, insertEnd, newContents);
        }
      }
      indexOf(element, start) {
        if (start === void 0) start = 0;
        if (dart.notNull(start) < 0) start = 0;
        for (let i = start; dart.notNull(i) < dart.notNull(this[$length]); i = dart.notNull(i) + 1) {
          if (dart.equals(this[$_get](i), element)) return i;
        }
        return -1;
      }
      indexWhere(test, start) {
        if (start === void 0) start = 0;
        if (dart.notNull(start) < 0) start = 0;
        for (let i = start; dart.notNull(i) < dart.notNull(this[$length]); i = dart.notNull(i) + 1) {
          if (dart.test(test(this[$_get](i)))) return i;
        }
        return -1;
      }
      lastIndexOf(element, start) {
        if (start === void 0) start = null;
        if (start == null || dart.notNull(start) >= dart.notNull(this[$length])) start = dart.notNull(this[$length]) - 1;
        for (let i = start; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
          if (dart.equals(this[$_get](i), element)) return i;
        }
        return -1;
      }
      lastIndexWhere(test, start) {
        if (start === void 0) start = null;
        if (start == null || dart.notNull(start) >= dart.notNull(this[$length])) start = dart.notNull(this[$length]) - 1;
        for (let i = start; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
          if (dart.test(test(this[$_get](i)))) return i;
        }
        return -1;
      }
      insert(index, element) {
        E._check(element);
        core.ArgumentError.checkNotNull(index, "index");
        core.RangeError.checkValueInInterval(index, 0, this[$length], "index");
        if (index == this[$length]) {
          this[$add](element);
          return;
        }
        this[$length] = dart.notNull(this[$length]) + 1;
        this[$setRange](dart.notNull(index) + 1, this[$length], this, index);
        this[$_set](index, element);
      }
      removeAt(index) {
        let result = this[$_get](index);
        this[_closeGap](index, dart.notNull(index) + 1);
        return result;
      }
      insertAll(index, iterable) {
        IterableOfE()._check(iterable);
        core.RangeError.checkValueInInterval(index, 0, this[$length], "index");
        if (!_internal.EfficientLengthIterable.is(iterable) || iterable === this) {
          iterable = iterable[$toList]();
        }
        let insertionLength = iterable[$length];
        this[$length] = dart.notNull(this[$length]) + dart.notNull(insertionLength);
        if (iterable[$length] != insertionLength) {
          this[$length] = dart.notNull(this[$length]) - dart.notNull(insertionLength);
          dart.throw(new core.ConcurrentModificationError.new(iterable));
        }
        this[$setRange](dart.notNull(index) + dart.notNull(insertionLength), this[$length], this, index);
        this[$setAll](index, iterable);
      }
      setAll(index, iterable) {
        IterableOfE()._check(iterable);
        if (core.List.is(iterable)) {
          this[$setRange](index, dart.notNull(index) + dart.notNull(iterable[$length]), iterable);
        } else {
          for (let element of iterable) {
            this[$_set]((() => {
              let x = index;
              index = dart.notNull(x) + 1;
              return x;
            })(), element);
          }
        }
      }
      get reversed() {
        return new (ReversedListIterableOfE()).new(this);
      }
      toString() {
        return collection.IterableBase.iterableToFullString(this, "[", "]");
      }
    }
    (ListMixin.new = function() {
    }).prototype = ListMixin.prototype;
    ListMixin.prototype[dart.isList] = true;
    dart.addTypeTests(ListMixin);
    ListMixin.prototype[_is_ListMixin_default] = true;
    ListMixin[dart.implements] = () => [ListOfE()];
    dart.setMethodSignature(ListMixin, () => ({
      __proto__: dart.getMethods(ListMixin.__proto__),
      elementAt: dart.fnType(E, [core.int]),
      [$elementAt]: dart.fnType(E, [core.int]),
      followedBy: dart.fnType(core.Iterable$(E), [core.Object]),
      [$followedBy]: dart.fnType(core.Iterable$(E), [core.Object]),
      forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
      [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
      contains: dart.fnType(core.bool, [core.Object]),
      [$contains]: dart.fnType(core.bool, [core.Object]),
      every: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      [$every]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      any: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      [$any]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      firstWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$firstWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      lastWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$lastWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      singleWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$singleWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      join: dart.fnType(core.String, [], [core.String]),
      [$join]: dart.fnType(core.String, [], [core.String]),
      where: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$where]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      whereType: dart.gFnType(T => [core.Iterable$(T), []]),
      [$whereType]: dart.gFnType(T => [core.Iterable$(T), []]),
      map: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
      [$map]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
      expand: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
      [$expand]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
      reduce: dart.fnType(E, [core.Object]),
      [$reduce]: dart.fnType(E, [core.Object]),
      fold: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
      [$fold]: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
      skip: dart.fnType(core.Iterable$(E), [core.int]),
      [$skip]: dart.fnType(core.Iterable$(E), [core.int]),
      skipWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$skipWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      take: dart.fnType(core.Iterable$(E), [core.int]),
      [$take]: dart.fnType(core.Iterable$(E), [core.int]),
      takeWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$takeWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      toList: dart.fnType(core.List$(E), [], {growable: core.bool}),
      [$toList]: dart.fnType(core.List$(E), [], {growable: core.bool}),
      toSet: dart.fnType(core.Set$(E), []),
      [$toSet]: dart.fnType(core.Set$(E), []),
      add: dart.fnType(dart.void, [core.Object]),
      [$add]: dart.fnType(dart.void, [core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      [$addAll]: dart.fnType(dart.void, [core.Object]),
      remove: dart.fnType(core.bool, [core.Object]),
      [$remove]: dart.fnType(core.bool, [core.Object]),
      [_closeGap]: dart.fnType(dart.void, [core.int, core.int]),
      removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      [$retainWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      [_filter]: dart.fnType(dart.void, [dart.fnType(core.bool, [E]), core.bool]),
      clear: dart.fnType(dart.void, []),
      [$clear]: dart.fnType(dart.void, []),
      cast: dart.gFnType(R => [core.List$(R), []]),
      [$cast]: dart.gFnType(R => [core.List$(R), []]),
      removeLast: dart.fnType(E, []),
      [$removeLast]: dart.fnType(E, []),
      sort: dart.fnType(dart.void, [], [dart.fnType(core.int, [E, E])]),
      [$sort]: dart.fnType(dart.void, [], [dart.fnType(core.int, [E, E])]),
      shuffle: dart.fnType(dart.void, [], [math.Random]),
      [$shuffle]: dart.fnType(dart.void, [], [math.Random]),
      asMap: dart.fnType(core.Map$(core.int, E), []),
      [$asMap]: dart.fnType(core.Map$(core.int, E), []),
      '+': dart.fnType(core.List$(E), [core.Object]),
      [$plus]: dart.fnType(core.List$(E), [core.Object]),
      sublist: dart.fnType(core.List$(E), [core.int], [core.int]),
      [$sublist]: dart.fnType(core.List$(E), [core.int], [core.int]),
      getRange: dart.fnType(core.Iterable$(E), [core.int, core.int]),
      [$getRange]: dart.fnType(core.Iterable$(E), [core.int, core.int]),
      removeRange: dart.fnType(dart.void, [core.int, core.int]),
      [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
      fillRange: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
      [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
      setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
      [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
      replaceRange: dart.fnType(dart.void, [core.int, core.int, core.Object]),
      [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object]),
      indexOf: dart.fnType(core.int, [core.Object], [core.int]),
      [$indexOf]: dart.fnType(core.int, [core.Object], [core.int]),
      indexWhere: dart.fnType(core.int, [dart.fnType(core.bool, [E])], [core.int]),
      [$indexWhere]: dart.fnType(core.int, [dart.fnType(core.bool, [E])], [core.int]),
      lastIndexOf: dart.fnType(core.int, [core.Object], [core.int]),
      [$lastIndexOf]: dart.fnType(core.int, [core.Object], [core.int]),
      lastIndexWhere: dart.fnType(core.int, [dart.fnType(core.bool, [E])], [core.int]),
      [$lastIndexWhere]: dart.fnType(core.int, [dart.fnType(core.bool, [E])], [core.int]),
      insert: dart.fnType(dart.void, [core.int, core.Object]),
      [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
      removeAt: dart.fnType(E, [core.int]),
      [$removeAt]: dart.fnType(E, [core.int]),
      insertAll: dart.fnType(dart.void, [core.int, core.Object]),
      [$insertAll]: dart.fnType(dart.void, [core.int, core.Object]),
      setAll: dart.fnType(dart.void, [core.int, core.Object]),
      [$setAll]: dart.fnType(dart.void, [core.int, core.Object]),
      toString: dart.fnType(core.String, []),
      [$toString]: dart.fnType(core.String, [])
    }));
    dart.setGetterSignature(ListMixin, () => ({
      __proto__: dart.getGetters(ListMixin.__proto__),
      iterator: core.Iterator$(E),
      [$iterator]: core.Iterator$(E),
      isEmpty: core.bool,
      [$isEmpty]: core.bool,
      isNotEmpty: core.bool,
      [$isNotEmpty]: core.bool,
      first: E,
      [$first]: E,
      last: E,
      [$last]: E,
      single: E,
      [$single]: E,
      reversed: core.Iterable$(E),
      [$reversed]: core.Iterable$(E)
    }));
    dart.setSetterSignature(ListMixin, () => ({
      __proto__: dart.getSetters(ListMixin.__proto__),
      first: E,
      [$first]: E,
      last: E,
      [$last]: E
    }));
    dart.defineExtensionMethods(ListMixin, [
      'elementAt',
      'followedBy',
      'forEach',
      'contains',
      'every',
      'any',
      'firstWhere',
      'lastWhere',
      'singleWhere',
      'join',
      'where',
      'whereType',
      'map',
      'expand',
      'reduce',
      'fold',
      'skip',
      'skipWhile',
      'take',
      'takeWhile',
      'toList',
      'toSet',
      'add',
      'addAll',
      'remove',
      'removeWhere',
      'retainWhere',
      'clear',
      'cast',
      'removeLast',
      'sort',
      'shuffle',
      'asMap',
      '+',
      'sublist',
      'getRange',
      'removeRange',
      'fillRange',
      'setRange',
      'replaceRange',
      'indexOf',
      'indexWhere',
      'lastIndexOf',
      'lastIndexWhere',
      'insert',
      'removeAt',
      'insertAll',
      'setAll',
      'toString'
    ]);
    dart.defineExtensionAccessors(ListMixin, [
      'iterator',
      'isEmpty',
      'isNotEmpty',
      'first',
      'last',
      'single',
      'reversed'
    ]);
    return ListMixin;
  });
  collection.ListMixin = collection.ListMixin$();
  dart.addTypeTests(collection.ListMixin, _is_ListMixin_default);
  const _is_ListBase_default = Symbol('_is_ListBase_default');
  collection.ListBase$ = dart.generic(E => {
    const Object_ListMixin$ = class Object_ListMixin extends core.Object {};
    (Object_ListMixin$.new = function() {
    }).prototype = Object_ListMixin$.prototype;
    dart.applyMixin(Object_ListMixin$, collection.ListMixin$(E));
    class ListBase extends Object_ListMixin$ {
      static listToString(list) {
        return collection.IterableBase.iterableToFullString(list, "[", "]");
      }
    }
    (ListBase.new = function() {
    }).prototype = ListBase.prototype;
    dart.addTypeTests(ListBase);
    ListBase.prototype[_is_ListBase_default] = true;
    return ListBase;
  });
  collection.ListBase = collection.ListBase$();
  dart.addTypeTests(collection.ListBase, _is_ListBase_default);
  const _is_UnmodifiableListMixin_default = Symbol('_is_UnmodifiableListMixin_default');
  _internal.UnmodifiableListMixin$ = dart.generic(E => {
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
    class UnmodifiableListMixin extends core.Object {
      _set(index, value) {
        E._check(value);
        dart.throw(new core.UnsupportedError.new("Cannot modify an unmodifiable list"));
        return value;
      }
      set length(newLength) {
        dart.throw(new core.UnsupportedError.new("Cannot change the length of an unmodifiable list"));
      }
      set first(element) {
        E._check(element);
        dart.throw(new core.UnsupportedError.new("Cannot modify an unmodifiable list"));
      }
      set last(element) {
        E._check(element);
        dart.throw(new core.UnsupportedError.new("Cannot modify an unmodifiable list"));
      }
      setAll(at, iterable) {
        IterableOfE()._check(iterable);
        dart.throw(new core.UnsupportedError.new("Cannot modify an unmodifiable list"));
      }
      add(value) {
        E._check(value);
        dart.throw(new core.UnsupportedError.new("Cannot add to an unmodifiable list"));
      }
      insert(index, element) {
        E._check(element);
        dart.throw(new core.UnsupportedError.new("Cannot add to an unmodifiable list"));
      }
      insertAll(at, iterable) {
        IterableOfE()._check(iterable);
        dart.throw(new core.UnsupportedError.new("Cannot add to an unmodifiable list"));
      }
      addAll(iterable) {
        IterableOfE()._check(iterable);
        dart.throw(new core.UnsupportedError.new("Cannot add to an unmodifiable list"));
      }
      remove(element) {
        dart.throw(new core.UnsupportedError.new("Cannot remove from an unmodifiable list"));
      }
      removeWhere(test) {
        dart.throw(new core.UnsupportedError.new("Cannot remove from an unmodifiable list"));
      }
      retainWhere(test) {
        dart.throw(new core.UnsupportedError.new("Cannot remove from an unmodifiable list"));
      }
      sort(compare) {
        if (compare === void 0) compare = null;
        dart.throw(new core.UnsupportedError.new("Cannot modify an unmodifiable list"));
      }
      shuffle(random) {
        if (random === void 0) random = null;
        dart.throw(new core.UnsupportedError.new("Cannot modify an unmodifiable list"));
      }
      clear() {
        dart.throw(new core.UnsupportedError.new("Cannot clear an unmodifiable list"));
      }
      removeAt(index) {
        dart.throw(new core.UnsupportedError.new("Cannot remove from an unmodifiable list"));
      }
      removeLast() {
        dart.throw(new core.UnsupportedError.new("Cannot remove from an unmodifiable list"));
      }
      setRange(start, end, iterable, skipCount) {
        IterableOfE()._check(iterable);
        if (skipCount === void 0) skipCount = 0;
        dart.throw(new core.UnsupportedError.new("Cannot modify an unmodifiable list"));
      }
      removeRange(start, end) {
        dart.throw(new core.UnsupportedError.new("Cannot remove from an unmodifiable list"));
      }
      replaceRange(start, end, iterable) {
        IterableOfE()._check(iterable);
        dart.throw(new core.UnsupportedError.new("Cannot remove from an unmodifiable list"));
      }
      fillRange(start, end, fillValue) {
        if (fillValue === void 0) fillValue = null;
        E._check(fillValue);
        dart.throw(new core.UnsupportedError.new("Cannot modify an unmodifiable list"));
      }
    }
    (UnmodifiableListMixin.new = function() {
    }).prototype = UnmodifiableListMixin.prototype;
    UnmodifiableListMixin.prototype[dart.isList] = true;
    dart.addTypeTests(UnmodifiableListMixin);
    UnmodifiableListMixin.prototype[_is_UnmodifiableListMixin_default] = true;
    UnmodifiableListMixin[dart.implements] = () => [ListOfE()];
    dart.setMethodSignature(UnmodifiableListMixin, () => ({
      __proto__: dart.getMethods(UnmodifiableListMixin.__proto__),
      _set: dart.fnType(dart.void, [core.int, core.Object]),
      [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
      setAll: dart.fnType(dart.void, [core.int, core.Object]),
      [$setAll]: dart.fnType(dart.void, [core.int, core.Object]),
      add: dart.fnType(dart.void, [core.Object]),
      [$add]: dart.fnType(dart.void, [core.Object]),
      insert: dart.fnType(dart.void, [core.int, core.Object]),
      [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
      insertAll: dart.fnType(dart.void, [core.int, core.Object]),
      [$insertAll]: dart.fnType(dart.void, [core.int, core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      [$addAll]: dart.fnType(dart.void, [core.Object]),
      remove: dart.fnType(core.bool, [core.Object]),
      [$remove]: dart.fnType(core.bool, [core.Object]),
      removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      [$retainWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      sort: dart.fnType(dart.void, [], [dart.fnType(core.int, [E, E])]),
      [$sort]: dart.fnType(dart.void, [], [dart.fnType(core.int, [E, E])]),
      shuffle: dart.fnType(dart.void, [], [math.Random]),
      [$shuffle]: dart.fnType(dart.void, [], [math.Random]),
      clear: dart.fnType(dart.void, []),
      [$clear]: dart.fnType(dart.void, []),
      removeAt: dart.fnType(E, [core.int]),
      [$removeAt]: dart.fnType(E, [core.int]),
      removeLast: dart.fnType(E, []),
      [$removeLast]: dart.fnType(E, []),
      setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
      [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
      removeRange: dart.fnType(dart.void, [core.int, core.int]),
      [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
      replaceRange: dart.fnType(dart.void, [core.int, core.int, core.Object]),
      [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object]),
      fillRange: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
      [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object])
    }));
    dart.setSetterSignature(UnmodifiableListMixin, () => ({
      __proto__: dart.getSetters(UnmodifiableListMixin.__proto__),
      length: core.int,
      [$length]: core.int,
      first: E,
      [$first]: E,
      last: E,
      [$last]: E
    }));
    dart.defineExtensionMethods(UnmodifiableListMixin, [
      '_set',
      'setAll',
      'add',
      'insert',
      'insertAll',
      'addAll',
      'remove',
      'removeWhere',
      'retainWhere',
      'sort',
      'shuffle',
      'clear',
      'removeAt',
      'removeLast',
      'setRange',
      'removeRange',
      'replaceRange',
      'fillRange'
    ]);
    dart.defineExtensionAccessors(UnmodifiableListMixin, ['length', 'first', 'last']);
    return UnmodifiableListMixin;
  });
  _internal.UnmodifiableListMixin = _internal.UnmodifiableListMixin$();
  dart.addTypeTests(_internal.UnmodifiableListMixin, _is_UnmodifiableListMixin_default);
  const _is_UnmodifiableListBase_default = Symbol('_is_UnmodifiableListBase_default');
  _internal.UnmodifiableListBase$ = dart.generic(E => {
    const ListBase_UnmodifiableListMixin$ = class ListBase_UnmodifiableListMixin extends collection.ListBase$(E) {};
    (ListBase_UnmodifiableListMixin$.new = function() {
    }).prototype = ListBase_UnmodifiableListMixin$.prototype;
    dart.applyMixin(ListBase_UnmodifiableListMixin$, _internal.UnmodifiableListMixin$(E));
    class UnmodifiableListBase extends ListBase_UnmodifiableListMixin$ {}
    (UnmodifiableListBase.new = function() {
    }).prototype = UnmodifiableListBase.prototype;
    dart.addTypeTests(UnmodifiableListBase);
    UnmodifiableListBase.prototype[_is_UnmodifiableListBase_default] = true;
    return UnmodifiableListBase;
  });
  _internal.UnmodifiableListBase = _internal.UnmodifiableListBase$();
  dart.addTypeTests(_internal.UnmodifiableListBase, _is_UnmodifiableListBase_default);
  core.num = class num extends core.Object {
    static parse(input, onError) {
      if (onError === void 0) onError = null;
      let result = core.num.tryParse(input);
      if (result != null) return result;
      if (onError == null) dart.throw(new core.FormatException.new(input));
      return onError(input);
    }
    static tryParse(input) {
      let source = input[$trim]();
      let l = core.int.tryParse(source);
      return l != null ? l : core.double.tryParse(source);
    }
    static _returnIntNull(_) {
      return null;
    }
    static _returnDoubleNull(_) {
      return null;
    }
  };
  (core.num.new = function() {
  }).prototype = core.num.prototype;
  core.num.is = function is_num(o) {
    return typeof o == "number";
  };
  core.num.as = function as_num(o) {
    if (typeof o == "number" || o == null) return o;
    return dart.as(o, core.num, false);
  };
  core.num._check = function check_num(o) {
    if (typeof o == "number" || o == null) return o;
    return dart.as(o, core.num, true);
  };
  core.num[dart.implements] = () => [ComparableOfnum()];
  core.int = class int extends core.num {
    static fromEnvironment(name, opts) {
      let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : null;
      dart.throw(new core.UnsupportedError.new("int.fromEnvironment can only be used as a const constructor"));
    }
    static parse(source, opts) {
      let radix = opts && 'radix' in opts ? opts.radix : null;
      let onError = opts && 'onError' in opts ? opts.onError : null;
      return _js_helper.Primitives.parseInt(source, radix, onError);
    }
    static tryParse(source, opts) {
      let radix = opts && 'radix' in opts ? opts.radix : null;
      return _js_helper.Primitives.parseInt(source, radix, dart.fn(core._kNull, dynamicToNull()));
    }
  };
  core.int.is = function is_int(o) {
    return typeof o == "number" && Math.floor(o) == o;
  };
  core.int.as = function as_int(o) {
    if (typeof o == "number" && Math.floor(o) == o || o == null) return o;
    return dart.as(o, core.int, false);
  };
  core.int._check = function check_int(o) {
    if (typeof o == "number" && Math.floor(o) == o || o == null) return o;
    return dart.as(o, core.int, true);
  };
  _internal.CodeUnits = class CodeUnits extends _internal.UnmodifiableListBase$(core.int) {
    get length() {
      return this[_string].length;
    }
    set length(value) {
      super.length = value;
    }
    _get(i) {
      return this[_string][$codeUnitAt](i);
    }
    static stringOf(u) {
      return u[_string];
    }
  };
  (_internal.CodeUnits.new = function(string) {
    this[_string] = string;
  }).prototype = _internal.CodeUnits.prototype;
  dart.addTypeTests(_internal.CodeUnits);
  dart.setMethodSignature(_internal.CodeUnits, () => ({
    __proto__: dart.getMethods(_internal.CodeUnits.__proto__),
    _get: dart.fnType(core.int, [core.int]),
    [$_get]: dart.fnType(core.int, [core.int])
  }));
  dart.setGetterSignature(_internal.CodeUnits, () => ({
    __proto__: dart.getGetters(_internal.CodeUnits.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.setFieldSignature(_internal.CodeUnits, () => ({
    __proto__: dart.getFields(_internal.CodeUnits.__proto__),
    [_string]: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(_internal.CodeUnits, ['_get']);
  dart.defineExtensionAccessors(_internal.CodeUnits, ['length']);
  _internal.ExternalName = class ExternalName extends core.Object {};
  (_internal.ExternalName.new = function(name) {
    this.name = name;
  }).prototype = _internal.ExternalName.prototype;
  dart.addTypeTests(_internal.ExternalName);
  dart.setFieldSignature(_internal.ExternalName, () => ({
    __proto__: dart.getFields(_internal.ExternalName.__proto__),
    name: dart.finalFieldType(core.String)
  }));
  _internal.hexDigitValue = function(char) {
    if (!(dart.notNull(char) >= 0 && dart.notNull(char) <= 65535)) dart.assertFailed();
    let digit0 = 48;
    let a = 97;
    let f = 102;
    let digit = (dart.notNull(char) ^ digit0) >>> 0;
    if (digit <= 9) return digit;
    let letter = (dart.notNull(char) | 32) >>> 0;
    if (a <= letter && letter <= f) return letter - (a - 10);
    return -1;
  };
  _internal.parseHexByte = function(source, index) {
    if (!(dart.notNull(index) + 2 <= source.length)) dart.assertFailed();
    let digit1 = _internal.hexDigitValue(source[$codeUnitAt](index));
    let digit2 = _internal.hexDigitValue(source[$codeUnitAt](dart.notNull(index) + 1));
    return dart.notNull(digit1) * 16 + dart.notNull(digit2) - (dart.notNull(digit2) & 256);
  };
  _internal.extractTypeArguments = function(T, instance, extract) {
    return dart.extractTypeArguments(T, instance, extract);
  };
  _internal.Since = class Since extends core.Object {};
  (_internal.Since.new = function(version) {
    this.version = version;
  }).prototype = _internal.Since.prototype;
  dart.addTypeTests(_internal.Since);
  dart.setFieldSignature(_internal.Since, () => ({
    __proto__: dart.getFields(_internal.Since.__proto__),
    version: dart.finalFieldType(core.String)
  }));
  const _source = Symbol('_source');
  const _add = Symbol('_add');
  const _closeUnchecked = Symbol('_closeUnchecked');
  const _addError = Symbol('_addError');
  const _completeError = Symbol('_completeError');
  const _complete = Symbol('_complete');
  const _sink = Symbol('_sink');
  async.Stream$ = dart.generic(T => {
    let _EmptyStreamOfT = () => (_EmptyStreamOfT = dart.constFn(async._EmptyStream$(T)))();
    let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
    let _StreamControllerOfT = () => (_StreamControllerOfT = dart.constFn(async._StreamController$(T)))();
    let TToNull = () => (TToNull = dart.constFn(dart.fnType(core.Null, [T])))();
    let _IterablePendingEventsOfT = () => (_IterablePendingEventsOfT = dart.constFn(async._IterablePendingEvents$(T)))();
    let VoidTo_IterablePendingEventsOfT = () => (VoidTo_IterablePendingEventsOfT = dart.constFn(dart.fnType(_IterablePendingEventsOfT(), [])))();
    let _GeneratedStreamImplOfT = () => (_GeneratedStreamImplOfT = dart.constFn(async._GeneratedStreamImpl$(T)))();
    let _BoundSinkStreamOfdynamic$T = () => (_BoundSinkStreamOfdynamic$T = dart.constFn(async._BoundSinkStream$(dart.dynamic, T)))();
    let _AsBroadcastStreamOfT = () => (_AsBroadcastStreamOfT = dart.constFn(async._AsBroadcastStream$(T)))();
    let _WhereStreamOfT = () => (_WhereStreamOfT = dart.constFn(async._WhereStream$(T)))();
    let _HandleErrorStreamOfT = () => (_HandleErrorStreamOfT = dart.constFn(async._HandleErrorStream$(T)))();
    let StreamConsumerOfT = () => (StreamConsumerOfT = dart.constFn(async.StreamConsumer$(T)))();
    let TAndTToT = () => (TAndTToT = dart.constFn(dart.fnType(T, [T, T])))();
    let _FutureOfT = () => (_FutureOfT = dart.constFn(async._Future$(T)))();
    let VoidToT = () => (VoidToT = dart.constFn(dart.fnType(T, [])))();
    let JSArrayOfT = () => (JSArrayOfT = dart.constFn(_interceptors.JSArray$(T)))();
    let ListOfT = () => (ListOfT = dart.constFn(core.List$(T)))();
    let _FutureOfListOfT = () => (_FutureOfListOfT = dart.constFn(async._Future$(ListOfT())))();
    let _HashSetOfT = () => (_HashSetOfT = dart.constFn(collection._HashSet$(T)))();
    let SetOfT = () => (SetOfT = dart.constFn(core.Set$(T)))();
    let _FutureOfSetOfT = () => (_FutureOfSetOfT = dart.constFn(async._Future$(SetOfT())))();
    let _TakeStreamOfT = () => (_TakeStreamOfT = dart.constFn(async._TakeStream$(T)))();
    let _TakeWhileStreamOfT = () => (_TakeWhileStreamOfT = dart.constFn(async._TakeWhileStream$(T)))();
    let _SkipStreamOfT = () => (_SkipStreamOfT = dart.constFn(async._SkipStream$(T)))();
    let _SkipWhileStreamOfT = () => (_SkipWhileStreamOfT = dart.constFn(async._SkipWhileStream$(T)))();
    let _DistinctStreamOfT = () => (_DistinctStreamOfT = dart.constFn(async._DistinctStream$(T)))();
    let TTovoid = () => (TTovoid = dart.constFn(dart.fnType(dart.void, [T])))();
    let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
    let _ControllerEventSinkWrapperOfT = () => (_ControllerEventSinkWrapperOfT = dart.constFn(async._ControllerEventSinkWrapper$(T)))();
    let _SyncBroadcastStreamControllerOfT = () => (_SyncBroadcastStreamControllerOfT = dart.constFn(async._SyncBroadcastStreamController$(T)))();
    let _SyncStreamControllerOfT = () => (_SyncStreamControllerOfT = dart.constFn(async._SyncStreamController$(T)))();
    class Stream extends core.Object {
      static empty() {
        return new (_EmptyStreamOfT()).new();
      }
      static fromFuture(future) {
        let controller = _StreamControllerOfT()._check(StreamControllerOfT().new({sync: true}));
        FutureOfNull()._check(future.then(core.Null, dart.fn(value => {
          controller[_add](value);
          controller[_closeUnchecked]();
        }, TToNull()), {onError: dart.fn((error, stackTrace) => {
            controller[_addError](error, core.StackTrace._check(stackTrace));
            controller[_closeUnchecked]();
          }, dynamicAnddynamicToNull())}));
        return controller.stream;
      }
      static fromFutures(futures) {
        let controller = _StreamControllerOfT()._check(StreamControllerOfT().new({sync: true}));
        let count = 0;
        let onValue = value => {
          if (!dart.test(controller.isClosed)) {
            controller[_add](value);
            if (--count === 0) controller[_closeUnchecked]();
          }
        };
        dart.fn(onValue, TToNull());
        let onError = (error, stack) => {
          if (!dart.test(controller.isClosed)) {
            controller[_addError](error, stack);
            if (--count === 0) controller[_closeUnchecked]();
          }
        };
        dart.fn(onError, dynamicAndStackTraceToNull());
        for (let future of futures) {
          count++;
          FutureOfNull()._check(future.then(core.Null, onValue, {onError: onError}));
        }
        if (count === 0) async.scheduleMicrotask(dart.bind(controller, 'close'));
        return controller.stream;
      }
      static fromIterable(elements) {
        return new (_GeneratedStreamImplOfT()).new(dart.fn(() => new (_IterablePendingEventsOfT()).new(elements), VoidTo_IterablePendingEventsOfT()));
      }
      static periodic(period, computation) {
        if (computation === void 0) computation = null;
        let timer = null;
        let computationCount = 0;
        let controller = null;
        let watch = new core.Stopwatch.new();
        function sendEvent() {
          watch.reset();
          let data = null;
          if (computation != null) {
            try {
              data = computation(computationCount++);
            } catch (e$) {
              let e = dart.getThrown(e$);
              let s = dart.stackTrace(e$);
              controller.addError(e, s);
              return;
            }
          }
          controller.add(data);
        }
        dart.fn(sendEvent, VoidTovoid());
        function startPeriodicTimer() {
          if (!(timer == null)) dart.assertFailed();
          timer = async.Timer.periodic(period, dart.fn(timer => {
            sendEvent();
          }, TimerToNull()));
        }
        dart.fn(startPeriodicTimer, VoidTovoid());
        controller = StreamControllerOfT().new({sync: true, onListen: dart.fn(() => {
            watch.start();
            startPeriodicTimer();
          }, VoidToNull()), onPause: dart.fn(() => {
            timer.cancel();
            timer = null;
            watch.stop();
          }, VoidToNull()), onResume: dart.fn(() => {
            if (!(timer == null)) dart.assertFailed();
            let elapsed = watch.elapsed;
            watch.start();
            timer = async.Timer.new(period['-'](elapsed), dart.fn(() => {
              timer = null;
              startPeriodicTimer();
              sendEvent();
            }, VoidToNull()));
          }, VoidToNull()), onCancel: dart.fn(() => {
            if (timer != null) timer.cancel();
            timer = null;
            return async.Future._nullFuture;
          }, VoidTo_FutureOfNull())});
        return controller.stream;
      }
      static eventTransformed(source, mapSink) {
        return new (_BoundSinkStreamOfdynamic$T()).new(source, mapSink);
      }
      static castFrom(S, T, source) {
        return new (_internal.CastStream$(S, T)).new(source);
      }
      get isBroadcast() {
        return false;
      }
      asBroadcastStream(opts) {
        let onListen = opts && 'onListen' in opts ? opts.onListen : null;
        let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
        return new (_AsBroadcastStreamOfT()).new(this, onListen, onCancel);
      }
      where(test) {
        return new (_WhereStreamOfT()).new(this, test);
      }
      map(S, convert) {
        return new (async._MapStream$(T, S)).new(this, convert);
      }
      asyncMap(E, convert) {
        let controller = null;
        let subscription = null;
        const onListen = (function() {
          let add = dart.bind(controller, 'add');
          if (!(async._StreamController$(E).is(controller) || async._BroadcastStreamController.is(controller))) dart.assertFailed();
          let addError = dart.bind(controller, _addError);
          subscription = this.listen(dart.fn(event => {
            let newValue = null;
            try {
              newValue = convert(event);
            } catch (e$) {
              let e = dart.getThrown(e$);
              let s = dart.stackTrace(e$);
              controller.addError(e, s);
              return;
            }
            if (async.Future$(E).is(newValue)) {
              subscription.pause();
              newValue.then(dart.void, add, {onError: addError}).whenComplete(dart.bind(subscription, 'resume'));
            } else {
              controller.add(E._check(newValue));
            }
          }, TToNull()), {onError: addError, onDone: dart.bind(controller, 'close')});
        }).bind(this);
        dart.fn(onListen, VoidTovoid());
        if (dart.test(this.isBroadcast)) {
          controller = async._StreamControllerBase$(E)._check(async.StreamController$(E).broadcast({onListen: onListen, onCancel: dart.fn(() => {
              subscription.cancel();
            }, VoidToNull()), sync: true}));
        } else {
          controller = async._StreamControllerBase$(E)._check(async.StreamController$(E).new({onListen: onListen, onPause: dart.fn(() => {
              subscription.pause();
            }, VoidToNull()), onResume: dart.fn(() => {
              subscription.resume();
            }, VoidToNull()), onCancel: dart.fn(() => subscription.cancel(), VoidToFuture()), sync: true}));
        }
        return controller.stream;
      }
      asyncExpand(E, convert) {
        let controller = null;
        let subscription = null;
        const onListen = (function() {
          if (!(async._StreamController.is(controller) || async._BroadcastStreamController.is(controller))) dart.assertFailed();
          subscription = this.listen(dart.fn(event => {
            let newStream = null;
            try {
              newStream = convert(event);
            } catch (e$) {
              let e = dart.getThrown(e$);
              let s = dart.stackTrace(e$);
              controller.addError(e, s);
              return;
            }
            if (newStream != null) {
              subscription.pause();
              controller.addStream(newStream).whenComplete(dart.bind(subscription, 'resume'));
            }
          }, TToNull()), {onError: dart.bind(controller, _addError), onDone: dart.bind(controller, 'close')});
        }).bind(this);
        dart.fn(onListen, VoidTovoid());
        if (dart.test(this.isBroadcast)) {
          controller = async._StreamControllerBase$(E)._check(async.StreamController$(E).broadcast({onListen: onListen, onCancel: dart.fn(() => {
              subscription.cancel();
            }, VoidToNull()), sync: true}));
        } else {
          controller = async._StreamControllerBase$(E)._check(async.StreamController$(E).new({onListen: onListen, onPause: dart.fn(() => {
              subscription.pause();
            }, VoidToNull()), onResume: dart.fn(() => {
              subscription.resume();
            }, VoidToNull()), onCancel: dart.fn(() => subscription.cancel(), VoidToFuture()), sync: true}));
        }
        return controller.stream;
      }
      handleError(onError, opts) {
        let test = opts && 'test' in opts ? opts.test : null;
        return new (_HandleErrorStreamOfT()).new(this, onError, test);
      }
      expand(S, convert) {
        return new (async._ExpandStream$(T, S)).new(this, convert);
      }
      pipe(streamConsumer) {
        StreamConsumerOfT()._check(streamConsumer);
        return streamConsumer.addStream(this).then(dart.dynamic, dart.fn(_ => streamConsumer.close(), dynamicToFuture()));
      }
      transform(S, streamTransformer) {
        async.StreamTransformer$(T, S)._check(streamTransformer);
        return streamTransformer.bind(this);
      }
      reduce(combine) {
        TAndTToT()._check(combine);
        let result = new (_FutureOfT()).new();
        let seenFirst = false;
        let value = null;
        let subscription = null;
        subscription = this.listen(dart.fn(element => {
          if (seenFirst) {
            async._runUserCode(T, dart.fn(() => combine(value, element), VoidToT()), dart.fn(newValue => {
              value = newValue;
            }, TToNull()), async._cancelAndErrorClosure(subscription, result));
          } else {
            value = element;
            seenFirst = true;
          }
        }, TToNull()), {onError: dart.bind(result, _completeError), onDone: dart.fn(() => {
            if (!seenFirst) {
              try {
                dart.throw(_internal.IterableElementError.noElement());
              } catch (e$) {
                let e = dart.getThrown(e$);
                let s = dart.stackTrace(e$);
                async._completeWithErrorCallback(result, e, s);
              }
            } else {
              result[_complete](value);
            }
          }, VoidToNull()), cancelOnError: true});
        return result;
      }
      fold(S, initialValue, combine) {
        let result = new (async._Future$(S)).new();
        let value = initialValue;
        let subscription = null;
        subscription = this.listen(dart.fn(element => {
          async._runUserCode(S, dart.fn(() => combine(value, element), dart.fnType(S, [])), dart.fn(newValue => {
            value = newValue;
          }, dart.fnType(core.Null, [S])), async._cancelAndErrorClosure(subscription, result));
        }, TToNull()), {onError: dart.bind(result, _completeError), onDone: dart.fn(() => {
            result[_complete](value);
          }, VoidToNull()), cancelOnError: true});
        return result;
      }
      join(separator) {
        if (separator === void 0) separator = "";
        let result = new (_FutureOfString()).new();
        let buffer = new core.StringBuffer.new();
        let subscription = null;
        let first = true;
        subscription = this.listen(dart.fn(element => {
          if (!first) {
            buffer.write(separator);
          }
          first = false;
          try {
            buffer.write(element);
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            async._cancelAndErrorWithReplacement(subscription, result, e, s);
          }
        }, TToNull()), {onError: dart.fn(e => {
            result[_completeError](e);
          }, dynamicToNull()), onDone: dart.fn(() => {
            result[_complete](buffer.toString());
          }, VoidToNull()), cancelOnError: true});
        return result;
      }
      contains(needle) {
        let future = new (_FutureOfbool()).new();
        let subscription = null;
        subscription = this.listen(dart.fn(element => {
          async._runUserCode(core.bool, dart.fn(() => dart.equals(element, needle), VoidTobool()), dart.fn(isMatch => {
            if (dart.test(isMatch)) {
              async._cancelAndValue(subscription, future, true);
            }
          }, boolToNull()), async._cancelAndErrorClosure(subscription, future));
        }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
            future[_complete](false);
          }, VoidToNull()), cancelOnError: true});
        return future;
      }
      forEach(action) {
        let future = new async._Future.new();
        let subscription = null;
        subscription = this.listen(dart.fn(element => {
          async._runUserCode(dart.dynamic, dart.fn(() => action(element), VoidTovoid()), dart.fn(_ => {
          }, dynamicToNull()), async._cancelAndErrorClosure(subscription, future));
        }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
            future[_complete](null);
          }, VoidToNull()), cancelOnError: true});
        return future;
      }
      every(test) {
        let future = new (_FutureOfbool()).new();
        let subscription = null;
        subscription = this.listen(dart.fn(element => {
          async._runUserCode(core.bool, dart.fn(() => test(element), VoidTobool()), dart.fn(isMatch => {
            if (!dart.test(isMatch)) {
              async._cancelAndValue(subscription, future, false);
            }
          }, boolToNull()), async._cancelAndErrorClosure(subscription, future));
        }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
            future[_complete](true);
          }, VoidToNull()), cancelOnError: true});
        return future;
      }
      any(test) {
        let future = new (_FutureOfbool()).new();
        let subscription = null;
        subscription = this.listen(dart.fn(element => {
          async._runUserCode(core.bool, dart.fn(() => test(element), VoidTobool()), dart.fn(isMatch => {
            if (dart.test(isMatch)) {
              async._cancelAndValue(subscription, future, true);
            }
          }, boolToNull()), async._cancelAndErrorClosure(subscription, future));
        }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
            future[_complete](false);
          }, VoidToNull()), cancelOnError: true});
        return future;
      }
      get length() {
        let future = new (_FutureOfint()).new();
        let count = 0;
        this.listen(dart.fn(_ => {
          count++;
        }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
            future[_complete](count);
          }, VoidToNull()), cancelOnError: true});
        return future;
      }
      get isEmpty() {
        let future = new (_FutureOfbool()).new();
        let subscription = null;
        subscription = this.listen(dart.fn(_ => {
          async._cancelAndValue(subscription, future, false);
        }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
            future[_complete](true);
          }, VoidToNull()), cancelOnError: true});
        return future;
      }
      cast(R) {
        return async.Stream.castFrom(T, R, this);
      }
      toList() {
        let result = JSArrayOfT().of([]);
        let future = new (_FutureOfListOfT()).new();
        this.listen(dart.fn(data => {
          result[$add](data);
        }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
            future[_complete](result);
          }, VoidToNull()), cancelOnError: true});
        return future;
      }
      toSet() {
        let result = new (_HashSetOfT()).new();
        let future = new (_FutureOfSetOfT()).new();
        this.listen(dart.fn(data => {
          result.add(data);
        }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
            future[_complete](result);
          }, VoidToNull()), cancelOnError: true});
        return future;
      }
      drain(E, futureValue) {
        if (futureValue === void 0) futureValue = null;
        return async.Future$(E)._check(this.listen(null, {cancelOnError: true}).asFuture(E, futureValue));
      }
      take(count) {
        return new (_TakeStreamOfT()).new(this, count);
      }
      takeWhile(test) {
        return new (_TakeWhileStreamOfT()).new(this, test);
      }
      skip(count) {
        return new (_SkipStreamOfT()).new(this, count);
      }
      skipWhile(test) {
        return new (_SkipWhileStreamOfT()).new(this, test);
      }
      distinct(equals) {
        if (equals === void 0) equals = null;
        return new (_DistinctStreamOfT()).new(this, equals);
      }
      get first() {
        let future = new (_FutureOfT()).new();
        let subscription = null;
        subscription = this.listen(dart.fn(value => {
          async._cancelAndValue(subscription, future, value);
        }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
            try {
              dart.throw(_internal.IterableElementError.noElement());
            } catch (e$) {
              let e = dart.getThrown(e$);
              let s = dart.stackTrace(e$);
              async._completeWithErrorCallback(future, e, s);
            }
          }, VoidToNull()), cancelOnError: true});
        return future;
      }
      get last() {
        let future = new (_FutureOfT()).new();
        let result = null;
        let foundResult = false;
        this.listen(dart.fn(value => {
          foundResult = true;
          result = value;
        }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
            if (foundResult) {
              future[_complete](result);
              return;
            }
            try {
              dart.throw(_internal.IterableElementError.noElement());
            } catch (e$) {
              let e = dart.getThrown(e$);
              let s = dart.stackTrace(e$);
              async._completeWithErrorCallback(future, e, s);
            }
          }, VoidToNull()), cancelOnError: true});
        return future;
      }
      get single() {
        let future = new (_FutureOfT()).new();
        let result = null;
        let foundResult = false;
        let subscription = null;
        subscription = this.listen(dart.fn(value => {
          if (foundResult) {
            try {
              dart.throw(_internal.IterableElementError.tooMany());
            } catch (e$) {
              let e = dart.getThrown(e$);
              let s = dart.stackTrace(e$);
              async._cancelAndErrorWithReplacement(subscription, future, e, s);
            }
            return;
          }
          foundResult = true;
          result = value;
        }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
            if (foundResult) {
              future[_complete](result);
              return;
            }
            try {
              dart.throw(_internal.IterableElementError.noElement());
            } catch (e$) {
              let e = dart.getThrown(e$);
              let s = dart.stackTrace(e$);
              async._completeWithErrorCallback(future, e, s);
            }
          }, VoidToNull()), cancelOnError: true});
        return future;
      }
      firstWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToT()._check(orElse);
        let future = new (_FutureOfT()).new();
        let subscription = null;
        subscription = this.listen(dart.fn(value => {
          async._runUserCode(core.bool, dart.fn(() => test(value), VoidTobool()), dart.fn(isMatch => {
            if (dart.test(isMatch)) {
              async._cancelAndValue(subscription, future, value);
            }
          }, boolToNull()), async._cancelAndErrorClosure(subscription, future));
        }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
            if (orElse != null) {
              async._runUserCode(T, orElse, dart.bind(future, _complete), dart.bind(future, _completeError));
              return;
            }
            try {
              dart.throw(_internal.IterableElementError.noElement());
            } catch (e$) {
              let e = dart.getThrown(e$);
              let s = dart.stackTrace(e$);
              async._completeWithErrorCallback(future, e, s);
            }
          }, VoidToNull()), cancelOnError: true});
        return future;
      }
      lastWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToT()._check(orElse);
        let future = new (_FutureOfT()).new();
        let result = null;
        let foundResult = false;
        let subscription = null;
        subscription = this.listen(dart.fn(value => {
          async._runUserCode(core.bool, dart.fn(() => true === test(value), VoidTobool()), dart.fn(isMatch => {
            if (dart.test(isMatch)) {
              foundResult = true;
              result = value;
            }
          }, boolToNull()), async._cancelAndErrorClosure(subscription, future));
        }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
            if (foundResult) {
              future[_complete](result);
              return;
            }
            if (orElse != null) {
              async._runUserCode(T, orElse, dart.bind(future, _complete), dart.bind(future, _completeError));
              return;
            }
            try {
              dart.throw(_internal.IterableElementError.noElement());
            } catch (e$) {
              let e = dart.getThrown(e$);
              let s = dart.stackTrace(e$);
              async._completeWithErrorCallback(future, e, s);
            }
          }, VoidToNull()), cancelOnError: true});
        return future;
      }
      singleWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToT()._check(orElse);
        let future = new (_FutureOfT()).new();
        let result = null;
        let foundResult = false;
        let subscription = null;
        subscription = this.listen(dart.fn(value => {
          async._runUserCode(core.bool, dart.fn(() => true === test(value), VoidTobool()), dart.fn(isMatch => {
            if (dart.test(isMatch)) {
              if (foundResult) {
                try {
                  dart.throw(_internal.IterableElementError.tooMany());
                } catch (e$) {
                  let e = dart.getThrown(e$);
                  let s = dart.stackTrace(e$);
                  async._cancelAndErrorWithReplacement(subscription, future, e, s);
                }
                return;
              }
              foundResult = true;
              result = value;
            }
          }, boolToNull()), async._cancelAndErrorClosure(subscription, future));
        }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
            if (foundResult) {
              future[_complete](result);
              return;
            }
            try {
              if (orElse != null) {
                async._runUserCode(T, orElse, dart.bind(future, _complete), dart.bind(future, _completeError));
                return;
              }
              dart.throw(_internal.IterableElementError.noElement());
            } catch (e$) {
              let e = dart.getThrown(e$);
              let s = dart.stackTrace(e$);
              async._completeWithErrorCallback(future, e, s);
            }
          }, VoidToNull()), cancelOnError: true});
        return future;
      }
      elementAt(index) {
        core.ArgumentError.checkNotNull(index, "index");
        core.RangeError.checkNotNegative(index, "index");
        let future = new (_FutureOfT()).new();
        let subscription = null;
        let elementIndex = 0;
        subscription = this.listen(dart.fn(value => {
          if (index === elementIndex) {
            async._cancelAndValue(subscription, future, value);
            return;
          }
          elementIndex = elementIndex + 1;
        }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
            future[_completeError](core.RangeError.index(index, this, "index", null, elementIndex));
          }, VoidToNull()), cancelOnError: true});
        return future;
      }
      timeout(timeLimit, opts) {
        let onTimeout = opts && 'onTimeout' in opts ? opts.onTimeout : null;
        let controller = null;
        let subscription = null;
        let timer = null;
        let zone = null;
        let timeout = null;
        function onData(event) {
          timer.cancel();
          controller.add(event);
          timer = zone.createTimer(timeLimit, timeout);
        }
        dart.fn(onData, TTovoid());
        function onError(error, stackTrace) {
          timer.cancel();
          if (!(async._StreamController.is(controller) || async._BroadcastStreamController.is(controller))) dart.assertFailed();
          controller[_addError](error, stackTrace);
          timer = zone.createTimer(timeLimit, timeout);
        }
        dart.fn(onError, dynamicAndStackTraceTovoid());
        function onDone() {
          timer.cancel();
          controller.close();
        }
        dart.fn(onDone, VoidTovoid());
        const onListen = (function() {
          zone = async.Zone.current;
          if (onTimeout == null) {
            timeout = dart.fn(() => {
              controller.addError(new async.TimeoutException.new("No stream event", timeLimit), null);
            }, VoidToNull());
          } else {
            let registeredOnTimeout = zone.registerUnaryCallback(dart.dynamic, EventSinkOfT(), onTimeout);
            let wrapper = new (_ControllerEventSinkWrapperOfT()).new(null);
            timeout = dart.fn(() => {
              wrapper[_sink] = controller;
              zone.runUnaryGuarded(_ControllerEventSinkWrapperOfT(), registeredOnTimeout, wrapper);
              wrapper[_sink] = null;
            }, VoidToNull());
          }
          subscription = this.listen(onData, {onError: onError, onDone: onDone});
          timer = zone.createTimer(timeLimit, timeout);
        }).bind(this);
        dart.fn(onListen, VoidTovoid());
        function onCancel() {
          timer.cancel();
          let result = subscription.cancel();
          subscription = null;
          return result;
        }
        dart.fn(onCancel, VoidToFuture());
        controller = dart.test(this.isBroadcast) ? new (_SyncBroadcastStreamControllerOfT()).new(onListen, onCancel) : new (_SyncStreamControllerOfT()).new(onListen, dart.fn(() => {
          timer.cancel();
          subscription.pause();
        }, VoidToNull()), dart.fn(() => {
          subscription.resume();
          timer = zone.createTimer(timeLimit, timeout);
        }, VoidToNull()), onCancel);
        return controller.stream;
      }
    }
    (Stream.new = function() {
    }).prototype = Stream.prototype;
    (Stream._internal = function() {
    }).prototype = Stream.prototype;
    dart.addTypeTests(Stream);
    Stream.prototype[dart.isStream] = true;
    dart.setMethodSignature(Stream, () => ({
      __proto__: dart.getMethods(Stream.__proto__),
      asBroadcastStream: dart.fnType(async.Stream$(T), [], {onListen: dart.fnType(dart.void, [async.StreamSubscription$(T)]), onCancel: dart.fnType(dart.void, [async.StreamSubscription$(T)])}),
      where: dart.fnType(async.Stream$(T), [dart.fnType(core.bool, [T])]),
      map: dart.gFnType(S => [async.Stream$(S), [dart.fnType(S, [T])]]),
      asyncMap: dart.gFnType(E => [async.Stream$(E), [dart.fnType(async.FutureOr$(E), [T])]]),
      asyncExpand: dart.gFnType(E => [async.Stream$(E), [dart.fnType(async.Stream$(E), [T])]]),
      handleError: dart.fnType(async.Stream$(T), [core.Function], {test: dart.fnType(core.bool, [dart.dynamic])}),
      expand: dart.gFnType(S => [async.Stream$(S), [dart.fnType(core.Iterable$(S), [T])]]),
      pipe: dart.fnType(async.Future, [core.Object]),
      transform: dart.gFnType(S => [async.Stream$(S), [core.Object]]),
      reduce: dart.fnType(async.Future$(T), [core.Object]),
      fold: dart.gFnType(S => [async.Future$(S), [S, dart.fnType(S, [S, T])]]),
      join: dart.fnType(async.Future$(core.String), [], [core.String]),
      contains: dart.fnType(async.Future$(core.bool), [core.Object]),
      forEach: dart.fnType(async.Future, [dart.fnType(dart.void, [T])]),
      every: dart.fnType(async.Future$(core.bool), [dart.fnType(core.bool, [T])]),
      any: dart.fnType(async.Future$(core.bool), [dart.fnType(core.bool, [T])]),
      cast: dart.gFnType(R => [async.Stream$(R), []]),
      toList: dart.fnType(async.Future$(core.List$(T)), []),
      toSet: dart.fnType(async.Future$(core.Set$(T)), []),
      drain: dart.gFnType(E => [async.Future$(E), [], [E]]),
      take: dart.fnType(async.Stream$(T), [core.int]),
      takeWhile: dart.fnType(async.Stream$(T), [dart.fnType(core.bool, [T])]),
      skip: dart.fnType(async.Stream$(T), [core.int]),
      skipWhile: dart.fnType(async.Stream$(T), [dart.fnType(core.bool, [T])]),
      distinct: dart.fnType(async.Stream$(T), [], [dart.fnType(core.bool, [T, T])]),
      firstWhere: dart.fnType(async.Future$(T), [dart.fnType(core.bool, [T])], {orElse: core.Object}),
      lastWhere: dart.fnType(async.Future$(T), [dart.fnType(core.bool, [T])], {orElse: core.Object}),
      singleWhere: dart.fnType(async.Future$(T), [dart.fnType(core.bool, [T])], {orElse: core.Object}),
      elementAt: dart.fnType(async.Future$(T), [core.int]),
      timeout: dart.fnType(async.Stream$(T), [core.Duration], {onTimeout: dart.fnType(dart.void, [async.EventSink$(T)])})
    }));
    dart.setGetterSignature(Stream, () => ({
      __proto__: dart.getGetters(Stream.__proto__),
      isBroadcast: core.bool,
      length: async.Future$(core.int),
      isEmpty: async.Future$(core.bool),
      first: async.Future$(T),
      last: async.Future$(T),
      single: async.Future$(T)
    }));
    return Stream;
  });
  async.Stream = async.Stream$();
  dart.addTypeTests(async.Stream, dart.isStream);
  const _is_CastStream_default = Symbol('_is_CastStream_default');
  _internal.CastStream$ = dart.generic((S, T) => {
    let CastStreamSubscriptionOfS$T = () => (CastStreamSubscriptionOfS$T = dart.constFn(_internal.CastStreamSubscription$(S, T)))();
    let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
    class CastStream extends async.Stream$(T) {
      get isBroadcast() {
        return this[_source].isBroadcast;
      }
      listen(onData, opts) {
        let onError = opts && 'onError' in opts ? opts.onError : null;
        let onDone = opts && 'onDone' in opts ? opts.onDone : null;
        let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
        let _ = new (CastStreamSubscriptionOfS$T()).new(this[_source].listen(null, {onDone: onDone, cancelOnError: cancelOnError}));
        _.onData(onData);
        _.onError(onError);
        return _;
      }
      cast(R) {
        return new (_internal.CastStream$(S, R)).new(this[_source]);
      }
    }
    (CastStream.new = function(source) {
      this[_source] = source;
      CastStream.__proto__.new.call(this);
    }).prototype = CastStream.prototype;
    dart.addTypeTests(CastStream);
    CastStream.prototype[_is_CastStream_default] = true;
    dart.setMethodSignature(CastStream, () => ({
      __proto__: dart.getMethods(CastStream.__proto__),
      listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
      cast: dart.gFnType(R => [async.Stream$(R), []])
    }));
    dart.setGetterSignature(CastStream, () => ({
      __proto__: dart.getGetters(CastStream.__proto__),
      isBroadcast: core.bool
    }));
    dart.setFieldSignature(CastStream, () => ({
      __proto__: dart.getFields(CastStream.__proto__),
      [_source]: dart.finalFieldType(StreamOfS())
    }));
    return CastStream;
  });
  _internal.CastStream = _internal.CastStream$();
  dart.addTypeTests(_internal.CastStream, _is_CastStream_default);
  const _zone = Symbol('_zone');
  const _handleData = Symbol('_handleData');
  const _handleError = Symbol('_handleError');
  const _onData = Symbol('_onData');
  const _is_CastStreamSubscription_default = Symbol('_is_CastStreamSubscription_default');
  _internal.CastStreamSubscription$ = dart.generic((S, T) => {
    let StreamSubscriptionOfS = () => (StreamSubscriptionOfS = dart.constFn(async.StreamSubscription$(S)))();
    let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
    let TTovoid = () => (TTovoid = dart.constFn(dart.fnType(dart.void, [T])))();
    class CastStreamSubscription extends core.Object {
      cancel() {
        return this[_source].cancel();
      }
      onData(handleData) {
        this[_handleData] = handleData == null ? null : this[_zone].registerUnaryCallback(dart.dynamic, T, handleData);
      }
      onError(handleError) {
        this[_source].onError(handleError);
        if (handleError == null) {
          this[_handleError] = null;
        } else if (NullAndNullTodynamic().is(handleError)) {
          this[_handleError] = this[_zone].registerBinaryCallback(dart.dynamic, core.Object, core.StackTrace, ObjectAndStackTraceTodynamic()._check(handleError));
        } else {
          this[_handleError] = this[_zone].registerUnaryCallback(dart.dynamic, core.Object, ObjectTodynamic()._check(handleError));
        }
      }
      onDone(handleDone) {
        this[_source].onDone(handleDone);
      }
      [_onData](data) {
        S._check(data);
        if (this[_handleData] == null) return;
        let targetData = null;
        try {
          targetData = T.as(data);
        } catch (e) {
          let error = dart.getThrown(e);
          let stack = dart.stackTrace(e);
          if (this[_handleError] == null) {
            this[_zone].handleUncaughtError(error, stack);
          } else if (NullAndNullTodynamic().is(this[_handleError])) {
            this[_zone].runBinaryGuarded(dart.dynamic, core.StackTrace, dynamicAndStackTraceTovoid()._check(this[_handleError]), error, stack);
          } else {
            this[_zone].runUnaryGuarded(dart.dynamic, dynamicTovoid()._check(this[_handleError]), error);
          }
          return;
        }
        this[_zone].runUnaryGuarded(T, this[_handleData], targetData);
      }
      pause(resumeSignal) {
        if (resumeSignal === void 0) resumeSignal = null;
        this[_source].pause(resumeSignal);
      }
      resume() {
        this[_source].resume();
      }
      get isPaused() {
        return this[_source].isPaused;
      }
      asFuture(E, futureValue) {
        if (futureValue === void 0) futureValue = null;
        return async.Future$(E)._check(this[_source].asFuture(E, futureValue));
      }
    }
    (CastStreamSubscription.new = function(source) {
      this[_zone] = async.Zone.current;
      this[_handleData] = null;
      this[_handleError] = null;
      this[_source] = source;
      this[_source].onData(dart.bind(this, _onData));
    }).prototype = CastStreamSubscription.prototype;
    CastStreamSubscription.prototype[dart.isStreamSubscription] = true;
    dart.addTypeTests(CastStreamSubscription);
    CastStreamSubscription.prototype[_is_CastStreamSubscription_default] = true;
    CastStreamSubscription[dart.implements] = () => [StreamSubscriptionOfT()];
    dart.setMethodSignature(CastStreamSubscription, () => ({
      __proto__: dart.getMethods(CastStreamSubscription.__proto__),
      cancel: dart.fnType(async.Future, []),
      onData: dart.fnType(dart.void, [dart.fnType(dart.void, [T])]),
      onError: dart.fnType(dart.void, [core.Function]),
      onDone: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
      [_onData]: dart.fnType(dart.void, [core.Object]),
      pause: dart.fnType(dart.void, [], [async.Future]),
      resume: dart.fnType(dart.void, []),
      asFuture: dart.gFnType(E => [async.Future$(E), [], [E]])
    }));
    dart.setGetterSignature(CastStreamSubscription, () => ({
      __proto__: dart.getGetters(CastStreamSubscription.__proto__),
      isPaused: core.bool
    }));
    dart.setFieldSignature(CastStreamSubscription, () => ({
      __proto__: dart.getFields(CastStreamSubscription.__proto__),
      [_source]: dart.finalFieldType(StreamSubscriptionOfS()),
      [_zone]: dart.finalFieldType(async.Zone),
      [_handleData]: dart.fieldType(TTovoid()),
      [_handleError]: dart.fieldType(core.Function)
    }));
    return CastStreamSubscription;
  });
  _internal.CastStreamSubscription = _internal.CastStreamSubscription$();
  dart.addTypeTests(_internal.CastStreamSubscription, _is_CastStreamSubscription_default);
  const _is_StreamTransformerBase_default = Symbol('_is_StreamTransformerBase_default');
  async.StreamTransformerBase$ = dart.generic((S, T) => {
    let StreamTransformerOfS$T = () => (StreamTransformerOfS$T = dart.constFn(async.StreamTransformer$(S, T)))();
    class StreamTransformerBase extends core.Object {
      cast(RS, RT) {
        return async.StreamTransformer.castFrom(S, T, RS, RT, this);
      }
    }
    (StreamTransformerBase.new = function() {
    }).prototype = StreamTransformerBase.prototype;
    dart.addTypeTests(StreamTransformerBase);
    StreamTransformerBase.prototype[_is_StreamTransformerBase_default] = true;
    StreamTransformerBase[dart.implements] = () => [StreamTransformerOfS$T()];
    dart.setMethodSignature(StreamTransformerBase, () => ({
      __proto__: dart.getMethods(StreamTransformerBase.__proto__),
      cast: dart.gFnType((RS, RT) => [async.StreamTransformer$(RS, RT), []])
    }));
    return StreamTransformerBase;
  });
  async.StreamTransformerBase = async.StreamTransformerBase$();
  dart.addTypeTests(async.StreamTransformerBase, _is_StreamTransformerBase_default);
  const _is_CastStreamTransformer_default = Symbol('_is_CastStreamTransformer_default');
  _internal.CastStreamTransformer$ = dart.generic((SS, ST, TS, TT) => {
    let StreamOfSS = () => (StreamOfSS = dart.constFn(async.Stream$(SS)))();
    let StreamTransformerOfSS$ST = () => (StreamTransformerOfSS$ST = dart.constFn(async.StreamTransformer$(SS, ST)))();
    let StreamOfTS = () => (StreamOfTS = dart.constFn(async.Stream$(TS)))();
    let StreamOfTT = () => (StreamOfTT = dart.constFn(async.Stream$(TT)))();
    class CastStreamTransformer extends async.StreamTransformerBase$(TS, TT) {
      cast(RS, RT) {
        return new (_internal.CastStreamTransformer$(SS, ST, RS, RT)).new(this[_source]);
      }
      bind(stream) {
        StreamOfTS()._check(stream);
        return StreamOfTT()._check(this[_source].bind(StreamOfSS()._check(stream.cast(SS))).cast(TT));
      }
    }
    (CastStreamTransformer.new = function(source) {
      this[_source] = source;
      CastStreamTransformer.__proto__.new.call(this);
    }).prototype = CastStreamTransformer.prototype;
    dart.addTypeTests(CastStreamTransformer);
    CastStreamTransformer.prototype[_is_CastStreamTransformer_default] = true;
    dart.setMethodSignature(CastStreamTransformer, () => ({
      __proto__: dart.getMethods(CastStreamTransformer.__proto__),
      cast: dart.gFnType((RS, RT) => [async.StreamTransformer$(RS, RT), []]),
      bind: dart.fnType(async.Stream$(TT), [core.Object])
    }));
    dart.setFieldSignature(CastStreamTransformer, () => ({
      __proto__: dart.getFields(CastStreamTransformer.__proto__),
      [_source]: dart.finalFieldType(StreamTransformerOfSS$ST())
    }));
    return CastStreamTransformer;
  });
  _internal.CastStreamTransformer = _internal.CastStreamTransformer$();
  dart.addTypeTests(_internal.CastStreamTransformer, _is_CastStreamTransformer_default);
  const _is_Converter_default = Symbol('_is_Converter_default');
  convert.Converter$ = dart.generic((S, T) => {
    let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
    let SinkOfT = () => (SinkOfT = dart.constFn(core.Sink$(T)))();
    let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
    class Converter extends async.StreamTransformerBase$(S, T) {
      static castFrom(SS, ST, TS, TT, source) {
        return new (_internal.CastConverter$(SS, ST, TS, TT)).new(source);
      }
      fuse(TT, other) {
        convert.Converter$(T, TT)._check(other);
        return new (convert._FusedConverter$(S, T, TT)).new(this, other);
      }
      startChunkedConversion(sink) {
        SinkOfT()._check(sink);
        dart.throw(new core.UnsupportedError.new("This converter does not support chunked conversions: " + dart.str(this)));
      }
      bind(stream) {
        StreamOfS()._check(stream);
        return StreamOfT().eventTransformed(stream, dart.fn(sink => new convert._ConverterStreamEventSink.new(this, sink), EventSinkTo_ConverterStreamEventSink()));
      }
      cast(RS, RT) {
        return convert.Converter.castFrom(S, T, RS, RT, this);
      }
    }
    (Converter.new = function() {
      Converter.__proto__.new.call(this);
    }).prototype = Converter.prototype;
    dart.addTypeTests(Converter);
    Converter.prototype[_is_Converter_default] = true;
    dart.setMethodSignature(Converter, () => ({
      __proto__: dart.getMethods(Converter.__proto__),
      fuse: dart.gFnType(TT => [convert.Converter$(S, TT), [core.Object]]),
      startChunkedConversion: dart.fnType(core.Sink$(S), [core.Object]),
      bind: dart.fnType(async.Stream$(T), [core.Object]),
      cast: dart.gFnType((RS, RT) => [convert.Converter$(RS, RT), []])
    }));
    return Converter;
  });
  convert.Converter = convert.Converter$();
  dart.addTypeTests(convert.Converter, _is_Converter_default);
  const _is_CastConverter_default = Symbol('_is_CastConverter_default');
  _internal.CastConverter$ = dart.generic((SS, ST, TS, TT) => {
    let StreamOfSS = () => (StreamOfSS = dart.constFn(async.Stream$(SS)))();
    let ConverterOfSS$ST = () => (ConverterOfSS$ST = dart.constFn(convert.Converter$(SS, ST)))();
    let StreamOfTS = () => (StreamOfTS = dart.constFn(async.Stream$(TS)))();
    let StreamOfTT = () => (StreamOfTT = dart.constFn(async.Stream$(TT)))();
    class CastConverter extends convert.Converter$(TS, TT) {
      convert(input) {
        TS._check(input);
        return TT.as(this[_source].convert(SS.as(input)));
      }
      bind(stream) {
        StreamOfTS()._check(stream);
        return StreamOfTT()._check(this[_source].bind(StreamOfSS()._check(stream.cast(SS))).cast(TT));
      }
      cast(RS, RT) {
        return new (_internal.CastConverter$(SS, ST, RS, RT)).new(this[_source]);
      }
    }
    (CastConverter.new = function(source) {
      this[_source] = source;
      CastConverter.__proto__.new.call(this);
    }).prototype = CastConverter.prototype;
    dart.addTypeTests(CastConverter);
    CastConverter.prototype[_is_CastConverter_default] = true;
    dart.setMethodSignature(CastConverter, () => ({
      __proto__: dart.getMethods(CastConverter.__proto__),
      convert: dart.fnType(TT, [core.Object]),
      bind: dart.fnType(async.Stream$(TT), [core.Object]),
      cast: dart.gFnType((RS, RT) => [convert.Converter$(RS, RT), []])
    }));
    dart.setFieldSignature(CastConverter, () => ({
      __proto__: dart.getFields(CastConverter.__proto__),
      [_source]: dart.finalFieldType(ConverterOfSS$ST())
    }));
    return CastConverter;
  });
  _internal.CastConverter = _internal.CastConverter$();
  dart.addTypeTests(_internal.CastConverter, _is_CastConverter_default);
  core.Iterable$ = dart.generic(E => {
    let EmptyIterableOfE = () => (EmptyIterableOfE = dart.constFn(_internal.EmptyIterable$(E)))();
    let _GeneratorIterableOfE = () => (_GeneratorIterableOfE = dart.constFn(core._GeneratorIterable$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let EfficientLengthIterableOfE = () => (EfficientLengthIterableOfE = dart.constFn(_internal.EfficientLengthIterable$(E)))();
    let FollowedByIterableOfE = () => (FollowedByIterableOfE = dart.constFn(_internal.FollowedByIterable$(E)))();
    let WhereIterableOfE = () => (WhereIterableOfE = dart.constFn(_internal.WhereIterable$(E)))();
    let EAndEToE = () => (EAndEToE = dart.constFn(dart.fnType(E, [E, E])))();
    let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
    let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
    let TakeIterableOfE = () => (TakeIterableOfE = dart.constFn(_internal.TakeIterable$(E)))();
    let TakeWhileIterableOfE = () => (TakeWhileIterableOfE = dart.constFn(_internal.TakeWhileIterable$(E)))();
    let SkipIterableOfE = () => (SkipIterableOfE = dart.constFn(_internal.SkipIterable$(E)))();
    let SkipWhileIterableOfE = () => (SkipWhileIterableOfE = dart.constFn(_internal.SkipWhileIterable$(E)))();
    let VoidToE = () => (VoidToE = dart.constFn(dart.fnType(E, [])))();
    class Iterable extends core.Object {
      static generate(count, generator) {
        if (generator === void 0) generator = null;
        if (dart.notNull(count) <= 0) return new (EmptyIterableOfE()).new();
        return new (_GeneratorIterableOfE()).new(count, generator);
      }
      static empty() {
        return new (EmptyIterableOfE()).new();
      }
      static castFrom(S, T, source) {
        return _internal.CastIterable$(S, T).new(source);
      }
      [Symbol.iterator]() {
        return new dart.JsIterator(this[$iterator]);
      }
      cast(R) {
        return core.Iterable.castFrom(E, R, this);
      }
      followedBy(other) {
        IterableOfE()._check(other);
        if (EfficientLengthIterableOfE().is(this)) {
          return FollowedByIterableOfE().firstEfficient(EfficientLengthIterableOfE()._check(this), other);
        }
        return new (FollowedByIterableOfE()).new(this, other);
      }
      map(T, f) {
        return _internal.MappedIterable$(E, T).new(this, f);
      }
      where(test) {
        return new (WhereIterableOfE()).new(this, test);
      }
      whereType(T) {
        return new (_internal.WhereTypeIterable$(T)).new(this);
      }
      expand(T, f) {
        return new (_internal.ExpandIterable$(E, T)).new(this, f);
      }
      contains(element) {
        for (let e of this) {
          if (dart.equals(e, element)) return true;
        }
        return false;
      }
      forEach(f) {
        for (let element of this)
          f(element);
      }
      reduce(combine) {
        EAndEToE()._check(combine);
        let iterator = this[$iterator];
        if (!dart.test(iterator.moveNext())) {
          dart.throw(_internal.IterableElementError.noElement());
        }
        let value = iterator.current;
        while (dart.test(iterator.moveNext())) {
          value = combine(value, iterator.current);
        }
        return value;
      }
      fold(T, initialValue, combine) {
        let value = initialValue;
        for (let element of this)
          value = combine(value, element);
        return value;
      }
      every(test) {
        for (let element of this) {
          if (!dart.test(test(element))) return false;
        }
        return true;
      }
      join(separator) {
        if (separator === void 0) separator = "";
        let iterator = this[$iterator];
        if (!dart.test(iterator.moveNext())) return "";
        let buffer = new core.StringBuffer.new();
        if (separator == null || separator === "") {
          do {
            buffer.write(dart.str(iterator.current));
          } while (dart.test(iterator.moveNext()));
        } else {
          buffer.write(dart.str(iterator.current));
          while (dart.test(iterator.moveNext())) {
            buffer.write(separator);
            buffer.write(dart.str(iterator.current));
          }
        }
        return buffer.toString();
      }
      any(test) {
        for (let element of this) {
          if (dart.test(test(element))) return true;
        }
        return false;
      }
      toList(opts) {
        let growable = opts && 'growable' in opts ? opts.growable : true;
        return ListOfE().from(this, {growable: growable});
      }
      toSet() {
        return SetOfE().from(this);
      }
      get length() {
        if (!!_internal.EfficientLengthIterable.is(this)) dart.assertFailed();
        let count = 0;
        let it = this[$iterator];
        while (dart.test(it.moveNext())) {
          count++;
        }
        return count;
      }
      get isEmpty() {
        return !dart.test(this[$iterator].moveNext());
      }
      get isNotEmpty() {
        return !dart.test(this[$isEmpty]);
      }
      take(count) {
        return TakeIterableOfE().new(this, count);
      }
      takeWhile(test) {
        return new (TakeWhileIterableOfE()).new(this, test);
      }
      skip(count) {
        return SkipIterableOfE().new(this, count);
      }
      skipWhile(test) {
        return new (SkipWhileIterableOfE()).new(this, test);
      }
      get first() {
        let it = this[$iterator];
        if (!dart.test(it.moveNext())) {
          dart.throw(_internal.IterableElementError.noElement());
        }
        return it.current;
      }
      get last() {
        let it = this[$iterator];
        if (!dart.test(it.moveNext())) {
          dart.throw(_internal.IterableElementError.noElement());
        }
        let result = null;
        do {
          result = it.current;
        } while (dart.test(it.moveNext()));
        return result;
      }
      get single() {
        let it = this[$iterator];
        if (!dart.test(it.moveNext())) dart.throw(_internal.IterableElementError.noElement());
        let result = it.current;
        if (dart.test(it.moveNext())) dart.throw(_internal.IterableElementError.tooMany());
        return result;
      }
      firstWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        for (let element of this) {
          if (dart.test(test(element))) return element;
        }
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      lastWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        let result = null;
        let foundMatching = false;
        for (let element of this) {
          if (dart.test(test(element))) {
            result = element;
            foundMatching = true;
          }
        }
        if (foundMatching) return result;
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      singleWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        let result = null;
        let foundMatching = false;
        for (let element of this) {
          if (dart.test(test(element))) {
            if (foundMatching) {
              dart.throw(_internal.IterableElementError.tooMany());
            }
            result = element;
            foundMatching = true;
          }
        }
        if (foundMatching) return result;
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      elementAt(index) {
        core.ArgumentError.checkNotNull(index, "index");
        core.RangeError.checkNotNegative(index, "index");
        let elementIndex = 0;
        for (let element of this) {
          if (index === elementIndex) return element;
          elementIndex++;
        }
        dart.throw(core.RangeError.index(index, this, "index", null, elementIndex));
      }
      toString() {
        return collection.IterableBase.iterableToShortString(this, "(", ")");
      }
    }
    (Iterable.new = function() {
    }).prototype = Iterable.prototype;
    dart.addTypeTests(Iterable);
    Iterable.prototype[dart.isIterable] = true;
    dart.setMethodSignature(Iterable, () => ({
      __proto__: dart.getMethods(Iterable.__proto__),
      cast: dart.gFnType(R => [core.Iterable$(R), []]),
      [$cast]: dart.gFnType(R => [core.Iterable$(R), []]),
      followedBy: dart.fnType(core.Iterable$(E), [core.Object]),
      [$followedBy]: dart.fnType(core.Iterable$(E), [core.Object]),
      map: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
      [$map]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
      where: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$where]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      whereType: dart.gFnType(T => [core.Iterable$(T), []]),
      [$whereType]: dart.gFnType(T => [core.Iterable$(T), []]),
      expand: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
      [$expand]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
      contains: dart.fnType(core.bool, [core.Object]),
      [$contains]: dart.fnType(core.bool, [core.Object]),
      forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
      [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
      reduce: dart.fnType(E, [core.Object]),
      [$reduce]: dart.fnType(E, [core.Object]),
      fold: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
      [$fold]: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
      every: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      [$every]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      join: dart.fnType(core.String, [], [core.String]),
      [$join]: dart.fnType(core.String, [], [core.String]),
      any: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      [$any]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      toList: dart.fnType(core.List$(E), [], {growable: core.bool}),
      [$toList]: dart.fnType(core.List$(E), [], {growable: core.bool}),
      toSet: dart.fnType(core.Set$(E), []),
      [$toSet]: dart.fnType(core.Set$(E), []),
      take: dart.fnType(core.Iterable$(E), [core.int]),
      [$take]: dart.fnType(core.Iterable$(E), [core.int]),
      takeWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$takeWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      skip: dart.fnType(core.Iterable$(E), [core.int]),
      [$skip]: dart.fnType(core.Iterable$(E), [core.int]),
      skipWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$skipWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      firstWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$firstWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      lastWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$lastWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      singleWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$singleWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      elementAt: dart.fnType(E, [core.int]),
      [$elementAt]: dart.fnType(E, [core.int]),
      toString: dart.fnType(core.String, []),
      [$toString]: dart.fnType(core.String, [])
    }));
    dart.setGetterSignature(Iterable, () => ({
      __proto__: dart.getGetters(Iterable.__proto__),
      length: core.int,
      [$length]: core.int,
      isEmpty: core.bool,
      [$isEmpty]: core.bool,
      isNotEmpty: core.bool,
      [$isNotEmpty]: core.bool,
      first: E,
      [$first]: E,
      last: E,
      [$last]: E,
      single: E,
      [$single]: E
    }));
    dart.defineExtensionMethods(Iterable, [
      'cast',
      'followedBy',
      'map',
      'where',
      'whereType',
      'expand',
      'contains',
      'forEach',
      'reduce',
      'fold',
      'every',
      'join',
      'any',
      'toList',
      'toSet',
      'take',
      'takeWhile',
      'skip',
      'skipWhile',
      'firstWhere',
      'lastWhere',
      'singleWhere',
      'elementAt',
      'toString'
    ]);
    dart.defineExtensionAccessors(Iterable, [
      'length',
      'isEmpty',
      'isNotEmpty',
      'first',
      'last',
      'single'
    ]);
    return Iterable;
  });
  core.Iterable = core.Iterable$();
  dart.addTypeTests(core.Iterable, dart.isIterable);
  const _is__CastIterableBase_default = Symbol('_is__CastIterableBase_default');
  _internal._CastIterableBase$ = dart.generic((S, T) => {
    let CastIteratorOfS$T = () => (CastIteratorOfS$T = dart.constFn(_internal.CastIterator$(S, T)))();
    let CastIterableOfS$T = () => (CastIterableOfS$T = dart.constFn(_internal.CastIterable$(S, T)))();
    let STobool = () => (STobool = dart.constFn(dart.fnType(core.bool, [S])))();
    let VoidToS = () => (VoidToS = dart.constFn(dart.fnType(S, [])))();
    let VoidToT = () => (VoidToT = dart.constFn(dart.fnType(T, [])))();
    class _CastIterableBase extends core.Iterable$(T) {
      get iterator() {
        return new (CastIteratorOfS$T()).new(this[_source][$iterator]);
      }
      get length() {
        return this[_source][$length];
      }
      get isEmpty() {
        return this[_source][$isEmpty];
      }
      get isNotEmpty() {
        return this[_source][$isNotEmpty];
      }
      skip(count) {
        return CastIterableOfS$T().new(this[_source][$skip](count));
      }
      take(count) {
        return CastIterableOfS$T().new(this[_source][$take](count));
      }
      elementAt(index) {
        return T.as(this[_source][$elementAt](index));
      }
      get first() {
        return T.as(this[_source][$first]);
      }
      get last() {
        return T.as(this[_source][$last]);
      }
      get single() {
        return T.as(this[_source][$single]);
      }
      contains(other) {
        return this[_source][$contains](other);
      }
      lastWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToT()._check(orElse);
        return T.as(this[_source][$lastWhere](dart.fn(element => test(T.as(element)), STobool()), {orElse: orElse == null ? null : dart.fn(() => S.as(orElse()), VoidToS())}));
      }
      toString() {
        return dart.toString(this[_source]);
      }
    }
    (_CastIterableBase.new = function() {
      _CastIterableBase.__proto__.new.call(this);
    }).prototype = _CastIterableBase.prototype;
    dart.addTypeTests(_CastIterableBase);
    _CastIterableBase.prototype[_is__CastIterableBase_default] = true;
    dart.setMethodSignature(_CastIterableBase, () => ({
      __proto__: dart.getMethods(_CastIterableBase.__proto__),
      skip: dart.fnType(core.Iterable$(T), [core.int]),
      [$skip]: dart.fnType(core.Iterable$(T), [core.int]),
      take: dart.fnType(core.Iterable$(T), [core.int]),
      [$take]: dart.fnType(core.Iterable$(T), [core.int]),
      elementAt: dart.fnType(T, [core.int]),
      [$elementAt]: dart.fnType(T, [core.int]),
      contains: dart.fnType(core.bool, [core.Object]),
      [$contains]: dart.fnType(core.bool, [core.Object]),
      lastWhere: dart.fnType(T, [dart.fnType(core.bool, [T])], {orElse: core.Object}),
      [$lastWhere]: dart.fnType(T, [dart.fnType(core.bool, [T])], {orElse: core.Object}),
      toString: dart.fnType(core.String, []),
      [$toString]: dart.fnType(core.String, [])
    }));
    dart.setGetterSignature(_CastIterableBase, () => ({
      __proto__: dart.getGetters(_CastIterableBase.__proto__),
      iterator: core.Iterator$(T),
      [$iterator]: core.Iterator$(T),
      length: core.int,
      [$length]: core.int,
      isEmpty: core.bool,
      [$isEmpty]: core.bool,
      isNotEmpty: core.bool,
      [$isNotEmpty]: core.bool,
      first: T,
      [$first]: T,
      last: T,
      [$last]: T,
      single: T,
      [$single]: T
    }));
    dart.defineExtensionMethods(_CastIterableBase, [
      'skip',
      'take',
      'elementAt',
      'contains',
      'lastWhere',
      'toString'
    ]);
    dart.defineExtensionAccessors(_CastIterableBase, [
      'iterator',
      'length',
      'isEmpty',
      'isNotEmpty',
      'first',
      'last',
      'single'
    ]);
    return _CastIterableBase;
  });
  _internal._CastIterableBase = _internal._CastIterableBase$();
  dart.addTypeTests(_internal._CastIterableBase, _is__CastIterableBase_default);
  const _is_CastIterator_default = Symbol('_is_CastIterator_default');
  _internal.CastIterator$ = dart.generic((S, T) => {
    let IteratorOfS = () => (IteratorOfS = dart.constFn(core.Iterator$(S)))();
    let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
    class CastIterator extends core.Object {
      moveNext() {
        return this[_source].moveNext();
      }
      get current() {
        return T.as(this[_source].current);
      }
    }
    (CastIterator.new = function(source) {
      this[_source] = source;
    }).prototype = CastIterator.prototype;
    dart.addTypeTests(CastIterator);
    CastIterator.prototype[_is_CastIterator_default] = true;
    CastIterator[dart.implements] = () => [IteratorOfT()];
    dart.setMethodSignature(CastIterator, () => ({
      __proto__: dart.getMethods(CastIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(CastIterator, () => ({
      __proto__: dart.getGetters(CastIterator.__proto__),
      current: T
    }));
    dart.setFieldSignature(CastIterator, () => ({
      __proto__: dart.getFields(CastIterator.__proto__),
      [_source]: dart.fieldType(IteratorOfS())
    }));
    return CastIterator;
  });
  _internal.CastIterator = _internal.CastIterator$();
  dart.addTypeTests(_internal.CastIterator, _is_CastIterator_default);
  const _is_CastIterable_default = Symbol('_is_CastIterable_default');
  _internal.CastIterable$ = dart.generic((S, T) => {
    let EfficientLengthIterableOfS = () => (EfficientLengthIterableOfS = dart.constFn(_internal.EfficientLengthIterable$(S)))();
    let _EfficientLengthCastIterableOfS$T = () => (_EfficientLengthCastIterableOfS$T = dart.constFn(_internal._EfficientLengthCastIterable$(S, T)))();
    let CastIterableOfS$T = () => (CastIterableOfS$T = dart.constFn(_internal.CastIterable$(S, T)))();
    let IterableOfS = () => (IterableOfS = dart.constFn(core.Iterable$(S)))();
    class CastIterable extends _internal._CastIterableBase$(S, T) {
      static new(source) {
        if (EfficientLengthIterableOfS().is(source)) {
          return new (_EfficientLengthCastIterableOfS$T()).new(source);
        }
        return new (CastIterableOfS$T()).__(source);
      }
      cast(R) {
        return _internal.CastIterable$(S, R).new(this[_source]);
      }
    }
    (CastIterable.__ = function(source) {
      this[_source] = source;
      CastIterable.__proto__.new.call(this);
    }).prototype = CastIterable.prototype;
    dart.addTypeTests(CastIterable);
    CastIterable.prototype[_is_CastIterable_default] = true;
    dart.setMethodSignature(CastIterable, () => ({
      __proto__: dart.getMethods(CastIterable.__proto__),
      cast: dart.gFnType(R => [core.Iterable$(R), []]),
      [$cast]: dart.gFnType(R => [core.Iterable$(R), []])
    }));
    dart.setFieldSignature(CastIterable, () => ({
      __proto__: dart.getFields(CastIterable.__proto__),
      [_source]: dart.finalFieldType(IterableOfS())
    }));
    dart.defineExtensionMethods(CastIterable, ['cast']);
    return CastIterable;
  });
  _internal.CastIterable = _internal.CastIterable$();
  dart.addTypeTests(_internal.CastIterable, _is_CastIterable_default);
  const _is__EfficientLengthCastIterable_default = Symbol('_is__EfficientLengthCastIterable_default');
  _internal._EfficientLengthCastIterable$ = dart.generic((S, T) => {
    let EfficientLengthIterableOfT = () => (EfficientLengthIterableOfT = dart.constFn(_internal.EfficientLengthIterable$(T)))();
    class _EfficientLengthCastIterable extends _internal.CastIterable$(S, T) {}
    (_EfficientLengthCastIterable.new = function(source) {
      _EfficientLengthCastIterable.__proto__.__.call(this, source);
    }).prototype = _EfficientLengthCastIterable.prototype;
    dart.addTypeTests(_EfficientLengthCastIterable);
    _EfficientLengthCastIterable.prototype[_is__EfficientLengthCastIterable_default] = true;
    _EfficientLengthCastIterable[dart.implements] = () => [EfficientLengthIterableOfT()];
    return _EfficientLengthCastIterable;
  });
  _internal._EfficientLengthCastIterable = _internal._EfficientLengthCastIterable$();
  dart.addTypeTests(_internal._EfficientLengthCastIterable, _is__EfficientLengthCastIterable_default);
  const _is__CastListBase_default = Symbol('_is__CastListBase_default');
  _internal._CastListBase$ = dart.generic((S, T) => {
    let CastIterableOfT$S = () => (CastIterableOfT$S = dart.constFn(_internal.CastIterable$(T, S)))();
    let SAndSToint = () => (SAndSToint = dart.constFn(dart.fnType(core.int, [S, S])))();
    let STobool = () => (STobool = dart.constFn(dart.fnType(core.bool, [S])))();
    let CastIterableOfS$T = () => (CastIterableOfS$T = dart.constFn(_internal.CastIterable$(S, T)))();
    let IterableOfT = () => (IterableOfT = dart.constFn(core.Iterable$(T)))();
    const _CastIterableBase_ListMixin$ = class _CastIterableBase_ListMixin extends _internal._CastIterableBase$(S, T) {};
    (_CastIterableBase_ListMixin$.new = function() {
      _CastIterableBase_ListMixin$.__proto__.new.call(this);
    }).prototype = _CastIterableBase_ListMixin$.prototype;
    dart.applyMixin(_CastIterableBase_ListMixin$, collection.ListMixin$(T));
    class _CastListBase extends _CastIterableBase_ListMixin$ {
      _get(index) {
        return T.as(this[_source][$_get](index));
      }
      _set(index, value) {
        T._check(value);
        this[_source][$_set](index, S.as(value));
        return value;
      }
      set length(length) {
        this[_source][$length] = length;
      }
      get length() {
        return super.length;
      }
      add(value) {
        T._check(value);
        this[_source][$add](S.as(value));
      }
      addAll(values) {
        IterableOfT()._check(values);
        this[_source][$addAll](CastIterableOfT$S().new(values));
      }
      sort(compare) {
        if (compare === void 0) compare = null;
        this[_source][$sort](compare == null ? null : dart.fn((v1, v2) => compare(T.as(v1), T.as(v2)), SAndSToint()));
      }
      shuffle(random) {
        if (random === void 0) random = null;
        this[_source][$shuffle](random);
      }
      insert(index, element) {
        T._check(element);
        this[_source][$insert](index, S.as(element));
      }
      insertAll(index, elements) {
        IterableOfT()._check(elements);
        this[_source][$insertAll](index, CastIterableOfT$S().new(elements));
      }
      setAll(index, elements) {
        IterableOfT()._check(elements);
        this[_source][$setAll](index, CastIterableOfT$S().new(elements));
      }
      remove(value) {
        return this[_source][$remove](value);
      }
      removeAt(index) {
        return T.as(this[_source][$removeAt](index));
      }
      removeLast() {
        return T.as(this[_source][$removeLast]());
      }
      removeWhere(test) {
        this[_source][$removeWhere](dart.fn(element => test(T.as(element)), STobool()));
      }
      retainWhere(test) {
        this[_source][$retainWhere](dart.fn(element => test(T.as(element)), STobool()));
      }
      getRange(start, end) {
        return CastIterableOfS$T().new(this[_source][$getRange](start, end));
      }
      setRange(start, end, iterable, skipCount) {
        IterableOfT()._check(iterable);
        if (skipCount === void 0) skipCount = 0;
        this[_source][$setRange](start, end, CastIterableOfT$S().new(iterable), skipCount);
      }
      removeRange(start, end) {
        this[_source][$removeRange](start, end);
      }
      fillRange(start, end, fillValue) {
        if (fillValue === void 0) fillValue = null;
        T._check(fillValue);
        this[_source][$fillRange](start, end, S.as(fillValue));
      }
      replaceRange(start, end, replacement) {
        IterableOfT()._check(replacement);
        this[_source][$replaceRange](start, end, CastIterableOfT$S().new(replacement));
      }
    }
    (_CastListBase.new = function() {
      _CastListBase.__proto__.new.call(this);
    }).prototype = _CastListBase.prototype;
    dart.addTypeTests(_CastListBase);
    _CastListBase.prototype[_is__CastListBase_default] = true;
    dart.setMethodSignature(_CastListBase, () => ({
      __proto__: dart.getMethods(_CastListBase.__proto__),
      _get: dart.fnType(T, [core.int]),
      [$_get]: dart.fnType(T, [core.int]),
      _set: dart.fnType(dart.void, [core.int, core.Object]),
      [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
      add: dart.fnType(dart.void, [core.Object]),
      [$add]: dart.fnType(dart.void, [core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      [$addAll]: dart.fnType(dart.void, [core.Object]),
      sort: dart.fnType(dart.void, [], [dart.fnType(core.int, [T, T])]),
      [$sort]: dart.fnType(dart.void, [], [dart.fnType(core.int, [T, T])]),
      shuffle: dart.fnType(dart.void, [], [math.Random]),
      [$shuffle]: dart.fnType(dart.void, [], [math.Random]),
      insert: dart.fnType(dart.void, [core.int, core.Object]),
      [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
      insertAll: dart.fnType(dart.void, [core.int, core.Object]),
      [$insertAll]: dart.fnType(dart.void, [core.int, core.Object]),
      setAll: dart.fnType(dart.void, [core.int, core.Object]),
      [$setAll]: dart.fnType(dart.void, [core.int, core.Object]),
      remove: dart.fnType(core.bool, [core.Object]),
      [$remove]: dart.fnType(core.bool, [core.Object]),
      removeAt: dart.fnType(T, [core.int]),
      [$removeAt]: dart.fnType(T, [core.int]),
      removeLast: dart.fnType(T, []),
      [$removeLast]: dart.fnType(T, []),
      removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [T])]),
      [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [T])]),
      retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [T])]),
      [$retainWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [T])]),
      getRange: dart.fnType(core.Iterable$(T), [core.int, core.int]),
      [$getRange]: dart.fnType(core.Iterable$(T), [core.int, core.int]),
      setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
      [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
      removeRange: dart.fnType(dart.void, [core.int, core.int]),
      [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
      fillRange: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
      [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
      replaceRange: dart.fnType(dart.void, [core.int, core.int, core.Object]),
      [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object])
    }));
    dart.setSetterSignature(_CastListBase, () => ({
      __proto__: dart.getSetters(_CastListBase.__proto__),
      length: core.int,
      [$length]: core.int
    }));
    dart.defineExtensionMethods(_CastListBase, [
      '_get',
      '_set',
      'add',
      'addAll',
      'sort',
      'shuffle',
      'insert',
      'insertAll',
      'setAll',
      'remove',
      'removeAt',
      'removeLast',
      'removeWhere',
      'retainWhere',
      'getRange',
      'setRange',
      'removeRange',
      'fillRange',
      'replaceRange'
    ]);
    dart.defineExtensionAccessors(_CastListBase, ['length']);
    return _CastListBase;
  });
  _internal._CastListBase = _internal._CastListBase$();
  dart.addTypeTests(_internal._CastListBase, _is__CastListBase_default);
  const _is_CastList_default = Symbol('_is_CastList_default');
  _internal.CastList$ = dart.generic((S, T) => {
    let ListOfS = () => (ListOfS = dart.constFn(core.List$(S)))();
    class CastList extends _internal._CastListBase$(S, T) {
      cast(R) {
        return new (_internal.CastList$(S, R)).new(this[_source]);
      }
    }
    (CastList.new = function(source) {
      this[_source] = source;
      CastList.__proto__.new.call(this);
    }).prototype = CastList.prototype;
    dart.addTypeTests(CastList);
    CastList.prototype[_is_CastList_default] = true;
    dart.setMethodSignature(CastList, () => ({
      __proto__: dart.getMethods(CastList.__proto__),
      cast: dart.gFnType(R => [core.List$(R), []]),
      [$cast]: dart.gFnType(R => [core.List$(R), []])
    }));
    dart.setFieldSignature(CastList, () => ({
      __proto__: dart.getFields(CastList.__proto__),
      [_source]: dart.finalFieldType(ListOfS())
    }));
    dart.defineExtensionMethods(CastList, ['cast']);
    return CastList;
  });
  _internal.CastList = _internal.CastList$();
  dart.addTypeTests(_internal.CastList, _is_CastList_default);
  const _emptySet = Symbol('_emptySet');
  const _conditionalAdd = Symbol('_conditionalAdd');
  const _clone = Symbol('_clone');
  const _is_CastSet_default = Symbol('_is_CastSet_default');
  _internal.CastSet$ = dart.generic((S, T) => {
    let CastIterableOfT$S = () => (CastIterableOfT$S = dart.constFn(_internal.CastIterable$(T, S)))();
    let STobool = () => (STobool = dart.constFn(dart.fnType(core.bool, [S])))();
    let CastSetOfS$T = () => (CastSetOfS$T = dart.constFn(_internal.CastSet$(S, T)))();
    let SetOfS = () => (SetOfS = dart.constFn(core.Set$(S)))();
    let IterableOfT = () => (IterableOfT = dart.constFn(core.Iterable$(T)))();
    let _HashSetOfT = () => (_HashSetOfT = dart.constFn(collection._HashSet$(T)))();
    let SetOfT = () => (SetOfT = dart.constFn(core.Set$(T)))();
    class CastSet extends _internal._CastIterableBase$(S, T) {
      static _defaultEmptySet(R) {
        return new (collection._HashSet$(R)).new();
      }
      cast(R) {
        return new (_internal.CastSet$(S, R)).new(this[_source], this[_emptySet]);
      }
      add(value) {
        T._check(value);
        return this[_source].add(S.as(value));
      }
      addAll(elements) {
        IterableOfT()._check(elements);
        this[_source].addAll(CastIterableOfT$S().new(elements));
      }
      remove(object) {
        return this[_source].remove(object);
      }
      removeAll(objects) {
        this[_source].removeAll(objects);
      }
      retainAll(objects) {
        this[_source].retainAll(objects);
      }
      removeWhere(test) {
        this[_source].removeWhere(dart.fn(element => test(T.as(element)), STobool()));
      }
      retainWhere(test) {
        this[_source].retainWhere(dart.fn(element => test(T.as(element)), STobool()));
      }
      containsAll(objects) {
        return this[_source].containsAll(objects);
      }
      intersection(other) {
        if (this[_emptySet] != null) return this[_conditionalAdd](other, true);
        return new (CastSetOfS$T()).new(this[_source].intersection(other), null);
      }
      difference(other) {
        if (this[_emptySet] != null) return this[_conditionalAdd](other, false);
        return new (CastSetOfS$T()).new(this[_source].difference(other), null);
      }
      [_conditionalAdd](other, otherContains) {
        let result = this[_emptySet] == null ? new (_HashSetOfT()).new() : this[_emptySet](T);
        for (let element of this[_source]) {
          let castElement = T.as(element);
          if (otherContains == other.contains(castElement)) result.add(castElement);
        }
        return result;
      }
      union(other) {
        SetOfT()._check(other);
        let _ = this[_clone]();
        _.addAll(other);
        return _;
      }
      clear() {
        this[_source].clear();
      }
      [_clone]() {
        let result = this[_emptySet] == null ? new (_HashSetOfT()).new() : this[_emptySet](T);
        result.addAll(this);
        return result;
      }
      toSet() {
        return this[_clone]();
      }
      lookup(key) {
        return T.as(this[_source].lookup(key));
      }
    }
    (CastSet.new = function(source, emptySet) {
      this[_source] = source;
      this[_emptySet] = emptySet;
      CastSet.__proto__.new.call(this);
    }).prototype = CastSet.prototype;
    dart.addTypeTests(CastSet);
    CastSet.prototype[_is_CastSet_default] = true;
    CastSet[dart.implements] = () => [SetOfT()];
    dart.setMethodSignature(CastSet, () => ({
      __proto__: dart.getMethods(CastSet.__proto__),
      cast: dart.gFnType(R => [core.Set$(R), []]),
      [$cast]: dart.gFnType(R => [core.Set$(R), []]),
      add: dart.fnType(core.bool, [core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      remove: dart.fnType(core.bool, [core.Object]),
      removeAll: dart.fnType(dart.void, [core.Iterable$(core.Object)]),
      retainAll: dart.fnType(dart.void, [core.Iterable$(core.Object)]),
      removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [T])]),
      retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [T])]),
      containsAll: dart.fnType(core.bool, [core.Iterable$(core.Object)]),
      intersection: dart.fnType(core.Set$(T), [core.Set$(core.Object)]),
      difference: dart.fnType(core.Set$(T), [core.Set$(core.Object)]),
      [_conditionalAdd]: dart.fnType(core.Set$(T), [core.Set$(core.Object), core.bool]),
      union: dart.fnType(core.Set$(T), [core.Object]),
      clear: dart.fnType(dart.void, []),
      [_clone]: dart.fnType(core.Set$(T), []),
      toSet: dart.fnType(core.Set$(T), []),
      [$toSet]: dart.fnType(core.Set$(T), []),
      lookup: dart.fnType(T, [core.Object])
    }));
    dart.setFieldSignature(CastSet, () => ({
      __proto__: dart.getFields(CastSet.__proto__),
      [_source]: dart.finalFieldType(SetOfS()),
      [_emptySet]: dart.finalFieldType(VoidToSetOfR())
    }));
    dart.defineExtensionMethods(CastSet, ['cast', 'toSet']);
    return CastSet;
  });
  _internal.CastSet = _internal.CastSet$();
  dart.addTypeTests(_internal.CastSet, _is_CastSet_default);
  const _is_MapMixin_default = Symbol('_is_MapMixin_default');
  collection.MapMixin$ = dart.generic((K, V) => {
    let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
    let KAndVToV = () => (KAndVToV = dart.constFn(dart.fnType(V, [K, V])))();
    let MapEntryOfK$V = () => (MapEntryOfK$V = dart.constFn(core.MapEntry$(K, V)))();
    let KToMapEntryOfK$V = () => (KToMapEntryOfK$V = dart.constFn(dart.fnType(MapEntryOfK$V(), [K])))();
    let IterableOfMapEntryOfK$V = () => (IterableOfMapEntryOfK$V = dart.constFn(core.Iterable$(MapEntryOfK$V())))();
    let JSArrayOfK = () => (JSArrayOfK = dart.constFn(_interceptors.JSArray$(K)))();
    let _MapBaseValueIterableOfK$V = () => (_MapBaseValueIterableOfK$V = dart.constFn(collection._MapBaseValueIterable$(K, V)))();
    let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
    let VToV = () => (VToV = dart.constFn(dart.fnType(V, [V])))();
    class MapMixin extends core.Object {
      cast(RK, RV) {
        return core.Map.castFrom(K, V, RK, RV, this);
      }
      forEach(action) {
        for (let key of this[$keys]) {
          action(key, this[$_get](key));
        }
      }
      addAll(other) {
        MapOfK$V()._check(other);
        for (let key of other[$keys]) {
          this[$_set](key, other[$_get](key));
        }
      }
      containsValue(value) {
        for (let key of this[$keys]) {
          if (dart.equals(this[$_get](key), value)) return true;
        }
        return false;
      }
      putIfAbsent(key, ifAbsent) {
        K._check(key);
        VoidToV()._check(ifAbsent);
        if (dart.test(this[$containsKey](key))) {
          return this[$_get](key);
        }
        return this[$_set](key, ifAbsent());
      }
      update(key, update, opts) {
        K._check(key);
        VToV()._check(update);
        let ifAbsent = opts && 'ifAbsent' in opts ? opts.ifAbsent : null;
        VoidToV()._check(ifAbsent);
        if (dart.test(this[$containsKey](key))) {
          return this[$_set](key, update(this[$_get](key)));
        }
        if (ifAbsent != null) {
          return this[$_set](key, ifAbsent());
        }
        dart.throw(new core.ArgumentError.value(key, "key", "Key not in map."));
      }
      updateAll(update) {
        KAndVToV()._check(update);
        for (let key of this[$keys]) {
          this[$_set](key, update(key, this[$_get](key)));
        }
      }
      get entries() {
        return IterableOfMapEntryOfK$V()._check(this[$keys][$map](MapEntryOfK$V(), dart.fn(key => MapEntryOfK$V().new(key, this[$_get](key)), KToMapEntryOfK$V())));
      }
      map(K2, V2, transform) {
        let result = new (_js_helper.LinkedMap$(K2, V2)).new();
        for (let key of this[$keys]) {
          let entry = transform(key, this[$_get](key));
          result[$_set](entry.key, entry.value);
        }
        return result;
      }
      addEntries(newEntries) {
        IterableOfMapEntryOfK$V()._check(newEntries);
        for (let entry of newEntries) {
          this[$_set](entry.key, entry.value);
        }
      }
      removeWhere(test) {
        let keysToRemove = JSArrayOfK().of([]);
        for (let key of this[$keys]) {
          if (dart.test(test(key, this[$_get](key)))) keysToRemove[$add](key);
        }
        for (let key of keysToRemove) {
          this[$remove](key);
        }
      }
      containsKey(key) {
        return this[$keys][$contains](key);
      }
      get length() {
        return this[$keys][$length];
      }
      get isEmpty() {
        return this[$keys][$isEmpty];
      }
      get isNotEmpty() {
        return this[$keys][$isNotEmpty];
      }
      get values() {
        return new (_MapBaseValueIterableOfK$V()).new(this);
      }
      toString() {
        return collection.MapBase.mapToString(this);
      }
    }
    (MapMixin.new = function() {
    }).prototype = MapMixin.prototype;
    MapMixin.prototype[dart.isMap] = true;
    dart.addTypeTests(MapMixin);
    MapMixin.prototype[_is_MapMixin_default] = true;
    MapMixin[dart.implements] = () => [MapOfK$V()];
    dart.setMethodSignature(MapMixin, () => ({
      __proto__: dart.getMethods(MapMixin.__proto__),
      cast: dart.gFnType((RK, RV) => [core.Map$(RK, RV), []]),
      [$cast]: dart.gFnType((RK, RV) => [core.Map$(RK, RV), []]),
      forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [K, V])]),
      [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [K, V])]),
      addAll: dart.fnType(dart.void, [core.Object]),
      [$addAll]: dart.fnType(dart.void, [core.Object]),
      containsValue: dart.fnType(core.bool, [core.Object]),
      [$containsValue]: dart.fnType(core.bool, [core.Object]),
      putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
      [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
      update: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
      [$update]: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
      updateAll: dart.fnType(dart.void, [core.Object]),
      [$updateAll]: dart.fnType(dart.void, [core.Object]),
      map: dart.gFnType((K2, V2) => [core.Map$(K2, V2), [dart.fnType(core.MapEntry$(K2, V2), [K, V])]]),
      [$map]: dart.gFnType((K2, V2) => [core.Map$(K2, V2), [dart.fnType(core.MapEntry$(K2, V2), [K, V])]]),
      addEntries: dart.fnType(dart.void, [core.Object]),
      [$addEntries]: dart.fnType(dart.void, [core.Object]),
      removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [K, V])]),
      [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [K, V])]),
      containsKey: dart.fnType(core.bool, [core.Object]),
      [$containsKey]: dart.fnType(core.bool, [core.Object]),
      toString: dart.fnType(core.String, []),
      [$toString]: dart.fnType(core.String, [])
    }));
    dart.setGetterSignature(MapMixin, () => ({
      __proto__: dart.getGetters(MapMixin.__proto__),
      entries: core.Iterable$(core.MapEntry$(K, V)),
      [$entries]: core.Iterable$(core.MapEntry$(K, V)),
      length: core.int,
      [$length]: core.int,
      isEmpty: core.bool,
      [$isEmpty]: core.bool,
      isNotEmpty: core.bool,
      [$isNotEmpty]: core.bool,
      values: core.Iterable$(V),
      [$values]: core.Iterable$(V)
    }));
    dart.defineExtensionMethods(MapMixin, [
      'cast',
      'forEach',
      'addAll',
      'containsValue',
      'putIfAbsent',
      'update',
      'updateAll',
      'map',
      'addEntries',
      'removeWhere',
      'containsKey',
      'toString'
    ]);
    dart.defineExtensionAccessors(MapMixin, [
      'entries',
      'length',
      'isEmpty',
      'isNotEmpty',
      'values'
    ]);
    return MapMixin;
  });
  collection.MapMixin = collection.MapMixin$();
  dart.addTypeTests(collection.MapMixin, _is_MapMixin_default);
  const _is_MapBase_default = Symbol('_is_MapBase_default');
  collection.MapBase$ = dart.generic((K, V) => {
    class MapBase extends collection.MapMixin$(K, V) {
      static mapToString(m) {
        if (dart.test(collection._isToStringVisiting(m))) {
          return "{...}";
        }
        let result = new core.StringBuffer.new();
        try {
          collection._toStringVisiting[$add](m);
          result.write("{");
          let first = true;
          m[$forEach](dart.fn((k, v) => {
            if (!first) {
              result.write(", ");
            }
            first = false;
            result.write(k);
            result.write(": ");
            result.write(v);
          }, dynamicAnddynamicToNull()));
          result.write("}");
        } finally {
          if (!core.identical(collection._toStringVisiting[$last], m)) dart.assertFailed();
          collection._toStringVisiting[$removeLast]();
        }
        return result.toString();
      }
      static _id(x) {
        return x;
      }
      static _fillMapWithMappedIterable(map, iterable, key, value) {
        let t = key;
        t == null ? key = dart.fn(collection.MapBase._id, dynamicTodynamic()) : t;
        let t$ = value;
        t$ == null ? value = dart.fn(collection.MapBase._id, dynamicTodynamic()) : t$;
        for (let element of iterable) {
          map[$_set](key(element), value(element));
        }
      }
      static _fillMapWithIterables(map, keys, values) {
        let keyIterator = keys[$iterator];
        let valueIterator = values[$iterator];
        let hasNextKey = keyIterator.moveNext();
        let hasNextValue = valueIterator.moveNext();
        while (dart.test(hasNextKey) && dart.test(hasNextValue)) {
          map[$_set](keyIterator.current, valueIterator.current);
          hasNextKey = keyIterator.moveNext();
          hasNextValue = valueIterator.moveNext();
        }
        if (dart.test(hasNextKey) || dart.test(hasNextValue)) {
          dart.throw(new core.ArgumentError.new("Iterables do not have same length."));
        }
      }
    }
    (MapBase.new = function() {
    }).prototype = MapBase.prototype;
    dart.addTypeTests(MapBase);
    MapBase.prototype[_is_MapBase_default] = true;
    return MapBase;
  });
  collection.MapBase = collection.MapBase$();
  dart.addTypeTests(collection.MapBase, _is_MapBase_default);
  const _is_CastMap_default = Symbol('_is_CastMap_default');
  _internal.CastMap$ = dart.generic((SK, SV, K, V) => {
    let CastMapOfK$V$SK$SV = () => (CastMapOfK$V$SK$SV = dart.constFn(_internal.CastMap$(K, V, SK, SV)))();
    let SKAndSVToNull = () => (SKAndSVToNull = dart.constFn(dart.fnType(core.Null, [SK, SV])))();
    let CastIterableOfSK$K = () => (CastIterableOfSK$K = dart.constFn(_internal.CastIterable$(SK, K)))();
    let SKAndSVToSV = () => (SKAndSVToSV = dart.constFn(dart.fnType(SV, [SK, SV])))();
    let MapEntryOfSK$SV = () => (MapEntryOfSK$SV = dart.constFn(core.MapEntry$(SK, SV)))();
    let MapEntryOfSK$SVToMapEntryOfK$V = () => (MapEntryOfSK$SVToMapEntryOfK$V = dart.constFn(dart.fnType(MapEntryOfK$V(), [MapEntryOfSK$SV()])))();
    let SKAndSVTobool = () => (SKAndSVTobool = dart.constFn(dart.fnType(core.bool, [SK, SV])))();
    let MapOfSK$SV = () => (MapOfSK$SV = dart.constFn(core.Map$(SK, SV)))();
    let VoidToSV = () => (VoidToSV = dart.constFn(dart.fnType(SV, [])))();
    let CastIterableOfSV$V = () => (CastIterableOfSV$V = dart.constFn(_internal.CastIterable$(SV, V)))();
    let SVToSV = () => (SVToSV = dart.constFn(dart.fnType(SV, [SV])))();
    let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
    let KAndVToV = () => (KAndVToV = dart.constFn(dart.fnType(V, [K, V])))();
    let MapEntryOfK$V = () => (MapEntryOfK$V = dart.constFn(core.MapEntry$(K, V)))();
    let IterableOfMapEntryOfK$V = () => (IterableOfMapEntryOfK$V = dart.constFn(core.Iterable$(MapEntryOfK$V())))();
    let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
    let VToV = () => (VToV = dart.constFn(dart.fnType(V, [V])))();
    class CastMap extends collection.MapBase$(K, V) {
      cast(RK, RV) {
        return new (_internal.CastMap$(SK, SV, RK, RV)).new(this[_source]);
      }
      containsValue(value) {
        return this[_source][$containsValue](value);
      }
      containsKey(key) {
        return this[_source][$containsKey](key);
      }
      _get(key) {
        return V.as(this[_source][$_get](key));
      }
      _set(key, value) {
        K._check(key);
        V._check(value);
        this[_source][$_set](SK.as(key), SV.as(value));
        return value;
      }
      putIfAbsent(key, ifAbsent) {
        K._check(key);
        VoidToV()._check(ifAbsent);
        return V.as(this[_source][$putIfAbsent](SK.as(key), ifAbsent == null ? null : dart.fn(() => SV.as(ifAbsent()), VoidToSV())));
      }
      addAll(other) {
        MapOfK$V()._check(other);
        this[_source][$addAll](new (CastMapOfK$V$SK$SV()).new(other));
      }
      remove(key) {
        return V.as(this[_source][$remove](key));
      }
      clear() {
        this[_source][$clear]();
      }
      forEach(f) {
        this[_source][$forEach](dart.fn((key, value) => {
          f(K.as(key), V.as(value));
        }, SKAndSVToNull()));
      }
      get keys() {
        return CastIterableOfSK$K().new(this[_source][$keys]);
      }
      get values() {
        return CastIterableOfSV$V().new(this[_source][$values]);
      }
      get length() {
        return this[_source][$length];
      }
      get isEmpty() {
        return this[_source][$isEmpty];
      }
      get isNotEmpty() {
        return this[_source][$isNotEmpty];
      }
      update(key, update, opts) {
        K._check(key);
        VToV()._check(update);
        let ifAbsent = opts && 'ifAbsent' in opts ? opts.ifAbsent : null;
        VoidToV()._check(ifAbsent);
        return V.as(this[_source][$update](SK.as(key), dart.fn(value => SV.as(update(V.as(value))), SVToSV()), {ifAbsent: ifAbsent == null ? null : dart.fn(() => SV.as(ifAbsent()), VoidToSV())}));
      }
      updateAll(update) {
        KAndVToV()._check(update);
        this[_source][$updateAll](dart.fn((key, value) => SV.as(update(K.as(key), V.as(value))), SKAndSVToSV()));
      }
      get entries() {
        return IterableOfMapEntryOfK$V()._check(this[_source][$entries][$map](MapEntryOfK$V(), dart.fn(e => MapEntryOfK$V().new(K.as(e.key), V.as(e.value)), MapEntryOfSK$SVToMapEntryOfK$V())));
      }
      addEntries(entries) {
        IterableOfMapEntryOfK$V()._check(entries);
        for (let entry of entries) {
          this[_source][$_set](SK.as(entry.key), SV.as(entry.value));
        }
      }
      removeWhere(test) {
        this[_source][$removeWhere](dart.fn((key, value) => test(K.as(key), V.as(value)), SKAndSVTobool()));
      }
    }
    (CastMap.new = function(source) {
      this[_source] = source;
    }).prototype = CastMap.prototype;
    dart.addTypeTests(CastMap);
    CastMap.prototype[_is_CastMap_default] = true;
    dart.setMethodSignature(CastMap, () => ({
      __proto__: dart.getMethods(CastMap.__proto__),
      cast: dart.gFnType((RK, RV) => [core.Map$(RK, RV), []]),
      [$cast]: dart.gFnType((RK, RV) => [core.Map$(RK, RV), []]),
      containsValue: dart.fnType(core.bool, [core.Object]),
      [$containsValue]: dart.fnType(core.bool, [core.Object]),
      containsKey: dart.fnType(core.bool, [core.Object]),
      [$containsKey]: dart.fnType(core.bool, [core.Object]),
      _get: dart.fnType(V, [core.Object]),
      [$_get]: dart.fnType(V, [core.Object]),
      _set: dart.fnType(dart.void, [core.Object, core.Object]),
      [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
      putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
      [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      [$addAll]: dart.fnType(dart.void, [core.Object]),
      remove: dart.fnType(V, [core.Object]),
      [$remove]: dart.fnType(V, [core.Object]),
      clear: dart.fnType(dart.void, []),
      [$clear]: dart.fnType(dart.void, []),
      forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [K, V])]),
      [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [K, V])]),
      update: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
      [$update]: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
      updateAll: dart.fnType(dart.void, [core.Object]),
      [$updateAll]: dart.fnType(dart.void, [core.Object]),
      addEntries: dart.fnType(dart.void, [core.Object]),
      [$addEntries]: dart.fnType(dart.void, [core.Object]),
      removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [K, V])]),
      [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [K, V])])
    }));
    dart.setGetterSignature(CastMap, () => ({
      __proto__: dart.getGetters(CastMap.__proto__),
      keys: core.Iterable$(K),
      [$keys]: core.Iterable$(K),
      values: core.Iterable$(V),
      [$values]: core.Iterable$(V),
      length: core.int,
      [$length]: core.int,
      isEmpty: core.bool,
      [$isEmpty]: core.bool,
      isNotEmpty: core.bool,
      [$isNotEmpty]: core.bool,
      entries: core.Iterable$(core.MapEntry$(K, V)),
      [$entries]: core.Iterable$(core.MapEntry$(K, V))
    }));
    dart.setFieldSignature(CastMap, () => ({
      __proto__: dart.getFields(CastMap.__proto__),
      [_source]: dart.finalFieldType(MapOfSK$SV())
    }));
    dart.defineExtensionMethods(CastMap, [
      'cast',
      'containsValue',
      'containsKey',
      '_get',
      '_set',
      'putIfAbsent',
      'addAll',
      'remove',
      'clear',
      'forEach',
      'update',
      'updateAll',
      'addEntries',
      'removeWhere'
    ]);
    dart.defineExtensionAccessors(CastMap, [
      'keys',
      'values',
      'length',
      'isEmpty',
      'isNotEmpty',
      'entries'
    ]);
    return CastMap;
  });
  _internal.CastMap = _internal.CastMap$();
  dart.addTypeTests(_internal.CastMap, _is_CastMap_default);
  const _is_CastQueue_default = Symbol('_is_CastQueue_default');
  _internal.CastQueue$ = dart.generic((S, T) => {
    let CastIterableOfT$S = () => (CastIterableOfT$S = dart.constFn(_internal.CastIterable$(T, S)))();
    let STobool = () => (STobool = dart.constFn(dart.fnType(core.bool, [S])))();
    let QueueOfS = () => (QueueOfS = dart.constFn(collection.Queue$(S)))();
    let IterableOfT = () => (IterableOfT = dart.constFn(core.Iterable$(T)))();
    let QueueOfT = () => (QueueOfT = dart.constFn(collection.Queue$(T)))();
    class CastQueue extends _internal._CastIterableBase$(S, T) {
      cast(R) {
        return new (_internal.CastQueue$(S, R)).new(this[_source]);
      }
      removeFirst() {
        return T.as(this[_source].removeFirst());
      }
      removeLast() {
        return T.as(this[_source].removeLast());
      }
      add(value) {
        T._check(value);
        this[_source].add(S.as(value));
      }
      addFirst(value) {
        T._check(value);
        this[_source].addFirst(S.as(value));
      }
      addLast(value) {
        T._check(value);
        this[_source].addLast(S.as(value));
      }
      remove(other) {
        return this[_source].remove(other);
      }
      addAll(elements) {
        IterableOfT()._check(elements);
        this[_source].addAll(CastIterableOfT$S().new(elements));
      }
      removeWhere(test) {
        this[_source].removeWhere(dart.fn(element => test(T.as(element)), STobool()));
      }
      retainWhere(test) {
        this[_source].retainWhere(dart.fn(element => test(T.as(element)), STobool()));
      }
      clear() {
        this[_source].clear();
      }
    }
    (CastQueue.new = function(source) {
      this[_source] = source;
      CastQueue.__proto__.new.call(this);
    }).prototype = CastQueue.prototype;
    dart.addTypeTests(CastQueue);
    CastQueue.prototype[_is_CastQueue_default] = true;
    CastQueue[dart.implements] = () => [QueueOfT()];
    dart.setMethodSignature(CastQueue, () => ({
      __proto__: dart.getMethods(CastQueue.__proto__),
      cast: dart.gFnType(R => [collection.Queue$(R), []]),
      [$cast]: dart.gFnType(R => [collection.Queue$(R), []]),
      removeFirst: dart.fnType(T, []),
      removeLast: dart.fnType(T, []),
      add: dart.fnType(dart.void, [core.Object]),
      addFirst: dart.fnType(dart.void, [core.Object]),
      addLast: dart.fnType(dart.void, [core.Object]),
      remove: dart.fnType(core.bool, [core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [T])]),
      retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [T])]),
      clear: dart.fnType(dart.void, [])
    }));
    dart.setFieldSignature(CastQueue, () => ({
      __proto__: dart.getFields(CastQueue.__proto__),
      [_source]: dart.finalFieldType(QueueOfS())
    }));
    dart.defineExtensionMethods(CastQueue, ['cast']);
    return CastQueue;
  });
  _internal.CastQueue = _internal.CastQueue$();
  dart.addTypeTests(_internal.CastQueue, _is_CastQueue_default);
  const _is_EfficientLengthIterable_default = Symbol('_is_EfficientLengthIterable_default');
  _internal.EfficientLengthIterable$ = dart.generic(T => {
    class EfficientLengthIterable extends core.Iterable$(T) {}
    (EfficientLengthIterable.new = function() {
      EfficientLengthIterable.__proto__.new.call(this);
    }).prototype = EfficientLengthIterable.prototype;
    dart.addTypeTests(EfficientLengthIterable);
    EfficientLengthIterable.prototype[_is_EfficientLengthIterable_default] = true;
    return EfficientLengthIterable;
  });
  _internal.EfficientLengthIterable = _internal.EfficientLengthIterable$();
  dart.addTypeTests(_internal.EfficientLengthIterable, _is_EfficientLengthIterable_default);
  const _is_ListIterable_default = Symbol('_is_ListIterable_default');
  _internal.ListIterable$ = dart.generic(E => {
    let ListIteratorOfE = () => (ListIteratorOfE = dart.constFn(_internal.ListIterator$(E)))();
    let VoidToE = () => (VoidToE = dart.constFn(dart.fnType(E, [])))();
    let EAndEToE = () => (EAndEToE = dart.constFn(dart.fnType(E, [E, E])))();
    let SubListIterableOfE = () => (SubListIterableOfE = dart.constFn(_internal.SubListIterable$(E)))();
    let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
    let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
    let _HashSetOfE = () => (_HashSetOfE = dart.constFn(collection._HashSet$(E)))();
    class ListIterable extends _internal.EfficientLengthIterable$(E) {
      get iterator() {
        return new (ListIteratorOfE()).new(this);
      }
      forEach(action) {
        let length = this.length;
        for (let i = 0; i < dart.notNull(length); i++) {
          action(this.elementAt(i));
          if (length != this.length) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
      }
      get isEmpty() {
        return this.length === 0;
      }
      get first() {
        if (this.length === 0) dart.throw(_internal.IterableElementError.noElement());
        return this.elementAt(0);
      }
      get last() {
        if (this.length === 0) dart.throw(_internal.IterableElementError.noElement());
        return this.elementAt(dart.notNull(this.length) - 1);
      }
      get single() {
        if (this.length === 0) dart.throw(_internal.IterableElementError.noElement());
        if (dart.notNull(this.length) > 1) dart.throw(_internal.IterableElementError.tooMany());
        return this.elementAt(0);
      }
      contains(element) {
        let length = this.length;
        for (let i = 0; i < dart.notNull(length); i++) {
          if (dart.equals(this.elementAt(i), element)) return true;
          if (length != this.length) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        return false;
      }
      every(test) {
        let length = this.length;
        for (let i = 0; i < dart.notNull(length); i++) {
          if (!dart.test(test(this.elementAt(i)))) return false;
          if (length != this.length) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        return true;
      }
      any(test) {
        let length = this.length;
        for (let i = 0; i < dart.notNull(length); i++) {
          if (dart.test(test(this.elementAt(i)))) return true;
          if (length != this.length) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        return false;
      }
      firstWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        let length = this.length;
        for (let i = 0; i < dart.notNull(length); i++) {
          let element = this.elementAt(i);
          if (dart.test(test(element))) return element;
          if (length != this.length) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      lastWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        let length = this.length;
        for (let i = dart.notNull(length) - 1; i >= 0; i--) {
          let element = this.elementAt(i);
          if (dart.test(test(element))) return element;
          if (length != this.length) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      singleWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        let length = this.length;
        let match = null;
        let matchFound = false;
        for (let i = 0; i < dart.notNull(length); i++) {
          let element = this.elementAt(i);
          if (dart.test(test(element))) {
            if (matchFound) {
              dart.throw(_internal.IterableElementError.tooMany());
            }
            matchFound = true;
            match = element;
          }
          if (length != this.length) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        if (matchFound) return match;
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      join(separator) {
        if (separator === void 0) separator = "";
        let length = this.length;
        if (!separator[$isEmpty]) {
          if (length === 0) return "";
          let first = dart.str(this.elementAt(0));
          if (length != this.length) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
          let buffer = new core.StringBuffer.new(first);
          for (let i = 1; i < dart.notNull(length); i++) {
            buffer.write(separator);
            buffer.write(this.elementAt(i));
            if (length != this.length) {
              dart.throw(new core.ConcurrentModificationError.new(this));
            }
          }
          return buffer.toString();
        } else {
          let buffer = new core.StringBuffer.new();
          for (let i = 0; i < dart.notNull(length); i++) {
            buffer.write(this.elementAt(i));
            if (length != this.length) {
              dart.throw(new core.ConcurrentModificationError.new(this));
            }
          }
          return buffer.toString();
        }
      }
      where(test) {
        return super.where(test);
      }
      map(T, f) {
        return new (_internal.MappedListIterable$(E, T)).new(this, f);
      }
      reduce(combine) {
        EAndEToE()._check(combine);
        let length = this.length;
        if (length === 0) dart.throw(_internal.IterableElementError.noElement());
        let value = this.elementAt(0);
        for (let i = 1; i < dart.notNull(length); i++) {
          value = combine(value, this.elementAt(i));
          if (length != this.length) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        return value;
      }
      fold(T, initialValue, combine) {
        let value = initialValue;
        let length = this.length;
        for (let i = 0; i < dart.notNull(length); i++) {
          value = combine(value, this.elementAt(i));
          if (length != this.length) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        return value;
      }
      skip(count) {
        return new (SubListIterableOfE()).new(this, count, null);
      }
      skipWhile(test) {
        return super.skipWhile(test);
      }
      take(count) {
        return new (SubListIterableOfE()).new(this, 0, count);
      }
      takeWhile(test) {
        return super.takeWhile(test);
      }
      toList(opts) {
        let growable = opts && 'growable' in opts ? opts.growable : true;
        let result = null;
        if (dart.test(growable)) {
          result = JSArrayOfE().of([]);
          result[$length] = this.length;
        } else {
          result = ListOfE().new(this.length);
        }
        for (let i = 0; i < dart.notNull(this.length); i++) {
          result[$_set](i, this.elementAt(i));
        }
        return result;
      }
      toSet() {
        let result = new (_HashSetOfE()).new();
        for (let i = 0; i < dart.notNull(this.length); i++) {
          result.add(this.elementAt(i));
        }
        return result;
      }
    }
    (ListIterable.new = function() {
      ListIterable.__proto__.new.call(this);
    }).prototype = ListIterable.prototype;
    dart.addTypeTests(ListIterable);
    ListIterable.prototype[_is_ListIterable_default] = true;
    dart.setMethodSignature(ListIterable, () => ({
      __proto__: dart.getMethods(ListIterable.__proto__),
      firstWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$firstWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      lastWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$lastWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      singleWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$singleWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      reduce: dart.fnType(E, [core.Object]),
      [$reduce]: dart.fnType(E, [core.Object])
    }));
    dart.setGetterSignature(ListIterable, () => ({
      __proto__: dart.getGetters(ListIterable.__proto__),
      iterator: core.Iterator$(E),
      [$iterator]: core.Iterator$(E)
    }));
    dart.defineExtensionMethods(ListIterable, [
      'forEach',
      'contains',
      'every',
      'any',
      'firstWhere',
      'lastWhere',
      'singleWhere',
      'join',
      'where',
      'map',
      'reduce',
      'fold',
      'skip',
      'skipWhile',
      'take',
      'takeWhile',
      'toList',
      'toSet'
    ]);
    dart.defineExtensionAccessors(ListIterable, [
      'iterator',
      'isEmpty',
      'first',
      'last',
      'single'
    ]);
    return ListIterable;
  });
  _internal.ListIterable = _internal.ListIterable$();
  dart.addTypeTests(_internal.ListIterable, _is_ListIterable_default);
  const _iterable$ = Symbol('_iterable');
  const _start = Symbol('_start');
  const _endOrLength = Symbol('_endOrLength');
  const _endIndex = Symbol('_endIndex');
  const _startIndex = Symbol('_startIndex');
  const _is_SubListIterable_default = Symbol('_is_SubListIterable_default');
  _internal.SubListIterable$ = dart.generic(E => {
    let EmptyIterableOfE = () => (EmptyIterableOfE = dart.constFn(_internal.EmptyIterable$(E)))();
    let SubListIterableOfE = () => (SubListIterableOfE = dart.constFn(_internal.SubListIterable$(E)))();
    let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
    let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    class SubListIterable extends _internal.ListIterable$(E) {
      get [_endIndex]() {
        let length = this[_iterable$][$length];
        if (this[_endOrLength] == null || dart.notNull(this[_endOrLength]) > dart.notNull(length)) return length;
        return this[_endOrLength];
      }
      get [_startIndex]() {
        let length = this[_iterable$][$length];
        if (dart.notNull(this[_start]) > dart.notNull(length)) return length;
        return this[_start];
      }
      get length() {
        let length = this[_iterable$][$length];
        if (dart.notNull(this[_start]) >= dart.notNull(length)) return 0;
        if (this[_endOrLength] == null || dart.notNull(this[_endOrLength]) >= dart.notNull(length)) {
          return dart.notNull(length) - dart.notNull(this[_start]);
        }
        return dart.notNull(this[_endOrLength]) - dart.notNull(this[_start]);
      }
      elementAt(index) {
        let realIndex = dart.notNull(this[_startIndex]) + dart.notNull(index);
        if (dart.notNull(index) < 0 || realIndex >= dart.notNull(this[_endIndex])) {
          dart.throw(core.RangeError.index(index, this, "index"));
        }
        return this[_iterable$][$elementAt](realIndex);
      }
      skip(count) {
        core.RangeError.checkNotNegative(count, "count");
        let newStart = dart.notNull(this[_start]) + dart.notNull(count);
        if (this[_endOrLength] != null && newStart >= dart.notNull(this[_endOrLength])) {
          return new (EmptyIterableOfE()).new();
        }
        return new (SubListIterableOfE()).new(this[_iterable$], newStart, this[_endOrLength]);
      }
      take(count) {
        core.RangeError.checkNotNegative(count, "count");
        if (this[_endOrLength] == null) {
          return new (SubListIterableOfE()).new(this[_iterable$], this[_start], dart.notNull(this[_start]) + dart.notNull(count));
        } else {
          let newEnd = dart.notNull(this[_start]) + dart.notNull(count);
          if (dart.notNull(this[_endOrLength]) < newEnd) return this;
          return new (SubListIterableOfE()).new(this[_iterable$], this[_start], newEnd);
        }
      }
      toList(opts) {
        let growable = opts && 'growable' in opts ? opts.growable : true;
        let start = this[_start];
        let end = this[_iterable$][$length];
        if (this[_endOrLength] != null && dart.notNull(this[_endOrLength]) < dart.notNull(end)) end = this[_endOrLength];
        let length = dart.notNull(end) - dart.notNull(start);
        if (length < 0) length = 0;
        let result = dart.test(growable) ? (() => {
          let _ = JSArrayOfE().of([]);
          _[$length] = length;
          return _;
        })() : ListOfE().new(length);
        for (let i = 0; i < length; i++) {
          result[$_set](i, this[_iterable$][$elementAt](dart.notNull(start) + i));
          if (dart.notNull(this[_iterable$][$length]) < dart.notNull(end)) dart.throw(new core.ConcurrentModificationError.new(this));
        }
        return result;
      }
    }
    (SubListIterable.new = function(iterable, start, endOrLength) {
      this[_iterable$] = iterable;
      this[_start] = start;
      this[_endOrLength] = endOrLength;
      SubListIterable.__proto__.new.call(this);
      core.RangeError.checkNotNegative(this[_start], "start");
      if (this[_endOrLength] != null) {
        core.RangeError.checkNotNegative(this[_endOrLength], "end");
        if (dart.notNull(this[_start]) > dart.notNull(this[_endOrLength])) {
          dart.throw(new core.RangeError.range(this[_start], 0, this[_endOrLength], "start"));
        }
      }
    }).prototype = SubListIterable.prototype;
    dart.addTypeTests(SubListIterable);
    SubListIterable.prototype[_is_SubListIterable_default] = true;
    dart.setMethodSignature(SubListIterable, () => ({
      __proto__: dart.getMethods(SubListIterable.__proto__),
      elementAt: dart.fnType(E, [core.int]),
      [$elementAt]: dart.fnType(E, [core.int])
    }));
    dart.setGetterSignature(SubListIterable, () => ({
      __proto__: dart.getGetters(SubListIterable.__proto__),
      [_endIndex]: core.int,
      [_startIndex]: core.int,
      length: core.int,
      [$length]: core.int
    }));
    dart.setFieldSignature(SubListIterable, () => ({
      __proto__: dart.getFields(SubListIterable.__proto__),
      [_iterable$]: dart.finalFieldType(IterableOfE()),
      [_start]: dart.finalFieldType(core.int),
      [_endOrLength]: dart.finalFieldType(core.int)
    }));
    dart.defineExtensionMethods(SubListIterable, ['elementAt', 'skip', 'take', 'toList']);
    dart.defineExtensionAccessors(SubListIterable, ['length']);
    return SubListIterable;
  });
  _internal.SubListIterable = _internal.SubListIterable$();
  dart.addTypeTests(_internal.SubListIterable, _is_SubListIterable_default);
  const _length$ = Symbol('_length');
  const _index$ = Symbol('_index');
  const _current$ = Symbol('_current');
  const _is_ListIterator_default = Symbol('_is_ListIterator_default');
  _internal.ListIterator$ = dart.generic(E => {
    let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    class ListIterator extends core.Object {
      get current() {
        return this[_current$];
      }
      moveNext() {
        let length = this[_iterable$][$length];
        if (this[_length$] != length) {
          dart.throw(new core.ConcurrentModificationError.new(this[_iterable$]));
        }
        if (dart.notNull(this[_index$]) >= dart.notNull(length)) {
          this[_current$] = null;
          return false;
        }
        this[_current$] = this[_iterable$][$elementAt](this[_index$]);
        this[_index$] = dart.notNull(this[_index$]) + 1;
        return true;
      }
    }
    (ListIterator.new = function(iterable) {
      this[_current$] = null;
      this[_iterable$] = iterable;
      this[_length$] = iterable[$length];
      this[_index$] = 0;
    }).prototype = ListIterator.prototype;
    dart.addTypeTests(ListIterator);
    ListIterator.prototype[_is_ListIterator_default] = true;
    ListIterator[dart.implements] = () => [IteratorOfE()];
    dart.setMethodSignature(ListIterator, () => ({
      __proto__: dart.getMethods(ListIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(ListIterator, () => ({
      __proto__: dart.getGetters(ListIterator.__proto__),
      current: E
    }));
    dart.setFieldSignature(ListIterator, () => ({
      __proto__: dart.getFields(ListIterator.__proto__),
      [_iterable$]: dart.finalFieldType(IterableOfE()),
      [_length$]: dart.finalFieldType(core.int),
      [_index$]: dart.fieldType(core.int),
      [_current$]: dart.fieldType(E)
    }));
    return ListIterator;
  });
  _internal.ListIterator = _internal.ListIterator$();
  dart.addTypeTests(_internal.ListIterator, _is_ListIterator_default);
  const _f = Symbol('_f');
  const _is_MappedIterable_default = Symbol('_is_MappedIterable_default');
  _internal.MappedIterable$ = dart.generic((S, T) => {
    let EfficientLengthMappedIterableOfS$T = () => (EfficientLengthMappedIterableOfS$T = dart.constFn(_internal.EfficientLengthMappedIterable$(S, T)))();
    let MappedIterableOfS$T = () => (MappedIterableOfS$T = dart.constFn(_internal.MappedIterable$(S, T)))();
    let MappedIteratorOfS$T = () => (MappedIteratorOfS$T = dart.constFn(_internal.MappedIterator$(S, T)))();
    let IterableOfS = () => (IterableOfS = dart.constFn(core.Iterable$(S)))();
    let SToT = () => (SToT = dart.constFn(dart.fnType(T, [S])))();
    class MappedIterable extends core.Iterable$(T) {
      static new(iterable, func) {
        if (_internal.EfficientLengthIterable.is(iterable)) {
          return new (EfficientLengthMappedIterableOfS$T()).new(iterable, func);
        }
        return new (MappedIterableOfS$T()).__(iterable, func);
      }
      get iterator() {
        return new (MappedIteratorOfS$T()).new(this[_iterable$][$iterator], this[_f]);
      }
      get length() {
        return this[_iterable$][$length];
      }
      get isEmpty() {
        return this[_iterable$][$isEmpty];
      }
      get first() {
        return this[_f](this[_iterable$][$first]);
      }
      get last() {
        return this[_f](this[_iterable$][$last]);
      }
      get single() {
        return this[_f](this[_iterable$][$single]);
      }
      elementAt(index) {
        return this[_f](this[_iterable$][$elementAt](index));
      }
    }
    (MappedIterable.__ = function(iterable, f) {
      this[_iterable$] = iterable;
      this[_f] = f;
      MappedIterable.__proto__.new.call(this);
    }).prototype = MappedIterable.prototype;
    dart.addTypeTests(MappedIterable);
    MappedIterable.prototype[_is_MappedIterable_default] = true;
    dart.setMethodSignature(MappedIterable, () => ({
      __proto__: dart.getMethods(MappedIterable.__proto__),
      elementAt: dart.fnType(T, [core.int]),
      [$elementAt]: dart.fnType(T, [core.int])
    }));
    dart.setGetterSignature(MappedIterable, () => ({
      __proto__: dart.getGetters(MappedIterable.__proto__),
      iterator: core.Iterator$(T),
      [$iterator]: core.Iterator$(T),
      length: core.int,
      [$length]: core.int,
      isEmpty: core.bool,
      [$isEmpty]: core.bool,
      first: T,
      [$first]: T,
      last: T,
      [$last]: T,
      single: T,
      [$single]: T
    }));
    dart.setFieldSignature(MappedIterable, () => ({
      __proto__: dart.getFields(MappedIterable.__proto__),
      [_iterable$]: dart.finalFieldType(IterableOfS()),
      [_f]: dart.finalFieldType(SToT())
    }));
    dart.defineExtensionMethods(MappedIterable, ['elementAt']);
    dart.defineExtensionAccessors(MappedIterable, [
      'iterator',
      'length',
      'isEmpty',
      'first',
      'last',
      'single'
    ]);
    return MappedIterable;
  });
  _internal.MappedIterable = _internal.MappedIterable$();
  dart.addTypeTests(_internal.MappedIterable, _is_MappedIterable_default);
  const _is_EfficientLengthMappedIterable_default = Symbol('_is_EfficientLengthMappedIterable_default');
  _internal.EfficientLengthMappedIterable$ = dart.generic((S, T) => {
    let EfficientLengthIterableOfT = () => (EfficientLengthIterableOfT = dart.constFn(_internal.EfficientLengthIterable$(T)))();
    class EfficientLengthMappedIterable extends _internal.MappedIterable$(S, T) {}
    (EfficientLengthMappedIterable.new = function(iterable, func) {
      EfficientLengthMappedIterable.__proto__.__.call(this, iterable, func);
    }).prototype = EfficientLengthMappedIterable.prototype;
    dart.addTypeTests(EfficientLengthMappedIterable);
    EfficientLengthMappedIterable.prototype[_is_EfficientLengthMappedIterable_default] = true;
    EfficientLengthMappedIterable[dart.implements] = () => [EfficientLengthIterableOfT()];
    return EfficientLengthMappedIterable;
  });
  _internal.EfficientLengthMappedIterable = _internal.EfficientLengthMappedIterable$();
  dart.addTypeTests(_internal.EfficientLengthMappedIterable, _is_EfficientLengthMappedIterable_default);
  const _iterator = Symbol('_iterator');
  const _is_Iterator_default = Symbol('_is_Iterator_default');
  core.Iterator$ = dart.generic(E => {
    class Iterator extends core.Object {}
    (Iterator.new = function() {
    }).prototype = Iterator.prototype;
    dart.addTypeTests(Iterator);
    Iterator.prototype[_is_Iterator_default] = true;
    return Iterator;
  });
  core.Iterator = core.Iterator$();
  dart.addTypeTests(core.Iterator, _is_Iterator_default);
  const _is_MappedIterator_default = Symbol('_is_MappedIterator_default');
  _internal.MappedIterator$ = dart.generic((S, T) => {
    let IteratorOfS = () => (IteratorOfS = dart.constFn(core.Iterator$(S)))();
    let SToT = () => (SToT = dart.constFn(dart.fnType(T, [S])))();
    class MappedIterator extends core.Iterator$(T) {
      moveNext() {
        if (dart.test(this[_iterator].moveNext())) {
          this[_current$] = this[_f](this[_iterator].current);
          return true;
        }
        this[_current$] = null;
        return false;
      }
      get current() {
        return this[_current$];
      }
    }
    (MappedIterator.new = function(iterator, f) {
      this[_current$] = null;
      this[_iterator] = iterator;
      this[_f] = f;
    }).prototype = MappedIterator.prototype;
    dart.addTypeTests(MappedIterator);
    MappedIterator.prototype[_is_MappedIterator_default] = true;
    dart.setMethodSignature(MappedIterator, () => ({
      __proto__: dart.getMethods(MappedIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(MappedIterator, () => ({
      __proto__: dart.getGetters(MappedIterator.__proto__),
      current: T
    }));
    dart.setFieldSignature(MappedIterator, () => ({
      __proto__: dart.getFields(MappedIterator.__proto__),
      [_current$]: dart.fieldType(T),
      [_iterator]: dart.finalFieldType(IteratorOfS()),
      [_f]: dart.finalFieldType(SToT())
    }));
    return MappedIterator;
  });
  _internal.MappedIterator = _internal.MappedIterator$();
  dart.addTypeTests(_internal.MappedIterator, _is_MappedIterator_default);
  const _is_MappedListIterable_default = Symbol('_is_MappedListIterable_default');
  _internal.MappedListIterable$ = dart.generic((S, T) => {
    let IterableOfS = () => (IterableOfS = dart.constFn(core.Iterable$(S)))();
    let SToT = () => (SToT = dart.constFn(dart.fnType(T, [S])))();
    class MappedListIterable extends _internal.ListIterable$(T) {
      get length() {
        return this[_source][$length];
      }
      elementAt(index) {
        return this[_f](this[_source][$elementAt](index));
      }
    }
    (MappedListIterable.new = function(source, f) {
      this[_source] = source;
      this[_f] = f;
      MappedListIterable.__proto__.new.call(this);
    }).prototype = MappedListIterable.prototype;
    dart.addTypeTests(MappedListIterable);
    MappedListIterable.prototype[_is_MappedListIterable_default] = true;
    dart.setMethodSignature(MappedListIterable, () => ({
      __proto__: dart.getMethods(MappedListIterable.__proto__),
      elementAt: dart.fnType(T, [core.int]),
      [$elementAt]: dart.fnType(T, [core.int])
    }));
    dart.setGetterSignature(MappedListIterable, () => ({
      __proto__: dart.getGetters(MappedListIterable.__proto__),
      length: core.int,
      [$length]: core.int
    }));
    dart.setFieldSignature(MappedListIterable, () => ({
      __proto__: dart.getFields(MappedListIterable.__proto__),
      [_source]: dart.finalFieldType(IterableOfS()),
      [_f]: dart.finalFieldType(SToT())
    }));
    dart.defineExtensionMethods(MappedListIterable, ['elementAt']);
    dart.defineExtensionAccessors(MappedListIterable, ['length']);
    return MappedListIterable;
  });
  _internal.MappedListIterable = _internal.MappedListIterable$();
  dart.addTypeTests(_internal.MappedListIterable, _is_MappedListIterable_default);
  const _is_WhereIterable_default = Symbol('_is_WhereIterable_default');
  _internal.WhereIterable$ = dart.generic(E => {
    let WhereIteratorOfE = () => (WhereIteratorOfE = dart.constFn(_internal.WhereIterator$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let ETobool = () => (ETobool = dart.constFn(dart.fnType(core.bool, [E])))();
    class WhereIterable extends core.Iterable$(E) {
      get iterator() {
        return new (WhereIteratorOfE()).new(this[_iterable$][$iterator], this[_f]);
      }
      map(T, f) {
        return new (_internal.MappedIterable$(E, T)).__(this, f);
      }
    }
    (WhereIterable.new = function(iterable, f) {
      this[_iterable$] = iterable;
      this[_f] = f;
      WhereIterable.__proto__.new.call(this);
    }).prototype = WhereIterable.prototype;
    dart.addTypeTests(WhereIterable);
    WhereIterable.prototype[_is_WhereIterable_default] = true;
    dart.setGetterSignature(WhereIterable, () => ({
      __proto__: dart.getGetters(WhereIterable.__proto__),
      iterator: core.Iterator$(E),
      [$iterator]: core.Iterator$(E)
    }));
    dart.setFieldSignature(WhereIterable, () => ({
      __proto__: dart.getFields(WhereIterable.__proto__),
      [_iterable$]: dart.finalFieldType(IterableOfE()),
      [_f]: dart.finalFieldType(ETobool())
    }));
    dart.defineExtensionMethods(WhereIterable, ['map']);
    dart.defineExtensionAccessors(WhereIterable, ['iterator']);
    return WhereIterable;
  });
  _internal.WhereIterable = _internal.WhereIterable$();
  dart.addTypeTests(_internal.WhereIterable, _is_WhereIterable_default);
  const _is_WhereIterator_default = Symbol('_is_WhereIterator_default');
  _internal.WhereIterator$ = dart.generic(E => {
    let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
    let ETobool = () => (ETobool = dart.constFn(dart.fnType(core.bool, [E])))();
    class WhereIterator extends core.Iterator$(E) {
      moveNext() {
        while (dart.test(this[_iterator].moveNext())) {
          if (dart.test(this[_f](this[_iterator].current))) {
            return true;
          }
        }
        return false;
      }
      get current() {
        return this[_iterator].current;
      }
    }
    (WhereIterator.new = function(iterator, f) {
      this[_iterator] = iterator;
      this[_f] = f;
    }).prototype = WhereIterator.prototype;
    dart.addTypeTests(WhereIterator);
    WhereIterator.prototype[_is_WhereIterator_default] = true;
    dart.setMethodSignature(WhereIterator, () => ({
      __proto__: dart.getMethods(WhereIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(WhereIterator, () => ({
      __proto__: dart.getGetters(WhereIterator.__proto__),
      current: E
    }));
    dart.setFieldSignature(WhereIterator, () => ({
      __proto__: dart.getFields(WhereIterator.__proto__),
      [_iterator]: dart.finalFieldType(IteratorOfE()),
      [_f]: dart.finalFieldType(ETobool())
    }));
    return WhereIterator;
  });
  _internal.WhereIterator = _internal.WhereIterator$();
  dart.addTypeTests(_internal.WhereIterator, _is_WhereIterator_default);
  const _is_ExpandIterable_default = Symbol('_is_ExpandIterable_default');
  _internal.ExpandIterable$ = dart.generic((S, T) => {
    let ExpandIteratorOfS$T = () => (ExpandIteratorOfS$T = dart.constFn(_internal.ExpandIterator$(S, T)))();
    let IterableOfS = () => (IterableOfS = dart.constFn(core.Iterable$(S)))();
    let SToIterableOfT = () => (SToIterableOfT = dart.constFn(dart.fnType(IterableOfT(), [S])))();
    let IterableOfT = () => (IterableOfT = dart.constFn(core.Iterable$(T)))();
    class ExpandIterable extends core.Iterable$(T) {
      get iterator() {
        return new (ExpandIteratorOfS$T()).new(this[_iterable$][$iterator], this[_f]);
      }
    }
    (ExpandIterable.new = function(iterable, f) {
      this[_iterable$] = iterable;
      this[_f] = f;
      ExpandIterable.__proto__.new.call(this);
    }).prototype = ExpandIterable.prototype;
    dart.addTypeTests(ExpandIterable);
    ExpandIterable.prototype[_is_ExpandIterable_default] = true;
    dart.setGetterSignature(ExpandIterable, () => ({
      __proto__: dart.getGetters(ExpandIterable.__proto__),
      iterator: core.Iterator$(T),
      [$iterator]: core.Iterator$(T)
    }));
    dart.setFieldSignature(ExpandIterable, () => ({
      __proto__: dart.getFields(ExpandIterable.__proto__),
      [_iterable$]: dart.finalFieldType(IterableOfS()),
      [_f]: dart.finalFieldType(SToIterableOfT())
    }));
    dart.defineExtensionAccessors(ExpandIterable, ['iterator']);
    return ExpandIterable;
  });
  _internal.ExpandIterable = _internal.ExpandIterable$();
  dart.addTypeTests(_internal.ExpandIterable, _is_ExpandIterable_default);
  const _currentExpansion = Symbol('_currentExpansion');
  const _is_ExpandIterator_default = Symbol('_is_ExpandIterator_default');
  _internal.ExpandIterator$ = dart.generic((S, T) => {
    let IteratorOfS = () => (IteratorOfS = dart.constFn(core.Iterator$(S)))();
    let SToIterableOfT = () => (SToIterableOfT = dart.constFn(dart.fnType(IterableOfT(), [S])))();
    let EmptyIteratorOfT = () => (EmptyIteratorOfT = dart.constFn(_internal.EmptyIterator$(T)))();
    let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
    let IterableOfT = () => (IterableOfT = dart.constFn(core.Iterable$(T)))();
    class ExpandIterator extends core.Object {
      get current() {
        return this[_current$];
      }
      moveNext() {
        if (this[_currentExpansion] == null) return false;
        while (!dart.test(this[_currentExpansion].moveNext())) {
          this[_current$] = null;
          if (dart.test(this[_iterator].moveNext())) {
            this[_currentExpansion] = null;
            this[_currentExpansion] = this[_f](this[_iterator].current)[$iterator];
          } else {
            return false;
          }
        }
        this[_current$] = this[_currentExpansion].current;
        return true;
      }
    }
    (ExpandIterator.new = function(iterator, f) {
      this[_currentExpansion] = dart.const(new (EmptyIteratorOfT()).new());
      this[_current$] = null;
      this[_iterator] = iterator;
      this[_f] = f;
    }).prototype = ExpandIterator.prototype;
    dart.addTypeTests(ExpandIterator);
    ExpandIterator.prototype[_is_ExpandIterator_default] = true;
    ExpandIterator[dart.implements] = () => [IteratorOfT()];
    dart.setMethodSignature(ExpandIterator, () => ({
      __proto__: dart.getMethods(ExpandIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(ExpandIterator, () => ({
      __proto__: dart.getGetters(ExpandIterator.__proto__),
      current: T
    }));
    dart.setFieldSignature(ExpandIterator, () => ({
      __proto__: dart.getFields(ExpandIterator.__proto__),
      [_iterator]: dart.finalFieldType(IteratorOfS()),
      [_f]: dart.finalFieldType(SToIterableOfT()),
      [_currentExpansion]: dart.fieldType(IteratorOfT()),
      [_current$]: dart.fieldType(T)
    }));
    return ExpandIterator;
  });
  _internal.ExpandIterator = _internal.ExpandIterator$();
  dart.addTypeTests(_internal.ExpandIterator, _is_ExpandIterator_default);
  const _takeCount = Symbol('_takeCount');
  const _is_TakeIterable_default = Symbol('_is_TakeIterable_default');
  _internal.TakeIterable$ = dart.generic(E => {
    let EfficientLengthTakeIterableOfE = () => (EfficientLengthTakeIterableOfE = dart.constFn(_internal.EfficientLengthTakeIterable$(E)))();
    let TakeIterableOfE = () => (TakeIterableOfE = dart.constFn(_internal.TakeIterable$(E)))();
    let TakeIteratorOfE = () => (TakeIteratorOfE = dart.constFn(_internal.TakeIterator$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    class TakeIterable extends core.Iterable$(E) {
      static new(iterable, takeCount) {
        core.ArgumentError.checkNotNull(takeCount, "takeCount");
        core.RangeError.checkNotNegative(takeCount, "takeCount");
        if (_internal.EfficientLengthIterable.is(iterable)) {
          return new (EfficientLengthTakeIterableOfE()).new(iterable, takeCount);
        }
        return new (TakeIterableOfE()).__(iterable, takeCount);
      }
      get iterator() {
        return new (TakeIteratorOfE()).new(this[_iterable$][$iterator], this[_takeCount]);
      }
    }
    (TakeIterable.__ = function(iterable, takeCount) {
      this[_iterable$] = iterable;
      this[_takeCount] = takeCount;
      TakeIterable.__proto__.new.call(this);
    }).prototype = TakeIterable.prototype;
    dart.addTypeTests(TakeIterable);
    TakeIterable.prototype[_is_TakeIterable_default] = true;
    dart.setGetterSignature(TakeIterable, () => ({
      __proto__: dart.getGetters(TakeIterable.__proto__),
      iterator: core.Iterator$(E),
      [$iterator]: core.Iterator$(E)
    }));
    dart.setFieldSignature(TakeIterable, () => ({
      __proto__: dart.getFields(TakeIterable.__proto__),
      [_iterable$]: dart.finalFieldType(IterableOfE()),
      [_takeCount]: dart.finalFieldType(core.int)
    }));
    dart.defineExtensionAccessors(TakeIterable, ['iterator']);
    return TakeIterable;
  });
  _internal.TakeIterable = _internal.TakeIterable$();
  dart.addTypeTests(_internal.TakeIterable, _is_TakeIterable_default);
  const _is_EfficientLengthTakeIterable_default = Symbol('_is_EfficientLengthTakeIterable_default');
  _internal.EfficientLengthTakeIterable$ = dart.generic(E => {
    let EfficientLengthIterableOfE = () => (EfficientLengthIterableOfE = dart.constFn(_internal.EfficientLengthIterable$(E)))();
    class EfficientLengthTakeIterable extends _internal.TakeIterable$(E) {
      get length() {
        let iterableLength = this[_iterable$][$length];
        if (dart.notNull(iterableLength) > dart.notNull(this[_takeCount])) return this[_takeCount];
        return iterableLength;
      }
    }
    (EfficientLengthTakeIterable.new = function(iterable, takeCount) {
      EfficientLengthTakeIterable.__proto__.__.call(this, iterable, takeCount);
    }).prototype = EfficientLengthTakeIterable.prototype;
    dart.addTypeTests(EfficientLengthTakeIterable);
    EfficientLengthTakeIterable.prototype[_is_EfficientLengthTakeIterable_default] = true;
    EfficientLengthTakeIterable[dart.implements] = () => [EfficientLengthIterableOfE()];
    dart.defineExtensionAccessors(EfficientLengthTakeIterable, ['length']);
    return EfficientLengthTakeIterable;
  });
  _internal.EfficientLengthTakeIterable = _internal.EfficientLengthTakeIterable$();
  dart.addTypeTests(_internal.EfficientLengthTakeIterable, _is_EfficientLengthTakeIterable_default);
  const _remaining = Symbol('_remaining');
  const _is_TakeIterator_default = Symbol('_is_TakeIterator_default');
  _internal.TakeIterator$ = dart.generic(E => {
    let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
    class TakeIterator extends core.Iterator$(E) {
      moveNext() {
        this[_remaining] = dart.notNull(this[_remaining]) - 1;
        if (dart.notNull(this[_remaining]) >= 0) {
          return this[_iterator].moveNext();
        }
        this[_remaining] = -1;
        return false;
      }
      get current() {
        if (dart.notNull(this[_remaining]) < 0) return null;
        return this[_iterator].current;
      }
    }
    (TakeIterator.new = function(iterator, remaining) {
      this[_iterator] = iterator;
      this[_remaining] = remaining;
      if (!(dart.notNull(this[_remaining]) >= 0)) dart.assertFailed();
    }).prototype = TakeIterator.prototype;
    dart.addTypeTests(TakeIterator);
    TakeIterator.prototype[_is_TakeIterator_default] = true;
    dart.setMethodSignature(TakeIterator, () => ({
      __proto__: dart.getMethods(TakeIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(TakeIterator, () => ({
      __proto__: dart.getGetters(TakeIterator.__proto__),
      current: E
    }));
    dart.setFieldSignature(TakeIterator, () => ({
      __proto__: dart.getFields(TakeIterator.__proto__),
      [_iterator]: dart.finalFieldType(IteratorOfE()),
      [_remaining]: dart.fieldType(core.int)
    }));
    return TakeIterator;
  });
  _internal.TakeIterator = _internal.TakeIterator$();
  dart.addTypeTests(_internal.TakeIterator, _is_TakeIterator_default);
  const _is_TakeWhileIterable_default = Symbol('_is_TakeWhileIterable_default');
  _internal.TakeWhileIterable$ = dart.generic(E => {
    let TakeWhileIteratorOfE = () => (TakeWhileIteratorOfE = dart.constFn(_internal.TakeWhileIterator$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let ETobool = () => (ETobool = dart.constFn(dart.fnType(core.bool, [E])))();
    class TakeWhileIterable extends core.Iterable$(E) {
      get iterator() {
        return new (TakeWhileIteratorOfE()).new(this[_iterable$][$iterator], this[_f]);
      }
    }
    (TakeWhileIterable.new = function(iterable, f) {
      this[_iterable$] = iterable;
      this[_f] = f;
      TakeWhileIterable.__proto__.new.call(this);
    }).prototype = TakeWhileIterable.prototype;
    dart.addTypeTests(TakeWhileIterable);
    TakeWhileIterable.prototype[_is_TakeWhileIterable_default] = true;
    dart.setGetterSignature(TakeWhileIterable, () => ({
      __proto__: dart.getGetters(TakeWhileIterable.__proto__),
      iterator: core.Iterator$(E),
      [$iterator]: core.Iterator$(E)
    }));
    dart.setFieldSignature(TakeWhileIterable, () => ({
      __proto__: dart.getFields(TakeWhileIterable.__proto__),
      [_iterable$]: dart.finalFieldType(IterableOfE()),
      [_f]: dart.finalFieldType(ETobool())
    }));
    dart.defineExtensionAccessors(TakeWhileIterable, ['iterator']);
    return TakeWhileIterable;
  });
  _internal.TakeWhileIterable = _internal.TakeWhileIterable$();
  dart.addTypeTests(_internal.TakeWhileIterable, _is_TakeWhileIterable_default);
  const _isFinished = Symbol('_isFinished');
  const _is_TakeWhileIterator_default = Symbol('_is_TakeWhileIterator_default');
  _internal.TakeWhileIterator$ = dart.generic(E => {
    let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
    let ETobool = () => (ETobool = dart.constFn(dart.fnType(core.bool, [E])))();
    class TakeWhileIterator extends core.Iterator$(E) {
      moveNext() {
        if (dart.test(this[_isFinished])) return false;
        if (!dart.test(this[_iterator].moveNext()) || !dart.test(this[_f](this[_iterator].current))) {
          this[_isFinished] = true;
          return false;
        }
        return true;
      }
      get current() {
        if (dart.test(this[_isFinished])) return null;
        return this[_iterator].current;
      }
    }
    (TakeWhileIterator.new = function(iterator, f) {
      this[_isFinished] = false;
      this[_iterator] = iterator;
      this[_f] = f;
    }).prototype = TakeWhileIterator.prototype;
    dart.addTypeTests(TakeWhileIterator);
    TakeWhileIterator.prototype[_is_TakeWhileIterator_default] = true;
    dart.setMethodSignature(TakeWhileIterator, () => ({
      __proto__: dart.getMethods(TakeWhileIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(TakeWhileIterator, () => ({
      __proto__: dart.getGetters(TakeWhileIterator.__proto__),
      current: E
    }));
    dart.setFieldSignature(TakeWhileIterator, () => ({
      __proto__: dart.getFields(TakeWhileIterator.__proto__),
      [_iterator]: dart.finalFieldType(IteratorOfE()),
      [_f]: dart.finalFieldType(ETobool()),
      [_isFinished]: dart.fieldType(core.bool)
    }));
    return TakeWhileIterator;
  });
  _internal.TakeWhileIterator = _internal.TakeWhileIterator$();
  dart.addTypeTests(_internal.TakeWhileIterator, _is_TakeWhileIterator_default);
  const _skipCount = Symbol('_skipCount');
  const _is_SkipIterable_default = Symbol('_is_SkipIterable_default');
  _internal.SkipIterable$ = dart.generic(E => {
    let EfficientLengthSkipIterableOfE = () => (EfficientLengthSkipIterableOfE = dart.constFn(_internal.EfficientLengthSkipIterable$(E)))();
    let SkipIterableOfE = () => (SkipIterableOfE = dart.constFn(_internal.SkipIterable$(E)))();
    let SkipIteratorOfE = () => (SkipIteratorOfE = dart.constFn(_internal.SkipIterator$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    class SkipIterable extends core.Iterable$(E) {
      static new(iterable, count) {
        if (_internal.EfficientLengthIterable.is(iterable)) {
          return EfficientLengthSkipIterableOfE().new(iterable, count);
        }
        return new (SkipIterableOfE()).__(iterable, _internal._checkCount(count));
      }
      skip(count) {
        return new (SkipIterableOfE()).__(this[_iterable$], dart.notNull(this[_skipCount]) + dart.notNull(_internal._checkCount(count)));
      }
      get iterator() {
        return new (SkipIteratorOfE()).new(this[_iterable$][$iterator], this[_skipCount]);
      }
    }
    (SkipIterable.__ = function(iterable, skipCount) {
      this[_iterable$] = iterable;
      this[_skipCount] = skipCount;
      SkipIterable.__proto__.new.call(this);
    }).prototype = SkipIterable.prototype;
    dart.addTypeTests(SkipIterable);
    SkipIterable.prototype[_is_SkipIterable_default] = true;
    dart.setGetterSignature(SkipIterable, () => ({
      __proto__: dart.getGetters(SkipIterable.__proto__),
      iterator: core.Iterator$(E),
      [$iterator]: core.Iterator$(E)
    }));
    dart.setFieldSignature(SkipIterable, () => ({
      __proto__: dart.getFields(SkipIterable.__proto__),
      [_iterable$]: dart.finalFieldType(IterableOfE()),
      [_skipCount]: dart.finalFieldType(core.int)
    }));
    dart.defineExtensionMethods(SkipIterable, ['skip']);
    dart.defineExtensionAccessors(SkipIterable, ['iterator']);
    return SkipIterable;
  });
  _internal.SkipIterable = _internal.SkipIterable$();
  dart.addTypeTests(_internal.SkipIterable, _is_SkipIterable_default);
  const _is_EfficientLengthSkipIterable_default = Symbol('_is_EfficientLengthSkipIterable_default');
  _internal.EfficientLengthSkipIterable$ = dart.generic(E => {
    let EfficientLengthSkipIterableOfE = () => (EfficientLengthSkipIterableOfE = dart.constFn(_internal.EfficientLengthSkipIterable$(E)))();
    let EfficientLengthIterableOfE = () => (EfficientLengthIterableOfE = dart.constFn(_internal.EfficientLengthIterable$(E)))();
    class EfficientLengthSkipIterable extends _internal.SkipIterable$(E) {
      static new(iterable, count) {
        return new (EfficientLengthSkipIterableOfE()).__(iterable, _internal._checkCount(count));
      }
      get length() {
        let length = dart.notNull(this[_iterable$][$length]) - dart.notNull(this[_skipCount]);
        if (length >= 0) return length;
        return 0;
      }
      skip(count) {
        return new (EfficientLengthSkipIterableOfE()).__(this[_iterable$], dart.notNull(this[_skipCount]) + dart.notNull(_internal._checkCount(count)));
      }
    }
    (EfficientLengthSkipIterable.__ = function(iterable, count) {
      EfficientLengthSkipIterable.__proto__.__.call(this, iterable, count);
    }).prototype = EfficientLengthSkipIterable.prototype;
    dart.addTypeTests(EfficientLengthSkipIterable);
    EfficientLengthSkipIterable.prototype[_is_EfficientLengthSkipIterable_default] = true;
    EfficientLengthSkipIterable[dart.implements] = () => [EfficientLengthIterableOfE()];
    dart.defineExtensionMethods(EfficientLengthSkipIterable, ['skip']);
    dart.defineExtensionAccessors(EfficientLengthSkipIterable, ['length']);
    return EfficientLengthSkipIterable;
  });
  _internal.EfficientLengthSkipIterable = _internal.EfficientLengthSkipIterable$();
  dart.addTypeTests(_internal.EfficientLengthSkipIterable, _is_EfficientLengthSkipIterable_default);
  _internal._checkCount = function(count) {
    core.ArgumentError.checkNotNull(count, "count");
    core.RangeError.checkNotNegative(count, "count");
    return count;
  };
  const _is_SkipIterator_default = Symbol('_is_SkipIterator_default');
  _internal.SkipIterator$ = dart.generic(E => {
    let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
    class SkipIterator extends core.Iterator$(E) {
      moveNext() {
        for (let i = 0; i < dart.notNull(this[_skipCount]); i++)
          this[_iterator].moveNext();
        this[_skipCount] = 0;
        return this[_iterator].moveNext();
      }
      get current() {
        return this[_iterator].current;
      }
    }
    (SkipIterator.new = function(iterator, skipCount) {
      this[_iterator] = iterator;
      this[_skipCount] = skipCount;
      if (!(dart.notNull(this[_skipCount]) >= 0)) dart.assertFailed();
    }).prototype = SkipIterator.prototype;
    dart.addTypeTests(SkipIterator);
    SkipIterator.prototype[_is_SkipIterator_default] = true;
    dart.setMethodSignature(SkipIterator, () => ({
      __proto__: dart.getMethods(SkipIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(SkipIterator, () => ({
      __proto__: dart.getGetters(SkipIterator.__proto__),
      current: E
    }));
    dart.setFieldSignature(SkipIterator, () => ({
      __proto__: dart.getFields(SkipIterator.__proto__),
      [_iterator]: dart.finalFieldType(IteratorOfE()),
      [_skipCount]: dart.fieldType(core.int)
    }));
    return SkipIterator;
  });
  _internal.SkipIterator = _internal.SkipIterator$();
  dart.addTypeTests(_internal.SkipIterator, _is_SkipIterator_default);
  const _is_SkipWhileIterable_default = Symbol('_is_SkipWhileIterable_default');
  _internal.SkipWhileIterable$ = dart.generic(E => {
    let SkipWhileIteratorOfE = () => (SkipWhileIteratorOfE = dart.constFn(_internal.SkipWhileIterator$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let ETobool = () => (ETobool = dart.constFn(dart.fnType(core.bool, [E])))();
    class SkipWhileIterable extends core.Iterable$(E) {
      get iterator() {
        return new (SkipWhileIteratorOfE()).new(this[_iterable$][$iterator], this[_f]);
      }
    }
    (SkipWhileIterable.new = function(iterable, f) {
      this[_iterable$] = iterable;
      this[_f] = f;
      SkipWhileIterable.__proto__.new.call(this);
    }).prototype = SkipWhileIterable.prototype;
    dart.addTypeTests(SkipWhileIterable);
    SkipWhileIterable.prototype[_is_SkipWhileIterable_default] = true;
    dart.setGetterSignature(SkipWhileIterable, () => ({
      __proto__: dart.getGetters(SkipWhileIterable.__proto__),
      iterator: core.Iterator$(E),
      [$iterator]: core.Iterator$(E)
    }));
    dart.setFieldSignature(SkipWhileIterable, () => ({
      __proto__: dart.getFields(SkipWhileIterable.__proto__),
      [_iterable$]: dart.finalFieldType(IterableOfE()),
      [_f]: dart.finalFieldType(ETobool())
    }));
    dart.defineExtensionAccessors(SkipWhileIterable, ['iterator']);
    return SkipWhileIterable;
  });
  _internal.SkipWhileIterable = _internal.SkipWhileIterable$();
  dart.addTypeTests(_internal.SkipWhileIterable, _is_SkipWhileIterable_default);
  const _hasSkipped = Symbol('_hasSkipped');
  const _is_SkipWhileIterator_default = Symbol('_is_SkipWhileIterator_default');
  _internal.SkipWhileIterator$ = dart.generic(E => {
    let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
    let ETobool = () => (ETobool = dart.constFn(dart.fnType(core.bool, [E])))();
    class SkipWhileIterator extends core.Iterator$(E) {
      moveNext() {
        if (!dart.test(this[_hasSkipped])) {
          this[_hasSkipped] = true;
          while (dart.test(this[_iterator].moveNext())) {
            if (!dart.test(this[_f](this[_iterator].current))) return true;
          }
        }
        return this[_iterator].moveNext();
      }
      get current() {
        return this[_iterator].current;
      }
    }
    (SkipWhileIterator.new = function(iterator, f) {
      this[_hasSkipped] = false;
      this[_iterator] = iterator;
      this[_f] = f;
    }).prototype = SkipWhileIterator.prototype;
    dart.addTypeTests(SkipWhileIterator);
    SkipWhileIterator.prototype[_is_SkipWhileIterator_default] = true;
    dart.setMethodSignature(SkipWhileIterator, () => ({
      __proto__: dart.getMethods(SkipWhileIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(SkipWhileIterator, () => ({
      __proto__: dart.getGetters(SkipWhileIterator.__proto__),
      current: E
    }));
    dart.setFieldSignature(SkipWhileIterator, () => ({
      __proto__: dart.getFields(SkipWhileIterator.__proto__),
      [_iterator]: dart.finalFieldType(IteratorOfE()),
      [_f]: dart.finalFieldType(ETobool()),
      [_hasSkipped]: dart.fieldType(core.bool)
    }));
    return SkipWhileIterator;
  });
  _internal.SkipWhileIterator = _internal.SkipWhileIterator$();
  dart.addTypeTests(_internal.SkipWhileIterator, _is_SkipWhileIterator_default);
  const _is_EmptyIterable_default = Symbol('_is_EmptyIterable_default');
  _internal.EmptyIterable$ = dart.generic(E => {
    let EmptyIteratorOfE = () => (EmptyIteratorOfE = dart.constFn(_internal.EmptyIterator$(E)))();
    let VoidToE = () => (VoidToE = dart.constFn(dart.fnType(E, [])))();
    let EAndEToE = () => (EAndEToE = dart.constFn(dart.fnType(E, [E, E])))();
    let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
    let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
    let _HashSetOfE = () => (_HashSetOfE = dart.constFn(collection._HashSet$(E)))();
    class EmptyIterable extends _internal.EfficientLengthIterable$(E) {
      get iterator() {
        return dart.const(new (EmptyIteratorOfE()).new());
      }
      forEach(action) {}
      get isEmpty() {
        return true;
      }
      get length() {
        return 0;
      }
      get first() {
        dart.throw(_internal.IterableElementError.noElement());
      }
      get last() {
        dart.throw(_internal.IterableElementError.noElement());
      }
      get single() {
        dart.throw(_internal.IterableElementError.noElement());
      }
      elementAt(index) {
        dart.throw(new core.RangeError.range(index, 0, 0, "index"));
      }
      contains(element) {
        return false;
      }
      every(test) {
        return true;
      }
      any(test) {
        return false;
      }
      firstWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      lastWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      singleWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      join(separator) {
        if (separator === void 0) separator = "";
        return "";
      }
      where(test) {
        return this;
      }
      map(T, f) {
        return new (_internal.EmptyIterable$(T)).new();
      }
      reduce(combine) {
        EAndEToE()._check(combine);
        dart.throw(_internal.IterableElementError.noElement());
      }
      fold(T, initialValue, combine) {
        return initialValue;
      }
      skip(count) {
        core.RangeError.checkNotNegative(count, "count");
        return this;
      }
      skipWhile(test) {
        return this;
      }
      take(count) {
        core.RangeError.checkNotNegative(count, "count");
        return this;
      }
      takeWhile(test) {
        return this;
      }
      toList(opts) {
        let growable = opts && 'growable' in opts ? opts.growable : true;
        return dart.test(growable) ? JSArrayOfE().of([]) : ListOfE().new(0);
      }
      toSet() {
        return new (_HashSetOfE()).new();
      }
    }
    (EmptyIterable.new = function() {
      EmptyIterable.__proto__.new.call(this);
    }).prototype = EmptyIterable.prototype;
    dart.addTypeTests(EmptyIterable);
    EmptyIterable.prototype[_is_EmptyIterable_default] = true;
    dart.setMethodSignature(EmptyIterable, () => ({
      __proto__: dart.getMethods(EmptyIterable.__proto__),
      firstWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$firstWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      lastWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$lastWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      singleWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$singleWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      reduce: dart.fnType(E, [core.Object]),
      [$reduce]: dart.fnType(E, [core.Object])
    }));
    dart.setGetterSignature(EmptyIterable, () => ({
      __proto__: dart.getGetters(EmptyIterable.__proto__),
      iterator: core.Iterator$(E),
      [$iterator]: core.Iterator$(E),
      length: core.int,
      [$length]: core.int
    }));
    dart.defineExtensionMethods(EmptyIterable, [
      'forEach',
      'elementAt',
      'contains',
      'every',
      'any',
      'firstWhere',
      'lastWhere',
      'singleWhere',
      'join',
      'where',
      'map',
      'reduce',
      'fold',
      'skip',
      'skipWhile',
      'take',
      'takeWhile',
      'toList',
      'toSet'
    ]);
    dart.defineExtensionAccessors(EmptyIterable, [
      'iterator',
      'isEmpty',
      'length',
      'first',
      'last',
      'single'
    ]);
    return EmptyIterable;
  });
  _internal.EmptyIterable = _internal.EmptyIterable$();
  dart.addTypeTests(_internal.EmptyIterable, _is_EmptyIterable_default);
  const _is_EmptyIterator_default = Symbol('_is_EmptyIterator_default');
  _internal.EmptyIterator$ = dart.generic(E => {
    let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
    class EmptyIterator extends core.Object {
      moveNext() {
        return false;
      }
      get current() {
        return null;
      }
    }
    (EmptyIterator.new = function() {
    }).prototype = EmptyIterator.prototype;
    dart.addTypeTests(EmptyIterator);
    EmptyIterator.prototype[_is_EmptyIterator_default] = true;
    EmptyIterator[dart.implements] = () => [IteratorOfE()];
    dart.setMethodSignature(EmptyIterator, () => ({
      __proto__: dart.getMethods(EmptyIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(EmptyIterator, () => ({
      __proto__: dart.getGetters(EmptyIterator.__proto__),
      current: E
    }));
    return EmptyIterator;
  });
  _internal.EmptyIterator = _internal.EmptyIterator$();
  dart.addTypeTests(_internal.EmptyIterator, _is_EmptyIterator_default);
  const _first = Symbol('_first');
  const _second = Symbol('_second');
  const _is_FollowedByIterable_default = Symbol('_is_FollowedByIterable_default');
  _internal.FollowedByIterable$ = dart.generic(E => {
    let EfficientLengthIterableOfE = () => (EfficientLengthIterableOfE = dart.constFn(_internal.EfficientLengthIterable$(E)))();
    let EfficientLengthFollowedByIterableOfE = () => (EfficientLengthFollowedByIterableOfE = dart.constFn(_internal.EfficientLengthFollowedByIterable$(E)))();
    let FollowedByIterableOfE = () => (FollowedByIterableOfE = dart.constFn(_internal.FollowedByIterable$(E)))();
    let FollowedByIteratorOfE = () => (FollowedByIteratorOfE = dart.constFn(_internal.FollowedByIterator$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    class FollowedByIterable extends core.Iterable$(E) {
      static firstEfficient(first, second) {
        if (EfficientLengthIterableOfE().is(second)) {
          return new (EfficientLengthFollowedByIterableOfE()).new(first, second);
        }
        return new (FollowedByIterableOfE()).new(first, second);
      }
      get iterator() {
        return new (FollowedByIteratorOfE()).new(this[_first], this[_second]);
      }
      get length() {
        return dart.notNull(this[_first][$length]) + dart.notNull(this[_second][$length]);
      }
      get isEmpty() {
        return dart.test(this[_first][$isEmpty]) && dart.test(this[_second][$isEmpty]);
      }
      get isNotEmpty() {
        return dart.test(this[_first][$isNotEmpty]) || dart.test(this[_second][$isNotEmpty]);
      }
      contains(value) {
        return dart.test(this[_first][$contains](value)) || dart.test(this[_second][$contains](value));
      }
      get first() {
        let iterator = this[_first][$iterator];
        if (dart.test(iterator.moveNext())) return iterator.current;
        return this[_second][$first];
      }
      get last() {
        let iterator = this[_second][$iterator];
        if (dart.test(iterator.moveNext())) {
          let last = iterator.current;
          while (dart.test(iterator.moveNext()))
            last = iterator.current;
          return last;
        }
        return this[_first][$last];
      }
    }
    (FollowedByIterable.new = function(first, second) {
      this[_first] = first;
      this[_second] = second;
      FollowedByIterable.__proto__.new.call(this);
    }).prototype = FollowedByIterable.prototype;
    dart.addTypeTests(FollowedByIterable);
    FollowedByIterable.prototype[_is_FollowedByIterable_default] = true;
    dart.setGetterSignature(FollowedByIterable, () => ({
      __proto__: dart.getGetters(FollowedByIterable.__proto__),
      iterator: core.Iterator$(E),
      [$iterator]: core.Iterator$(E)
    }));
    dart.setFieldSignature(FollowedByIterable, () => ({
      __proto__: dart.getFields(FollowedByIterable.__proto__),
      [_first]: dart.finalFieldType(IterableOfE()),
      [_second]: dart.finalFieldType(IterableOfE())
    }));
    dart.defineExtensionMethods(FollowedByIterable, ['contains']);
    dart.defineExtensionAccessors(FollowedByIterable, [
      'iterator',
      'length',
      'isEmpty',
      'isNotEmpty',
      'first',
      'last'
    ]);
    return FollowedByIterable;
  });
  _internal.FollowedByIterable = _internal.FollowedByIterable$();
  dart.addTypeTests(_internal.FollowedByIterable, _is_FollowedByIterable_default);
  const _is_EfficientLengthFollowedByIterable_default = Symbol('_is_EfficientLengthFollowedByIterable_default');
  _internal.EfficientLengthFollowedByIterable$ = dart.generic(E => {
    let EfficientLengthIterableOfE = () => (EfficientLengthIterableOfE = dart.constFn(_internal.EfficientLengthIterable$(E)))();
    let EfficientLengthFollowedByIterableOfE = () => (EfficientLengthFollowedByIterableOfE = dart.constFn(_internal.EfficientLengthFollowedByIterable$(E)))();
    class EfficientLengthFollowedByIterable extends _internal.FollowedByIterable$(E) {
      skip(count) {
        let firstLength = this[_first][$length];
        if (dart.notNull(count) >= dart.notNull(firstLength)) return this[_second][$skip](dart.notNull(count) - dart.notNull(firstLength));
        return new (EfficientLengthFollowedByIterableOfE()).new(EfficientLengthIterableOfE()._check(this[_first][$skip](count)), EfficientLengthIterableOfE()._check(this[_second]));
      }
      take(count) {
        let firstLength = this[_first][$length];
        if (dart.notNull(count) <= dart.notNull(firstLength)) return this[_first][$take](count);
        return new (EfficientLengthFollowedByIterableOfE()).new(EfficientLengthIterableOfE()._check(this[_first]), EfficientLengthIterableOfE()._check(this[_second][$take](dart.notNull(count) - dart.notNull(firstLength))));
      }
      elementAt(index) {
        let firstLength = this[_first][$length];
        if (dart.notNull(index) < dart.notNull(firstLength)) return this[_first][$elementAt](index);
        return this[_second][$elementAt](dart.notNull(index) - dart.notNull(firstLength));
      }
      get first() {
        if (dart.test(this[_first][$isNotEmpty])) return this[_first][$first];
        return this[_second][$first];
      }
      get last() {
        if (dart.test(this[_second][$isNotEmpty])) return this[_second][$last];
        return this[_first][$last];
      }
    }
    (EfficientLengthFollowedByIterable.new = function(first, second) {
      EfficientLengthFollowedByIterable.__proto__.new.call(this, first, second);
    }).prototype = EfficientLengthFollowedByIterable.prototype;
    dart.addTypeTests(EfficientLengthFollowedByIterable);
    EfficientLengthFollowedByIterable.prototype[_is_EfficientLengthFollowedByIterable_default] = true;
    EfficientLengthFollowedByIterable[dart.implements] = () => [EfficientLengthIterableOfE()];
    dart.defineExtensionMethods(EfficientLengthFollowedByIterable, ['skip', 'take', 'elementAt']);
    dart.defineExtensionAccessors(EfficientLengthFollowedByIterable, ['first', 'last']);
    return EfficientLengthFollowedByIterable;
  });
  _internal.EfficientLengthFollowedByIterable = _internal.EfficientLengthFollowedByIterable$();
  dart.addTypeTests(_internal.EfficientLengthFollowedByIterable, _is_EfficientLengthFollowedByIterable_default);
  const _nextIterable = Symbol('_nextIterable');
  const _currentIterator = Symbol('_currentIterator');
  const _is_FollowedByIterator_default = Symbol('_is_FollowedByIterator_default');
  _internal.FollowedByIterator$ = dart.generic(E => {
    let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    class FollowedByIterator extends core.Object {
      moveNext() {
        if (dart.test(this[_currentIterator].moveNext())) return true;
        if (this[_nextIterable] != null) {
          this[_currentIterator] = this[_nextIterable][$iterator];
          this[_nextIterable] = null;
          return this[_currentIterator].moveNext();
        }
        return false;
      }
      get current() {
        return this[_currentIterator].current;
      }
    }
    (FollowedByIterator.new = function(first, nextIterable) {
      this[_nextIterable] = nextIterable;
      this[_currentIterator] = first[$iterator];
    }).prototype = FollowedByIterator.prototype;
    dart.addTypeTests(FollowedByIterator);
    FollowedByIterator.prototype[_is_FollowedByIterator_default] = true;
    FollowedByIterator[dart.implements] = () => [IteratorOfE()];
    dart.setMethodSignature(FollowedByIterator, () => ({
      __proto__: dart.getMethods(FollowedByIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(FollowedByIterator, () => ({
      __proto__: dart.getGetters(FollowedByIterator.__proto__),
      current: E
    }));
    dart.setFieldSignature(FollowedByIterator, () => ({
      __proto__: dart.getFields(FollowedByIterator.__proto__),
      [_currentIterator]: dart.fieldType(IteratorOfE()),
      [_nextIterable]: dart.fieldType(IterableOfE())
    }));
    return FollowedByIterator;
  });
  _internal.FollowedByIterator = _internal.FollowedByIterator$();
  dart.addTypeTests(_internal.FollowedByIterator, _is_FollowedByIterator_default);
  const _is_WhereTypeIterable_default = Symbol('_is_WhereTypeIterable_default');
  _internal.WhereTypeIterable$ = dart.generic(T => {
    let WhereTypeIteratorOfT = () => (WhereTypeIteratorOfT = dart.constFn(_internal.WhereTypeIterator$(T)))();
    class WhereTypeIterable extends core.Iterable$(T) {
      get iterator() {
        return new (WhereTypeIteratorOfT()).new(this[_source][$iterator]);
      }
    }
    (WhereTypeIterable.new = function(source) {
      this[_source] = source;
      WhereTypeIterable.__proto__.new.call(this);
    }).prototype = WhereTypeIterable.prototype;
    dart.addTypeTests(WhereTypeIterable);
    WhereTypeIterable.prototype[_is_WhereTypeIterable_default] = true;
    dart.setGetterSignature(WhereTypeIterable, () => ({
      __proto__: dart.getGetters(WhereTypeIterable.__proto__),
      iterator: core.Iterator$(T),
      [$iterator]: core.Iterator$(T)
    }));
    dart.setFieldSignature(WhereTypeIterable, () => ({
      __proto__: dart.getFields(WhereTypeIterable.__proto__),
      [_source]: dart.finalFieldType(IterableOfObject())
    }));
    dart.defineExtensionAccessors(WhereTypeIterable, ['iterator']);
    return WhereTypeIterable;
  });
  _internal.WhereTypeIterable = _internal.WhereTypeIterable$();
  dart.addTypeTests(_internal.WhereTypeIterable, _is_WhereTypeIterable_default);
  const _is_WhereTypeIterator_default = Symbol('_is_WhereTypeIterator_default');
  _internal.WhereTypeIterator$ = dart.generic(T => {
    let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
    class WhereTypeIterator extends core.Object {
      moveNext() {
        while (dart.test(this[_source].moveNext())) {
          if (T.is(this[_source].current)) return true;
        }
        return false;
      }
      get current() {
        return T._check(this[_source].current);
      }
    }
    (WhereTypeIterator.new = function(source) {
      this[_source] = source;
    }).prototype = WhereTypeIterator.prototype;
    dart.addTypeTests(WhereTypeIterator);
    WhereTypeIterator.prototype[_is_WhereTypeIterator_default] = true;
    WhereTypeIterator[dart.implements] = () => [IteratorOfT()];
    dart.setMethodSignature(WhereTypeIterator, () => ({
      __proto__: dart.getMethods(WhereTypeIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(WhereTypeIterator, () => ({
      __proto__: dart.getGetters(WhereTypeIterator.__proto__),
      current: T
    }));
    dart.setFieldSignature(WhereTypeIterator, () => ({
      __proto__: dart.getFields(WhereTypeIterator.__proto__),
      [_source]: dart.finalFieldType(IteratorOfObject())
    }));
    return WhereTypeIterator;
  });
  _internal.WhereTypeIterator = _internal.WhereTypeIterator$();
  dart.addTypeTests(_internal.WhereTypeIterator, _is_WhereTypeIterator_default);
  _internal.IterableElementError = class IterableElementError extends core.Object {
    static noElement() {
      return new core.StateError.new("No element");
    }
    static tooMany() {
      return new core.StateError.new("Too many elements");
    }
    static tooFew() {
      return new core.StateError.new("Too few elements");
    }
  };
  (_internal.IterableElementError.new = function() {
  }).prototype = _internal.IterableElementError.prototype;
  dart.addTypeTests(_internal.IterableElementError);
  const _is_FixedLengthListMixin_default = Symbol('_is_FixedLengthListMixin_default');
  _internal.FixedLengthListMixin$ = dart.generic(E => {
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    class FixedLengthListMixin extends core.Object {
      set length(newLength) {
        dart.throw(new core.UnsupportedError.new("Cannot change the length of a fixed-length list"));
      }
      add(value) {
        E._check(value);
        dart.throw(new core.UnsupportedError.new("Cannot add to a fixed-length list"));
      }
      insert(index, value) {
        E._check(value);
        dart.throw(new core.UnsupportedError.new("Cannot add to a fixed-length list"));
      }
      insertAll(at, iterable) {
        IterableOfE()._check(iterable);
        dart.throw(new core.UnsupportedError.new("Cannot add to a fixed-length list"));
      }
      addAll(iterable) {
        IterableOfE()._check(iterable);
        dart.throw(new core.UnsupportedError.new("Cannot add to a fixed-length list"));
      }
      remove(element) {
        dart.throw(new core.UnsupportedError.new("Cannot remove from a fixed-length list"));
      }
      removeWhere(test) {
        dart.throw(new core.UnsupportedError.new("Cannot remove from a fixed-length list"));
      }
      retainWhere(test) {
        dart.throw(new core.UnsupportedError.new("Cannot remove from a fixed-length list"));
      }
      clear() {
        dart.throw(new core.UnsupportedError.new("Cannot clear a fixed-length list"));
      }
      removeAt(index) {
        dart.throw(new core.UnsupportedError.new("Cannot remove from a fixed-length list"));
      }
      removeLast() {
        dart.throw(new core.UnsupportedError.new("Cannot remove from a fixed-length list"));
      }
      removeRange(start, end) {
        dart.throw(new core.UnsupportedError.new("Cannot remove from a fixed-length list"));
      }
      replaceRange(start, end, iterable) {
        IterableOfE()._check(iterable);
        dart.throw(new core.UnsupportedError.new("Cannot remove from a fixed-length list"));
      }
    }
    (FixedLengthListMixin.new = function() {
    }).prototype = FixedLengthListMixin.prototype;
    dart.addTypeTests(FixedLengthListMixin);
    FixedLengthListMixin.prototype[_is_FixedLengthListMixin_default] = true;
    dart.setMethodSignature(FixedLengthListMixin, () => ({
      __proto__: dart.getMethods(FixedLengthListMixin.__proto__),
      add: dart.fnType(dart.void, [core.Object]),
      [$add]: dart.fnType(dart.void, [core.Object]),
      insert: dart.fnType(dart.void, [core.int, core.Object]),
      [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
      insertAll: dart.fnType(dart.void, [core.int, core.Object]),
      [$insertAll]: dart.fnType(dart.void, [core.int, core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      [$addAll]: dart.fnType(dart.void, [core.Object]),
      remove: dart.fnType(core.bool, [core.Object]),
      [$remove]: dart.fnType(core.bool, [core.Object]),
      removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      [$retainWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      clear: dart.fnType(dart.void, []),
      [$clear]: dart.fnType(dart.void, []),
      removeAt: dart.fnType(E, [core.int]),
      [$removeAt]: dart.fnType(E, [core.int]),
      removeLast: dart.fnType(E, []),
      [$removeLast]: dart.fnType(E, []),
      removeRange: dart.fnType(dart.void, [core.int, core.int]),
      [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
      replaceRange: dart.fnType(dart.void, [core.int, core.int, core.Object]),
      [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object])
    }));
    dart.setSetterSignature(FixedLengthListMixin, () => ({
      __proto__: dart.getSetters(FixedLengthListMixin.__proto__),
      length: core.int,
      [$length]: core.int
    }));
    dart.defineExtensionMethods(FixedLengthListMixin, [
      'add',
      'insert',
      'insertAll',
      'addAll',
      'remove',
      'removeWhere',
      'retainWhere',
      'clear',
      'removeAt',
      'removeLast',
      'removeRange',
      'replaceRange'
    ]);
    dart.defineExtensionAccessors(FixedLengthListMixin, ['length']);
    return FixedLengthListMixin;
  });
  _internal.FixedLengthListMixin = _internal.FixedLengthListMixin$();
  dart.addTypeTests(_internal.FixedLengthListMixin, _is_FixedLengthListMixin_default);
  const _is_FixedLengthListBase_default = Symbol('_is_FixedLengthListBase_default');
  _internal.FixedLengthListBase$ = dart.generic(E => {
    const ListBase_FixedLengthListMixin$ = class ListBase_FixedLengthListMixin extends collection.ListBase$(E) {};
    (ListBase_FixedLengthListMixin$.new = function() {
    }).prototype = ListBase_FixedLengthListMixin$.prototype;
    dart.applyMixin(ListBase_FixedLengthListMixin$, _internal.FixedLengthListMixin$(E));
    class FixedLengthListBase extends ListBase_FixedLengthListMixin$ {}
    (FixedLengthListBase.new = function() {
    }).prototype = FixedLengthListBase.prototype;
    dart.addTypeTests(FixedLengthListBase);
    FixedLengthListBase.prototype[_is_FixedLengthListBase_default] = true;
    return FixedLengthListBase;
  });
  _internal.FixedLengthListBase = _internal.FixedLengthListBase$();
  dart.addTypeTests(_internal.FixedLengthListBase, _is_FixedLengthListBase_default);
  const _backedList = Symbol('_backedList');
  _internal._ListIndicesIterable = class _ListIndicesIterable extends _internal.ListIterable$(core.int) {
    get length() {
      return this[_backedList][$length];
    }
    elementAt(index) {
      core.RangeError.checkValidIndex(index, this);
      return index;
    }
  };
  (_internal._ListIndicesIterable.new = function(backedList) {
    this[_backedList] = backedList;
    _internal._ListIndicesIterable.__proto__.new.call(this);
  }).prototype = _internal._ListIndicesIterable.prototype;
  dart.addTypeTests(_internal._ListIndicesIterable);
  dart.setMethodSignature(_internal._ListIndicesIterable, () => ({
    __proto__: dart.getMethods(_internal._ListIndicesIterable.__proto__),
    elementAt: dart.fnType(core.int, [core.int]),
    [$elementAt]: dart.fnType(core.int, [core.int])
  }));
  dart.setGetterSignature(_internal._ListIndicesIterable, () => ({
    __proto__: dart.getGetters(_internal._ListIndicesIterable.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.setFieldSignature(_internal._ListIndicesIterable, () => ({
    __proto__: dart.getFields(_internal._ListIndicesIterable.__proto__),
    [_backedList]: dart.fieldType(core.List)
  }));
  dart.defineExtensionMethods(_internal._ListIndicesIterable, ['elementAt']);
  dart.defineExtensionAccessors(_internal._ListIndicesIterable, ['length']);
  const _values = Symbol('_values');
  const _is__UnmodifiableMapMixin_default = Symbol('_is__UnmodifiableMapMixin_default');
  collection._UnmodifiableMapMixin$ = dart.generic((K, V) => {
    let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
    let MapEntryOfK$V = () => (MapEntryOfK$V = dart.constFn(core.MapEntry$(K, V)))();
    let IterableOfMapEntryOfK$V = () => (IterableOfMapEntryOfK$V = dart.constFn(core.Iterable$(MapEntryOfK$V())))();
    let KAndVToV = () => (KAndVToV = dart.constFn(dart.fnType(V, [K, V])))();
    let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
    let VToV = () => (VToV = dart.constFn(dart.fnType(V, [V])))();
    class _UnmodifiableMapMixin extends core.Object {
      _set(key, value) {
        K._check(key);
        V._check(value);
        dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
        return value;
      }
      addAll(other) {
        MapOfK$V()._check(other);
        dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
      }
      addEntries(entries) {
        IterableOfMapEntryOfK$V()._check(entries);
        dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
      }
      clear() {
        dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
      }
      remove(key) {
        dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
      }
      removeWhere(test) {
        dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
      }
      putIfAbsent(key, ifAbsent) {
        K._check(key);
        VoidToV()._check(ifAbsent);
        dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
      }
      update(key, update, opts) {
        K._check(key);
        VToV()._check(update);
        let ifAbsent = opts && 'ifAbsent' in opts ? opts.ifAbsent : null;
        VoidToV()._check(ifAbsent);
        dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
      }
      updateAll(update) {
        KAndVToV()._check(update);
        dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
      }
    }
    (_UnmodifiableMapMixin.new = function() {
    }).prototype = _UnmodifiableMapMixin.prototype;
    _UnmodifiableMapMixin.prototype[dart.isMap] = true;
    dart.addTypeTests(_UnmodifiableMapMixin);
    _UnmodifiableMapMixin.prototype[_is__UnmodifiableMapMixin_default] = true;
    _UnmodifiableMapMixin[dart.implements] = () => [MapOfK$V()];
    dart.setMethodSignature(_UnmodifiableMapMixin, () => ({
      __proto__: dart.getMethods(_UnmodifiableMapMixin.__proto__),
      _set: dart.fnType(dart.void, [core.Object, core.Object]),
      [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      [$addAll]: dart.fnType(dart.void, [core.Object]),
      addEntries: dart.fnType(dart.void, [core.Object]),
      [$addEntries]: dart.fnType(dart.void, [core.Object]),
      clear: dart.fnType(dart.void, []),
      [$clear]: dart.fnType(dart.void, []),
      remove: dart.fnType(V, [core.Object]),
      [$remove]: dart.fnType(V, [core.Object]),
      removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [K, V])]),
      [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [K, V])]),
      putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
      [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
      update: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
      [$update]: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
      updateAll: dart.fnType(dart.void, [core.Object]),
      [$updateAll]: dart.fnType(dart.void, [core.Object])
    }));
    dart.defineExtensionMethods(_UnmodifiableMapMixin, [
      '_set',
      'addAll',
      'addEntries',
      'clear',
      'remove',
      'removeWhere',
      'putIfAbsent',
      'update',
      'updateAll'
    ]);
    return _UnmodifiableMapMixin;
  });
  collection._UnmodifiableMapMixin = collection._UnmodifiableMapMixin$();
  dart.addTypeTests(collection._UnmodifiableMapMixin, _is__UnmodifiableMapMixin_default);
  const _is_UnmodifiableMapBase_default = Symbol('_is_UnmodifiableMapBase_default');
  collection.UnmodifiableMapBase$ = dart.generic((K, V) => {
    const MapBase__UnmodifiableMapMixin$ = class MapBase__UnmodifiableMapMixin extends collection.MapBase$(K, V) {};
    (MapBase__UnmodifiableMapMixin$.new = function() {
    }).prototype = MapBase__UnmodifiableMapMixin$.prototype;
    dart.applyMixin(MapBase__UnmodifiableMapMixin$, collection._UnmodifiableMapMixin$(K, V));
    class UnmodifiableMapBase extends MapBase__UnmodifiableMapMixin$ {}
    (UnmodifiableMapBase.new = function() {
    }).prototype = UnmodifiableMapBase.prototype;
    dart.addTypeTests(UnmodifiableMapBase);
    UnmodifiableMapBase.prototype[_is_UnmodifiableMapBase_default] = true;
    return UnmodifiableMapBase;
  });
  collection.UnmodifiableMapBase = collection.UnmodifiableMapBase$();
  dart.addTypeTests(collection.UnmodifiableMapBase, _is_UnmodifiableMapBase_default);
  const _is_ListMapView_default = Symbol('_is_ListMapView_default');
  _internal.ListMapView$ = dart.generic(E => {
    let SubListIterableOfE = () => (SubListIterableOfE = dart.constFn(_internal.SubListIterable$(E)))();
    let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
    class ListMapView extends collection.UnmodifiableMapBase$(core.int, E) {
      _get(key) {
        return dart.test(this.containsKey(key)) ? this[_values][$_get](core.int._check(key)) : null;
      }
      get length() {
        return this[_values][$length];
      }
      get values() {
        return new (SubListIterableOfE()).new(this[_values], 0, null);
      }
      get keys() {
        return new _internal._ListIndicesIterable.new(this[_values]);
      }
      get isEmpty() {
        return this[_values][$isEmpty];
      }
      get isNotEmpty() {
        return this[_values][$isNotEmpty];
      }
      containsValue(value) {
        return this[_values][$contains](value);
      }
      containsKey(key) {
        return core.int.is(key) && dart.notNull(key) >= 0 && dart.notNull(key) < dart.notNull(this.length);
      }
      forEach(f) {
        let length = this[_values][$length];
        for (let i = 0; i < dart.notNull(length); i++) {
          f(i, this[_values][$_get](i));
          if (length != this[_values][$length]) {
            dart.throw(new core.ConcurrentModificationError.new(this[_values]));
          }
        }
      }
    }
    (ListMapView.new = function(values) {
      this[_values] = values;
    }).prototype = ListMapView.prototype;
    dart.addTypeTests(ListMapView);
    ListMapView.prototype[_is_ListMapView_default] = true;
    dart.setMethodSignature(ListMapView, () => ({
      __proto__: dart.getMethods(ListMapView.__proto__),
      _get: dart.fnType(E, [core.Object]),
      [$_get]: dart.fnType(E, [core.Object]),
      containsValue: dart.fnType(core.bool, [core.Object]),
      [$containsValue]: dart.fnType(core.bool, [core.Object]),
      containsKey: dart.fnType(core.bool, [core.Object]),
      [$containsKey]: dart.fnType(core.bool, [core.Object]),
      forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [core.int, E])]),
      [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.int, E])])
    }));
    dart.setGetterSignature(ListMapView, () => ({
      __proto__: dart.getGetters(ListMapView.__proto__),
      length: core.int,
      [$length]: core.int,
      values: core.Iterable$(E),
      [$values]: core.Iterable$(E),
      keys: core.Iterable$(core.int),
      [$keys]: core.Iterable$(core.int),
      isEmpty: core.bool,
      [$isEmpty]: core.bool,
      isNotEmpty: core.bool,
      [$isNotEmpty]: core.bool
    }));
    dart.setFieldSignature(ListMapView, () => ({
      __proto__: dart.getFields(ListMapView.__proto__),
      [_values]: dart.fieldType(ListOfE())
    }));
    dart.defineExtensionMethods(ListMapView, ['_get', 'containsValue', 'containsKey', 'forEach']);
    dart.defineExtensionAccessors(ListMapView, [
      'length',
      'values',
      'keys',
      'isEmpty',
      'isNotEmpty'
    ]);
    return ListMapView;
  });
  _internal.ListMapView = _internal.ListMapView$();
  dart.addTypeTests(_internal.ListMapView, _is_ListMapView_default);
  const _is_ReversedListIterable_default = Symbol('_is_ReversedListIterable_default');
  _internal.ReversedListIterable$ = dart.generic(E => {
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    class ReversedListIterable extends _internal.ListIterable$(E) {
      get length() {
        return this[_source][$length];
      }
      elementAt(index) {
        return this[_source][$elementAt](dart.notNull(this[_source][$length]) - 1 - dart.notNull(index));
      }
    }
    (ReversedListIterable.new = function(source) {
      this[_source] = source;
      ReversedListIterable.__proto__.new.call(this);
    }).prototype = ReversedListIterable.prototype;
    dart.addTypeTests(ReversedListIterable);
    ReversedListIterable.prototype[_is_ReversedListIterable_default] = true;
    dart.setMethodSignature(ReversedListIterable, () => ({
      __proto__: dart.getMethods(ReversedListIterable.__proto__),
      elementAt: dart.fnType(E, [core.int]),
      [$elementAt]: dart.fnType(E, [core.int])
    }));
    dart.setGetterSignature(ReversedListIterable, () => ({
      __proto__: dart.getGetters(ReversedListIterable.__proto__),
      length: core.int,
      [$length]: core.int
    }));
    dart.setFieldSignature(ReversedListIterable, () => ({
      __proto__: dart.getFields(ReversedListIterable.__proto__),
      [_source]: dart.fieldType(IterableOfE())
    }));
    dart.defineExtensionMethods(ReversedListIterable, ['elementAt']);
    dart.defineExtensionAccessors(ReversedListIterable, ['length']);
    return ReversedListIterable;
  });
  _internal.ReversedListIterable = _internal.ReversedListIterable$();
  dart.addTypeTests(_internal.ReversedListIterable, _is_ReversedListIterable_default);
  _internal.UnmodifiableListError = class UnmodifiableListError extends core.Object {
    static add() {
      return new core.UnsupportedError.new("Cannot add to unmodifiable List");
    }
    static change() {
      return new core.UnsupportedError.new("Cannot change the content of an unmodifiable List");
    }
    static length() {
      return new core.UnsupportedError.new("Cannot change length of unmodifiable List");
    }
    static remove() {
      return new core.UnsupportedError.new("Cannot remove from unmodifiable List");
    }
  };
  (_internal.UnmodifiableListError.new = function() {
  }).prototype = _internal.UnmodifiableListError.prototype;
  dart.addTypeTests(_internal.UnmodifiableListError);
  _internal.NonGrowableListError = class NonGrowableListError extends core.Object {
    static add() {
      return new core.UnsupportedError.new("Cannot add to non-growable List");
    }
    static length() {
      return new core.UnsupportedError.new("Cannot change length of non-growable List");
    }
    static remove() {
      return new core.UnsupportedError.new("Cannot remove from non-growable List");
    }
  };
  (_internal.NonGrowableListError.new = function() {
  }).prototype = _internal.NonGrowableListError.prototype;
  dart.addTypeTests(_internal.NonGrowableListError);
  _internal.makeListFixedLength = function(E, growableList) {
    _interceptors.JSArray.markFixedList(growableList);
    return growableList;
  };
  _internal.makeFixedListUnmodifiable = function(E, fixedLengthList) {
    _interceptors.JSArray.markUnmodifiableList(fixedLengthList);
    return fixedLengthList;
  };
  dart.defineLazy(_internal, {
    /*_internal.printToZone*/get printToZone() {
      return null;
    },
    set printToZone(_) {}
  });
  _internal.printToConsole = function(line) {
    _js_primitives.printString(dart.str(line));
  };
  _internal.Sort = class Sort extends core.Object {
    static sort(E, a, compare) {
      _internal.Sort._doSort(E, a, 0, dart.notNull(a[$length]) - 1, compare);
    }
    static sortRange(E, a, from, to, compare) {
      if (dart.notNull(from) < 0 || dart.notNull(to) > dart.notNull(a[$length]) || dart.notNull(to) < dart.notNull(from)) {
        dart.throw("OutOfRange");
      }
      _internal.Sort._doSort(E, a, from, dart.notNull(to) - 1, compare);
    }
    static _doSort(E, a, left, right, compare) {
      if (dart.notNull(right) - dart.notNull(left) <= 32) {
        _internal.Sort._insertionSort(E, a, left, right, compare);
      } else {
        _internal.Sort._dualPivotQuicksort(E, a, left, right, compare);
      }
    }
    static _insertionSort(E, a, left, right, compare) {
      for (let i = dart.notNull(left) + 1; i <= dart.notNull(right); i++) {
        let el = a[$_get](i);
        let j = i;
        while (j > dart.notNull(left) && dart.notNull(compare(a[$_get](j - 1), el)) > 0) {
          a[$_set](j, a[$_get](j - 1));
          j--;
        }
        a[$_set](j, el);
      }
    }
    static _dualPivotQuicksort(E, a, left, right, compare) {
      if (!(dart.notNull(right) - dart.notNull(left) > 32)) dart.assertFailed();
      let sixth = ((dart.notNull(right) - dart.notNull(left) + 1) / 6)[$truncate]();
      let index1 = dart.notNull(left) + sixth;
      let index5 = dart.notNull(right) - sixth;
      let index3 = ((dart.notNull(left) + dart.notNull(right)) / 2)[$truncate]();
      let index2 = index3 - sixth;
      let index4 = index3 + sixth;
      let el1 = a[$_get](index1);
      let el2 = a[$_get](index2);
      let el3 = a[$_get](index3);
      let el4 = a[$_get](index4);
      let el5 = a[$_get](index5);
      if (dart.notNull(compare(el1, el2)) > 0) {
        let t = el1;
        el1 = el2;
        el2 = t;
      }
      if (dart.notNull(compare(el4, el5)) > 0) {
        let t = el4;
        el4 = el5;
        el5 = t;
      }
      if (dart.notNull(compare(el1, el3)) > 0) {
        let t = el1;
        el1 = el3;
        el3 = t;
      }
      if (dart.notNull(compare(el2, el3)) > 0) {
        let t = el2;
        el2 = el3;
        el3 = t;
      }
      if (dart.notNull(compare(el1, el4)) > 0) {
        let t = el1;
        el1 = el4;
        el4 = t;
      }
      if (dart.notNull(compare(el3, el4)) > 0) {
        let t = el3;
        el3 = el4;
        el4 = t;
      }
      if (dart.notNull(compare(el2, el5)) > 0) {
        let t = el2;
        el2 = el5;
        el5 = t;
      }
      if (dart.notNull(compare(el2, el3)) > 0) {
        let t = el2;
        el2 = el3;
        el3 = t;
      }
      if (dart.notNull(compare(el4, el5)) > 0) {
        let t = el4;
        el4 = el5;
        el5 = t;
      }
      let pivot1 = el2;
      let pivot2 = el4;
      a[$_set](index1, el1);
      a[$_set](index3, el3);
      a[$_set](index5, el5);
      a[$_set](index2, a[$_get](left));
      a[$_set](index4, a[$_get](right));
      let less = dart.notNull(left) + 1;
      let great = dart.notNull(right) - 1;
      let pivots_are_equal = compare(pivot1, pivot2) === 0;
      if (pivots_are_equal) {
        let pivot = pivot1;
        for (let k = less; k <= great; k++) {
          let ak = a[$_get](k);
          let comp = compare(ak, pivot);
          if (comp === 0) continue;
          if (dart.notNull(comp) < 0) {
            if (k !== less) {
              a[$_set](k, a[$_get](less));
              a[$_set](less, ak);
            }
            less++;
          } else {
            while (true) {
              comp = compare(a[$_get](great), pivot);
              if (dart.notNull(comp) > 0) {
                great--;
                continue;
              } else if (dart.notNull(comp) < 0) {
                a[$_set](k, a[$_get](less));
                a[$_set](less++, a[$_get](great));
                a[$_set](great--, ak);
                break;
              } else {
                a[$_set](k, a[$_get](great));
                a[$_set](great--, ak);
                break;
              }
            }
          }
        }
      } else {
        for (let k = less; k <= great; k++) {
          let ak = a[$_get](k);
          let comp_pivot1 = compare(ak, pivot1);
          if (dart.notNull(comp_pivot1) < 0) {
            if (k !== less) {
              a[$_set](k, a[$_get](less));
              a[$_set](less, ak);
            }
            less++;
          } else {
            let comp_pivot2 = compare(ak, pivot2);
            if (dart.notNull(comp_pivot2) > 0) {
              while (true) {
                let comp = compare(a[$_get](great), pivot2);
                if (dart.notNull(comp) > 0) {
                  great--;
                  if (great < k) break;
                  continue;
                } else {
                  comp = compare(a[$_get](great), pivot1);
                  if (dart.notNull(comp) < 0) {
                    a[$_set](k, a[$_get](less));
                    a[$_set](less++, a[$_get](great));
                    a[$_set](great--, ak);
                  } else {
                    a[$_set](k, a[$_get](great));
                    a[$_set](great--, ak);
                  }
                  break;
                }
              }
            }
          }
        }
      }
      a[$_set](left, a[$_get](less - 1));
      a[$_set](less - 1, pivot1);
      a[$_set](right, a[$_get](great + 1));
      a[$_set](great + 1, pivot2);
      _internal.Sort._doSort(E, a, left, less - 2, compare);
      _internal.Sort._doSort(E, a, great + 2, right, compare);
      if (pivots_are_equal) {
        return;
      }
      if (less < index1 && great > index5) {
        while (compare(a[$_get](less), pivot1) === 0) {
          less++;
        }
        while (compare(a[$_get](great), pivot2) === 0) {
          great--;
        }
        for (let k = less; k <= great; k++) {
          let ak = a[$_get](k);
          let comp_pivot1 = compare(ak, pivot1);
          if (comp_pivot1 === 0) {
            if (k !== less) {
              a[$_set](k, a[$_get](less));
              a[$_set](less, ak);
            }
            less++;
          } else {
            let comp_pivot2 = compare(ak, pivot2);
            if (comp_pivot2 === 0) {
              while (true) {
                let comp = compare(a[$_get](great), pivot2);
                if (comp === 0) {
                  great--;
                  if (great < k) break;
                  continue;
                } else {
                  comp = compare(a[$_get](great), pivot1);
                  if (dart.notNull(comp) < 0) {
                    a[$_set](k, a[$_get](less));
                    a[$_set](less++, a[$_get](great));
                    a[$_set](great--, ak);
                  } else {
                    a[$_set](k, a[$_get](great));
                    a[$_set](great--, ak);
                  }
                  break;
                }
              }
            }
          }
        }
        _internal.Sort._doSort(E, a, less, great, compare);
      } else {
        _internal.Sort._doSort(E, a, less, great, compare);
      }
    }
  };
  (_internal.Sort.new = function() {
  }).prototype = _internal.Sort.prototype;
  dart.addTypeTests(_internal.Sort);
  dart.defineLazy(_internal.Sort, {
    /*_internal.Sort._INSERTION_SORT_THRESHOLD*/get _INSERTION_SORT_THRESHOLD() {
      return 32;
    }
  });
  const _name = Symbol('_name');
  _internal.Symbol = class Symbol extends core.Object {
    _equals(other) {
      return _internal.Symbol.is(other) && this[_name] == other[_name];
    }
    get hashCode() {
      let hash = this._hashCode;
      if (hash != null) return hash;
      let arbitraryPrime = 664597;
      hash = 536870911 & arbitraryPrime * dart.hashCode(this[_name]);
      this._hashCode = hash;
      return hash;
    }
    toString() {
      return "Symbol(\"" + dart.str(this[_name]) + "\")";
    }
    static getName(symbol) {
      return symbol[_name];
    }
    static validatePublicSymbol(name) {
      if (name[$isEmpty] || dart.test(_internal.Symbol.publicSymbolPattern.hasMatch(name))) return name;
      if (name[$startsWith]("_")) {
        dart.throw(new core.ArgumentError.new("\"" + dart.str(name) + "\" is a private identifier"));
      }
      dart.throw(new core.ArgumentError.new("\"" + dart.str(name) + "\" is not a valid (qualified) symbol name"));
    }
    static isValidSymbol(name) {
      return name[$isEmpty] || dart.test(_internal.Symbol.symbolPattern.hasMatch(name));
    }
    static computeUnmangledName(symbol) {
      return symbol[_name];
    }
  };
  (_internal.Symbol.new = function(name) {
    this[_name] = name;
  }).prototype = _internal.Symbol.prototype;
  (_internal.Symbol.unvalidated = function(name) {
    this[_name] = name;
  }).prototype = _internal.Symbol.prototype;
  (_internal.Symbol.validated = function(name) {
    this[_name] = _internal.Symbol.validatePublicSymbol(name);
  }).prototype = _internal.Symbol.prototype;
  dart.addTypeTests(_internal.Symbol);
  _internal.Symbol[dart.implements] = () => [core.Symbol];
  dart.setFieldSignature(_internal.Symbol, () => ({
    __proto__: dart.getFields(_internal.Symbol.__proto__),
    [_name]: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(_internal.Symbol, ['_equals', 'toString']);
  dart.defineExtensionAccessors(_internal.Symbol, ['hashCode']);
  dart.defineLazy(_internal.Symbol, {
    /*_internal.Symbol.reservedWordRE*/get reservedWordRE() {
      return "(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|d(?:efault|o)|" + "e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ull)|" + "ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|" + "v(?:ar|oid)|w(?:hile|ith))";
    },
    /*_internal.Symbol.publicIdentifierRE*/get publicIdentifierRE() {
      return "(?!" + "(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|d(?:efault|o)|e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ull)|ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|v(?:ar|oid)|w(?:hile|ith))" + "\\b(?!\\$))[a-zA-Z$][\\w$]*";
    },
    /*_internal.Symbol.identifierRE*/get identifierRE() {
      return "(?!" + "(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|d(?:efault|o)|e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ull)|ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|v(?:ar|oid)|w(?:hile|ith))" + "\\b(?!\\$))[a-zA-Z$_][\\w$]*";
    },
    /*_internal.Symbol.operatorRE*/get operatorRE() {
      return "(?:[\\-+*/%&|^]|\\[\\]=?|==|~/?|<[<=]?|>[>=]?|unary-)";
    },
    /*_internal.Symbol.publicSymbolPattern*/get publicSymbolPattern() {
      return core.RegExp.new("^(?:" + "(?:[\\-+*/%&|^]|\\[\\]=?|==|~/?|<[<=]?|>[>=]?|unary-)" + "$|" + "(?!(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|d(?:efault|o)|e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ull)|ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|v(?:ar|oid)|w(?:hile|ith))\\b(?!\\$))[a-zA-Z$][\\w$]*" + "(?:=?$|[.](?!$)))+?$");
    },
    /*_internal.Symbol.symbolPattern*/get symbolPattern() {
      return core.RegExp.new("^(?:" + "(?:[\\-+*/%&|^]|\\[\\]=?|==|~/?|<[<=]?|>[>=]?|unary-)" + "$|" + "(?!(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|d(?:efault|o)|e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ull)|ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|v(?:ar|oid)|w(?:hile|ith))\\b(?!\\$))[a-zA-Z$_][\\w$]*" + "(?:=?$|[.](?!$)))+?$");
    }
  });
  const _next = Symbol('_next');
  const _previous = Symbol('_previous');
  const _list = Symbol('_list');
  const _is_IterableBase_default = Symbol('_is_IterableBase_default');
  collection.IterableBase$ = dart.generic(E => {
    class IterableBase extends core.Iterable$(E) {
      static iterableToShortString(iterable, leftDelimiter, rightDelimiter) {
        if (leftDelimiter === void 0) leftDelimiter = "(";
        if (rightDelimiter === void 0) rightDelimiter = ")";
        if (dart.test(collection._isToStringVisiting(iterable))) {
          if (leftDelimiter === "(" && rightDelimiter === ")") {
            return "(...)";
          }
          return dart.str(leftDelimiter) + "..." + dart.str(rightDelimiter);
        }
        let parts = JSArrayOfString().of([]);
        collection._toStringVisiting[$add](iterable);
        try {
          collection._iterablePartsToStrings(iterable, parts);
        } finally {
          if (!core.identical(collection._toStringVisiting[$last], iterable)) dart.assertFailed();
          collection._toStringVisiting[$removeLast]();
        }
        return (() => {
          let _ = new core.StringBuffer.new(leftDelimiter);
          _.writeAll(parts, ", ");
          _.write(rightDelimiter);
          return _;
        })().toString();
      }
      static iterableToFullString(iterable, leftDelimiter, rightDelimiter) {
        if (leftDelimiter === void 0) leftDelimiter = "(";
        if (rightDelimiter === void 0) rightDelimiter = ")";
        if (dart.test(collection._isToStringVisiting(iterable))) {
          return dart.str(leftDelimiter) + "..." + dart.str(rightDelimiter);
        }
        let buffer = new core.StringBuffer.new(leftDelimiter);
        collection._toStringVisiting[$add](iterable);
        try {
          buffer.writeAll(iterable, ", ");
        } finally {
          if (!core.identical(collection._toStringVisiting[$last], iterable)) dart.assertFailed();
          collection._toStringVisiting[$removeLast]();
        }
        buffer.write(rightDelimiter);
        return buffer.toString();
      }
    }
    (IterableBase.new = function() {
      IterableBase.__proto__.new.call(this);
    }).prototype = IterableBase.prototype;
    dart.addTypeTests(IterableBase);
    IterableBase.prototype[_is_IterableBase_default] = true;
    return IterableBase;
  });
  collection.IterableBase = collection.IterableBase$();
  dart.addTypeTests(collection.IterableBase, _is_IterableBase_default);
  const _is_LinkedList_default = Symbol('_is_LinkedList_default');
  _internal.LinkedList$ = dart.generic(T => {
    let _LinkedListIteratorOfT = () => (_LinkedListIteratorOfT = dart.constFn(_internal._LinkedListIterator$(T)))();
    class LinkedList extends collection.IterableBase$(T) {
      get first() {
        return this[first];
      }
      set first(value) {
        this[first] = T._check(value);
      }
      get last() {
        return this[last];
      }
      set last(value) {
        this[last] = T._check(value);
      }
      get length() {
        return this[length];
      }
      set length(value) {
        this[length] = value;
      }
      get isEmpty() {
        return this.length === 0;
      }
      add(newLast) {
        T._check(newLast);
        if (!(newLast[_next] == null && newLast[_previous] == null)) dart.assertFailed();
        if (this.last != null) {
          if (!(this.last[_next] == null)) dart.assertFailed();
          this.last[_next] = newLast;
        } else {
          this.first = newLast;
        }
        newLast[_previous] = this.last;
        this.last = newLast;
        this.last[_list] = this;
        this.length = dart.notNull(this.length) + 1;
      }
      addFirst(newFirst) {
        T._check(newFirst);
        if (this.first != null) {
          if (!(this.first[_previous] == null)) dart.assertFailed();
          this.first[_previous] = newFirst;
        } else {
          this.last = newFirst;
        }
        newFirst[_next] = this.first;
        this.first = newFirst;
        this.first[_list] = this;
        this.length = dart.notNull(this.length) + 1;
      }
      remove(node) {
        T._check(node);
        if (!dart.equals(node[_list], this)) return;
        this.length = dart.notNull(this.length) - 1;
        if (node[_previous] == null) {
          if (!(node == this.first)) dart.assertFailed();
          this.first = node[_next];
        } else {
          node[_previous][_next] = node[_next];
        }
        if (node[_next] == null) {
          if (!(node == this.last)) dart.assertFailed();
          this.last = node[_previous];
        } else {
          node[_next][_previous] = node[_previous];
        }
        node[_next] = node[_previous] = null;
        node[_list] = null;
      }
      get iterator() {
        return new (_LinkedListIteratorOfT()).new(this);
      }
    }
    (LinkedList.new = function() {
      this[first] = null;
      this[last] = null;
      this[length] = 0;
      LinkedList.__proto__.new.call(this);
    }).prototype = LinkedList.prototype;
    dart.addTypeTests(LinkedList);
    LinkedList.prototype[_is_LinkedList_default] = true;
    const first = Symbol("LinkedList.first");
    const last = Symbol("LinkedList.last");
    const length = Symbol("LinkedList.length");
    dart.setMethodSignature(LinkedList, () => ({
      __proto__: dart.getMethods(LinkedList.__proto__),
      add: dart.fnType(dart.void, [core.Object]),
      addFirst: dart.fnType(dart.void, [core.Object]),
      remove: dart.fnType(dart.void, [core.Object])
    }));
    dart.setGetterSignature(LinkedList, () => ({
      __proto__: dart.getGetters(LinkedList.__proto__),
      iterator: core.Iterator$(T),
      [$iterator]: core.Iterator$(T)
    }));
    dart.setFieldSignature(LinkedList, () => ({
      __proto__: dart.getFields(LinkedList.__proto__),
      first: dart.fieldType(T),
      last: dart.fieldType(T),
      length: dart.fieldType(core.int)
    }));
    dart.defineExtensionAccessors(LinkedList, [
      'isEmpty',
      'iterator',
      'first',
      'last',
      'length'
    ]);
    return LinkedList;
  });
  _internal.LinkedList = _internal.LinkedList$();
  dart.addTypeTests(_internal.LinkedList, _is_LinkedList_default);
  const _is_LinkedListEntry_default = Symbol('_is_LinkedListEntry_default');
  _internal.LinkedListEntry$ = dart.generic(T => {
    let LinkedListOfT = () => (LinkedListOfT = dart.constFn(_internal.LinkedList$(T)))();
    class LinkedListEntry extends core.Object {
      unlink() {
        if (this[_list] == null) return;
        this[_list].remove(T._check(this));
      }
    }
    (LinkedListEntry.new = function() {
      this[_next] = null;
      this[_previous] = null;
      this[_list] = null;
    }).prototype = LinkedListEntry.prototype;
    dart.addTypeTests(LinkedListEntry);
    LinkedListEntry.prototype[_is_LinkedListEntry_default] = true;
    dart.setMethodSignature(LinkedListEntry, () => ({
      __proto__: dart.getMethods(LinkedListEntry.__proto__),
      unlink: dart.fnType(dart.void, [])
    }));
    dart.setFieldSignature(LinkedListEntry, () => ({
      __proto__: dart.getFields(LinkedListEntry.__proto__),
      [_next]: dart.fieldType(T),
      [_previous]: dart.fieldType(T),
      [_list]: dart.fieldType(LinkedListOfT())
    }));
    return LinkedListEntry;
  });
  _internal.LinkedListEntry = _internal.LinkedListEntry$();
  dart.addTypeTests(_internal.LinkedListEntry, _is_LinkedListEntry_default);
  const _is__LinkedListIterator_default = Symbol('_is__LinkedListIterator_default');
  _internal._LinkedListIterator$ = dart.generic(T => {
    let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
    let LinkedListOfT = () => (LinkedListOfT = dart.constFn(_internal.LinkedList$(T)))();
    class _LinkedListIterator extends core.Object {
      moveNext() {
        if (this.current == null) {
          if (this[_list] == null) return false;
          if (!(dart.notNull(this[_list].length) > 0)) dart.assertFailed();
          this.current = this[_list].first;
          this[_list] = null;
          return true;
        }
        this.current = this.current[_next];
        return this.current != null;
      }
    }
    (_LinkedListIterator.new = function(list) {
      this.current = null;
      this[_list] = list;
      if (this[_list].length === 0) this[_list] = null;
    }).prototype = _LinkedListIterator.prototype;
    dart.addTypeTests(_LinkedListIterator);
    _LinkedListIterator.prototype[_is__LinkedListIterator_default] = true;
    _LinkedListIterator[dart.implements] = () => [IteratorOfT()];
    dart.setMethodSignature(_LinkedListIterator, () => ({
      __proto__: dart.getMethods(_LinkedListIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setFieldSignature(_LinkedListIterator, () => ({
      __proto__: dart.getFields(_LinkedListIterator.__proto__),
      current: dart.fieldType(T),
      [_list]: dart.fieldType(LinkedListOfT())
    }));
    return _LinkedListIterator;
  });
  _internal._LinkedListIterator = _internal._LinkedListIterator$();
  dart.addTypeTests(_internal._LinkedListIterator, _is__LinkedListIterator_default);
  _isolate_helper.enterJsAsync = function() {
  };
  _isolate_helper.leaveJsAsync = function() {
  };
  _isolate_helper.startRootIsolate = function(main, args) {
    if (args == null) args = JSArrayOfString().of([]);
    if (core.List.is(args)) {
      if (!ListOfString().is(args)) args = ListOfString().from(core.Iterable._check(args));
      if (typeof main == "function") {
        main(args, null);
      } else {
        dart.dcall(main, [args]);
      }
    } else {
      dart.throw(new core.ArgumentError.new("Arguments to main must be a List: " + dart.str(args)));
    }
  };
  dart.defineLazy(_isolate_helper, {
    /*_isolate_helper.global*/get global() {
      return dart.global;
    }
  });
  const _once = Symbol('_once');
  const _handle = Symbol('_handle');
  const _tick = Symbol('_tick');
  _isolate_helper.TimerImpl = class TimerImpl extends core.Object {
    get tick() {
      return this[_tick];
    }
    cancel() {
      if (dart.test(_isolate_helper.hasTimer())) {
        if (this[_handle] == null) return;
        _isolate_helper.leaveJsAsync();
        if (dart.test(this[_once])) {
          _isolate_helper.global.clearTimeout(this[_handle]);
        } else {
          _isolate_helper.global.clearInterval(this[_handle]);
        }
        this[_handle] = null;
      } else {
        dart.throw(new core.UnsupportedError.new("Canceling a timer."));
      }
    }
    get isActive() {
      return this[_handle] != null;
    }
  };
  (_isolate_helper.TimerImpl.new = function(milliseconds, callback) {
    this[_handle] = null;
    this[_tick] = 0;
    this[_once] = true;
    if (dart.test(_isolate_helper.hasTimer())) {
      const internalCallback = (function() {
        this[_handle] = null;
        _isolate_helper.leaveJsAsync();
        this[_tick] = 1;
        callback();
      }).bind(this);
      dart.fn(internalCallback, VoidTovoid());
      _isolate_helper.enterJsAsync();
      this[_handle] = _isolate_helper.global.setTimeout(internalCallback, milliseconds);
    } else {
      dart.throw(new core.UnsupportedError.new("`setTimeout()` not found."));
    }
  }).prototype = _isolate_helper.TimerImpl.prototype;
  (_isolate_helper.TimerImpl.periodic = function(milliseconds, callback) {
    this[_handle] = null;
    this[_tick] = 0;
    this[_once] = false;
    if (dart.test(_isolate_helper.hasTimer())) {
      _isolate_helper.enterJsAsync();
      let start = Date.now();
      this[_handle] = _isolate_helper.global.setInterval(dart.fn(() => {
        let tick = dart.notNull(this[_tick]) + 1;
        if (dart.notNull(milliseconds) > 0) {
          let duration = Date.now() - start;
          if (duration > (tick + 1) * dart.notNull(milliseconds)) {
            tick = (duration / dart.notNull(milliseconds))[$truncate]();
          }
        }
        this[_tick] = tick;
        callback(this);
      }, VoidToNull()), milliseconds);
    } else {
      dart.throw(new core.UnsupportedError.new("Periodic timer."));
    }
  }).prototype = _isolate_helper.TimerImpl.prototype;
  dart.addTypeTests(_isolate_helper.TimerImpl);
  _isolate_helper.TimerImpl[dart.implements] = () => [async.Timer];
  dart.setMethodSignature(_isolate_helper.TimerImpl, () => ({
    __proto__: dart.getMethods(_isolate_helper.TimerImpl.__proto__),
    cancel: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(_isolate_helper.TimerImpl, () => ({
    __proto__: dart.getGetters(_isolate_helper.TimerImpl.__proto__),
    tick: core.int,
    isActive: core.bool
  }));
  dart.setFieldSignature(_isolate_helper.TimerImpl, () => ({
    __proto__: dart.getFields(_isolate_helper.TimerImpl.__proto__),
    [_once]: dart.finalFieldType(core.bool),
    [_handle]: dart.fieldType(core.int),
    [_tick]: dart.fieldType(core.int)
  }));
  _isolate_helper.hasTimer = function() {
    return _isolate_helper.global.setTimeout != null;
  };
  _js_helper._Patch = class _Patch extends core.Object {};
  (_js_helper._Patch.new = function() {
  }).prototype = _js_helper._Patch.prototype;
  dart.addTypeTests(_js_helper._Patch);
  dart.defineLazy(_js_helper, {
    /*_js_helper.patch*/get patch() {
      return dart.const(new _js_helper._Patch.new());
    }
  });
  const _jsIterator = Symbol('_jsIterator');
  const _current$0 = Symbol('_current');
  const _is_DartIterator_default = Symbol('_is_DartIterator_default');
  _js_helper.DartIterator$ = dart.generic(E => {
    let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
    class DartIterator extends core.Object {
      get current() {
        return this[_current$0];
      }
      moveNext() {
        let ret = this[_jsIterator].next();
        this[_current$0] = ret.value;
        return !ret.done;
      }
    }
    (DartIterator.new = function(jsIterator) {
      this[_current$0] = null;
      this[_jsIterator] = jsIterator;
    }).prototype = DartIterator.prototype;
    dart.addTypeTests(DartIterator);
    DartIterator.prototype[_is_DartIterator_default] = true;
    DartIterator[dart.implements] = () => [IteratorOfE()];
    dart.setMethodSignature(DartIterator, () => ({
      __proto__: dart.getMethods(DartIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(DartIterator, () => ({
      __proto__: dart.getGetters(DartIterator.__proto__),
      current: E
    }));
    dart.setFieldSignature(DartIterator, () => ({
      __proto__: dart.getFields(DartIterator.__proto__),
      [_jsIterator]: dart.finalFieldType(dart.dynamic),
      [_current$0]: dart.fieldType(E)
    }));
    return DartIterator;
  });
  _js_helper.DartIterator = _js_helper.DartIterator$();
  dart.addTypeTests(_js_helper.DartIterator, _is_DartIterator_default);
  const _initGenerator = Symbol('_initGenerator');
  const _is_SyncIterable_default = Symbol('_is_SyncIterable_default');
  _js_helper.SyncIterable$ = dart.generic(E => {
    let DartIteratorOfE = () => (DartIteratorOfE = dart.constFn(_js_helper.DartIterator$(E)))();
    class SyncIterable extends collection.IterableBase$(E) {
      [Symbol.iterator]() {
        return this[_initGenerator]();
      }
      get iterator() {
        return new (DartIteratorOfE()).new(this[_initGenerator]());
      }
    }
    (SyncIterable.new = function(initGenerator) {
      this[_initGenerator] = initGenerator;
      SyncIterable.__proto__.new.call(this);
    }).prototype = SyncIterable.prototype;
    dart.addTypeTests(SyncIterable);
    SyncIterable.prototype[_is_SyncIterable_default] = true;
    dart.setMethodSignature(SyncIterable, () => ({
      __proto__: dart.getMethods(SyncIterable.__proto__),
      [Symbol.iterator]: dart.fnType(dart.dynamic, [])
    }));
    dart.setGetterSignature(SyncIterable, () => ({
      __proto__: dart.getGetters(SyncIterable.__proto__),
      iterator: core.Iterator$(E),
      [$iterator]: core.Iterator$(E)
    }));
    dart.setFieldSignature(SyncIterable, () => ({
      __proto__: dart.getFields(SyncIterable.__proto__),
      [_initGenerator]: dart.finalFieldType(VoidTodynamic())
    }));
    dart.defineExtensionAccessors(SyncIterable, ['iterator']);
    return SyncIterable;
  });
  _js_helper.SyncIterable = _js_helper.SyncIterable$();
  dart.addTypeTests(_js_helper.SyncIterable, _is_SyncIterable_default);
  _js_helper.Primitives = class Primitives extends core.Object {
    static _parseIntError(source, handleError) {
      if (handleError == null) dart.throw(new core.FormatException.new(source));
      return handleError(source);
    }
    static parseInt(source, _radix, handleError) {
      if (source == null) dart.argumentError(source);
      let re = /^\s*[+-]?((0x[a-f0-9]+)|(\d+)|([a-z0-9]+))\s*$/i;
      let match = re.exec(source);
      let digitsIndex = 1;
      let hexIndex = 2;
      let decimalIndex = 3;
      if (match == null) {
        return _js_helper.Primitives._parseIntError(source, handleError);
      }
      let decimalMatch = match[$_get](decimalIndex);
      if (_radix == null) {
        if (decimalMatch != null) {
          return parseInt(source, 10);
        }
        if (match[$_get](hexIndex) != null) {
          return parseInt(source, 16);
        }
        return _js_helper.Primitives._parseIntError(source, handleError);
      }
      let radix = _radix;
      if (radix < 2 || radix > 36) {
        dart.throw(new core.RangeError.range(radix, 2, 36, "radix"));
      }
      if (radix === 10 && decimalMatch != null) {
        return parseInt(source, 10);
      }
      if (radix < 10 || decimalMatch == null) {
        let maxCharCode = null;
        if (radix <= 10) {
          maxCharCode = 48 - 1 + radix;
        } else {
          maxCharCode = 97 - 10 - 1 + radix;
        }
        if (!(typeof match[$_get](digitsIndex) == 'string')) dart.assertFailed();
        let digitsPart = match[digitsIndex];
        for (let i = 0; i < digitsPart.length; i++) {
          let characterCode = (digitsPart[$codeUnitAt](i) | 32) >>> 0;
          if (characterCode > dart.notNull(maxCharCode)) {
            return _js_helper.Primitives._parseIntError(source, handleError);
          }
        }
      }
      return parseInt(source, radix);
    }
    static _parseDoubleError(source, handleError) {
      if (handleError == null) {
        dart.throw(new core.FormatException.new("Invalid double", source));
      }
      return handleError(source);
    }
    static parseDouble(source, handleError) {
      if (source == null) dart.argumentError(source);
      if (!/^\s*[+-]?(?:Infinity|NaN|(?:\.\d+|\d+(?:\.\d*)?)(?:[eE][+-]?\d+)?)\s*$/.test(source)) {
        return _js_helper.Primitives._parseDoubleError(source, handleError);
      }
      let result = parseFloat(source);
      if (result[$isNaN]) {
        let trimmed = source[$trim]();
        if (trimmed === "NaN" || trimmed === "+NaN" || trimmed === "-NaN") {
          return result;
        }
        return _js_helper.Primitives._parseDoubleError(source, handleError);
      }
      return result;
    }
    static dateNow() {
      return Date.now();
    }
    static initTicker() {
      if (_js_helper.Primitives.timerFrequency != null) return;
      _js_helper.Primitives.timerFrequency = 1000;
      _js_helper.Primitives.timerTicks = dart.fn(_js_helper.Primitives.dateNow, VoidToint());
      if (typeof window == "undefined") return;
      let jsWindow = window;
      if (jsWindow == null) return;
      let performance = jsWindow.performance;
      if (performance == null) return;
      if (typeof performance.now != "function") return;
      _js_helper.Primitives.timerFrequency = 1000000;
      _js_helper.Primitives.timerTicks = dart.fn(() => (1000 * performance.now())[$floor](), VoidToint());
    }
    static get isD8() {
      return typeof version == "function" && typeof os == "object" && "system" in os;
    }
    static get isJsshell() {
      return typeof version == "function" && typeof system == "function";
    }
    static currentUri() {
      if (!!dart.global.location) {
        return dart.global.location.href;
      }
      return "";
    }
    static _fromCharCodeApply(array) {
      let kMaxApply = 500;
      let end = dart.notNull(array[$length]);
      if (end <= kMaxApply) {
        return String.fromCharCode.apply(null, array);
      }
      let result = "";
      for (let i = 0; i < end; i = i + kMaxApply) {
        let chunkEnd = i + kMaxApply < end ? i + kMaxApply : end;
        result = result + String.fromCharCode.apply(null, array.slice(i, chunkEnd));
      }
      return result;
    }
    static stringFromCodePoints(codePoints) {
      let a = JSArrayOfint().of([]);
      for (let i of codePoints) {
        if (i == null) dart.argumentError(i);
        {
          if (i <= 65535) {
            a[$add](i);
          } else if (i <= 1114111) {
            a[$add](55296 + (i - 65536 >> 10 & 1023));
            a[$add](56320 + (i & 1023));
          } else {
            dart.throw(_js_helper.argumentErrorValue(i));
          }
        }
      }
      return _js_helper.Primitives._fromCharCodeApply(a);
    }
    static stringFromCharCodes(charCodes) {
      for (let i of charCodes) {
        if (i == null) dart.argumentError(i);
        {
          if (i < 0) dart.throw(_js_helper.argumentErrorValue(i));
          if (i > 65535) return _js_helper.Primitives.stringFromCodePoints(charCodes);
        }
      }
      return _js_helper.Primitives._fromCharCodeApply(charCodes);
    }
    static stringFromNativeUint8List(charCodes, start, end) {
      if (start == null) dart.argumentError(start);
      if (end == null) dart.argumentError(end);
      let kMaxApply = 500;
      if (end <= kMaxApply && start === 0 && end === charCodes[$length]) {
        return String.fromCharCode.apply(null, charCodes);
      }
      let result = "";
      for (let i = start; i < end; i = i + kMaxApply) {
        let chunkEnd = i + kMaxApply < end ? i + kMaxApply : end;
        result = result + String.fromCharCode.apply(null, charCodes.subarray(i, chunkEnd));
      }
      return result;
    }
    static stringFromCharCode(charCode) {
      if (charCode == null) dart.argumentError(charCode);
      if (0 <= charCode) {
        if (charCode <= 65535) {
          return String.fromCharCode(charCode);
        }
        if (charCode <= 1114111) {
          let bits = charCode - 65536;
          let low = 56320 | bits & 1023;
          let high = (55296 | bits[$rightShift](10)) >>> 0;
          return String.fromCharCode(high, low);
        }
      }
      dart.throw(new core.RangeError.range(charCode, 0, 1114111));
    }
    static stringConcatUnchecked(string1, string2) {
      return _foreign_helper.JS_STRING_CONCAT(string1, string2);
    }
    static flattenString(str) {
      return str.charCodeAt(0) == 0 ? str : str;
    }
    static getTimeZoneName(receiver) {
      let d = _js_helper.Primitives.lazyAsJsDate(receiver);
      let match = /\((.*)\)/.exec(d.toString());
      if (match != null) return core.String._check(match[$_get](1));
      match = /^[A-Z,a-z]{3}\s[A-Z,a-z]{3}\s\d+\s\d{2}:\d{2}:\d{2}\s([A-Z]{3,5})\s\d{4}$/.exec(d.toString());
      if (match != null) return core.String._check(match[$_get](1));
      match = /(?:GMT|UTC)[+-]\d{4}/.exec(d.toString());
      if (match != null) return core.String._check(match[$_get](0));
      return "";
    }
    static getTimeZoneOffsetInMinutes(receiver) {
      return -_js_helper.Primitives.lazyAsJsDate(receiver).getTimezoneOffset();
    }
    static valueFromDecomposedDate(years, month, day, hours, minutes, seconds, milliseconds, isUtc) {
      if (years == null) dart.argumentError(years);
      if (month == null) dart.argumentError(month);
      if (day == null) dart.argumentError(day);
      if (hours == null) dart.argumentError(hours);
      if (minutes == null) dart.argumentError(minutes);
      if (seconds == null) dart.argumentError(seconds);
      if (milliseconds == null) dart.argumentError(milliseconds);
      if (isUtc == null) dart.argumentError(isUtc);
      let MAX_MILLISECONDS_SINCE_EPOCH = 8640000000000000;
      let jsMonth = month - 1;
      let value = null;
      if (isUtc) {
        value = Date.UTC(years, jsMonth, day, hours, minutes, seconds, milliseconds);
      } else {
        value = new Date(years, jsMonth, day, hours, minutes, seconds, milliseconds).valueOf();
      }
      if (value[$isNaN] || dart.notNull(value) < -MAX_MILLISECONDS_SINCE_EPOCH || dart.notNull(value) > MAX_MILLISECONDS_SINCE_EPOCH) {
        return null;
      }
      if (years <= 0 || years < 100) return _js_helper.Primitives.patchUpY2K(value, years, isUtc);
      return value;
    }
    static patchUpY2K(value, years, isUtc) {
      let date = new Date(value);
      if (dart.dtest(isUtc)) {
        date.setUTCFullYear(years);
      } else {
        date.setFullYear(years);
      }
      return date.valueOf();
    }
    static lazyAsJsDate(receiver) {
      if (receiver.date === void 0) {
        receiver.date = new Date(receiver.millisecondsSinceEpoch);
      }
      return receiver.date;
    }
    static getYear(receiver) {
      return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCFullYear() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getFullYear() + 0;
    }
    static getMonth(receiver) {
      return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCMonth() + 1 : _js_helper.Primitives.lazyAsJsDate(receiver).getMonth() + 1;
    }
    static getDay(receiver) {
      return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCDate() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getDate() + 0;
    }
    static getHours(receiver) {
      return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCHours() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getHours() + 0;
    }
    static getMinutes(receiver) {
      return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCMinutes() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getMinutes() + 0;
    }
    static getSeconds(receiver) {
      return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCSeconds() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getSeconds() + 0;
    }
    static getMilliseconds(receiver) {
      return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCMilliseconds() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getMilliseconds() + 0;
    }
    static getWeekday(receiver) {
      let weekday = dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCDay() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getDay() + 0;
      return (weekday + 6)[$modulo](7) + 1;
    }
    static valueFromDateString(str) {
      if (!(typeof str == 'string')) dart.throw(_js_helper.argumentErrorValue(str));
      let value = Date.parse(str);
      if (value[$isNaN]) dart.throw(_js_helper.argumentErrorValue(str));
      return value;
    }
    static getProperty(object, key) {
      if (object == null || typeof object == 'boolean' || typeof object == 'number' || typeof object == 'string') {
        dart.throw(_js_helper.argumentErrorValue(object));
      }
      return object[key];
    }
    static setProperty(object, key, value) {
      if (object == null || typeof object == 'boolean' || typeof object == 'number' || typeof object == 'string') {
        dart.throw(_js_helper.argumentErrorValue(object));
      }
      object[key] = value;
    }
  };
  (_js_helper.Primitives.new = function() {
  }).prototype = _js_helper.Primitives.prototype;
  dart.addTypeTests(_js_helper.Primitives);
  dart.defineLazy(_js_helper.Primitives, {
    /*_js_helper.Primitives.DOLLAR_CHAR_VALUE*/get DOLLAR_CHAR_VALUE() {
      return 36;
    },
    /*_js_helper.Primitives.timerFrequency*/get timerFrequency() {
      return null;
    },
    set timerFrequency(_) {},
    /*_js_helper.Primitives.timerTicks*/get timerTicks() {
      return null;
    },
    set timerTicks(_) {}
  });
  _js_helper.diagnoseIndexError = function(indexable, index) {
    let length = core.int._check(dart.dload(indexable, 'length'));
    if (dart.notNull(index) < 0 || dart.notNull(index) >= dart.notNull(length)) {
      return core.RangeError.index(index, indexable, "index", null, length);
    }
    return new core.RangeError.value(index, "index");
  };
  _js_helper.diagnoseRangeError = function(start, end, length) {
    if (start == null) {
      return new core.ArgumentError.value(start, "start");
    }
    if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(length)) {
      return new core.RangeError.range(start, 0, length, "start");
    }
    if (end != null) {
      if (dart.notNull(end) < dart.notNull(start) || dart.notNull(end) > dart.notNull(length)) {
        return new core.RangeError.range(end, start, length, "end");
      }
    }
    return new core.ArgumentError.value(end, "end");
  };
  _js_helper.stringLastIndexOfUnchecked = function(receiver, element, start) {
    return receiver.lastIndexOf(element, start);
  };
  _js_helper.argumentErrorValue = function(object) {
    return new core.ArgumentError.value(object);
  };
  _js_helper.throwArgumentErrorValue = function(value) {
    dart.throw(_js_helper.argumentErrorValue(value));
  };
  _js_helper.checkInt = function(value) {
    if (!core.int.is(value)) dart.throw(_js_helper.argumentErrorValue(value));
    return value;
  };
  _js_helper.throwRuntimeError = function(message) {
    dart.throw(new _js_helper.RuntimeError.new(message));
  };
  _js_helper.throwAbstractClassInstantiationError = function(className) {
    dart.throw(new core.AbstractClassInstantiationError.new(core.String._check(className)));
  };
  _js_helper.throwConcurrentModificationError = function(collection) {
    dart.throw(new core.ConcurrentModificationError.new(collection));
  };
  const _message = Symbol('_message');
  const _method = Symbol('_method');
  const _receiver = Symbol('_receiver');
  core.Error = class Error extends core.Object {
    static safeToString(object) {
      if (typeof object == 'number' || typeof object == 'boolean' || null == object) {
        return dart.toString(object);
      }
      if (typeof object == 'string') {
        return core.Error._stringToSafeString(object);
      }
      return core.Error._objectToString(object);
    }
    static _stringToSafeString(string) {
      return JSON.stringify(string);
    }
    static _objectToString(object) {
      return "Instance of '" + dart.typeName(dart.getReifiedType(object)) + "'";
    }
    get stackTrace() {
      return dart.stackTraceForError(this);
    }
  };
  (core.Error.new = function() {
  }).prototype = core.Error.prototype;
  dart.addTypeTests(core.Error);
  dart.setGetterSignature(core.Error, () => ({
    __proto__: dart.getGetters(core.Error.__proto__),
    stackTrace: core.StackTrace,
    [$stackTrace]: core.StackTrace
  }));
  dart.defineExtensionAccessors(core.Error, ['stackTrace']);
  _js_helper.JsNoSuchMethodError = class JsNoSuchMethodError extends core.Error {
    toString() {
      if (this[_method] == null) return "NoSuchMethodError: " + dart.str(this[_message]);
      if (this[_receiver] == null) {
        return "NoSuchMethodError: method not found: '" + dart.str(this[_method]) + "' (" + dart.str(this[_message]) + ")";
      }
      return "NoSuchMethodError: " + ("method not found: '" + dart.str(this[_method]) + "' on '" + dart.str(this[_receiver]) + "' (" + dart.str(this[_message]) + ")");
    }
  };
  (_js_helper.JsNoSuchMethodError.new = function(message, match) {
    this[_message] = message;
    this[_method] = match == null ? null : match.method;
    this[_receiver] = match == null ? null : match.receiver;
    _js_helper.JsNoSuchMethodError.__proto__.new.call(this);
  }).prototype = _js_helper.JsNoSuchMethodError.prototype;
  dart.addTypeTests(_js_helper.JsNoSuchMethodError);
  _js_helper.JsNoSuchMethodError[dart.implements] = () => [core.NoSuchMethodError];
  dart.setFieldSignature(_js_helper.JsNoSuchMethodError, () => ({
    __proto__: dart.getFields(_js_helper.JsNoSuchMethodError.__proto__),
    [_message]: dart.finalFieldType(core.String),
    [_method]: dart.finalFieldType(core.String),
    [_receiver]: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(_js_helper.JsNoSuchMethodError, ['toString']);
  _js_helper.UnknownJsTypeError = class UnknownJsTypeError extends core.Error {
    toString() {
      return this[_message][$isEmpty] ? "Error" : "Error: " + dart.str(this[_message]);
    }
  };
  (_js_helper.UnknownJsTypeError.new = function(message) {
    this[_message] = message;
    _js_helper.UnknownJsTypeError.__proto__.new.call(this);
  }).prototype = _js_helper.UnknownJsTypeError.prototype;
  dart.addTypeTests(_js_helper.UnknownJsTypeError);
  dart.setFieldSignature(_js_helper.UnknownJsTypeError, () => ({
    __proto__: dart.getFields(_js_helper.UnknownJsTypeError.__proto__),
    [_message]: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(_js_helper.UnknownJsTypeError, ['toString']);
  _js_helper.fillLiteralMap = function(keyValuePairs, result) {
    let index = 0;
    let length = _js_helper.getLength(keyValuePairs);
    while (index < dart.notNull(length)) {
      let key = _js_helper.getIndex(keyValuePairs, index++);
      let value = _js_helper.getIndex(keyValuePairs, index++);
      result[$_set](key, value);
    }
    return result;
  };
  _js_helper.jsHasOwnProperty = function(jsObject, property) {
    return jsObject.hasOwnProperty(property);
  };
  _js_helper.jsPropertyAccess = function(jsObject, property) {
    return jsObject[property];
  };
  _js_helper.getFallThroughError = function() {
    return new _js_helper.FallThroughErrorImplementation.new();
  };
  _js_helper.Creates = class Creates extends core.Object {};
  (_js_helper.Creates.new = function(types) {
    this.types = types;
  }).prototype = _js_helper.Creates.prototype;
  dart.addTypeTests(_js_helper.Creates);
  dart.setFieldSignature(_js_helper.Creates, () => ({
    __proto__: dart.getFields(_js_helper.Creates.__proto__),
    types: dart.finalFieldType(core.String)
  }));
  _js_helper.Returns = class Returns extends core.Object {};
  (_js_helper.Returns.new = function(types) {
    this.types = types;
  }).prototype = _js_helper.Returns.prototype;
  dart.addTypeTests(_js_helper.Returns);
  dart.setFieldSignature(_js_helper.Returns, () => ({
    __proto__: dart.getFields(_js_helper.Returns.__proto__),
    types: dart.finalFieldType(core.String)
  }));
  _js_helper.JSName = class JSName extends core.Object {};
  (_js_helper.JSName.new = function(name) {
    this.name = name;
  }).prototype = _js_helper.JSName.prototype;
  dart.addTypeTests(_js_helper.JSName);
  dart.setFieldSignature(_js_helper.JSName, () => ({
    __proto__: dart.getFields(_js_helper.JSName.__proto__),
    name: dart.finalFieldType(core.String)
  }));
  const _is_JavaScriptIndexingBehavior_default = Symbol('_is_JavaScriptIndexingBehavior_default');
  _js_helper.JavaScriptIndexingBehavior$ = dart.generic(E => {
    class JavaScriptIndexingBehavior extends core.Object {}
    (JavaScriptIndexingBehavior.new = function() {
    }).prototype = JavaScriptIndexingBehavior.prototype;
    dart.addTypeTests(JavaScriptIndexingBehavior);
    JavaScriptIndexingBehavior.prototype[_is_JavaScriptIndexingBehavior_default] = true;
    return JavaScriptIndexingBehavior;
  });
  _js_helper.JavaScriptIndexingBehavior = _js_helper.JavaScriptIndexingBehavior$();
  dart.addTypeTests(_js_helper.JavaScriptIndexingBehavior, _is_JavaScriptIndexingBehavior_default);
  _js_helper.TypeErrorImpl = class TypeErrorImpl extends core.Error {
    toString() {
      return this.message;
    }
  };
  (_js_helper.TypeErrorImpl.new = function(message) {
    this.message = message;
    _js_helper.TypeErrorImpl.__proto__.new.call(this);
  }).prototype = _js_helper.TypeErrorImpl.prototype;
  dart.addTypeTests(_js_helper.TypeErrorImpl);
  _js_helper.TypeErrorImpl[dart.implements] = () => [core.TypeError];
  dart.setFieldSignature(_js_helper.TypeErrorImpl, () => ({
    __proto__: dart.getFields(_js_helper.TypeErrorImpl.__proto__),
    message: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(_js_helper.TypeErrorImpl, ['toString']);
  _js_helper.CastErrorImpl = class CastErrorImpl extends core.Error {
    toString() {
      return this.message;
    }
  };
  (_js_helper.CastErrorImpl.new = function(message) {
    this.message = message;
    _js_helper.CastErrorImpl.__proto__.new.call(this);
  }).prototype = _js_helper.CastErrorImpl.prototype;
  dart.addTypeTests(_js_helper.CastErrorImpl);
  _js_helper.CastErrorImpl[dart.implements] = () => [core.CastError];
  dart.setFieldSignature(_js_helper.CastErrorImpl, () => ({
    __proto__: dart.getFields(_js_helper.CastErrorImpl.__proto__),
    message: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(_js_helper.CastErrorImpl, ['toString']);
  core.FallThroughError = class FallThroughError extends core.Error {
    toString() {
      return super.toString();
    }
  };
  (core.FallThroughError.new = function() {
    core.FallThroughError.__proto__.new.call(this);
  }).prototype = core.FallThroughError.prototype;
  (core.FallThroughError._create = function(url, line) {
    core.FallThroughError.__proto__.new.call(this);
  }).prototype = core.FallThroughError.prototype;
  dart.addTypeTests(core.FallThroughError);
  dart.defineExtensionMethods(core.FallThroughError, ['toString']);
  _js_helper.FallThroughErrorImplementation = class FallThroughErrorImplementation extends core.FallThroughError {
    toString() {
      return "Switch case fall-through.";
    }
  };
  (_js_helper.FallThroughErrorImplementation.new = function() {
    _js_helper.FallThroughErrorImplementation.__proto__.new.call(this);
  }).prototype = _js_helper.FallThroughErrorImplementation.prototype;
  dart.addTypeTests(_js_helper.FallThroughErrorImplementation);
  dart.defineExtensionMethods(_js_helper.FallThroughErrorImplementation, ['toString']);
  _js_helper.RuntimeError = class RuntimeError extends core.Error {
    toString() {
      return "RuntimeError: " + dart.str(this.message);
    }
  };
  (_js_helper.RuntimeError.new = function(message) {
    this.message = message;
    _js_helper.RuntimeError.__proto__.new.call(this);
  }).prototype = _js_helper.RuntimeError.prototype;
  dart.addTypeTests(_js_helper.RuntimeError);
  dart.setFieldSignature(_js_helper.RuntimeError, () => ({
    __proto__: dart.getFields(_js_helper.RuntimeError.__proto__),
    message: dart.finalFieldType(dart.dynamic)
  }));
  dart.defineExtensionMethods(_js_helper.RuntimeError, ['toString']);
  core.AssertionError = class AssertionError extends core.Error {
    get message() {
      return this[message$];
    }
    set message(value) {
      super.message = value;
    }
    toString() {
      return "Assertion failed";
    }
  };
  (core.AssertionError.new = function(message) {
    if (message === void 0) message = null;
    this[message$] = message;
    core.AssertionError.__proto__.new.call(this);
  }).prototype = core.AssertionError.prototype;
  dart.addTypeTests(core.AssertionError);
  const message$ = Symbol("AssertionError.message");
  dart.setFieldSignature(core.AssertionError, () => ({
    __proto__: dart.getFields(core.AssertionError.__proto__),
    message: dart.finalFieldType(core.Object)
  }));
  dart.defineExtensionMethods(core.AssertionError, ['toString']);
  _js_helper.AssertionErrorImpl = class AssertionErrorImpl extends core.AssertionError {
    toString() {
      return "Assertion failed: " + dart.notNull(this.message != null ? core.Error.safeToString(this.message) : "is not true");
    }
  };
  (_js_helper.AssertionErrorImpl.new = function(message) {
    _js_helper.AssertionErrorImpl.__proto__.new.call(this, message);
  }).prototype = _js_helper.AssertionErrorImpl.prototype;
  dart.addTypeTests(_js_helper.AssertionErrorImpl);
  dart.defineExtensionMethods(_js_helper.AssertionErrorImpl, ['toString']);
  _js_helper.random64 = function() {
    let int32a = Math.random() * 0x100000000 >>> 0;
    let int32b = Math.random() * 0x100000000 >>> 0;
    return int32a + int32b * 4294967296;
  };
  _js_helper.BooleanConversionAssertionError = class BooleanConversionAssertionError extends core.AssertionError {
    toString() {
      return "Failed assertion: boolean expression must not be null";
    }
  };
  (_js_helper.BooleanConversionAssertionError.new = function() {
    _js_helper.BooleanConversionAssertionError.__proto__.new.call(this);
  }).prototype = _js_helper.BooleanConversionAssertionError.prototype;
  dart.addTypeTests(_js_helper.BooleanConversionAssertionError);
  dart.defineExtensionMethods(_js_helper.BooleanConversionAssertionError, ['toString']);
  _js_helper.registerGlobalObject = function(object) {
    try {
      if (dart.test(dart.polyfill(object))) {
        dart.applyAllExtensions(object);
      }
    } catch (e$) {
      let e = dart.getThrown(e$);
    }
  };
  _js_helper.applyExtension = function(name, nativeObject) {
    dart.applyExtension(name, nativeObject);
  };
  const _name$ = Symbol('_name');
  const _nativeSymbol = Symbol('_nativeSymbol');
  _js_helper.PrivateSymbol = class PrivateSymbol extends core.Object {
    static getName(symbol) {
      return _js_helper.PrivateSymbol.as(symbol)[_name$];
    }
    static getNativeSymbol(symbol) {
      if (_js_helper.PrivateSymbol.is(symbol)) return symbol[_nativeSymbol];
      return null;
    }
    _equals(other) {
      return _js_helper.PrivateSymbol.is(other) && this[_name$] == other[_name$] && core.identical(this[_nativeSymbol], other[_nativeSymbol]);
    }
    get hashCode() {
      return dart.hashCode(this[_name$]);
    }
    toString() {
      return "Symbol(\"" + dart.str(this[_name$]) + "\")";
    }
  };
  (_js_helper.PrivateSymbol.new = function(name, nativeSymbol) {
    this[_name$] = name;
    this[_nativeSymbol] = nativeSymbol;
  }).prototype = _js_helper.PrivateSymbol.prototype;
  dart.addTypeTests(_js_helper.PrivateSymbol);
  _js_helper.PrivateSymbol[dart.implements] = () => [core.Symbol];
  dart.setFieldSignature(_js_helper.PrivateSymbol, () => ({
    __proto__: dart.getFields(_js_helper.PrivateSymbol.__proto__),
    [_name$]: dart.finalFieldType(core.String),
    [_nativeSymbol]: dart.finalFieldType(core.Object)
  }));
  dart.defineExtensionMethods(_js_helper.PrivateSymbol, ['_equals', 'toString']);
  dart.defineExtensionAccessors(_js_helper.PrivateSymbol, ['hashCode']);
  _js_helper.ForceInline = class ForceInline extends core.Object {};
  (_js_helper.ForceInline.new = function() {
  }).prototype = _js_helper.ForceInline.prototype;
  dart.addTypeTests(_js_helper.ForceInline);
  _js_helper._NotNull = class _NotNull extends core.Object {};
  (_js_helper._NotNull.new = function() {
  }).prototype = _js_helper._NotNull.prototype;
  dart.addTypeTests(_js_helper._NotNull);
  dart.defineLazy(_js_helper, {
    /*_js_helper.notNull*/get notNull() {
      return dart.const(new _js_helper._NotNull.new());
    }
  });
  _js_helper.NoReifyGeneric = class NoReifyGeneric extends core.Object {};
  (_js_helper.NoReifyGeneric.new = function() {
  }).prototype = _js_helper.NoReifyGeneric.prototype;
  dart.addTypeTests(_js_helper.NoReifyGeneric);
  _js_helper.ReifyFunctionTypes = class ReifyFunctionTypes extends core.Object {};
  (_js_helper.ReifyFunctionTypes.new = function(value) {
    this.value = value;
  }).prototype = _js_helper.ReifyFunctionTypes.prototype;
  dart.addTypeTests(_js_helper.ReifyFunctionTypes);
  dart.setFieldSignature(_js_helper.ReifyFunctionTypes, () => ({
    __proto__: dart.getFields(_js_helper.ReifyFunctionTypes.__proto__),
    value: dart.finalFieldType(core.bool)
  }));
  _js_helper._NullCheck = class _NullCheck extends core.Object {};
  (_js_helper._NullCheck.new = function() {
  }).prototype = _js_helper._NullCheck.prototype;
  dart.addTypeTests(_js_helper._NullCheck);
  dart.defineLazy(_js_helper, {
    /*_js_helper.nullCheck*/get nullCheck() {
      return dart.const(new _js_helper._NullCheck.new());
    }
  });
  _js_helper.NoThrows = class NoThrows extends core.Object {};
  (_js_helper.NoThrows.new = function() {
  }).prototype = _js_helper.NoThrows.prototype;
  dart.addTypeTests(_js_helper.NoThrows);
  _js_helper.NoInline = class NoInline extends core.Object {};
  (_js_helper.NoInline.new = function() {
  }).prototype = _js_helper.NoInline.prototype;
  dart.addTypeTests(_js_helper.NoInline);
  _js_helper.Native = class Native extends core.Object {};
  (_js_helper.Native.new = function(name) {
    this.name = name;
  }).prototype = _js_helper.Native.prototype;
  dart.addTypeTests(_js_helper.Native);
  dart.setFieldSignature(_js_helper.Native, () => ({
    __proto__: dart.getFields(_js_helper.Native.__proto__),
    name: dart.finalFieldType(core.String)
  }));
  _js_helper.JsPeerInterface = class JsPeerInterface extends core.Object {};
  (_js_helper.JsPeerInterface.new = function(opts) {
    let name = opts && 'name' in opts ? opts.name : null;
    this.name = name;
  }).prototype = _js_helper.JsPeerInterface.prototype;
  dart.addTypeTests(_js_helper.JsPeerInterface);
  dart.setFieldSignature(_js_helper.JsPeerInterface, () => ({
    __proto__: dart.getFields(_js_helper.JsPeerInterface.__proto__),
    name: dart.finalFieldType(core.String)
  }));
  _js_helper.SupportJsExtensionMethods = class SupportJsExtensionMethods extends core.Object {};
  (_js_helper.SupportJsExtensionMethods.new = function() {
  }).prototype = _js_helper.SupportJsExtensionMethods.prototype;
  dart.addTypeTests(_js_helper.SupportJsExtensionMethods);
  const _modifications = Symbol('_modifications');
  const _map = Symbol('_map');
  const _is_InternalMap_default = Symbol('_is_InternalMap_default');
  _js_helper.InternalMap$ = dart.generic((K, V) => {
    let LinkedHashMapOfK$V = () => (LinkedHashMapOfK$V = dart.constFn(collection.LinkedHashMap$(K, V)))();
    let HashMapOfK$V = () => (HashMapOfK$V = dart.constFn(collection.HashMap$(K, V)))();
    class InternalMap extends collection.MapBase$(K, V) {
      forEach(action) {
        let modifications = this[_modifications];
        for (let entry of this[_map].entries()) {
          action(entry[0], entry[1]);
          if (modifications !== this[_modifications]) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
      }
    }
    (InternalMap.new = function() {
    }).prototype = InternalMap.prototype;
    dart.addTypeTests(InternalMap);
    InternalMap.prototype[_is_InternalMap_default] = true;
    InternalMap[dart.implements] = () => [LinkedHashMapOfK$V(), HashMapOfK$V()];
    dart.defineExtensionMethods(InternalMap, ['forEach']);
    return InternalMap;
  });
  _js_helper.InternalMap = _js_helper.InternalMap$();
  dart.addTypeTests(_js_helper.InternalMap, _is_InternalMap_default);
  const _keyMap = Symbol('_keyMap');
  const _is_LinkedMap_default = Symbol('_is_LinkedMap_default');
  _js_helper.LinkedMap$ = dart.generic((K, V) => {
    let _JSMapIterableOfK = () => (_JSMapIterableOfK = dart.constFn(_js_helper._JSMapIterable$(K)))();
    let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
    let KAndVToNull = () => (KAndVToNull = dart.constFn(dart.fnType(core.Null, [K, V])))();
    let _JSMapIterableOfV = () => (_JSMapIterableOfV = dart.constFn(_js_helper._JSMapIterable$(V)))();
    let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
    class LinkedMap extends _js_helper.InternalMap$(K, V) {
      get length() {
        return this[_map].size;
      }
      get isEmpty() {
        return this[_map].size == 0;
      }
      get isNotEmpty() {
        return this[_map].size != 0;
      }
      get keys() {
        return new (_JSMapIterableOfK()).new(this, true);
      }
      get values() {
        return new (_JSMapIterableOfV()).new(this, false);
      }
      containsKey(key) {
        if (key == null) {
          key = null;
        } else if (key[$_equals] !== dart.identityEquals) {
          let k = key;
          let buckets = this[_keyMap].get(k[$hashCode] & 0x3ffffff);
          if (buckets != null) {
            for (let i = 0, n = buckets.length; i < n; i++) {
              k = buckets[i];
              if (k[$_equals](key)) return true;
            }
          }
          return false;
        }
        return this[_map].has(key);
      }
      containsValue(value) {
        for (let v of this[_map].values()) {
          if (dart.equals(v, value)) return true;
        }
        return false;
      }
      addAll(other) {
        MapOfK$V()._check(other);
        let map = this[_map];
        let length = map.size;
        other[$forEach](dart.fn((key, value) => {
          if (key == null) {
            key = null;
          } else if (key[$_equals] !== dart.identityEquals) {
            key = _js_helper.putLinkedMapKey(key, this[_keyMap]);
          }
          this[_map].set(key, value);
        }, KAndVToNull()));
        if (length !== map.size) {
          this[_modifications] = this[_modifications] + 1 & 67108863;
        }
      }
      _get(key) {
        if (key == null) {
          key = null;
        } else if (key[$_equals] !== dart.identityEquals) {
          let k = key;
          let buckets = this[_keyMap].get(k[$hashCode] & 0x3ffffff);
          if (buckets != null) {
            for (let i = 0, n = buckets.length; i < n; i++) {
              k = buckets[i];
              if (k[$_equals](key)) return this[_map].get(k);
            }
          }
          return null;
        }
        return this[_map].get(key);
      }
      _set(key, value) {
        K._check(key);
        V._check(value);
        if (key == null) {
          key = null;
        } else if (key[$_equals] !== dart.identityEquals) {
          key = _js_helper.putLinkedMapKey(key, this[_keyMap]);
        }
        let map = this[_map];
        let length = map.size;
        map.set(key, value);
        if (length !== map.size) {
          this[_modifications] = this[_modifications] + 1 & 67108863;
        }
        return value;
      }
      putIfAbsent(key, ifAbsent) {
        K._check(key);
        VoidToV()._check(ifAbsent);
        let map = this[_map];
        if (key == null) {
          key = null;
          if (map.has(null)) return map.get(null);
        } else if (key[$_equals] !== dart.identityEquals) {
          let k = key;
          let hash = k[$hashCode] & 0x3ffffff;
          let buckets = this[_keyMap].get(hash);
          if (buckets == null) {
            this[_keyMap].set(hash, [key]);
          } else {
            for (let i = 0, n = buckets.length; i < n; i++) {
              k = buckets[i];
              if (k[$_equals](key)) return map.get(k);
            }
            buckets.push(key);
          }
        } else if (map.has(key)) {
          return map.get(key);
        }
        let value = ifAbsent();
        map.set(key, value);
        this[_modifications] = this[_modifications] + 1 & 67108863;
        return value;
      }
      remove(key) {
        if (key == null) {
          key = null;
        } else if (key[$_equals] !== dart.identityEquals) {
          let k = key;
          let hash = k[$hashCode] & 0x3ffffff;
          let buckets = this[_keyMap].get(hash);
          if (buckets == null) return null;
          for (let i = 0, n = buckets.length;;) {
            k = buckets[i];
            if (k[$_equals](key)) {
              key = k;
              if (n === 1) {
                this[_keyMap].delete(hash);
              } else {
                buckets.splice(i, 1);
              }
              break;
            }
            if (++i >= n) return null;
          }
        }
        let map = this[_map];
        let value = map.get(key);
        if (map.delete(key)) {
          this[_modifications] = this[_modifications] + 1 & 67108863;
        }
        return value;
      }
      clear() {
        let map = this[_map];
        if (map.size > 0) {
          map.clear();
          this[_keyMap].clear();
          this[_modifications] = this[_modifications] + 1 & 67108863;
        }
      }
    }
    (LinkedMap.new = function() {
      this[_map] = new Map();
      this[_keyMap] = new Map();
      this[_modifications] = 0;
    }).prototype = LinkedMap.prototype;
    (LinkedMap.from = function(entries) {
      this[_map] = new Map();
      this[_keyMap] = new Map();
      this[_modifications] = 0;
      let map = this[_map];
      let keyMap = this[_keyMap];
      for (let i = 0, n = entries.length; i < n; i = i + 2) {
        let key = entries[i];
        let value = entries[i + 1];
        if (key == null) {
          key = null;
        } else if (key[$_equals] !== dart.identityEquals) {
          key = _js_helper.putLinkedMapKey(key, keyMap);
        }
        map.set(key, value);
      }
    }).prototype = LinkedMap.prototype;
    dart.addTypeTests(LinkedMap);
    LinkedMap.prototype[_is_LinkedMap_default] = true;
    dart.setMethodSignature(LinkedMap, () => ({
      __proto__: dart.getMethods(LinkedMap.__proto__),
      addAll: dart.fnType(dart.void, [core.Object]),
      [$addAll]: dart.fnType(dart.void, [core.Object]),
      _get: dart.fnType(V, [core.Object]),
      [$_get]: dart.fnType(V, [core.Object]),
      _set: dart.fnType(dart.void, [core.Object, core.Object]),
      [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
      putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
      [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
      remove: dart.fnType(V, [core.Object]),
      [$remove]: dart.fnType(V, [core.Object]),
      clear: dart.fnType(dart.void, []),
      [$clear]: dart.fnType(dart.void, [])
    }));
    dart.setGetterSignature(LinkedMap, () => ({
      __proto__: dart.getGetters(LinkedMap.__proto__),
      keys: core.Iterable$(K),
      [$keys]: core.Iterable$(K)
    }));
    dart.setFieldSignature(LinkedMap, () => ({
      __proto__: dart.getFields(LinkedMap.__proto__),
      [_map]: dart.finalFieldType(dart.dynamic),
      [_keyMap]: dart.finalFieldType(dart.dynamic),
      [_modifications]: dart.fieldType(core.int)
    }));
    dart.defineExtensionMethods(LinkedMap, [
      'containsKey',
      'containsValue',
      'addAll',
      '_get',
      '_set',
      'putIfAbsent',
      'remove',
      'clear'
    ]);
    dart.defineExtensionAccessors(LinkedMap, [
      'length',
      'isEmpty',
      'isNotEmpty',
      'keys',
      'values'
    ]);
    return LinkedMap;
  });
  _js_helper.LinkedMap = _js_helper.LinkedMap$();
  dart.addTypeTests(_js_helper.LinkedMap, _is_LinkedMap_default);
  _js_helper.putLinkedMapKey = function(key, keyMap) {
    let hash = key[$hashCode] & 0x3ffffff;
    let buckets = keyMap.get(hash);
    if (buckets == null) {
      keyMap.set(hash, [key]);
      return key;
    }
    for (let i = 0, n = buckets.length; i < n; i++) {
      let k = buckets[i];
      if (k[$_equals](key)) return k;
    }
    buckets.push(key);
    return key;
  };
  const _is_ImmutableMap_default = Symbol('_is_ImmutableMap_default');
  _js_helper.ImmutableMap$ = dart.generic((K, V) => {
    class ImmutableMap extends _js_helper.LinkedMap$(K, V) {
      _set(key, value) {
        dart.throw(_js_helper.ImmutableMap._unsupported());
        return value;
      }
      addAll(other) {
        return dart.throw(_js_helper.ImmutableMap._unsupported());
      }
      clear() {
        return dart.throw(_js_helper.ImmutableMap._unsupported());
      }
      remove(key) {
        return dart.throw(_js_helper.ImmutableMap._unsupported());
      }
      putIfAbsent(key, ifAbsent) {
        return dart.throw(_js_helper.ImmutableMap._unsupported());
      }
      static _unsupported() {
        return new core.UnsupportedError.new("Cannot modify unmodifiable map");
      }
    }
    (ImmutableMap.from = function(entries) {
      ImmutableMap.__proto__.from.call(this, entries);
    }).prototype = ImmutableMap.prototype;
    dart.addTypeTests(ImmutableMap);
    ImmutableMap.prototype[_is_ImmutableMap_default] = true;
    dart.setMethodSignature(ImmutableMap, () => ({
      __proto__: dart.getMethods(ImmutableMap.__proto__),
      _set: dart.fnType(dart.void, [core.Object, core.Object]),
      [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      [$addAll]: dart.fnType(dart.void, [core.Object]),
      putIfAbsent: dart.fnType(V, [core.Object, dart.fnType(core.Object, [])]),
      [$putIfAbsent]: dart.fnType(V, [core.Object, dart.fnType(core.Object, [])])
    }));
    dart.defineExtensionMethods(ImmutableMap, [
      '_set',
      'addAll',
      'clear',
      'remove',
      'putIfAbsent'
    ]);
    return ImmutableMap;
  });
  _js_helper.ImmutableMap = _js_helper.ImmutableMap$();
  dart.addTypeTests(_js_helper.ImmutableMap, _is_ImmutableMap_default);
  const _is_IdentityMap_default = Symbol('_is_IdentityMap_default');
  _js_helper.IdentityMap$ = dart.generic((K, V) => {
    let _JSMapIterableOfK = () => (_JSMapIterableOfK = dart.constFn(_js_helper._JSMapIterable$(K)))();
    let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
    let KAndVToNull = () => (KAndVToNull = dart.constFn(dart.fnType(core.Null, [K, V])))();
    let _JSMapIterableOfV = () => (_JSMapIterableOfV = dart.constFn(_js_helper._JSMapIterable$(V)))();
    let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
    class IdentityMap extends _js_helper.InternalMap$(K, V) {
      get length() {
        return this[_map].size;
      }
      get isEmpty() {
        return this[_map].size == 0;
      }
      get isNotEmpty() {
        return this[_map].size != 0;
      }
      get keys() {
        return new (_JSMapIterableOfK()).new(this, true);
      }
      get values() {
        return new (_JSMapIterableOfV()).new(this, false);
      }
      containsKey(key) {
        return this[_map].has(key);
      }
      containsValue(value) {
        for (let v of this[_map].values()) {
          if (dart.equals(v, value)) return true;
        }
        return false;
      }
      addAll(other) {
        MapOfK$V()._check(other);
        if (dart.test(other[$isNotEmpty])) {
          let map = this[_map];
          other[$forEach](dart.fn((key, value) => {
            map.set(key, value);
          }, KAndVToNull()));
          this[_modifications] = this[_modifications] + 1 & 67108863;
        }
      }
      _get(key) {
        return this[_map].get(key);
      }
      _set(key, value) {
        K._check(key);
        V._check(value);
        let map = this[_map];
        let length = map.size;
        map.set(key, value);
        if (length !== map.size) {
          this[_modifications] = this[_modifications] + 1 & 67108863;
        }
        return value;
      }
      putIfAbsent(key, ifAbsent) {
        K._check(key);
        VoidToV()._check(ifAbsent);
        if (this[_map].has(key)) return this[_map].get(key);
        let value = ifAbsent();
        this[_map].set(key, value);
        this[_modifications] = this[_modifications] + 1 & 67108863;
        return value;
      }
      remove(key) {
        let value = this[_map].get(key);
        if (this[_map].delete(key)) {
          this[_modifications] = this[_modifications] + 1 & 67108863;
        }
        return value;
      }
      clear() {
        if (this[_map].size > 0) {
          this[_map].clear();
          this[_modifications] = this[_modifications] + 1 & 67108863;
        }
      }
    }
    (IdentityMap.new = function() {
      this[_map] = new Map();
      this[_modifications] = 0;
    }).prototype = IdentityMap.prototype;
    (IdentityMap.from = function(entries) {
      this[_map] = new Map();
      this[_modifications] = 0;
      let map = this[_map];
      for (let i = 0, n = entries.length; i < n; i = i + 2) {
        map.set(entries[i], entries[i + 1]);
      }
    }).prototype = IdentityMap.prototype;
    dart.addTypeTests(IdentityMap);
    IdentityMap.prototype[_is_IdentityMap_default] = true;
    dart.setMethodSignature(IdentityMap, () => ({
      __proto__: dart.getMethods(IdentityMap.__proto__),
      addAll: dart.fnType(dart.void, [core.Object]),
      [$addAll]: dart.fnType(dart.void, [core.Object]),
      _get: dart.fnType(V, [core.Object]),
      [$_get]: dart.fnType(V, [core.Object]),
      _set: dart.fnType(dart.void, [core.Object, core.Object]),
      [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
      putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
      [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
      remove: dart.fnType(V, [core.Object]),
      [$remove]: dart.fnType(V, [core.Object]),
      clear: dart.fnType(dart.void, []),
      [$clear]: dart.fnType(dart.void, [])
    }));
    dart.setGetterSignature(IdentityMap, () => ({
      __proto__: dart.getGetters(IdentityMap.__proto__),
      keys: core.Iterable$(K),
      [$keys]: core.Iterable$(K)
    }));
    dart.setFieldSignature(IdentityMap, () => ({
      __proto__: dart.getFields(IdentityMap.__proto__),
      [_map]: dart.finalFieldType(dart.dynamic),
      [_modifications]: dart.fieldType(core.int)
    }));
    dart.defineExtensionMethods(IdentityMap, [
      'containsKey',
      'containsValue',
      'addAll',
      '_get',
      '_set',
      'putIfAbsent',
      'remove',
      'clear'
    ]);
    dart.defineExtensionAccessors(IdentityMap, [
      'length',
      'isEmpty',
      'isNotEmpty',
      'keys',
      'values'
    ]);
    return IdentityMap;
  });
  _js_helper.IdentityMap = _js_helper.IdentityMap$();
  dart.addTypeTests(_js_helper.IdentityMap, _is_IdentityMap_default);
  const _isKeys = Symbol('_isKeys');
  const _is__JSMapIterable_default = Symbol('_is__JSMapIterable_default');
  _js_helper._JSMapIterable$ = dart.generic(E => {
    let DartIteratorOfE = () => (DartIteratorOfE = dart.constFn(_js_helper.DartIterator$(E)))();
    class _JSMapIterable extends _internal.EfficientLengthIterable$(E) {
      get length() {
        return this[_map].length;
      }
      get isEmpty() {
        return this[_map].isEmpty;
      }
      [Symbol.iterator]() {
        let map = this[_map];
        let iterator = this[_isKeys] ? map[_map].keys() : map[_map].values();
        let modifications = map[_modifications];
        return {
          next() {
            if (modifications != map[_modifications]) {
              throw new core.ConcurrentModificationError.new(map);
            }
            return iterator.next();
          }
        };
      }
      get iterator() {
        return new (DartIteratorOfE()).new(this[Symbol.iterator]());
      }
      contains(element) {
        return this[_isKeys] ? this[_map].containsKey(element) : this[_map].containsValue(element);
      }
      forEach(f) {
        for (let entry of this)
          f(entry);
      }
    }
    (_JSMapIterable.new = function(map, isKeys) {
      this[_map] = map;
      this[_isKeys] = isKeys;
      _JSMapIterable.__proto__.new.call(this);
    }).prototype = _JSMapIterable.prototype;
    dart.addTypeTests(_JSMapIterable);
    _JSMapIterable.prototype[_is__JSMapIterable_default] = true;
    dart.setMethodSignature(_JSMapIterable, () => ({
      __proto__: dart.getMethods(_JSMapIterable.__proto__),
      [Symbol.iterator]: dart.fnType(dart.dynamic, [])
    }));
    dart.setGetterSignature(_JSMapIterable, () => ({
      __proto__: dart.getGetters(_JSMapIterable.__proto__),
      length: core.int,
      [$length]: core.int,
      iterator: core.Iterator$(E),
      [$iterator]: core.Iterator$(E)
    }));
    dart.setFieldSignature(_JSMapIterable, () => ({
      __proto__: dart.getFields(_JSMapIterable.__proto__),
      [_map]: dart.finalFieldType(_js_helper.InternalMap),
      [_isKeys]: dart.finalFieldType(core.bool)
    }));
    dart.defineExtensionMethods(_JSMapIterable, ['contains', 'forEach']);
    dart.defineExtensionAccessors(_JSMapIterable, ['length', 'isEmpty', 'iterator']);
    return _JSMapIterable;
  });
  _js_helper._JSMapIterable = _js_helper._JSMapIterable$();
  dart.addTypeTests(_js_helper._JSMapIterable, _is__JSMapIterable_default);
  const _validKey = Symbol('_validKey');
  const _equals = Symbol('_equals');
  const _hashCode = Symbol('_hashCode');
  const _is_CustomHashMap_default = Symbol('_is_CustomHashMap_default');
  _js_helper.CustomHashMap$ = dart.generic((K, V) => {
    let _JSMapIterableOfK = () => (_JSMapIterableOfK = dart.constFn(_js_helper._JSMapIterable$(K)))();
    let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
    let KAndVToNull = () => (KAndVToNull = dart.constFn(dart.fnType(core.Null, [K, V])))();
    let KAndKTobool = () => (KAndKTobool = dart.constFn(dart.fnType(core.bool, [K, K])))();
    let KToint = () => (KToint = dart.constFn(dart.fnType(core.int, [K])))();
    let _JSMapIterableOfV = () => (_JSMapIterableOfV = dart.constFn(_js_helper._JSMapIterable$(V)))();
    let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
    class CustomHashMap extends _js_helper.InternalMap$(K, V) {
      get length() {
        return this[_map].size;
      }
      get isEmpty() {
        return this[_map].size == 0;
      }
      get isNotEmpty() {
        return this[_map].size != 0;
      }
      get keys() {
        return new (_JSMapIterableOfK()).new(this, true);
      }
      get values() {
        return new (_JSMapIterableOfV()).new(this, false);
      }
      containsKey(key) {
        if (K.is(key)) {
          let buckets = this[_keyMap].get(this[_hashCode](key) & 0x3ffffff);
          if (buckets != null) {
            let equals = this[_equals];
            for (let i = 0, n = buckets.length; i < n; i++) {
              let k = buckets[i];
              if (dart.test(equals(k, key))) return true;
            }
          }
        }
        return false;
      }
      containsValue(value) {
        for (let v of this[_map].values()) {
          if (dart.equals(value, v)) return true;
        }
        return false;
      }
      addAll(other) {
        MapOfK$V()._check(other);
        other[$forEach](dart.fn((key, value) => {
          this._set(key, value);
        }, KAndVToNull()));
      }
      _get(key) {
        if (K.is(key)) {
          let buckets = this[_keyMap].get(this[_hashCode](key) & 0x3ffffff);
          if (buckets != null) {
            let equals = this[_equals];
            for (let i = 0, n = buckets.length; i < n; i++) {
              let k = buckets[i];
              if (dart.test(equals(k, key))) return this[_map].get(k);
            }
          }
        }
        return null;
      }
      _set(key, value) {
        K._check(key);
        V._check(value);
        let keyMap = this[_keyMap];
        let hash = this[_hashCode](key) & 0x3ffffff;
        let buckets = keyMap.get(hash);
        if (buckets == null) {
          keyMap.set(hash, [key]);
        } else {
          let equals = this[_equals];
          for (let i = 0, n = buckets.length;;) {
            let k = buckets[i];
            if (dart.test(equals(k, key))) {
              key = k;
              break;
            }
            if (++i >= n) {
              buckets.push(key);
              break;
            }
          }
        }
        this[_map].set(key, value);
        this[_modifications] = this[_modifications] + 1 & 67108863;
        return value;
      }
      putIfAbsent(key, ifAbsent) {
        K._check(key);
        VoidToV()._check(ifAbsent);
        let keyMap = this[_keyMap];
        let hash = this[_hashCode](key) & 0x3ffffff;
        let buckets = keyMap.get(hash);
        if (buckets == null) {
          keyMap.set(hash, [key]);
        } else {
          let equals = this[_equals];
          for (let i = 0, n = buckets.length; i < n; i++) {
            let k = buckets[i];
            if (dart.test(equals(k, key))) return this[_map].get(k);
          }
          buckets.push(key);
        }
        let value = ifAbsent();
        this[_map].set(key, value);
        this[_modifications] = this[_modifications] + 1 & 67108863;
        return value;
      }
      remove(key) {
        if (K.is(key)) {
          let hash = this[_hashCode](key) & 0x3ffffff;
          let keyMap = this[_keyMap];
          let buckets = keyMap.get(hash);
          if (buckets == null) return null;
          let equals = this[_equals];
          for (let i = 0, n = buckets.length; i < n; i++) {
            let k = buckets[i];
            if (dart.test(equals(k, key))) {
              if (n === 1) {
                keyMap.delete(hash);
              } else {
                buckets.splice(i, 1);
              }
              let map = this[_map];
              let value = map.get(k);
              map.delete(k);
              this[_modifications] = this[_modifications] + 1 & 67108863;
              return value;
            }
          }
        }
        return null;
      }
      clear() {
        let map = this[_map];
        if (map.size > 0) {
          map.clear();
          this[_keyMap].clear();
          this[_modifications] = this[_modifications] + 1 & 67108863;
        }
      }
    }
    (CustomHashMap.new = function(equals, hashCode) {
      this[_map] = new Map();
      this[_keyMap] = new Map();
      this[_modifications] = 0;
      this[_equals] = equals;
      this[_hashCode] = hashCode;
    }).prototype = CustomHashMap.prototype;
    dart.addTypeTests(CustomHashMap);
    CustomHashMap.prototype[_is_CustomHashMap_default] = true;
    dart.setMethodSignature(CustomHashMap, () => ({
      __proto__: dart.getMethods(CustomHashMap.__proto__),
      addAll: dart.fnType(dart.void, [core.Object]),
      [$addAll]: dart.fnType(dart.void, [core.Object]),
      _get: dart.fnType(V, [core.Object]),
      [$_get]: dart.fnType(V, [core.Object]),
      _set: dart.fnType(dart.void, [core.Object, core.Object]),
      [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
      putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
      [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
      remove: dart.fnType(V, [core.Object]),
      [$remove]: dart.fnType(V, [core.Object]),
      clear: dart.fnType(dart.void, []),
      [$clear]: dart.fnType(dart.void, [])
    }));
    dart.setGetterSignature(CustomHashMap, () => ({
      __proto__: dart.getGetters(CustomHashMap.__proto__),
      keys: core.Iterable$(K),
      [$keys]: core.Iterable$(K)
    }));
    dart.setFieldSignature(CustomHashMap, () => ({
      __proto__: dart.getFields(CustomHashMap.__proto__),
      [_map]: dart.finalFieldType(dart.dynamic),
      [_keyMap]: dart.finalFieldType(dart.dynamic),
      [_modifications]: dart.fieldType(core.int),
      [_equals]: dart.finalFieldType(KAndKTobool()),
      [_hashCode]: dart.finalFieldType(KToint())
    }));
    dart.defineExtensionMethods(CustomHashMap, [
      'containsKey',
      'containsValue',
      'addAll',
      '_get',
      '_set',
      'putIfAbsent',
      'remove',
      'clear'
    ]);
    dart.defineExtensionAccessors(CustomHashMap, [
      'length',
      'isEmpty',
      'isNotEmpty',
      'keys',
      'values'
    ]);
    return CustomHashMap;
  });
  _js_helper.CustomHashMap = _js_helper.CustomHashMap$();
  dart.addTypeTests(_js_helper.CustomHashMap, _is_CustomHashMap_default);
  const _is_CustomKeyHashMap_default = Symbol('_is_CustomKeyHashMap_default');
  _js_helper.CustomKeyHashMap$ = dart.generic((K, V) => {
    class CustomKeyHashMap extends _js_helper.CustomHashMap$(K, V) {
      containsKey(key) {
        if (!dart.test(this[_validKey](key))) return false;
        return super.containsKey(key);
      }
      _get(key) {
        if (!dart.test(this[_validKey](key))) return null;
        return super._get(key);
      }
      remove(key) {
        if (!dart.test(this[_validKey](key))) return null;
        return super.remove(key);
      }
    }
    (CustomKeyHashMap.new = function(equals, hashCode, validKey) {
      this[_validKey] = validKey;
      CustomKeyHashMap.__proto__.new.call(this, equals, hashCode);
    }).prototype = CustomKeyHashMap.prototype;
    dart.addTypeTests(CustomKeyHashMap);
    CustomKeyHashMap.prototype[_is_CustomKeyHashMap_default] = true;
    dart.setFieldSignature(CustomKeyHashMap, () => ({
      __proto__: dart.getFields(CustomKeyHashMap.__proto__),
      [_validKey]: dart.finalFieldType(ObjectTobool())
    }));
    dart.defineExtensionMethods(CustomKeyHashMap, ['containsKey', '_get', 'remove']);
    return CustomKeyHashMap;
  });
  _js_helper.CustomKeyHashMap = _js_helper.CustomKeyHashMap$();
  dart.addTypeTests(_js_helper.CustomKeyHashMap, _is_CustomKeyHashMap_default);
  _js_helper.convertDartClosureToJS = function(F, closure, arity) {
    return closure;
  };
  _js_helper.setNativeSubclassDispatchRecord = function(proto, interceptor) {
  };
  _js_helper.findDispatchTagForInterceptorClass = function(interceptorClassConstructor) {
  };
  _js_helper.makeLeafDispatchRecord = function(interceptor) {
  };
  const _nativeRegExp = Symbol('_nativeRegExp');
  _js_helper.regExpGetNative = function(regexp) {
    return regexp[_nativeRegExp];
  };
  const _nativeGlobalVersion = Symbol('_nativeGlobalVersion');
  _js_helper.regExpGetGlobalNative = function(regexp) {
    let nativeRegexp = regexp[_nativeGlobalVersion];
    nativeRegexp.lastIndex = 0;
    return nativeRegexp;
  };
  const _nativeAnchoredVersion = Symbol('_nativeAnchoredVersion');
  _js_helper.regExpCaptureCount = function(regexp) {
    let nativeAnchoredRegExp = regexp[_nativeAnchoredVersion];
    let match = nativeAnchoredRegExp.exec('');
    return match.length - 2;
  };
  const _nativeGlobalRegExp = Symbol('_nativeGlobalRegExp');
  const _nativeAnchoredRegExp = Symbol('_nativeAnchoredRegExp');
  const _isMultiLine = Symbol('_isMultiLine');
  const _isCaseSensitive = Symbol('_isCaseSensitive');
  const _execGlobal = Symbol('_execGlobal');
  const _execAnchored = Symbol('_execAnchored');
  _js_helper.JSSyntaxRegExp = class JSSyntaxRegExp extends core.Object {
    toString() {
      return "RegExp/" + dart.str(this.pattern) + "/";
    }
    get [_nativeGlobalVersion]() {
      if (this[_nativeGlobalRegExp] != null) return this[_nativeGlobalRegExp];
      return this[_nativeGlobalRegExp] = _js_helper.JSSyntaxRegExp.makeNative(this.pattern, this[_isMultiLine], this[_isCaseSensitive], true);
    }
    get [_nativeAnchoredVersion]() {
      if (this[_nativeAnchoredRegExp] != null) return this[_nativeAnchoredRegExp];
      return this[_nativeAnchoredRegExp] = _js_helper.JSSyntaxRegExp.makeNative(dart.str(this.pattern) + "|()", this[_isMultiLine], this[_isCaseSensitive], true);
    }
    get [_isMultiLine]() {
      return this[_nativeRegExp].multiline;
    }
    get [_isCaseSensitive]() {
      return !this[_nativeRegExp].ignoreCase;
    }
    static makeNative(source, multiLine, caseSensitive, global) {
      if (source == null) dart.argumentError(source);
      let m = dart.test(multiLine) ? "m" : "";
      let i = dart.test(caseSensitive) ? "" : "i";
      let g = dart.test(global) ? "g" : "";
      let regexp = (function() {
        try {
          return new RegExp(source, m + i + g);
        } catch (e) {
          return e;
        }
      })();
      if (regexp instanceof RegExp) return regexp;
      let errorMessage = String(regexp);
      dart.throw(new core.FormatException.new("Illegal RegExp pattern: " + source + ", " + errorMessage));
    }
    firstMatch(string) {
      if (string == null) dart.argumentError(string);
      let m = this[_nativeRegExp].exec(string);
      if (m == null) return null;
      return new _js_helper._MatchImplementation.new(this, JSArrayOfString().of(m));
    }
    hasMatch(string) {
      if (string == null) dart.argumentError(string);
      return this[_nativeRegExp].test(string);
    }
    stringMatch(string) {
      let match = this.firstMatch(string);
      if (match != null) return match.group(0);
      return null;
    }
    allMatches(string, start) {
      if (string == null) dart.argumentError(string);
      if (start === void 0) start = 0;
      if (start == null) dart.argumentError(start);
      if (start < 0 || start > string.length) {
        dart.throw(new core.RangeError.range(start, 0, string.length));
      }
      return new _js_helper._AllMatchesIterable.new(this, string, start);
    }
    [_execGlobal](string, start) {
      let regexp = this[_nativeGlobalVersion];
      regexp.lastIndex = start;
      let match = regexp.exec(string);
      if (match == null) return null;
      return new _js_helper._MatchImplementation.new(this, JSArrayOfString().of(match));
    }
    [_execAnchored](string, start) {
      let regexp = this[_nativeAnchoredVersion];
      regexp.lastIndex = start;
      let match = regexp.exec(string);
      if (match == null) return null;
      if (match[$_get](dart.notNull(match[$length]) - 1) != null) return null;
      match[$length] = dart.notNull(match[$length]) - 1;
      return new _js_helper._MatchImplementation.new(this, JSArrayOfString().of(match));
    }
    matchAsPrefix(string, start) {
      if (start === void 0) start = 0;
      if (dart.notNull(start) < 0 || dart.notNull(start) > string.length) {
        dart.throw(new core.RangeError.range(start, 0, string.length));
      }
      return this[_execAnchored](string, start);
    }
    get isMultiLine() {
      return this[_isMultiLine];
    }
    get isCaseSensitive() {
      return this[_isCaseSensitive];
    }
  };
  (_js_helper.JSSyntaxRegExp.new = function(source, opts) {
    let multiLine = opts && 'multiLine' in opts ? opts.multiLine : false;
    let caseSensitive = opts && 'caseSensitive' in opts ? opts.caseSensitive : true;
    this[_nativeGlobalRegExp] = null;
    this[_nativeAnchoredRegExp] = null;
    this.pattern = source;
    this[_nativeRegExp] = _js_helper.JSSyntaxRegExp.makeNative(source, multiLine, caseSensitive, false);
  }).prototype = _js_helper.JSSyntaxRegExp.prototype;
  dart.addTypeTests(_js_helper.JSSyntaxRegExp);
  _js_helper.JSSyntaxRegExp[dart.implements] = () => [core.RegExp];
  dart.setMethodSignature(_js_helper.JSSyntaxRegExp, () => ({
    __proto__: dart.getMethods(_js_helper.JSSyntaxRegExp.__proto__),
    firstMatch: dart.fnType(core.Match, [core.String]),
    hasMatch: dart.fnType(core.bool, [core.String]),
    stringMatch: dart.fnType(core.String, [core.String]),
    allMatches: dart.fnType(core.Iterable$(core.Match), [core.String], [core.int]),
    [$allMatches]: dart.fnType(core.Iterable$(core.Match), [core.String], [core.int]),
    [_execGlobal]: dart.fnType(core.Match, [core.String, core.int]),
    [_execAnchored]: dart.fnType(core.Match, [core.String, core.int]),
    matchAsPrefix: dart.fnType(core.Match, [core.String], [core.int]),
    [$matchAsPrefix]: dart.fnType(core.Match, [core.String], [core.int])
  }));
  dart.setGetterSignature(_js_helper.JSSyntaxRegExp, () => ({
    __proto__: dart.getGetters(_js_helper.JSSyntaxRegExp.__proto__),
    [_nativeGlobalVersion]: dart.dynamic,
    [_nativeAnchoredVersion]: dart.dynamic,
    [_isMultiLine]: core.bool,
    [_isCaseSensitive]: core.bool,
    isMultiLine: core.bool,
    isCaseSensitive: core.bool
  }));
  dart.setFieldSignature(_js_helper.JSSyntaxRegExp, () => ({
    __proto__: dart.getFields(_js_helper.JSSyntaxRegExp.__proto__),
    pattern: dart.finalFieldType(core.String),
    [_nativeRegExp]: dart.finalFieldType(dart.dynamic),
    [_nativeGlobalRegExp]: dart.fieldType(dart.dynamic),
    [_nativeAnchoredRegExp]: dart.fieldType(dart.dynamic)
  }));
  dart.defineExtensionMethods(_js_helper.JSSyntaxRegExp, ['toString', 'allMatches', 'matchAsPrefix']);
  const _match = Symbol('_match');
  _js_helper._MatchImplementation = class _MatchImplementation extends core.Object {
    get input() {
      return this[_match].input;
    }
    get start() {
      return this[_match].index;
    }
    get end() {
      return dart.notNull(this.start) + this[_match][$_get](0).length;
    }
    group(index) {
      return this[_match][$_get](index);
    }
    _get(index) {
      return this.group(index);
    }
    get groupCount() {
      return dart.notNull(this[_match][$length]) - 1;
    }
    groups(groups) {
      let out = JSArrayOfString().of([]);
      for (let i of groups) {
        out[$add](this.group(i));
      }
      return out;
    }
  };
  (_js_helper._MatchImplementation.new = function(pattern, match) {
    this.pattern = pattern;
    this[_match] = match;
    if (!(typeof this[_match].input == 'string')) dart.assertFailed();
    if (!core.int.is(this[_match].index)) dart.assertFailed();
  }).prototype = _js_helper._MatchImplementation.prototype;
  dart.addTypeTests(_js_helper._MatchImplementation);
  _js_helper._MatchImplementation[dart.implements] = () => [core.Match];
  dart.setMethodSignature(_js_helper._MatchImplementation, () => ({
    __proto__: dart.getMethods(_js_helper._MatchImplementation.__proto__),
    group: dart.fnType(core.String, [core.int]),
    _get: dart.fnType(core.String, [core.int]),
    groups: dart.fnType(core.List$(core.String), [core.List$(core.int)])
  }));
  dart.setGetterSignature(_js_helper._MatchImplementation, () => ({
    __proto__: dart.getGetters(_js_helper._MatchImplementation.__proto__),
    input: core.String,
    start: core.int,
    end: core.int,
    groupCount: core.int
  }));
  dart.setFieldSignature(_js_helper._MatchImplementation, () => ({
    __proto__: dart.getFields(_js_helper._MatchImplementation.__proto__),
    pattern: dart.finalFieldType(core.Pattern),
    [_match]: dart.finalFieldType(ListOfString())
  }));
  const _re = Symbol('_re');
  const _string$ = Symbol('_string');
  const _start$ = Symbol('_start');
  core.Match = class Match extends core.Object {};
  (core.Match.new = function() {
  }).prototype = core.Match.prototype;
  dart.addTypeTests(core.Match);
  _js_helper._AllMatchesIterable = class _AllMatchesIterable extends collection.IterableBase$(core.Match) {
    get iterator() {
      return new _js_helper._AllMatchesIterator.new(this[_re], this[_string$], this[_start$]);
    }
  };
  (_js_helper._AllMatchesIterable.new = function(re, string, start) {
    this[_re] = re;
    this[_string$] = string;
    this[_start$] = start;
    _js_helper._AllMatchesIterable.__proto__.new.call(this);
  }).prototype = _js_helper._AllMatchesIterable.prototype;
  dart.addTypeTests(_js_helper._AllMatchesIterable);
  dart.setGetterSignature(_js_helper._AllMatchesIterable, () => ({
    __proto__: dart.getGetters(_js_helper._AllMatchesIterable.__proto__),
    iterator: core.Iterator$(core.Match),
    [$iterator]: core.Iterator$(core.Match)
  }));
  dart.setFieldSignature(_js_helper._AllMatchesIterable, () => ({
    __proto__: dart.getFields(_js_helper._AllMatchesIterable.__proto__),
    [_re]: dart.finalFieldType(_js_helper.JSSyntaxRegExp),
    [_string$]: dart.finalFieldType(core.String),
    [_start$]: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionAccessors(_js_helper._AllMatchesIterable, ['iterator']);
  const _regExp = Symbol('_regExp');
  const _nextIndex = Symbol('_nextIndex');
  _js_helper._AllMatchesIterator = class _AllMatchesIterator extends core.Object {
    get current() {
      return this[_current$0];
    }
    moveNext() {
      if (this[_string$] == null) return false;
      if (dart.notNull(this[_nextIndex]) <= this[_string$].length) {
        let match = this[_regExp][_execGlobal](this[_string$], this[_nextIndex]);
        if (match != null) {
          this[_current$0] = match;
          let nextIndex = match.end;
          if (match.start == nextIndex) {
            nextIndex = dart.notNull(nextIndex) + 1;
          }
          this[_nextIndex] = nextIndex;
          return true;
        }
      }
      this[_current$0] = null;
      this[_string$] = null;
      return false;
    }
  };
  (_js_helper._AllMatchesIterator.new = function(regExp, string, nextIndex) {
    this[_current$0] = null;
    this[_regExp] = regExp;
    this[_string$] = string;
    this[_nextIndex] = nextIndex;
  }).prototype = _js_helper._AllMatchesIterator.prototype;
  dart.addTypeTests(_js_helper._AllMatchesIterator);
  _js_helper._AllMatchesIterator[dart.implements] = () => [IteratorOfMatch()];
  dart.setMethodSignature(_js_helper._AllMatchesIterator, () => ({
    __proto__: dart.getMethods(_js_helper._AllMatchesIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(_js_helper._AllMatchesIterator, () => ({
    __proto__: dart.getGetters(_js_helper._AllMatchesIterator.__proto__),
    current: core.Match
  }));
  dart.setFieldSignature(_js_helper._AllMatchesIterator, () => ({
    __proto__: dart.getFields(_js_helper._AllMatchesIterator.__proto__),
    [_regExp]: dart.finalFieldType(_js_helper.JSSyntaxRegExp),
    [_string$]: dart.fieldType(core.String),
    [_nextIndex]: dart.fieldType(core.int),
    [_current$0]: dart.fieldType(core.Match)
  }));
  _js_helper.firstMatchAfter = function(regExp, string, start) {
    return regExp[_execGlobal](string, start);
  };
  _js_helper.stringIndexOfStringUnchecked = function(receiver, other, startIndex) {
    return receiver.indexOf(other, startIndex);
  };
  _js_helper.substring1Unchecked = function(receiver, startIndex) {
    return receiver.substring(startIndex);
  };
  _js_helper.substring2Unchecked = function(receiver, startIndex, endIndex) {
    return receiver.substring(startIndex, endIndex);
  };
  _js_helper.stringContainsStringUnchecked = function(receiver, other, startIndex) {
    return _js_helper.stringIndexOfStringUnchecked(receiver, other, startIndex) >= 0;
  };
  _js_helper.StringMatch = class StringMatch extends core.Object {
    get end() {
      return dart.notNull(this.start) + this.pattern.length;
    }
    _get(g) {
      return this.group(g);
    }
    get groupCount() {
      return 0;
    }
    group(group_) {
      if (group_ !== 0) {
        dart.throw(new core.RangeError.value(group_));
      }
      return this.pattern;
    }
    groups(groups_) {
      let result = JSArrayOfString().of([]);
      for (let g of groups_) {
        result[$add](this.group(g));
      }
      return result;
    }
  };
  (_js_helper.StringMatch.new = function(start, input, pattern) {
    this.start = start;
    this.input = input;
    this.pattern = pattern;
  }).prototype = _js_helper.StringMatch.prototype;
  dart.addTypeTests(_js_helper.StringMatch);
  _js_helper.StringMatch[dart.implements] = () => [core.Match];
  dart.setMethodSignature(_js_helper.StringMatch, () => ({
    __proto__: dart.getMethods(_js_helper.StringMatch.__proto__),
    _get: dart.fnType(core.String, [core.int]),
    group: dart.fnType(core.String, [core.int]),
    groups: dart.fnType(core.List$(core.String), [core.List$(core.int)])
  }));
  dart.setGetterSignature(_js_helper.StringMatch, () => ({
    __proto__: dart.getGetters(_js_helper.StringMatch.__proto__),
    end: core.int,
    groupCount: core.int
  }));
  dart.setFieldSignature(_js_helper.StringMatch, () => ({
    __proto__: dart.getFields(_js_helper.StringMatch.__proto__),
    start: dart.finalFieldType(core.int),
    input: dart.finalFieldType(core.String),
    pattern: dart.finalFieldType(core.String)
  }));
  _js_helper.allMatchesInStringUnchecked = function(pattern, string, startIndex) {
    return new _js_helper._StringAllMatchesIterable.new(string, pattern, startIndex);
  };
  const _input = Symbol('_input');
  const _pattern = Symbol('_pattern');
  const _index$0 = Symbol('_index');
  _js_helper._StringAllMatchesIterable = class _StringAllMatchesIterable extends core.Iterable$(core.Match) {
    get iterator() {
      return new _js_helper._StringAllMatchesIterator.new(this[_input], this[_pattern], this[_index$0]);
    }
    get first() {
      let index = _js_helper.stringIndexOfStringUnchecked(this[_input], this[_pattern], this[_index$0]);
      if (index >= 0) {
        return new _js_helper.StringMatch.new(index, this[_input], this[_pattern]);
      }
      dart.throw(_internal.IterableElementError.noElement());
    }
  };
  (_js_helper._StringAllMatchesIterable.new = function(input, pattern, index) {
    this[_input] = input;
    this[_pattern] = pattern;
    this[_index$0] = index;
    _js_helper._StringAllMatchesIterable.__proto__.new.call(this);
  }).prototype = _js_helper._StringAllMatchesIterable.prototype;
  dart.addTypeTests(_js_helper._StringAllMatchesIterable);
  dart.setGetterSignature(_js_helper._StringAllMatchesIterable, () => ({
    __proto__: dart.getGetters(_js_helper._StringAllMatchesIterable.__proto__),
    iterator: core.Iterator$(core.Match),
    [$iterator]: core.Iterator$(core.Match),
    first: core.Match,
    [$first]: core.Match
  }));
  dart.setFieldSignature(_js_helper._StringAllMatchesIterable, () => ({
    __proto__: dart.getFields(_js_helper._StringAllMatchesIterable.__proto__),
    [_input]: dart.finalFieldType(core.String),
    [_pattern]: dart.finalFieldType(core.String),
    [_index$0]: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionAccessors(_js_helper._StringAllMatchesIterable, ['iterator', 'first']);
  _js_helper._StringAllMatchesIterator = class _StringAllMatchesIterator extends core.Object {
    moveNext() {
      if (dart.notNull(this[_index$0]) + this[_pattern].length > this[_input].length) {
        this[_current$0] = null;
        return false;
      }
      let index = _js_helper.stringIndexOfStringUnchecked(this[_input], this[_pattern], this[_index$0]);
      if (index < 0) {
        this[_index$0] = this[_input].length + 1;
        this[_current$0] = null;
        return false;
      }
      let end = index + this[_pattern].length;
      this[_current$0] = new _js_helper.StringMatch.new(index, this[_input], this[_pattern]);
      if (end === this[_index$0]) end++;
      this[_index$0] = end;
      return true;
    }
    get current() {
      return this[_current$0];
    }
  };
  (_js_helper._StringAllMatchesIterator.new = function(input, pattern, index) {
    this[_current$0] = null;
    this[_input] = input;
    this[_pattern] = pattern;
    this[_index$0] = index;
  }).prototype = _js_helper._StringAllMatchesIterator.prototype;
  dart.addTypeTests(_js_helper._StringAllMatchesIterator);
  _js_helper._StringAllMatchesIterator[dart.implements] = () => [IteratorOfMatch()];
  dart.setMethodSignature(_js_helper._StringAllMatchesIterator, () => ({
    __proto__: dart.getMethods(_js_helper._StringAllMatchesIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(_js_helper._StringAllMatchesIterator, () => ({
    __proto__: dart.getGetters(_js_helper._StringAllMatchesIterator.__proto__),
    current: core.Match
  }));
  dart.setFieldSignature(_js_helper._StringAllMatchesIterator, () => ({
    __proto__: dart.getFields(_js_helper._StringAllMatchesIterator.__proto__),
    [_input]: dart.finalFieldType(core.String),
    [_pattern]: dart.finalFieldType(core.String),
    [_index$0]: dart.fieldType(core.int),
    [_current$0]: dart.fieldType(core.Match)
  }));
  _js_helper.stringContainsUnchecked = function(receiver, other, startIndex) {
    if (typeof other == 'string') {
      return _js_helper.stringContainsStringUnchecked(receiver, other, startIndex);
    } else if (_js_helper.JSSyntaxRegExp.is(other)) {
      return other.hasMatch(receiver[$substring](startIndex));
    } else {
      let substr = receiver[$substring](startIndex);
      return core.bool._check(dart.dload(dart.dsend(other, 'allMatches', [substr]), 'isNotEmpty'));
    }
  };
  _js_helper.stringReplaceJS = function(receiver, replacer, replacement) {
    replacement = replacement.replace(/\$/g, "$$$$");
    return receiver.replace(replacer, replacement);
  };
  _js_helper.stringReplaceFirstRE = function(receiver, regexp, replacement, startIndex) {
    let match = regexp[_execGlobal](receiver, startIndex);
    if (match == null) return receiver;
    let start = match.start;
    let end = match.end;
    return _js_helper.stringReplaceRangeUnchecked(receiver, start, end, replacement);
  };
  _js_helper.quoteStringForRegExp = function(string) {
    return string.replace(/[[\]{}()*+?.\\^$|]/g, "\\$&");
  };
  _js_helper.stringReplaceAllUnchecked = function(receiver, pattern, replacement) {
    if (pattern == null) dart.argumentError(pattern);
    if (replacement == null) dart.argumentError(replacement);
    if (typeof pattern == 'string') {
      if (pattern === "") {
        if (receiver === "") {
          return replacement;
        } else {
          let result = new core.StringBuffer.new();
          let length = receiver.length;
          result.write(replacement);
          for (let i = 0; i < length; i++) {
            result.write(receiver[$_get](i));
            result.write(replacement);
          }
          return result.toString();
        }
      } else {
        let quoted = _js_helper.quoteStringForRegExp(pattern);
        let replacer = new RegExp(quoted, 'g');
        return _js_helper.stringReplaceJS(receiver, replacer, replacement);
      }
    } else if (_js_helper.JSSyntaxRegExp.is(pattern)) {
      let re = _js_helper.regExpGetGlobalNative(pattern);
      return _js_helper.stringReplaceJS(receiver, re, replacement);
    } else {
      dart.throw("String.replaceAll(Pattern) UNIMPLEMENTED");
    }
  };
  _js_helper._matchString = function(match) {
    return match._get(0);
  };
  _js_helper._stringIdentity = function(string) {
    return string;
  };
  _js_helper.stringReplaceAllFuncUnchecked = function(receiver, pattern, onMatch, onNonMatch) {
    if (pattern == null) dart.argumentError(pattern);
    if (onMatch == null) onMatch = dart.fn(_js_helper._matchString, MatchToString());
    if (onNonMatch == null) onNonMatch = dart.fn(_js_helper._stringIdentity, StringToString());
    if (typeof pattern == 'string') {
      return _js_helper.stringReplaceAllStringFuncUnchecked(receiver, pattern, onMatch, onNonMatch);
    }
    let buffer = new core.StringBuffer.new();
    let startIndex = 0;
    for (let match of pattern[$allMatches](receiver)) {
      buffer.write(onNonMatch(receiver[$substring](startIndex, match.start)));
      buffer.write(onMatch(match));
      startIndex = match.end;
    }
    buffer.write(onNonMatch(receiver[$substring](startIndex)));
    return buffer.toString();
  };
  _js_helper.stringReplaceAllEmptyFuncUnchecked = function(receiver, onMatch, onNonMatch) {
    let buffer = new core.StringBuffer.new();
    let length = receiver.length;
    let i = 0;
    buffer.write(onNonMatch(""));
    while (i < length) {
      buffer.write(onMatch(new _js_helper.StringMatch.new(i, receiver, "")));
      let code = receiver[$codeUnitAt](i);
      if ((code & ~1023) === 55296 && length > i + 1) {
        code = receiver[$codeUnitAt](i + 1);
        if ((code & ~1023) === 56320) {
          buffer.write(onNonMatch(receiver[$substring](i, i + 2)));
          i = i + 2;
          continue;
        }
      }
      buffer.write(onNonMatch(receiver[$_get](i)));
      i++;
    }
    buffer.write(onMatch(new _js_helper.StringMatch.new(i, receiver, "")));
    buffer.write(onNonMatch(""));
    return buffer.toString();
  };
  _js_helper.stringReplaceAllStringFuncUnchecked = function(receiver, pattern, onMatch, onNonMatch) {
    let patternLength = pattern.length;
    if (patternLength === 0) {
      return _js_helper.stringReplaceAllEmptyFuncUnchecked(receiver, onMatch, onNonMatch);
    }
    let length = receiver.length;
    let buffer = new core.StringBuffer.new();
    let startIndex = 0;
    while (startIndex < length) {
      let position = _js_helper.stringIndexOfStringUnchecked(receiver, pattern, startIndex);
      if (position === -1) {
        break;
      }
      buffer.write(onNonMatch(receiver[$substring](startIndex, position)));
      buffer.write(onMatch(new _js_helper.StringMatch.new(position, receiver, pattern)));
      startIndex = position + patternLength;
    }
    buffer.write(onNonMatch(receiver[$substring](startIndex)));
    return buffer.toString();
  };
  _js_helper.stringReplaceFirstUnchecked = function(receiver, pattern, replacement, startIndex) {
    if (pattern == null) dart.argumentError(pattern);
    if (typeof pattern == 'string') {
      let index = _js_helper.stringIndexOfStringUnchecked(receiver, pattern, startIndex);
      if (index < 0) return receiver;
      let end = index + pattern.length;
      return _js_helper.stringReplaceRangeUnchecked(receiver, index, end, replacement);
    }
    if (_js_helper.JSSyntaxRegExp.is(pattern)) {
      return startIndex === 0 ? _js_helper.stringReplaceJS(receiver, _js_helper.regExpGetNative(pattern), replacement) : _js_helper.stringReplaceFirstRE(receiver, pattern, replacement, startIndex);
    }
    let matches = pattern[$allMatches](receiver, startIndex)[$iterator];
    if (!dart.test(matches.moveNext())) return receiver;
    let match = matches.current;
    return receiver[$replaceRange](match.start, match.end, replacement);
  };
  _js_helper.stringReplaceFirstMappedUnchecked = function(receiver, pattern, replace, startIndex) {
    let matches = pattern[$allMatches](receiver, startIndex)[$iterator];
    if (!dart.test(matches.moveNext())) return receiver;
    let match = matches.current;
    let replacement = dart.str(replace(match));
    return receiver[$replaceRange](match.start, match.end, replacement);
  };
  _js_helper.stringJoinUnchecked = function(array, separator) {
    return array.join(separator);
  };
  _js_helper.stringReplaceRangeUnchecked = function(receiver, start, end, replacement) {
    let prefix = receiver.substring(0, start);
    let suffix = receiver.substring(end);
    return prefix + dart.str(replacement) + suffix;
  };
  _js_helper.getRuntimeType = function(object) {
    return dart.getReifiedType(object);
  };
  _js_helper.getIndex = function(array, index) {
    if (!dart.test(_js_helper.isJsArray(array))) dart.assertFailed();
    return array[index];
  };
  _js_helper.getLength = function(array) {
    if (!dart.test(_js_helper.isJsArray(array))) dart.assertFailed();
    return array.length;
  };
  _js_helper.isJsArray = function(value) {
    return _interceptors.JSArray.is(value);
  };
  _js_mirrors.getName = function(symbol) {
    if (_js_helper.PrivateSymbol.is(symbol)) {
      return _js_helper.PrivateSymbol.getName(symbol);
    } else {
      return _internal.Symbol.getName(_internal.Symbol.as(symbol));
    }
  };
  _js_mirrors.getSymbol = function(name, library) {
    return dart.throw(new core.UnimplementedError.new("MirrorSystem.getSymbol unimplemented"));
  };
  dart.defineLazy(_js_mirrors, {
    /*_js_mirrors.currentJsMirrorSystem*/get currentJsMirrorSystem() {
      return new _js_mirrors.JsMirrorSystem.new();
    },
    /*_js_mirrors._typeMirror*/get _typeMirror() {
      return Symbol("_typeMirror");
    }
  });
  _js_mirrors.reflect = function(reflectee) {
    if (core.Function.is(reflectee)) {
      return new _js_mirrors.JsClosureMirror.__(reflectee);
    } else {
      return new _js_mirrors.JsInstanceMirror.__(reflectee);
    }
  };
  _js_mirrors.reflectType = function(key) {
    let unwrapped = dart.unwrapType(key);
    let property = Object.getOwnPropertyDescriptor(unwrapped, _js_mirrors._typeMirror);
    if (property != null) {
      return property.value;
    }
    let mirror = new _js_mirrors.JsClassMirror.__(key);
    unwrapped[_js_mirrors._typeMirror] = mirror;
    return mirror;
  };
  _js_mirrors._getESSymbol = function(symbol) {
    return _js_helper.PrivateSymbol.getNativeSymbol(symbol);
  };
  _js_mirrors._getMember = function(symbol) {
    let privateSymbol = _js_mirrors._getESSymbol(symbol);
    if (privateSymbol != null) {
      return privateSymbol;
    }
    let name = _js_mirrors.getName(symbol);
    switch (name) {
      case "[]":
      {
        name = "_get";
        break;
      }
      case "[]=":
      {
        name = "_set";
        break;
      }
      case "unary-":
      {
        name = "_negate";
        break;
      }
      case "constructor":
      case "prototype":
      {
        name = "_" + dart.str(name);
        break;
      }
    }
    return name;
  };
  _js_mirrors._getNameForESSymbol = function(member) {
    if (!(typeof member == "symbol")) dart.assertFailed();
    let str = dart.toString(member);
    if (!(str[$startsWith]("Symbol(") && str[$endsWith](")"))) dart.assertFailed();
    return str[$substring](7, str.length - 1);
  };
  _js_mirrors._getSymbolForESSymbol = function(member) {
    let name = _js_mirrors._getNameForESSymbol(member);
    return new _js_helper.PrivateSymbol.new(name, member);
  };
  _js_mirrors._getSymbolForMember = function(member) {
    if (typeof member == 'string') {
      return core.Symbol.new(member);
    } else {
      let name = _js_mirrors._getNameForESSymbol(member);
      return new _js_helper.PrivateSymbol.new(name, member);
    }
  };
  _js_mirrors._toDartMap = function(data) {
    if (data == null) return new (LinkedMapOfSymbol$dynamic()).new();
    let map = new (LinkedMapOfSymbol$dynamic()).new();
    let publicMembers = Object.getOwnPropertyNames(data);
    for (let member of core.Iterable._check(publicMembers)) {
      let symbol = core.Symbol.new(core.String._check(member));
      map[$_set](symbol, data[member]);
    }
    let privateMembers = Object.getOwnPropertySymbols(data);
    for (let member of core.Iterable._check(privateMembers)) {
      let symbol = _js_mirrors._getSymbolForESSymbol(member);
      map[$_set](symbol, data[member]);
    }
    return map;
  };
  _js_mirrors._runtimeType = function(obj) {
    return dart.wrapType(dart.getReifiedType(obj));
  };
  _js_mirrors._unimplemented = function(t, i) {
    dart.throw(new core.UnimplementedError.new(dart.str(t) + "." + dart.str(_js_mirrors.getName(i.memberName)) + " unimplemented"));
  };
  _js_mirrors._toJsMap = function(map) {
    if (map == null) return null;
    let obj = {};
    map[$forEach](dart.fn((key, value) => {
      obj[_js_mirrors.getName(key)] = value;
    }, SymbolAnddynamicToNull()));
    return obj;
  };
  let const$3;
  _js_mirrors.JsMirrorSystem = class JsMirrorSystem extends core.Object {
    get libraries() {
      return const$3 || (const$3 = dart.constMap(core.Uri, mirrors.LibraryMirror, []));
    }
    noSuchMethod(i) {
      _js_mirrors._unimplemented(this.runtimeType, i);
    }
    findLibrary(libraryName) {
      return mirrors.LibraryMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('findLibrary', [libraryName], {isMethod: true})));
    }
    get isolate() {
      return mirrors.IsolateMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('isolate', [], {isGetter: true})));
    }
    get dynamicType() {
      return mirrors.TypeMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('dynamicType', [], {isGetter: true})));
    }
    get voidType() {
      return mirrors.TypeMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('voidType', [], {isGetter: true})));
    }
  };
  (_js_mirrors.JsMirrorSystem.new = function() {
  }).prototype = _js_mirrors.JsMirrorSystem.prototype;
  dart.addTypeTests(_js_mirrors.JsMirrorSystem);
  _js_mirrors.JsMirrorSystem[dart.implements] = () => [mirrors.MirrorSystem];
  dart.setMethodSignature(_js_mirrors.JsMirrorSystem, () => ({
    __proto__: dart.getMethods(_js_mirrors.JsMirrorSystem.__proto__),
    findLibrary: dart.fnType(mirrors.LibraryMirror, [core.Symbol])
  }));
  dart.setGetterSignature(_js_mirrors.JsMirrorSystem, () => ({
    __proto__: dart.getGetters(_js_mirrors.JsMirrorSystem.__proto__),
    libraries: core.Map$(core.Uri, mirrors.LibraryMirror),
    isolate: mirrors.IsolateMirror,
    dynamicType: mirrors.TypeMirror,
    voidType: mirrors.TypeMirror
  }));
  dart.defineExtensionMethods(_js_mirrors.JsMirrorSystem, ['noSuchMethod']);
  _js_mirrors.JsMirror = class JsMirror extends core.Object {
    noSuchMethod(i) {
      _js_mirrors._unimplemented(this.runtimeType, i);
    }
  };
  (_js_mirrors.JsMirror.new = function() {
  }).prototype = _js_mirrors.JsMirror.prototype;
  dart.addTypeTests(_js_mirrors.JsMirror);
  _js_mirrors.JsMirror[dart.implements] = () => [mirrors.Mirror];
  dart.defineExtensionMethods(_js_mirrors.JsMirror, ['noSuchMethod']);
  _js_mirrors.JsCombinatorMirror = class JsCombinatorMirror extends _js_mirrors.JsMirror {
    get identifiers() {
      return ListOfSymbol()._check(this.noSuchMethod(new dart.InvocationImpl.new('identifiers', [], {isGetter: true})));
    }
    get isShow() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isShow', [], {isGetter: true})));
    }
    get isHide() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isHide', [], {isGetter: true})));
    }
  };
  (_js_mirrors.JsCombinatorMirror.new = function() {
  }).prototype = _js_mirrors.JsCombinatorMirror.prototype;
  dart.addTypeTests(_js_mirrors.JsCombinatorMirror);
  _js_mirrors.JsCombinatorMirror[dart.implements] = () => [mirrors.CombinatorMirror];
  dart.setGetterSignature(_js_mirrors.JsCombinatorMirror, () => ({
    __proto__: dart.getGetters(_js_mirrors.JsCombinatorMirror.__proto__),
    identifiers: core.List$(core.Symbol),
    isShow: core.bool,
    isHide: core.bool
  }));
  _js_mirrors.JsDeclarationMirror = class JsDeclarationMirror extends _js_mirrors.JsMirror {
    get simpleName() {
      return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl.new('simpleName', [], {isGetter: true})));
    }
    get qualifiedName() {
      return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl.new('qualifiedName', [], {isGetter: true})));
    }
    get owner() {
      return mirrors.DeclarationMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('owner', [], {isGetter: true})));
    }
    get isPrivate() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isPrivate', [], {isGetter: true})));
    }
    get isTopLevel() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isTopLevel', [], {isGetter: true})));
    }
    get location() {
      return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl.new('location', [], {isGetter: true})));
    }
    get metadata() {
      return ListOfInstanceMirror()._check(this.noSuchMethod(new dart.InvocationImpl.new('metadata', [], {isGetter: true})));
    }
  };
  (_js_mirrors.JsDeclarationMirror.new = function() {
  }).prototype = _js_mirrors.JsDeclarationMirror.prototype;
  dart.addTypeTests(_js_mirrors.JsDeclarationMirror);
  _js_mirrors.JsDeclarationMirror[dart.implements] = () => [mirrors.DeclarationMirror];
  dart.setGetterSignature(_js_mirrors.JsDeclarationMirror, () => ({
    __proto__: dart.getGetters(_js_mirrors.JsDeclarationMirror.__proto__),
    simpleName: core.Symbol,
    qualifiedName: core.Symbol,
    owner: mirrors.DeclarationMirror,
    isPrivate: core.bool,
    isTopLevel: core.bool,
    location: mirrors.SourceLocation,
    metadata: core.List$(mirrors.InstanceMirror)
  }));
  _js_mirrors.JsIsolateMirror = class JsIsolateMirror extends _js_mirrors.JsMirror {
    loadUri(uri) {
      return FutureOfLibraryMirror()._check(this.noSuchMethod(new dart.InvocationImpl.new('loadUri', [uri], {isMethod: true})));
    }
    get debugName() {
      return core.String._check(this.noSuchMethod(new dart.InvocationImpl.new('debugName', [], {isGetter: true})));
    }
    get isCurrent() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isCurrent', [], {isGetter: true})));
    }
    get rootLibrary() {
      return mirrors.LibraryMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('rootLibrary', [], {isGetter: true})));
    }
  };
  (_js_mirrors.JsIsolateMirror.new = function() {
  }).prototype = _js_mirrors.JsIsolateMirror.prototype;
  dart.addTypeTests(_js_mirrors.JsIsolateMirror);
  _js_mirrors.JsIsolateMirror[dart.implements] = () => [mirrors.IsolateMirror];
  dart.setMethodSignature(_js_mirrors.JsIsolateMirror, () => ({
    __proto__: dart.getMethods(_js_mirrors.JsIsolateMirror.__proto__),
    loadUri: dart.fnType(async.Future$(mirrors.LibraryMirror), [core.Uri])
  }));
  dart.setGetterSignature(_js_mirrors.JsIsolateMirror, () => ({
    __proto__: dart.getGetters(_js_mirrors.JsIsolateMirror.__proto__),
    debugName: core.String,
    isCurrent: core.bool,
    rootLibrary: mirrors.LibraryMirror
  }));
  _js_mirrors.JsLibraryDependencyMirror = class JsLibraryDependencyMirror extends _js_mirrors.JsMirror {
    loadLibrary() {
      return FutureOfLibraryMirror()._check(this.noSuchMethod(new dart.InvocationImpl.new('loadLibrary', [], {isMethod: true})));
    }
    get isImport() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isImport', [], {isGetter: true})));
    }
    get isExport() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isExport', [], {isGetter: true})));
    }
    get isDeferred() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isDeferred', [], {isGetter: true})));
    }
    get sourceLibrary() {
      return mirrors.LibraryMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('sourceLibrary', [], {isGetter: true})));
    }
    get targetLibrary() {
      return mirrors.LibraryMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('targetLibrary', [], {isGetter: true})));
    }
    get prefix() {
      return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl.new('prefix', [], {isGetter: true})));
    }
    get combinators() {
      return ListOfCombinatorMirror()._check(this.noSuchMethod(new dart.InvocationImpl.new('combinators', [], {isGetter: true})));
    }
    get location() {
      return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl.new('location', [], {isGetter: true})));
    }
    get metadata() {
      return ListOfInstanceMirror()._check(this.noSuchMethod(new dart.InvocationImpl.new('metadata', [], {isGetter: true})));
    }
  };
  (_js_mirrors.JsLibraryDependencyMirror.new = function() {
  }).prototype = _js_mirrors.JsLibraryDependencyMirror.prototype;
  dart.addTypeTests(_js_mirrors.JsLibraryDependencyMirror);
  _js_mirrors.JsLibraryDependencyMirror[dart.implements] = () => [mirrors.LibraryDependencyMirror];
  dart.setMethodSignature(_js_mirrors.JsLibraryDependencyMirror, () => ({
    __proto__: dart.getMethods(_js_mirrors.JsLibraryDependencyMirror.__proto__),
    loadLibrary: dart.fnType(async.Future$(mirrors.LibraryMirror), [])
  }));
  dart.setGetterSignature(_js_mirrors.JsLibraryDependencyMirror, () => ({
    __proto__: dart.getGetters(_js_mirrors.JsLibraryDependencyMirror.__proto__),
    isImport: core.bool,
    isExport: core.bool,
    isDeferred: core.bool,
    sourceLibrary: mirrors.LibraryMirror,
    targetLibrary: mirrors.LibraryMirror,
    prefix: core.Symbol,
    combinators: core.List$(mirrors.CombinatorMirror),
    location: mirrors.SourceLocation,
    metadata: core.List$(mirrors.InstanceMirror)
  }));
  _js_mirrors.JsObjectMirror = class JsObjectMirror extends _js_mirrors.JsMirror {
    invoke(memberName, positionalArguments, namedArguments) {
      if (namedArguments === void 0) namedArguments = null;
      return mirrors.InstanceMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('invoke', [memberName, positionalArguments, namedArguments], {isMethod: true})));
    }
    getField(fieldName) {
      return mirrors.InstanceMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('getField', [fieldName], {isMethod: true})));
    }
    setField(fieldName, value) {
      return mirrors.InstanceMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('setField', [fieldName, value], {isMethod: true})));
    }
    delegate(invocation) {
      return this.noSuchMethod(new dart.InvocationImpl.new('delegate', [invocation], {isMethod: true}));
    }
  };
  (_js_mirrors.JsObjectMirror.new = function() {
  }).prototype = _js_mirrors.JsObjectMirror.prototype;
  dart.addTypeTests(_js_mirrors.JsObjectMirror);
  _js_mirrors.JsObjectMirror[dart.implements] = () => [mirrors.ObjectMirror];
  dart.setMethodSignature(_js_mirrors.JsObjectMirror, () => ({
    __proto__: dart.getMethods(_js_mirrors.JsObjectMirror.__proto__),
    invoke: dart.fnType(mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$(core.Symbol, dart.dynamic)]),
    getField: dart.fnType(mirrors.InstanceMirror, [core.Symbol]),
    setField: dart.fnType(mirrors.InstanceMirror, [core.Symbol, core.Object]),
    delegate: dart.fnType(dart.dynamic, [core.Invocation])
  }));
  _js_mirrors.JsInstanceMirror = class JsInstanceMirror extends _js_mirrors.JsObjectMirror {
    get hasReflectee() {
      return true;
    }
    get type() {
      if (this.reflectee == null) return mirrors.reflectClass(dart.wrapType(core.Null));
      return mirrors.ClassMirror._check(_js_mirrors.reflectType(core.Type._check(_js_mirrors._runtimeType(this.reflectee))));
    }
    _equals(other) {
      return _js_mirrors.JsInstanceMirror.is(other) && core.identical(this.reflectee, other.reflectee);
    }
    get hashCode() {
      return (dart.notNull(core.identityHashCode(this.reflectee)) ^ 909522486) >>> 0;
    }
    getField(symbol) {
      let name = _js_mirrors._getMember(symbol);
      let field = dart.dloadMirror(this.reflectee, name);
      return _js_mirrors.reflect(field);
    }
    setField(symbol, value) {
      let name = _js_mirrors._getMember(symbol);
      dart.dputMirror(this.reflectee, name, value);
      return _js_mirrors.reflect(value);
    }
    invoke(symbol, args, namedArgs) {
      if (namedArgs === void 0) namedArgs = null;
      let name = _js_mirrors._getMember(symbol);
      let result = dart.callMethod(this.reflectee, name, null, args, _js_mirrors._toJsMap(namedArgs), name);
      return _js_mirrors.reflect(result);
    }
    toString() {
      return "InstanceMirror on '" + dart.str(this.reflectee) + "'";
    }
    delegate(invocation) {
      return this.noSuchMethod(new dart.InvocationImpl.new('delegate', [invocation], {isMethod: true}));
    }
  };
  (_js_mirrors.JsInstanceMirror.__ = function(reflectee) {
    this.reflectee = reflectee;
  }).prototype = _js_mirrors.JsInstanceMirror.prototype;
  dart.addTypeTests(_js_mirrors.JsInstanceMirror);
  _js_mirrors.JsInstanceMirror[dart.implements] = () => [mirrors.InstanceMirror];
  dart.setMethodSignature(_js_mirrors.JsInstanceMirror, () => ({
    __proto__: dart.getMethods(_js_mirrors.JsInstanceMirror.__proto__),
    _equals: dart.fnType(core.bool, [core.Object]),
    [$_equals]: dart.fnType(core.bool, [core.Object]),
    getField: dart.fnType(mirrors.InstanceMirror, [core.Symbol]),
    setField: dart.fnType(mirrors.InstanceMirror, [core.Symbol, core.Object]),
    invoke: dart.fnType(mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$(core.Symbol, dart.dynamic)]),
    delegate: dart.fnType(dart.dynamic, [core.Invocation])
  }));
  dart.setGetterSignature(_js_mirrors.JsInstanceMirror, () => ({
    __proto__: dart.getGetters(_js_mirrors.JsInstanceMirror.__proto__),
    hasReflectee: core.bool,
    type: mirrors.ClassMirror
  }));
  dart.setFieldSignature(_js_mirrors.JsInstanceMirror, () => ({
    __proto__: dart.getFields(_js_mirrors.JsInstanceMirror.__proto__),
    reflectee: dart.finalFieldType(dart.dynamic)
  }));
  dart.defineExtensionMethods(_js_mirrors.JsInstanceMirror, ['_equals', 'toString']);
  dart.defineExtensionAccessors(_js_mirrors.JsInstanceMirror, ['hashCode']);
  _js_mirrors.JsClosureMirror = class JsClosureMirror extends _js_mirrors.JsInstanceMirror {
    apply(args, namedArgs) {
      if (namedArgs === void 0) namedArgs = null;
      let result = dart.dcall(this.reflectee, args, _js_mirrors._toJsMap(namedArgs));
      return _js_mirrors.reflect(result);
    }
    delegate(invocation) {
      return this.noSuchMethod(new dart.InvocationImpl.new('delegate', [invocation], {isMethod: true}));
    }
    get function() {
      return mirrors.MethodMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('function', [], {isGetter: true})));
    }
  };
  (_js_mirrors.JsClosureMirror.__ = function(reflectee) {
    _js_mirrors.JsClosureMirror.__proto__.__.call(this, reflectee);
  }).prototype = _js_mirrors.JsClosureMirror.prototype;
  dart.addTypeTests(_js_mirrors.JsClosureMirror);
  _js_mirrors.JsClosureMirror[dart.implements] = () => [mirrors.ClosureMirror];
  dart.setMethodSignature(_js_mirrors.JsClosureMirror, () => ({
    __proto__: dart.getMethods(_js_mirrors.JsClosureMirror.__proto__),
    apply: dart.fnType(mirrors.InstanceMirror, [core.List], [core.Map$(core.Symbol, dart.dynamic)]),
    delegate: dart.fnType(dart.dynamic, [core.Invocation])
  }));
  dart.setGetterSignature(_js_mirrors.JsClosureMirror, () => ({
    __proto__: dart.getGetters(_js_mirrors.JsClosureMirror.__proto__),
    function: mirrors.MethodMirror
  }));
  const _cls = Symbol('_cls');
  const _raw = Symbol('_raw');
  const _originalDeclaration = Symbol('_originalDeclaration');
  const _mixin = Symbol('_mixin');
  const _typeArguments = Symbol('_typeArguments');
  const _metadata$ = Symbol('_metadata');
  const _declarations = Symbol('_declarations');
  let const$4;
  let const$5;
  _js_mirrors.JsClassMirror = class JsClassMirror extends _js_mirrors.JsMirror {
    get metadata() {
      if (this[_metadata$] == null) {
        let unwrapped = dart.unwrapType(this[_cls]);
        let fn = Object.hasOwnProperty.call(unwrapped, dart.metadata) ? unwrapped[dart.metadata] : null;
        this[_metadata$] = fn == null ? const$5 || (const$5 = dart.constList([], mirrors.InstanceMirror)) : ListOfInstanceMirror().unmodifiable(core.Iterable._check(dart.dsend(dart.dcall(fn, []), 'map', [dart.fn(i => _js_mirrors.reflect(i), dynamicToInstanceMirror())])));
      }
      return this[_metadata$];
    }
    get declarations() {
      if (this[_declarations] == null) {
        this[_declarations] = new (LinkedMapOfSymbol$DeclarationMirror()).new();
        let unwrapped = dart.unwrapType(this[_cls]);
        let constructors = _js_mirrors._toDartMap(dart.getConstructors(unwrapped));
        constructors[$forEach](dart.fn((symbol, ft) => {
          let name = _js_mirrors.getName(symbol);
          this[_declarations][$_set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, symbol, ft));
        }, SymbolAnddynamicToNull()));
        if (dart.test(constructors[$isEmpty])) {
          let name = "new";
          let ft = dart.fnType(dart.unwrapType(this[_cls]), []);
          let symbol = core.Symbol.new(name);
          this[_declarations][$_set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, symbol, ft));
        }
        let fields = _js_mirrors._toDartMap(dart.getFields(unwrapped));
        fields[$forEach](dart.fn((symbol, t) => {
          this[_declarations][$_set](symbol, new _js_mirrors.JsVariableMirror._fromField(symbol, t));
        }, SymbolAnddynamicToNull()));
        let methods = _js_mirrors._toDartMap(dart.getMethods(unwrapped));
        methods[$forEach](dart.fn((symbol, ft) => {
          let name = _js_mirrors.getName(symbol);
          this[_declarations][$_set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, ft));
        }, SymbolAnddynamicToNull()));
        function getterType(type) {
          if (type instanceof Array) {
            let array = type.slice();
            type = array[0];
            array[0] = dart.fnType(type, []);
            return array;
          } else {
            return dart.fnType(type, []);
          }
        }
        dart.fn(getterType, dynamicTodynamic());
        let getters = _js_mirrors._toDartMap(dart.getGetters(unwrapped));
        getters[$forEach](dart.fn((symbol, type) => {
          this[_declarations][$_set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, getterType(type)));
        }, SymbolAnddynamicToNull()));
        function setterType(type) {
          if (type instanceof Array) {
            let array = type.slice();
            type = array[0];
            array[0] = dart.fnType(dart.void, [type]);
            return array;
          } else {
            return dart.fnType(dart.void, [type]);
          }
        }
        dart.fn(setterType, dynamicTodynamic());
        let setters = _js_mirrors._toDartMap(dart.getSetters(unwrapped));
        setters[$forEach](dart.fn((symbol, type) => {
          let name = dart.notNull(_js_mirrors.getName(symbol)) + "=";
          symbol = new _js_helper.PrivateSymbol.new(name, _js_mirrors._getESSymbol(symbol));
          this[_declarations][$_set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, setterType(type)));
        }, SymbolAnddynamicToNull()));
        let staticFields = _js_mirrors._toDartMap(dart.getStaticFields(unwrapped));
        staticFields[$forEach](dart.fn((symbol, t) => {
          this[_declarations][$_set](symbol, new _js_mirrors.JsVariableMirror._fromField(symbol, t));
        }, SymbolAnddynamicToNull()));
        let statics = _js_mirrors._toDartMap(dart.getStaticMethods(unwrapped));
        statics[$forEach](dart.fn((symbol, ft) => {
          this[_declarations][$_set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, ft));
        }, SymbolAnddynamicToNull()));
        let staticGetters = _js_mirrors._toDartMap(dart.getStaticGetters(unwrapped));
        staticGetters[$forEach](dart.fn((symbol, type) => {
          this[_declarations][$_set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, getterType(type)));
        }, SymbolAnddynamicToNull()));
        let staticSetters = _js_mirrors._toDartMap(dart.getStaticSetters(unwrapped));
        staticSetters[$forEach](dart.fn((symbol, type) => {
          this[_declarations][$_set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, setterType(type)));
        }, SymbolAnddynamicToNull()));
        this[_declarations] = MapOfSymbol$DeclarationMirror().unmodifiable(this[_declarations]);
      }
      return this[_declarations];
    }
    newInstance(constructorName, args, namedArgs) {
      if (namedArgs === void 0) namedArgs = null;
      let name = _js_mirrors.getName(constructorName);
      if (!(namedArgs == null || dart.test(namedArgs[$isEmpty]))) dart.assertFailed();
      if (name === "") name = "new";
      let cls = dart.unwrapType(this[_cls]);
      let ctr = cls[name];
      let instance = cls.prototype == ctr.prototype ? new ctr(...args) : ctr(...args);
      return _js_mirrors.reflect(instance);
    }
    getField(symbol) {
      let name = _js_mirrors.getName(symbol);
      return _js_mirrors.reflect(dart.unwrapType(this[_cls])[name]);
    }
    setField(symbol, value) {
      let name = _js_mirrors.getName(symbol);
      dart.unwrapType(this[_cls])[name] = value;
      return _js_mirrors.reflect(value);
    }
    invoke(symbol, args, namedArgs) {
      if (namedArgs === void 0) namedArgs = null;
      let name = _js_mirrors.getName(symbol);
      if (namedArgs != null) {
        args = core.List.from(args);
        args[$add](_js_mirrors._toJsMap(namedArgs));
      }
      let result = dart.unwrapType(this[_cls])[name](...args);
      return _js_mirrors.reflect(result);
    }
    get superinterfaces() {
      let interfaceThunk = dart.unwrapType(this[_cls])[dart.implements];
      if (interfaceThunk == null) {
        return JSArrayOfClassMirror().of([]);
      } else {
        let interfaces = interfaceThunk();
        return ListOfClassMirror()._check(IterableOfTypeMirror()._check(interfaces[$map](mirrors.TypeMirror, dart.fn(t => _js_mirrors.reflectType(t), TypeToTypeMirror())))[$toList]());
      }
    }
    get hasReflectedType() {
      return true;
    }
    get reflectedType() {
      return this[_cls];
    }
    get isOriginalDeclaration() {
      return this[_raw] == null;
    }
    get typeArguments() {
      return this[_typeArguments];
    }
    get originalDeclaration() {
      if (this[_raw] == null) {
        return this;
      }
      if (this[_originalDeclaration] != null) {
        return this[_originalDeclaration];
      }
      this[_originalDeclaration] = new _js_mirrors.JsClassMirror.__(dart.wrapType(this[_raw]()), {instantiated: false});
      return this[_originalDeclaration];
    }
    get superclass() {
      if (dart.equals(this[_cls], dart.wrapType(core.Object))) {
        return null;
      } else {
        return mirrors.ClassMirror._check(_js_mirrors.reflectType(dart.wrapType(dart.unwrapType(this[_cls]).__proto__)));
      }
    }
    get mixin() {
      if (this[_mixin] != null) {
        return this[_mixin];
      }
      let mixin = dart.getMixin(dart.unwrapType(this[_cls]));
      if (mixin == null) {
        this[_mixin] = this;
        return this[_mixin];
      }
      this[_mixin] = mirrors.ClassMirror._check(_js_mirrors.reflectType(dart.wrapType(mixin)));
      return this[_mixin];
    }
    toString() {
      return "ClassMirror on '" + dart.str(this[_cls]) + "'";
    }
    get qualifiedName() {
      return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl.new('qualifiedName', [], {isGetter: true})));
    }
    get owner() {
      return mirrors.DeclarationMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('owner', [], {isGetter: true})));
    }
    get isPrivate() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isPrivate', [], {isGetter: true})));
    }
    get isTopLevel() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isTopLevel', [], {isGetter: true})));
    }
    get location() {
      return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl.new('location', [], {isGetter: true})));
    }
    isSubtypeOf(other) {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isSubtypeOf', [other], {isMethod: true})));
    }
    isAssignableTo(other) {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isAssignableTo', [other], {isMethod: true})));
    }
    get typeVariables() {
      return ListOfTypeVariableMirror()._check(this.noSuchMethod(new dart.InvocationImpl.new('typeVariables', [], {isGetter: true})));
    }
    delegate(invocation) {
      return this.noSuchMethod(new dart.InvocationImpl.new('delegate', [invocation], {isMethod: true}));
    }
    isSubclassOf(other) {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isSubclassOf', [other], {isMethod: true})));
    }
    get isAbstract() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isAbstract', [], {isGetter: true})));
    }
    get isEnum() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isEnum', [], {isGetter: true})));
    }
    get instanceMembers() {
      return MapOfSymbol$MethodMirror()._check(this.noSuchMethod(new dart.InvocationImpl.new('instanceMembers', [], {isGetter: true})));
    }
    get staticMembers() {
      return MapOfSymbol$MethodMirror()._check(this.noSuchMethod(new dart.InvocationImpl.new('staticMembers', [], {isGetter: true})));
    }
  };
  (_js_mirrors.JsClassMirror.__ = function(cls, opts) {
    let instantiated = opts && 'instantiated' in opts ? opts.instantiated : true;
    this[_originalDeclaration] = null;
    this[_mixin] = null;
    this[_typeArguments] = null;
    this[_metadata$] = null;
    this[_declarations] = null;
    this[_cls] = cls;
    this[_raw] = dart.test(instantiated) ? dart.getGenericClass(dart.unwrapType(cls)) : null;
    this.simpleName = core.Symbol.new(dart.unwrapType(cls).name);
    let typeArgs = dart.getGenericArgs(dart.unwrapType(this[_cls]));
    if (typeArgs == null) {
      this[_typeArguments] = const$4 || (const$4 = dart.constList([], mirrors.TypeMirror));
    } else {
      this[_typeArguments] = ListOfTypeMirror().unmodifiable(typeArgs[$map](dart.dynamic, dart.fn(t => _js_mirrors.reflectType(dart.wrapType(t)), dynamicToTypeMirror())));
    }
  }).prototype = _js_mirrors.JsClassMirror.prototype;
  dart.addTypeTests(_js_mirrors.JsClassMirror);
  _js_mirrors.JsClassMirror[dart.implements] = () => [mirrors.ClassMirror];
  dart.setMethodSignature(_js_mirrors.JsClassMirror, () => ({
    __proto__: dart.getMethods(_js_mirrors.JsClassMirror.__proto__),
    newInstance: dart.fnType(mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$(core.Symbol, dart.dynamic)]),
    getField: dart.fnType(mirrors.InstanceMirror, [core.Symbol]),
    setField: dart.fnType(mirrors.InstanceMirror, [core.Symbol, core.Object]),
    invoke: dart.fnType(mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$(core.Symbol, dart.dynamic)]),
    isSubtypeOf: dart.fnType(core.bool, [mirrors.TypeMirror]),
    isAssignableTo: dart.fnType(core.bool, [mirrors.TypeMirror]),
    delegate: dart.fnType(dart.dynamic, [core.Invocation]),
    isSubclassOf: dart.fnType(core.bool, [mirrors.ClassMirror])
  }));
  dart.setGetterSignature(_js_mirrors.JsClassMirror, () => ({
    __proto__: dart.getGetters(_js_mirrors.JsClassMirror.__proto__),
    metadata: core.List$(mirrors.InstanceMirror),
    declarations: core.Map$(core.Symbol, mirrors.DeclarationMirror),
    superinterfaces: core.List$(mirrors.ClassMirror),
    hasReflectedType: core.bool,
    reflectedType: core.Type,
    isOriginalDeclaration: core.bool,
    typeArguments: core.List$(mirrors.TypeMirror),
    originalDeclaration: mirrors.TypeMirror,
    superclass: mirrors.ClassMirror,
    mixin: mirrors.ClassMirror,
    qualifiedName: core.Symbol,
    owner: mirrors.DeclarationMirror,
    isPrivate: core.bool,
    isTopLevel: core.bool,
    location: mirrors.SourceLocation,
    typeVariables: core.List$(mirrors.TypeVariableMirror),
    isAbstract: core.bool,
    isEnum: core.bool,
    instanceMembers: core.Map$(core.Symbol, mirrors.MethodMirror),
    staticMembers: core.Map$(core.Symbol, mirrors.MethodMirror)
  }));
  dart.setFieldSignature(_js_mirrors.JsClassMirror, () => ({
    __proto__: dart.getFields(_js_mirrors.JsClassMirror.__proto__),
    [_cls]: dart.finalFieldType(core.Type),
    simpleName: dart.finalFieldType(core.Symbol),
    [_raw]: dart.finalFieldType(dart.dynamic),
    [_originalDeclaration]: dart.fieldType(mirrors.ClassMirror),
    [_mixin]: dart.fieldType(mirrors.ClassMirror),
    [_typeArguments]: dart.fieldType(ListOfTypeMirror()),
    [_metadata$]: dart.fieldType(ListOfInstanceMirror()),
    [_declarations]: dart.fieldType(MapOfSymbol$DeclarationMirror())
  }));
  dart.defineExtensionMethods(_js_mirrors.JsClassMirror, ['toString']);
  const _symbol = Symbol('_symbol');
  const _name$0 = Symbol('_name');
  _js_mirrors.JsVariableMirror = class JsVariableMirror extends _js_mirrors.JsMirror {
    get simpleName() {
      return this[_symbol];
    }
    toString() {
      return "VariableMirror on '" + dart.str(this[_name$0]) + "'";
    }
    get qualifiedName() {
      return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl.new('qualifiedName', [], {isGetter: true})));
    }
    get owner() {
      return mirrors.DeclarationMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('owner', [], {isGetter: true})));
    }
    get isPrivate() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isPrivate', [], {isGetter: true})));
    }
    get isTopLevel() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isTopLevel', [], {isGetter: true})));
    }
    get location() {
      return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl.new('location', [], {isGetter: true})));
    }
    get isConst() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isConst', [], {isGetter: true})));
    }
  };
  (_js_mirrors.JsVariableMirror.__ = function(symbol, t, annotations, opts) {
    let isFinal = opts && 'isFinal' in opts ? opts.isFinal : false;
    this.isStatic = false;
    this.isFinal = isFinal;
    this[_symbol] = symbol;
    this[_name$0] = _js_mirrors.getName(symbol);
    this.type = _js_mirrors.reflectType(t);
    this.metadata = ListOfInstanceMirror().unmodifiable((() => {
      let t = annotations;
      let l = t == null ? null : t[$map](dart.dynamic, dart.fn(_js_mirrors.reflect, dynamicToInstanceMirror()));
      return l != null ? l : [];
    })());
  }).prototype = _js_mirrors.JsVariableMirror.prototype;
  (_js_mirrors.JsVariableMirror._fromField = function(symbol, fieldInfo) {
    _js_mirrors.JsVariableMirror.__.call(this, symbol, dart.wrapType(fieldInfo.type), fieldInfo.metadata, {isFinal: fieldInfo.isFinal});
  }).prototype = _js_mirrors.JsVariableMirror.prototype;
  dart.addTypeTests(_js_mirrors.JsVariableMirror);
  _js_mirrors.JsVariableMirror[dart.implements] = () => [mirrors.VariableMirror];
  dart.setGetterSignature(_js_mirrors.JsVariableMirror, () => ({
    __proto__: dart.getGetters(_js_mirrors.JsVariableMirror.__proto__),
    simpleName: core.Symbol,
    qualifiedName: core.Symbol,
    owner: mirrors.DeclarationMirror,
    isPrivate: core.bool,
    isTopLevel: core.bool,
    location: mirrors.SourceLocation,
    isConst: core.bool
  }));
  dart.setFieldSignature(_js_mirrors.JsVariableMirror, () => ({
    __proto__: dart.getFields(_js_mirrors.JsVariableMirror.__proto__),
    [_symbol]: dart.finalFieldType(core.Symbol),
    [_name$0]: dart.finalFieldType(core.String),
    type: dart.finalFieldType(mirrors.TypeMirror),
    metadata: dart.finalFieldType(ListOfInstanceMirror()),
    isFinal: dart.finalFieldType(core.bool),
    isStatic: dart.finalFieldType(core.bool)
  }));
  dart.defineExtensionMethods(_js_mirrors.JsVariableMirror, ['toString']);
  _js_mirrors.JsParameterMirror = class JsParameterMirror extends _js_mirrors.JsVariableMirror {
    toString() {
      return "ParameterMirror on '" + dart.str(this[_name$0]) + "'";
    }
    get qualifiedName() {
      return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl.new('qualifiedName', [], {isGetter: true})));
    }
    get owner() {
      return mirrors.DeclarationMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('owner', [], {isGetter: true})));
    }
    get isPrivate() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isPrivate', [], {isGetter: true})));
    }
    get isTopLevel() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isTopLevel', [], {isGetter: true})));
    }
    get location() {
      return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl.new('location', [], {isGetter: true})));
    }
    get isConst() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isConst', [], {isGetter: true})));
    }
    get isOptional() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isOptional', [], {isGetter: true})));
    }
    get isNamed() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isNamed', [], {isGetter: true})));
    }
    get hasDefaultValue() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('hasDefaultValue', [], {isGetter: true})));
    }
    get defaultValue() {
      return mirrors.InstanceMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('defaultValue', [], {isGetter: true})));
    }
  };
  (_js_mirrors.JsParameterMirror.__ = function(member, t, annotations) {
    _js_mirrors.JsParameterMirror.__proto__.__.call(this, member, t, annotations);
  }).prototype = _js_mirrors.JsParameterMirror.prototype;
  dart.addTypeTests(_js_mirrors.JsParameterMirror);
  _js_mirrors.JsParameterMirror[dart.implements] = () => [mirrors.ParameterMirror];
  dart.setGetterSignature(_js_mirrors.JsParameterMirror, () => ({
    __proto__: dart.getGetters(_js_mirrors.JsParameterMirror.__proto__),
    qualifiedName: core.Symbol,
    owner: mirrors.DeclarationMirror,
    isPrivate: core.bool,
    isTopLevel: core.bool,
    location: mirrors.SourceLocation,
    isConst: core.bool,
    isOptional: core.bool,
    isNamed: core.bool,
    hasDefaultValue: core.bool,
    defaultValue: mirrors.InstanceMirror
  }));
  dart.defineExtensionMethods(_js_mirrors.JsParameterMirror, ['toString']);
  const _params = Symbol('_params');
  const _createParameterMirrorList = Symbol('_createParameterMirrorList');
  let const$6;
  let const$7;
  let const$8;
  _js_mirrors.JsMethodMirror = class JsMethodMirror extends _js_mirrors.JsMirror {
    get isSetter() {
      return this[_name$0][$endsWith]("=");
    }
    get isPrivate() {
      return this[_name$0][$startsWith]("_");
    }
    get simpleName() {
      return this[_symbol];
    }
    get constructorName() {
      return dart.test(this.isConstructor) ? this[_symbol] : null;
    }
    get parameters() {
      return this[_params];
    }
    get metadata() {
      return this[_metadata$];
    }
    [_createParameterMirrorList](ftype) {
      if (ftype == null) {
        this[_params] = const$6 || (const$6 = dart.constList([], mirrors.ParameterMirror));
        this[_metadata$] = const$7 || (const$7 = dart.constList([], mirrors.InstanceMirror));
        return;
      }
      if (!core.Function.is(ftype) && core.List.is(ftype)) {
        this[_metadata$] = ListOfInstanceMirror().unmodifiable(core.Iterable._check(dart.dsend(dart.dsend(ftype, 'skip', [1]), 'map', [dart.fn(a => _js_mirrors.reflect(a), dynamicToInstanceMirror())])));
        ftype = dart.dindex(ftype, 0);
      } else {
        this[_metadata$] = const$8 || (const$8 = dart.constList([], mirrors.InstanceMirror));
      }
      ftype = dart.getFunctionTypeMirror(dart.AbstractFunctionType._check(ftype));
      let args = core.List._check(dart.dload(ftype, 'args'));
      let opts = core.List._check(dart.dload(ftype, 'optionals'));
      let params = ListOfParameterMirror().new(dart.notNull(args[$length]) + dart.notNull(opts[$length]));
      for (let i = 0; i < dart.notNull(args[$length]); ++i) {
        let type = args[$_get](i);
        let metadata = dart.dindex(dart.dload(ftype, 'metadata'), i);
        let param = new _js_mirrors.JsParameterMirror.__(core.Symbol.new(""), dart.wrapType(type), core.List._check(metadata));
        params[$_set](i, param);
      }
      for (let i = 0; i < dart.notNull(opts[$length]); ++i) {
        let type = opts[$_get](i);
        let metadata = dart.dindex(dart.dload(ftype, 'metadata'), dart.notNull(args[$length]) + i);
        let param = new _js_mirrors.JsParameterMirror.__(core.Symbol.new(""), dart.wrapType(type), core.List._check(metadata));
        params[$_set](i + dart.notNull(args[$length]), param);
      }
      this[_params] = ListOfParameterMirror().unmodifiable(params);
    }
    toString() {
      return "MethodMirror on '" + dart.str(this[_name$0]) + "'";
    }
    get qualifiedName() {
      return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl.new('qualifiedName', [], {isGetter: true})));
    }
    get owner() {
      return mirrors.DeclarationMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('owner', [], {isGetter: true})));
    }
    get isTopLevel() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isTopLevel', [], {isGetter: true})));
    }
    get location() {
      return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl.new('location', [], {isGetter: true})));
    }
    get returnType() {
      return mirrors.TypeMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('returnType', [], {isGetter: true})));
    }
    get source() {
      return core.String._check(this.noSuchMethod(new dart.InvocationImpl.new('source', [], {isGetter: true})));
    }
    get isAbstract() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isAbstract', [], {isGetter: true})));
    }
    get isSynthetic() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isSynthetic', [], {isGetter: true})));
    }
    get isRegularMethod() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isRegularMethod', [], {isGetter: true})));
    }
    get isOperator() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isOperator', [], {isGetter: true})));
    }
    get isGetter() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isGetter', [], {isGetter: true})));
    }
    get isConstConstructor() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isConstConstructor', [], {isGetter: true})));
    }
    get isGenerativeConstructor() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isGenerativeConstructor', [], {isGetter: true})));
    }
    get isRedirectingConstructor() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isRedirectingConstructor', [], {isGetter: true})));
    }
    get isFactoryConstructor() {
      return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isFactoryConstructor', [], {isGetter: true})));
    }
  };
  (_js_mirrors.JsMethodMirror._constructor = function(cls, symbol, ftype) {
    this[_params] = null;
    this[_metadata$] = null;
    this.isFinal = false;
    this[_symbol] = symbol;
    this[_name$0] = _js_mirrors.getName(symbol);
    this.isConstructor = true;
    this.isStatic = false;
    this[_createParameterMirrorList](ftype);
  }).prototype = _js_mirrors.JsMethodMirror.prototype;
  (_js_mirrors.JsMethodMirror._instanceMethod = function(cls, symbol, ftype) {
    this[_params] = null;
    this[_metadata$] = null;
    this.isFinal = false;
    this[_symbol] = symbol;
    this[_name$0] = _js_mirrors.getName(symbol);
    this.isConstructor = false;
    this.isStatic = false;
    this[_createParameterMirrorList](ftype);
  }).prototype = _js_mirrors.JsMethodMirror.prototype;
  (_js_mirrors.JsMethodMirror._staticMethod = function(cls, symbol, ftype) {
    this[_params] = null;
    this[_metadata$] = null;
    this.isFinal = false;
    this[_symbol] = symbol;
    this[_name$0] = _js_mirrors.getName(symbol);
    this.isConstructor = false;
    this.isStatic = true;
    this[_createParameterMirrorList](ftype);
  }).prototype = _js_mirrors.JsMethodMirror.prototype;
  dart.addTypeTests(_js_mirrors.JsMethodMirror);
  _js_mirrors.JsMethodMirror[dart.implements] = () => [mirrors.MethodMirror];
  dart.setMethodSignature(_js_mirrors.JsMethodMirror, () => ({
    __proto__: dart.getMethods(_js_mirrors.JsMethodMirror.__proto__),
    [_createParameterMirrorList]: dart.fnType(dart.void, [dart.dynamic])
  }));
  dart.setGetterSignature(_js_mirrors.JsMethodMirror, () => ({
    __proto__: dart.getGetters(_js_mirrors.JsMethodMirror.__proto__),
    isSetter: core.bool,
    isPrivate: core.bool,
    simpleName: core.Symbol,
    constructorName: core.Symbol,
    parameters: core.List$(mirrors.ParameterMirror),
    metadata: core.List$(mirrors.InstanceMirror),
    qualifiedName: core.Symbol,
    owner: mirrors.DeclarationMirror,
    isTopLevel: core.bool,
    location: mirrors.SourceLocation,
    returnType: mirrors.TypeMirror,
    source: core.String,
    isAbstract: core.bool,
    isSynthetic: core.bool,
    isRegularMethod: core.bool,
    isOperator: core.bool,
    isGetter: core.bool,
    isConstConstructor: core.bool,
    isGenerativeConstructor: core.bool,
    isRedirectingConstructor: core.bool,
    isFactoryConstructor: core.bool
  }));
  dart.setFieldSignature(_js_mirrors.JsMethodMirror, () => ({
    __proto__: dart.getFields(_js_mirrors.JsMethodMirror.__proto__),
    [_symbol]: dart.finalFieldType(core.Symbol),
    [_name$0]: dart.finalFieldType(core.String),
    [_params]: dart.fieldType(ListOfParameterMirror()),
    [_metadata$]: dart.fieldType(ListOfInstanceMirror()),
    isConstructor: dart.finalFieldType(core.bool),
    isStatic: dart.finalFieldType(core.bool),
    isFinal: dart.finalFieldType(core.bool)
  }));
  dart.defineExtensionMethods(_js_mirrors.JsMethodMirror, ['toString']);
  _js_primitives.printString = function(string) {
    if (typeof dartPrint == "function") {
      dartPrint(string);
      return;
    }
    if (typeof console == "object" && typeof console.log != "undefined") {
      console.log(string);
      return;
    }
    if (typeof window == "object") {
      return;
    }
    if (typeof print == "function") {
      print(string);
      return;
    }
    throw "Unable to print message: " + String(string);
  };
  _metadata.SupportedBrowser = class SupportedBrowser extends core.Object {};
  (_metadata.SupportedBrowser.new = function(browserName, minimumVersion) {
    if (minimumVersion === void 0) minimumVersion = null;
    this.browserName = browserName;
    this.minimumVersion = minimumVersion;
  }).prototype = _metadata.SupportedBrowser.prototype;
  dart.addTypeTests(_metadata.SupportedBrowser);
  dart.setFieldSignature(_metadata.SupportedBrowser, () => ({
    __proto__: dart.getFields(_metadata.SupportedBrowser.__proto__),
    browserName: dart.finalFieldType(core.String),
    minimumVersion: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(_metadata.SupportedBrowser, {
    /*_metadata.SupportedBrowser.CHROME*/get CHROME() {
      return "Chrome";
    },
    /*_metadata.SupportedBrowser.FIREFOX*/get FIREFOX() {
      return "Firefox";
    },
    /*_metadata.SupportedBrowser.IE*/get IE() {
      return "Internet Explorer";
    },
    /*_metadata.SupportedBrowser.OPERA*/get OPERA() {
      return "Opera";
    },
    /*_metadata.SupportedBrowser.SAFARI*/get SAFARI() {
      return "Safari";
    }
  });
  _metadata.Experimental = class Experimental extends core.Object {};
  (_metadata.Experimental.new = function() {
  }).prototype = _metadata.Experimental.prototype;
  dart.addTypeTests(_metadata.Experimental);
  _metadata.DomName = class DomName extends core.Object {};
  (_metadata.DomName.new = function(name) {
    this.name = name;
  }).prototype = _metadata.DomName.prototype;
  dart.addTypeTests(_metadata.DomName);
  dart.setFieldSignature(_metadata.DomName, () => ({
    __proto__: dart.getFields(_metadata.DomName.__proto__),
    name: dart.finalFieldType(core.String)
  }));
  _metadata.DocsEditable = class DocsEditable extends core.Object {};
  (_metadata.DocsEditable.new = function() {
  }).prototype = _metadata.DocsEditable.prototype;
  dart.addTypeTests(_metadata.DocsEditable);
  _metadata.Unstable = class Unstable extends core.Object {};
  (_metadata.Unstable.new = function() {
  }).prototype = _metadata.Unstable.prototype;
  dart.addTypeTests(_metadata.Unstable);
  _native_typed_data.NativeByteBuffer = class NativeByteBuffer extends core.Object {
    get [$lengthInBytes]() {
      return this.byteLength;
    }
    get [$runtimeType]() {
      return dart.wrapType(typed_data.ByteBuffer);
    }
    [$asUint8List](offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return _native_typed_data.NativeUint8List.view(this, offsetInBytes, length);
    }
    [$asInt8List](offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return _native_typed_data.NativeInt8List.view(this, offsetInBytes, length);
    }
    [$asUint8ClampedList](offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return _native_typed_data.NativeUint8ClampedList.view(this, offsetInBytes, length);
    }
    [$asUint16List](offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return _native_typed_data.NativeUint16List.view(this, offsetInBytes, length);
    }
    [$asInt16List](offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return _native_typed_data.NativeInt16List.view(this, offsetInBytes, length);
    }
    [$asUint32List](offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return _native_typed_data.NativeUint32List.view(this, offsetInBytes, length);
    }
    [$asInt32List](offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return _native_typed_data.NativeInt32List.view(this, offsetInBytes, length);
    }
    [$asUint64List](offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      dart.throw(new core.UnsupportedError.new("Uint64List not supported by dart2js."));
    }
    [$asInt64List](offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      dart.throw(new core.UnsupportedError.new("Int64List not supported by dart2js."));
    }
    [$asInt32x4List](offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      let storage = _native_typed_data.NativeInt32List._check(this[$asInt32List](offsetInBytes, length != null ? dart.notNull(length) * 4 : null));
      return new _native_typed_data.NativeInt32x4List._externalStorage(storage);
    }
    [$asFloat32List](offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return _native_typed_data.NativeFloat32List.view(this, offsetInBytes, length);
    }
    [$asFloat64List](offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return _native_typed_data.NativeFloat64List.view(this, offsetInBytes, length);
    }
    [$asFloat32x4List](offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      let storage = _native_typed_data.NativeFloat32List._check(this[$asFloat32List](offsetInBytes, length != null ? dart.notNull(length) * 4 : null));
      return new _native_typed_data.NativeFloat32x4List._externalStorage(storage);
    }
    [$asFloat64x2List](offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      let storage = _native_typed_data.NativeFloat64List._check(this[$asFloat64List](offsetInBytes, length != null ? dart.notNull(length) * 2 : null));
      return new _native_typed_data.NativeFloat64x2List._externalStorage(storage);
    }
    [$asByteData](offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return _native_typed_data.NativeByteData.view(this, offsetInBytes, length);
    }
  };
  (_native_typed_data.NativeByteBuffer.new = function() {
  }).prototype = _native_typed_data.NativeByteBuffer.prototype;
  dart.addTypeTests(_native_typed_data.NativeByteBuffer);
  _native_typed_data.NativeByteBuffer[dart.implements] = () => [typed_data.ByteBuffer];
  dart.setMethodSignature(_native_typed_data.NativeByteBuffer, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeByteBuffer.__proto__),
    [$asUint8List]: dart.fnType(typed_data.Uint8List, [], [core.int, core.int]),
    [$asInt8List]: dart.fnType(typed_data.Int8List, [], [core.int, core.int]),
    [$asUint8ClampedList]: dart.fnType(typed_data.Uint8ClampedList, [], [core.int, core.int]),
    [$asUint16List]: dart.fnType(typed_data.Uint16List, [], [core.int, core.int]),
    [$asInt16List]: dart.fnType(typed_data.Int16List, [], [core.int, core.int]),
    [$asUint32List]: dart.fnType(typed_data.Uint32List, [], [core.int, core.int]),
    [$asInt32List]: dart.fnType(typed_data.Int32List, [], [core.int, core.int]),
    [$asUint64List]: dart.fnType(typed_data.Uint64List, [], [core.int, core.int]),
    [$asInt64List]: dart.fnType(typed_data.Int64List, [], [core.int, core.int]),
    [$asInt32x4List]: dart.fnType(typed_data.Int32x4List, [], [core.int, core.int]),
    [$asFloat32List]: dart.fnType(typed_data.Float32List, [], [core.int, core.int]),
    [$asFloat64List]: dart.fnType(typed_data.Float64List, [], [core.int, core.int]),
    [$asFloat32x4List]: dart.fnType(typed_data.Float32x4List, [], [core.int, core.int]),
    [$asFloat64x2List]: dart.fnType(typed_data.Float64x2List, [], [core.int, core.int]),
    [$asByteData]: dart.fnType(typed_data.ByteData, [], [core.int, core.int])
  }));
  dart.setGetterSignature(_native_typed_data.NativeByteBuffer, () => ({
    __proto__: dart.getGetters(_native_typed_data.NativeByteBuffer.__proto__),
    [$lengthInBytes]: core.int
  }));
  dart.registerExtension("ArrayBuffer", _native_typed_data.NativeByteBuffer);
  const _storage = Symbol('_storage');
  typed_data.Float32x4 = class Float32x4 extends core.Object {
    static new(x, y, z, w) {
      return new _native_typed_data.NativeFloat32x4.new(x, y, z, w);
    }
    static splat(v) {
      return new _native_typed_data.NativeFloat32x4.splat(v);
    }
    static zero() {
      return new _native_typed_data.NativeFloat32x4.zero();
    }
    static fromInt32x4Bits(x) {
      return _native_typed_data.NativeFloat32x4.fromInt32x4Bits(x);
    }
    static fromFloat64x2(v) {
      return new _native_typed_data.NativeFloat32x4.fromFloat64x2(v);
    }
  };
  (typed_data.Float32x4[dart.mixinNew] = function() {
  }).prototype = typed_data.Float32x4.prototype;
  dart.addTypeTests(typed_data.Float32x4);
  dart.defineLazy(typed_data.Float32x4, {
    /*typed_data.Float32x4.xxxx*/get xxxx() {
      return 0;
    },
    /*typed_data.Float32x4.xxxy*/get xxxy() {
      return 64;
    },
    /*typed_data.Float32x4.xxxz*/get xxxz() {
      return 128;
    },
    /*typed_data.Float32x4.xxxw*/get xxxw() {
      return 192;
    },
    /*typed_data.Float32x4.xxyx*/get xxyx() {
      return 16;
    },
    /*typed_data.Float32x4.xxyy*/get xxyy() {
      return 80;
    },
    /*typed_data.Float32x4.xxyz*/get xxyz() {
      return 144;
    },
    /*typed_data.Float32x4.xxyw*/get xxyw() {
      return 208;
    },
    /*typed_data.Float32x4.xxzx*/get xxzx() {
      return 32;
    },
    /*typed_data.Float32x4.xxzy*/get xxzy() {
      return 96;
    },
    /*typed_data.Float32x4.xxzz*/get xxzz() {
      return 160;
    },
    /*typed_data.Float32x4.xxzw*/get xxzw() {
      return 224;
    },
    /*typed_data.Float32x4.xxwx*/get xxwx() {
      return 48;
    },
    /*typed_data.Float32x4.xxwy*/get xxwy() {
      return 112;
    },
    /*typed_data.Float32x4.xxwz*/get xxwz() {
      return 176;
    },
    /*typed_data.Float32x4.xxww*/get xxww() {
      return 240;
    },
    /*typed_data.Float32x4.xyxx*/get xyxx() {
      return 4;
    },
    /*typed_data.Float32x4.xyxy*/get xyxy() {
      return 68;
    },
    /*typed_data.Float32x4.xyxz*/get xyxz() {
      return 132;
    },
    /*typed_data.Float32x4.xyxw*/get xyxw() {
      return 196;
    },
    /*typed_data.Float32x4.xyyx*/get xyyx() {
      return 20;
    },
    /*typed_data.Float32x4.xyyy*/get xyyy() {
      return 84;
    },
    /*typed_data.Float32x4.xyyz*/get xyyz() {
      return 148;
    },
    /*typed_data.Float32x4.xyyw*/get xyyw() {
      return 212;
    },
    /*typed_data.Float32x4.xyzx*/get xyzx() {
      return 36;
    },
    /*typed_data.Float32x4.xyzy*/get xyzy() {
      return 100;
    },
    /*typed_data.Float32x4.xyzz*/get xyzz() {
      return 164;
    },
    /*typed_data.Float32x4.xyzw*/get xyzw() {
      return 228;
    },
    /*typed_data.Float32x4.xywx*/get xywx() {
      return 52;
    },
    /*typed_data.Float32x4.xywy*/get xywy() {
      return 116;
    },
    /*typed_data.Float32x4.xywz*/get xywz() {
      return 180;
    },
    /*typed_data.Float32x4.xyww*/get xyww() {
      return 244;
    },
    /*typed_data.Float32x4.xzxx*/get xzxx() {
      return 8;
    },
    /*typed_data.Float32x4.xzxy*/get xzxy() {
      return 72;
    },
    /*typed_data.Float32x4.xzxz*/get xzxz() {
      return 136;
    },
    /*typed_data.Float32x4.xzxw*/get xzxw() {
      return 200;
    },
    /*typed_data.Float32x4.xzyx*/get xzyx() {
      return 24;
    },
    /*typed_data.Float32x4.xzyy*/get xzyy() {
      return 88;
    },
    /*typed_data.Float32x4.xzyz*/get xzyz() {
      return 152;
    },
    /*typed_data.Float32x4.xzyw*/get xzyw() {
      return 216;
    },
    /*typed_data.Float32x4.xzzx*/get xzzx() {
      return 40;
    },
    /*typed_data.Float32x4.xzzy*/get xzzy() {
      return 104;
    },
    /*typed_data.Float32x4.xzzz*/get xzzz() {
      return 168;
    },
    /*typed_data.Float32x4.xzzw*/get xzzw() {
      return 232;
    },
    /*typed_data.Float32x4.xzwx*/get xzwx() {
      return 56;
    },
    /*typed_data.Float32x4.xzwy*/get xzwy() {
      return 120;
    },
    /*typed_data.Float32x4.xzwz*/get xzwz() {
      return 184;
    },
    /*typed_data.Float32x4.xzww*/get xzww() {
      return 248;
    },
    /*typed_data.Float32x4.xwxx*/get xwxx() {
      return 12;
    },
    /*typed_data.Float32x4.xwxy*/get xwxy() {
      return 76;
    },
    /*typed_data.Float32x4.xwxz*/get xwxz() {
      return 140;
    },
    /*typed_data.Float32x4.xwxw*/get xwxw() {
      return 204;
    },
    /*typed_data.Float32x4.xwyx*/get xwyx() {
      return 28;
    },
    /*typed_data.Float32x4.xwyy*/get xwyy() {
      return 92;
    },
    /*typed_data.Float32x4.xwyz*/get xwyz() {
      return 156;
    },
    /*typed_data.Float32x4.xwyw*/get xwyw() {
      return 220;
    },
    /*typed_data.Float32x4.xwzx*/get xwzx() {
      return 44;
    },
    /*typed_data.Float32x4.xwzy*/get xwzy() {
      return 108;
    },
    /*typed_data.Float32x4.xwzz*/get xwzz() {
      return 172;
    },
    /*typed_data.Float32x4.xwzw*/get xwzw() {
      return 236;
    },
    /*typed_data.Float32x4.xwwx*/get xwwx() {
      return 60;
    },
    /*typed_data.Float32x4.xwwy*/get xwwy() {
      return 124;
    },
    /*typed_data.Float32x4.xwwz*/get xwwz() {
      return 188;
    },
    /*typed_data.Float32x4.xwww*/get xwww() {
      return 252;
    },
    /*typed_data.Float32x4.yxxx*/get yxxx() {
      return 1;
    },
    /*typed_data.Float32x4.yxxy*/get yxxy() {
      return 65;
    },
    /*typed_data.Float32x4.yxxz*/get yxxz() {
      return 129;
    },
    /*typed_data.Float32x4.yxxw*/get yxxw() {
      return 193;
    },
    /*typed_data.Float32x4.yxyx*/get yxyx() {
      return 17;
    },
    /*typed_data.Float32x4.yxyy*/get yxyy() {
      return 81;
    },
    /*typed_data.Float32x4.yxyz*/get yxyz() {
      return 145;
    },
    /*typed_data.Float32x4.yxyw*/get yxyw() {
      return 209;
    },
    /*typed_data.Float32x4.yxzx*/get yxzx() {
      return 33;
    },
    /*typed_data.Float32x4.yxzy*/get yxzy() {
      return 97;
    },
    /*typed_data.Float32x4.yxzz*/get yxzz() {
      return 161;
    },
    /*typed_data.Float32x4.yxzw*/get yxzw() {
      return 225;
    },
    /*typed_data.Float32x4.yxwx*/get yxwx() {
      return 49;
    },
    /*typed_data.Float32x4.yxwy*/get yxwy() {
      return 113;
    },
    /*typed_data.Float32x4.yxwz*/get yxwz() {
      return 177;
    },
    /*typed_data.Float32x4.yxww*/get yxww() {
      return 241;
    },
    /*typed_data.Float32x4.yyxx*/get yyxx() {
      return 5;
    },
    /*typed_data.Float32x4.yyxy*/get yyxy() {
      return 69;
    },
    /*typed_data.Float32x4.yyxz*/get yyxz() {
      return 133;
    },
    /*typed_data.Float32x4.yyxw*/get yyxw() {
      return 197;
    },
    /*typed_data.Float32x4.yyyx*/get yyyx() {
      return 21;
    },
    /*typed_data.Float32x4.yyyy*/get yyyy() {
      return 85;
    },
    /*typed_data.Float32x4.yyyz*/get yyyz() {
      return 149;
    },
    /*typed_data.Float32x4.yyyw*/get yyyw() {
      return 213;
    },
    /*typed_data.Float32x4.yyzx*/get yyzx() {
      return 37;
    },
    /*typed_data.Float32x4.yyzy*/get yyzy() {
      return 101;
    },
    /*typed_data.Float32x4.yyzz*/get yyzz() {
      return 165;
    },
    /*typed_data.Float32x4.yyzw*/get yyzw() {
      return 229;
    },
    /*typed_data.Float32x4.yywx*/get yywx() {
      return 53;
    },
    /*typed_data.Float32x4.yywy*/get yywy() {
      return 117;
    },
    /*typed_data.Float32x4.yywz*/get yywz() {
      return 181;
    },
    /*typed_data.Float32x4.yyww*/get yyww() {
      return 245;
    },
    /*typed_data.Float32x4.yzxx*/get yzxx() {
      return 9;
    },
    /*typed_data.Float32x4.yzxy*/get yzxy() {
      return 73;
    },
    /*typed_data.Float32x4.yzxz*/get yzxz() {
      return 137;
    },
    /*typed_data.Float32x4.yzxw*/get yzxw() {
      return 201;
    },
    /*typed_data.Float32x4.yzyx*/get yzyx() {
      return 25;
    },
    /*typed_data.Float32x4.yzyy*/get yzyy() {
      return 89;
    },
    /*typed_data.Float32x4.yzyz*/get yzyz() {
      return 153;
    },
    /*typed_data.Float32x4.yzyw*/get yzyw() {
      return 217;
    },
    /*typed_data.Float32x4.yzzx*/get yzzx() {
      return 41;
    },
    /*typed_data.Float32x4.yzzy*/get yzzy() {
      return 105;
    },
    /*typed_data.Float32x4.yzzz*/get yzzz() {
      return 169;
    },
    /*typed_data.Float32x4.yzzw*/get yzzw() {
      return 233;
    },
    /*typed_data.Float32x4.yzwx*/get yzwx() {
      return 57;
    },
    /*typed_data.Float32x4.yzwy*/get yzwy() {
      return 121;
    },
    /*typed_data.Float32x4.yzwz*/get yzwz() {
      return 185;
    },
    /*typed_data.Float32x4.yzww*/get yzww() {
      return 249;
    },
    /*typed_data.Float32x4.ywxx*/get ywxx() {
      return 13;
    },
    /*typed_data.Float32x4.ywxy*/get ywxy() {
      return 77;
    },
    /*typed_data.Float32x4.ywxz*/get ywxz() {
      return 141;
    },
    /*typed_data.Float32x4.ywxw*/get ywxw() {
      return 205;
    },
    /*typed_data.Float32x4.ywyx*/get ywyx() {
      return 29;
    },
    /*typed_data.Float32x4.ywyy*/get ywyy() {
      return 93;
    },
    /*typed_data.Float32x4.ywyz*/get ywyz() {
      return 157;
    },
    /*typed_data.Float32x4.ywyw*/get ywyw() {
      return 221;
    },
    /*typed_data.Float32x4.ywzx*/get ywzx() {
      return 45;
    },
    /*typed_data.Float32x4.ywzy*/get ywzy() {
      return 109;
    },
    /*typed_data.Float32x4.ywzz*/get ywzz() {
      return 173;
    },
    /*typed_data.Float32x4.ywzw*/get ywzw() {
      return 237;
    },
    /*typed_data.Float32x4.ywwx*/get ywwx() {
      return 61;
    },
    /*typed_data.Float32x4.ywwy*/get ywwy() {
      return 125;
    },
    /*typed_data.Float32x4.ywwz*/get ywwz() {
      return 189;
    },
    /*typed_data.Float32x4.ywww*/get ywww() {
      return 253;
    },
    /*typed_data.Float32x4.zxxx*/get zxxx() {
      return 2;
    },
    /*typed_data.Float32x4.zxxy*/get zxxy() {
      return 66;
    },
    /*typed_data.Float32x4.zxxz*/get zxxz() {
      return 130;
    },
    /*typed_data.Float32x4.zxxw*/get zxxw() {
      return 194;
    },
    /*typed_data.Float32x4.zxyx*/get zxyx() {
      return 18;
    },
    /*typed_data.Float32x4.zxyy*/get zxyy() {
      return 82;
    },
    /*typed_data.Float32x4.zxyz*/get zxyz() {
      return 146;
    },
    /*typed_data.Float32x4.zxyw*/get zxyw() {
      return 210;
    },
    /*typed_data.Float32x4.zxzx*/get zxzx() {
      return 34;
    },
    /*typed_data.Float32x4.zxzy*/get zxzy() {
      return 98;
    },
    /*typed_data.Float32x4.zxzz*/get zxzz() {
      return 162;
    },
    /*typed_data.Float32x4.zxzw*/get zxzw() {
      return 226;
    },
    /*typed_data.Float32x4.zxwx*/get zxwx() {
      return 50;
    },
    /*typed_data.Float32x4.zxwy*/get zxwy() {
      return 114;
    },
    /*typed_data.Float32x4.zxwz*/get zxwz() {
      return 178;
    },
    /*typed_data.Float32x4.zxww*/get zxww() {
      return 242;
    },
    /*typed_data.Float32x4.zyxx*/get zyxx() {
      return 6;
    },
    /*typed_data.Float32x4.zyxy*/get zyxy() {
      return 70;
    },
    /*typed_data.Float32x4.zyxz*/get zyxz() {
      return 134;
    },
    /*typed_data.Float32x4.zyxw*/get zyxw() {
      return 198;
    },
    /*typed_data.Float32x4.zyyx*/get zyyx() {
      return 22;
    },
    /*typed_data.Float32x4.zyyy*/get zyyy() {
      return 86;
    },
    /*typed_data.Float32x4.zyyz*/get zyyz() {
      return 150;
    },
    /*typed_data.Float32x4.zyyw*/get zyyw() {
      return 214;
    },
    /*typed_data.Float32x4.zyzx*/get zyzx() {
      return 38;
    },
    /*typed_data.Float32x4.zyzy*/get zyzy() {
      return 102;
    },
    /*typed_data.Float32x4.zyzz*/get zyzz() {
      return 166;
    },
    /*typed_data.Float32x4.zyzw*/get zyzw() {
      return 230;
    },
    /*typed_data.Float32x4.zywx*/get zywx() {
      return 54;
    },
    /*typed_data.Float32x4.zywy*/get zywy() {
      return 118;
    },
    /*typed_data.Float32x4.zywz*/get zywz() {
      return 182;
    },
    /*typed_data.Float32x4.zyww*/get zyww() {
      return 246;
    },
    /*typed_data.Float32x4.zzxx*/get zzxx() {
      return 10;
    },
    /*typed_data.Float32x4.zzxy*/get zzxy() {
      return 74;
    },
    /*typed_data.Float32x4.zzxz*/get zzxz() {
      return 138;
    },
    /*typed_data.Float32x4.zzxw*/get zzxw() {
      return 202;
    },
    /*typed_data.Float32x4.zzyx*/get zzyx() {
      return 26;
    },
    /*typed_data.Float32x4.zzyy*/get zzyy() {
      return 90;
    },
    /*typed_data.Float32x4.zzyz*/get zzyz() {
      return 154;
    },
    /*typed_data.Float32x4.zzyw*/get zzyw() {
      return 218;
    },
    /*typed_data.Float32x4.zzzx*/get zzzx() {
      return 42;
    },
    /*typed_data.Float32x4.zzzy*/get zzzy() {
      return 106;
    },
    /*typed_data.Float32x4.zzzz*/get zzzz() {
      return 170;
    },
    /*typed_data.Float32x4.zzzw*/get zzzw() {
      return 234;
    },
    /*typed_data.Float32x4.zzwx*/get zzwx() {
      return 58;
    },
    /*typed_data.Float32x4.zzwy*/get zzwy() {
      return 122;
    },
    /*typed_data.Float32x4.zzwz*/get zzwz() {
      return 186;
    },
    /*typed_data.Float32x4.zzww*/get zzww() {
      return 250;
    },
    /*typed_data.Float32x4.zwxx*/get zwxx() {
      return 14;
    },
    /*typed_data.Float32x4.zwxy*/get zwxy() {
      return 78;
    },
    /*typed_data.Float32x4.zwxz*/get zwxz() {
      return 142;
    },
    /*typed_data.Float32x4.zwxw*/get zwxw() {
      return 206;
    },
    /*typed_data.Float32x4.zwyx*/get zwyx() {
      return 30;
    },
    /*typed_data.Float32x4.zwyy*/get zwyy() {
      return 94;
    },
    /*typed_data.Float32x4.zwyz*/get zwyz() {
      return 158;
    },
    /*typed_data.Float32x4.zwyw*/get zwyw() {
      return 222;
    },
    /*typed_data.Float32x4.zwzx*/get zwzx() {
      return 46;
    },
    /*typed_data.Float32x4.zwzy*/get zwzy() {
      return 110;
    },
    /*typed_data.Float32x4.zwzz*/get zwzz() {
      return 174;
    },
    /*typed_data.Float32x4.zwzw*/get zwzw() {
      return 238;
    },
    /*typed_data.Float32x4.zwwx*/get zwwx() {
      return 62;
    },
    /*typed_data.Float32x4.zwwy*/get zwwy() {
      return 126;
    },
    /*typed_data.Float32x4.zwwz*/get zwwz() {
      return 190;
    },
    /*typed_data.Float32x4.zwww*/get zwww() {
      return 254;
    },
    /*typed_data.Float32x4.wxxx*/get wxxx() {
      return 3;
    },
    /*typed_data.Float32x4.wxxy*/get wxxy() {
      return 67;
    },
    /*typed_data.Float32x4.wxxz*/get wxxz() {
      return 131;
    },
    /*typed_data.Float32x4.wxxw*/get wxxw() {
      return 195;
    },
    /*typed_data.Float32x4.wxyx*/get wxyx() {
      return 19;
    },
    /*typed_data.Float32x4.wxyy*/get wxyy() {
      return 83;
    },
    /*typed_data.Float32x4.wxyz*/get wxyz() {
      return 147;
    },
    /*typed_data.Float32x4.wxyw*/get wxyw() {
      return 211;
    },
    /*typed_data.Float32x4.wxzx*/get wxzx() {
      return 35;
    },
    /*typed_data.Float32x4.wxzy*/get wxzy() {
      return 99;
    },
    /*typed_data.Float32x4.wxzz*/get wxzz() {
      return 163;
    },
    /*typed_data.Float32x4.wxzw*/get wxzw() {
      return 227;
    },
    /*typed_data.Float32x4.wxwx*/get wxwx() {
      return 51;
    },
    /*typed_data.Float32x4.wxwy*/get wxwy() {
      return 115;
    },
    /*typed_data.Float32x4.wxwz*/get wxwz() {
      return 179;
    },
    /*typed_data.Float32x4.wxww*/get wxww() {
      return 243;
    },
    /*typed_data.Float32x4.wyxx*/get wyxx() {
      return 7;
    },
    /*typed_data.Float32x4.wyxy*/get wyxy() {
      return 71;
    },
    /*typed_data.Float32x4.wyxz*/get wyxz() {
      return 135;
    },
    /*typed_data.Float32x4.wyxw*/get wyxw() {
      return 199;
    },
    /*typed_data.Float32x4.wyyx*/get wyyx() {
      return 23;
    },
    /*typed_data.Float32x4.wyyy*/get wyyy() {
      return 87;
    },
    /*typed_data.Float32x4.wyyz*/get wyyz() {
      return 151;
    },
    /*typed_data.Float32x4.wyyw*/get wyyw() {
      return 215;
    },
    /*typed_data.Float32x4.wyzx*/get wyzx() {
      return 39;
    },
    /*typed_data.Float32x4.wyzy*/get wyzy() {
      return 103;
    },
    /*typed_data.Float32x4.wyzz*/get wyzz() {
      return 167;
    },
    /*typed_data.Float32x4.wyzw*/get wyzw() {
      return 231;
    },
    /*typed_data.Float32x4.wywx*/get wywx() {
      return 55;
    },
    /*typed_data.Float32x4.wywy*/get wywy() {
      return 119;
    },
    /*typed_data.Float32x4.wywz*/get wywz() {
      return 183;
    },
    /*typed_data.Float32x4.wyww*/get wyww() {
      return 247;
    },
    /*typed_data.Float32x4.wzxx*/get wzxx() {
      return 11;
    },
    /*typed_data.Float32x4.wzxy*/get wzxy() {
      return 75;
    },
    /*typed_data.Float32x4.wzxz*/get wzxz() {
      return 139;
    },
    /*typed_data.Float32x4.wzxw*/get wzxw() {
      return 203;
    },
    /*typed_data.Float32x4.wzyx*/get wzyx() {
      return 27;
    },
    /*typed_data.Float32x4.wzyy*/get wzyy() {
      return 91;
    },
    /*typed_data.Float32x4.wzyz*/get wzyz() {
      return 155;
    },
    /*typed_data.Float32x4.wzyw*/get wzyw() {
      return 219;
    },
    /*typed_data.Float32x4.wzzx*/get wzzx() {
      return 43;
    },
    /*typed_data.Float32x4.wzzy*/get wzzy() {
      return 107;
    },
    /*typed_data.Float32x4.wzzz*/get wzzz() {
      return 171;
    },
    /*typed_data.Float32x4.wzzw*/get wzzw() {
      return 235;
    },
    /*typed_data.Float32x4.wzwx*/get wzwx() {
      return 59;
    },
    /*typed_data.Float32x4.wzwy*/get wzwy() {
      return 123;
    },
    /*typed_data.Float32x4.wzwz*/get wzwz() {
      return 187;
    },
    /*typed_data.Float32x4.wzww*/get wzww() {
      return 251;
    },
    /*typed_data.Float32x4.wwxx*/get wwxx() {
      return 15;
    },
    /*typed_data.Float32x4.wwxy*/get wwxy() {
      return 79;
    },
    /*typed_data.Float32x4.wwxz*/get wwxz() {
      return 143;
    },
    /*typed_data.Float32x4.wwxw*/get wwxw() {
      return 207;
    },
    /*typed_data.Float32x4.wwyx*/get wwyx() {
      return 31;
    },
    /*typed_data.Float32x4.wwyy*/get wwyy() {
      return 95;
    },
    /*typed_data.Float32x4.wwyz*/get wwyz() {
      return 159;
    },
    /*typed_data.Float32x4.wwyw*/get wwyw() {
      return 223;
    },
    /*typed_data.Float32x4.wwzx*/get wwzx() {
      return 47;
    },
    /*typed_data.Float32x4.wwzy*/get wwzy() {
      return 111;
    },
    /*typed_data.Float32x4.wwzz*/get wwzz() {
      return 175;
    },
    /*typed_data.Float32x4.wwzw*/get wwzw() {
      return 239;
    },
    /*typed_data.Float32x4.wwwx*/get wwwx() {
      return 63;
    },
    /*typed_data.Float32x4.wwwy*/get wwwy() {
      return 127;
    },
    /*typed_data.Float32x4.wwwz*/get wwwz() {
      return 191;
    },
    /*typed_data.Float32x4.wwww*/get wwww() {
      return 255;
    }
  });
  const Object_ListMixin$ = class Object_ListMixin extends core.Object {};
  (Object_ListMixin$.new = function() {
  }).prototype = Object_ListMixin$.prototype;
  dart.applyMixin(Object_ListMixin$, collection.ListMixin$(typed_data.Float32x4));
  const Object_FixedLengthListMixin$ = class Object_FixedLengthListMixin extends Object_ListMixin$ {};
  (Object_FixedLengthListMixin$.new = function() {
  }).prototype = Object_FixedLengthListMixin$.prototype;
  dart.applyMixin(Object_FixedLengthListMixin$, _internal.FixedLengthListMixin$(typed_data.Float32x4));
  _native_typed_data.NativeFloat32x4List = class NativeFloat32x4List extends Object_FixedLengthListMixin$ {
    get runtimeType() {
      return dart.wrapType(typed_data.Float32x4List);
    }
    static fromList(list) {
      if (_native_typed_data.NativeFloat32x4List.is(list)) {
        return new _native_typed_data.NativeFloat32x4List._externalStorage(_native_typed_data.NativeFloat32List.fromList(list[_storage]));
      } else {
        return new _native_typed_data.NativeFloat32x4List._slowFromList(list);
      }
    }
    get buffer() {
      return this[_storage].buffer;
    }
    get lengthInBytes() {
      return this[_storage][$lengthInBytes];
    }
    get offsetInBytes() {
      return this[_storage][$offsetInBytes];
    }
    get elementSizeInBytes() {
      return typed_data.Float32x4List.bytesPerElement;
    }
    get length() {
      return (dart.notNull(this[_storage][$length]) / 4)[$truncate]();
    }
    set length(value) {
      super.length = value;
    }
    _get(index) {
      _native_typed_data._checkValidIndex(index, this, this.length);
      let _x = this[_storage][$_get](dart.notNull(index) * 4 + 0);
      let _y = this[_storage][$_get](dart.notNull(index) * 4 + 1);
      let _z = this[_storage][$_get](dart.notNull(index) * 4 + 2);
      let _w = this[_storage][$_get](dart.notNull(index) * 4 + 3);
      return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
    }
    _set(index, value) {
      typed_data.Float32x4._check(value);
      _native_typed_data._checkValidIndex(index, this, this.length);
      this[_storage][$_set](dart.notNull(index) * 4 + 0, value.x);
      this[_storage][$_set](dart.notNull(index) * 4 + 1, value.y);
      this[_storage][$_set](dart.notNull(index) * 4 + 2, value.z);
      this[_storage][$_set](dart.notNull(index) * 4 + 3, value.w);
      return value;
    }
    sublist(start, end) {
      if (end === void 0) end = null;
      end = _native_typed_data._checkValidRange(start, end, this.length);
      return new _native_typed_data.NativeFloat32x4List._externalStorage(_native_typed_data.NativeFloat32List._check(this[_storage][$sublist](dart.notNull(start) * 4, dart.notNull(end) * 4)));
    }
  };
  (_native_typed_data.NativeFloat32x4List.new = function(length) {
    this[_storage] = _native_typed_data.NativeFloat32List.new(dart.notNull(length) * 4);
  }).prototype = _native_typed_data.NativeFloat32x4List.prototype;
  (_native_typed_data.NativeFloat32x4List._externalStorage = function(storage) {
    this[_storage] = storage;
  }).prototype = _native_typed_data.NativeFloat32x4List.prototype;
  (_native_typed_data.NativeFloat32x4List._slowFromList = function(list) {
    this[_storage] = _native_typed_data.NativeFloat32List.new(dart.notNull(list[$length]) * 4);
    for (let i = 0; i < dart.notNull(list[$length]); i++) {
      let e = list[$_get](i);
      this[_storage][$_set](i * 4 + 0, e.x);
      this[_storage][$_set](i * 4 + 1, e.y);
      this[_storage][$_set](i * 4 + 2, e.z);
      this[_storage][$_set](i * 4 + 3, e.w);
    }
  }).prototype = _native_typed_data.NativeFloat32x4List.prototype;
  dart.addTypeTests(_native_typed_data.NativeFloat32x4List);
  _native_typed_data.NativeFloat32x4List[dart.implements] = () => [typed_data.Float32x4List];
  dart.setMethodSignature(_native_typed_data.NativeFloat32x4List, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeFloat32x4List.__proto__),
    _get: dart.fnType(typed_data.Float32x4, [core.int]),
    [$_get]: dart.fnType(typed_data.Float32x4, [core.int]),
    _set: dart.fnType(dart.void, [core.int, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    sublist: dart.fnType(core.List$(typed_data.Float32x4), [core.int], [core.int]),
    [$sublist]: dart.fnType(core.List$(typed_data.Float32x4), [core.int], [core.int])
  }));
  dart.setGetterSignature(_native_typed_data.NativeFloat32x4List, () => ({
    __proto__: dart.getGetters(_native_typed_data.NativeFloat32x4List.__proto__),
    buffer: typed_data.ByteBuffer,
    [$buffer]: typed_data.ByteBuffer,
    lengthInBytes: core.int,
    [$lengthInBytes]: core.int,
    offsetInBytes: core.int,
    [$offsetInBytes]: core.int,
    elementSizeInBytes: core.int,
    [$elementSizeInBytes]: core.int,
    length: core.int,
    [$length]: core.int
  }));
  dart.setFieldSignature(_native_typed_data.NativeFloat32x4List, () => ({
    __proto__: dart.getFields(_native_typed_data.NativeFloat32x4List.__proto__),
    [_storage]: dart.finalFieldType(_native_typed_data.NativeFloat32List)
  }));
  dart.defineExtensionMethods(_native_typed_data.NativeFloat32x4List, ['_get', '_set', 'sublist']);
  dart.defineExtensionAccessors(_native_typed_data.NativeFloat32x4List, [
    'runtimeType',
    'buffer',
    'lengthInBytes',
    'offsetInBytes',
    'elementSizeInBytes',
    'length'
  ]);
  typed_data.Int32x4 = class Int32x4 extends core.Object {
    static new(x, y, z, w) {
      return new _native_typed_data.NativeInt32x4.new(x, y, z, w);
    }
    static bool(x, y, z, w) {
      return new _native_typed_data.NativeInt32x4.bool(x, y, z, w);
    }
    static fromFloat32x4Bits(x) {
      return _native_typed_data.NativeInt32x4.fromFloat32x4Bits(x);
    }
  };
  (typed_data.Int32x4[dart.mixinNew] = function() {
  }).prototype = typed_data.Int32x4.prototype;
  dart.addTypeTests(typed_data.Int32x4);
  dart.defineLazy(typed_data.Int32x4, {
    /*typed_data.Int32x4.xxxx*/get xxxx() {
      return 0;
    },
    /*typed_data.Int32x4.xxxy*/get xxxy() {
      return 64;
    },
    /*typed_data.Int32x4.xxxz*/get xxxz() {
      return 128;
    },
    /*typed_data.Int32x4.xxxw*/get xxxw() {
      return 192;
    },
    /*typed_data.Int32x4.xxyx*/get xxyx() {
      return 16;
    },
    /*typed_data.Int32x4.xxyy*/get xxyy() {
      return 80;
    },
    /*typed_data.Int32x4.xxyz*/get xxyz() {
      return 144;
    },
    /*typed_data.Int32x4.xxyw*/get xxyw() {
      return 208;
    },
    /*typed_data.Int32x4.xxzx*/get xxzx() {
      return 32;
    },
    /*typed_data.Int32x4.xxzy*/get xxzy() {
      return 96;
    },
    /*typed_data.Int32x4.xxzz*/get xxzz() {
      return 160;
    },
    /*typed_data.Int32x4.xxzw*/get xxzw() {
      return 224;
    },
    /*typed_data.Int32x4.xxwx*/get xxwx() {
      return 48;
    },
    /*typed_data.Int32x4.xxwy*/get xxwy() {
      return 112;
    },
    /*typed_data.Int32x4.xxwz*/get xxwz() {
      return 176;
    },
    /*typed_data.Int32x4.xxww*/get xxww() {
      return 240;
    },
    /*typed_data.Int32x4.xyxx*/get xyxx() {
      return 4;
    },
    /*typed_data.Int32x4.xyxy*/get xyxy() {
      return 68;
    },
    /*typed_data.Int32x4.xyxz*/get xyxz() {
      return 132;
    },
    /*typed_data.Int32x4.xyxw*/get xyxw() {
      return 196;
    },
    /*typed_data.Int32x4.xyyx*/get xyyx() {
      return 20;
    },
    /*typed_data.Int32x4.xyyy*/get xyyy() {
      return 84;
    },
    /*typed_data.Int32x4.xyyz*/get xyyz() {
      return 148;
    },
    /*typed_data.Int32x4.xyyw*/get xyyw() {
      return 212;
    },
    /*typed_data.Int32x4.xyzx*/get xyzx() {
      return 36;
    },
    /*typed_data.Int32x4.xyzy*/get xyzy() {
      return 100;
    },
    /*typed_data.Int32x4.xyzz*/get xyzz() {
      return 164;
    },
    /*typed_data.Int32x4.xyzw*/get xyzw() {
      return 228;
    },
    /*typed_data.Int32x4.xywx*/get xywx() {
      return 52;
    },
    /*typed_data.Int32x4.xywy*/get xywy() {
      return 116;
    },
    /*typed_data.Int32x4.xywz*/get xywz() {
      return 180;
    },
    /*typed_data.Int32x4.xyww*/get xyww() {
      return 244;
    },
    /*typed_data.Int32x4.xzxx*/get xzxx() {
      return 8;
    },
    /*typed_data.Int32x4.xzxy*/get xzxy() {
      return 72;
    },
    /*typed_data.Int32x4.xzxz*/get xzxz() {
      return 136;
    },
    /*typed_data.Int32x4.xzxw*/get xzxw() {
      return 200;
    },
    /*typed_data.Int32x4.xzyx*/get xzyx() {
      return 24;
    },
    /*typed_data.Int32x4.xzyy*/get xzyy() {
      return 88;
    },
    /*typed_data.Int32x4.xzyz*/get xzyz() {
      return 152;
    },
    /*typed_data.Int32x4.xzyw*/get xzyw() {
      return 216;
    },
    /*typed_data.Int32x4.xzzx*/get xzzx() {
      return 40;
    },
    /*typed_data.Int32x4.xzzy*/get xzzy() {
      return 104;
    },
    /*typed_data.Int32x4.xzzz*/get xzzz() {
      return 168;
    },
    /*typed_data.Int32x4.xzzw*/get xzzw() {
      return 232;
    },
    /*typed_data.Int32x4.xzwx*/get xzwx() {
      return 56;
    },
    /*typed_data.Int32x4.xzwy*/get xzwy() {
      return 120;
    },
    /*typed_data.Int32x4.xzwz*/get xzwz() {
      return 184;
    },
    /*typed_data.Int32x4.xzww*/get xzww() {
      return 248;
    },
    /*typed_data.Int32x4.xwxx*/get xwxx() {
      return 12;
    },
    /*typed_data.Int32x4.xwxy*/get xwxy() {
      return 76;
    },
    /*typed_data.Int32x4.xwxz*/get xwxz() {
      return 140;
    },
    /*typed_data.Int32x4.xwxw*/get xwxw() {
      return 204;
    },
    /*typed_data.Int32x4.xwyx*/get xwyx() {
      return 28;
    },
    /*typed_data.Int32x4.xwyy*/get xwyy() {
      return 92;
    },
    /*typed_data.Int32x4.xwyz*/get xwyz() {
      return 156;
    },
    /*typed_data.Int32x4.xwyw*/get xwyw() {
      return 220;
    },
    /*typed_data.Int32x4.xwzx*/get xwzx() {
      return 44;
    },
    /*typed_data.Int32x4.xwzy*/get xwzy() {
      return 108;
    },
    /*typed_data.Int32x4.xwzz*/get xwzz() {
      return 172;
    },
    /*typed_data.Int32x4.xwzw*/get xwzw() {
      return 236;
    },
    /*typed_data.Int32x4.xwwx*/get xwwx() {
      return 60;
    },
    /*typed_data.Int32x4.xwwy*/get xwwy() {
      return 124;
    },
    /*typed_data.Int32x4.xwwz*/get xwwz() {
      return 188;
    },
    /*typed_data.Int32x4.xwww*/get xwww() {
      return 252;
    },
    /*typed_data.Int32x4.yxxx*/get yxxx() {
      return 1;
    },
    /*typed_data.Int32x4.yxxy*/get yxxy() {
      return 65;
    },
    /*typed_data.Int32x4.yxxz*/get yxxz() {
      return 129;
    },
    /*typed_data.Int32x4.yxxw*/get yxxw() {
      return 193;
    },
    /*typed_data.Int32x4.yxyx*/get yxyx() {
      return 17;
    },
    /*typed_data.Int32x4.yxyy*/get yxyy() {
      return 81;
    },
    /*typed_data.Int32x4.yxyz*/get yxyz() {
      return 145;
    },
    /*typed_data.Int32x4.yxyw*/get yxyw() {
      return 209;
    },
    /*typed_data.Int32x4.yxzx*/get yxzx() {
      return 33;
    },
    /*typed_data.Int32x4.yxzy*/get yxzy() {
      return 97;
    },
    /*typed_data.Int32x4.yxzz*/get yxzz() {
      return 161;
    },
    /*typed_data.Int32x4.yxzw*/get yxzw() {
      return 225;
    },
    /*typed_data.Int32x4.yxwx*/get yxwx() {
      return 49;
    },
    /*typed_data.Int32x4.yxwy*/get yxwy() {
      return 113;
    },
    /*typed_data.Int32x4.yxwz*/get yxwz() {
      return 177;
    },
    /*typed_data.Int32x4.yxww*/get yxww() {
      return 241;
    },
    /*typed_data.Int32x4.yyxx*/get yyxx() {
      return 5;
    },
    /*typed_data.Int32x4.yyxy*/get yyxy() {
      return 69;
    },
    /*typed_data.Int32x4.yyxz*/get yyxz() {
      return 133;
    },
    /*typed_data.Int32x4.yyxw*/get yyxw() {
      return 197;
    },
    /*typed_data.Int32x4.yyyx*/get yyyx() {
      return 21;
    },
    /*typed_data.Int32x4.yyyy*/get yyyy() {
      return 85;
    },
    /*typed_data.Int32x4.yyyz*/get yyyz() {
      return 149;
    },
    /*typed_data.Int32x4.yyyw*/get yyyw() {
      return 213;
    },
    /*typed_data.Int32x4.yyzx*/get yyzx() {
      return 37;
    },
    /*typed_data.Int32x4.yyzy*/get yyzy() {
      return 101;
    },
    /*typed_data.Int32x4.yyzz*/get yyzz() {
      return 165;
    },
    /*typed_data.Int32x4.yyzw*/get yyzw() {
      return 229;
    },
    /*typed_data.Int32x4.yywx*/get yywx() {
      return 53;
    },
    /*typed_data.Int32x4.yywy*/get yywy() {
      return 117;
    },
    /*typed_data.Int32x4.yywz*/get yywz() {
      return 181;
    },
    /*typed_data.Int32x4.yyww*/get yyww() {
      return 245;
    },
    /*typed_data.Int32x4.yzxx*/get yzxx() {
      return 9;
    },
    /*typed_data.Int32x4.yzxy*/get yzxy() {
      return 73;
    },
    /*typed_data.Int32x4.yzxz*/get yzxz() {
      return 137;
    },
    /*typed_data.Int32x4.yzxw*/get yzxw() {
      return 201;
    },
    /*typed_data.Int32x4.yzyx*/get yzyx() {
      return 25;
    },
    /*typed_data.Int32x4.yzyy*/get yzyy() {
      return 89;
    },
    /*typed_data.Int32x4.yzyz*/get yzyz() {
      return 153;
    },
    /*typed_data.Int32x4.yzyw*/get yzyw() {
      return 217;
    },
    /*typed_data.Int32x4.yzzx*/get yzzx() {
      return 41;
    },
    /*typed_data.Int32x4.yzzy*/get yzzy() {
      return 105;
    },
    /*typed_data.Int32x4.yzzz*/get yzzz() {
      return 169;
    },
    /*typed_data.Int32x4.yzzw*/get yzzw() {
      return 233;
    },
    /*typed_data.Int32x4.yzwx*/get yzwx() {
      return 57;
    },
    /*typed_data.Int32x4.yzwy*/get yzwy() {
      return 121;
    },
    /*typed_data.Int32x4.yzwz*/get yzwz() {
      return 185;
    },
    /*typed_data.Int32x4.yzww*/get yzww() {
      return 249;
    },
    /*typed_data.Int32x4.ywxx*/get ywxx() {
      return 13;
    },
    /*typed_data.Int32x4.ywxy*/get ywxy() {
      return 77;
    },
    /*typed_data.Int32x4.ywxz*/get ywxz() {
      return 141;
    },
    /*typed_data.Int32x4.ywxw*/get ywxw() {
      return 205;
    },
    /*typed_data.Int32x4.ywyx*/get ywyx() {
      return 29;
    },
    /*typed_data.Int32x4.ywyy*/get ywyy() {
      return 93;
    },
    /*typed_data.Int32x4.ywyz*/get ywyz() {
      return 157;
    },
    /*typed_data.Int32x4.ywyw*/get ywyw() {
      return 221;
    },
    /*typed_data.Int32x4.ywzx*/get ywzx() {
      return 45;
    },
    /*typed_data.Int32x4.ywzy*/get ywzy() {
      return 109;
    },
    /*typed_data.Int32x4.ywzz*/get ywzz() {
      return 173;
    },
    /*typed_data.Int32x4.ywzw*/get ywzw() {
      return 237;
    },
    /*typed_data.Int32x4.ywwx*/get ywwx() {
      return 61;
    },
    /*typed_data.Int32x4.ywwy*/get ywwy() {
      return 125;
    },
    /*typed_data.Int32x4.ywwz*/get ywwz() {
      return 189;
    },
    /*typed_data.Int32x4.ywww*/get ywww() {
      return 253;
    },
    /*typed_data.Int32x4.zxxx*/get zxxx() {
      return 2;
    },
    /*typed_data.Int32x4.zxxy*/get zxxy() {
      return 66;
    },
    /*typed_data.Int32x4.zxxz*/get zxxz() {
      return 130;
    },
    /*typed_data.Int32x4.zxxw*/get zxxw() {
      return 194;
    },
    /*typed_data.Int32x4.zxyx*/get zxyx() {
      return 18;
    },
    /*typed_data.Int32x4.zxyy*/get zxyy() {
      return 82;
    },
    /*typed_data.Int32x4.zxyz*/get zxyz() {
      return 146;
    },
    /*typed_data.Int32x4.zxyw*/get zxyw() {
      return 210;
    },
    /*typed_data.Int32x4.zxzx*/get zxzx() {
      return 34;
    },
    /*typed_data.Int32x4.zxzy*/get zxzy() {
      return 98;
    },
    /*typed_data.Int32x4.zxzz*/get zxzz() {
      return 162;
    },
    /*typed_data.Int32x4.zxzw*/get zxzw() {
      return 226;
    },
    /*typed_data.Int32x4.zxwx*/get zxwx() {
      return 50;
    },
    /*typed_data.Int32x4.zxwy*/get zxwy() {
      return 114;
    },
    /*typed_data.Int32x4.zxwz*/get zxwz() {
      return 178;
    },
    /*typed_data.Int32x4.zxww*/get zxww() {
      return 242;
    },
    /*typed_data.Int32x4.zyxx*/get zyxx() {
      return 6;
    },
    /*typed_data.Int32x4.zyxy*/get zyxy() {
      return 70;
    },
    /*typed_data.Int32x4.zyxz*/get zyxz() {
      return 134;
    },
    /*typed_data.Int32x4.zyxw*/get zyxw() {
      return 198;
    },
    /*typed_data.Int32x4.zyyx*/get zyyx() {
      return 22;
    },
    /*typed_data.Int32x4.zyyy*/get zyyy() {
      return 86;
    },
    /*typed_data.Int32x4.zyyz*/get zyyz() {
      return 150;
    },
    /*typed_data.Int32x4.zyyw*/get zyyw() {
      return 214;
    },
    /*typed_data.Int32x4.zyzx*/get zyzx() {
      return 38;
    },
    /*typed_data.Int32x4.zyzy*/get zyzy() {
      return 102;
    },
    /*typed_data.Int32x4.zyzz*/get zyzz() {
      return 166;
    },
    /*typed_data.Int32x4.zyzw*/get zyzw() {
      return 230;
    },
    /*typed_data.Int32x4.zywx*/get zywx() {
      return 54;
    },
    /*typed_data.Int32x4.zywy*/get zywy() {
      return 118;
    },
    /*typed_data.Int32x4.zywz*/get zywz() {
      return 182;
    },
    /*typed_data.Int32x4.zyww*/get zyww() {
      return 246;
    },
    /*typed_data.Int32x4.zzxx*/get zzxx() {
      return 10;
    },
    /*typed_data.Int32x4.zzxy*/get zzxy() {
      return 74;
    },
    /*typed_data.Int32x4.zzxz*/get zzxz() {
      return 138;
    },
    /*typed_data.Int32x4.zzxw*/get zzxw() {
      return 202;
    },
    /*typed_data.Int32x4.zzyx*/get zzyx() {
      return 26;
    },
    /*typed_data.Int32x4.zzyy*/get zzyy() {
      return 90;
    },
    /*typed_data.Int32x4.zzyz*/get zzyz() {
      return 154;
    },
    /*typed_data.Int32x4.zzyw*/get zzyw() {
      return 218;
    },
    /*typed_data.Int32x4.zzzx*/get zzzx() {
      return 42;
    },
    /*typed_data.Int32x4.zzzy*/get zzzy() {
      return 106;
    },
    /*typed_data.Int32x4.zzzz*/get zzzz() {
      return 170;
    },
    /*typed_data.Int32x4.zzzw*/get zzzw() {
      return 234;
    },
    /*typed_data.Int32x4.zzwx*/get zzwx() {
      return 58;
    },
    /*typed_data.Int32x4.zzwy*/get zzwy() {
      return 122;
    },
    /*typed_data.Int32x4.zzwz*/get zzwz() {
      return 186;
    },
    /*typed_data.Int32x4.zzww*/get zzww() {
      return 250;
    },
    /*typed_data.Int32x4.zwxx*/get zwxx() {
      return 14;
    },
    /*typed_data.Int32x4.zwxy*/get zwxy() {
      return 78;
    },
    /*typed_data.Int32x4.zwxz*/get zwxz() {
      return 142;
    },
    /*typed_data.Int32x4.zwxw*/get zwxw() {
      return 206;
    },
    /*typed_data.Int32x4.zwyx*/get zwyx() {
      return 30;
    },
    /*typed_data.Int32x4.zwyy*/get zwyy() {
      return 94;
    },
    /*typed_data.Int32x4.zwyz*/get zwyz() {
      return 158;
    },
    /*typed_data.Int32x4.zwyw*/get zwyw() {
      return 222;
    },
    /*typed_data.Int32x4.zwzx*/get zwzx() {
      return 46;
    },
    /*typed_data.Int32x4.zwzy*/get zwzy() {
      return 110;
    },
    /*typed_data.Int32x4.zwzz*/get zwzz() {
      return 174;
    },
    /*typed_data.Int32x4.zwzw*/get zwzw() {
      return 238;
    },
    /*typed_data.Int32x4.zwwx*/get zwwx() {
      return 62;
    },
    /*typed_data.Int32x4.zwwy*/get zwwy() {
      return 126;
    },
    /*typed_data.Int32x4.zwwz*/get zwwz() {
      return 190;
    },
    /*typed_data.Int32x4.zwww*/get zwww() {
      return 254;
    },
    /*typed_data.Int32x4.wxxx*/get wxxx() {
      return 3;
    },
    /*typed_data.Int32x4.wxxy*/get wxxy() {
      return 67;
    },
    /*typed_data.Int32x4.wxxz*/get wxxz() {
      return 131;
    },
    /*typed_data.Int32x4.wxxw*/get wxxw() {
      return 195;
    },
    /*typed_data.Int32x4.wxyx*/get wxyx() {
      return 19;
    },
    /*typed_data.Int32x4.wxyy*/get wxyy() {
      return 83;
    },
    /*typed_data.Int32x4.wxyz*/get wxyz() {
      return 147;
    },
    /*typed_data.Int32x4.wxyw*/get wxyw() {
      return 211;
    },
    /*typed_data.Int32x4.wxzx*/get wxzx() {
      return 35;
    },
    /*typed_data.Int32x4.wxzy*/get wxzy() {
      return 99;
    },
    /*typed_data.Int32x4.wxzz*/get wxzz() {
      return 163;
    },
    /*typed_data.Int32x4.wxzw*/get wxzw() {
      return 227;
    },
    /*typed_data.Int32x4.wxwx*/get wxwx() {
      return 51;
    },
    /*typed_data.Int32x4.wxwy*/get wxwy() {
      return 115;
    },
    /*typed_data.Int32x4.wxwz*/get wxwz() {
      return 179;
    },
    /*typed_data.Int32x4.wxww*/get wxww() {
      return 243;
    },
    /*typed_data.Int32x4.wyxx*/get wyxx() {
      return 7;
    },
    /*typed_data.Int32x4.wyxy*/get wyxy() {
      return 71;
    },
    /*typed_data.Int32x4.wyxz*/get wyxz() {
      return 135;
    },
    /*typed_data.Int32x4.wyxw*/get wyxw() {
      return 199;
    },
    /*typed_data.Int32x4.wyyx*/get wyyx() {
      return 23;
    },
    /*typed_data.Int32x4.wyyy*/get wyyy() {
      return 87;
    },
    /*typed_data.Int32x4.wyyz*/get wyyz() {
      return 151;
    },
    /*typed_data.Int32x4.wyyw*/get wyyw() {
      return 215;
    },
    /*typed_data.Int32x4.wyzx*/get wyzx() {
      return 39;
    },
    /*typed_data.Int32x4.wyzy*/get wyzy() {
      return 103;
    },
    /*typed_data.Int32x4.wyzz*/get wyzz() {
      return 167;
    },
    /*typed_data.Int32x4.wyzw*/get wyzw() {
      return 231;
    },
    /*typed_data.Int32x4.wywx*/get wywx() {
      return 55;
    },
    /*typed_data.Int32x4.wywy*/get wywy() {
      return 119;
    },
    /*typed_data.Int32x4.wywz*/get wywz() {
      return 183;
    },
    /*typed_data.Int32x4.wyww*/get wyww() {
      return 247;
    },
    /*typed_data.Int32x4.wzxx*/get wzxx() {
      return 11;
    },
    /*typed_data.Int32x4.wzxy*/get wzxy() {
      return 75;
    },
    /*typed_data.Int32x4.wzxz*/get wzxz() {
      return 139;
    },
    /*typed_data.Int32x4.wzxw*/get wzxw() {
      return 203;
    },
    /*typed_data.Int32x4.wzyx*/get wzyx() {
      return 27;
    },
    /*typed_data.Int32x4.wzyy*/get wzyy() {
      return 91;
    },
    /*typed_data.Int32x4.wzyz*/get wzyz() {
      return 155;
    },
    /*typed_data.Int32x4.wzyw*/get wzyw() {
      return 219;
    },
    /*typed_data.Int32x4.wzzx*/get wzzx() {
      return 43;
    },
    /*typed_data.Int32x4.wzzy*/get wzzy() {
      return 107;
    },
    /*typed_data.Int32x4.wzzz*/get wzzz() {
      return 171;
    },
    /*typed_data.Int32x4.wzzw*/get wzzw() {
      return 235;
    },
    /*typed_data.Int32x4.wzwx*/get wzwx() {
      return 59;
    },
    /*typed_data.Int32x4.wzwy*/get wzwy() {
      return 123;
    },
    /*typed_data.Int32x4.wzwz*/get wzwz() {
      return 187;
    },
    /*typed_data.Int32x4.wzww*/get wzww() {
      return 251;
    },
    /*typed_data.Int32x4.wwxx*/get wwxx() {
      return 15;
    },
    /*typed_data.Int32x4.wwxy*/get wwxy() {
      return 79;
    },
    /*typed_data.Int32x4.wwxz*/get wwxz() {
      return 143;
    },
    /*typed_data.Int32x4.wwxw*/get wwxw() {
      return 207;
    },
    /*typed_data.Int32x4.wwyx*/get wwyx() {
      return 31;
    },
    /*typed_data.Int32x4.wwyy*/get wwyy() {
      return 95;
    },
    /*typed_data.Int32x4.wwyz*/get wwyz() {
      return 159;
    },
    /*typed_data.Int32x4.wwyw*/get wwyw() {
      return 223;
    },
    /*typed_data.Int32x4.wwzx*/get wwzx() {
      return 47;
    },
    /*typed_data.Int32x4.wwzy*/get wwzy() {
      return 111;
    },
    /*typed_data.Int32x4.wwzz*/get wwzz() {
      return 175;
    },
    /*typed_data.Int32x4.wwzw*/get wwzw() {
      return 239;
    },
    /*typed_data.Int32x4.wwwx*/get wwwx() {
      return 63;
    },
    /*typed_data.Int32x4.wwwy*/get wwwy() {
      return 127;
    },
    /*typed_data.Int32x4.wwwz*/get wwwz() {
      return 191;
    },
    /*typed_data.Int32x4.wwww*/get wwww() {
      return 255;
    }
  });
  const Object_ListMixin$$ = class Object_ListMixin extends core.Object {};
  (Object_ListMixin$$.new = function() {
  }).prototype = Object_ListMixin$$.prototype;
  dart.applyMixin(Object_ListMixin$$, collection.ListMixin$(typed_data.Int32x4));
  const Object_FixedLengthListMixin$$ = class Object_FixedLengthListMixin extends Object_ListMixin$$ {};
  (Object_FixedLengthListMixin$$.new = function() {
  }).prototype = Object_FixedLengthListMixin$$.prototype;
  dart.applyMixin(Object_FixedLengthListMixin$$, _internal.FixedLengthListMixin$(typed_data.Int32x4));
  _native_typed_data.NativeInt32x4List = class NativeInt32x4List extends Object_FixedLengthListMixin$$ {
    get runtimeType() {
      return dart.wrapType(typed_data.Int32x4List);
    }
    static fromList(list) {
      if (_native_typed_data.NativeInt32x4List.is(list)) {
        return new _native_typed_data.NativeInt32x4List._externalStorage(_native_typed_data.NativeInt32List.fromList(list[_storage]));
      } else {
        return new _native_typed_data.NativeInt32x4List._slowFromList(list);
      }
    }
    get buffer() {
      return this[_storage][$buffer];
    }
    get lengthInBytes() {
      return this[_storage][$lengthInBytes];
    }
    get offsetInBytes() {
      return this[_storage][$offsetInBytes];
    }
    get elementSizeInBytes() {
      return typed_data.Int32x4List.bytesPerElement;
    }
    get length() {
      return (dart.notNull(this[_storage][$length]) / 4)[$truncate]();
    }
    set length(value) {
      super.length = value;
    }
    _get(index) {
      _native_typed_data._checkValidIndex(index, this, this.length);
      let _x = this[_storage][$_get](dart.notNull(index) * 4 + 0);
      let _y = this[_storage][$_get](dart.notNull(index) * 4 + 1);
      let _z = this[_storage][$_get](dart.notNull(index) * 4 + 2);
      let _w = this[_storage][$_get](dart.notNull(index) * 4 + 3);
      return new _native_typed_data.NativeInt32x4._truncated(_x, _y, _z, _w);
    }
    _set(index, value) {
      typed_data.Int32x4._check(value);
      _native_typed_data._checkValidIndex(index, this, this.length);
      this[_storage][$_set](dart.notNull(index) * 4 + 0, value.x);
      this[_storage][$_set](dart.notNull(index) * 4 + 1, value.y);
      this[_storage][$_set](dart.notNull(index) * 4 + 2, value.z);
      this[_storage][$_set](dart.notNull(index) * 4 + 3, value.w);
      return value;
    }
    sublist(start, end) {
      if (end === void 0) end = null;
      end = _native_typed_data._checkValidRange(start, end, this.length);
      return new _native_typed_data.NativeInt32x4List._externalStorage(typed_data.Int32List._check(this[_storage][$sublist](dart.notNull(start) * 4, dart.notNull(end) * 4)));
    }
  };
  (_native_typed_data.NativeInt32x4List.new = function(length) {
    this[_storage] = _native_typed_data.NativeInt32List.new(dart.notNull(length) * 4);
  }).prototype = _native_typed_data.NativeInt32x4List.prototype;
  (_native_typed_data.NativeInt32x4List._externalStorage = function(storage) {
    this[_storage] = storage;
  }).prototype = _native_typed_data.NativeInt32x4List.prototype;
  (_native_typed_data.NativeInt32x4List._slowFromList = function(list) {
    this[_storage] = _native_typed_data.NativeInt32List.new(dart.notNull(list[$length]) * 4);
    for (let i = 0; i < dart.notNull(list[$length]); i++) {
      let e = list[$_get](i);
      this[_storage][$_set](i * 4 + 0, e.x);
      this[_storage][$_set](i * 4 + 1, e.y);
      this[_storage][$_set](i * 4 + 2, e.z);
      this[_storage][$_set](i * 4 + 3, e.w);
    }
  }).prototype = _native_typed_data.NativeInt32x4List.prototype;
  dart.addTypeTests(_native_typed_data.NativeInt32x4List);
  _native_typed_data.NativeInt32x4List[dart.implements] = () => [typed_data.Int32x4List];
  dart.setMethodSignature(_native_typed_data.NativeInt32x4List, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeInt32x4List.__proto__),
    _get: dart.fnType(typed_data.Int32x4, [core.int]),
    [$_get]: dart.fnType(typed_data.Int32x4, [core.int]),
    _set: dart.fnType(dart.void, [core.int, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    sublist: dart.fnType(core.List$(typed_data.Int32x4), [core.int], [core.int]),
    [$sublist]: dart.fnType(core.List$(typed_data.Int32x4), [core.int], [core.int])
  }));
  dart.setGetterSignature(_native_typed_data.NativeInt32x4List, () => ({
    __proto__: dart.getGetters(_native_typed_data.NativeInt32x4List.__proto__),
    buffer: typed_data.ByteBuffer,
    [$buffer]: typed_data.ByteBuffer,
    lengthInBytes: core.int,
    [$lengthInBytes]: core.int,
    offsetInBytes: core.int,
    [$offsetInBytes]: core.int,
    elementSizeInBytes: core.int,
    [$elementSizeInBytes]: core.int,
    length: core.int,
    [$length]: core.int
  }));
  dart.setFieldSignature(_native_typed_data.NativeInt32x4List, () => ({
    __proto__: dart.getFields(_native_typed_data.NativeInt32x4List.__proto__),
    [_storage]: dart.finalFieldType(typed_data.Int32List)
  }));
  dart.defineExtensionMethods(_native_typed_data.NativeInt32x4List, ['_get', '_set', 'sublist']);
  dart.defineExtensionAccessors(_native_typed_data.NativeInt32x4List, [
    'runtimeType',
    'buffer',
    'lengthInBytes',
    'offsetInBytes',
    'elementSizeInBytes',
    'length'
  ]);
  typed_data.Float64x2 = class Float64x2 extends core.Object {
    static new(x, y) {
      return new _native_typed_data.NativeFloat64x2.new(x, y);
    }
    static splat(v) {
      return new _native_typed_data.NativeFloat64x2.splat(v);
    }
    static zero() {
      return new _native_typed_data.NativeFloat64x2.zero();
    }
    static fromFloat32x4(v) {
      return new _native_typed_data.NativeFloat64x2.fromFloat32x4(v);
    }
  };
  (typed_data.Float64x2[dart.mixinNew] = function() {
  }).prototype = typed_data.Float64x2.prototype;
  dart.addTypeTests(typed_data.Float64x2);
  const Object_ListMixin$$0 = class Object_ListMixin extends core.Object {};
  (Object_ListMixin$$0.new = function() {
  }).prototype = Object_ListMixin$$0.prototype;
  dart.applyMixin(Object_ListMixin$$0, collection.ListMixin$(typed_data.Float64x2));
  const Object_FixedLengthListMixin$$0 = class Object_FixedLengthListMixin extends Object_ListMixin$$0 {};
  (Object_FixedLengthListMixin$$0.new = function() {
  }).prototype = Object_FixedLengthListMixin$$0.prototype;
  dart.applyMixin(Object_FixedLengthListMixin$$0, _internal.FixedLengthListMixin$(typed_data.Float64x2));
  _native_typed_data.NativeFloat64x2List = class NativeFloat64x2List extends Object_FixedLengthListMixin$$0 {
    static fromList(list) {
      if (_native_typed_data.NativeFloat64x2List.is(list)) {
        return new _native_typed_data.NativeFloat64x2List._externalStorage(_native_typed_data.NativeFloat64List.fromList(list[_storage]));
      } else {
        return new _native_typed_data.NativeFloat64x2List._slowFromList(list);
      }
    }
    get runtimeType() {
      return dart.wrapType(typed_data.Float64x2List);
    }
    get buffer() {
      return this[_storage].buffer;
    }
    get lengthInBytes() {
      return this[_storage][$lengthInBytes];
    }
    get offsetInBytes() {
      return this[_storage][$offsetInBytes];
    }
    get elementSizeInBytes() {
      return typed_data.Float64x2List.bytesPerElement;
    }
    get length() {
      return (dart.notNull(this[_storage][$length]) / 2)[$truncate]();
    }
    set length(value) {
      super.length = value;
    }
    _get(index) {
      _native_typed_data._checkValidIndex(index, this, this.length);
      let _x = this[_storage][$_get](dart.notNull(index) * 2 + 0);
      let _y = this[_storage][$_get](dart.notNull(index) * 2 + 1);
      return typed_data.Float64x2.new(_x, _y);
    }
    _set(index, value) {
      typed_data.Float64x2._check(value);
      _native_typed_data._checkValidIndex(index, this, this.length);
      this[_storage][$_set](dart.notNull(index) * 2 + 0, value.x);
      this[_storage][$_set](dart.notNull(index) * 2 + 1, value.y);
      return value;
    }
    sublist(start, end) {
      if (end === void 0) end = null;
      end = _native_typed_data._checkValidRange(start, end, this.length);
      return new _native_typed_data.NativeFloat64x2List._externalStorage(_native_typed_data.NativeFloat64List._check(this[_storage][$sublist](dart.notNull(start) * 2, dart.notNull(end) * 2)));
    }
  };
  (_native_typed_data.NativeFloat64x2List.new = function(length) {
    this[_storage] = _native_typed_data.NativeFloat64List.new(dart.notNull(length) * 2);
  }).prototype = _native_typed_data.NativeFloat64x2List.prototype;
  (_native_typed_data.NativeFloat64x2List._externalStorage = function(storage) {
    this[_storage] = storage;
  }).prototype = _native_typed_data.NativeFloat64x2List.prototype;
  (_native_typed_data.NativeFloat64x2List._slowFromList = function(list) {
    this[_storage] = _native_typed_data.NativeFloat64List.new(dart.notNull(list[$length]) * 2);
    for (let i = 0; i < dart.notNull(list[$length]); i++) {
      let e = list[$_get](i);
      this[_storage][$_set](i * 2 + 0, e.x);
      this[_storage][$_set](i * 2 + 1, e.y);
    }
  }).prototype = _native_typed_data.NativeFloat64x2List.prototype;
  dart.addTypeTests(_native_typed_data.NativeFloat64x2List);
  _native_typed_data.NativeFloat64x2List[dart.implements] = () => [typed_data.Float64x2List];
  dart.setMethodSignature(_native_typed_data.NativeFloat64x2List, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeFloat64x2List.__proto__),
    _get: dart.fnType(typed_data.Float64x2, [core.int]),
    [$_get]: dart.fnType(typed_data.Float64x2, [core.int]),
    _set: dart.fnType(dart.void, [core.int, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    sublist: dart.fnType(core.List$(typed_data.Float64x2), [core.int], [core.int]),
    [$sublist]: dart.fnType(core.List$(typed_data.Float64x2), [core.int], [core.int])
  }));
  dart.setGetterSignature(_native_typed_data.NativeFloat64x2List, () => ({
    __proto__: dart.getGetters(_native_typed_data.NativeFloat64x2List.__proto__),
    buffer: typed_data.ByteBuffer,
    [$buffer]: typed_data.ByteBuffer,
    lengthInBytes: core.int,
    [$lengthInBytes]: core.int,
    offsetInBytes: core.int,
    [$offsetInBytes]: core.int,
    elementSizeInBytes: core.int,
    [$elementSizeInBytes]: core.int,
    length: core.int,
    [$length]: core.int
  }));
  dart.setFieldSignature(_native_typed_data.NativeFloat64x2List, () => ({
    __proto__: dart.getFields(_native_typed_data.NativeFloat64x2List.__proto__),
    [_storage]: dart.finalFieldType(_native_typed_data.NativeFloat64List)
  }));
  dart.defineExtensionMethods(_native_typed_data.NativeFloat64x2List, ['_get', '_set', 'sublist']);
  dart.defineExtensionAccessors(_native_typed_data.NativeFloat64x2List, [
    'runtimeType',
    'buffer',
    'lengthInBytes',
    'offsetInBytes',
    'elementSizeInBytes',
    'length'
  ]);
  const _invalidPosition = Symbol('_invalidPosition');
  const _checkPosition = Symbol('_checkPosition');
  _native_typed_data.NativeTypedData = class NativeTypedData extends core.Object {
    get [$buffer]() {
      return this.buffer;
    }
    get [$lengthInBytes]() {
      return this.byteLength;
    }
    get [$offsetInBytes]() {
      return this.byteOffset;
    }
    get [$elementSizeInBytes]() {
      return this.BYTES_PER_ELEMENT;
    }
    [_invalidPosition](position, length, name) {
      if (!core.int.is(position)) {
        dart.throw(new core.ArgumentError.value(position, name, "Invalid list position"));
      } else {
        dart.throw(new core.RangeError.range(position, 0, length, name));
      }
    }
    [_checkPosition](position, length, name) {
      if (position >>> 0 !== position || position > dart.notNull(length)) {
        this[_invalidPosition](position, length, name);
      }
    }
  };
  (_native_typed_data.NativeTypedData.new = function() {
  }).prototype = _native_typed_data.NativeTypedData.prototype;
  dart.addTypeTests(_native_typed_data.NativeTypedData);
  _native_typed_data.NativeTypedData[dart.implements] = () => [typed_data.TypedData];
  dart.setMethodSignature(_native_typed_data.NativeTypedData, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeTypedData.__proto__),
    [_invalidPosition]: dart.fnType(dart.void, [core.int, core.int, core.String]),
    [_checkPosition]: dart.fnType(dart.void, [core.int, core.int, core.String])
  }));
  dart.setGetterSignature(_native_typed_data.NativeTypedData, () => ({
    __proto__: dart.getGetters(_native_typed_data.NativeTypedData.__proto__),
    [$buffer]: typed_data.ByteBuffer,
    [$lengthInBytes]: core.int,
    [$offsetInBytes]: core.int,
    [$elementSizeInBytes]: core.int
  }));
  dart.registerExtension("ArrayBufferView", _native_typed_data.NativeTypedData);
  _native_typed_data._checkLength = function(length) {
    if (!core.int.is(length)) dart.throw(new core.ArgumentError.new("Invalid length " + dart.str(length)));
    return core.int._check(length);
  };
  _native_typed_data._checkViewArguments = function(buffer, offsetInBytes, length) {
    if (!_native_typed_data.NativeByteBuffer.is(buffer)) {
      dart.throw(new core.ArgumentError.new("Invalid view buffer"));
    }
    if (!core.int.is(offsetInBytes)) {
      dart.throw(new core.ArgumentError.new("Invalid view offsetInBytes " + dart.str(offsetInBytes)));
    }
    if (length != null && !core.int.is(length)) {
      dart.throw(new core.ArgumentError.new("Invalid view length " + dart.str(length)));
    }
  };
  _native_typed_data._ensureNativeList = function(list) {
    if (_interceptors.JSIndexable.is(list)) return list;
    let result = core.List.new(list[$length]);
    for (let i = 0; i < dart.notNull(list[$length]); i++) {
      result[$_set](i, list[$_get](i));
    }
    return result;
  };
  const _getFloat32 = Symbol('_getFloat32');
  const _getFloat64 = Symbol('_getFloat64');
  const _getInt16 = Symbol('_getInt16');
  const _getInt32 = Symbol('_getInt32');
  const _getUint16 = Symbol('_getUint16');
  const _getUint32 = Symbol('_getUint32');
  const _setFloat32 = Symbol('_setFloat32');
  const _setFloat64 = Symbol('_setFloat64');
  const _setInt16 = Symbol('_setInt16');
  const _setInt32 = Symbol('_setInt32');
  const _setUint16 = Symbol('_setUint16');
  const _setUint32 = Symbol('_setUint32');
  _native_typed_data.NativeByteData = class NativeByteData extends _native_typed_data.NativeTypedData {
    static new(length) {
      return _native_typed_data.NativeByteData._create1(_native_typed_data._checkLength(length));
    }
    static view(buffer, offsetInBytes, length) {
      _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
      return length == null ? _native_typed_data.NativeByteData._create2(buffer, offsetInBytes) : _native_typed_data.NativeByteData._create3(buffer, offsetInBytes, length);
    }
    get [$runtimeType]() {
      return dart.wrapType(typed_data.ByteData);
    }
    get [$elementSizeInBytes]() {
      return 1;
    }
    [$getFloat32](byteOffset, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_getFloat32](byteOffset, typed_data.Endian.little._equals(endian));
    }
    [_getFloat32](...args) {
      return this.getFloat32.apply(this, args);
    }
    [$getFloat64](byteOffset, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_getFloat64](byteOffset, typed_data.Endian.little._equals(endian));
    }
    [_getFloat64](...args) {
      return this.getFloat64.apply(this, args);
    }
    [$getInt16](byteOffset, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_getInt16](byteOffset, typed_data.Endian.little._equals(endian));
    }
    [_getInt16](...args) {
      return this.getInt16.apply(this, args);
    }
    [$getInt32](byteOffset, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_getInt32](byteOffset, typed_data.Endian.little._equals(endian));
    }
    [_getInt32](...args) {
      return this.getInt32.apply(this, args);
    }
    [$getInt64](byteOffset, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      dart.throw(new core.UnsupportedError.new("Int64 accessor not supported by dart2js."));
    }
    [$getInt8](...args) {
      return this.getInt8.apply(this, args);
    }
    [$getUint16](byteOffset, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_getUint16](byteOffset, typed_data.Endian.little._equals(endian));
    }
    [_getUint16](...args) {
      return this.getUint16.apply(this, args);
    }
    [$getUint32](byteOffset, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_getUint32](byteOffset, typed_data.Endian.little._equals(endian));
    }
    [_getUint32](...args) {
      return this.getUint32.apply(this, args);
    }
    [$getUint64](byteOffset, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      dart.throw(new core.UnsupportedError.new("Uint64 accessor not supported by dart2js."));
    }
    [$getUint8](...args) {
      return this.getUint8.apply(this, args);
    }
    [$setFloat32](byteOffset, value, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_setFloat32](byteOffset, value, typed_data.Endian.little._equals(endian));
    }
    [_setFloat32](...args) {
      return this.setFloat32.apply(this, args);
    }
    [$setFloat64](byteOffset, value, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_setFloat64](byteOffset, value, typed_data.Endian.little._equals(endian));
    }
    [_setFloat64](...args) {
      return this.setFloat64.apply(this, args);
    }
    [$setInt16](byteOffset, value, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_setInt16](byteOffset, value, typed_data.Endian.little._equals(endian));
    }
    [_setInt16](...args) {
      return this.setInt16.apply(this, args);
    }
    [$setInt32](byteOffset, value, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_setInt32](byteOffset, value, typed_data.Endian.little._equals(endian));
    }
    [_setInt32](...args) {
      return this.setInt32.apply(this, args);
    }
    [$setInt64](byteOffset, value, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      dart.throw(new core.UnsupportedError.new("Int64 accessor not supported by dart2js."));
    }
    [$setInt8](...args) {
      return this.setInt8.apply(this, args);
    }
    [$setUint16](byteOffset, value, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_setUint16](byteOffset, value, typed_data.Endian.little._equals(endian));
    }
    [_setUint16](...args) {
      return this.setUint16.apply(this, args);
    }
    [$setUint32](byteOffset, value, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_setUint32](byteOffset, value, typed_data.Endian.little._equals(endian));
    }
    [_setUint32](...args) {
      return this.setUint32.apply(this, args);
    }
    [$setUint64](byteOffset, value, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      dart.throw(new core.UnsupportedError.new("Uint64 accessor not supported by dart2js."));
    }
    [$setUint8](...args) {
      return this.setUint8.apply(this, args);
    }
    static _create1(arg) {
      return new DataView(new ArrayBuffer(arg));
    }
    static _create2(arg1, arg2) {
      return new DataView(arg1, arg2);
    }
    static _create3(arg1, arg2, arg3) {
      return new DataView(arg1, arg2, arg3);
    }
  };
  dart.addTypeTests(_native_typed_data.NativeByteData);
  _native_typed_data.NativeByteData[dart.implements] = () => [typed_data.ByteData];
  dart.setMethodSignature(_native_typed_data.NativeByteData, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeByteData.__proto__),
    [$getFloat32]: dart.fnType(core.double, [core.int], [typed_data.Endian]),
    [_getFloat32]: dart.fnType(core.double, [core.int], [core.bool]),
    [$getFloat64]: dart.fnType(core.double, [core.int], [typed_data.Endian]),
    [_getFloat64]: dart.fnType(core.double, [core.int], [core.bool]),
    [$getInt16]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    [_getInt16]: dart.fnType(core.int, [core.int], [core.bool]),
    [$getInt32]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    [_getInt32]: dart.fnType(core.int, [core.int], [core.bool]),
    [$getInt64]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    [$getInt8]: dart.fnType(core.int, [core.int]),
    [$getUint16]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    [_getUint16]: dart.fnType(core.int, [core.int], [core.bool]),
    [$getUint32]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    [_getUint32]: dart.fnType(core.int, [core.int], [core.bool]),
    [$getUint64]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    [$getUint8]: dart.fnType(core.int, [core.int]),
    [$setFloat32]: dart.fnType(dart.void, [core.int, core.num], [typed_data.Endian]),
    [_setFloat32]: dart.fnType(dart.void, [core.int, core.num], [core.bool]),
    [$setFloat64]: dart.fnType(dart.void, [core.int, core.num], [typed_data.Endian]),
    [_setFloat64]: dart.fnType(dart.void, [core.int, core.num], [core.bool]),
    [$setInt16]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    [_setInt16]: dart.fnType(dart.void, [core.int, core.int], [core.bool]),
    [$setInt32]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    [_setInt32]: dart.fnType(dart.void, [core.int, core.int], [core.bool]),
    [$setInt64]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    [$setInt8]: dart.fnType(dart.void, [core.int, core.int]),
    [$setUint16]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    [_setUint16]: dart.fnType(dart.void, [core.int, core.int], [core.bool]),
    [$setUint32]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    [_setUint32]: dart.fnType(dart.void, [core.int, core.int], [core.bool]),
    [$setUint64]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    [$setUint8]: dart.fnType(dart.void, [core.int, core.int])
  }));
  dart.registerExtension("DataView", _native_typed_data.NativeByteData);
  const _setRangeFast = Symbol('_setRangeFast');
  _native_typed_data.NativeTypedArray = class NativeTypedArray extends _native_typed_data.NativeTypedData {
    [_setRangeFast](start, end, source, skipCount) {
      let targetLength = this[$length];
      this[_checkPosition](start, targetLength, "start");
      this[_checkPosition](end, targetLength, "end");
      if (dart.notNull(start) > dart.notNull(end)) dart.throw(new core.RangeError.range(start, 0, end));
      let count = dart.notNull(end) - dart.notNull(start);
      if (dart.notNull(skipCount) < 0) dart.throw(new core.ArgumentError.new(skipCount));
      let sourceLength = source[$length];
      if (dart.notNull(sourceLength) - dart.notNull(skipCount) < count) {
        dart.throw(new core.StateError.new("Not enough elements"));
      }
      if (skipCount !== 0 || sourceLength !== count) {
        source = source.subarray(skipCount, dart.notNull(skipCount) + count);
      }
      this.set(source, start);
    }
  };
  (_native_typed_data.NativeTypedArray.new = function() {
  }).prototype = _native_typed_data.NativeTypedArray.prototype;
  dart.addTypeTests(_native_typed_data.NativeTypedArray);
  _native_typed_data.NativeTypedArray[dart.implements] = () => [_js_helper.JavaScriptIndexingBehavior];
  dart.setMethodSignature(_native_typed_data.NativeTypedArray, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeTypedArray.__proto__),
    [_setRangeFast]: dart.fnType(dart.void, [core.int, core.int, _native_typed_data.NativeTypedArray, core.int])
  }));
  core.double = class double extends core.num {
    static parse(source, onError) {
      if (onError === void 0) onError = null;
      return _js_helper.Primitives.parseDouble(source, onError);
    }
    static tryParse(source) {
      return _js_helper.Primitives.parseDouble(source, dart.fn(core._kNull, dynamicToNull()));
    }
  };
  (core.double.new = function() {
  }).prototype = core.double.prototype;
  core.double.is = function is_num(o) {
    return typeof o == "number";
  };
  core.double.as = function as_num(o) {
    if (typeof o == "number" || o == null) return o;
    return dart.as(o, core.double, false);
  };
  core.double._check = function check_num(o) {
    if (typeof o == "number" || o == null) return o;
    return dart.as(o, core.double, true);
  };
  dart.defineLazy(core.double, {
    /*core.double.nan*/get nan() {
      return 0.0 / 0.0;
    },
    /*core.double.infinity*/get infinity() {
      return 1.0 / 0.0;
    },
    /*core.double.negativeInfinity*/get negativeInfinity() {
      return -Infinity;
    },
    /*core.double.minPositive*/get minPositive() {
      return 5e-324;
    },
    /*core.double.maxFinite*/get maxFinite() {
      return 1.7976931348623157e+308;
    }
  });
  const NativeTypedArray_ListMixin$ = class NativeTypedArray_ListMixin extends _native_typed_data.NativeTypedArray {};
  (NativeTypedArray_ListMixin$.new = function() {
  }).prototype = NativeTypedArray_ListMixin$.prototype;
  dart.applyMixin(NativeTypedArray_ListMixin$, collection.ListMixin$(core.double));
  const NativeTypedArray_FixedLengthListMixin$ = class NativeTypedArray_FixedLengthListMixin extends NativeTypedArray_ListMixin$ {};
  (NativeTypedArray_FixedLengthListMixin$.new = function() {
  }).prototype = NativeTypedArray_FixedLengthListMixin$.prototype;
  dart.applyMixin(NativeTypedArray_FixedLengthListMixin$, _internal.FixedLengthListMixin$(core.double));
  _native_typed_data.NativeTypedArrayOfDouble = class NativeTypedArrayOfDouble extends NativeTypedArray_FixedLengthListMixin$ {
    get length() {
      return this.length;
    }
    set length(value) {
      super.length = value;
    }
    _get(index) {
      _native_typed_data._checkValidIndex(index, this, this[$length]);
      return this[index];
    }
    _set(index, value) {
      core.num._check(value);
      _native_typed_data._checkValidIndex(index, this, this[$length]);
      this[index] = value;
      return value;
    }
    setRange(start, end, iterable, skipCount) {
      IterableOfdouble()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      if (_native_typed_data.NativeTypedArrayOfDouble.is(iterable)) {
        this[_setRangeFast](start, end, iterable, skipCount);
        return;
      }
      super[$setRange](start, end, iterable, skipCount);
    }
  };
  (_native_typed_data.NativeTypedArrayOfDouble.new = function() {
  }).prototype = _native_typed_data.NativeTypedArrayOfDouble.prototype;
  dart.addTypeTests(_native_typed_data.NativeTypedArrayOfDouble);
  dart.setMethodSignature(_native_typed_data.NativeTypedArrayOfDouble, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeTypedArrayOfDouble.__proto__),
    _get: dart.fnType(core.double, [core.int]),
    [$_get]: dart.fnType(core.double, [core.int]),
    _set: dart.fnType(dart.void, [core.int, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int])
  }));
  dart.setGetterSignature(_native_typed_data.NativeTypedArrayOfDouble, () => ({
    __proto__: dart.getGetters(_native_typed_data.NativeTypedArrayOfDouble.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.defineExtensionMethods(_native_typed_data.NativeTypedArrayOfDouble, ['_get', '_set', 'setRange']);
  dart.defineExtensionAccessors(_native_typed_data.NativeTypedArrayOfDouble, ['length']);
  const NativeTypedArray_ListMixin$$ = class NativeTypedArray_ListMixin extends _native_typed_data.NativeTypedArray {};
  (NativeTypedArray_ListMixin$$.new = function() {
  }).prototype = NativeTypedArray_ListMixin$$.prototype;
  dart.applyMixin(NativeTypedArray_ListMixin$$, collection.ListMixin$(core.int));
  const NativeTypedArray_FixedLengthListMixin$$ = class NativeTypedArray_FixedLengthListMixin extends NativeTypedArray_ListMixin$$ {};
  (NativeTypedArray_FixedLengthListMixin$$.new = function() {
  }).prototype = NativeTypedArray_FixedLengthListMixin$$.prototype;
  dart.applyMixin(NativeTypedArray_FixedLengthListMixin$$, _internal.FixedLengthListMixin$(core.int));
  _native_typed_data.NativeTypedArrayOfInt = class NativeTypedArrayOfInt extends NativeTypedArray_FixedLengthListMixin$$ {
    get length() {
      return this.length;
    }
    set length(value) {
      super.length = value;
    }
    _set(index, value) {
      core.int._check(value);
      _native_typed_data._checkValidIndex(index, this, this[$length]);
      this[index] = value;
      return value;
    }
    setRange(start, end, iterable, skipCount) {
      IterableOfint()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      if (_native_typed_data.NativeTypedArrayOfInt.is(iterable)) {
        this[_setRangeFast](start, end, iterable, skipCount);
        return;
      }
      super[$setRange](start, end, iterable, skipCount);
    }
  };
  (_native_typed_data.NativeTypedArrayOfInt.new = function() {
  }).prototype = _native_typed_data.NativeTypedArrayOfInt.prototype;
  _native_typed_data.NativeTypedArrayOfInt.prototype[dart.isList] = true;
  dart.addTypeTests(_native_typed_data.NativeTypedArrayOfInt);
  _native_typed_data.NativeTypedArrayOfInt[dart.implements] = () => [ListOfint()];
  dart.setMethodSignature(_native_typed_data.NativeTypedArrayOfInt, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeTypedArrayOfInt.__proto__),
    _set: dart.fnType(dart.void, [core.int, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int])
  }));
  dart.setGetterSignature(_native_typed_data.NativeTypedArrayOfInt, () => ({
    __proto__: dart.getGetters(_native_typed_data.NativeTypedArrayOfInt.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.defineExtensionMethods(_native_typed_data.NativeTypedArrayOfInt, ['_set', 'setRange']);
  dart.defineExtensionAccessors(_native_typed_data.NativeTypedArrayOfInt, ['length']);
  _native_typed_data.NativeFloat32List = class NativeFloat32List extends _native_typed_data.NativeTypedArrayOfDouble {
    static new(length) {
      return _native_typed_data.NativeFloat32List._create1(_native_typed_data._checkLength(length));
    }
    static fromList(elements) {
      return _native_typed_data.NativeFloat32List._create1(_native_typed_data._ensureNativeList(elements));
    }
    static view(buffer, offsetInBytes, length) {
      _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
      return length == null ? _native_typed_data.NativeFloat32List._create2(buffer, offsetInBytes) : _native_typed_data.NativeFloat32List._create3(buffer, offsetInBytes, length);
    }
    get [$runtimeType]() {
      return dart.wrapType(typed_data.Float32List);
    }
    [$sublist](start, end) {
      if (end === void 0) end = null;
      end = _native_typed_data._checkValidRange(start, end, this[$length]);
      let source = this.subarray(start, end);
      return _native_typed_data.NativeFloat32List._create1(source);
    }
    static _create1(arg) {
      return new Float32Array(arg);
    }
    static _create2(arg1, arg2) {
      return new Float32Array(arg1, arg2);
    }
    static _create3(arg1, arg2, arg3) {
      return new Float32Array(arg1, arg2, arg3);
    }
  };
  dart.addTypeTests(_native_typed_data.NativeFloat32List);
  _native_typed_data.NativeFloat32List[dart.implements] = () => [typed_data.Float32List];
  dart.setMethodSignature(_native_typed_data.NativeFloat32List, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeFloat32List.__proto__),
    [$sublist]: dart.fnType(core.List$(core.double), [core.int], [core.int])
  }));
  dart.registerExtension("Float32Array", _native_typed_data.NativeFloat32List);
  _native_typed_data.NativeFloat64List = class NativeFloat64List extends _native_typed_data.NativeTypedArrayOfDouble {
    static new(length) {
      return _native_typed_data.NativeFloat64List._create1(_native_typed_data._checkLength(length));
    }
    static fromList(elements) {
      return _native_typed_data.NativeFloat64List._create1(_native_typed_data._ensureNativeList(elements));
    }
    static view(buffer, offsetInBytes, length) {
      _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
      return length == null ? _native_typed_data.NativeFloat64List._create2(buffer, offsetInBytes) : _native_typed_data.NativeFloat64List._create3(buffer, offsetInBytes, length);
    }
    get [$runtimeType]() {
      return dart.wrapType(typed_data.Float64List);
    }
    [$sublist](start, end) {
      if (end === void 0) end = null;
      end = _native_typed_data._checkValidRange(start, end, this[$length]);
      let source = this.subarray(start, end);
      return _native_typed_data.NativeFloat64List._create1(source);
    }
    static _create1(arg) {
      return new Float64Array(arg);
    }
    static _create2(arg1, arg2) {
      return new Float64Array(arg1, arg2);
    }
    static _create3(arg1, arg2, arg3) {
      return new Float64Array(arg1, arg2, arg3);
    }
  };
  dart.addTypeTests(_native_typed_data.NativeFloat64List);
  _native_typed_data.NativeFloat64List[dart.implements] = () => [typed_data.Float64List];
  dart.setMethodSignature(_native_typed_data.NativeFloat64List, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeFloat64List.__proto__),
    [$sublist]: dart.fnType(core.List$(core.double), [core.int], [core.int])
  }));
  dart.registerExtension("Float64Array", _native_typed_data.NativeFloat64List);
  _native_typed_data.NativeInt16List = class NativeInt16List extends _native_typed_data.NativeTypedArrayOfInt {
    static new(length) {
      return _native_typed_data.NativeInt16List._create1(_native_typed_data._checkLength(length));
    }
    static fromList(elements) {
      return _native_typed_data.NativeInt16List._create1(_native_typed_data._ensureNativeList(elements));
    }
    static view(buffer, offsetInBytes, length) {
      _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
      return length == null ? _native_typed_data.NativeInt16List._create2(buffer, offsetInBytes) : _native_typed_data.NativeInt16List._create3(buffer, offsetInBytes, length);
    }
    get [$runtimeType]() {
      return dart.wrapType(typed_data.Int16List);
    }
    [$_get](index) {
      _native_typed_data._checkValidIndex(index, this, this[$length]);
      return this[index];
    }
    [$sublist](start, end) {
      if (end === void 0) end = null;
      end = _native_typed_data._checkValidRange(start, end, this[$length]);
      let source = this.subarray(start, end);
      return _native_typed_data.NativeInt16List._create1(source);
    }
    static _create1(arg) {
      return new Int16Array(arg);
    }
    static _create2(arg1, arg2) {
      return new Int16Array(arg1, arg2);
    }
    static _create3(arg1, arg2, arg3) {
      return new Int16Array(arg1, arg2, arg3);
    }
  };
  dart.addTypeTests(_native_typed_data.NativeInt16List);
  _native_typed_data.NativeInt16List[dart.implements] = () => [typed_data.Int16List];
  dart.setMethodSignature(_native_typed_data.NativeInt16List, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeInt16List.__proto__),
    [$_get]: dart.fnType(core.int, [core.int]),
    [$sublist]: dart.fnType(core.List$(core.int), [core.int], [core.int])
  }));
  dart.registerExtension("Int16Array", _native_typed_data.NativeInt16List);
  _native_typed_data.NativeInt32List = class NativeInt32List extends _native_typed_data.NativeTypedArrayOfInt {
    static new(length) {
      return _native_typed_data.NativeInt32List._create1(_native_typed_data._checkLength(length));
    }
    static fromList(elements) {
      return _native_typed_data.NativeInt32List._create1(_native_typed_data._ensureNativeList(elements));
    }
    static view(buffer, offsetInBytes, length) {
      _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
      return length == null ? _native_typed_data.NativeInt32List._create2(buffer, offsetInBytes) : _native_typed_data.NativeInt32List._create3(buffer, offsetInBytes, length);
    }
    get [$runtimeType]() {
      return dart.wrapType(typed_data.Int32List);
    }
    [$_get](index) {
      _native_typed_data._checkValidIndex(index, this, this[$length]);
      return this[index];
    }
    [$sublist](start, end) {
      if (end === void 0) end = null;
      end = _native_typed_data._checkValidRange(start, end, this[$length]);
      let source = this.subarray(start, end);
      return _native_typed_data.NativeInt32List._create1(source);
    }
    static _create1(arg) {
      return new Int32Array(arg);
    }
    static _create2(arg1, arg2) {
      return new Int32Array(arg1, arg2);
    }
    static _create3(arg1, arg2, arg3) {
      return new Int32Array(arg1, arg2, arg3);
    }
  };
  dart.addTypeTests(_native_typed_data.NativeInt32List);
  _native_typed_data.NativeInt32List[dart.implements] = () => [typed_data.Int32List];
  dart.setMethodSignature(_native_typed_data.NativeInt32List, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeInt32List.__proto__),
    [$_get]: dart.fnType(core.int, [core.int]),
    [$sublist]: dart.fnType(core.List$(core.int), [core.int], [core.int])
  }));
  dart.registerExtension("Int32Array", _native_typed_data.NativeInt32List);
  _native_typed_data.NativeInt8List = class NativeInt8List extends _native_typed_data.NativeTypedArrayOfInt {
    static new(length) {
      return _native_typed_data.NativeInt8List._create1(_native_typed_data._checkLength(length));
    }
    static fromList(elements) {
      return _native_typed_data.NativeInt8List._create1(_native_typed_data._ensureNativeList(elements));
    }
    static view(buffer, offsetInBytes, length) {
      _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
      return _native_typed_data.NativeInt8List._check(length == null ? _native_typed_data.NativeInt8List._create2(buffer, offsetInBytes) : _native_typed_data.NativeInt8List._create3(buffer, offsetInBytes, length));
    }
    get [$runtimeType]() {
      return dart.wrapType(typed_data.Int8List);
    }
    [$_get](index) {
      _native_typed_data._checkValidIndex(index, this, this[$length]);
      return this[index];
    }
    [$sublist](start, end) {
      if (end === void 0) end = null;
      end = _native_typed_data._checkValidRange(start, end, this[$length]);
      let source = this.subarray(start, end);
      return _native_typed_data.NativeInt8List._create1(source);
    }
    static _create1(arg) {
      return new Int8Array(arg);
    }
    static _create2(arg1, arg2) {
      return new Int8Array(arg1, arg2);
    }
    static _create3(arg1, arg2, arg3) {
      return new Int8Array(arg1, arg2, arg3);
    }
  };
  dart.addTypeTests(_native_typed_data.NativeInt8List);
  _native_typed_data.NativeInt8List[dart.implements] = () => [typed_data.Int8List];
  dart.setMethodSignature(_native_typed_data.NativeInt8List, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeInt8List.__proto__),
    [$_get]: dart.fnType(core.int, [core.int]),
    [$sublist]: dart.fnType(core.List$(core.int), [core.int], [core.int])
  }));
  dart.registerExtension("Int8Array", _native_typed_data.NativeInt8List);
  _native_typed_data.NativeUint16List = class NativeUint16List extends _native_typed_data.NativeTypedArrayOfInt {
    static new(length) {
      return _native_typed_data.NativeUint16List._create1(_native_typed_data._checkLength(length));
    }
    static fromList(list) {
      return _native_typed_data.NativeUint16List._create1(_native_typed_data._ensureNativeList(list));
    }
    static view(buffer, offsetInBytes, length) {
      _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
      return length == null ? _native_typed_data.NativeUint16List._create2(buffer, offsetInBytes) : _native_typed_data.NativeUint16List._create3(buffer, offsetInBytes, length);
    }
    get [$runtimeType]() {
      return dart.wrapType(typed_data.Uint16List);
    }
    [$_get](index) {
      _native_typed_data._checkValidIndex(index, this, this[$length]);
      return this[index];
    }
    [$sublist](start, end) {
      if (end === void 0) end = null;
      end = _native_typed_data._checkValidRange(start, end, this[$length]);
      let source = this.subarray(start, end);
      return _native_typed_data.NativeUint16List._create1(source);
    }
    static _create1(arg) {
      return new Uint16Array(arg);
    }
    static _create2(arg1, arg2) {
      return new Uint16Array(arg1, arg2);
    }
    static _create3(arg1, arg2, arg3) {
      return new Uint16Array(arg1, arg2, arg3);
    }
  };
  dart.addTypeTests(_native_typed_data.NativeUint16List);
  _native_typed_data.NativeUint16List[dart.implements] = () => [typed_data.Uint16List];
  dart.setMethodSignature(_native_typed_data.NativeUint16List, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeUint16List.__proto__),
    [$_get]: dart.fnType(core.int, [core.int]),
    [$sublist]: dart.fnType(core.List$(core.int), [core.int], [core.int])
  }));
  dart.registerExtension("Uint16Array", _native_typed_data.NativeUint16List);
  _native_typed_data.NativeUint32List = class NativeUint32List extends _native_typed_data.NativeTypedArrayOfInt {
    static new(length) {
      return _native_typed_data.NativeUint32List._create1(_native_typed_data._checkLength(length));
    }
    static fromList(elements) {
      return _native_typed_data.NativeUint32List._create1(_native_typed_data._ensureNativeList(elements));
    }
    static view(buffer, offsetInBytes, length) {
      _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
      return length == null ? _native_typed_data.NativeUint32List._create2(buffer, offsetInBytes) : _native_typed_data.NativeUint32List._create3(buffer, offsetInBytes, length);
    }
    get [$runtimeType]() {
      return dart.wrapType(typed_data.Uint32List);
    }
    [$_get](index) {
      _native_typed_data._checkValidIndex(index, this, this[$length]);
      return this[index];
    }
    [$sublist](start, end) {
      if (end === void 0) end = null;
      end = _native_typed_data._checkValidRange(start, end, this[$length]);
      let source = this.subarray(start, end);
      return _native_typed_data.NativeUint32List._create1(source);
    }
    static _create1(arg) {
      return new Uint32Array(arg);
    }
    static _create2(arg1, arg2) {
      return new Uint32Array(arg1, arg2);
    }
    static _create3(arg1, arg2, arg3) {
      return new Uint32Array(arg1, arg2, arg3);
    }
  };
  dart.addTypeTests(_native_typed_data.NativeUint32List);
  _native_typed_data.NativeUint32List[dart.implements] = () => [typed_data.Uint32List];
  dart.setMethodSignature(_native_typed_data.NativeUint32List, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeUint32List.__proto__),
    [$_get]: dart.fnType(core.int, [core.int]),
    [$sublist]: dart.fnType(core.List$(core.int), [core.int], [core.int])
  }));
  dart.registerExtension("Uint32Array", _native_typed_data.NativeUint32List);
  _native_typed_data.NativeUint8ClampedList = class NativeUint8ClampedList extends _native_typed_data.NativeTypedArrayOfInt {
    static new(length) {
      return _native_typed_data.NativeUint8ClampedList._create1(_native_typed_data._checkLength(length));
    }
    static fromList(elements) {
      return _native_typed_data.NativeUint8ClampedList._create1(_native_typed_data._ensureNativeList(elements));
    }
    static view(buffer, offsetInBytes, length) {
      _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
      return length == null ? _native_typed_data.NativeUint8ClampedList._create2(buffer, offsetInBytes) : _native_typed_data.NativeUint8ClampedList._create3(buffer, offsetInBytes, length);
    }
    get [$runtimeType]() {
      return dart.wrapType(typed_data.Uint8ClampedList);
    }
    get [$length]() {
      return this.length;
    }
    set [$length](value) {
      super[$length] = value;
    }
    [$_get](index) {
      _native_typed_data._checkValidIndex(index, this, this[$length]);
      return this[index];
    }
    [$sublist](start, end) {
      if (end === void 0) end = null;
      end = _native_typed_data._checkValidRange(start, end, this[$length]);
      let source = this.subarray(start, end);
      return _native_typed_data.NativeUint8ClampedList._create1(source);
    }
    static _create1(arg) {
      return new Uint8ClampedArray(arg);
    }
    static _create2(arg1, arg2) {
      return new Uint8ClampedArray(arg1, arg2);
    }
    static _create3(arg1, arg2, arg3) {
      return new Uint8ClampedArray(arg1, arg2, arg3);
    }
  };
  dart.addTypeTests(_native_typed_data.NativeUint8ClampedList);
  _native_typed_data.NativeUint8ClampedList[dart.implements] = () => [typed_data.Uint8ClampedList];
  dart.setMethodSignature(_native_typed_data.NativeUint8ClampedList, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeUint8ClampedList.__proto__),
    [$_get]: dart.fnType(core.int, [core.int]),
    [$sublist]: dart.fnType(core.List$(core.int), [core.int], [core.int])
  }));
  dart.registerExtension("Uint8ClampedArray", _native_typed_data.NativeUint8ClampedList);
  dart.registerExtension("CanvasPixelArray", _native_typed_data.NativeUint8ClampedList);
  _native_typed_data.NativeUint8List = class NativeUint8List extends _native_typed_data.NativeTypedArrayOfInt {
    static new(length) {
      return _native_typed_data.NativeUint8List._create1(_native_typed_data._checkLength(length));
    }
    static fromList(elements) {
      return _native_typed_data.NativeUint8List._create1(_native_typed_data._ensureNativeList(elements));
    }
    static view(buffer, offsetInBytes, length) {
      _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
      return length == null ? _native_typed_data.NativeUint8List._create2(buffer, offsetInBytes) : _native_typed_data.NativeUint8List._create3(buffer, offsetInBytes, length);
    }
    get [$runtimeType]() {
      return dart.wrapType(typed_data.Uint8List);
    }
    get [$length]() {
      return this.length;
    }
    set [$length](value) {
      super[$length] = value;
    }
    [$_get](index) {
      _native_typed_data._checkValidIndex(index, this, this[$length]);
      return this[index];
    }
    [$sublist](start, end) {
      if (end === void 0) end = null;
      end = _native_typed_data._checkValidRange(start, end, this[$length]);
      let source = this.subarray(start, end);
      return _native_typed_data.NativeUint8List._create1(source);
    }
    static _create1(arg) {
      return new Uint8Array(arg);
    }
    static _create2(arg1, arg2) {
      return new Uint8Array(arg1, arg2);
    }
    static _create3(arg1, arg2, arg3) {
      return new Uint8Array(arg1, arg2, arg3);
    }
  };
  dart.addTypeTests(_native_typed_data.NativeUint8List);
  _native_typed_data.NativeUint8List[dart.implements] = () => [typed_data.Uint8List];
  dart.setMethodSignature(_native_typed_data.NativeUint8List, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeUint8List.__proto__),
    [$_get]: dart.fnType(core.int, [core.int]),
    [$sublist]: dart.fnType(core.List$(core.int), [core.int], [core.int])
  }));
  dart.registerExtension("Uint8Array", _native_typed_data.NativeUint8List);
  _native_typed_data.NativeFloat32x4 = class NativeFloat32x4 extends core.Object {
    static _truncate(x) {
      _native_typed_data.NativeFloat32x4._list[$_set](0, core.num._check(x));
      return _native_typed_data.NativeFloat32x4._list[$_get](0);
    }
    static fromInt32x4Bits(i) {
      _native_typed_data.NativeFloat32x4._uint32view[$_set](0, i.x);
      _native_typed_data.NativeFloat32x4._uint32view[$_set](1, i.y);
      _native_typed_data.NativeFloat32x4._uint32view[$_set](2, i.z);
      _native_typed_data.NativeFloat32x4._uint32view[$_set](3, i.w);
      return new _native_typed_data.NativeFloat32x4._truncated(_native_typed_data.NativeFloat32x4._list[$_get](0), _native_typed_data.NativeFloat32x4._list[$_get](1), _native_typed_data.NativeFloat32x4._list[$_get](2), _native_typed_data.NativeFloat32x4._list[$_get](3));
    }
    toString() {
      return "[" + dart.str(this.x) + ", " + dart.str(this.y) + ", " + dart.str(this.z) + ", " + dart.str(this.w) + "]";
    }
    ['+'](other) {
      let _x = dart.notNull(this.x) + dart.notNull(other.x);
      let _y = dart.notNull(this.y) + dart.notNull(other.y);
      let _z = dart.notNull(this.z) + dart.notNull(other.z);
      let _w = dart.notNull(this.w) + dart.notNull(other.w);
      return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
    }
    _negate() {
      return new _native_typed_data.NativeFloat32x4._truncated(-dart.notNull(this.x), -dart.notNull(this.y), -dart.notNull(this.z), -dart.notNull(this.w));
    }
    ['-'](other) {
      let _x = dart.notNull(this.x) - dart.notNull(other.x);
      let _y = dart.notNull(this.y) - dart.notNull(other.y);
      let _z = dart.notNull(this.z) - dart.notNull(other.z);
      let _w = dart.notNull(this.w) - dart.notNull(other.w);
      return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
    }
    ['*'](other) {
      let _x = dart.notNull(this.x) * dart.notNull(other.x);
      let _y = dart.notNull(this.y) * dart.notNull(other.y);
      let _z = dart.notNull(this.z) * dart.notNull(other.z);
      let _w = dart.notNull(this.w) * dart.notNull(other.w);
      return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
    }
    ['/'](other) {
      let _x = dart.notNull(this.x) / dart.notNull(other.x);
      let _y = dart.notNull(this.y) / dart.notNull(other.y);
      let _z = dart.notNull(this.z) / dart.notNull(other.z);
      let _w = dart.notNull(this.w) / dart.notNull(other.w);
      return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
    }
    lessThan(other) {
      let _cx = dart.notNull(this.x) < dart.notNull(other.x);
      let _cy = dart.notNull(this.y) < dart.notNull(other.y);
      let _cz = dart.notNull(this.z) < dart.notNull(other.z);
      let _cw = dart.notNull(this.w) < dart.notNull(other.w);
      return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
    }
    lessThanOrEqual(other) {
      let _cx = dart.notNull(this.x) <= dart.notNull(other.x);
      let _cy = dart.notNull(this.y) <= dart.notNull(other.y);
      let _cz = dart.notNull(this.z) <= dart.notNull(other.z);
      let _cw = dart.notNull(this.w) <= dart.notNull(other.w);
      return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
    }
    greaterThan(other) {
      let _cx = dart.notNull(this.x) > dart.notNull(other.x);
      let _cy = dart.notNull(this.y) > dart.notNull(other.y);
      let _cz = dart.notNull(this.z) > dart.notNull(other.z);
      let _cw = dart.notNull(this.w) > dart.notNull(other.w);
      return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
    }
    greaterThanOrEqual(other) {
      let _cx = dart.notNull(this.x) >= dart.notNull(other.x);
      let _cy = dart.notNull(this.y) >= dart.notNull(other.y);
      let _cz = dart.notNull(this.z) >= dart.notNull(other.z);
      let _cw = dart.notNull(this.w) >= dart.notNull(other.w);
      return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
    }
    equal(other) {
      let _cx = this.x == other.x;
      let _cy = this.y == other.y;
      let _cz = this.z == other.z;
      let _cw = this.w == other.w;
      return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
    }
    notEqual(other) {
      let _cx = this.x != other.x;
      let _cy = this.y != other.y;
      let _cz = this.z != other.z;
      let _cw = this.w != other.w;
      return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
    }
    scale(s) {
      let _x = dart.notNull(s) * dart.notNull(this.x);
      let _y = dart.notNull(s) * dart.notNull(this.y);
      let _z = dart.notNull(s) * dart.notNull(this.z);
      let _w = dart.notNull(s) * dart.notNull(this.w);
      return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
    }
    abs() {
      let _x = this.x[$abs]();
      let _y = this.y[$abs]();
      let _z = this.z[$abs]();
      let _w = this.w[$abs]();
      return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
    }
    clamp(lowerLimit, upperLimit) {
      let _lx = lowerLimit.x;
      let _ly = lowerLimit.y;
      let _lz = lowerLimit.z;
      let _lw = lowerLimit.w;
      let _ux = upperLimit.x;
      let _uy = upperLimit.y;
      let _uz = upperLimit.z;
      let _uw = upperLimit.w;
      let _x = this.x;
      let _y = this.y;
      let _z = this.z;
      let _w = this.w;
      _x = dart.notNull(_x) > dart.notNull(_ux) ? _ux : _x;
      _y = dart.notNull(_y) > dart.notNull(_uy) ? _uy : _y;
      _z = dart.notNull(_z) > dart.notNull(_uz) ? _uz : _z;
      _w = dart.notNull(_w) > dart.notNull(_uw) ? _uw : _w;
      _x = dart.notNull(_x) < dart.notNull(_lx) ? _lx : _x;
      _y = dart.notNull(_y) < dart.notNull(_ly) ? _ly : _y;
      _z = dart.notNull(_z) < dart.notNull(_lz) ? _lz : _z;
      _w = dart.notNull(_w) < dart.notNull(_lw) ? _lw : _w;
      return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
    }
    get signMask() {
      let view = _native_typed_data.NativeFloat32x4._uint32view;
      let mx = null, my = null, mz = null, mw = null;
      _native_typed_data.NativeFloat32x4._list[$_set](0, this.x);
      _native_typed_data.NativeFloat32x4._list[$_set](1, this.y);
      _native_typed_data.NativeFloat32x4._list[$_set](2, this.z);
      _native_typed_data.NativeFloat32x4._list[$_set](3, this.w);
      mx = (dart.notNull(view[$_get](0)) & 2147483648) >>> 31;
      my = (dart.notNull(view[$_get](1)) & 2147483648) >>> 30;
      mz = (dart.notNull(view[$_get](2)) & 2147483648) >>> 29;
      mw = (dart.notNull(view[$_get](3)) & 2147483648) >>> 28;
      return core.int._check(dart.dsend(dart.dsend(dart.dsend(mx, '|', [my]), '|', [mz]), '|', [mw]));
    }
    shuffle(mask) {
      if (dart.notNull(mask) < 0 || dart.notNull(mask) > 255) {
        dart.throw(new core.RangeError.range(mask, 0, 255, "mask"));
      }
      _native_typed_data.NativeFloat32x4._list[$_set](0, this.x);
      _native_typed_data.NativeFloat32x4._list[$_set](1, this.y);
      _native_typed_data.NativeFloat32x4._list[$_set](2, this.z);
      _native_typed_data.NativeFloat32x4._list[$_set](3, this.w);
      let _x = _native_typed_data.NativeFloat32x4._list[$_get](dart.notNull(mask) & 3);
      let _y = _native_typed_data.NativeFloat32x4._list[$_get](dart.notNull(mask) >> 2 & 3);
      let _z = _native_typed_data.NativeFloat32x4._list[$_get](dart.notNull(mask) >> 4 & 3);
      let _w = _native_typed_data.NativeFloat32x4._list[$_get](dart.notNull(mask) >> 6 & 3);
      return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
    }
    shuffleMix(other, mask) {
      if (dart.notNull(mask) < 0 || dart.notNull(mask) > 255) {
        dart.throw(new core.RangeError.range(mask, 0, 255, "mask"));
      }
      _native_typed_data.NativeFloat32x4._list[$_set](0, this.x);
      _native_typed_data.NativeFloat32x4._list[$_set](1, this.y);
      _native_typed_data.NativeFloat32x4._list[$_set](2, this.z);
      _native_typed_data.NativeFloat32x4._list[$_set](3, this.w);
      let _x = _native_typed_data.NativeFloat32x4._list[$_get](dart.notNull(mask) & 3);
      let _y = _native_typed_data.NativeFloat32x4._list[$_get](dart.notNull(mask) >> 2 & 3);
      _native_typed_data.NativeFloat32x4._list[$_set](0, other.x);
      _native_typed_data.NativeFloat32x4._list[$_set](1, other.y);
      _native_typed_data.NativeFloat32x4._list[$_set](2, other.z);
      _native_typed_data.NativeFloat32x4._list[$_set](3, other.w);
      let _z = _native_typed_data.NativeFloat32x4._list[$_get](dart.notNull(mask) >> 4 & 3);
      let _w = _native_typed_data.NativeFloat32x4._list[$_get](dart.notNull(mask) >> 6 & 3);
      return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
    }
    withX(newX) {
      return new _native_typed_data.NativeFloat32x4._truncated(core.double._check(_native_typed_data.NativeFloat32x4._truncate(newX)), this.y, this.z, this.w);
    }
    withY(newY) {
      return new _native_typed_data.NativeFloat32x4._truncated(this.x, core.double._check(_native_typed_data.NativeFloat32x4._truncate(newY)), this.z, this.w);
    }
    withZ(newZ) {
      return new _native_typed_data.NativeFloat32x4._truncated(this.x, this.y, core.double._check(_native_typed_data.NativeFloat32x4._truncate(newZ)), this.w);
    }
    withW(newW) {
      return new _native_typed_data.NativeFloat32x4._truncated(this.x, this.y, this.z, core.double._check(_native_typed_data.NativeFloat32x4._truncate(newW)));
    }
    min(other) {
      let _x = dart.notNull(this.x) < dart.notNull(other.x) ? this.x : other.x;
      let _y = dart.notNull(this.y) < dart.notNull(other.y) ? this.y : other.y;
      let _z = dart.notNull(this.z) < dart.notNull(other.z) ? this.z : other.z;
      let _w = dart.notNull(this.w) < dart.notNull(other.w) ? this.w : other.w;
      return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
    }
    max(other) {
      let _x = dart.notNull(this.x) > dart.notNull(other.x) ? this.x : other.x;
      let _y = dart.notNull(this.y) > dart.notNull(other.y) ? this.y : other.y;
      let _z = dart.notNull(this.z) > dart.notNull(other.z) ? this.z : other.z;
      let _w = dart.notNull(this.w) > dart.notNull(other.w) ? this.w : other.w;
      return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
    }
    sqrt() {
      let _x = math.sqrt(this.x);
      let _y = math.sqrt(this.y);
      let _z = math.sqrt(this.z);
      let _w = math.sqrt(this.w);
      return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
    }
    reciprocal() {
      let _x = 1.0 / dart.notNull(this.x);
      let _y = 1.0 / dart.notNull(this.y);
      let _z = 1.0 / dart.notNull(this.z);
      let _w = 1.0 / dart.notNull(this.w);
      return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
    }
    reciprocalSqrt() {
      let _x = math.sqrt(1.0 / dart.notNull(this.x));
      let _y = math.sqrt(1.0 / dart.notNull(this.y));
      let _z = math.sqrt(1.0 / dart.notNull(this.z));
      let _w = math.sqrt(1.0 / dart.notNull(this.w));
      return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
    }
  };
  (_native_typed_data.NativeFloat32x4.new = function(x, y, z, w) {
    this.x = core.double._check(_native_typed_data.NativeFloat32x4._truncate(x));
    this.y = core.double._check(_native_typed_data.NativeFloat32x4._truncate(y));
    this.z = core.double._check(_native_typed_data.NativeFloat32x4._truncate(z));
    this.w = core.double._check(_native_typed_data.NativeFloat32x4._truncate(w));
    if (!(typeof x == 'number')) dart.throw(new core.ArgumentError.new(x));
    if (!(typeof y == 'number')) dart.throw(new core.ArgumentError.new(y));
    if (!(typeof z == 'number')) dart.throw(new core.ArgumentError.new(z));
    if (!(typeof w == 'number')) dart.throw(new core.ArgumentError.new(w));
  }).prototype = _native_typed_data.NativeFloat32x4.prototype;
  (_native_typed_data.NativeFloat32x4.splat = function(v) {
    _native_typed_data.NativeFloat32x4.new.call(this, v, v, v, v);
  }).prototype = _native_typed_data.NativeFloat32x4.prototype;
  (_native_typed_data.NativeFloat32x4.zero = function() {
    _native_typed_data.NativeFloat32x4._truncated.call(this, 0.0, 0.0, 0.0, 0.0);
  }).prototype = _native_typed_data.NativeFloat32x4.prototype;
  (_native_typed_data.NativeFloat32x4.fromFloat64x2 = function(v) {
    _native_typed_data.NativeFloat32x4._truncated.call(this, core.double._check(_native_typed_data.NativeFloat32x4._truncate(v.x)), core.double._check(_native_typed_data.NativeFloat32x4._truncate(v.y)), 0.0, 0.0);
  }).prototype = _native_typed_data.NativeFloat32x4.prototype;
  (_native_typed_data.NativeFloat32x4._doubles = function(x, y, z, w) {
    this.x = core.double._check(_native_typed_data.NativeFloat32x4._truncate(x));
    this.y = core.double._check(_native_typed_data.NativeFloat32x4._truncate(y));
    this.z = core.double._check(_native_typed_data.NativeFloat32x4._truncate(z));
    this.w = core.double._check(_native_typed_data.NativeFloat32x4._truncate(w));
  }).prototype = _native_typed_data.NativeFloat32x4.prototype;
  (_native_typed_data.NativeFloat32x4._truncated = function(x, y, z, w) {
    this.x = x;
    this.y = y;
    this.z = z;
    this.w = w;
  }).prototype = _native_typed_data.NativeFloat32x4.prototype;
  dart.addTypeTests(_native_typed_data.NativeFloat32x4);
  _native_typed_data.NativeFloat32x4[dart.implements] = () => [typed_data.Float32x4];
  dart.setMethodSignature(_native_typed_data.NativeFloat32x4, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeFloat32x4.__proto__),
    '+': dart.fnType(typed_data.Float32x4, [typed_data.Float32x4]),
    _negate: dart.fnType(typed_data.Float32x4, []),
    '-': dart.fnType(typed_data.Float32x4, [typed_data.Float32x4]),
    '*': dart.fnType(typed_data.Float32x4, [typed_data.Float32x4]),
    '/': dart.fnType(typed_data.Float32x4, [typed_data.Float32x4]),
    lessThan: dart.fnType(typed_data.Int32x4, [typed_data.Float32x4]),
    lessThanOrEqual: dart.fnType(typed_data.Int32x4, [typed_data.Float32x4]),
    greaterThan: dart.fnType(typed_data.Int32x4, [typed_data.Float32x4]),
    greaterThanOrEqual: dart.fnType(typed_data.Int32x4, [typed_data.Float32x4]),
    equal: dart.fnType(typed_data.Int32x4, [typed_data.Float32x4]),
    notEqual: dart.fnType(typed_data.Int32x4, [typed_data.Float32x4]),
    scale: dart.fnType(typed_data.Float32x4, [core.double]),
    abs: dart.fnType(typed_data.Float32x4, []),
    clamp: dart.fnType(typed_data.Float32x4, [typed_data.Float32x4, typed_data.Float32x4]),
    shuffle: dart.fnType(typed_data.Float32x4, [core.int]),
    shuffleMix: dart.fnType(typed_data.Float32x4, [typed_data.Float32x4, core.int]),
    withX: dart.fnType(typed_data.Float32x4, [core.double]),
    withY: dart.fnType(typed_data.Float32x4, [core.double]),
    withZ: dart.fnType(typed_data.Float32x4, [core.double]),
    withW: dart.fnType(typed_data.Float32x4, [core.double]),
    min: dart.fnType(typed_data.Float32x4, [typed_data.Float32x4]),
    max: dart.fnType(typed_data.Float32x4, [typed_data.Float32x4]),
    sqrt: dart.fnType(typed_data.Float32x4, []),
    reciprocal: dart.fnType(typed_data.Float32x4, []),
    reciprocalSqrt: dart.fnType(typed_data.Float32x4, [])
  }));
  dart.setGetterSignature(_native_typed_data.NativeFloat32x4, () => ({
    __proto__: dart.getGetters(_native_typed_data.NativeFloat32x4.__proto__),
    signMask: core.int
  }));
  dart.setFieldSignature(_native_typed_data.NativeFloat32x4, () => ({
    __proto__: dart.getFields(_native_typed_data.NativeFloat32x4.__proto__),
    x: dart.finalFieldType(core.double),
    y: dart.finalFieldType(core.double),
    z: dart.finalFieldType(core.double),
    w: dart.finalFieldType(core.double)
  }));
  dart.defineExtensionMethods(_native_typed_data.NativeFloat32x4, ['toString']);
  dart.defineLazy(_native_typed_data.NativeFloat32x4, {
    /*_native_typed_data.NativeFloat32x4._list*/get _list() {
      return _native_typed_data.NativeFloat32List.new(4);
    },
    /*_native_typed_data.NativeFloat32x4._uint32view*/get _uint32view() {
      return _native_typed_data.NativeFloat32x4._list.buffer[$asUint32List]();
    }
  });
  _native_typed_data.NativeInt32x4 = class NativeInt32x4 extends core.Object {
    static _truncate(x) {
      _native_typed_data.NativeInt32x4._list[$_set](0, core.int._check(x));
      return _native_typed_data.NativeInt32x4._list[$_get](0);
    }
    static fromFloat32x4Bits(f) {
      let floatList = _native_typed_data.NativeFloat32x4._list;
      floatList[$_set](0, f.x);
      floatList[$_set](1, f.y);
      floatList[$_set](2, f.z);
      floatList[$_set](3, f.w);
      let view = _native_typed_data.NativeInt32List._check(floatList.buffer[$asInt32List]());
      return new _native_typed_data.NativeInt32x4._truncated(view[$_get](0), view[$_get](1), view[$_get](2), view[$_get](3));
    }
    toString() {
      return "[" + dart.str(this.x) + ", " + dart.str(this.y) + ", " + dart.str(this.z) + ", " + dart.str(this.w) + "]";
    }
    ['|'](other) {
      return new _native_typed_data.NativeInt32x4._truncated(this.x | other.x, this.y | other.y, this.z | other.z, this.w | other.w);
    }
    ['&'](other) {
      return new _native_typed_data.NativeInt32x4._truncated(this.x & other.x, this.y & other.y, this.z & other.z, this.w & other.w);
    }
    ['^'](other) {
      return new _native_typed_data.NativeInt32x4._truncated(this.x ^ other.x, this.y ^ other.y, this.z ^ other.z, this.w ^ other.w);
    }
    ['+'](other) {
      return new _native_typed_data.NativeInt32x4._truncated(this.x + other.x | 0, this.y + other.y | 0, this.z + other.z | 0, this.w + other.w | 0);
    }
    ['-'](other) {
      return new _native_typed_data.NativeInt32x4._truncated(this.x - other.x | 0, this.y - other.y | 0, this.z - other.z | 0, this.w - other.w | 0);
    }
    _negate() {
      return new _native_typed_data.NativeInt32x4._truncated(-this.x | 0, -this.y | 0, -this.z | 0, -this.w | 0);
    }
    get signMask() {
      let mx = (dart.notNull(this.x) & 2147483648) >>> 31;
      let my = (dart.notNull(this.y) & 2147483648) >>> 31;
      let mz = (dart.notNull(this.z) & 2147483648) >>> 31;
      let mw = (dart.notNull(this.w) & 2147483648) >>> 31;
      return (mx | my << 1 | mz << 2 | mw << 3) >>> 0;
    }
    shuffle(mask) {
      if (dart.notNull(mask) < 0 || dart.notNull(mask) > 255) {
        dart.throw(new core.RangeError.range(mask, 0, 255, "mask"));
      }
      _native_typed_data.NativeInt32x4._list[$_set](0, this.x);
      _native_typed_data.NativeInt32x4._list[$_set](1, this.y);
      _native_typed_data.NativeInt32x4._list[$_set](2, this.z);
      _native_typed_data.NativeInt32x4._list[$_set](3, this.w);
      let _x = _native_typed_data.NativeInt32x4._list[$_get](dart.notNull(mask) & 3);
      let _y = _native_typed_data.NativeInt32x4._list[$_get](dart.notNull(mask) >> 2 & 3);
      let _z = _native_typed_data.NativeInt32x4._list[$_get](dart.notNull(mask) >> 4 & 3);
      let _w = _native_typed_data.NativeInt32x4._list[$_get](dart.notNull(mask) >> 6 & 3);
      return new _native_typed_data.NativeInt32x4._truncated(_x, _y, _z, _w);
    }
    shuffleMix(other, mask) {
      if (dart.notNull(mask) < 0 || dart.notNull(mask) > 255) {
        dart.throw(new core.RangeError.range(mask, 0, 255, "mask"));
      }
      _native_typed_data.NativeInt32x4._list[$_set](0, this.x);
      _native_typed_data.NativeInt32x4._list[$_set](1, this.y);
      _native_typed_data.NativeInt32x4._list[$_set](2, this.z);
      _native_typed_data.NativeInt32x4._list[$_set](3, this.w);
      let _x = _native_typed_data.NativeInt32x4._list[$_get](dart.notNull(mask) & 3);
      let _y = _native_typed_data.NativeInt32x4._list[$_get](dart.notNull(mask) >> 2 & 3);
      _native_typed_data.NativeInt32x4._list[$_set](0, other.x);
      _native_typed_data.NativeInt32x4._list[$_set](1, other.y);
      _native_typed_data.NativeInt32x4._list[$_set](2, other.z);
      _native_typed_data.NativeInt32x4._list[$_set](3, other.w);
      let _z = _native_typed_data.NativeInt32x4._list[$_get](dart.notNull(mask) >> 4 & 3);
      let _w = _native_typed_data.NativeInt32x4._list[$_get](dart.notNull(mask) >> 6 & 3);
      return new _native_typed_data.NativeInt32x4._truncated(_x, _y, _z, _w);
    }
    withX(x) {
      let _x = core.int._check(_native_typed_data.NativeInt32x4._truncate(x));
      return new _native_typed_data.NativeInt32x4._truncated(_x, this.y, this.z, this.w);
    }
    withY(y) {
      let _y = core.int._check(_native_typed_data.NativeInt32x4._truncate(y));
      return new _native_typed_data.NativeInt32x4._truncated(this.x, _y, this.z, this.w);
    }
    withZ(z) {
      let _z = core.int._check(_native_typed_data.NativeInt32x4._truncate(z));
      return new _native_typed_data.NativeInt32x4._truncated(this.x, this.y, _z, this.w);
    }
    withW(w) {
      let _w = core.int._check(_native_typed_data.NativeInt32x4._truncate(w));
      return new _native_typed_data.NativeInt32x4._truncated(this.x, this.y, this.z, _w);
    }
    get flagX() {
      return this.x !== 0;
    }
    get flagY() {
      return this.y !== 0;
    }
    get flagZ() {
      return this.z !== 0;
    }
    get flagW() {
      return this.w !== 0;
    }
    withFlagX(flagX) {
      let _x = dart.test(flagX) ? -1 : 0;
      return new _native_typed_data.NativeInt32x4._truncated(_x, this.y, this.z, this.w);
    }
    withFlagY(flagY) {
      let _y = dart.test(flagY) ? -1 : 0;
      return new _native_typed_data.NativeInt32x4._truncated(this.x, _y, this.z, this.w);
    }
    withFlagZ(flagZ) {
      let _z = dart.test(flagZ) ? -1 : 0;
      return new _native_typed_data.NativeInt32x4._truncated(this.x, this.y, _z, this.w);
    }
    withFlagW(flagW) {
      let _w = dart.test(flagW) ? -1 : 0;
      return new _native_typed_data.NativeInt32x4._truncated(this.x, this.y, this.z, _w);
    }
    select(trueValue, falseValue) {
      let floatList = _native_typed_data.NativeFloat32x4._list;
      let intView = _native_typed_data.NativeFloat32x4._uint32view;
      floatList[$_set](0, trueValue.x);
      floatList[$_set](1, trueValue.y);
      floatList[$_set](2, trueValue.z);
      floatList[$_set](3, trueValue.w);
      let stx = intView[$_get](0);
      let sty = intView[$_get](1);
      let stz = intView[$_get](2);
      let stw = intView[$_get](3);
      floatList[$_set](0, falseValue.x);
      floatList[$_set](1, falseValue.y);
      floatList[$_set](2, falseValue.z);
      floatList[$_set](3, falseValue.w);
      let sfx = intView[$_get](0);
      let sfy = intView[$_get](1);
      let sfz = intView[$_get](2);
      let sfw = intView[$_get](3);
      let _x = (dart.notNull(this.x) & dart.notNull(stx) | ~dart.notNull(this.x) & dart.notNull(sfx)) >>> 0;
      let _y = (dart.notNull(this.y) & dart.notNull(sty) | ~dart.notNull(this.y) & dart.notNull(sfy)) >>> 0;
      let _z = (dart.notNull(this.z) & dart.notNull(stz) | ~dart.notNull(this.z) & dart.notNull(sfz)) >>> 0;
      let _w = (dart.notNull(this.w) & dart.notNull(stw) | ~dart.notNull(this.w) & dart.notNull(sfw)) >>> 0;
      intView[$_set](0, _x);
      intView[$_set](1, _y);
      intView[$_set](2, _z);
      intView[$_set](3, _w);
      return new _native_typed_data.NativeFloat32x4._truncated(floatList[$_get](0), floatList[$_get](1), floatList[$_get](2), floatList[$_get](3));
    }
  };
  (_native_typed_data.NativeInt32x4.new = function(x, y, z, w) {
    this.x = core.int._check(_native_typed_data.NativeInt32x4._truncate(x));
    this.y = core.int._check(_native_typed_data.NativeInt32x4._truncate(y));
    this.z = core.int._check(_native_typed_data.NativeInt32x4._truncate(z));
    this.w = core.int._check(_native_typed_data.NativeInt32x4._truncate(w));
    if (x != this.x && !core.int.is(x)) dart.throw(new core.ArgumentError.new(x));
    if (y != this.y && !core.int.is(y)) dart.throw(new core.ArgumentError.new(y));
    if (z != this.z && !core.int.is(z)) dart.throw(new core.ArgumentError.new(z));
    if (w != this.w && !core.int.is(w)) dart.throw(new core.ArgumentError.new(w));
  }).prototype = _native_typed_data.NativeInt32x4.prototype;
  (_native_typed_data.NativeInt32x4.bool = function(x, y, z, w) {
    this.x = dart.test(x) ? -1 : 0;
    this.y = dart.test(y) ? -1 : 0;
    this.z = dart.test(z) ? -1 : 0;
    this.w = dart.test(w) ? -1 : 0;
  }).prototype = _native_typed_data.NativeInt32x4.prototype;
  (_native_typed_data.NativeInt32x4._truncated = function(x, y, z, w) {
    this.x = x;
    this.y = y;
    this.z = z;
    this.w = w;
  }).prototype = _native_typed_data.NativeInt32x4.prototype;
  dart.addTypeTests(_native_typed_data.NativeInt32x4);
  _native_typed_data.NativeInt32x4[dart.implements] = () => [typed_data.Int32x4];
  dart.setMethodSignature(_native_typed_data.NativeInt32x4, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeInt32x4.__proto__),
    '|': dart.fnType(typed_data.Int32x4, [typed_data.Int32x4]),
    '&': dart.fnType(typed_data.Int32x4, [typed_data.Int32x4]),
    '^': dart.fnType(typed_data.Int32x4, [typed_data.Int32x4]),
    '+': dart.fnType(typed_data.Int32x4, [typed_data.Int32x4]),
    '-': dart.fnType(typed_data.Int32x4, [typed_data.Int32x4]),
    _negate: dart.fnType(typed_data.Int32x4, []),
    shuffle: dart.fnType(typed_data.Int32x4, [core.int]),
    shuffleMix: dart.fnType(typed_data.Int32x4, [typed_data.Int32x4, core.int]),
    withX: dart.fnType(typed_data.Int32x4, [core.int]),
    withY: dart.fnType(typed_data.Int32x4, [core.int]),
    withZ: dart.fnType(typed_data.Int32x4, [core.int]),
    withW: dart.fnType(typed_data.Int32x4, [core.int]),
    withFlagX: dart.fnType(typed_data.Int32x4, [core.bool]),
    withFlagY: dart.fnType(typed_data.Int32x4, [core.bool]),
    withFlagZ: dart.fnType(typed_data.Int32x4, [core.bool]),
    withFlagW: dart.fnType(typed_data.Int32x4, [core.bool]),
    select: dart.fnType(typed_data.Float32x4, [typed_data.Float32x4, typed_data.Float32x4])
  }));
  dart.setGetterSignature(_native_typed_data.NativeInt32x4, () => ({
    __proto__: dart.getGetters(_native_typed_data.NativeInt32x4.__proto__),
    signMask: core.int,
    flagX: core.bool,
    flagY: core.bool,
    flagZ: core.bool,
    flagW: core.bool
  }));
  dart.setFieldSignature(_native_typed_data.NativeInt32x4, () => ({
    __proto__: dart.getFields(_native_typed_data.NativeInt32x4.__proto__),
    x: dart.finalFieldType(core.int),
    y: dart.finalFieldType(core.int),
    z: dart.finalFieldType(core.int),
    w: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionMethods(_native_typed_data.NativeInt32x4, ['toString']);
  dart.defineLazy(_native_typed_data.NativeInt32x4, {
    /*_native_typed_data.NativeInt32x4._list*/get _list() {
      return _native_typed_data.NativeInt32List.new(4);
    }
  });
  _native_typed_data.NativeFloat64x2 = class NativeFloat64x2 extends core.Object {
    toString() {
      return "[" + dart.str(this.x) + ", " + dart.str(this.y) + "]";
    }
    ['+'](other) {
      return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) + dart.notNull(other.x), dart.notNull(this.y) + dart.notNull(other.y));
    }
    _negate() {
      return new _native_typed_data.NativeFloat64x2._doubles(-dart.notNull(this.x), -dart.notNull(this.y));
    }
    ['-'](other) {
      return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) - dart.notNull(other.x), dart.notNull(this.y) - dart.notNull(other.y));
    }
    ['*'](other) {
      return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) * dart.notNull(other.x), dart.notNull(this.y) * dart.notNull(other.y));
    }
    ['/'](other) {
      return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) / dart.notNull(other.x), dart.notNull(this.y) / dart.notNull(other.y));
    }
    scale(s) {
      return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) * dart.notNull(s), dart.notNull(this.y) * dart.notNull(s));
    }
    abs() {
      return new _native_typed_data.NativeFloat64x2._doubles(this.x[$abs](), this.y[$abs]());
    }
    clamp(lowerLimit, upperLimit) {
      let _lx = lowerLimit.x;
      let _ly = lowerLimit.y;
      let _ux = upperLimit.x;
      let _uy = upperLimit.y;
      let _x = this.x;
      let _y = this.y;
      _x = dart.notNull(_x) > dart.notNull(_ux) ? _ux : _x;
      _y = dart.notNull(_y) > dart.notNull(_uy) ? _uy : _y;
      _x = dart.notNull(_x) < dart.notNull(_lx) ? _lx : _x;
      _y = dart.notNull(_y) < dart.notNull(_ly) ? _ly : _y;
      return new _native_typed_data.NativeFloat64x2._doubles(_x, _y);
    }
    get signMask() {
      let view = _native_typed_data.NativeFloat64x2._uint32View;
      _native_typed_data.NativeFloat64x2._list[$_set](0, this.x);
      _native_typed_data.NativeFloat64x2._list[$_set](1, this.y);
      let mx = (dart.notNull(view[$_get](1)) & 2147483648) >>> 31;
      let my = (dart.notNull(view[$_get](3)) & 2147483648) >>> 31;
      return (mx | my << 1) >>> 0;
    }
    withX(x) {
      if (!(typeof x == 'number')) dart.throw(new core.ArgumentError.new(x));
      return new _native_typed_data.NativeFloat64x2._doubles(x, this.y);
    }
    withY(y) {
      if (!(typeof y == 'number')) dart.throw(new core.ArgumentError.new(y));
      return new _native_typed_data.NativeFloat64x2._doubles(this.x, y);
    }
    min(other) {
      return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) < dart.notNull(other.x) ? this.x : other.x, dart.notNull(this.y) < dart.notNull(other.y) ? this.y : other.y);
    }
    max(other) {
      return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) > dart.notNull(other.x) ? this.x : other.x, dart.notNull(this.y) > dart.notNull(other.y) ? this.y : other.y);
    }
    sqrt() {
      return new _native_typed_data.NativeFloat64x2._doubles(math.sqrt(this.x), math.sqrt(this.y));
    }
  };
  (_native_typed_data.NativeFloat64x2.new = function(x, y) {
    this.x = x;
    this.y = y;
    if (!(typeof this.x == 'number')) dart.throw(new core.ArgumentError.new(this.x));
    if (!(typeof this.y == 'number')) dart.throw(new core.ArgumentError.new(this.y));
  }).prototype = _native_typed_data.NativeFloat64x2.prototype;
  (_native_typed_data.NativeFloat64x2.splat = function(v) {
    _native_typed_data.NativeFloat64x2.new.call(this, v, v);
  }).prototype = _native_typed_data.NativeFloat64x2.prototype;
  (_native_typed_data.NativeFloat64x2.zero = function() {
    _native_typed_data.NativeFloat64x2.splat.call(this, 0.0);
  }).prototype = _native_typed_data.NativeFloat64x2.prototype;
  (_native_typed_data.NativeFloat64x2.fromFloat32x4 = function(v) {
    _native_typed_data.NativeFloat64x2.new.call(this, v.x, v.y);
  }).prototype = _native_typed_data.NativeFloat64x2.prototype;
  (_native_typed_data.NativeFloat64x2._doubles = function(x, y) {
    this.x = x;
    this.y = y;
  }).prototype = _native_typed_data.NativeFloat64x2.prototype;
  dart.addTypeTests(_native_typed_data.NativeFloat64x2);
  _native_typed_data.NativeFloat64x2[dart.implements] = () => [typed_data.Float64x2];
  dart.setMethodSignature(_native_typed_data.NativeFloat64x2, () => ({
    __proto__: dart.getMethods(_native_typed_data.NativeFloat64x2.__proto__),
    '+': dart.fnType(typed_data.Float64x2, [typed_data.Float64x2]),
    _negate: dart.fnType(typed_data.Float64x2, []),
    '-': dart.fnType(typed_data.Float64x2, [typed_data.Float64x2]),
    '*': dart.fnType(typed_data.Float64x2, [typed_data.Float64x2]),
    '/': dart.fnType(typed_data.Float64x2, [typed_data.Float64x2]),
    scale: dart.fnType(typed_data.Float64x2, [core.double]),
    abs: dart.fnType(typed_data.Float64x2, []),
    clamp: dart.fnType(typed_data.Float64x2, [typed_data.Float64x2, typed_data.Float64x2]),
    withX: dart.fnType(typed_data.Float64x2, [core.double]),
    withY: dart.fnType(typed_data.Float64x2, [core.double]),
    min: dart.fnType(typed_data.Float64x2, [typed_data.Float64x2]),
    max: dart.fnType(typed_data.Float64x2, [typed_data.Float64x2]),
    sqrt: dart.fnType(typed_data.Float64x2, [])
  }));
  dart.setGetterSignature(_native_typed_data.NativeFloat64x2, () => ({
    __proto__: dart.getGetters(_native_typed_data.NativeFloat64x2.__proto__),
    signMask: core.int
  }));
  dart.setFieldSignature(_native_typed_data.NativeFloat64x2, () => ({
    __proto__: dart.getFields(_native_typed_data.NativeFloat64x2.__proto__),
    x: dart.finalFieldType(core.double),
    y: dart.finalFieldType(core.double)
  }));
  dart.defineExtensionMethods(_native_typed_data.NativeFloat64x2, ['toString']);
  dart.defineLazy(_native_typed_data.NativeFloat64x2, {
    /*_native_typed_data.NativeFloat64x2._list*/get _list() {
      return _native_typed_data.NativeFloat64List.new(2);
    },
    set _list(_) {},
    /*_native_typed_data.NativeFloat64x2._uint32View*/get _uint32View() {
      return _native_typed_data.NativeUint32List._check(_native_typed_data.NativeFloat64x2._list.buffer[$asUint32List]());
    },
    set _uint32View(_) {}
  });
  _native_typed_data._isInvalidArrayIndex = function(index) {
    return index >>> 0 !== index;
  };
  _native_typed_data._checkValidIndex = function(index, list, length) {
    if (dart.test(_native_typed_data._isInvalidArrayIndex(index)) || index >= dart.notNull(length)) {
      dart.throw(_js_helper.diagnoseIndexError(list, index));
    }
  };
  _native_typed_data._checkValidRange = function(start, end, length) {
    if (dart.test(_native_typed_data._isInvalidArrayIndex(start)) || (end == null ? dart.notNull(start) > dart.notNull(length) : dart.test(_native_typed_data._isInvalidArrayIndex(end)) || dart.notNull(start) > dart.notNull(end) || dart.notNull(end) > dart.notNull(length))) {
      dart.throw(_js_helper.diagnoseRangeError(start, end, length));
    }
    if (end == null) return length;
    return end;
  };
  const _thenNoZoneRegistration = Symbol('_thenNoZoneRegistration');
  const _completeWithValue = Symbol('_completeWithValue');
  const _asyncComplete = Symbol('_asyncComplete');
  async.async = function(T, initGenerator) {
    let iter = null;
    let onValue = null;
    let onError = null;
    function onAwait(value) {
      let f = null;
      if (async._Future.is(value)) {
        f = value;
      } else if (async.Future.is(value)) {
        f = new async._Future.new();
        async._Future._chainForeignFuture(value, f);
      } else {
        f = new async._Future.value(value);
      }
      f = f[_thenNoZoneRegistration](core.Object, onValue, onError);
      return f;
    }
    onValue = value => {
      let iteratorResult = iter.next(value);
      value = iteratorResult.value;
      return iteratorResult.done ? value : onAwait(value);
    };
    onError = (value, stackTrace) => {
      let iteratorResult = iter.throw(dart.createErrorWithStack(value, stackTrace));
      value = iteratorResult.value;
      return iteratorResult.done ? value : onAwait(value);
    };
    let zone = async.Zone.current;
    if (!(zone === async._rootZone)) {
      onValue = zone.registerUnaryCallback(core.Object, core.Object, onValue);
      onError = zone.registerBinaryCallback(core.Object, core.Object, core.StackTrace, onError);
    }
    let asyncFuture = new (async._Future$(T)).new();
    let isRunningAsEvent = false;
    function runBody() {
      try {
        iter = initGenerator()[Symbol.iterator]();
        let iteratorValue = iter.next(null);
        let value = iteratorValue.value;
        if (iteratorValue.done) {
          if (async.Future.is(value)) {
            if (async._Future.is(value)) {
              async._Future._chainCoreFuture(value, asyncFuture);
            } else {
              async._Future._chainForeignFuture(value, asyncFuture);
            }
          } else if (isRunningAsEvent) {
            asyncFuture[_completeWithValue](value);
          } else {
            asyncFuture[_asyncComplete](value);
          }
        } else {
          async._Future._chainCoreFuture(onAwait(value), asyncFuture);
        }
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        if (isRunningAsEvent) {
          async._completeWithErrorCallback(asyncFuture, e, s);
        } else {
          async._asyncCompleteWithErrorCallback(asyncFuture, e, s);
        }
      }
    }
    if (dart.test(dart.startAsyncSynchronously)) {
      runBody();
      isRunningAsEvent = true;
    } else {
      isRunningAsEvent = true;
      async.scheduleMicrotask(runBody);
    }
    return asyncFuture;
  };
  const _handleErrorCallback = Symbol('_handleErrorCallback');
  const _runBodyCallback = Symbol('_runBodyCallback');
  const _fatal = Symbol('_fatal');
  const _is__AsyncStarImpl_default = Symbol('_is__AsyncStarImpl_default');
  async._AsyncStarImpl$ = dart.generic(T => {
    let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
    let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
    let _AsyncStarImplOfT = () => (_AsyncStarImplOfT = dart.constFn(async._AsyncStarImpl$(T)))();
    let _AsyncStarImplOfTToObject = () => (_AsyncStarImplOfTToObject = dart.constFn(dart.fnType(core.Object, [_AsyncStarImplOfT()])))();
    class _AsyncStarImpl extends core.Object {
      get stream() {
        return this.controller.stream;
      }
      get handleError() {
        if (this[_handleErrorCallback] == null) {
          this[_handleErrorCallback] = dart.fn((error, stackTrace) => {
            try {
              this.jsIterator.throw(dart.createErrorWithStack(error, stackTrace));
            } catch (e$) {
              let e = dart.getThrown(e$);
              let newStack = dart.stackTrace(e$);
              this.addError(e, newStack);
            }
          }, ObjectAndStackTraceToNull());
          let zone = async.Zone.current;
          if (!(zone === async.Zone.root)) {
            this[_handleErrorCallback] = zone.bindBinaryCallback(core.Null, core.Object, core.StackTrace, this[_handleErrorCallback]);
          }
        }
        return this[_handleErrorCallback];
      }
      scheduleGenerator() {
        if (this.isScheduled || dart.test(this.controller.isPaused) || this.isSuspendedAtYieldStar || this.isSuspendedAtAwait) {
          return;
        }
        this.isScheduled = true;
        let zone = async.Zone.current;
        if (this[_runBodyCallback] == null) {
          this[_runBodyCallback] = this.runBody.bind(this);
          if (!(zone === async.Zone.root)) {
            let registered = zone.registerUnaryCallback(dart.void, core.Object, this[_runBodyCallback]);
            this[_runBodyCallback] = dart.fn(arg => {
              if (arg === void 0) arg = null;
              return zone.runUnaryGuarded(core.Object, registered, arg);
            }, __Tovoid());
          }
        }
        zone.scheduleMicrotask(this[_runBodyCallback]);
      }
      runBody(awaitValue) {
        this.isScheduled = false;
        this.isSuspendedAtYield = false;
        this.isSuspendedAtAwait = false;
        let iterResult = null;
        try {
          iterResult = this.jsIterator.next(awaitValue);
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          this.addError(e, s);
          return null;
        }
        if (iterResult.done) {
          this.close();
          return null;
        }
        if (this.isSuspendedAtYield || this.isSuspendedAtYieldStar) return null;
        this.isSuspendedAtAwait = true;
        let value = iterResult.value;
        let f = null;
        if (async._Future.is(value)) {
          f = value;
        } else if (async.Future.is(value)) {
          f = new async._Future.new();
          async._Future._chainForeignFuture(value, f);
        } else {
          f = new async._Future.value(value);
        }
        f[_thenNoZoneRegistration](dart.void, this[_runBodyCallback], this.handleError);
      }
      add(event) {
        T._check(event);
        if (!this.onListenReceived) this[_fatal]("yield before stream is listened to");
        if (this.isSuspendedAtYield) this[_fatal]("unexpected yield");
        if (!dart.test(this.controller.hasListener)) {
          return true;
        }
        this.controller.add(event);
        this.scheduleGenerator();
        this.isSuspendedAtYield = true;
        return false;
      }
      addStream(stream) {
        StreamOfT()._check(stream);
        if (!this.onListenReceived) this[_fatal]("yield* before stream is listened to");
        if (!dart.test(this.controller.hasListener)) return true;
        this.isSuspendedAtYieldStar = true;
        let whenDoneAdding = this.controller.addStream(stream, {cancelOnError: false});
        FutureOfNull()._check(whenDoneAdding.then(core.Null, dart.fn(_ => {
          this.isSuspendedAtYieldStar = false;
          this.scheduleGenerator();
          if (!this.isScheduled) this.isSuspendedAtYield = true;
        }, dynamicToNull()), {onError: this.handleError}));
        return false;
      }
      addError(error, stackTrace) {
        if (this.cancellationCompleter != null && !dart.test(this.cancellationCompleter.isCompleted)) {
          this.cancellationCompleter.completeError(error, stackTrace);
        } else if (dart.test(this.controller.hasListener)) {
          this.controller.addError(error, stackTrace);
        }
        this.close();
      }
      close() {
        if (this.cancellationCompleter != null && !dart.test(this.cancellationCompleter.isCompleted)) {
          this.cancellationCompleter.complete();
        }
        this.controller.close();
      }
      onListen() {
        if (!!this.onListenReceived) dart.assertFailed();
        this.onListenReceived = true;
        this.scheduleGenerator();
      }
      onResume() {
        if (this.isSuspendedAtYield) {
          this.scheduleGenerator();
        }
      }
      onCancel() {
        if (dart.test(this.controller.isClosed)) {
          return null;
        }
        if (this.cancellationCompleter == null) {
          this.cancellationCompleter = async.Completer.new();
          if (this.isSuspendedAtYield) {
            this.scheduleGenerator();
          }
        }
        return this.cancellationCompleter.future;
      }
      [_fatal](message) {
        return dart.throw(new core.StateError.new(message));
      }
    }
    (_AsyncStarImpl.new = function(initGenerator) {
      this.controller = null;
      this.isSuspendedAtYieldStar = false;
      this.onListenReceived = false;
      this.isScheduled = false;
      this.isSuspendedAtYield = false;
      this.isSuspendedAtAwait = false;
      this.cancellationCompleter = null;
      this.jsIterator = null;
      this[_handleErrorCallback] = null;
      this[_runBodyCallback] = null;
      this.initGenerator = initGenerator;
      this.controller = StreamControllerOfT().new({onListen: this.onListen.bind(this), onResume: this.onResume.bind(this), onCancel: this.onCancel.bind(this)});
      this.jsIterator = this.initGenerator(this)[Symbol.iterator]();
    }).prototype = _AsyncStarImpl.prototype;
    dart.addTypeTests(_AsyncStarImpl);
    _AsyncStarImpl.prototype[_is__AsyncStarImpl_default] = true;
    dart.setMethodSignature(_AsyncStarImpl, () => ({
      __proto__: dart.getMethods(_AsyncStarImpl.__proto__),
      scheduleGenerator: dart.fnType(dart.void, []),
      runBody: dart.fnType(dart.void, [dart.dynamic]),
      add: dart.fnType(core.bool, [core.Object]),
      addStream: dart.fnType(core.bool, [core.Object]),
      addError: dart.fnType(dart.void, [core.Object, core.StackTrace]),
      close: dart.fnType(dart.void, []),
      onListen: dart.fnType(dart.dynamic, []),
      onResume: dart.fnType(dart.dynamic, []),
      onCancel: dart.fnType(dart.dynamic, []),
      [_fatal]: dart.fnType(dart.dynamic, [core.String])
    }));
    dart.setGetterSignature(_AsyncStarImpl, () => ({
      __proto__: dart.getGetters(_AsyncStarImpl.__proto__),
      stream: async.Stream$(T),
      handleError: dart.fnType(core.Null, [core.Object, core.StackTrace])
    }));
    dart.setFieldSignature(_AsyncStarImpl, () => ({
      __proto__: dart.getFields(_AsyncStarImpl.__proto__),
      controller: dart.fieldType(StreamControllerOfT()),
      initGenerator: dart.fieldType(_AsyncStarImplOfTToObject()),
      isSuspendedAtYieldStar: dart.fieldType(core.bool),
      onListenReceived: dart.fieldType(core.bool),
      isScheduled: dart.fieldType(core.bool),
      isSuspendedAtYield: dart.fieldType(core.bool),
      isSuspendedAtAwait: dart.fieldType(core.bool),
      cancellationCompleter: dart.fieldType(async.Completer),
      jsIterator: dart.fieldType(core.Object),
      [_handleErrorCallback]: dart.fieldType(ObjectAndStackTraceToNull()),
      [_runBodyCallback]: dart.fieldType(__Tovoid())
    }));
    return _AsyncStarImpl;
  });
  async._AsyncStarImpl = async._AsyncStarImpl$();
  dart.addTypeTests(async._AsyncStarImpl, _is__AsyncStarImpl_default);
  async._invokeErrorHandler = function(errorHandler, error, stackTrace) {
    if (NullAndNullTodynamic().is(errorHandler)) {
      return dart.dcall(errorHandler, [error, stackTrace]);
    } else {
      let unaryErrorHandler = dynamicTodynamic()._check(errorHandler);
      return unaryErrorHandler(error);
    }
  };
  const _controller = Symbol('_controller');
  const _subscribe = Symbol('_subscribe');
  const _createSubscription = Symbol('_createSubscription');
  const _onListen = Symbol('_onListen');
  const _is__StreamImpl_default = Symbol('_is__StreamImpl_default');
  async._StreamImpl$ = dart.generic(T => {
    let _BufferingStreamSubscriptionOfT = () => (_BufferingStreamSubscriptionOfT = dart.constFn(async._BufferingStreamSubscription$(T)))();
    class _StreamImpl extends async.Stream$(T) {
      listen(onData, opts) {
        let onError = opts && 'onError' in opts ? opts.onError : null;
        let onDone = opts && 'onDone' in opts ? opts.onDone : null;
        let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
        cancelOnError = true === cancelOnError;
        let subscription = this[_createSubscription](onData, onError, onDone, cancelOnError);
        this[_onListen](subscription);
        return subscription;
      }
      [_createSubscription](onData, onError, onDone, cancelOnError) {
        return new (_BufferingStreamSubscriptionOfT()).new(onData, onError, onDone, cancelOnError);
      }
      [_onListen](subscription) {}
    }
    (_StreamImpl.new = function() {
      _StreamImpl.__proto__.new.call(this);
    }).prototype = _StreamImpl.prototype;
    dart.addTypeTests(_StreamImpl);
    _StreamImpl.prototype[_is__StreamImpl_default] = true;
    dart.setMethodSignature(_StreamImpl, () => ({
      __proto__: dart.getMethods(_StreamImpl.__proto__),
      listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
      [_createSubscription]: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T]), core.Function, dart.fnType(dart.void, []), core.bool]),
      [_onListen]: dart.fnType(dart.void, [async.StreamSubscription])
    }));
    return _StreamImpl;
  });
  async._StreamImpl = async._StreamImpl$();
  dart.addTypeTests(async._StreamImpl, _is__StreamImpl_default);
  const _is__ControllerStream_default = Symbol('_is__ControllerStream_default');
  async._ControllerStream$ = dart.generic(T => {
    let _StreamControllerLifecycleOfT = () => (_StreamControllerLifecycleOfT = dart.constFn(async._StreamControllerLifecycle$(T)))();
    class _ControllerStream extends async._StreamImpl$(T) {
      [_createSubscription](onData, onError, onDone, cancelOnError) {
        return this[_controller][_subscribe](onData, onError, onDone, cancelOnError);
      }
      get hashCode() {
        return (dart.notNull(dart.hashCode(this[_controller])) ^ 892482866) >>> 0;
      }
      _equals(other) {
        if (this === other) return true;
        return async._ControllerStream.is(other) && other[_controller] == this[_controller];
      }
    }
    (_ControllerStream.new = function(controller) {
      this[_controller] = controller;
      _ControllerStream.__proto__.new.call(this);
    }).prototype = _ControllerStream.prototype;
    dart.addTypeTests(_ControllerStream);
    _ControllerStream.prototype[_is__ControllerStream_default] = true;
    dart.setMethodSignature(_ControllerStream, () => ({
      __proto__: dart.getMethods(_ControllerStream.__proto__),
      _equals: dart.fnType(core.bool, [core.Object]),
      [$_equals]: dart.fnType(core.bool, [core.Object])
    }));
    dart.setGetterSignature(_ControllerStream, () => ({
      __proto__: dart.getGetters(_ControllerStream.__proto__),
      hashCode: core.int,
      [$hashCode]: core.int
    }));
    dart.setFieldSignature(_ControllerStream, () => ({
      __proto__: dart.getFields(_ControllerStream.__proto__),
      [_controller]: dart.fieldType(_StreamControllerLifecycleOfT())
    }));
    dart.defineExtensionMethods(_ControllerStream, ['_equals']);
    dart.defineExtensionAccessors(_ControllerStream, ['hashCode']);
    return _ControllerStream;
  });
  async._ControllerStream = async._ControllerStream$();
  dart.addTypeTests(async._ControllerStream, _is__ControllerStream_default);
  const _is__BroadcastStream_default = Symbol('_is__BroadcastStream_default');
  async._BroadcastStream$ = dart.generic(T => {
    class _BroadcastStream extends async._ControllerStream$(T) {
      get isBroadcast() {
        return true;
      }
    }
    (_BroadcastStream.new = function(controller) {
      _BroadcastStream.__proto__.new.call(this, controller);
    }).prototype = _BroadcastStream.prototype;
    dart.addTypeTests(_BroadcastStream);
    _BroadcastStream.prototype[_is__BroadcastStream_default] = true;
    return _BroadcastStream;
  });
  async._BroadcastStream = async._BroadcastStream$();
  dart.addTypeTests(async._BroadcastStream, _is__BroadcastStream_default);
  const _eventState = Symbol('_eventState');
  const _next$ = Symbol('_next');
  const _previous$ = Symbol('_previous');
  const _expectsEvent = Symbol('_expectsEvent');
  const _toggleEventId = Symbol('_toggleEventId');
  const _isFiring = Symbol('_isFiring');
  const _setRemoveAfterFiring = Symbol('_setRemoveAfterFiring');
  const _removeAfterFiring = Symbol('_removeAfterFiring');
  const _onPause = Symbol('_onPause');
  const _onResume = Symbol('_onResume');
  const _recordCancel = Symbol('_recordCancel');
  const _onCancel = Symbol('_onCancel');
  const _recordPause = Symbol('_recordPause');
  const _recordResume = Symbol('_recordResume');
  const _state = Symbol('_state');
  const _onData$ = Symbol('_onData');
  const _onError = Symbol('_onError');
  const _onDone = Symbol('_onDone');
  const _zone$ = Symbol('_zone');
  const _cancelFuture = Symbol('_cancelFuture');
  const _pending = Symbol('_pending');
  const _setPendingEvents = Symbol('_setPendingEvents');
  const _isCanceled = Symbol('_isCanceled');
  const _isPaused = Symbol('_isPaused');
  const _isInputPaused = Symbol('_isInputPaused');
  const _inCallback = Symbol('_inCallback');
  const _guardCallback = Symbol('_guardCallback');
  const _decrementPauseCount = Symbol('_decrementPauseCount');
  const _hasPending = Symbol('_hasPending');
  const _mayResumeInput = Symbol('_mayResumeInput');
  const _cancel = Symbol('_cancel');
  const _isClosed = Symbol('_isClosed');
  const _waitsForCancel = Symbol('_waitsForCancel');
  const _canFire = Symbol('_canFire');
  const _cancelOnError = Symbol('_cancelOnError');
  const _sendData = Symbol('_sendData');
  const _addPending = Symbol('_addPending');
  const _sendError = Symbol('_sendError');
  const _sendDone = Symbol('_sendDone');
  let const$9;
  const _close = Symbol('_close');
  const _checkState = Symbol('_checkState');
  const _is__BufferingStreamSubscription_default = Symbol('_is__BufferingStreamSubscription_default');
  async._BufferingStreamSubscription$ = dart.generic(T => {
    let _PendingEventsOfT = () => (_PendingEventsOfT = dart.constFn(async._PendingEvents$(T)))();
    let _DelayedDataOfT = () => (_DelayedDataOfT = dart.constFn(async._DelayedData$(T)))();
    let _StreamImplEventsOfT = () => (_StreamImplEventsOfT = dart.constFn(async._StreamImplEvents$(T)))();
    let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
    let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
    let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
    let TTovoid = () => (TTovoid = dart.constFn(dart.fnType(dart.void, [T])))();
    class _BufferingStreamSubscription extends core.Object {
      [_setPendingEvents](pendingEvents) {
        _PendingEventsOfT()._check(pendingEvents);
        if (!(this[_pending] == null)) dart.assertFailed();
        if (pendingEvents == null) return;
        this[_pending] = pendingEvents;
        if (!dart.test(pendingEvents.isEmpty)) {
          this[_state] = (dart.notNull(this[_state]) | 64) >>> 0;
          this[_pending].schedule(this);
        }
      }
      onData(handleData) {
        let t = handleData;
        t == null ? handleData = dart.fn(async._nullDataHandler, ObjectTovoid()) : t;
        this[_onData$] = this[_zone$].registerUnaryCallback(dart.dynamic, T, handleData);
      }
      onError(handleError) {
        let t = handleError;
        t == null ? handleError = dart.fn(async._nullErrorHandler, Object__Tovoid()) : t;
        if (ObjectAndStackTraceTovoid().is(handleError)) {
          this[_onError] = this[_zone$].registerBinaryCallback(dart.dynamic, core.Object, core.StackTrace, handleError);
        } else if (ObjectTovoid().is(handleError)) {
          this[_onError] = this[_zone$].registerUnaryCallback(dart.dynamic, core.Object, handleError);
        } else {
          dart.throw(new core.ArgumentError.new("handleError callback must take either an Object " + "(the error), or both an Object (the error) and a StackTrace."));
        }
      }
      onDone(handleDone) {
        let t = handleDone;
        t == null ? handleDone = dart.fn(async._nullDoneHandler, VoidTovoid()) : t;
        this[_onDone] = this[_zone$].registerCallback(dart.void, handleDone);
      }
      pause(resumeSignal) {
        if (resumeSignal === void 0) resumeSignal = null;
        if (dart.test(this[_isCanceled])) return;
        let wasPaused = this[_isPaused];
        let wasInputPaused = this[_isInputPaused];
        this[_state] = (dart.notNull(this[_state]) + 128 | 4) >>> 0;
        if (resumeSignal != null) resumeSignal.whenComplete(dart.bind(this, 'resume'));
        if (!dart.test(wasPaused) && this[_pending] != null) this[_pending].cancelSchedule();
        if (!dart.test(wasInputPaused) && !dart.test(this[_inCallback])) this[_guardCallback](dart.bind(this, _onPause));
      }
      resume() {
        if (dart.test(this[_isCanceled])) return;
        if (dart.test(this[_isPaused])) {
          this[_decrementPauseCount]();
          if (!dart.test(this[_isPaused])) {
            if (dart.test(this[_hasPending]) && !dart.test(this[_pending].isEmpty)) {
              this[_pending].schedule(this);
            } else {
              if (!dart.test(this[_mayResumeInput])) dart.assertFailed();
              this[_state] = (dart.notNull(this[_state]) & ~4) >>> 0;
              if (!dart.test(this[_inCallback])) this[_guardCallback](dart.bind(this, _onResume));
            }
          }
        }
      }
      cancel() {
        this[_state] = (dart.notNull(this[_state]) & ~16) >>> 0;
        if (!dart.test(this[_isCanceled])) {
          this[_cancel]();
        }
        let l = this[_cancelFuture];
        return l != null ? l : async.Future._nullFuture;
      }
      asFuture(E, futureValue) {
        if (futureValue === void 0) futureValue = null;
        let result = new (async._Future$(E)).new();
        this[_onDone] = dart.fn(() => {
          result[_complete](futureValue);
        }, VoidToNull());
        this[_onError] = dart.fn((error, stackTrace) => {
          let cancelFuture = this.cancel();
          if (!(cancelFuture == async.Future._nullFuture)) {
            cancelFuture.whenComplete(dart.fn(() => {
              result[_completeError](error, stackTrace);
            }, VoidToNull()));
          } else {
            result[_completeError](error, stackTrace);
          }
        }, dynamicAndStackTraceToNull());
        return result;
      }
      get [_isInputPaused]() {
        return (dart.notNull(this[_state]) & 4) !== 0;
      }
      get [_isClosed]() {
        return (dart.notNull(this[_state]) & 2) !== 0;
      }
      get [_isCanceled]() {
        return (dart.notNull(this[_state]) & 8) !== 0;
      }
      get [_waitsForCancel]() {
        return (dart.notNull(this[_state]) & 16) !== 0;
      }
      get [_inCallback]() {
        return (dart.notNull(this[_state]) & 32) !== 0;
      }
      get [_hasPending]() {
        return (dart.notNull(this[_state]) & 64) !== 0;
      }
      get [_isPaused]() {
        return dart.notNull(this[_state]) >= 128;
      }
      get [_canFire]() {
        return dart.notNull(this[_state]) < 32;
      }
      get [_mayResumeInput]() {
        return !dart.test(this[_isPaused]) && (this[_pending] == null || dart.test(this[_pending].isEmpty));
      }
      get [_cancelOnError]() {
        return (dart.notNull(this[_state]) & 1) !== 0;
      }
      get isPaused() {
        return this[_isPaused];
      }
      [_cancel]() {
        this[_state] = (dart.notNull(this[_state]) | 8) >>> 0;
        if (dart.test(this[_hasPending])) {
          this[_pending].cancelSchedule();
        }
        if (!dart.test(this[_inCallback])) this[_pending] = null;
        this[_cancelFuture] = this[_onCancel]();
      }
      [_decrementPauseCount]() {
        if (!dart.test(this[_isPaused])) dart.assertFailed();
        this[_state] = dart.notNull(this[_state]) - 128;
      }
      [_add](data) {
        T._check(data);
        if (!!dart.test(this[_isClosed])) dart.assertFailed();
        if (dart.test(this[_isCanceled])) return;
        if (dart.test(this[_canFire])) {
          this[_sendData](data);
        } else {
          this[_addPending](new (_DelayedDataOfT()).new(data));
        }
      }
      [_addError](error, stackTrace) {
        if (dart.test(this[_isCanceled])) return;
        if (dart.test(this[_canFire])) {
          this[_sendError](error, stackTrace);
        } else {
          this[_addPending](new async._DelayedError.new(error, stackTrace));
        }
      }
      [_close]() {
        if (!!dart.test(this[_isClosed])) dart.assertFailed();
        if (dart.test(this[_isCanceled])) return;
        this[_state] = (dart.notNull(this[_state]) | 2) >>> 0;
        if (dart.test(this[_canFire])) {
          this[_sendDone]();
        } else {
          this[_addPending](const$9 || (const$9 = dart.const(new async._DelayedDone.new())));
        }
      }
      [_onPause]() {
        if (!dart.test(this[_isInputPaused])) dart.assertFailed();
      }
      [_onResume]() {
        if (!!dart.test(this[_isInputPaused])) dart.assertFailed();
      }
      [_onCancel]() {
        if (!dart.test(this[_isCanceled])) dart.assertFailed();
        return null;
      }
      [_addPending](event) {
        let pending = _StreamImplEventsOfT()._check(this[_pending]);
        if (this[_pending] == null) {
          pending = this[_pending] = new (_StreamImplEventsOfT()).new();
        }
        pending.add(event);
        if (!dart.test(this[_hasPending])) {
          this[_state] = (dart.notNull(this[_state]) | 64) >>> 0;
          if (!dart.test(this[_isPaused])) {
            this[_pending].schedule(this);
          }
        }
      }
      [_sendData](data) {
        T._check(data);
        if (!!dart.test(this[_isCanceled])) dart.assertFailed();
        if (!!dart.test(this[_isPaused])) dart.assertFailed();
        if (!!dart.test(this[_inCallback])) dart.assertFailed();
        let wasInputPaused = this[_isInputPaused];
        this[_state] = (dart.notNull(this[_state]) | 32) >>> 0;
        this[_zone$].runUnaryGuarded(T, this[_onData$], data);
        this[_state] = (dart.notNull(this[_state]) & ~32) >>> 0;
        this[_checkState](wasInputPaused);
      }
      [_sendError](error, stackTrace) {
        if (!!dart.test(this[_isCanceled])) dart.assertFailed();
        if (!!dart.test(this[_isPaused])) dart.assertFailed();
        if (!!dart.test(this[_inCallback])) dart.assertFailed();
        let wasInputPaused = this[_isInputPaused];
        const sendError = (function() {
          if (dart.test(this[_isCanceled]) && !dart.test(this[_waitsForCancel])) return;
          this[_state] = (dart.notNull(this[_state]) | 32) >>> 0;
          let onError = this[_onError];
          if (ObjectAndStackTraceTovoid().is(onError)) {
            this[_zone$].runBinaryGuarded(core.Object, core.StackTrace, onError, error, stackTrace);
          } else {
            if (!ObjectTovoid().is(this[_onError])) dart.assertFailed();
            this[_zone$].runUnaryGuarded(core.Object, ObjectTovoid()._check(this[_onError]), error);
          }
          this[_state] = (dart.notNull(this[_state]) & ~32) >>> 0;
        }).bind(this);
        dart.fn(sendError, VoidTovoid());
        if (dart.test(this[_cancelOnError])) {
          this[_state] = (dart.notNull(this[_state]) | 16) >>> 0;
          this[_cancel]();
          if (this[_cancelFuture] != null && !(this[_cancelFuture] == async.Future._nullFuture)) {
            this[_cancelFuture].whenComplete(sendError);
          } else {
            sendError();
          }
        } else {
          sendError();
          this[_checkState](wasInputPaused);
        }
      }
      [_sendDone]() {
        if (!!dart.test(this[_isCanceled])) dart.assertFailed();
        if (!!dart.test(this[_isPaused])) dart.assertFailed();
        if (!!dart.test(this[_inCallback])) dart.assertFailed();
        const sendDone = (function() {
          if (!dart.test(this[_waitsForCancel])) return;
          this[_state] = (dart.notNull(this[_state]) | 8 | 2 | 32) >>> 0;
          this[_zone$].runGuarded(this[_onDone]);
          this[_state] = (dart.notNull(this[_state]) & ~32) >>> 0;
        }).bind(this);
        dart.fn(sendDone, VoidTovoid());
        this[_cancel]();
        this[_state] = (dart.notNull(this[_state]) | 16) >>> 0;
        if (this[_cancelFuture] != null && !(this[_cancelFuture] == async.Future._nullFuture)) {
          this[_cancelFuture].whenComplete(sendDone);
        } else {
          sendDone();
        }
      }
      [_guardCallback](callback) {
        if (!!dart.test(this[_inCallback])) dart.assertFailed();
        let wasInputPaused = this[_isInputPaused];
        this[_state] = (dart.notNull(this[_state]) | 32) >>> 0;
        callback();
        this[_state] = (dart.notNull(this[_state]) & ~32) >>> 0;
        this[_checkState](wasInputPaused);
      }
      [_checkState](wasInputPaused) {
        if (!!dart.test(this[_inCallback])) dart.assertFailed();
        if (dart.test(this[_hasPending]) && dart.test(this[_pending].isEmpty)) {
          this[_state] = (dart.notNull(this[_state]) & ~64) >>> 0;
          if (dart.test(this[_isInputPaused]) && dart.test(this[_mayResumeInput])) {
            this[_state] = (dart.notNull(this[_state]) & ~4) >>> 0;
          }
        }
        while (true) {
          if (dart.test(this[_isCanceled])) {
            this[_pending] = null;
            return;
          }
          let isInputPaused = this[_isInputPaused];
          if (wasInputPaused == isInputPaused) break;
          this[_state] = (dart.notNull(this[_state]) ^ 32) >>> 0;
          if (dart.test(isInputPaused)) {
            this[_onPause]();
          } else {
            this[_onResume]();
          }
          this[_state] = (dart.notNull(this[_state]) & ~32) >>> 0;
          wasInputPaused = isInputPaused;
        }
        if (dart.test(this[_hasPending]) && !dart.test(this[_isPaused])) {
          this[_pending].schedule(this);
        }
      }
    }
    (_BufferingStreamSubscription.new = function(onData, onError, onDone, cancelOnError) {
      this[_onData$] = null;
      this[_onError] = null;
      this[_onDone] = null;
      this[_zone$] = async.Zone.current;
      this[_cancelFuture] = null;
      this[_pending] = null;
      this[_state] = dart.test(cancelOnError) ? 1 : 0;
      this.onData(onData);
      this.onError(onError);
      this.onDone(onDone);
    }).prototype = _BufferingStreamSubscription.prototype;
    _BufferingStreamSubscription.prototype[dart.isStreamSubscription] = true;
    dart.addTypeTests(_BufferingStreamSubscription);
    _BufferingStreamSubscription.prototype[_is__BufferingStreamSubscription_default] = true;
    _BufferingStreamSubscription[dart.implements] = () => [StreamSubscriptionOfT(), _EventSinkOfT(), _EventDispatchOfT()];
    dart.setMethodSignature(_BufferingStreamSubscription, () => ({
      __proto__: dart.getMethods(_BufferingStreamSubscription.__proto__),
      [_setPendingEvents]: dart.fnType(dart.void, [core.Object]),
      onData: dart.fnType(dart.void, [dart.fnType(dart.void, [T])]),
      onError: dart.fnType(dart.void, [core.Function]),
      onDone: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
      pause: dart.fnType(dart.void, [], [async.Future]),
      resume: dart.fnType(dart.void, []),
      cancel: dart.fnType(async.Future, []),
      asFuture: dart.gFnType(E => [async.Future$(E), [], [E]]),
      [_cancel]: dart.fnType(dart.void, []),
      [_decrementPauseCount]: dart.fnType(dart.void, []),
      [_add]: dart.fnType(dart.void, [core.Object]),
      [_addError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
      [_close]: dart.fnType(dart.void, []),
      [_onPause]: dart.fnType(dart.void, []),
      [_onResume]: dart.fnType(dart.void, []),
      [_onCancel]: dart.fnType(async.Future, []),
      [_addPending]: dart.fnType(dart.void, [async._DelayedEvent]),
      [_sendData]: dart.fnType(dart.void, [core.Object]),
      [_sendError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
      [_sendDone]: dart.fnType(dart.void, []),
      [_guardCallback]: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
      [_checkState]: dart.fnType(dart.void, [core.bool])
    }));
    dart.setGetterSignature(_BufferingStreamSubscription, () => ({
      __proto__: dart.getGetters(_BufferingStreamSubscription.__proto__),
      [_isInputPaused]: core.bool,
      [_isClosed]: core.bool,
      [_isCanceled]: core.bool,
      [_waitsForCancel]: core.bool,
      [_inCallback]: core.bool,
      [_hasPending]: core.bool,
      [_isPaused]: core.bool,
      [_canFire]: core.bool,
      [_mayResumeInput]: core.bool,
      [_cancelOnError]: core.bool,
      isPaused: core.bool
    }));
    dart.setFieldSignature(_BufferingStreamSubscription, () => ({
      __proto__: dart.getFields(_BufferingStreamSubscription.__proto__),
      [_onData$]: dart.fieldType(TTovoid()),
      [_onError]: dart.fieldType(core.Function),
      [_onDone]: dart.fieldType(VoidTovoid()),
      [_zone$]: dart.finalFieldType(async.Zone),
      [_state]: dart.fieldType(core.int),
      [_cancelFuture]: dart.fieldType(async.Future),
      [_pending]: dart.fieldType(_PendingEventsOfT())
    }));
    return _BufferingStreamSubscription;
  });
  async._BufferingStreamSubscription = async._BufferingStreamSubscription$();
  dart.defineLazy(async._BufferingStreamSubscription, {
    /*async._BufferingStreamSubscription._STATE_CANCEL_ON_ERROR*/get _STATE_CANCEL_ON_ERROR() {
      return 1;
    },
    /*async._BufferingStreamSubscription._STATE_CLOSED*/get _STATE_CLOSED() {
      return 2;
    },
    /*async._BufferingStreamSubscription._STATE_INPUT_PAUSED*/get _STATE_INPUT_PAUSED() {
      return 4;
    },
    /*async._BufferingStreamSubscription._STATE_CANCELED*/get _STATE_CANCELED() {
      return 8;
    },
    /*async._BufferingStreamSubscription._STATE_WAIT_FOR_CANCEL*/get _STATE_WAIT_FOR_CANCEL() {
      return 16;
    },
    /*async._BufferingStreamSubscription._STATE_IN_CALLBACK*/get _STATE_IN_CALLBACK() {
      return 32;
    },
    /*async._BufferingStreamSubscription._STATE_HAS_PENDING*/get _STATE_HAS_PENDING() {
      return 64;
    },
    /*async._BufferingStreamSubscription._STATE_PAUSE_COUNT*/get _STATE_PAUSE_COUNT() {
      return 128;
    }
  });
  dart.addTypeTests(async._BufferingStreamSubscription, _is__BufferingStreamSubscription_default);
  const _is__ControllerSubscription_default = Symbol('_is__ControllerSubscription_default');
  async._ControllerSubscription$ = dart.generic(T => {
    let _StreamControllerLifecycleOfT = () => (_StreamControllerLifecycleOfT = dart.constFn(async._StreamControllerLifecycle$(T)))();
    class _ControllerSubscription extends async._BufferingStreamSubscription$(T) {
      [_onCancel]() {
        return this[_controller][_recordCancel](this);
      }
      [_onPause]() {
        this[_controller][_recordPause](this);
      }
      [_onResume]() {
        this[_controller][_recordResume](this);
      }
    }
    (_ControllerSubscription.new = function(controller, onData, onError, onDone, cancelOnError) {
      this[_controller] = controller;
      _ControllerSubscription.__proto__.new.call(this, onData, onError, onDone, cancelOnError);
    }).prototype = _ControllerSubscription.prototype;
    dart.addTypeTests(_ControllerSubscription);
    _ControllerSubscription.prototype[_is__ControllerSubscription_default] = true;
    dart.setFieldSignature(_ControllerSubscription, () => ({
      __proto__: dart.getFields(_ControllerSubscription.__proto__),
      [_controller]: dart.finalFieldType(_StreamControllerLifecycleOfT())
    }));
    return _ControllerSubscription;
  });
  async._ControllerSubscription = async._ControllerSubscription$();
  dart.addTypeTests(async._ControllerSubscription, _is__ControllerSubscription_default);
  const _is__BroadcastSubscription_default = Symbol('_is__BroadcastSubscription_default');
  async._BroadcastSubscription$ = dart.generic(T => {
    let _BroadcastSubscriptionOfT = () => (_BroadcastSubscriptionOfT = dart.constFn(async._BroadcastSubscription$(T)))();
    class _BroadcastSubscription extends async._ControllerSubscription$(T) {
      get [_next$]() {
        return this[_next];
      }
      set [_next$](value) {
        this[_next] = _BroadcastSubscriptionOfT()._check(value);
      }
      get [_previous$]() {
        return this[_previous];
      }
      set [_previous$](value) {
        this[_previous] = _BroadcastSubscriptionOfT()._check(value);
      }
      [_expectsEvent](eventId) {
        return (dart.notNull(this[_eventState]) & 1) === eventId;
      }
      [_toggleEventId]() {
        this[_eventState] = (dart.notNull(this[_eventState]) ^ 1) >>> 0;
      }
      get [_isFiring]() {
        return (dart.notNull(this[_eventState]) & 2) !== 0;
      }
      [_setRemoveAfterFiring]() {
        if (!dart.test(this[_isFiring])) dart.assertFailed();
        this[_eventState] = (dart.notNull(this[_eventState]) | 4) >>> 0;
      }
      get [_removeAfterFiring]() {
        return (dart.notNull(this[_eventState]) & 4) !== 0;
      }
      [_onPause]() {}
      [_onResume]() {}
    }
    (_BroadcastSubscription.new = function(controller, onData, onError, onDone, cancelOnError) {
      this[_eventState] = 0;
      this[_next] = null;
      this[_previous] = null;
      _BroadcastSubscription.__proto__.new.call(this, controller, onData, onError, onDone, cancelOnError);
      this[_next$] = this[_previous$] = this;
    }).prototype = _BroadcastSubscription.prototype;
    dart.addTypeTests(_BroadcastSubscription);
    _BroadcastSubscription.prototype[_is__BroadcastSubscription_default] = true;
    const _next = Symbol("_BroadcastSubscription._next");
    const _previous = Symbol("_BroadcastSubscription._previous");
    dart.setMethodSignature(_BroadcastSubscription, () => ({
      __proto__: dart.getMethods(_BroadcastSubscription.__proto__),
      [_expectsEvent]: dart.fnType(core.bool, [core.int]),
      [_toggleEventId]: dart.fnType(dart.void, []),
      [_setRemoveAfterFiring]: dart.fnType(dart.void, [])
    }));
    dart.setGetterSignature(_BroadcastSubscription, () => ({
      __proto__: dart.getGetters(_BroadcastSubscription.__proto__),
      [_isFiring]: core.bool,
      [_removeAfterFiring]: core.bool
    }));
    dart.setFieldSignature(_BroadcastSubscription, () => ({
      __proto__: dart.getFields(_BroadcastSubscription.__proto__),
      [_eventState]: dart.fieldType(core.int),
      [_next$]: dart.fieldType(_BroadcastSubscriptionOfT()),
      [_previous$]: dart.fieldType(_BroadcastSubscriptionOfT())
    }));
    return _BroadcastSubscription;
  });
  async._BroadcastSubscription = async._BroadcastSubscription$();
  dart.defineLazy(async._BroadcastSubscription, {
    /*async._BroadcastSubscription._STATE_EVENT_ID*/get _STATE_EVENT_ID() {
      return 1;
    },
    /*async._BroadcastSubscription._STATE_FIRING*/get _STATE_FIRING() {
      return 2;
    },
    /*async._BroadcastSubscription._STATE_REMOVE_AFTER_FIRING*/get _STATE_REMOVE_AFTER_FIRING() {
      return 4;
    }
  });
  dart.addTypeTests(async._BroadcastSubscription, _is__BroadcastSubscription_default);
  const _firstSubscription = Symbol('_firstSubscription');
  const _lastSubscription = Symbol('_lastSubscription');
  const _addStreamState = Symbol('_addStreamState');
  const _doneFuture = Symbol('_doneFuture');
  const _isEmpty = Symbol('_isEmpty');
  const _hasOneListener = Symbol('_hasOneListener');
  const _isAddingStream = Symbol('_isAddingStream');
  const _mayAddEvent = Symbol('_mayAddEvent');
  const _ensureDoneFuture = Symbol('_ensureDoneFuture');
  const _addListener = Symbol('_addListener');
  const _removeListener = Symbol('_removeListener');
  const _callOnCancel = Symbol('_callOnCancel');
  const _addEventError = Symbol('_addEventError');
  const _forEachListener = Symbol('_forEachListener');
  const _mayComplete = Symbol('_mayComplete');
  const _is__BroadcastStreamController_default = Symbol('_is__BroadcastStreamController_default');
  async._BroadcastStreamController$ = dart.generic(T => {
    let _BroadcastStreamOfT = () => (_BroadcastStreamOfT = dart.constFn(async._BroadcastStream$(T)))();
    let _StreamSinkWrapperOfT = () => (_StreamSinkWrapperOfT = dart.constFn(async._StreamSinkWrapper$(T)))();
    let _BroadcastSubscriptionOfT = () => (_BroadcastSubscriptionOfT = dart.constFn(async._BroadcastSubscription$(T)))();
    let _DoneStreamSubscriptionOfT = () => (_DoneStreamSubscriptionOfT = dart.constFn(async._DoneStreamSubscription$(T)))();
    let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
    let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
    let _AddStreamStateOfT = () => (_AddStreamStateOfT = dart.constFn(async._AddStreamState$(T)))();
    let _StreamControllerBaseOfT = () => (_StreamControllerBaseOfT = dart.constFn(async._StreamControllerBase$(T)))();
    class _BroadcastStreamController extends core.Object {
      get onPause() {
        dart.throw(new core.UnsupportedError.new("Broadcast stream controllers do not support pause callbacks"));
      }
      set onPause(onPauseHandler) {
        dart.throw(new core.UnsupportedError.new("Broadcast stream controllers do not support pause callbacks"));
      }
      get onResume() {
        dart.throw(new core.UnsupportedError.new("Broadcast stream controllers do not support pause callbacks"));
      }
      set onResume(onResumeHandler) {
        dart.throw(new core.UnsupportedError.new("Broadcast stream controllers do not support pause callbacks"));
      }
      get stream() {
        return new (_BroadcastStreamOfT()).new(this);
      }
      get sink() {
        return new (_StreamSinkWrapperOfT()).new(this);
      }
      get isClosed() {
        return (dart.notNull(this[_state]) & 4) !== 0;
      }
      get isPaused() {
        return false;
      }
      get hasListener() {
        return !dart.test(this[_isEmpty]);
      }
      get [_hasOneListener]() {
        if (!!dart.test(this[_isEmpty])) dart.assertFailed();
        return this[_firstSubscription] == this[_lastSubscription];
      }
      get [_isFiring]() {
        return (dart.notNull(this[_state]) & 2) !== 0;
      }
      get [_isAddingStream]() {
        return (dart.notNull(this[_state]) & 8) !== 0;
      }
      get [_mayAddEvent]() {
        return dart.notNull(this[_state]) < 4;
      }
      [_ensureDoneFuture]() {
        if (this[_doneFuture] != null) return this[_doneFuture];
        return this[_doneFuture] = new async._Future.new();
      }
      get [_isEmpty]() {
        return this[_firstSubscription] == null;
      }
      [_addListener](subscription) {
        _BroadcastSubscriptionOfT()._check(subscription);
        if (!(subscription[_next$] == subscription)) dart.assertFailed();
        subscription[_eventState] = dart.notNull(this[_state]) & 1;
        let oldLast = this[_lastSubscription];
        this[_lastSubscription] = subscription;
        subscription[_next$] = null;
        subscription[_previous$] = oldLast;
        if (oldLast == null) {
          this[_firstSubscription] = subscription;
        } else {
          oldLast[_next$] = subscription;
        }
      }
      [_removeListener](subscription) {
        _BroadcastSubscriptionOfT()._check(subscription);
        if (!(subscription[_controller] === this)) dart.assertFailed();
        if (!!(subscription[_next$] == subscription)) dart.assertFailed();
        let previous = subscription[_previous$];
        let next = subscription[_next$];
        if (previous == null) {
          this[_firstSubscription] = next;
        } else {
          previous[_next$] = next;
        }
        if (next == null) {
          this[_lastSubscription] = previous;
        } else {
          next[_previous$] = previous;
        }
        subscription[_next$] = subscription[_previous$] = subscription;
      }
      [_subscribe](onData, onError, onDone, cancelOnError) {
        if (dart.test(this.isClosed)) {
          let t = onDone;
          t == null ? onDone = dart.fn(async._nullDoneHandler, VoidTovoid()) : t;
          return new (_DoneStreamSubscriptionOfT()).new(onDone);
        }
        let subscription = new (_BroadcastSubscriptionOfT()).new(this, onData, onError, onDone, cancelOnError);
        this[_addListener](_BroadcastSubscriptionOfT()._check(subscription));
        if (this[_firstSubscription] == this[_lastSubscription]) {
          async._runGuarded(this.onListen);
        }
        return subscription;
      }
      [_recordCancel](sub) {
        StreamSubscriptionOfT()._check(sub);
        let subscription = _BroadcastSubscriptionOfT()._check(sub);
        if (subscription[_next$] == subscription) return null;
        if (dart.test(subscription[_isFiring])) {
          subscription[_setRemoveAfterFiring]();
        } else {
          this[_removeListener](subscription);
          if (!dart.test(this[_isFiring]) && dart.test(this[_isEmpty])) {
            this[_callOnCancel]();
          }
        }
        return null;
      }
      [_recordPause](subscription) {
        StreamSubscriptionOfT()._check(subscription);
      }
      [_recordResume](subscription) {
        StreamSubscriptionOfT()._check(subscription);
      }
      [_addEventError]() {
        if (dart.test(this.isClosed)) {
          return new core.StateError.new("Cannot add new events after calling close");
        }
        if (!dart.test(this[_isAddingStream])) dart.assertFailed();
        return new core.StateError.new("Cannot add new events while doing an addStream");
      }
      add(data) {
        T._check(data);
        if (!dart.test(this[_mayAddEvent])) dart.throw(this[_addEventError]());
        this[_sendData](data);
      }
      addError(error, stackTrace) {
        if (stackTrace === void 0) stackTrace = null;
        error = async._nonNullError(error);
        if (!dart.test(this[_mayAddEvent])) dart.throw(this[_addEventError]());
        let replacement = async.Zone.current.errorCallback(error, stackTrace);
        if (replacement != null) {
          error = async._nonNullError(replacement.error);
          stackTrace = replacement.stackTrace;
        }
        this[_sendError](error, stackTrace);
      }
      close() {
        if (dart.test(this.isClosed)) {
          if (!(this[_doneFuture] != null)) dart.assertFailed();
          return this[_doneFuture];
        }
        if (!dart.test(this[_mayAddEvent])) dart.throw(this[_addEventError]());
        this[_state] = (dart.notNull(this[_state]) | 4) >>> 0;
        let doneFuture = this[_ensureDoneFuture]();
        this[_sendDone]();
        return doneFuture;
      }
      get done() {
        return this[_ensureDoneFuture]();
      }
      addStream(stream, opts) {
        StreamOfT()._check(stream);
        let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
        if (!dart.test(this[_mayAddEvent])) dart.throw(this[_addEventError]());
        this[_state] = (dart.notNull(this[_state]) | 8) >>> 0;
        this[_addStreamState] = new (_AddStreamStateOfT()).new(this, stream, cancelOnError != null ? cancelOnError : false);
        return this[_addStreamState].addStreamFuture;
      }
      [_add](data) {
        T._check(data);
        this[_sendData](data);
      }
      [_addError](error, stackTrace) {
        this[_sendError](error, stackTrace);
      }
      [_close]() {
        if (!dart.test(this[_isAddingStream])) dart.assertFailed();
        let addState = this[_addStreamState];
        this[_addStreamState] = null;
        this[_state] = (dart.notNull(this[_state]) & ~8) >>> 0;
        addState.complete();
      }
      [_forEachListener](action) {
        if (dart.test(this[_isFiring])) {
          dart.throw(new core.StateError.new("Cannot fire new event. Controller is already firing an event"));
        }
        if (dart.test(this[_isEmpty])) return;
        let id = dart.notNull(this[_state]) & 1;
        this[_state] = (dart.notNull(this[_state]) ^ (1 | 2)) >>> 0;
        let subscription = this[_firstSubscription];
        while (subscription != null) {
          if (dart.test(subscription[_expectsEvent](id))) {
            subscription[_eventState] = (dart.notNull(subscription[_eventState]) | async._BroadcastSubscription._STATE_FIRING) >>> 0;
            action(subscription);
            subscription[_toggleEventId]();
            let next = subscription[_next$];
            if (dart.test(subscription[_removeAfterFiring])) {
              this[_removeListener](subscription);
            }
            subscription[_eventState] = (dart.notNull(subscription[_eventState]) & ~async._BroadcastSubscription._STATE_FIRING) >>> 0;
            subscription = next;
          } else {
            subscription = subscription[_next$];
          }
        }
        this[_state] = (dart.notNull(this[_state]) & ~2) >>> 0;
        if (dart.test(this[_isEmpty])) {
          this[_callOnCancel]();
        }
      }
      [_callOnCancel]() {
        if (!dart.test(this[_isEmpty])) dart.assertFailed();
        if (dart.test(this.isClosed) && dart.test(this[_doneFuture][_mayComplete])) {
          this[_doneFuture][_asyncComplete](null);
        }
        async._runGuarded(this.onCancel);
      }
    }
    (_BroadcastStreamController.new = function(onListen, onCancel) {
      this[_firstSubscription] = null;
      this[_lastSubscription] = null;
      this[_addStreamState] = null;
      this[_doneFuture] = null;
      this.onListen = onListen;
      this.onCancel = onCancel;
      this[_state] = 0;
    }).prototype = _BroadcastStreamController.prototype;
    dart.addTypeTests(_BroadcastStreamController);
    _BroadcastStreamController.prototype[_is__BroadcastStreamController_default] = true;
    _BroadcastStreamController[dart.implements] = () => [_StreamControllerBaseOfT()];
    dart.setMethodSignature(_BroadcastStreamController, () => ({
      __proto__: dart.getMethods(_BroadcastStreamController.__proto__),
      [_ensureDoneFuture]: dart.fnType(async._Future, []),
      [_addListener]: dart.fnType(dart.void, [core.Object]),
      [_removeListener]: dart.fnType(dart.void, [core.Object]),
      [_subscribe]: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T]), core.Function, dart.fnType(dart.void, []), core.bool]),
      [_recordCancel]: dart.fnType(async.Future, [core.Object]),
      [_recordPause]: dart.fnType(dart.void, [core.Object]),
      [_recordResume]: dart.fnType(dart.void, [core.Object]),
      [_addEventError]: dart.fnType(core.Error, []),
      add: dart.fnType(dart.void, [core.Object]),
      addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
      close: dart.fnType(async.Future, []),
      addStream: dart.fnType(async.Future, [core.Object], {cancelOnError: core.bool}),
      [_add]: dart.fnType(dart.void, [core.Object]),
      [_addError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
      [_close]: dart.fnType(dart.void, []),
      [_forEachListener]: dart.fnType(dart.void, [dart.fnType(dart.void, [async._BufferingStreamSubscription$(T)])]),
      [_callOnCancel]: dart.fnType(dart.void, [])
    }));
    dart.setGetterSignature(_BroadcastStreamController, () => ({
      __proto__: dart.getGetters(_BroadcastStreamController.__proto__),
      onPause: dart.fnType(dart.void, []),
      onResume: dart.fnType(dart.void, []),
      stream: async.Stream$(T),
      sink: async.StreamSink$(T),
      isClosed: core.bool,
      isPaused: core.bool,
      hasListener: core.bool,
      [_hasOneListener]: core.bool,
      [_isFiring]: core.bool,
      [_isAddingStream]: core.bool,
      [_mayAddEvent]: core.bool,
      [_isEmpty]: core.bool,
      done: async.Future
    }));
    dart.setSetterSignature(_BroadcastStreamController, () => ({
      __proto__: dart.getSetters(_BroadcastStreamController.__proto__),
      onPause: dart.fnType(dart.void, []),
      onResume: dart.fnType(dart.void, [])
    }));
    dart.setFieldSignature(_BroadcastStreamController, () => ({
      __proto__: dart.getFields(_BroadcastStreamController.__proto__),
      onListen: dart.fieldType(VoidTovoid()),
      onCancel: dart.fieldType(VoidTodynamic()),
      [_state]: dart.fieldType(core.int),
      [_firstSubscription]: dart.fieldType(_BroadcastSubscriptionOfT()),
      [_lastSubscription]: dart.fieldType(_BroadcastSubscriptionOfT()),
      [_addStreamState]: dart.fieldType(_AddStreamStateOfT()),
      [_doneFuture]: dart.fieldType(async._Future)
    }));
    return _BroadcastStreamController;
  });
  async._BroadcastStreamController = async._BroadcastStreamController$();
  dart.defineLazy(async._BroadcastStreamController, {
    /*async._BroadcastStreamController._STATE_INITIAL*/get _STATE_INITIAL() {
      return 0;
    },
    /*async._BroadcastStreamController._STATE_EVENT_ID*/get _STATE_EVENT_ID() {
      return 1;
    },
    /*async._BroadcastStreamController._STATE_FIRING*/get _STATE_FIRING() {
      return 2;
    },
    /*async._BroadcastStreamController._STATE_CLOSED*/get _STATE_CLOSED() {
      return 4;
    },
    /*async._BroadcastStreamController._STATE_ADDSTREAM*/get _STATE_ADDSTREAM() {
      return 8;
    }
  });
  dart.addTypeTests(async._BroadcastStreamController, _is__BroadcastStreamController_default);
  const _is__SyncBroadcastStreamController_default = Symbol('_is__SyncBroadcastStreamController_default');
  async._SyncBroadcastStreamController$ = dart.generic(T => {
    let _BufferingStreamSubscriptionOfT = () => (_BufferingStreamSubscriptionOfT = dart.constFn(async._BufferingStreamSubscription$(T)))();
    let _BufferingStreamSubscriptionOfTToNull = () => (_BufferingStreamSubscriptionOfTToNull = dart.constFn(dart.fnType(core.Null, [_BufferingStreamSubscriptionOfT()])))();
    let SynchronousStreamControllerOfT = () => (SynchronousStreamControllerOfT = dart.constFn(async.SynchronousStreamController$(T)))();
    class _SyncBroadcastStreamController extends async._BroadcastStreamController$(T) {
      get [_mayAddEvent]() {
        return dart.test(super[_mayAddEvent]) && !dart.test(this[_isFiring]);
      }
      [_addEventError]() {
        if (dart.test(this[_isFiring])) {
          return new core.StateError.new("Cannot fire new event. Controller is already firing an event");
        }
        return super[_addEventError]();
      }
      [_sendData](data) {
        T._check(data);
        if (dart.test(this[_isEmpty])) return;
        if (dart.test(this[_hasOneListener])) {
          this[_state] = (dart.notNull(this[_state]) | async._BroadcastStreamController._STATE_FIRING) >>> 0;
          let subscription = this[_firstSubscription];
          subscription[_add](data);
          this[_state] = (dart.notNull(this[_state]) & ~async._BroadcastStreamController._STATE_FIRING) >>> 0;
          if (dart.test(this[_isEmpty])) {
            this[_callOnCancel]();
          }
          return;
        }
        this[_forEachListener](dart.fn(subscription => {
          subscription[_add](data);
        }, _BufferingStreamSubscriptionOfTToNull()));
      }
      [_sendError](error, stackTrace) {
        if (dart.test(this[_isEmpty])) return;
        this[_forEachListener](dart.fn(subscription => {
          subscription[_addError](error, stackTrace);
        }, _BufferingStreamSubscriptionOfTToNull()));
      }
      [_sendDone]() {
        if (!dart.test(this[_isEmpty])) {
          this[_forEachListener](dart.fn(subscription => {
            subscription[_close]();
          }, _BufferingStreamSubscriptionOfTToNull()));
        } else {
          if (!(this[_doneFuture] != null)) dart.assertFailed();
          if (!dart.test(this[_doneFuture][_mayComplete])) dart.assertFailed();
          this[_doneFuture][_asyncComplete](null);
        }
      }
    }
    (_SyncBroadcastStreamController.new = function(onListen, onCancel) {
      _SyncBroadcastStreamController.__proto__.new.call(this, onListen, onCancel);
    }).prototype = _SyncBroadcastStreamController.prototype;
    dart.addTypeTests(_SyncBroadcastStreamController);
    _SyncBroadcastStreamController.prototype[_is__SyncBroadcastStreamController_default] = true;
    _SyncBroadcastStreamController[dart.implements] = () => [SynchronousStreamControllerOfT()];
    dart.setMethodSignature(_SyncBroadcastStreamController, () => ({
      __proto__: dart.getMethods(_SyncBroadcastStreamController.__proto__),
      [_sendData]: dart.fnType(dart.void, [core.Object]),
      [_sendError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
      [_sendDone]: dart.fnType(dart.void, [])
    }));
    return _SyncBroadcastStreamController;
  });
  async._SyncBroadcastStreamController = async._SyncBroadcastStreamController$();
  dart.addTypeTests(async._SyncBroadcastStreamController, _is__SyncBroadcastStreamController_default);
  let const$10;
  const _is__AsyncBroadcastStreamController_default = Symbol('_is__AsyncBroadcastStreamController_default');
  async._AsyncBroadcastStreamController$ = dart.generic(T => {
    let _DelayedDataOfT = () => (_DelayedDataOfT = dart.constFn(async._DelayedData$(T)))();
    class _AsyncBroadcastStreamController extends async._BroadcastStreamController$(T) {
      [_sendData](data) {
        T._check(data);
        for (let subscription = this[_firstSubscription]; subscription != null; subscription = subscription[_next$]) {
          subscription[_addPending](new (_DelayedDataOfT()).new(data));
        }
      }
      [_sendError](error, stackTrace) {
        for (let subscription = this[_firstSubscription]; subscription != null; subscription = subscription[_next$]) {
          subscription[_addPending](new async._DelayedError.new(error, stackTrace));
        }
      }
      [_sendDone]() {
        if (!dart.test(this[_isEmpty])) {
          for (let subscription = this[_firstSubscription]; subscription != null; subscription = subscription[_next$]) {
            subscription[_addPending](const$10 || (const$10 = dart.const(new async._DelayedDone.new())));
          }
        } else {
          if (!(this[_doneFuture] != null)) dart.assertFailed();
          if (!dart.test(this[_doneFuture][_mayComplete])) dart.assertFailed();
          this[_doneFuture][_asyncComplete](null);
        }
      }
    }
    (_AsyncBroadcastStreamController.new = function(onListen, onCancel) {
      _AsyncBroadcastStreamController.__proto__.new.call(this, onListen, onCancel);
    }).prototype = _AsyncBroadcastStreamController.prototype;
    dart.addTypeTests(_AsyncBroadcastStreamController);
    _AsyncBroadcastStreamController.prototype[_is__AsyncBroadcastStreamController_default] = true;
    dart.setMethodSignature(_AsyncBroadcastStreamController, () => ({
      __proto__: dart.getMethods(_AsyncBroadcastStreamController.__proto__),
      [_sendData]: dart.fnType(dart.void, [core.Object]),
      [_sendError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
      [_sendDone]: dart.fnType(dart.void, [])
    }));
    return _AsyncBroadcastStreamController;
  });
  async._AsyncBroadcastStreamController = async._AsyncBroadcastStreamController$();
  dart.addTypeTests(async._AsyncBroadcastStreamController, _is__AsyncBroadcastStreamController_default);
  const _addPendingEvent = Symbol('_addPendingEvent');
  let const$11;
  const _is__AsBroadcastStreamController_default = Symbol('_is__AsBroadcastStreamController_default');
  async._AsBroadcastStreamController$ = dart.generic(T => {
    let _StreamImplEventsOfT = () => (_StreamImplEventsOfT = dart.constFn(async._StreamImplEvents$(T)))();
    let _DelayedDataOfT = () => (_DelayedDataOfT = dart.constFn(async._DelayedData$(T)))();
    let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
    class _AsBroadcastStreamController extends async._SyncBroadcastStreamController$(T) {
      get [_hasPending]() {
        return this[_pending] != null && !dart.test(this[_pending].isEmpty);
      }
      [_addPendingEvent](event) {
        let t = this[_pending];
        t == null ? this[_pending] = new (_StreamImplEventsOfT()).new() : t;
        this[_pending].add(event);
      }
      add(data) {
        T._check(data);
        if (!dart.test(this.isClosed) && dart.test(this[_isFiring])) {
          this[_addPendingEvent](new (_DelayedDataOfT()).new(data));
          return;
        }
        super.add(data);
        while (dart.test(this[_hasPending])) {
          this[_pending].handleNext(this);
        }
      }
      addError(error, stackTrace) {
        if (stackTrace === void 0) stackTrace = null;
        if (!dart.test(this.isClosed) && dart.test(this[_isFiring])) {
          this[_addPendingEvent](new async._DelayedError.new(error, stackTrace));
          return;
        }
        if (!dart.test(this[_mayAddEvent])) dart.throw(this[_addEventError]());
        this[_sendError](error, stackTrace);
        while (dart.test(this[_hasPending])) {
          this[_pending].handleNext(this);
        }
      }
      close() {
        if (!dart.test(this.isClosed) && dart.test(this[_isFiring])) {
          this[_addPendingEvent](const$11 || (const$11 = dart.const(new async._DelayedDone.new())));
          this[_state] = (dart.notNull(this[_state]) | async._BroadcastStreamController._STATE_CLOSED) >>> 0;
          return super.done;
        }
        let result = super.close();
        if (!!dart.test(this[_hasPending])) dart.assertFailed();
        return result;
      }
      [_callOnCancel]() {
        if (dart.test(this[_hasPending])) {
          this[_pending].clear();
          this[_pending] = null;
        }
        super[_callOnCancel]();
      }
    }
    (_AsBroadcastStreamController.new = function(onListen, onCancel) {
      this[_pending] = null;
      _AsBroadcastStreamController.__proto__.new.call(this, onListen, onCancel);
    }).prototype = _AsBroadcastStreamController.prototype;
    dart.addTypeTests(_AsBroadcastStreamController);
    _AsBroadcastStreamController.prototype[_is__AsBroadcastStreamController_default] = true;
    _AsBroadcastStreamController[dart.implements] = () => [_EventDispatchOfT()];
    dart.setMethodSignature(_AsBroadcastStreamController, () => ({
      __proto__: dart.getMethods(_AsBroadcastStreamController.__proto__),
      [_addPendingEvent]: dart.fnType(dart.void, [async._DelayedEvent]),
      add: dart.fnType(dart.void, [core.Object])
    }));
    dart.setGetterSignature(_AsBroadcastStreamController, () => ({
      __proto__: dart.getGetters(_AsBroadcastStreamController.__proto__),
      [_hasPending]: core.bool
    }));
    dart.setFieldSignature(_AsBroadcastStreamController, () => ({
      __proto__: dart.getFields(_AsBroadcastStreamController.__proto__),
      [_pending]: dart.fieldType(_StreamImplEventsOfT())
    }));
    return _AsBroadcastStreamController;
  });
  async._AsBroadcastStreamController = async._AsBroadcastStreamController$();
  dart.addTypeTests(async._AsBroadcastStreamController, _is__AsBroadcastStreamController_default);
  async.DeferredLibrary = class DeferredLibrary extends core.Object {
    get libraryName() {
      return this[libraryName$];
    }
    set libraryName(value) {
      super.libraryName = value;
    }
    get uri() {
      return this[uri$];
    }
    set uri(value) {
      super.uri = value;
    }
    load() {
      dart.throw("DeferredLibrary not supported. " + "please use the `import \"lib.dart\" deferred as lib` syntax.");
    }
  };
  (async.DeferredLibrary.new = function(libraryName, opts) {
    let uri = opts && 'uri' in opts ? opts.uri : null;
    this[libraryName$] = libraryName;
    this[uri$] = uri;
  }).prototype = async.DeferredLibrary.prototype;
  dart.addTypeTests(async.DeferredLibrary);
  const libraryName$ = Symbol("DeferredLibrary.libraryName");
  const uri$ = Symbol("DeferredLibrary.uri");
  dart.setMethodSignature(async.DeferredLibrary, () => ({
    __proto__: dart.getMethods(async.DeferredLibrary.__proto__),
    load: dart.fnType(async.Future$(core.Null), [])
  }));
  dart.setFieldSignature(async.DeferredLibrary, () => ({
    __proto__: dart.getFields(async.DeferredLibrary.__proto__),
    libraryName: dart.finalFieldType(core.String),
    uri: dart.finalFieldType(core.String)
  }));
  const _s = Symbol('_s');
  async.DeferredLoadException = class DeferredLoadException extends core.Object {
    toString() {
      return "DeferredLoadException: '" + dart.str(this[_s]) + "'";
    }
  };
  (async.DeferredLoadException.new = function(s) {
    this[_s] = s;
  }).prototype = async.DeferredLoadException.prototype;
  dart.addTypeTests(async.DeferredLoadException);
  async.DeferredLoadException[dart.implements] = () => [core.Exception];
  dart.setFieldSignature(async.DeferredLoadException, () => ({
    __proto__: dart.getFields(async.DeferredLoadException.__proto__),
    [_s]: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(async.DeferredLoadException, ['toString']);
  async.FutureOr$ = dart.generic(T => {
    let FutureOfT = () => (FutureOfT = dart.constFn(async.Future$(T)))();
    class FutureOr extends core.Object {}
    (FutureOr.__ = function() {
      dart.throw(new core.UnsupportedError.new("FutureOr can't be instantiated"));
    }).prototype = FutureOr.prototype;
    FutureOr.is = function is_FutureOr(o) {
      return T.is(o) || FutureOfT().is(o);
    };
    FutureOr.as = function as_FutureOr(o) {
      if (o == null || T.is(o) || FutureOfT().is(o)) return o;
      return dart.as(o, this, false);
    };
    FutureOr._check = function check_FutureOr(o) {
      if (o == null || T.is(o) || FutureOfT().is(o)) return o;
      return dart.as(o, this, true);
    };
    return FutureOr;
  });
  async.FutureOr = async.FutureOr$();
  const _asyncCompleteError = Symbol('_asyncCompleteError');
  async.Future$ = dart.generic(T => {
    let _FutureOfT = () => (_FutureOfT = dart.constFn(async._Future$(T)))();
    let FutureOfT = () => (FutureOfT = dart.constFn(async.Future$(T)))();
    class Future extends core.Object {
      static new(computation) {
        let result = new (_FutureOfT()).new();
        async.Timer.run(dart.fn(() => {
          try {
            result[_complete](computation());
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            async._completeWithErrorCallback(result, e, s);
          }
        }, VoidToNull()));
        return result;
      }
      static microtask(computation) {
        let result = new (_FutureOfT()).new();
        async.scheduleMicrotask(dart.fn(() => {
          try {
            result[_complete](computation());
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            async._completeWithErrorCallback(result, e, s);
          }
        }, VoidToNull()));
        return result;
      }
      static sync(computation) {
        try {
          let result = computation();
          if (FutureOfT().is(result)) {
            return result;
          } else {
            return new (_FutureOfT()).value(T._check(result));
          }
        } catch (e) {
          let error = dart.getThrown(e);
          let stackTrace = dart.stackTrace(e);
          let future = new (_FutureOfT()).new();
          let replacement = async.Zone.current.errorCallback(error, stackTrace);
          if (replacement != null) {
            future[_asyncCompleteError](async._nonNullError(replacement.error), replacement.stackTrace);
          } else {
            future[_asyncCompleteError](error, stackTrace);
          }
          return future;
        }
      }
      static value(value) {
        if (value === void 0) value = null;
        return new (_FutureOfT()).immediate(value);
      }
      static error(error, stackTrace) {
        if (stackTrace === void 0) stackTrace = null;
        error = async._nonNullError(error);
        if (!(async.Zone.current === async._rootZone)) {
          let replacement = async.Zone.current.errorCallback(error, stackTrace);
          if (replacement != null) {
            error = async._nonNullError(replacement.error);
            stackTrace = replacement.stackTrace;
          }
        }
        return new (_FutureOfT()).immediateError(error, stackTrace);
      }
      static delayed(duration, computation) {
        if (computation === void 0) computation = null;
        let result = new (_FutureOfT()).new();
        async.Timer.new(duration, dart.fn(() => {
          if (computation == null) {
            result[_complete](null);
          } else {
            try {
              result[_complete](computation());
            } catch (e$) {
              let e = dart.getThrown(e$);
              let s = dart.stackTrace(e$);
              async._completeWithErrorCallback(result, e, s);
            }
          }
        }, VoidToNull()));
        return result;
      }
      static wait(T, futures, opts) {
        let eagerError = opts && 'eagerError' in opts ? opts.eagerError : false;
        let cleanUp = opts && 'cleanUp' in opts ? opts.cleanUp : null;
        let result = new (async._Future$(core.List$(T))).new();
        let values = null;
        let remaining = 0;
        let error = null;
        let stackTrace = null;
        function handleError(theError, theStackTrace) {
          remaining--;
          if (values != null) {
            if (cleanUp != null) {
              for (let value of values) {
                if (value != null) {
                  FutureOfNull().sync(dart.fn(() => {
                    cleanUp(value);
                  }, VoidToNull()));
                }
              }
            }
            values = null;
            if (remaining === 0 || dart.test(eagerError)) {
              result[_completeError](theError, theStackTrace);
            } else {
              error = theError;
              stackTrace = theStackTrace;
            }
          } else if (remaining === 0 && !dart.test(eagerError)) {
            result[_completeError](error, stackTrace);
          }
        }
        dart.fn(handleError, dynamicAndStackTraceToNull());
        try {
          for (let future of futures) {
            let pos = remaining;
            FutureOfNull()._check(future.then(core.Null, dart.fn(value => {
              remaining--;
              if (values != null) {
                values[$_set](pos, value);
                if (remaining === 0) {
                  result[_completeWithValue](values);
                }
              } else {
                if (cleanUp != null && value != null) {
                  FutureOfNull().sync(dart.fn(() => {
                    cleanUp(value);
                  }, VoidToNull()));
                }
                if (remaining === 0 && !dart.test(eagerError)) {
                  result[_completeError](error, stackTrace);
                }
              }
            }, dart.fnType(core.Null, [T])), {onError: handleError}));
            remaining++;
          }
          if (remaining === 0) {
            return async.Future$(core.List$(T)).value(dart.constList([], T));
          }
          values = core.List$(T).new(remaining);
        } catch (e$) {
          let e = dart.getThrown(e$);
          let st = dart.stackTrace(e$);
          if (remaining === 0 || dart.test(eagerError)) {
            return async.Future$(core.List$(T)).error(e, st);
          } else {
            error = e;
            stackTrace = st;
          }
        }
        return result;
      }
      static any(T, futures) {
        let completer = async.Completer$(T).sync();
        let onValue = value => {
          if (!dart.test(completer.isCompleted)) completer.complete(value);
        };
        dart.fn(onValue, dart.fnType(core.Null, [T]));
        let onError = (error, stack) => {
          if (!dart.test(completer.isCompleted)) completer.completeError(error, stack);
        };
        dart.fn(onError, dynamicAndStackTraceToNull());
        for (let future of futures) {
          FutureOfNull()._check(future.then(core.Null, onValue, {onError: onError}));
        }
        return completer.future;
      }
      static forEach(T, elements, action) {
        let iterator = elements[$iterator];
        return async.Future.doWhile(dart.fn(() => {
          if (!dart.test(iterator.moveNext())) return false;
          let result = action(iterator.current);
          if (async.Future.is(result)) return FutureOfbool()._check(result.then(core.bool, dart.fn(async.Future._kTrue, dynamicTobool())));
          return true;
        }, VoidToFutureOrOfbool()));
      }
      static _kTrue(_) {
        return true;
      }
      static doWhile(action) {
        let doneSignal = new async._Future.new();
        let nextIteration = null;
        nextIteration = async.Zone.current.bindUnaryCallbackGuarded(core.bool, dart.fn(keepGoing => {
          while (dart.test(keepGoing)) {
            let result = null;
            try {
              result = action();
            } catch (e) {
              let error = dart.getThrown(e);
              let stackTrace = dart.stackTrace(e);
              async._asyncCompleteWithErrorCallback(doneSignal, error, stackTrace);
              return;
            }
            if (FutureOfbool().is(result)) {
              result.then(dart.void, nextIteration, {onError: dart.bind(doneSignal, _completeError)});
              return;
            }
            keepGoing = core.bool._check(result);
          }
          doneSignal[_complete](null);
        }, boolToNull()));
        nextIteration(true);
        return doneSignal;
      }
    }
    (Future[dart.mixinNew] = function() {
    }).prototype = Future.prototype;
    dart.addTypeTests(Future);
    Future.prototype[dart.isFuture] = true;
    return Future;
  });
  async.Future = async.Future$();
  dart.defineLazy(async.Future, {
    /*async.Future._nullFuture*/get _nullFuture() {
      return new (_FutureOfNull()).zoneValue(null, async.Zone.root);
    },
    /*async.Future._falseFuture*/get _falseFuture() {
      return new (_FutureOfbool()).zoneValue(false, async.Zone.root);
    }
  });
  dart.addTypeTests(async.Future, dart.isFuture);
  async.TimeoutException = class TimeoutException extends core.Object {
    get message() {
      return this[message$0];
    }
    set message(value) {
      super.message = value;
    }
    get duration() {
      return this[duration$];
    }
    set duration(value) {
      super.duration = value;
    }
    toString() {
      let result = "TimeoutException";
      if (this.duration != null) result = "TimeoutException after " + dart.str(this.duration);
      if (this.message != null) result = result + ": " + dart.str(this.message);
      return result;
    }
  };
  (async.TimeoutException.new = function(message, duration) {
    if (duration === void 0) duration = null;
    this[message$0] = message;
    this[duration$] = duration;
  }).prototype = async.TimeoutException.prototype;
  dart.addTypeTests(async.TimeoutException);
  const message$0 = Symbol("TimeoutException.message");
  const duration$ = Symbol("TimeoutException.duration");
  async.TimeoutException[dart.implements] = () => [core.Exception];
  dart.setFieldSignature(async.TimeoutException, () => ({
    __proto__: dart.getFields(async.TimeoutException.__proto__),
    message: dart.finalFieldType(core.String),
    duration: dart.finalFieldType(core.Duration)
  }));
  dart.defineExtensionMethods(async.TimeoutException, ['toString']);
  const _is_Completer_default = Symbol('_is_Completer_default');
  async.Completer$ = dart.generic(T => {
    let _AsyncCompleterOfT = () => (_AsyncCompleterOfT = dart.constFn(async._AsyncCompleter$(T)))();
    let _SyncCompleterOfT = () => (_SyncCompleterOfT = dart.constFn(async._SyncCompleter$(T)))();
    class Completer extends core.Object {
      static new() {
        return new (_AsyncCompleterOfT()).new();
      }
      static sync() {
        return new (_SyncCompleterOfT()).new();
      }
    }
    (Completer[dart.mixinNew] = function() {
    }).prototype = Completer.prototype;
    dart.addTypeTests(Completer);
    Completer.prototype[_is_Completer_default] = true;
    return Completer;
  });
  async.Completer = async.Completer$();
  dart.addTypeTests(async.Completer, _is_Completer_default);
  async._completeWithErrorCallback = function(result, error, stackTrace) {
    let replacement = async.Zone.current.errorCallback(error, stackTrace);
    if (replacement != null) {
      error = async._nonNullError(replacement.error);
      stackTrace = replacement.stackTrace;
    }
    result[_completeError](error, stackTrace);
  };
  async._asyncCompleteWithErrorCallback = function(result, error, stackTrace) {
    let replacement = async.Zone.current.errorCallback(error, stackTrace);
    if (replacement != null) {
      error = async._nonNullError(replacement.error);
      stackTrace = replacement.stackTrace;
    }
    result[_asyncCompleteError](error, stackTrace);
  };
  async._nonNullError = function(error) {
    return error != null ? error : new core.NullThrownError.new();
  };
  const _is__Completer_default = Symbol('_is__Completer_default');
  async._Completer$ = dart.generic(T => {
    let _FutureOfT = () => (_FutureOfT = dart.constFn(async._Future$(T)))();
    let CompleterOfT = () => (CompleterOfT = dart.constFn(async.Completer$(T)))();
    class _Completer extends core.Object {
      completeError(error, stackTrace) {
        if (stackTrace === void 0) stackTrace = null;
        error = async._nonNullError(error);
        if (!dart.test(this.future[_mayComplete])) dart.throw(new core.StateError.new("Future already completed"));
        let replacement = async.Zone.current.errorCallback(error, stackTrace);
        if (replacement != null) {
          error = async._nonNullError(replacement.error);
          stackTrace = replacement.stackTrace;
        }
        this[_completeError](error, stackTrace);
      }
      get isCompleted() {
        return !dart.test(this.future[_mayComplete]);
      }
    }
    (_Completer.new = function() {
      this.future = new (_FutureOfT()).new();
    }).prototype = _Completer.prototype;
    dart.addTypeTests(_Completer);
    _Completer.prototype[_is__Completer_default] = true;
    _Completer[dart.implements] = () => [CompleterOfT()];
    dart.setMethodSignature(_Completer, () => ({
      __proto__: dart.getMethods(_Completer.__proto__),
      completeError: dart.fnType(dart.void, [core.Object], [core.StackTrace])
    }));
    dart.setGetterSignature(_Completer, () => ({
      __proto__: dart.getGetters(_Completer.__proto__),
      isCompleted: core.bool
    }));
    dart.setFieldSignature(_Completer, () => ({
      __proto__: dart.getFields(_Completer.__proto__),
      future: dart.finalFieldType(_FutureOfT())
    }));
    return _Completer;
  });
  async._Completer = async._Completer$();
  dart.addTypeTests(async._Completer, _is__Completer_default);
  const _is__AsyncCompleter_default = Symbol('_is__AsyncCompleter_default');
  async._AsyncCompleter$ = dart.generic(T => {
    let FutureOrOfT = () => (FutureOrOfT = dart.constFn(async.FutureOr$(T)))();
    class _AsyncCompleter extends async._Completer$(T) {
      complete(value) {
        if (value === void 0) value = null;
        FutureOrOfT()._check(value);
        if (!dart.test(this.future[_mayComplete])) dart.throw(new core.StateError.new("Future already completed"));
        this.future[_asyncComplete](value);
      }
      [_completeError](error, stackTrace) {
        this.future[_asyncCompleteError](error, stackTrace);
      }
    }
    (_AsyncCompleter.new = function() {
      _AsyncCompleter.__proto__.new.call(this);
    }).prototype = _AsyncCompleter.prototype;
    dart.addTypeTests(_AsyncCompleter);
    _AsyncCompleter.prototype[_is__AsyncCompleter_default] = true;
    dart.setMethodSignature(_AsyncCompleter, () => ({
      __proto__: dart.getMethods(_AsyncCompleter.__proto__),
      complete: dart.fnType(dart.void, [], [core.Object]),
      [_completeError]: dart.fnType(dart.void, [core.Object, core.StackTrace])
    }));
    return _AsyncCompleter;
  });
  async._AsyncCompleter = async._AsyncCompleter$();
  dart.addTypeTests(async._AsyncCompleter, _is__AsyncCompleter_default);
  const _is__SyncCompleter_default = Symbol('_is__SyncCompleter_default');
  async._SyncCompleter$ = dart.generic(T => {
    let FutureOrOfT = () => (FutureOrOfT = dart.constFn(async.FutureOr$(T)))();
    class _SyncCompleter extends async._Completer$(T) {
      complete(value) {
        if (value === void 0) value = null;
        FutureOrOfT()._check(value);
        if (!dart.test(this.future[_mayComplete])) dart.throw(new core.StateError.new("Future already completed"));
        this.future[_complete](value);
      }
      [_completeError](error, stackTrace) {
        this.future[_completeError](error, stackTrace);
      }
    }
    (_SyncCompleter.new = function() {
      _SyncCompleter.__proto__.new.call(this);
    }).prototype = _SyncCompleter.prototype;
    dart.addTypeTests(_SyncCompleter);
    _SyncCompleter.prototype[_is__SyncCompleter_default] = true;
    dart.setMethodSignature(_SyncCompleter, () => ({
      __proto__: dart.getMethods(_SyncCompleter.__proto__),
      complete: dart.fnType(dart.void, [], [core.Object]),
      [_completeError]: dart.fnType(dart.void, [core.Object, core.StackTrace])
    }));
    return _SyncCompleter;
  });
  async._SyncCompleter = async._SyncCompleter$();
  dart.addTypeTests(async._SyncCompleter, _is__SyncCompleter_default);
  const _nextListener = Symbol('_nextListener');
  const _onValue = Symbol('_onValue');
  const _errorTest = Symbol('_errorTest');
  const _whenCompleteAction = Symbol('_whenCompleteAction');
  const _is__FutureListener_default = Symbol('_is__FutureListener_default');
  async._FutureListener$ = dart.generic((S, T) => {
    let SToFutureOrOfT = () => (SToFutureOrOfT = dart.constFn(dart.fnType(FutureOrOfT(), [S])))();
    let FutureOrOfT = () => (FutureOrOfT = dart.constFn(async.FutureOr$(T)))();
    let _FutureOfT = () => (_FutureOfT = dart.constFn(async._Future$(T)))();
    class _FutureListener extends core.Object {
      get [_zone$]() {
        return this.result[_zone$];
      }
      get handlesValue() {
        return (dart.notNull(this.state) & 1) !== 0;
      }
      get handlesError() {
        return (dart.notNull(this.state) & 2) !== 0;
      }
      get hasErrorTest() {
        return this.state === 6;
      }
      get handlesComplete() {
        return this.state === 8;
      }
      get [_onValue]() {
        if (!dart.test(this.handlesValue)) dart.assertFailed();
        return SToFutureOrOfT()._check(this.callback);
      }
      get [_onError]() {
        return this.errorCallback;
      }
      get [_errorTest]() {
        if (!dart.test(this.hasErrorTest)) dart.assertFailed();
        return ObjectTobool()._check(this.callback);
      }
      get [_whenCompleteAction]() {
        if (!dart.test(this.handlesComplete)) dart.assertFailed();
        return VoidTodynamic()._check(this.callback);
      }
      get hasErrorCallback() {
        if (!dart.test(this.handlesError)) dart.assertFailed();
        return this[_onError] != null;
      }
      handleValue(sourceResult) {
        S._check(sourceResult);
        return this[_zone$].runUnary(FutureOrOfT(), S, this[_onValue], sourceResult);
      }
      matchesErrorTest(asyncError) {
        if (!dart.test(this.hasErrorTest)) return true;
        return this[_zone$].runUnary(core.bool, core.Object, this[_errorTest], asyncError.error);
      }
      handleError(asyncError) {
        if (!(dart.test(this.handlesError) && dart.test(this.hasErrorCallback))) dart.assertFailed();
        let errorCallback = this.errorCallback;
        if (ObjectAndStackTraceTodynamic().is(errorCallback)) {
          return FutureOrOfT()._check(this[_zone$].runBinary(dart.dynamic, core.Object, core.StackTrace, errorCallback, asyncError.error, asyncError.stackTrace));
        } else {
          if (!ObjectTodynamic().is(errorCallback)) dart.assertFailed();
          return FutureOrOfT()._check(this[_zone$].runUnary(dart.dynamic, core.Object, ObjectTodynamic()._check(errorCallback), asyncError.error));
        }
      }
      handleWhenComplete() {
        if (!!dart.test(this.handlesError)) dart.assertFailed();
        return this[_zone$].run(dart.dynamic, this[_whenCompleteAction]);
      }
    }
    (_FutureListener.then = function(result, onValue, errorCallback) {
      this[_nextListener] = null;
      this.result = result;
      this.callback = onValue;
      this.errorCallback = errorCallback;
      this.state = errorCallback == null ? 1 : 3;
    }).prototype = _FutureListener.prototype;
    (_FutureListener.catchError = function(result, errorCallback, callback) {
      this[_nextListener] = null;
      this.result = result;
      this.errorCallback = errorCallback;
      this.callback = callback;
      this.state = callback == null ? 2 : 6;
    }).prototype = _FutureListener.prototype;
    (_FutureListener.whenComplete = function(result, callback) {
      this[_nextListener] = null;
      this.result = result;
      this.callback = callback;
      this.errorCallback = null;
      this.state = 8;
    }).prototype = _FutureListener.prototype;
    dart.addTypeTests(_FutureListener);
    _FutureListener.prototype[_is__FutureListener_default] = true;
    dart.setMethodSignature(_FutureListener, () => ({
      __proto__: dart.getMethods(_FutureListener.__proto__),
      handleValue: dart.fnType(async.FutureOr$(T), [core.Object]),
      matchesErrorTest: dart.fnType(core.bool, [async.AsyncError]),
      handleError: dart.fnType(async.FutureOr$(T), [async.AsyncError]),
      handleWhenComplete: dart.fnType(dart.dynamic, [])
    }));
    dart.setGetterSignature(_FutureListener, () => ({
      __proto__: dart.getGetters(_FutureListener.__proto__),
      [_zone$]: async.Zone,
      handlesValue: core.bool,
      handlesError: core.bool,
      hasErrorTest: core.bool,
      handlesComplete: core.bool,
      [_onValue]: dart.fnType(async.FutureOr$(T), [S]),
      [_onError]: core.Function,
      [_errorTest]: dart.fnType(core.bool, [core.Object]),
      [_whenCompleteAction]: dart.fnType(dart.dynamic, []),
      hasErrorCallback: core.bool
    }));
    dart.setFieldSignature(_FutureListener, () => ({
      __proto__: dart.getFields(_FutureListener.__proto__),
      [_nextListener]: dart.fieldType(async._FutureListener),
      result: dart.finalFieldType(_FutureOfT()),
      state: dart.finalFieldType(core.int),
      callback: dart.finalFieldType(core.Function),
      errorCallback: dart.finalFieldType(core.Function)
    }));
    return _FutureListener;
  });
  async._FutureListener = async._FutureListener$();
  dart.defineLazy(async._FutureListener, {
    /*async._FutureListener.maskValue*/get maskValue() {
      return 1;
    },
    /*async._FutureListener.maskError*/get maskError() {
      return 2;
    },
    /*async._FutureListener.maskTestError*/get maskTestError() {
      return 4;
    },
    /*async._FutureListener.maskWhencomplete*/get maskWhencomplete() {
      return 8;
    },
    /*async._FutureListener.stateChain*/get stateChain() {
      return 0;
    },
    /*async._FutureListener.stateThen*/get stateThen() {
      return 1;
    },
    /*async._FutureListener.stateThenOnerror*/get stateThenOnerror() {
      return 1 | 2;
    },
    /*async._FutureListener.stateCatcherror*/get stateCatcherror() {
      return 2;
    },
    /*async._FutureListener.stateCatcherrorTest*/get stateCatcherrorTest() {
      return 2 | 4;
    },
    /*async._FutureListener.stateWhencomplete*/get stateWhencomplete() {
      return 8;
    }
  });
  dart.addTypeTests(async._FutureListener, _is__FutureListener_default);
  const _resultOrListeners = Symbol('_resultOrListeners');
  const _setValue = Symbol('_setValue');
  const _isPendingComplete = Symbol('_isPendingComplete');
  const _mayAddListener = Symbol('_mayAddListener');
  const _isChained = Symbol('_isChained');
  const _isComplete = Symbol('_isComplete');
  const _hasError = Symbol('_hasError');
  const _setChained = Symbol('_setChained');
  const _setPendingComplete = Symbol('_setPendingComplete');
  const _clearPendingComplete = Symbol('_clearPendingComplete');
  const _error = Symbol('_error');
  const _chainSource = Symbol('_chainSource');
  const _setErrorObject = Symbol('_setErrorObject');
  const _setError = Symbol('_setError');
  const _cloneResult = Symbol('_cloneResult');
  const _prependListeners = Symbol('_prependListeners');
  const _reverseListeners = Symbol('_reverseListeners');
  const _removeListeners = Symbol('_removeListeners');
  const _chainFuture = Symbol('_chainFuture');
  const _is__Future_default = Symbol('_is__Future_default');
  async._Future$ = dart.generic(T => {
    let _FutureOfT = () => (_FutureOfT = dart.constFn(async._Future$(T)))();
    let _FutureListenerOfT$T = () => (_FutureListenerOfT$T = dart.constFn(async._FutureListener$(T, T)))();
    let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
    let FutureOrOfT = () => (FutureOrOfT = dart.constFn(async.FutureOr$(T)))();
    let FutureOfT = () => (FutureOfT = dart.constFn(async.Future$(T)))();
    let VoidToFutureOrOfT = () => (VoidToFutureOrOfT = dart.constFn(dart.fnType(FutureOrOfT(), [])))();
    let TToNull = () => (TToNull = dart.constFn(dart.fnType(core.Null, [T])))();
    class _Future extends core.Object {
      get [_mayComplete]() {
        return this[_state] === 0;
      }
      get [_isPendingComplete]() {
        return this[_state] === 1;
      }
      get [_mayAddListener]() {
        return dart.notNull(this[_state]) <= 1;
      }
      get [_isChained]() {
        return this[_state] === 2;
      }
      get [_isComplete]() {
        return dart.notNull(this[_state]) >= 4;
      }
      get [_hasError]() {
        return this[_state] === 8;
      }
      [_setChained](source) {
        if (!dart.test(this[_mayAddListener])) dart.assertFailed();
        this[_state] = 2;
        this[_resultOrListeners] = source;
      }
      then(R, f, opts) {
        let onError = opts && 'onError' in opts ? opts.onError : null;
        let currentZone = async.Zone.current;
        if (!(currentZone === async._rootZone)) {
          f = currentZone.registerUnaryCallback(async.FutureOr$(R), T, f);
          if (onError != null) {
            onError = async._registerErrorHandler(onError, currentZone);
          }
        }
        return this[_thenNoZoneRegistration](R, f, onError);
      }
      [_thenNoZoneRegistration](E, f, onError) {
        let result = new (async._Future$(E)).new();
        this[_addListener](new (async._FutureListener$(T, E)).then(result, f, onError));
        return result;
      }
      catchError(onError, opts) {
        let test = opts && 'test' in opts ? opts.test : null;
        let result = new (_FutureOfT()).new();
        if (!(result[_zone$] === async._rootZone)) {
          onError = async._registerErrorHandler(onError, result[_zone$]);
          if (test != null) test = result[_zone$].registerUnaryCallback(core.bool, dart.dynamic, test);
        }
        this[_addListener](new (_FutureListenerOfT$T()).catchError(result, onError, test));
        return result;
      }
      whenComplete(action) {
        let result = new (_FutureOfT()).new();
        if (!(result[_zone$] === async._rootZone)) {
          action = result[_zone$].registerCallback(dart.dynamic, action);
        }
        this[_addListener](new (_FutureListenerOfT$T()).whenComplete(result, action));
        return result;
      }
      asStream() {
        return StreamOfT().fromFuture(this);
      }
      [_setPendingComplete]() {
        if (!dart.test(this[_mayComplete])) dart.assertFailed();
        this[_state] = 1;
      }
      [_clearPendingComplete]() {
        if (!dart.test(this[_isPendingComplete])) dart.assertFailed();
        this[_state] = 0;
      }
      get [_error]() {
        if (!dart.test(this[_hasError])) dart.assertFailed();
        return async.AsyncError._check(this[_resultOrListeners]);
      }
      get [_chainSource]() {
        if (!dart.test(this[_isChained])) dart.assertFailed();
        return async._Future._check(this[_resultOrListeners]);
      }
      [_setValue](value) {
        T._check(value);
        if (!!dart.test(this[_isComplete])) dart.assertFailed();
        this[_state] = 4;
        this[_resultOrListeners] = value;
      }
      [_setErrorObject](error) {
        if (!!dart.test(this[_isComplete])) dart.assertFailed();
        this[_state] = 8;
        this[_resultOrListeners] = error;
      }
      [_setError](error, stackTrace) {
        this[_setErrorObject](new async.AsyncError.new(error, stackTrace));
      }
      [_cloneResult](source) {
        if (!!dart.test(this[_isComplete])) dart.assertFailed();
        if (!dart.test(source[_isComplete])) dart.assertFailed();
        this[_state] = source[_state];
        this[_resultOrListeners] = source[_resultOrListeners];
      }
      [_addListener](listener) {
        if (!(listener[_nextListener] == null)) dart.assertFailed();
        if (dart.test(this[_mayAddListener])) {
          listener[_nextListener] = async._FutureListener._check(this[_resultOrListeners]);
          this[_resultOrListeners] = listener;
        } else {
          if (dart.test(this[_isChained])) {
            let source = this[_chainSource];
            if (!dart.test(source[_isComplete])) {
              source[_addListener](listener);
              return;
            }
            this[_cloneResult](source);
          }
          if (!dart.test(this[_isComplete])) dart.assertFailed();
          this[_zone$].scheduleMicrotask(dart.fn(() => {
            async._Future._propagateToListeners(this, listener);
          }, VoidToNull()));
        }
      }
      [_prependListeners](listeners) {
        if (listeners == null) return;
        if (dart.test(this[_mayAddListener])) {
          let existingListeners = async._FutureListener._check(this[_resultOrListeners]);
          this[_resultOrListeners] = listeners;
          if (existingListeners != null) {
            let cursor = listeners;
            while (cursor[_nextListener] != null) {
              cursor = cursor[_nextListener];
            }
            cursor[_nextListener] = existingListeners;
          }
        } else {
          if (dart.test(this[_isChained])) {
            let source = this[_chainSource];
            if (!dart.test(source[_isComplete])) {
              source[_prependListeners](listeners);
              return;
            }
            this[_cloneResult](source);
          }
          if (!dart.test(this[_isComplete])) dart.assertFailed();
          listeners = this[_reverseListeners](listeners);
          this[_zone$].scheduleMicrotask(dart.fn(() => {
            async._Future._propagateToListeners(this, listeners);
          }, VoidToNull()));
        }
      }
      [_removeListeners]() {
        if (!!dart.test(this[_isComplete])) dart.assertFailed();
        let current = async._FutureListener._check(this[_resultOrListeners]);
        this[_resultOrListeners] = null;
        return this[_reverseListeners](current);
      }
      [_reverseListeners](listeners) {
        let prev = null;
        let current = listeners;
        while (current != null) {
          let next = current[_nextListener];
          current[_nextListener] = prev;
          prev = current;
          current = next;
        }
        return prev;
      }
      static _chainForeignFuture(source, target) {
        if (!!dart.test(target[_isComplete])) dart.assertFailed();
        if (!!async._Future.is(source)) dart.assertFailed();
        target[_setPendingComplete]();
        try {
          FutureOfNull()._check(source.then(core.Null, dart.fn(value => {
            if (!dart.test(target[_isPendingComplete])) dart.assertFailed();
            target[_clearPendingComplete]();
            target[_complete](value);
          }, dynamicToNull()), {onError: dart.fn((error, stackTrace) => {
              if (stackTrace === void 0) stackTrace = null;
              if (!dart.test(target[_isPendingComplete])) dart.assertFailed();
              target[_completeError](error, stackTrace);
            }, dynamic__ToNull())}));
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          async.scheduleMicrotask(dart.fn(() => {
            target[_completeError](e, s);
          }, VoidToNull()));
        }
      }
      static _chainCoreFuture(source, target) {
        if (!dart.test(target[_mayAddListener])) dart.assertFailed();
        while (dart.test(source[_isChained])) {
          source = source[_chainSource];
        }
        if (dart.test(source[_isComplete])) {
          let listeners = target[_removeListeners]();
          target[_cloneResult](source);
          async._Future._propagateToListeners(target, listeners);
        } else {
          let listeners = async._FutureListener._check(target[_resultOrListeners]);
          target[_setChained](source);
          source[_prependListeners](listeners);
        }
      }
      [_complete](value) {
        FutureOrOfT()._check(value);
        if (!!dart.test(this[_isComplete])) dart.assertFailed();
        if (FutureOfT().is(value)) {
          if (_FutureOfT().is(value)) {
            async._Future._chainCoreFuture(value, this);
          } else {
            async._Future._chainForeignFuture(value, this);
          }
        } else {
          let listeners = this[_removeListeners]();
          this[_setValue](T._check(value));
          async._Future._propagateToListeners(this, listeners);
        }
      }
      [_completeWithValue](value) {
        T._check(value);
        if (!!dart.test(this[_isComplete])) dart.assertFailed();
        if (!!FutureOfT().is(value)) dart.assertFailed();
        let listeners = this[_removeListeners]();
        this[_setValue](value);
        async._Future._propagateToListeners(this, listeners);
      }
      [_completeError](error, stackTrace) {
        if (stackTrace === void 0) stackTrace = null;
        if (!!dart.test(this[_isComplete])) dart.assertFailed();
        let listeners = this[_removeListeners]();
        this[_setError](error, stackTrace);
        async._Future._propagateToListeners(this, listeners);
      }
      [_asyncComplete](value) {
        FutureOrOfT()._check(value);
        if (!!dart.test(this[_isComplete])) dart.assertFailed();
        if (FutureOfT().is(value)) {
          this[_chainFuture](value);
          return;
        }
        this[_setPendingComplete]();
        this[_zone$].scheduleMicrotask(dart.fn(() => {
          this[_completeWithValue](T._check(value));
        }, VoidToNull()));
      }
      [_chainFuture](value) {
        FutureOfT()._check(value);
        if (_FutureOfT().is(value)) {
          if (dart.test(value[_hasError])) {
            this[_setPendingComplete]();
            this[_zone$].scheduleMicrotask(dart.fn(() => {
              async._Future._chainCoreFuture(value, this);
            }, VoidToNull()));
          } else {
            async._Future._chainCoreFuture(value, this);
          }
          return;
        }
        async._Future._chainForeignFuture(value, this);
      }
      [_asyncCompleteError](error, stackTrace) {
        if (!!dart.test(this[_isComplete])) dart.assertFailed();
        this[_setPendingComplete]();
        this[_zone$].scheduleMicrotask(dart.fn(() => {
          this[_completeError](error, stackTrace);
        }, VoidToNull()));
      }
      static _propagateToListeners(source, listeners) {
        while (true) {
          if (!dart.test(source[_isComplete])) dart.assertFailed();
          let hasError = source[_hasError];
          if (listeners == null) {
            if (dart.test(hasError)) {
              let asyncError = source[_error];
              source[_zone$].handleUncaughtError(asyncError.error, asyncError.stackTrace);
            }
            return;
          }
          while (listeners[_nextListener] != null) {
            let listener = listeners;
            listeners = listener[_nextListener];
            listener[_nextListener] = null;
            async._Future._propagateToListeners(source, listener);
          }
          let listener = listeners;
          let sourceResult = source[_resultOrListeners];
          let listenerHasError = hasError;
          let listenerValueOrError = sourceResult;
          if (dart.test(hasError) || dart.test(listener.handlesValue) || dart.test(listener.handlesComplete)) {
            let zone = listener[_zone$];
            if (dart.test(hasError) && !dart.test(source[_zone$].inSameErrorZone(zone))) {
              let asyncError = source[_error];
              source[_zone$].handleUncaughtError(asyncError.error, asyncError.stackTrace);
              return;
            }
            let oldZone = null;
            if (!(async.Zone.current == zone)) {
              oldZone = async.Zone._enter(zone);
            }
            function handleWhenCompleteCallback() {
              if (!!dart.test(listener.handlesValue)) dart.assertFailed();
              if (!!dart.test(listener.handlesError)) dart.assertFailed();
              let completeResult = null;
              try {
                completeResult = listener.handleWhenComplete();
              } catch (e$) {
                let e = dart.getThrown(e$);
                let s = dart.stackTrace(e$);
                if (dart.test(hasError) && core.identical(source[_error].error, e)) {
                  listenerValueOrError = source[_error];
                } else {
                  listenerValueOrError = new async.AsyncError.new(e, s);
                }
                listenerHasError = true;
                return;
              }
              if (async.Future.is(completeResult)) {
                if (async._Future.is(completeResult) && dart.test(completeResult[_isComplete])) {
                  if (dart.test(completeResult[_hasError])) {
                    listenerValueOrError = completeResult[_error];
                    listenerHasError = true;
                  }
                  return;
                }
                let originalSource = source;
                listenerValueOrError = completeResult.then(dart.dynamic, dart.fn(_ => originalSource, dynamicTo_Future()));
                listenerHasError = false;
              }
            }
            dart.fn(handleWhenCompleteCallback, VoidTovoid());
            function handleValueCallback() {
              try {
                listenerValueOrError = listener.handleValue(sourceResult);
              } catch (e$) {
                let e = dart.getThrown(e$);
                let s = dart.stackTrace(e$);
                listenerValueOrError = new async.AsyncError.new(e, s);
                listenerHasError = true;
              }
            }
            dart.fn(handleValueCallback, VoidTovoid());
            function handleError() {
              try {
                let asyncError = source[_error];
                if (dart.test(listener.matchesErrorTest(asyncError)) && dart.test(listener.hasErrorCallback)) {
                  listenerValueOrError = listener.handleError(asyncError);
                  listenerHasError = false;
                }
              } catch (e$) {
                let e = dart.getThrown(e$);
                let s = dart.stackTrace(e$);
                if (core.identical(source[_error].error, e)) {
                  listenerValueOrError = source[_error];
                } else {
                  listenerValueOrError = new async.AsyncError.new(e, s);
                }
                listenerHasError = true;
              }
            }
            dart.fn(handleError, VoidTovoid());
            if (dart.test(listener.handlesComplete)) {
              handleWhenCompleteCallback();
            } else if (!dart.test(hasError)) {
              if (dart.test(listener.handlesValue)) {
                handleValueCallback();
              }
            } else {
              if (dart.test(listener.handlesError)) {
                handleError();
              }
            }
            if (oldZone != null) async.Zone._leave(oldZone);
            if (async.Future.is(listenerValueOrError)) {
              let chainSource = async.Future._check(listenerValueOrError);
              let result = listener.result;
              if (async._Future.is(chainSource)) {
                if (dart.test(chainSource[_isComplete])) {
                  listeners = result[_removeListeners]();
                  result[_cloneResult](chainSource);
                  source = chainSource;
                  continue;
                } else {
                  async._Future._chainCoreFuture(chainSource, result);
                }
              } else {
                async._Future._chainForeignFuture(chainSource, result);
              }
              return;
            }
          }
          let result = listener.result;
          listeners = result[_removeListeners]();
          if (!dart.test(listenerHasError)) {
            result[_setValue](listenerValueOrError);
          } else {
            let asyncError = async.AsyncError._check(listenerValueOrError);
            result[_setErrorObject](asyncError);
          }
          source = result;
        }
      }
      timeout(timeLimit, opts) {
        let onTimeout = opts && 'onTimeout' in opts ? opts.onTimeout : null;
        VoidToFutureOrOfT()._check(onTimeout);
        if (dart.test(this[_isComplete])) return new (_FutureOfT()).immediate(this);
        let result = new (_FutureOfT()).new();
        let timer = null;
        if (onTimeout == null) {
          timer = async.Timer.new(timeLimit, dart.fn(() => {
            result[_completeError](new async.TimeoutException.new("Future not completed", timeLimit));
          }, VoidToNull()));
        } else {
          let zone = async.Zone.current;
          onTimeout = zone.registerCallback(FutureOrOfT(), onTimeout);
          timer = async.Timer.new(timeLimit, dart.fn(() => {
            try {
              result[_complete](zone.run(FutureOrOfT(), onTimeout));
            } catch (e$) {
              let e = dart.getThrown(e$);
              let s = dart.stackTrace(e$);
              result[_completeError](e, s);
            }
          }, VoidToNull()));
        }
        this.then(core.Null, dart.fn(v => {
          if (dart.test(timer.isActive)) {
            timer.cancel();
            result[_completeWithValue](v);
          }
        }, TToNull()), {onError: dart.fn((e, s) => {
            if (dart.test(timer.isActive)) {
              timer.cancel();
              result[_completeError](e, s);
            }
          }, dynamicAndStackTraceToNull())});
        return result;
      }
    }
    (_Future.new = function() {
      this[_state] = 0;
      this[_resultOrListeners] = null;
      this[_zone$] = async.Zone.current;
    }).prototype = _Future.prototype;
    (_Future.immediate = function(result) {
      this[_state] = 0;
      this[_resultOrListeners] = null;
      this[_zone$] = async.Zone.current;
      this[_asyncComplete](result);
    }).prototype = _Future.prototype;
    (_Future.zoneValue = function(value, zone) {
      this[_state] = 0;
      this[_resultOrListeners] = null;
      this[_zone$] = zone;
      this[_setValue](value);
    }).prototype = _Future.prototype;
    (_Future.immediateError = function(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      this[_state] = 0;
      this[_resultOrListeners] = null;
      this[_zone$] = async.Zone.current;
      this[_asyncCompleteError](error, stackTrace);
    }).prototype = _Future.prototype;
    (_Future.value = function(value) {
      _Future.zoneValue.call(this, value, async.Zone.current);
    }).prototype = _Future.prototype;
    _Future.prototype[dart.isFuture] = true;
    dart.addTypeTests(_Future);
    _Future.prototype[_is__Future_default] = true;
    _Future[dart.implements] = () => [FutureOfT()];
    dart.setMethodSignature(_Future, () => ({
      __proto__: dart.getMethods(_Future.__proto__),
      [_setChained]: dart.fnType(dart.void, [async._Future]),
      then: dart.gFnType(R => [async.Future$(R), [dart.fnType(async.FutureOr$(R), [T])], {onError: core.Function}]),
      [_thenNoZoneRegistration]: dart.gFnType(E => [async.Future$(E), [dart.fnType(async.FutureOr$(E), [T]), core.Function]]),
      catchError: dart.fnType(async.Future$(T), [core.Function], {test: dart.fnType(core.bool, [dart.dynamic])}),
      whenComplete: dart.fnType(async.Future$(T), [dart.fnType(dart.dynamic, [])]),
      asStream: dart.fnType(async.Stream$(T), []),
      [_setPendingComplete]: dart.fnType(dart.void, []),
      [_clearPendingComplete]: dart.fnType(dart.void, []),
      [_setValue]: dart.fnType(dart.void, [core.Object]),
      [_setErrorObject]: dart.fnType(dart.void, [async.AsyncError]),
      [_setError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
      [_cloneResult]: dart.fnType(dart.void, [async._Future]),
      [_addListener]: dart.fnType(dart.void, [async._FutureListener]),
      [_prependListeners]: dart.fnType(dart.void, [async._FutureListener]),
      [_removeListeners]: dart.fnType(async._FutureListener, []),
      [_reverseListeners]: dart.fnType(async._FutureListener, [async._FutureListener]),
      [_complete]: dart.fnType(dart.void, [core.Object]),
      [_completeWithValue]: dart.fnType(dart.void, [core.Object]),
      [_completeError]: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
      [_asyncComplete]: dart.fnType(dart.void, [core.Object]),
      [_chainFuture]: dart.fnType(dart.void, [core.Object]),
      [_asyncCompleteError]: dart.fnType(dart.void, [dart.dynamic, core.StackTrace]),
      timeout: dart.fnType(async.Future$(T), [core.Duration], {onTimeout: core.Object})
    }));
    dart.setGetterSignature(_Future, () => ({
      __proto__: dart.getGetters(_Future.__proto__),
      [_mayComplete]: core.bool,
      [_isPendingComplete]: core.bool,
      [_mayAddListener]: core.bool,
      [_isChained]: core.bool,
      [_isComplete]: core.bool,
      [_hasError]: core.bool,
      [_error]: async.AsyncError,
      [_chainSource]: async._Future
    }));
    dart.setFieldSignature(_Future, () => ({
      __proto__: dart.getFields(_Future.__proto__),
      [_state]: dart.fieldType(core.int),
      [_zone$]: dart.finalFieldType(async.Zone),
      [_resultOrListeners]: dart.fieldType(dart.dynamic)
    }));
    return _Future;
  });
  async._Future = async._Future$();
  dart.defineLazy(async._Future, {
    /*async._Future._stateIncomplete*/get _stateIncomplete() {
      return 0;
    },
    /*async._Future._statePendingComplete*/get _statePendingComplete() {
      return 1;
    },
    /*async._Future._stateChained*/get _stateChained() {
      return 2;
    },
    /*async._Future._stateValue*/get _stateValue() {
      return 4;
    },
    /*async._Future._stateError*/get _stateError() {
      return 8;
    }
  });
  dart.addTypeTests(async._Future, _is__Future_default);
  async._registerErrorHandler = function(errorHandler, zone) {
    if (ObjectAndStackTraceTodynamic().is(errorHandler)) {
      return zone.registerBinaryCallback(dart.dynamic, core.Object, core.StackTrace, errorHandler);
    }
    if (ObjectTodynamic().is(errorHandler)) {
      return zone.registerUnaryCallback(dart.dynamic, core.Object, errorHandler);
    }
    dart.throw(new core.ArgumentError.value(errorHandler, "onError", "Error handler must accept one Object or one Object and a StackTrace" + " as arguments, and return a a valid result"));
  };
  async._AsyncCallbackEntry = class _AsyncCallbackEntry extends core.Object {};
  (async._AsyncCallbackEntry.new = function(callback) {
    this.next = null;
    this.callback = callback;
  }).prototype = async._AsyncCallbackEntry.prototype;
  dart.addTypeTests(async._AsyncCallbackEntry);
  dart.setFieldSignature(async._AsyncCallbackEntry, () => ({
    __proto__: dart.getFields(async._AsyncCallbackEntry.__proto__),
    callback: dart.finalFieldType(VoidTovoid()),
    next: dart.fieldType(async._AsyncCallbackEntry)
  }));
  dart.defineLazy(async, {
    /*async._nextCallback*/get _nextCallback() {
      return null;
    },
    set _nextCallback(_) {},
    /*async._lastCallback*/get _lastCallback() {
      return null;
    },
    set _lastCallback(_) {},
    /*async._lastPriorityCallback*/get _lastPriorityCallback() {
      return null;
    },
    set _lastPriorityCallback(_) {},
    /*async._isInCallbackLoop*/get _isInCallbackLoop() {
      return false;
    },
    set _isInCallbackLoop(_) {}
  });
  async._microtaskLoop = function() {
    while (async._nextCallback != null) {
      async._lastPriorityCallback = null;
      let entry = async._nextCallback;
      async._nextCallback = entry.next;
      if (async._nextCallback == null) async._lastCallback = null;
      entry.callback();
    }
  };
  async._startMicrotaskLoop = function() {
    async._isInCallbackLoop = true;
    try {
      async._microtaskLoop();
    } finally {
      async._lastPriorityCallback = null;
      async._isInCallbackLoop = false;
      if (async._nextCallback != null) {
        async._AsyncRun._scheduleImmediate(dart.fn(async._startMicrotaskLoop, VoidTovoid()));
      }
    }
  };
  async._scheduleAsyncCallback = function(callback) {
    let newEntry = new async._AsyncCallbackEntry.new(callback);
    if (async._nextCallback == null) {
      async._nextCallback = async._lastCallback = newEntry;
      if (!dart.test(async._isInCallbackLoop)) {
        async._AsyncRun._scheduleImmediate(dart.fn(async._startMicrotaskLoop, VoidTovoid()));
      }
    } else {
      async._lastCallback.next = newEntry;
      async._lastCallback = newEntry;
    }
  };
  async._schedulePriorityAsyncCallback = function(callback) {
    if (async._nextCallback == null) {
      async._scheduleAsyncCallback(callback);
      async._lastPriorityCallback = async._lastCallback;
      return;
    }
    let entry = new async._AsyncCallbackEntry.new(callback);
    if (async._lastPriorityCallback == null) {
      entry.next = async._nextCallback;
      async._nextCallback = async._lastPriorityCallback = entry;
    } else {
      entry.next = async._lastPriorityCallback.next;
      async._lastPriorityCallback.next = entry;
      async._lastPriorityCallback = entry;
      if (entry.next == null) {
        async._lastCallback = entry;
      }
    }
  };
  const _scheduleMicrotask = Symbol('_scheduleMicrotask');
  async.scheduleMicrotask = function(callback) {
    let currentZone = async._Zone._check(async.Zone.current);
    if (async._rootZone === currentZone) {
      async._rootScheduleMicrotask(null, null, async._rootZone, callback);
      return;
    }
    let implementation = currentZone[_scheduleMicrotask];
    if (async._rootZone === implementation.zone && dart.test(async._rootZone.inSameErrorZone(currentZone))) {
      async._rootScheduleMicrotask(null, null, currentZone, currentZone.registerCallback(dart.void, callback));
      return;
    }
    async.Zone.current.scheduleMicrotask(async.Zone.current.bindCallbackGuarded(callback));
  };
  async._AsyncRun = class _AsyncRun extends core.Object {
    static _scheduleImmediate(callback) {
      async._AsyncRun._scheduleImmediateClosure(callback);
    }
    static _initializeScheduleImmediate() {
      if (_isolate_helper.global.scheduleImmediate != null) {
        return dart.fn(async._AsyncRun._scheduleImmediateJsOverride, FnTovoid());
      }
      if (_isolate_helper.global.MutationObserver != null && _isolate_helper.global.document != null) {
        let div = _isolate_helper.global.document.createElement("div");
        let span = _isolate_helper.global.document.createElement("span");
        let storedCallback = null;
        function internalCallback(_) {
          _isolate_helper.leaveJsAsync();
          let f = storedCallback;
          storedCallback = null;
          f();
        }
        dart.fn(internalCallback, dynamicToNull());
        ;
        let observer = new _isolate_helper.global.MutationObserver(internalCallback);
        observer.observe(div, {childList: true});
        return dart.fn(callback => {
          if (!(storedCallback == null)) dart.assertFailed();
          _isolate_helper.enterJsAsync();
          storedCallback = callback;
          div.firstChild ? div.removeChild(span) : div.appendChild(span);
        }, FnToNull());
      } else if (_isolate_helper.global.setImmediate != null) {
        return dart.fn(async._AsyncRun._scheduleImmediateWithSetImmediate, FnTovoid());
      }
      return dart.fn(async._AsyncRun._scheduleImmediateWithTimer, FnTovoid());
    }
    static _scheduleImmediateJsOverride(callback) {
      function internalCallback() {
        _isolate_helper.leaveJsAsync();
        callback();
      }
      dart.fn(internalCallback, VoidToNull());
      ;
      _isolate_helper.enterJsAsync();
      _isolate_helper.global.scheduleImmediate(internalCallback);
    }
    static _scheduleImmediateWithSetImmediate(callback) {
      function internalCallback() {
        _isolate_helper.leaveJsAsync();
        callback();
      }
      dart.fn(internalCallback, VoidToNull());
      ;
      _isolate_helper.enterJsAsync();
      _isolate_helper.global.setImmediate(internalCallback);
    }
    static _scheduleImmediateWithTimer(callback) {
      async.Timer._createTimer(core.Duration.zero, callback);
    }
  };
  (async._AsyncRun.new = function() {
  }).prototype = async._AsyncRun.prototype;
  dart.addTypeTests(async._AsyncRun);
  dart.defineLazy(async._AsyncRun, {
    /*async._AsyncRun._scheduleImmediateClosure*/get _scheduleImmediateClosure() {
      return async._AsyncRun._initializeScheduleImmediate();
    }
  });
  async.StreamSubscription$ = dart.generic(T => {
    class StreamSubscription extends core.Object {}
    (StreamSubscription.new = function() {
    }).prototype = StreamSubscription.prototype;
    dart.addTypeTests(StreamSubscription);
    StreamSubscription.prototype[dart.isStreamSubscription] = true;
    return StreamSubscription;
  });
  async.StreamSubscription = async.StreamSubscription$();
  dart.addTypeTests(async.StreamSubscription, dart.isStreamSubscription);
  const _is_EventSink_default = Symbol('_is_EventSink_default');
  async.EventSink$ = dart.generic(T => {
    let SinkOfT = () => (SinkOfT = dart.constFn(core.Sink$(T)))();
    class EventSink extends core.Object {}
    (EventSink.new = function() {
    }).prototype = EventSink.prototype;
    dart.addTypeTests(EventSink);
    EventSink.prototype[_is_EventSink_default] = true;
    EventSink[dart.implements] = () => [SinkOfT()];
    return EventSink;
  });
  async.EventSink = async.EventSink$();
  dart.addTypeTests(async.EventSink, _is_EventSink_default);
  const _stream = Symbol('_stream');
  const _is_StreamView_default = Symbol('_is_StreamView_default');
  async.StreamView$ = dart.generic(T => {
    let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
    class StreamView extends async.Stream$(T) {
      get isBroadcast() {
        return this[_stream].isBroadcast;
      }
      asBroadcastStream(opts) {
        let onListen = opts && 'onListen' in opts ? opts.onListen : null;
        let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
        return this[_stream].asBroadcastStream({onListen: onListen, onCancel: onCancel});
      }
      listen(onData, opts) {
        let onError = opts && 'onError' in opts ? opts.onError : null;
        let onDone = opts && 'onDone' in opts ? opts.onDone : null;
        let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
        return this[_stream].listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
      }
    }
    (StreamView.new = function(stream) {
      this[_stream] = stream;
      StreamView.__proto__._internal.call(this);
    }).prototype = StreamView.prototype;
    dart.addTypeTests(StreamView);
    StreamView.prototype[_is_StreamView_default] = true;
    dart.setMethodSignature(StreamView, () => ({
      __proto__: dart.getMethods(StreamView.__proto__),
      listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool})
    }));
    dart.setFieldSignature(StreamView, () => ({
      __proto__: dart.getFields(StreamView.__proto__),
      [_stream]: dart.finalFieldType(StreamOfT())
    }));
    return StreamView;
  });
  async.StreamView = async.StreamView$();
  dart.addTypeTests(async.StreamView, _is_StreamView_default);
  const _is_StreamConsumer_default = Symbol('_is_StreamConsumer_default');
  async.StreamConsumer$ = dart.generic(S => {
    class StreamConsumer extends core.Object {}
    (StreamConsumer.new = function() {
    }).prototype = StreamConsumer.prototype;
    dart.addTypeTests(StreamConsumer);
    StreamConsumer.prototype[_is_StreamConsumer_default] = true;
    return StreamConsumer;
  });
  async.StreamConsumer = async.StreamConsumer$();
  dart.addTypeTests(async.StreamConsumer, _is_StreamConsumer_default);
  const _is_StreamSink_default = Symbol('_is_StreamSink_default');
  async.StreamSink$ = dart.generic(S => {
    let EventSinkOfS = () => (EventSinkOfS = dart.constFn(async.EventSink$(S)))();
    let StreamConsumerOfS = () => (StreamConsumerOfS = dart.constFn(async.StreamConsumer$(S)))();
    class StreamSink extends core.Object {}
    (StreamSink.new = function() {
    }).prototype = StreamSink.prototype;
    dart.addTypeTests(StreamSink);
    StreamSink.prototype[_is_StreamSink_default] = true;
    StreamSink[dart.implements] = () => [EventSinkOfS(), StreamConsumerOfS()];
    return StreamSink;
  });
  async.StreamSink = async.StreamSink$();
  dart.addTypeTests(async.StreamSink, _is_StreamSink_default);
  const _is_StreamTransformer_default = Symbol('_is_StreamTransformer_default');
  async.StreamTransformer$ = dart.generic((S, T) => {
    let _StreamSubscriptionTransformerOfS$T = () => (_StreamSubscriptionTransformerOfS$T = dart.constFn(async._StreamSubscriptionTransformer$(S, T)))();
    let _StreamHandlerTransformerOfS$T = () => (_StreamHandlerTransformerOfS$T = dart.constFn(async._StreamHandlerTransformer$(S, T)))();
    let _StreamBindTransformerOfS$T = () => (_StreamBindTransformerOfS$T = dart.constFn(async._StreamBindTransformer$(S, T)))();
    class StreamTransformer extends core.Object {
      static new(onListen) {
        return new (_StreamSubscriptionTransformerOfS$T()).new(onListen);
      }
      static fromHandlers(opts) {
        return new (_StreamHandlerTransformerOfS$T()).new(opts);
      }
      static fromBind(bind) {
        return new (_StreamBindTransformerOfS$T()).new(bind);
      }
      static castFrom(SS, ST, TS, TT, source) {
        return new (_internal.CastStreamTransformer$(SS, ST, TS, TT)).new(source);
      }
    }
    (StreamTransformer[dart.mixinNew] = function() {
    }).prototype = StreamTransformer.prototype;
    dart.addTypeTests(StreamTransformer);
    StreamTransformer.prototype[_is_StreamTransformer_default] = true;
    return StreamTransformer;
  });
  async.StreamTransformer = async.StreamTransformer$();
  dart.addTypeTests(async.StreamTransformer, _is_StreamTransformer_default);
  const _is_StreamIterator_default = Symbol('_is_StreamIterator_default');
  async.StreamIterator$ = dart.generic(T => {
    let _StreamIteratorOfT = () => (_StreamIteratorOfT = dart.constFn(async._StreamIterator$(T)))();
    class StreamIterator extends core.Object {
      static new(stream) {
        return new (_StreamIteratorOfT()).new(stream);
      }
    }
    (StreamIterator[dart.mixinNew] = function() {
    }).prototype = StreamIterator.prototype;
    dart.addTypeTests(StreamIterator);
    StreamIterator.prototype[_is_StreamIterator_default] = true;
    return StreamIterator;
  });
  async.StreamIterator = async.StreamIterator$();
  dart.addTypeTests(async.StreamIterator, _is_StreamIterator_default);
  const _is__ControllerEventSinkWrapper_default = Symbol('_is__ControllerEventSinkWrapper_default');
  async._ControllerEventSinkWrapper$ = dart.generic(T => {
    let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
    class _ControllerEventSinkWrapper extends core.Object {
      add(data) {
        T._check(data);
        this[_sink].add(data);
      }
      addError(error, stackTrace) {
        if (stackTrace === void 0) stackTrace = null;
        this[_sink].addError(error, stackTrace);
      }
      close() {
        this[_sink].close();
      }
    }
    (_ControllerEventSinkWrapper.new = function(sink) {
      this[_sink] = sink;
    }).prototype = _ControllerEventSinkWrapper.prototype;
    dart.addTypeTests(_ControllerEventSinkWrapper);
    _ControllerEventSinkWrapper.prototype[_is__ControllerEventSinkWrapper_default] = true;
    _ControllerEventSinkWrapper[dart.implements] = () => [EventSinkOfT()];
    dart.setMethodSignature(_ControllerEventSinkWrapper, () => ({
      __proto__: dart.getMethods(_ControllerEventSinkWrapper.__proto__),
      add: dart.fnType(dart.void, [core.Object]),
      addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
      close: dart.fnType(dart.void, [])
    }));
    dart.setFieldSignature(_ControllerEventSinkWrapper, () => ({
      __proto__: dart.getFields(_ControllerEventSinkWrapper.__proto__),
      [_sink]: dart.fieldType(async.EventSink)
    }));
    return _ControllerEventSinkWrapper;
  });
  async._ControllerEventSinkWrapper = async._ControllerEventSinkWrapper$();
  dart.addTypeTests(async._ControllerEventSinkWrapper, _is__ControllerEventSinkWrapper_default);
  const _is_StreamController_default = Symbol('_is_StreamController_default');
  async.StreamController$ = dart.generic(T => {
    let _SyncStreamControllerOfT = () => (_SyncStreamControllerOfT = dart.constFn(async._SyncStreamController$(T)))();
    let _AsyncStreamControllerOfT = () => (_AsyncStreamControllerOfT = dart.constFn(async._AsyncStreamController$(T)))();
    let _SyncBroadcastStreamControllerOfT = () => (_SyncBroadcastStreamControllerOfT = dart.constFn(async._SyncBroadcastStreamController$(T)))();
    let _AsyncBroadcastStreamControllerOfT = () => (_AsyncBroadcastStreamControllerOfT = dart.constFn(async._AsyncBroadcastStreamController$(T)))();
    let StreamSinkOfT = () => (StreamSinkOfT = dart.constFn(async.StreamSink$(T)))();
    class StreamController extends core.Object {
      static new(opts) {
        let onListen = opts && 'onListen' in opts ? opts.onListen : null;
        let onPause = opts && 'onPause' in opts ? opts.onPause : null;
        let onResume = opts && 'onResume' in opts ? opts.onResume : null;
        let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
        let sync = opts && 'sync' in opts ? opts.sync : false;
        return dart.test(sync) ? new (_SyncStreamControllerOfT()).new(onListen, onPause, onResume, onCancel) : new (_AsyncStreamControllerOfT()).new(onListen, onPause, onResume, onCancel);
      }
      static broadcast(opts) {
        let onListen = opts && 'onListen' in opts ? opts.onListen : null;
        let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
        let sync = opts && 'sync' in opts ? opts.sync : false;
        return dart.test(sync) ? new (_SyncBroadcastStreamControllerOfT()).new(onListen, onCancel) : new (_AsyncBroadcastStreamControllerOfT()).new(onListen, onCancel);
      }
    }
    (StreamController[dart.mixinNew] = function() {
    }).prototype = StreamController.prototype;
    dart.addTypeTests(StreamController);
    StreamController.prototype[_is_StreamController_default] = true;
    StreamController[dart.implements] = () => [StreamSinkOfT()];
    return StreamController;
  });
  async.StreamController = async.StreamController$();
  dart.addTypeTests(async.StreamController, _is_StreamController_default);
  const _is_SynchronousStreamController_default = Symbol('_is_SynchronousStreamController_default');
  async.SynchronousStreamController$ = dart.generic(T => {
    let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
    class SynchronousStreamController extends core.Object {}
    (SynchronousStreamController.new = function() {
    }).prototype = SynchronousStreamController.prototype;
    dart.addTypeTests(SynchronousStreamController);
    SynchronousStreamController.prototype[_is_SynchronousStreamController_default] = true;
    SynchronousStreamController[dart.implements] = () => [StreamControllerOfT()];
    return SynchronousStreamController;
  });
  async.SynchronousStreamController = async.SynchronousStreamController$();
  dart.addTypeTests(async.SynchronousStreamController, _is_SynchronousStreamController_default);
  const _is__StreamControllerLifecycle_default = Symbol('_is__StreamControllerLifecycle_default');
  async._StreamControllerLifecycle$ = dart.generic(T => {
    let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
    class _StreamControllerLifecycle extends core.Object {
      [_recordPause](subscription) {
        StreamSubscriptionOfT()._check(subscription);
      }
      [_recordResume](subscription) {
        StreamSubscriptionOfT()._check(subscription);
      }
      [_recordCancel](subscription) {
        StreamSubscriptionOfT()._check(subscription);
        return null;
      }
    }
    (_StreamControllerLifecycle.new = function() {
    }).prototype = _StreamControllerLifecycle.prototype;
    dart.addTypeTests(_StreamControllerLifecycle);
    _StreamControllerLifecycle.prototype[_is__StreamControllerLifecycle_default] = true;
    dart.setMethodSignature(_StreamControllerLifecycle, () => ({
      __proto__: dart.getMethods(_StreamControllerLifecycle.__proto__),
      [_recordPause]: dart.fnType(dart.void, [core.Object]),
      [_recordResume]: dart.fnType(dart.void, [core.Object]),
      [_recordCancel]: dart.fnType(async.Future, [core.Object])
    }));
    return _StreamControllerLifecycle;
  });
  async._StreamControllerLifecycle = async._StreamControllerLifecycle$();
  dart.addTypeTests(async._StreamControllerLifecycle, _is__StreamControllerLifecycle_default);
  const _is__StreamControllerBase_default = Symbol('_is__StreamControllerBase_default');
  async._StreamControllerBase$ = dart.generic(T => {
    let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
    let _StreamControllerLifecycleOfT = () => (_StreamControllerLifecycleOfT = dart.constFn(async._StreamControllerLifecycle$(T)))();
    let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
    let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
    class _StreamControllerBase extends core.Object {}
    (_StreamControllerBase.new = function() {
    }).prototype = _StreamControllerBase.prototype;
    dart.addTypeTests(_StreamControllerBase);
    _StreamControllerBase.prototype[_is__StreamControllerBase_default] = true;
    _StreamControllerBase[dart.implements] = () => [StreamControllerOfT(), _StreamControllerLifecycleOfT(), _EventSinkOfT(), _EventDispatchOfT()];
    return _StreamControllerBase;
  });
  async._StreamControllerBase = async._StreamControllerBase$();
  dart.addTypeTests(async._StreamControllerBase, _is__StreamControllerBase_default);
  const _varData = Symbol('_varData');
  const _isInitialState = Symbol('_isInitialState');
  const _subscription = Symbol('_subscription');
  const _pendingEvents = Symbol('_pendingEvents');
  const _ensurePendingEvents = Symbol('_ensurePendingEvents');
  const _badEventState = Symbol('_badEventState');
  let const$12;
  const _is__StreamController_default = Symbol('_is__StreamController_default');
  async._StreamController$ = dart.generic(T => {
    let _ControllerStreamOfT = () => (_ControllerStreamOfT = dart.constFn(async._ControllerStream$(T)))();
    let _StreamSinkWrapperOfT = () => (_StreamSinkWrapperOfT = dart.constFn(async._StreamSinkWrapper$(T)))();
    let _PendingEventsOfT = () => (_PendingEventsOfT = dart.constFn(async._PendingEvents$(T)))();
    let _StreamControllerAddStreamStateOfT = () => (_StreamControllerAddStreamStateOfT = dart.constFn(async._StreamControllerAddStreamState$(T)))();
    let _StreamImplEventsOfT = () => (_StreamImplEventsOfT = dart.constFn(async._StreamImplEvents$(T)))();
    let _ControllerSubscriptionOfT = () => (_ControllerSubscriptionOfT = dart.constFn(async._ControllerSubscription$(T)))();
    let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
    let _DelayedDataOfT = () => (_DelayedDataOfT = dart.constFn(async._DelayedData$(T)))();
    let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
    let _StreamControllerBaseOfT = () => (_StreamControllerBaseOfT = dart.constFn(async._StreamControllerBase$(T)))();
    class _StreamController extends core.Object {
      get stream() {
        return new (_ControllerStreamOfT()).new(this);
      }
      get sink() {
        return new (_StreamSinkWrapperOfT()).new(this);
      }
      get [_isCanceled]() {
        return (dart.notNull(this[_state]) & 2) !== 0;
      }
      get hasListener() {
        return (dart.notNull(this[_state]) & 1) !== 0;
      }
      get [_isInitialState]() {
        return (dart.notNull(this[_state]) & 3) === 0;
      }
      get isClosed() {
        return (dart.notNull(this[_state]) & 4) !== 0;
      }
      get isPaused() {
        return dart.test(this.hasListener) ? this[_subscription][_isInputPaused] : !dart.test(this[_isCanceled]);
      }
      get [_isAddingStream]() {
        return (dart.notNull(this[_state]) & 8) !== 0;
      }
      get [_mayAddEvent]() {
        return dart.notNull(this[_state]) < 4;
      }
      get [_pendingEvents]() {
        if (!dart.test(this[_isInitialState])) dart.assertFailed();
        if (!dart.test(this[_isAddingStream])) {
          return _PendingEventsOfT()._check(this[_varData]);
        }
        let state = _StreamControllerAddStreamStateOfT()._check(this[_varData]);
        return _PendingEventsOfT()._check(state.varData);
      }
      [_ensurePendingEvents]() {
        if (!dart.test(this[_isInitialState])) dart.assertFailed();
        if (!dart.test(this[_isAddingStream])) {
          let t = this[_varData];
          t == null ? this[_varData] = new (_StreamImplEventsOfT()).new() : t;
          return _StreamImplEventsOfT()._check(this[_varData]);
        }
        let state = _StreamControllerAddStreamStateOfT()._check(this[_varData]);
        if (state.varData == null) state.varData = new (_StreamImplEventsOfT()).new();
        return _StreamImplEventsOfT()._check(state.varData);
      }
      get [_subscription]() {
        if (!dart.test(this.hasListener)) dart.assertFailed();
        if (dart.test(this[_isAddingStream])) {
          let addState = _StreamControllerAddStreamStateOfT()._check(this[_varData]);
          return _ControllerSubscriptionOfT()._check(addState.varData);
        }
        return _ControllerSubscriptionOfT()._check(this[_varData]);
      }
      [_badEventState]() {
        if (dart.test(this.isClosed)) {
          return new core.StateError.new("Cannot add event after closing");
        }
        if (!dart.test(this[_isAddingStream])) dart.assertFailed();
        return new core.StateError.new("Cannot add event while adding a stream");
      }
      addStream(source, opts) {
        StreamOfT()._check(source);
        let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
        if (!dart.test(this[_mayAddEvent])) dart.throw(this[_badEventState]());
        if (dart.test(this[_isCanceled])) return new async._Future.immediate(null);
        let addState = new (_StreamControllerAddStreamStateOfT()).new(this, this[_varData], source, cancelOnError != null ? cancelOnError : false);
        this[_varData] = addState;
        this[_state] = (dart.notNull(this[_state]) | 8) >>> 0;
        return addState.addStreamFuture;
      }
      get done() {
        return this[_ensureDoneFuture]();
      }
      [_ensureDoneFuture]() {
        let t = this[_doneFuture];
        t == null ? this[_doneFuture] = dart.test(this[_isCanceled]) ? async.Future._nullFuture : new async._Future.new() : t;
        return this[_doneFuture];
      }
      add(value) {
        T._check(value);
        if (!dart.test(this[_mayAddEvent])) dart.throw(this[_badEventState]());
        this[_add](value);
      }
      addError(error, stackTrace) {
        if (stackTrace === void 0) stackTrace = null;
        if (!dart.test(this[_mayAddEvent])) dart.throw(this[_badEventState]());
        error = async._nonNullError(error);
        let replacement = async.Zone.current.errorCallback(error, stackTrace);
        if (replacement != null) {
          error = async._nonNullError(replacement.error);
          stackTrace = replacement.stackTrace;
        }
        this[_addError](error, stackTrace);
      }
      close() {
        if (dart.test(this.isClosed)) {
          return this[_ensureDoneFuture]();
        }
        if (!dart.test(this[_mayAddEvent])) dart.throw(this[_badEventState]());
        this[_closeUnchecked]();
        return this[_ensureDoneFuture]();
      }
      [_closeUnchecked]() {
        this[_state] = (dart.notNull(this[_state]) | 4) >>> 0;
        if (dart.test(this.hasListener)) {
          this[_sendDone]();
        } else if (dart.test(this[_isInitialState])) {
          this[_ensurePendingEvents]().add(const$12 || (const$12 = dart.const(new async._DelayedDone.new())));
        }
      }
      [_add](value) {
        T._check(value);
        if (dart.test(this.hasListener)) {
          this[_sendData](value);
        } else if (dart.test(this[_isInitialState])) {
          this[_ensurePendingEvents]().add(new (_DelayedDataOfT()).new(value));
        }
      }
      [_addError](error, stackTrace) {
        if (dart.test(this.hasListener)) {
          this[_sendError](error, stackTrace);
        } else if (dart.test(this[_isInitialState])) {
          this[_ensurePendingEvents]().add(new async._DelayedError.new(error, stackTrace));
        }
      }
      [_close]() {
        if (!dart.test(this[_isAddingStream])) dart.assertFailed();
        let addState = _StreamControllerAddStreamStateOfT()._check(this[_varData]);
        this[_varData] = addState.varData;
        this[_state] = (dart.notNull(this[_state]) & ~8) >>> 0;
        addState.complete();
      }
      [_subscribe](onData, onError, onDone, cancelOnError) {
        if (!dart.test(this[_isInitialState])) {
          dart.throw(new core.StateError.new("Stream has already been listened to."));
        }
        let subscription = new (_ControllerSubscriptionOfT()).new(this, onData, onError, onDone, cancelOnError);
        let pendingEvents = this[_pendingEvents];
        this[_state] = (dart.notNull(this[_state]) | 1) >>> 0;
        if (dart.test(this[_isAddingStream])) {
          let addState = _StreamControllerAddStreamStateOfT()._check(this[_varData]);
          addState.varData = subscription;
          addState.resume();
        } else {
          this[_varData] = subscription;
        }
        subscription[_setPendingEvents](pendingEvents);
        subscription[_guardCallback](dart.fn(() => {
          async._runGuarded(this.onListen);
        }, VoidToNull()));
        return subscription;
      }
      [_recordCancel](subscription) {
        StreamSubscriptionOfT()._check(subscription);
        let result = null;
        if (dart.test(this[_isAddingStream])) {
          let addState = _StreamControllerAddStreamStateOfT()._check(this[_varData]);
          result = addState.cancel();
        }
        this[_varData] = null;
        this[_state] = (dart.notNull(this[_state]) & ~(1 | 8) | 2) >>> 0;
        if (this.onCancel != null) {
          if (result == null) {
            try {
              result = async.Future._check(this.onCancel());
            } catch (e$) {
              let e = dart.getThrown(e$);
              let s = dart.stackTrace(e$);
              result = new async._Future.new();
              result[_asyncCompleteError](e, s);
            }
          } else {
            result = result.whenComplete(this.onCancel);
          }
        }
        const complete = (function() {
          if (this[_doneFuture] != null && dart.test(this[_doneFuture][_mayComplete])) {
            this[_doneFuture][_asyncComplete](null);
          }
        }).bind(this);
        dart.fn(complete, VoidTovoid());
        if (result != null) {
          result = result.whenComplete(complete);
        } else {
          complete();
        }
        return result;
      }
      [_recordPause](subscription) {
        StreamSubscriptionOfT()._check(subscription);
        if (dart.test(this[_isAddingStream])) {
          let addState = _StreamControllerAddStreamStateOfT()._check(this[_varData]);
          addState.pause();
        }
        async._runGuarded(this.onPause);
      }
      [_recordResume](subscription) {
        StreamSubscriptionOfT()._check(subscription);
        if (dart.test(this[_isAddingStream])) {
          let addState = _StreamControllerAddStreamStateOfT()._check(this[_varData]);
          addState.resume();
        }
        async._runGuarded(this.onResume);
      }
    }
    (_StreamController.new = function(onListen, onPause, onResume, onCancel) {
      this[_varData] = null;
      this[_state] = 0;
      this[_doneFuture] = null;
      this.onListen = onListen;
      this.onPause = onPause;
      this.onResume = onResume;
      this.onCancel = onCancel;
    }).prototype = _StreamController.prototype;
    dart.addTypeTests(_StreamController);
    _StreamController.prototype[_is__StreamController_default] = true;
    _StreamController[dart.implements] = () => [_StreamControllerBaseOfT()];
    dart.setMethodSignature(_StreamController, () => ({
      __proto__: dart.getMethods(_StreamController.__proto__),
      [_ensurePendingEvents]: dart.fnType(async._StreamImplEvents$(T), []),
      [_badEventState]: dart.fnType(core.Error, []),
      addStream: dart.fnType(async.Future, [core.Object], {cancelOnError: core.bool}),
      [_ensureDoneFuture]: dart.fnType(async.Future, []),
      add: dart.fnType(dart.void, [core.Object]),
      addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
      close: dart.fnType(async.Future, []),
      [_closeUnchecked]: dart.fnType(dart.void, []),
      [_add]: dart.fnType(dart.void, [core.Object]),
      [_addError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
      [_close]: dart.fnType(dart.void, []),
      [_subscribe]: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T]), core.Function, dart.fnType(dart.void, []), core.bool]),
      [_recordCancel]: dart.fnType(async.Future, [core.Object]),
      [_recordPause]: dart.fnType(dart.void, [core.Object]),
      [_recordResume]: dart.fnType(dart.void, [core.Object])
    }));
    dart.setGetterSignature(_StreamController, () => ({
      __proto__: dart.getGetters(_StreamController.__proto__),
      stream: async.Stream$(T),
      sink: async.StreamSink$(T),
      [_isCanceled]: core.bool,
      hasListener: core.bool,
      [_isInitialState]: core.bool,
      isClosed: core.bool,
      isPaused: core.bool,
      [_isAddingStream]: core.bool,
      [_mayAddEvent]: core.bool,
      [_pendingEvents]: async._PendingEvents$(T),
      [_subscription]: async._ControllerSubscription$(T),
      done: async.Future
    }));
    dart.setFieldSignature(_StreamController, () => ({
      __proto__: dart.getFields(_StreamController.__proto__),
      [_varData]: dart.fieldType(dart.dynamic),
      [_state]: dart.fieldType(core.int),
      [_doneFuture]: dart.fieldType(async._Future),
      onListen: dart.fieldType(VoidTovoid()),
      onPause: dart.fieldType(VoidTovoid()),
      onResume: dart.fieldType(VoidTovoid()),
      onCancel: dart.fieldType(VoidTodynamic())
    }));
    return _StreamController;
  });
  async._StreamController = async._StreamController$();
  dart.defineLazy(async._StreamController, {
    /*async._StreamController._STATE_INITIAL*/get _STATE_INITIAL() {
      return 0;
    },
    /*async._StreamController._STATE_SUBSCRIBED*/get _STATE_SUBSCRIBED() {
      return 1;
    },
    /*async._StreamController._STATE_CANCELED*/get _STATE_CANCELED() {
      return 2;
    },
    /*async._StreamController._STATE_SUBSCRIPTION_MASK*/get _STATE_SUBSCRIPTION_MASK() {
      return 3;
    },
    /*async._StreamController._STATE_CLOSED*/get _STATE_CLOSED() {
      return 4;
    },
    /*async._StreamController._STATE_ADDSTREAM*/get _STATE_ADDSTREAM() {
      return 8;
    }
  });
  dart.addTypeTests(async._StreamController, _is__StreamController_default);
  const _is__SyncStreamControllerDispatch_default = Symbol('_is__SyncStreamControllerDispatch_default');
  async._SyncStreamControllerDispatch$ = dart.generic(T => {
    let _StreamControllerOfT = () => (_StreamControllerOfT = dart.constFn(async._StreamController$(T)))();
    let SynchronousStreamControllerOfT = () => (SynchronousStreamControllerOfT = dart.constFn(async.SynchronousStreamController$(T)))();
    class _SyncStreamControllerDispatch extends core.Object {
      [_sendData](data) {
        T._check(data);
        this[_subscription][_add](data);
      }
      [_sendError](error, stackTrace) {
        this[_subscription][_addError](error, stackTrace);
      }
      [_sendDone]() {
        this[_subscription][_close]();
      }
    }
    (_SyncStreamControllerDispatch.new = function() {
    }).prototype = _SyncStreamControllerDispatch.prototype;
    dart.addTypeTests(_SyncStreamControllerDispatch);
    _SyncStreamControllerDispatch.prototype[_is__SyncStreamControllerDispatch_default] = true;
    _SyncStreamControllerDispatch[dart.implements] = () => [_StreamControllerOfT(), SynchronousStreamControllerOfT()];
    dart.setMethodSignature(_SyncStreamControllerDispatch, () => ({
      __proto__: dart.getMethods(_SyncStreamControllerDispatch.__proto__),
      [_sendData]: dart.fnType(dart.void, [core.Object]),
      [_sendError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
      [_sendDone]: dart.fnType(dart.void, [])
    }));
    return _SyncStreamControllerDispatch;
  });
  async._SyncStreamControllerDispatch = async._SyncStreamControllerDispatch$();
  dart.addTypeTests(async._SyncStreamControllerDispatch, _is__SyncStreamControllerDispatch_default);
  let const$13;
  const _is__AsyncStreamControllerDispatch_default = Symbol('_is__AsyncStreamControllerDispatch_default');
  async._AsyncStreamControllerDispatch$ = dart.generic(T => {
    let _DelayedDataOfT = () => (_DelayedDataOfT = dart.constFn(async._DelayedData$(T)))();
    let _StreamControllerOfT = () => (_StreamControllerOfT = dart.constFn(async._StreamController$(T)))();
    class _AsyncStreamControllerDispatch extends core.Object {
      [_sendData](data) {
        T._check(data);
        this[_subscription][_addPending](new (_DelayedDataOfT()).new(data));
      }
      [_sendError](error, stackTrace) {
        this[_subscription][_addPending](new async._DelayedError.new(error, stackTrace));
      }
      [_sendDone]() {
        this[_subscription][_addPending](const$13 || (const$13 = dart.const(new async._DelayedDone.new())));
      }
    }
    (_AsyncStreamControllerDispatch.new = function() {
    }).prototype = _AsyncStreamControllerDispatch.prototype;
    dart.addTypeTests(_AsyncStreamControllerDispatch);
    _AsyncStreamControllerDispatch.prototype[_is__AsyncStreamControllerDispatch_default] = true;
    _AsyncStreamControllerDispatch[dart.implements] = () => [_StreamControllerOfT()];
    dart.setMethodSignature(_AsyncStreamControllerDispatch, () => ({
      __proto__: dart.getMethods(_AsyncStreamControllerDispatch.__proto__),
      [_sendData]: dart.fnType(dart.void, [core.Object]),
      [_sendError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
      [_sendDone]: dart.fnType(dart.void, [])
    }));
    return _AsyncStreamControllerDispatch;
  });
  async._AsyncStreamControllerDispatch = async._AsyncStreamControllerDispatch$();
  dart.addTypeTests(async._AsyncStreamControllerDispatch, _is__AsyncStreamControllerDispatch_default);
  const _is__AsyncStreamController_default = Symbol('_is__AsyncStreamController_default');
  async._AsyncStreamController$ = dart.generic(T => {
    const _StreamController__AsyncStreamControllerDispatch$ = class _StreamController__AsyncStreamControllerDispatch extends async._StreamController$(T) {};
    (_StreamController__AsyncStreamControllerDispatch$.new = function(onListen, onPause, onResume, onCancel) {
      _StreamController__AsyncStreamControllerDispatch$.__proto__.new.call(this, onListen, onPause, onResume, onCancel);
    }).prototype = _StreamController__AsyncStreamControllerDispatch$.prototype;
    dart.applyMixin(_StreamController__AsyncStreamControllerDispatch$, async._AsyncStreamControllerDispatch$(T));
    class _AsyncStreamController extends _StreamController__AsyncStreamControllerDispatch$ {}
    (_AsyncStreamController.new = function(onListen, onPause, onResume, onCancel) {
      _AsyncStreamController.__proto__.new.call(this, onListen, onPause, onResume, onCancel);
    }).prototype = _AsyncStreamController.prototype;
    dart.addTypeTests(_AsyncStreamController);
    _AsyncStreamController.prototype[_is__AsyncStreamController_default] = true;
    return _AsyncStreamController;
  });
  async._AsyncStreamController = async._AsyncStreamController$();
  dart.addTypeTests(async._AsyncStreamController, _is__AsyncStreamController_default);
  const _is__SyncStreamController_default = Symbol('_is__SyncStreamController_default');
  async._SyncStreamController$ = dart.generic(T => {
    const _StreamController__SyncStreamControllerDispatch$ = class _StreamController__SyncStreamControllerDispatch extends async._StreamController$(T) {};
    (_StreamController__SyncStreamControllerDispatch$.new = function(onListen, onPause, onResume, onCancel) {
      _StreamController__SyncStreamControllerDispatch$.__proto__.new.call(this, onListen, onPause, onResume, onCancel);
    }).prototype = _StreamController__SyncStreamControllerDispatch$.prototype;
    dart.applyMixin(_StreamController__SyncStreamControllerDispatch$, async._SyncStreamControllerDispatch$(T));
    class _SyncStreamController extends _StreamController__SyncStreamControllerDispatch$ {}
    (_SyncStreamController.new = function(onListen, onPause, onResume, onCancel) {
      _SyncStreamController.__proto__.new.call(this, onListen, onPause, onResume, onCancel);
    }).prototype = _SyncStreamController.prototype;
    dart.addTypeTests(_SyncStreamController);
    _SyncStreamController.prototype[_is__SyncStreamController_default] = true;
    return _SyncStreamController;
  });
  async._SyncStreamController = async._SyncStreamController$();
  dart.addTypeTests(async._SyncStreamController, _is__SyncStreamController_default);
  async._runGuarded = function(notificationHandler) {
    if (notificationHandler == null) return;
    try {
      notificationHandler();
    } catch (e$) {
      let e = dart.getThrown(e$);
      let s = dart.stackTrace(e$);
      async.Zone.current.handleUncaughtError(e, s);
    }
  };
  const _target = Symbol('_target');
  const _is__StreamSinkWrapper_default = Symbol('_is__StreamSinkWrapper_default');
  async._StreamSinkWrapper$ = dart.generic(T => {
    let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
    let StreamSinkOfT = () => (StreamSinkOfT = dart.constFn(async.StreamSink$(T)))();
    class _StreamSinkWrapper extends core.Object {
      add(data) {
        T._check(data);
        this[_target].add(data);
      }
      addError(error, stackTrace) {
        if (stackTrace === void 0) stackTrace = null;
        this[_target].addError(error, stackTrace);
      }
      close() {
        return this[_target].close();
      }
      addStream(source) {
        StreamOfT()._check(source);
        return this[_target].addStream(source);
      }
      get done() {
        return this[_target].done;
      }
    }
    (_StreamSinkWrapper.new = function(target) {
      this[_target] = target;
    }).prototype = _StreamSinkWrapper.prototype;
    dart.addTypeTests(_StreamSinkWrapper);
    _StreamSinkWrapper.prototype[_is__StreamSinkWrapper_default] = true;
    _StreamSinkWrapper[dart.implements] = () => [StreamSinkOfT()];
    dart.setMethodSignature(_StreamSinkWrapper, () => ({
      __proto__: dart.getMethods(_StreamSinkWrapper.__proto__),
      add: dart.fnType(dart.void, [core.Object]),
      addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
      close: dart.fnType(async.Future, []),
      addStream: dart.fnType(async.Future, [core.Object])
    }));
    dart.setGetterSignature(_StreamSinkWrapper, () => ({
      __proto__: dart.getGetters(_StreamSinkWrapper.__proto__),
      done: async.Future
    }));
    dart.setFieldSignature(_StreamSinkWrapper, () => ({
      __proto__: dart.getFields(_StreamSinkWrapper.__proto__),
      [_target]: dart.finalFieldType(async.StreamController)
    }));
    return _StreamSinkWrapper;
  });
  async._StreamSinkWrapper = async._StreamSinkWrapper$();
  dart.addTypeTests(async._StreamSinkWrapper, _is__StreamSinkWrapper_default);
  const _is__AddStreamState_default = Symbol('_is__AddStreamState_default');
  async._AddStreamState$ = dart.generic(T => {
    class _AddStreamState extends core.Object {
      static makeErrorHandler(controller) {
        return dart.fn((e, s) => {
          controller[_addError](e, s);
          controller[_close]();
        }, dynamicAndStackTraceToNull());
      }
      pause() {
        this.addSubscription.pause();
      }
      resume() {
        this.addSubscription.resume();
      }
      cancel() {
        let cancel = this.addSubscription.cancel();
        if (cancel == null) {
          this.addStreamFuture[_asyncComplete](null);
          return null;
        }
        return cancel.whenComplete(dart.fn(() => {
          this.addStreamFuture[_asyncComplete](null);
        }, VoidToNull()));
      }
      complete() {
        this.addStreamFuture[_asyncComplete](null);
      }
    }
    (_AddStreamState.new = function(controller, source, cancelOnError) {
      this.addStreamFuture = new async._Future.new();
      this.addSubscription = source.listen(dart.bind(controller, _add), {onError: core.Function._check(dart.test(cancelOnError) ? async._AddStreamState.makeErrorHandler(controller) : dart.bind(controller, _addError)), onDone: dart.bind(controller, _close), cancelOnError: cancelOnError});
    }).prototype = _AddStreamState.prototype;
    dart.addTypeTests(_AddStreamState);
    _AddStreamState.prototype[_is__AddStreamState_default] = true;
    dart.setMethodSignature(_AddStreamState, () => ({
      __proto__: dart.getMethods(_AddStreamState.__proto__),
      pause: dart.fnType(dart.void, []),
      resume: dart.fnType(dart.void, []),
      cancel: dart.fnType(async.Future, []),
      complete: dart.fnType(dart.void, [])
    }));
    dart.setFieldSignature(_AddStreamState, () => ({
      __proto__: dart.getFields(_AddStreamState.__proto__),
      addStreamFuture: dart.finalFieldType(async._Future),
      addSubscription: dart.finalFieldType(async.StreamSubscription)
    }));
    return _AddStreamState;
  });
  async._AddStreamState = async._AddStreamState$();
  dart.addTypeTests(async._AddStreamState, _is__AddStreamState_default);
  const _is__StreamControllerAddStreamState_default = Symbol('_is__StreamControllerAddStreamState_default');
  async._StreamControllerAddStreamState$ = dart.generic(T => {
    class _StreamControllerAddStreamState extends async._AddStreamState$(T) {}
    (_StreamControllerAddStreamState.new = function(controller, varData, source, cancelOnError) {
      this.varData = varData;
      _StreamControllerAddStreamState.__proto__.new.call(this, controller, source, cancelOnError);
      if (dart.test(controller.isPaused)) {
        this.addSubscription.pause();
      }
    }).prototype = _StreamControllerAddStreamState.prototype;
    dart.addTypeTests(_StreamControllerAddStreamState);
    _StreamControllerAddStreamState.prototype[_is__StreamControllerAddStreamState_default] = true;
    dart.setFieldSignature(_StreamControllerAddStreamState, () => ({
      __proto__: dart.getFields(_StreamControllerAddStreamState.__proto__),
      varData: dart.fieldType(dart.dynamic)
    }));
    return _StreamControllerAddStreamState;
  });
  async._StreamControllerAddStreamState = async._StreamControllerAddStreamState$();
  dart.addTypeTests(async._StreamControllerAddStreamState, _is__StreamControllerAddStreamState_default);
  const _is__EventSink_default = Symbol('_is__EventSink_default');
  async._EventSink$ = dart.generic(T => {
    class _EventSink extends core.Object {}
    (_EventSink.new = function() {
    }).prototype = _EventSink.prototype;
    dart.addTypeTests(_EventSink);
    _EventSink.prototype[_is__EventSink_default] = true;
    return _EventSink;
  });
  async._EventSink = async._EventSink$();
  dart.addTypeTests(async._EventSink, _is__EventSink_default);
  const _is__EventDispatch_default = Symbol('_is__EventDispatch_default');
  async._EventDispatch$ = dart.generic(T => {
    class _EventDispatch extends core.Object {}
    (_EventDispatch.new = function() {
    }).prototype = _EventDispatch.prototype;
    dart.addTypeTests(_EventDispatch);
    _EventDispatch.prototype[_is__EventDispatch_default] = true;
    return _EventDispatch;
  });
  async._EventDispatch = async._EventDispatch$();
  dart.addTypeTests(async._EventDispatch, _is__EventDispatch_default);
  const _isUsed = Symbol('_isUsed');
  const _is__GeneratedStreamImpl_default = Symbol('_is__GeneratedStreamImpl_default');
  async._GeneratedStreamImpl$ = dart.generic(T => {
    let _BufferingStreamSubscriptionOfT = () => (_BufferingStreamSubscriptionOfT = dart.constFn(async._BufferingStreamSubscription$(T)))();
    let _PendingEventsOfT = () => (_PendingEventsOfT = dart.constFn(async._PendingEvents$(T)))();
    let VoidTo_PendingEventsOfT = () => (VoidTo_PendingEventsOfT = dart.constFn(dart.fnType(_PendingEventsOfT(), [])))();
    class _GeneratedStreamImpl extends async._StreamImpl$(T) {
      [_createSubscription](onData, onError, onDone, cancelOnError) {
        if (dart.test(this[_isUsed])) dart.throw(new core.StateError.new("Stream has already been listened to."));
        this[_isUsed] = true;
        let _ = new (_BufferingStreamSubscriptionOfT()).new(onData, onError, onDone, cancelOnError);
        _[_setPendingEvents](this[_pending]());
        return _;
      }
    }
    (_GeneratedStreamImpl.new = function(pending) {
      this[_isUsed] = false;
      this[_pending] = pending;
      _GeneratedStreamImpl.__proto__.new.call(this);
    }).prototype = _GeneratedStreamImpl.prototype;
    dart.addTypeTests(_GeneratedStreamImpl);
    _GeneratedStreamImpl.prototype[_is__GeneratedStreamImpl_default] = true;
    dart.setFieldSignature(_GeneratedStreamImpl, () => ({
      __proto__: dart.getFields(_GeneratedStreamImpl.__proto__),
      [_pending]: dart.finalFieldType(VoidTo_PendingEventsOfT()),
      [_isUsed]: dart.fieldType(core.bool)
    }));
    return _GeneratedStreamImpl;
  });
  async._GeneratedStreamImpl = async._GeneratedStreamImpl$();
  dart.addTypeTests(async._GeneratedStreamImpl, _is__GeneratedStreamImpl_default);
  const _iterator$ = Symbol('_iterator');
  let const$14;
  const _eventScheduled = Symbol('_eventScheduled');
  const _is__PendingEvents_default = Symbol('_is__PendingEvents_default');
  async._PendingEvents$ = dart.generic(T => {
    let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
    class _PendingEvents extends core.Object {
      get isScheduled() {
        return this[_state] === 1;
      }
      get [_eventScheduled]() {
        return dart.notNull(this[_state]) >= 1;
      }
      schedule(dispatch) {
        _EventDispatchOfT()._check(dispatch);
        if (dart.test(this.isScheduled)) return;
        if (!!dart.test(this.isEmpty)) dart.assertFailed();
        if (dart.test(this[_eventScheduled])) {
          if (!(this[_state] === 3)) dart.assertFailed();
          this[_state] = 1;
          return;
        }
        async.scheduleMicrotask(dart.fn(() => {
          let oldState = this[_state];
          this[_state] = 0;
          if (oldState === 3) return;
          this.handleNext(dispatch);
        }, VoidToNull()));
        this[_state] = 1;
      }
      cancelSchedule() {
        if (dart.test(this.isScheduled)) this[_state] = 3;
      }
    }
    (_PendingEvents.new = function() {
      this[_state] = 0;
    }).prototype = _PendingEvents.prototype;
    dart.addTypeTests(_PendingEvents);
    _PendingEvents.prototype[_is__PendingEvents_default] = true;
    dart.setMethodSignature(_PendingEvents, () => ({
      __proto__: dart.getMethods(_PendingEvents.__proto__),
      schedule: dart.fnType(dart.void, [core.Object]),
      cancelSchedule: dart.fnType(dart.void, [])
    }));
    dart.setGetterSignature(_PendingEvents, () => ({
      __proto__: dart.getGetters(_PendingEvents.__proto__),
      isScheduled: core.bool,
      [_eventScheduled]: core.bool
    }));
    dart.setFieldSignature(_PendingEvents, () => ({
      __proto__: dart.getFields(_PendingEvents.__proto__),
      [_state]: dart.fieldType(core.int)
    }));
    return _PendingEvents;
  });
  async._PendingEvents = async._PendingEvents$();
  dart.defineLazy(async._PendingEvents, {
    /*async._PendingEvents._STATE_UNSCHEDULED*/get _STATE_UNSCHEDULED() {
      return 0;
    },
    /*async._PendingEvents._STATE_SCHEDULED*/get _STATE_SCHEDULED() {
      return 1;
    },
    /*async._PendingEvents._STATE_CANCELED*/get _STATE_CANCELED() {
      return 3;
    }
  });
  dart.addTypeTests(async._PendingEvents, _is__PendingEvents_default);
  const _is__IterablePendingEvents_default = Symbol('_is__IterablePendingEvents_default');
  async._IterablePendingEvents$ = dart.generic(T => {
    let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
    let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
    class _IterablePendingEvents extends async._PendingEvents$(T) {
      get isEmpty() {
        return this[_iterator$] == null;
      }
      handleNext(dispatch) {
        _EventDispatchOfT()._check(dispatch);
        if (this[_iterator$] == null) {
          dart.throw(new core.StateError.new("No events pending."));
        }
        let hasMore = null;
        try {
          hasMore = this[_iterator$].moveNext();
          if (dart.test(hasMore)) {
            dispatch[_sendData](this[_iterator$].current);
          } else {
            this[_iterator$] = null;
            dispatch[_sendDone]();
          }
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          if (hasMore == null) {
            this[_iterator$] = const$14 || (const$14 = dart.const(new (EmptyIteratorOfNull()).new()));
            dispatch[_sendError](e, s);
          } else {
            dispatch[_sendError](e, s);
          }
        }
      }
      clear() {
        if (dart.test(this.isScheduled)) this.cancelSchedule();
        this[_iterator$] = null;
      }
    }
    (_IterablePendingEvents.new = function(data) {
      this[_iterator$] = data[$iterator];
      _IterablePendingEvents.__proto__.new.call(this);
    }).prototype = _IterablePendingEvents.prototype;
    dart.addTypeTests(_IterablePendingEvents);
    _IterablePendingEvents.prototype[_is__IterablePendingEvents_default] = true;
    dart.setMethodSignature(_IterablePendingEvents, () => ({
      __proto__: dart.getMethods(_IterablePendingEvents.__proto__),
      handleNext: dart.fnType(dart.void, [core.Object]),
      clear: dart.fnType(dart.void, [])
    }));
    dart.setGetterSignature(_IterablePendingEvents, () => ({
      __proto__: dart.getGetters(_IterablePendingEvents.__proto__),
      isEmpty: core.bool
    }));
    dart.setFieldSignature(_IterablePendingEvents, () => ({
      __proto__: dart.getFields(_IterablePendingEvents.__proto__),
      [_iterator$]: dart.fieldType(IteratorOfT())
    }));
    return _IterablePendingEvents;
  });
  async._IterablePendingEvents = async._IterablePendingEvents$();
  dart.addTypeTests(async._IterablePendingEvents, _is__IterablePendingEvents_default);
  async._nullDataHandler = function(value) {
  };
  async._nullErrorHandler = function(error, stackTrace) {
    if (stackTrace === void 0) stackTrace = null;
    async.Zone.current.handleUncaughtError(error, stackTrace);
  };
  async._nullDoneHandler = function() {
  };
  const _is__DelayedEvent_default = Symbol('_is__DelayedEvent_default');
  async._DelayedEvent$ = dart.generic(T => {
    class _DelayedEvent extends core.Object {}
    (_DelayedEvent.new = function() {
      this.next = null;
    }).prototype = _DelayedEvent.prototype;
    dart.addTypeTests(_DelayedEvent);
    _DelayedEvent.prototype[_is__DelayedEvent_default] = true;
    dart.setFieldSignature(_DelayedEvent, () => ({
      __proto__: dart.getFields(_DelayedEvent.__proto__),
      next: dart.fieldType(async._DelayedEvent)
    }));
    return _DelayedEvent;
  });
  async._DelayedEvent = async._DelayedEvent$();
  dart.addTypeTests(async._DelayedEvent, _is__DelayedEvent_default);
  const _is__DelayedData_default = Symbol('_is__DelayedData_default');
  async._DelayedData$ = dart.generic(T => {
    let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
    class _DelayedData extends async._DelayedEvent$(T) {
      perform(dispatch) {
        _EventDispatchOfT()._check(dispatch);
        dispatch[_sendData](this.value);
      }
    }
    (_DelayedData.new = function(value) {
      this.value = value;
      _DelayedData.__proto__.new.call(this);
    }).prototype = _DelayedData.prototype;
    dart.addTypeTests(_DelayedData);
    _DelayedData.prototype[_is__DelayedData_default] = true;
    dart.setMethodSignature(_DelayedData, () => ({
      __proto__: dart.getMethods(_DelayedData.__proto__),
      perform: dart.fnType(dart.void, [core.Object])
    }));
    dart.setFieldSignature(_DelayedData, () => ({
      __proto__: dart.getFields(_DelayedData.__proto__),
      value: dart.finalFieldType(T)
    }));
    return _DelayedData;
  });
  async._DelayedData = async._DelayedData$();
  dart.addTypeTests(async._DelayedData, _is__DelayedData_default);
  async._DelayedError = class _DelayedError extends async._DelayedEvent {
    perform(dispatch) {
      dispatch[_sendError](this.error, this.stackTrace);
    }
  };
  (async._DelayedError.new = function(error, stackTrace) {
    this.error = error;
    this.stackTrace = stackTrace;
    async._DelayedError.__proto__.new.call(this);
  }).prototype = async._DelayedError.prototype;
  dart.addTypeTests(async._DelayedError);
  dart.setMethodSignature(async._DelayedError, () => ({
    __proto__: dart.getMethods(async._DelayedError.__proto__),
    perform: dart.fnType(dart.void, [async._EventDispatch])
  }));
  dart.setFieldSignature(async._DelayedError, () => ({
    __proto__: dart.getFields(async._DelayedError.__proto__),
    error: dart.finalFieldType(dart.dynamic),
    stackTrace: dart.finalFieldType(core.StackTrace)
  }));
  async._DelayedDone = class _DelayedDone extends core.Object {
    perform(dispatch) {
      dispatch[_sendDone]();
    }
    get next() {
      return null;
    }
    set next(_) {
      dart.throw(new core.StateError.new("No events after a done."));
    }
  };
  (async._DelayedDone.new = function() {
  }).prototype = async._DelayedDone.prototype;
  dart.addTypeTests(async._DelayedDone);
  async._DelayedDone[dart.implements] = () => [async._DelayedEvent];
  dart.setMethodSignature(async._DelayedDone, () => ({
    __proto__: dart.getMethods(async._DelayedDone.__proto__),
    perform: dart.fnType(dart.void, [async._EventDispatch])
  }));
  dart.setGetterSignature(async._DelayedDone, () => ({
    __proto__: dart.getGetters(async._DelayedDone.__proto__),
    next: async._DelayedEvent
  }));
  dart.setSetterSignature(async._DelayedDone, () => ({
    __proto__: dart.getSetters(async._DelayedDone.__proto__),
    next: async._DelayedEvent
  }));
  const _is__StreamImplEvents_default = Symbol('_is__StreamImplEvents_default');
  async._StreamImplEvents$ = dart.generic(T => {
    let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
    class _StreamImplEvents extends async._PendingEvents$(T) {
      get isEmpty() {
        return this.lastPendingEvent == null;
      }
      add(event) {
        if (this.lastPendingEvent == null) {
          this.firstPendingEvent = this.lastPendingEvent = event;
        } else {
          this.lastPendingEvent = this.lastPendingEvent.next = event;
        }
      }
      handleNext(dispatch) {
        _EventDispatchOfT()._check(dispatch);
        if (!!dart.test(this.isScheduled)) dart.assertFailed();
        let event = this.firstPendingEvent;
        this.firstPendingEvent = event.next;
        if (this.firstPendingEvent == null) {
          this.lastPendingEvent = null;
        }
        event.perform(dispatch);
      }
      clear() {
        if (dart.test(this.isScheduled)) this.cancelSchedule();
        this.firstPendingEvent = this.lastPendingEvent = null;
      }
    }
    (_StreamImplEvents.new = function() {
      this.firstPendingEvent = null;
      this.lastPendingEvent = null;
      _StreamImplEvents.__proto__.new.call(this);
    }).prototype = _StreamImplEvents.prototype;
    dart.addTypeTests(_StreamImplEvents);
    _StreamImplEvents.prototype[_is__StreamImplEvents_default] = true;
    dart.setMethodSignature(_StreamImplEvents, () => ({
      __proto__: dart.getMethods(_StreamImplEvents.__proto__),
      add: dart.fnType(dart.void, [async._DelayedEvent]),
      handleNext: dart.fnType(dart.void, [core.Object]),
      clear: dart.fnType(dart.void, [])
    }));
    dart.setGetterSignature(_StreamImplEvents, () => ({
      __proto__: dart.getGetters(_StreamImplEvents.__proto__),
      isEmpty: core.bool
    }));
    dart.setFieldSignature(_StreamImplEvents, () => ({
      __proto__: dart.getFields(_StreamImplEvents.__proto__),
      firstPendingEvent: dart.fieldType(async._DelayedEvent),
      lastPendingEvent: dart.fieldType(async._DelayedEvent)
    }));
    return _StreamImplEvents;
  });
  async._StreamImplEvents = async._StreamImplEvents$();
  dart.addTypeTests(async._StreamImplEvents, _is__StreamImplEvents_default);
  const _schedule = Symbol('_schedule');
  const _isSent = Symbol('_isSent');
  const _isScheduled = Symbol('_isScheduled');
  const _is__DoneStreamSubscription_default = Symbol('_is__DoneStreamSubscription_default');
  async._DoneStreamSubscription$ = dart.generic(T => {
    let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
    class _DoneStreamSubscription extends core.Object {
      get [_isSent]() {
        return (dart.notNull(this[_state]) & 1) !== 0;
      }
      get [_isScheduled]() {
        return (dart.notNull(this[_state]) & 2) !== 0;
      }
      get isPaused() {
        return dart.notNull(this[_state]) >= 4;
      }
      [_schedule]() {
        if (dart.test(this[_isScheduled])) return;
        this[_zone$].scheduleMicrotask(dart.bind(this, _sendDone));
        this[_state] = (dart.notNull(this[_state]) | 2) >>> 0;
      }
      onData(handleData) {}
      onError(handleError) {}
      onDone(handleDone) {
        this[_onDone] = handleDone;
      }
      pause(resumeSignal) {
        if (resumeSignal === void 0) resumeSignal = null;
        this[_state] = dart.notNull(this[_state]) + 4;
        if (resumeSignal != null) resumeSignal.whenComplete(dart.bind(this, 'resume'));
      }
      resume() {
        if (dart.test(this.isPaused)) {
          this[_state] = dart.notNull(this[_state]) - 4;
          if (!dart.test(this.isPaused) && !dart.test(this[_isSent])) {
            this[_schedule]();
          }
        }
      }
      cancel() {
        return async.Future._nullFuture;
      }
      asFuture(E, futureValue) {
        if (futureValue === void 0) futureValue = null;
        let result = new (async._Future$(E)).new();
        this[_onDone] = dart.fn(() => {
          result[_completeWithValue](futureValue);
        }, VoidToNull());
        return result;
      }
      [_sendDone]() {
        this[_state] = (dart.notNull(this[_state]) & ~2) >>> 0;
        if (dart.test(this.isPaused)) return;
        this[_state] = (dart.notNull(this[_state]) | 1) >>> 0;
        if (this[_onDone] != null) this[_zone$].runGuarded(this[_onDone]);
      }
    }
    (_DoneStreamSubscription.new = function(onDone) {
      this[_state] = 0;
      this[_onDone] = onDone;
      this[_zone$] = async.Zone.current;
      this[_schedule]();
    }).prototype = _DoneStreamSubscription.prototype;
    _DoneStreamSubscription.prototype[dart.isStreamSubscription] = true;
    dart.addTypeTests(_DoneStreamSubscription);
    _DoneStreamSubscription.prototype[_is__DoneStreamSubscription_default] = true;
    _DoneStreamSubscription[dart.implements] = () => [StreamSubscriptionOfT()];
    dart.setMethodSignature(_DoneStreamSubscription, () => ({
      __proto__: dart.getMethods(_DoneStreamSubscription.__proto__),
      [_schedule]: dart.fnType(dart.void, []),
      onData: dart.fnType(dart.void, [dart.fnType(dart.void, [T])]),
      onError: dart.fnType(dart.void, [core.Function]),
      onDone: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
      pause: dart.fnType(dart.void, [], [async.Future]),
      resume: dart.fnType(dart.void, []),
      cancel: dart.fnType(async.Future, []),
      asFuture: dart.gFnType(E => [async.Future$(E), [], [E]]),
      [_sendDone]: dart.fnType(dart.void, [])
    }));
    dart.setGetterSignature(_DoneStreamSubscription, () => ({
      __proto__: dart.getGetters(_DoneStreamSubscription.__proto__),
      [_isSent]: core.bool,
      [_isScheduled]: core.bool,
      isPaused: core.bool
    }));
    dart.setFieldSignature(_DoneStreamSubscription, () => ({
      __proto__: dart.getFields(_DoneStreamSubscription.__proto__),
      [_zone$]: dart.finalFieldType(async.Zone),
      [_state]: dart.fieldType(core.int),
      [_onDone]: dart.fieldType(VoidTovoid())
    }));
    return _DoneStreamSubscription;
  });
  async._DoneStreamSubscription = async._DoneStreamSubscription$();
  dart.defineLazy(async._DoneStreamSubscription, {
    /*async._DoneStreamSubscription._DONE_SENT*/get _DONE_SENT() {
      return 1;
    },
    /*async._DoneStreamSubscription._SCHEDULED*/get _SCHEDULED() {
      return 2;
    },
    /*async._DoneStreamSubscription._PAUSED*/get _PAUSED() {
      return 4;
    }
  });
  dart.addTypeTests(async._DoneStreamSubscription, _is__DoneStreamSubscription_default);
  const _source$ = Symbol('_source');
  const _onListenHandler = Symbol('_onListenHandler');
  const _onCancelHandler = Symbol('_onCancelHandler');
  const _cancelSubscription = Symbol('_cancelSubscription');
  const _pauseSubscription = Symbol('_pauseSubscription');
  const _resumeSubscription = Symbol('_resumeSubscription');
  const _isSubscriptionPaused = Symbol('_isSubscriptionPaused');
  const _is__AsBroadcastStream_default = Symbol('_is__AsBroadcastStream_default');
  async._AsBroadcastStream$ = dart.generic(T => {
    let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
    let _AsBroadcastStreamControllerOfT = () => (_AsBroadcastStreamControllerOfT = dart.constFn(async._AsBroadcastStreamController$(T)))();
    let _DoneStreamSubscriptionOfT = () => (_DoneStreamSubscriptionOfT = dart.constFn(async._DoneStreamSubscription$(T)))();
    let _BroadcastSubscriptionWrapperOfT = () => (_BroadcastSubscriptionWrapperOfT = dart.constFn(async._BroadcastSubscriptionWrapper$(T)))();
    let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
    let StreamSubscriptionOfTTovoid = () => (StreamSubscriptionOfTTovoid = dart.constFn(dart.fnType(dart.void, [StreamSubscriptionOfT()])))();
    class _AsBroadcastStream extends async.Stream$(T) {
      get isBroadcast() {
        return true;
      }
      listen(onData, opts) {
        let onError = opts && 'onError' in opts ? opts.onError : null;
        let onDone = opts && 'onDone' in opts ? opts.onDone : null;
        let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
        if (this[_controller] == null || dart.test(this[_controller].isClosed)) {
          return new (_DoneStreamSubscriptionOfT()).new(onDone);
        }
        let t = this[_subscription];
        t == null ? this[_subscription] = this[_source$].listen(dart.bind(this[_controller], 'add'), {onError: dart.bind(this[_controller], 'addError'), onDone: dart.bind(this[_controller], 'close')}) : t;
        cancelOnError = true === cancelOnError;
        return this[_controller][_subscribe](onData, onError, onDone, cancelOnError);
      }
      [_onCancel]() {
        let shutdown = this[_controller] == null || dart.test(this[_controller].isClosed);
        if (this[_onCancelHandler] != null) {
          this[_zone$].runUnary(dart.void, _BroadcastSubscriptionWrapperOfT(), this[_onCancelHandler], new (_BroadcastSubscriptionWrapperOfT()).new(this));
        }
        if (shutdown) {
          if (this[_subscription] != null) {
            this[_subscription].cancel();
            this[_subscription] = null;
          }
        }
      }
      [_onListen]() {
        if (this[_onListenHandler] != null) {
          this[_zone$].runUnary(dart.void, _BroadcastSubscriptionWrapperOfT(), this[_onListenHandler], new (_BroadcastSubscriptionWrapperOfT()).new(this));
        }
      }
      [_cancelSubscription]() {
        if (this[_subscription] == null) return;
        let subscription = this[_subscription];
        this[_subscription] = null;
        this[_controller] = null;
        subscription.cancel();
      }
      [_pauseSubscription](resumeSignal) {
        if (this[_subscription] == null) return;
        this[_subscription].pause(resumeSignal);
      }
      [_resumeSubscription]() {
        if (this[_subscription] == null) return;
        this[_subscription].resume();
      }
      get [_isSubscriptionPaused]() {
        if (this[_subscription] == null) return false;
        return this[_subscription].isPaused;
      }
    }
    (_AsBroadcastStream.new = function(source, onListenHandler, onCancelHandler) {
      this[_controller] = null;
      this[_subscription] = null;
      this[_source$] = source;
      this[_onListenHandler] = async.Zone.current.registerUnaryCallback(dart.dynamic, StreamSubscriptionOfT(), onListenHandler);
      this[_onCancelHandler] = async.Zone.current.registerUnaryCallback(dart.dynamic, StreamSubscriptionOfT(), onCancelHandler);
      this[_zone$] = async.Zone.current;
      _AsBroadcastStream.__proto__.new.call(this);
      this[_controller] = new (_AsBroadcastStreamControllerOfT()).new(dart.bind(this, _onListen), dart.bind(this, _onCancel));
    }).prototype = _AsBroadcastStream.prototype;
    dart.addTypeTests(_AsBroadcastStream);
    _AsBroadcastStream.prototype[_is__AsBroadcastStream_default] = true;
    dart.setMethodSignature(_AsBroadcastStream, () => ({
      __proto__: dart.getMethods(_AsBroadcastStream.__proto__),
      listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
      [_onCancel]: dart.fnType(dart.void, []),
      [_onListen]: dart.fnType(dart.void, []),
      [_cancelSubscription]: dart.fnType(dart.void, []),
      [_pauseSubscription]: dart.fnType(dart.void, [async.Future]),
      [_resumeSubscription]: dart.fnType(dart.void, [])
    }));
    dart.setGetterSignature(_AsBroadcastStream, () => ({
      __proto__: dart.getGetters(_AsBroadcastStream.__proto__),
      [_isSubscriptionPaused]: core.bool
    }));
    dart.setFieldSignature(_AsBroadcastStream, () => ({
      __proto__: dart.getFields(_AsBroadcastStream.__proto__),
      [_source$]: dart.finalFieldType(StreamOfT()),
      [_onListenHandler]: dart.finalFieldType(StreamSubscriptionOfTTovoid()),
      [_onCancelHandler]: dart.finalFieldType(StreamSubscriptionOfTTovoid()),
      [_zone$]: dart.finalFieldType(async.Zone),
      [_controller]: dart.fieldType(_AsBroadcastStreamControllerOfT()),
      [_subscription]: dart.fieldType(StreamSubscriptionOfT())
    }));
    return _AsBroadcastStream;
  });
  async._AsBroadcastStream = async._AsBroadcastStream$();
  dart.addTypeTests(async._AsBroadcastStream, _is__AsBroadcastStream_default);
  const _is__BroadcastSubscriptionWrapper_default = Symbol('_is__BroadcastSubscriptionWrapper_default');
  async._BroadcastSubscriptionWrapper$ = dart.generic(T => {
    let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
    class _BroadcastSubscriptionWrapper extends core.Object {
      onData(handleData) {
        dart.throw(new core.UnsupportedError.new("Cannot change handlers of asBroadcastStream source subscription."));
      }
      onError(handleError) {
        dart.throw(new core.UnsupportedError.new("Cannot change handlers of asBroadcastStream source subscription."));
      }
      onDone(handleDone) {
        dart.throw(new core.UnsupportedError.new("Cannot change handlers of asBroadcastStream source subscription."));
      }
      pause(resumeSignal) {
        if (resumeSignal === void 0) resumeSignal = null;
        this[_stream][_pauseSubscription](resumeSignal);
      }
      resume() {
        this[_stream][_resumeSubscription]();
      }
      cancel() {
        this[_stream][_cancelSubscription]();
        return async.Future._nullFuture;
      }
      get isPaused() {
        return this[_stream][_isSubscriptionPaused];
      }
      asFuture(E, futureValue) {
        if (futureValue === void 0) futureValue = null;
        dart.throw(new core.UnsupportedError.new("Cannot change handlers of asBroadcastStream source subscription."));
      }
    }
    (_BroadcastSubscriptionWrapper.new = function(stream) {
      this[_stream] = stream;
    }).prototype = _BroadcastSubscriptionWrapper.prototype;
    _BroadcastSubscriptionWrapper.prototype[dart.isStreamSubscription] = true;
    dart.addTypeTests(_BroadcastSubscriptionWrapper);
    _BroadcastSubscriptionWrapper.prototype[_is__BroadcastSubscriptionWrapper_default] = true;
    _BroadcastSubscriptionWrapper[dart.implements] = () => [StreamSubscriptionOfT()];
    dart.setMethodSignature(_BroadcastSubscriptionWrapper, () => ({
      __proto__: dart.getMethods(_BroadcastSubscriptionWrapper.__proto__),
      onData: dart.fnType(dart.void, [dart.fnType(dart.void, [T])]),
      onError: dart.fnType(dart.void, [core.Function]),
      onDone: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
      pause: dart.fnType(dart.void, [], [async.Future]),
      resume: dart.fnType(dart.void, []),
      cancel: dart.fnType(async.Future, []),
      asFuture: dart.gFnType(E => [async.Future$(E), [], [E]])
    }));
    dart.setGetterSignature(_BroadcastSubscriptionWrapper, () => ({
      __proto__: dart.getGetters(_BroadcastSubscriptionWrapper.__proto__),
      isPaused: core.bool
    }));
    dart.setFieldSignature(_BroadcastSubscriptionWrapper, () => ({
      __proto__: dart.getFields(_BroadcastSubscriptionWrapper.__proto__),
      [_stream]: dart.finalFieldType(async._AsBroadcastStream)
    }));
    return _BroadcastSubscriptionWrapper;
  });
  async._BroadcastSubscriptionWrapper = async._BroadcastSubscriptionWrapper$();
  dart.addTypeTests(async._BroadcastSubscriptionWrapper, _is__BroadcastSubscriptionWrapper_default);
  const _stateData = Symbol('_stateData');
  const _initializeOrDone = Symbol('_initializeOrDone');
  const _is__StreamIterator_default = Symbol('_is__StreamIterator_default');
  async._StreamIterator$ = dart.generic(T => {
    let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
    let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
    let StreamIteratorOfT = () => (StreamIteratorOfT = dart.constFn(async.StreamIterator$(T)))();
    class _StreamIterator extends core.Object {
      get current() {
        if (this[_subscription] != null && dart.test(this[_isPaused])) {
          return T._check(this[_stateData]);
        }
        return null;
      }
      moveNext() {
        if (this[_subscription] != null) {
          if (dart.test(this[_isPaused])) {
            let future = new (_FutureOfbool()).new();
            this[_stateData] = future;
            this[_isPaused] = false;
            this[_subscription].resume();
            return future;
          }
          dart.throw(new core.StateError.new("Already waiting for next."));
        }
        return this[_initializeOrDone]();
      }
      [_initializeOrDone]() {
        if (!(this[_subscription] == null)) dart.assertFailed();
        let stateData = this[_stateData];
        if (stateData != null) {
          let stream = StreamOfT()._check(stateData);
          this[_subscription] = stream.listen(dart.bind(this, _onData$), {onError: dart.bind(this, _onError), onDone: dart.bind(this, _onDone), cancelOnError: true});
          let future = new (_FutureOfbool()).new();
          this[_stateData] = future;
          return future;
        }
        return async.Future._falseFuture;
      }
      cancel() {
        let subscription = StreamSubscriptionOfT()._check(this[_subscription]);
        let stateData = this[_stateData];
        this[_stateData] = null;
        if (subscription != null) {
          this[_subscription] = null;
          if (!dart.test(this[_isPaused])) {
            let future = _FutureOfbool()._check(stateData);
            future[_asyncComplete](false);
          }
          return subscription.cancel();
        }
        return async.Future._nullFuture;
      }
      [_onData$](data) {
        T._check(data);
        if (!(this[_subscription] != null && !dart.test(this[_isPaused]))) dart.assertFailed();
        let moveNextFuture = _FutureOfbool()._check(this[_stateData]);
        this[_stateData] = data;
        this[_isPaused] = true;
        moveNextFuture[_complete](true);
        if (this[_subscription] != null && dart.test(this[_isPaused])) this[_subscription].pause();
      }
      [_onError](error, stackTrace) {
        if (stackTrace === void 0) stackTrace = null;
        if (!(this[_subscription] != null && !dart.test(this[_isPaused]))) dart.assertFailed();
        let moveNextFuture = _FutureOfbool()._check(this[_stateData]);
        this[_subscription] = null;
        this[_stateData] = null;
        moveNextFuture[_completeError](error, stackTrace);
      }
      [_onDone]() {
        if (!(this[_subscription] != null && !dart.test(this[_isPaused]))) dart.assertFailed();
        let moveNextFuture = _FutureOfbool()._check(this[_stateData]);
        this[_subscription] = null;
        this[_stateData] = null;
        moveNextFuture[_complete](false);
      }
    }
    (_StreamIterator.new = function(stream) {
      this[_subscription] = null;
      this[_isPaused] = false;
      this[_stateData] = stream;
    }).prototype = _StreamIterator.prototype;
    dart.addTypeTests(_StreamIterator);
    _StreamIterator.prototype[_is__StreamIterator_default] = true;
    _StreamIterator[dart.implements] = () => [StreamIteratorOfT()];
    dart.setMethodSignature(_StreamIterator, () => ({
      __proto__: dart.getMethods(_StreamIterator.__proto__),
      moveNext: dart.fnType(async.Future$(core.bool), []),
      [_initializeOrDone]: dart.fnType(async.Future$(core.bool), []),
      cancel: dart.fnType(async.Future, []),
      [_onData$]: dart.fnType(dart.void, [core.Object]),
      [_onError]: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
      [_onDone]: dart.fnType(dart.void, [])
    }));
    dart.setGetterSignature(_StreamIterator, () => ({
      __proto__: dart.getGetters(_StreamIterator.__proto__),
      current: T
    }));
    dart.setFieldSignature(_StreamIterator, () => ({
      __proto__: dart.getFields(_StreamIterator.__proto__),
      [_subscription]: dart.fieldType(async.StreamSubscription),
      [_stateData]: dart.fieldType(core.Object),
      [_isPaused]: dart.fieldType(core.bool)
    }));
    return _StreamIterator;
  });
  async._StreamIterator = async._StreamIterator$();
  dart.addTypeTests(async._StreamIterator, _is__StreamIterator_default);
  const _is__EmptyStream_default = Symbol('_is__EmptyStream_default');
  async._EmptyStream$ = dart.generic(T => {
    let _DoneStreamSubscriptionOfT = () => (_DoneStreamSubscriptionOfT = dart.constFn(async._DoneStreamSubscription$(T)))();
    class _EmptyStream extends async.Stream$(T) {
      get isBroadcast() {
        return true;
      }
      listen(onData, opts) {
        let onError = opts && 'onError' in opts ? opts.onError : null;
        let onDone = opts && 'onDone' in opts ? opts.onDone : null;
        let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
        return new (_DoneStreamSubscriptionOfT()).new(onDone);
      }
    }
    (_EmptyStream.new = function() {
      _EmptyStream.__proto__._internal.call(this);
    }).prototype = _EmptyStream.prototype;
    dart.addTypeTests(_EmptyStream);
    _EmptyStream.prototype[_is__EmptyStream_default] = true;
    dart.setMethodSignature(_EmptyStream, () => ({
      __proto__: dart.getMethods(_EmptyStream.__proto__),
      listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool})
    }));
    return _EmptyStream;
  });
  async._EmptyStream = async._EmptyStream$();
  dart.addTypeTests(async._EmptyStream, _is__EmptyStream_default);
  async._runUserCode = function(T, userCode, onSuccess, onError) {
    try {
      onSuccess(userCode());
    } catch (e$) {
      let e = dart.getThrown(e$);
      let s = dart.stackTrace(e$);
      let replacement = async.Zone.current.errorCallback(e, s);
      if (replacement == null) {
        onError(e, s);
      } else {
        let error = async._nonNullError(replacement.error);
        let stackTrace = replacement.stackTrace;
        onError(error, stackTrace);
      }
    }
  };
  async._cancelAndError = function(subscription, future, error, stackTrace) {
    let cancelFuture = subscription.cancel();
    if (cancelFuture != null && !(cancelFuture == async.Future._nullFuture)) {
      cancelFuture.whenComplete(dart.fn(() => future[_completeError](error, stackTrace), VoidTovoid()));
    } else {
      future[_completeError](error, stackTrace);
    }
  };
  async._cancelAndErrorWithReplacement = function(subscription, future, error, stackTrace) {
    let replacement = async.Zone.current.errorCallback(error, stackTrace);
    if (replacement != null) {
      error = async._nonNullError(replacement.error);
      stackTrace = replacement.stackTrace;
    }
    async._cancelAndError(subscription, future, error, stackTrace);
  };
  async._cancelAndErrorClosure = function(subscription, future) {
    return dart.fn((error, stackTrace) => {
      async._cancelAndError(subscription, future, error, stackTrace);
    }, dynamicAndStackTraceToNull());
  };
  async._cancelAndValue = function(subscription, future, value) {
    let cancelFuture = subscription.cancel();
    if (cancelFuture != null && !(cancelFuture == async.Future._nullFuture)) {
      cancelFuture.whenComplete(dart.fn(() => future[_complete](value), VoidTovoid()));
    } else {
      future[_complete](value);
    }
  };
  const _handleData$ = Symbol('_handleData');
  const _handleError$ = Symbol('_handleError');
  const _handleDone = Symbol('_handleDone');
  const _is__ForwardingStream_default = Symbol('_is__ForwardingStream_default');
  async._ForwardingStream$ = dart.generic((S, T) => {
    let _ForwardingStreamSubscriptionOfS$T = () => (_ForwardingStreamSubscriptionOfS$T = dart.constFn(async._ForwardingStreamSubscription$(S, T)))();
    let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
    let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
    class _ForwardingStream extends async.Stream$(T) {
      get isBroadcast() {
        return this[_source$].isBroadcast;
      }
      listen(onData, opts) {
        let onError = opts && 'onError' in opts ? opts.onError : null;
        let onDone = opts && 'onDone' in opts ? opts.onDone : null;
        let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
        cancelOnError = true === cancelOnError;
        return this[_createSubscription](onData, onError, onDone, cancelOnError);
      }
      [_createSubscription](onData, onError, onDone, cancelOnError) {
        return new (_ForwardingStreamSubscriptionOfS$T()).new(this, onData, onError, onDone, cancelOnError);
      }
      [_handleData$](data, sink) {
        S._check(data);
        _EventSinkOfT()._check(sink);
        sink[_add](T._check(data));
      }
      [_handleError$](error, stackTrace, sink) {
        _EventSinkOfT()._check(sink);
        sink[_addError](error, stackTrace);
      }
      [_handleDone](sink) {
        _EventSinkOfT()._check(sink);
        sink[_close]();
      }
    }
    (_ForwardingStream.new = function(source) {
      this[_source$] = source;
      _ForwardingStream.__proto__.new.call(this);
    }).prototype = _ForwardingStream.prototype;
    dart.addTypeTests(_ForwardingStream);
    _ForwardingStream.prototype[_is__ForwardingStream_default] = true;
    dart.setMethodSignature(_ForwardingStream, () => ({
      __proto__: dart.getMethods(_ForwardingStream.__proto__),
      listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
      [_createSubscription]: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T]), core.Function, dart.fnType(dart.void, []), core.bool]),
      [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object]),
      [_handleError$]: dart.fnType(dart.void, [dart.dynamic, core.StackTrace, core.Object]),
      [_handleDone]: dart.fnType(dart.void, [core.Object])
    }));
    dart.setGetterSignature(_ForwardingStream, () => ({
      __proto__: dart.getGetters(_ForwardingStream.__proto__),
      isBroadcast: core.bool
    }));
    dart.setFieldSignature(_ForwardingStream, () => ({
      __proto__: dart.getFields(_ForwardingStream.__proto__),
      [_source$]: dart.finalFieldType(StreamOfS())
    }));
    return _ForwardingStream;
  });
  async._ForwardingStream = async._ForwardingStream$();
  dart.addTypeTests(async._ForwardingStream, _is__ForwardingStream_default);
  const _is__ForwardingStreamSubscription_default = Symbol('_is__ForwardingStreamSubscription_default');
  async._ForwardingStreamSubscription$ = dart.generic((S, T) => {
    let _ForwardingStreamOfS$T = () => (_ForwardingStreamOfS$T = dart.constFn(async._ForwardingStream$(S, T)))();
    let StreamSubscriptionOfS = () => (StreamSubscriptionOfS = dart.constFn(async.StreamSubscription$(S)))();
    class _ForwardingStreamSubscription extends async._BufferingStreamSubscription$(T) {
      [_add](data) {
        T._check(data);
        if (dart.test(this[_isClosed])) return;
        super[_add](data);
      }
      [_addError](error, stackTrace) {
        if (dart.test(this[_isClosed])) return;
        super[_addError](error, stackTrace);
      }
      [_onPause]() {
        if (this[_subscription] == null) return;
        this[_subscription].pause();
      }
      [_onResume]() {
        if (this[_subscription] == null) return;
        this[_subscription].resume();
      }
      [_onCancel]() {
        if (this[_subscription] != null) {
          let subscription = this[_subscription];
          this[_subscription] = null;
          return subscription.cancel();
        }
        return null;
      }
      [_handleData$](data) {
        S._check(data);
        this[_stream][_handleData$](data, this);
      }
      [_handleError$](error, stackTrace) {
        this[_stream][_handleError$](error, stackTrace, this);
      }
      [_handleDone]() {
        this[_stream][_handleDone](this);
      }
    }
    (_ForwardingStreamSubscription.new = function(stream, onData, onError, onDone, cancelOnError) {
      this[_subscription] = null;
      this[_stream] = stream;
      _ForwardingStreamSubscription.__proto__.new.call(this, onData, onError, onDone, cancelOnError);
      this[_subscription] = this[_stream][_source$].listen(dart.bind(this, _handleData$), {onError: dart.bind(this, _handleError$), onDone: dart.bind(this, _handleDone)});
    }).prototype = _ForwardingStreamSubscription.prototype;
    dart.addTypeTests(_ForwardingStreamSubscription);
    _ForwardingStreamSubscription.prototype[_is__ForwardingStreamSubscription_default] = true;
    dart.setMethodSignature(_ForwardingStreamSubscription, () => ({
      __proto__: dart.getMethods(_ForwardingStreamSubscription.__proto__),
      [_add]: dart.fnType(dart.void, [core.Object]),
      [_addError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
      [_onPause]: dart.fnType(dart.void, []),
      [_onResume]: dart.fnType(dart.void, []),
      [_onCancel]: dart.fnType(async.Future, []),
      [_handleData$]: dart.fnType(dart.void, [core.Object]),
      [_handleError$]: dart.fnType(dart.void, [dart.dynamic, core.StackTrace]),
      [_handleDone]: dart.fnType(dart.void, [])
    }));
    dart.setFieldSignature(_ForwardingStreamSubscription, () => ({
      __proto__: dart.getFields(_ForwardingStreamSubscription.__proto__),
      [_stream]: dart.finalFieldType(_ForwardingStreamOfS$T()),
      [_subscription]: dart.fieldType(StreamSubscriptionOfS())
    }));
    return _ForwardingStreamSubscription;
  });
  async._ForwardingStreamSubscription = async._ForwardingStreamSubscription$();
  dart.addTypeTests(async._ForwardingStreamSubscription, _is__ForwardingStreamSubscription_default);
  async._addErrorWithReplacement = function(sink, error, stackTrace) {
    let replacement = async.Zone.current.errorCallback(error, stackTrace);
    if (replacement != null) {
      error = async._nonNullError(replacement.error);
      stackTrace = replacement.stackTrace;
    }
    sink[_addError](error, stackTrace);
  };
  const _test = Symbol('_test');
  const _is__WhereStream_default = Symbol('_is__WhereStream_default');
  async._WhereStream$ = dart.generic(T => {
    let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
    let TTobool = () => (TTobool = dart.constFn(dart.fnType(core.bool, [T])))();
    class _WhereStream extends async._ForwardingStream$(T, T) {
      [_handleData$](inputEvent, sink) {
        T._check(inputEvent);
        _EventSinkOfT()._check(sink);
        let satisfies = null;
        try {
          satisfies = this[_test](inputEvent);
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          async._addErrorWithReplacement(sink, e, s);
          return;
        }
        if (dart.test(satisfies)) {
          sink[_add](inputEvent);
        }
      }
    }
    (_WhereStream.new = function(source, test) {
      this[_test] = test;
      _WhereStream.__proto__.new.call(this, source);
    }).prototype = _WhereStream.prototype;
    dart.addTypeTests(_WhereStream);
    _WhereStream.prototype[_is__WhereStream_default] = true;
    dart.setMethodSignature(_WhereStream, () => ({
      __proto__: dart.getMethods(_WhereStream.__proto__),
      [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object])
    }));
    dart.setFieldSignature(_WhereStream, () => ({
      __proto__: dart.getFields(_WhereStream.__proto__),
      [_test]: dart.finalFieldType(TTobool())
    }));
    return _WhereStream;
  });
  async._WhereStream = async._WhereStream$();
  dart.addTypeTests(async._WhereStream, _is__WhereStream_default);
  const _transform = Symbol('_transform');
  const _is__MapStream_default = Symbol('_is__MapStream_default');
  async._MapStream$ = dart.generic((S, T) => {
    let SToT = () => (SToT = dart.constFn(dart.fnType(T, [S])))();
    let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
    class _MapStream extends async._ForwardingStream$(S, T) {
      [_handleData$](inputEvent, sink) {
        S._check(inputEvent);
        _EventSinkOfT()._check(sink);
        let outputEvent = null;
        try {
          outputEvent = this[_transform](inputEvent);
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          async._addErrorWithReplacement(sink, e, s);
          return;
        }
        sink[_add](outputEvent);
      }
    }
    (_MapStream.new = function(source, transform) {
      this[_transform] = transform;
      _MapStream.__proto__.new.call(this, source);
    }).prototype = _MapStream.prototype;
    dart.addTypeTests(_MapStream);
    _MapStream.prototype[_is__MapStream_default] = true;
    dart.setMethodSignature(_MapStream, () => ({
      __proto__: dart.getMethods(_MapStream.__proto__),
      [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object])
    }));
    dart.setFieldSignature(_MapStream, () => ({
      __proto__: dart.getFields(_MapStream.__proto__),
      [_transform]: dart.finalFieldType(SToT())
    }));
    return _MapStream;
  });
  async._MapStream = async._MapStream$();
  dart.addTypeTests(async._MapStream, _is__MapStream_default);
  const _expand = Symbol('_expand');
  const _is__ExpandStream_default = Symbol('_is__ExpandStream_default');
  async._ExpandStream$ = dart.generic((S, T) => {
    let SToIterableOfT = () => (SToIterableOfT = dart.constFn(dart.fnType(IterableOfT(), [S])))();
    let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
    let IterableOfT = () => (IterableOfT = dart.constFn(core.Iterable$(T)))();
    class _ExpandStream extends async._ForwardingStream$(S, T) {
      [_handleData$](inputEvent, sink) {
        S._check(inputEvent);
        _EventSinkOfT()._check(sink);
        try {
          for (let value of this[_expand](inputEvent)) {
            sink[_add](value);
          }
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          async._addErrorWithReplacement(sink, e, s);
        }
      }
    }
    (_ExpandStream.new = function(source, expand) {
      this[_expand] = expand;
      _ExpandStream.__proto__.new.call(this, source);
    }).prototype = _ExpandStream.prototype;
    dart.addTypeTests(_ExpandStream);
    _ExpandStream.prototype[_is__ExpandStream_default] = true;
    dart.setMethodSignature(_ExpandStream, () => ({
      __proto__: dart.getMethods(_ExpandStream.__proto__),
      [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object])
    }));
    dart.setFieldSignature(_ExpandStream, () => ({
      __proto__: dart.getFields(_ExpandStream.__proto__),
      [_expand]: dart.finalFieldType(SToIterableOfT())
    }));
    return _ExpandStream;
  });
  async._ExpandStream = async._ExpandStream$();
  dart.addTypeTests(async._ExpandStream, _is__ExpandStream_default);
  const _is__HandleErrorStream_default = Symbol('_is__HandleErrorStream_default');
  async._HandleErrorStream$ = dart.generic(T => {
    let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
    class _HandleErrorStream extends async._ForwardingStream$(T, T) {
      [_handleError$](error, stackTrace, sink) {
        _EventSinkOfT()._check(sink);
        let matches = true;
        if (this[_test] != null) {
          try {
            matches = this[_test](error);
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            async._addErrorWithReplacement(sink, e, s);
            return;
          }
        }
        if (dart.test(matches)) {
          try {
            async._invokeErrorHandler(this[_transform], error, stackTrace);
          } catch (e$0) {
            let e = dart.getThrown(e$0);
            let s = dart.stackTrace(e$0);
            if (core.identical(e, error)) {
              sink[_addError](error, stackTrace);
            } else {
              async._addErrorWithReplacement(sink, e, s);
            }
            return;
          }
        } else {
          sink[_addError](error, stackTrace);
        }
      }
    }
    (_HandleErrorStream.new = function(source, onError, test) {
      this[_transform] = onError;
      this[_test] = test;
      _HandleErrorStream.__proto__.new.call(this, source);
    }).prototype = _HandleErrorStream.prototype;
    dart.addTypeTests(_HandleErrorStream);
    _HandleErrorStream.prototype[_is__HandleErrorStream_default] = true;
    dart.setMethodSignature(_HandleErrorStream, () => ({
      __proto__: dart.getMethods(_HandleErrorStream.__proto__),
      [_handleError$]: dart.fnType(dart.void, [core.Object, core.StackTrace, core.Object])
    }));
    dart.setFieldSignature(_HandleErrorStream, () => ({
      __proto__: dart.getFields(_HandleErrorStream.__proto__),
      [_transform]: dart.finalFieldType(core.Function),
      [_test]: dart.finalFieldType(dynamicTobool())
    }));
    return _HandleErrorStream;
  });
  async._HandleErrorStream = async._HandleErrorStream$();
  dart.addTypeTests(async._HandleErrorStream, _is__HandleErrorStream_default);
  const _count = Symbol('_count');
  const _is__TakeStream_default = Symbol('_is__TakeStream_default');
  async._TakeStream$ = dart.generic(T => {
    let _DoneStreamSubscriptionOfT = () => (_DoneStreamSubscriptionOfT = dart.constFn(async._DoneStreamSubscription$(T)))();
    let _StateStreamSubscriptionOfT = () => (_StateStreamSubscriptionOfT = dart.constFn(async._StateStreamSubscription$(T)))();
    let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
    class _TakeStream extends async._ForwardingStream$(T, T) {
      [_createSubscription](onData, onError, onDone, cancelOnError) {
        if (this[_count] === 0) {
          this[_source$].listen(null).cancel();
          return new (_DoneStreamSubscriptionOfT()).new(onDone);
        }
        return new (_StateStreamSubscriptionOfT()).new(this, onData, onError, onDone, cancelOnError, this[_count]);
      }
      [_handleData$](inputEvent, sink) {
        T._check(inputEvent);
        _EventSinkOfT()._check(sink);
        let subscription = _StateStreamSubscriptionOfT()._check(sink);
        let count = subscription[_count];
        if (dart.notNull(count) > 0) {
          sink[_add](inputEvent);
          count = dart.notNull(count) - 1;
          subscription[_count] = count;
          if (count === 0) {
            sink[_close]();
          }
        }
      }
    }
    (_TakeStream.new = function(source, count) {
      this[_count] = count;
      _TakeStream.__proto__.new.call(this, source);
      core.ArgumentError.checkNotNull(count, "count");
    }).prototype = _TakeStream.prototype;
    dart.addTypeTests(_TakeStream);
    _TakeStream.prototype[_is__TakeStream_default] = true;
    dart.setMethodSignature(_TakeStream, () => ({
      __proto__: dart.getMethods(_TakeStream.__proto__),
      [_createSubscription]: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T]), core.Function, dart.fnType(dart.void, []), core.bool]),
      [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object])
    }));
    dart.setFieldSignature(_TakeStream, () => ({
      __proto__: dart.getFields(_TakeStream.__proto__),
      [_count]: dart.finalFieldType(core.int)
    }));
    return _TakeStream;
  });
  async._TakeStream = async._TakeStream$();
  dart.addTypeTests(async._TakeStream, _is__TakeStream_default);
  const _sharedState = Symbol('_sharedState');
  const _flag = Symbol('_flag');
  const _value = Symbol('_value');
  const _is__StateStreamSubscription_default = Symbol('_is__StateStreamSubscription_default');
  async._StateStreamSubscription$ = dart.generic(T => {
    class _StateStreamSubscription extends async._ForwardingStreamSubscription$(T, T) {
      get [_flag]() {
        return core.bool._check(this[_sharedState]);
      }
      set [_flag](flag) {
        this[_sharedState] = flag;
      }
      get [_count]() {
        return core.int._check(this[_sharedState]);
      }
      set [_count](count) {
        this[_sharedState] = count;
      }
      get [_value]() {
        return this[_sharedState];
      }
      set [_value](value) {
        this[_sharedState] = value;
      }
    }
    (_StateStreamSubscription.new = function(stream, onData, onError, onDone, cancelOnError, sharedState) {
      this[_sharedState] = sharedState;
      _StateStreamSubscription.__proto__.new.call(this, stream, onData, onError, onDone, cancelOnError);
    }).prototype = _StateStreamSubscription.prototype;
    dart.addTypeTests(_StateStreamSubscription);
    _StateStreamSubscription.prototype[_is__StateStreamSubscription_default] = true;
    dart.setGetterSignature(_StateStreamSubscription, () => ({
      __proto__: dart.getGetters(_StateStreamSubscription.__proto__),
      [_flag]: core.bool,
      [_count]: core.int,
      [_value]: core.Object
    }));
    dart.setSetterSignature(_StateStreamSubscription, () => ({
      __proto__: dart.getSetters(_StateStreamSubscription.__proto__),
      [_flag]: core.bool,
      [_count]: core.int,
      [_value]: core.Object
    }));
    dart.setFieldSignature(_StateStreamSubscription, () => ({
      __proto__: dart.getFields(_StateStreamSubscription.__proto__),
      [_sharedState]: dart.fieldType(dart.dynamic)
    }));
    return _StateStreamSubscription;
  });
  async._StateStreamSubscription = async._StateStreamSubscription$();
  dart.addTypeTests(async._StateStreamSubscription, _is__StateStreamSubscription_default);
  const _is__TakeWhileStream_default = Symbol('_is__TakeWhileStream_default');
  async._TakeWhileStream$ = dart.generic(T => {
    let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
    let TTobool = () => (TTobool = dart.constFn(dart.fnType(core.bool, [T])))();
    class _TakeWhileStream extends async._ForwardingStream$(T, T) {
      [_handleData$](inputEvent, sink) {
        T._check(inputEvent);
        _EventSinkOfT()._check(sink);
        let satisfies = null;
        try {
          satisfies = this[_test](inputEvent);
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          async._addErrorWithReplacement(sink, e, s);
          sink[_close]();
          return;
        }
        if (dart.test(satisfies)) {
          sink[_add](inputEvent);
        } else {
          sink[_close]();
        }
      }
    }
    (_TakeWhileStream.new = function(source, test) {
      this[_test] = test;
      _TakeWhileStream.__proto__.new.call(this, source);
    }).prototype = _TakeWhileStream.prototype;
    dart.addTypeTests(_TakeWhileStream);
    _TakeWhileStream.prototype[_is__TakeWhileStream_default] = true;
    dart.setMethodSignature(_TakeWhileStream, () => ({
      __proto__: dart.getMethods(_TakeWhileStream.__proto__),
      [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object])
    }));
    dart.setFieldSignature(_TakeWhileStream, () => ({
      __proto__: dart.getFields(_TakeWhileStream.__proto__),
      [_test]: dart.finalFieldType(TTobool())
    }));
    return _TakeWhileStream;
  });
  async._TakeWhileStream = async._TakeWhileStream$();
  dart.addTypeTests(async._TakeWhileStream, _is__TakeWhileStream_default);
  const _is__SkipStream_default = Symbol('_is__SkipStream_default');
  async._SkipStream$ = dart.generic(T => {
    let _StateStreamSubscriptionOfT = () => (_StateStreamSubscriptionOfT = dart.constFn(async._StateStreamSubscription$(T)))();
    let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
    class _SkipStream extends async._ForwardingStream$(T, T) {
      [_createSubscription](onData, onError, onDone, cancelOnError) {
        return new (_StateStreamSubscriptionOfT()).new(this, onData, onError, onDone, cancelOnError, this[_count]);
      }
      [_handleData$](inputEvent, sink) {
        T._check(inputEvent);
        _EventSinkOfT()._check(sink);
        let subscription = _StateStreamSubscriptionOfT()._check(sink);
        let count = subscription[_count];
        if (dart.notNull(count) > 0) {
          subscription[_count] = dart.notNull(count) - 1;
          return;
        }
        sink[_add](inputEvent);
      }
    }
    (_SkipStream.new = function(source, count) {
      this[_count] = count;
      _SkipStream.__proto__.new.call(this, source);
      core.ArgumentError.checkNotNull(count, "count");
      core.RangeError.checkNotNegative(count, "count");
    }).prototype = _SkipStream.prototype;
    dart.addTypeTests(_SkipStream);
    _SkipStream.prototype[_is__SkipStream_default] = true;
    dart.setMethodSignature(_SkipStream, () => ({
      __proto__: dart.getMethods(_SkipStream.__proto__),
      [_createSubscription]: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T]), core.Function, dart.fnType(dart.void, []), core.bool]),
      [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object])
    }));
    dart.setFieldSignature(_SkipStream, () => ({
      __proto__: dart.getFields(_SkipStream.__proto__),
      [_count]: dart.finalFieldType(core.int)
    }));
    return _SkipStream;
  });
  async._SkipStream = async._SkipStream$();
  dart.addTypeTests(async._SkipStream, _is__SkipStream_default);
  const _is__SkipWhileStream_default = Symbol('_is__SkipWhileStream_default');
  async._SkipWhileStream$ = dart.generic(T => {
    let _StateStreamSubscriptionOfT = () => (_StateStreamSubscriptionOfT = dart.constFn(async._StateStreamSubscription$(T)))();
    let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
    let TTobool = () => (TTobool = dart.constFn(dart.fnType(core.bool, [T])))();
    class _SkipWhileStream extends async._ForwardingStream$(T, T) {
      [_createSubscription](onData, onError, onDone, cancelOnError) {
        return new (_StateStreamSubscriptionOfT()).new(this, onData, onError, onDone, cancelOnError, false);
      }
      [_handleData$](inputEvent, sink) {
        T._check(inputEvent);
        _EventSinkOfT()._check(sink);
        let subscription = _StateStreamSubscriptionOfT()._check(sink);
        let hasFailed = subscription[_flag];
        if (dart.test(hasFailed)) {
          sink[_add](inputEvent);
          return;
        }
        let satisfies = null;
        try {
          satisfies = this[_test](inputEvent);
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          async._addErrorWithReplacement(sink, e, s);
          subscription[_flag] = true;
          return;
        }
        if (!dart.test(satisfies)) {
          subscription[_flag] = true;
          sink[_add](inputEvent);
        }
      }
    }
    (_SkipWhileStream.new = function(source, test) {
      this[_test] = test;
      _SkipWhileStream.__proto__.new.call(this, source);
    }).prototype = _SkipWhileStream.prototype;
    dart.addTypeTests(_SkipWhileStream);
    _SkipWhileStream.prototype[_is__SkipWhileStream_default] = true;
    dart.setMethodSignature(_SkipWhileStream, () => ({
      __proto__: dart.getMethods(_SkipWhileStream.__proto__),
      [_createSubscription]: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T]), core.Function, dart.fnType(dart.void, []), core.bool]),
      [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object])
    }));
    dart.setFieldSignature(_SkipWhileStream, () => ({
      __proto__: dart.getFields(_SkipWhileStream.__proto__),
      [_test]: dart.finalFieldType(TTobool())
    }));
    return _SkipWhileStream;
  });
  async._SkipWhileStream = async._SkipWhileStream$();
  dart.addTypeTests(async._SkipWhileStream, _is__SkipWhileStream_default);
  const _equals$ = Symbol('_equals');
  const _is__DistinctStream_default = Symbol('_is__DistinctStream_default');
  async._DistinctStream$ = dart.generic(T => {
    let _StateStreamSubscriptionOfT = () => (_StateStreamSubscriptionOfT = dart.constFn(async._StateStreamSubscription$(T)))();
    let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
    let TAndTTobool = () => (TAndTTobool = dart.constFn(dart.fnType(core.bool, [T, T])))();
    class _DistinctStream extends async._ForwardingStream$(T, T) {
      [_createSubscription](onData, onError, onDone, cancelOnError) {
        return new (_StateStreamSubscriptionOfT()).new(this, onData, onError, onDone, cancelOnError, async._DistinctStream._SENTINEL);
      }
      [_handleData$](inputEvent, sink) {
        T._check(inputEvent);
        _EventSinkOfT()._check(sink);
        let subscription = _StateStreamSubscriptionOfT()._check(sink);
        let previous = subscription[_value];
        if (core.identical(previous, async._DistinctStream._SENTINEL)) {
          subscription[_value] = inputEvent;
          sink[_add](inputEvent);
        } else {
          let previousEvent = T._check(previous);
          let isEqual = null;
          try {
            if (this[_equals$] == null) {
              isEqual = dart.equals(previousEvent, inputEvent);
            } else {
              isEqual = this[_equals$](previousEvent, inputEvent);
            }
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            async._addErrorWithReplacement(sink, e, s);
            return;
          }
          if (!dart.test(isEqual)) {
            sink[_add](inputEvent);
            subscription[_value] = inputEvent;
          }
        }
      }
    }
    (_DistinctStream.new = function(source, equals) {
      this[_equals$] = equals;
      _DistinctStream.__proto__.new.call(this, source);
    }).prototype = _DistinctStream.prototype;
    dart.addTypeTests(_DistinctStream);
    _DistinctStream.prototype[_is__DistinctStream_default] = true;
    dart.setMethodSignature(_DistinctStream, () => ({
      __proto__: dart.getMethods(_DistinctStream.__proto__),
      [_createSubscription]: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T]), core.Function, dart.fnType(dart.void, []), core.bool]),
      [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object])
    }));
    dart.setFieldSignature(_DistinctStream, () => ({
      __proto__: dart.getFields(_DistinctStream.__proto__),
      [_equals$]: dart.finalFieldType(TAndTTobool())
    }));
    return _DistinctStream;
  });
  async._DistinctStream = async._DistinctStream$();
  dart.defineLazy(async._DistinctStream, {
    /*async._DistinctStream._SENTINEL*/get _SENTINEL() {
      return new core.Object.new();
    }
  });
  dart.addTypeTests(async._DistinctStream, _is__DistinctStream_default);
  const _is__EventSinkWrapper_default = Symbol('_is__EventSinkWrapper_default');
  async._EventSinkWrapper$ = dart.generic(T => {
    let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
    class _EventSinkWrapper extends core.Object {
      add(data) {
        T._check(data);
        this[_sink][_add](data);
      }
      addError(error, stackTrace) {
        if (stackTrace === void 0) stackTrace = null;
        this[_sink][_addError](error, stackTrace);
      }
      close() {
        this[_sink][_close]();
      }
    }
    (_EventSinkWrapper.new = function(sink) {
      this[_sink] = sink;
    }).prototype = _EventSinkWrapper.prototype;
    dart.addTypeTests(_EventSinkWrapper);
    _EventSinkWrapper.prototype[_is__EventSinkWrapper_default] = true;
    _EventSinkWrapper[dart.implements] = () => [EventSinkOfT()];
    dart.setMethodSignature(_EventSinkWrapper, () => ({
      __proto__: dart.getMethods(_EventSinkWrapper.__proto__),
      add: dart.fnType(dart.void, [core.Object]),
      addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
      close: dart.fnType(dart.void, [])
    }));
    dart.setFieldSignature(_EventSinkWrapper, () => ({
      __proto__: dart.getFields(_EventSinkWrapper.__proto__),
      [_sink]: dart.fieldType(async._EventSink)
    }));
    return _EventSinkWrapper;
  });
  async._EventSinkWrapper = async._EventSinkWrapper$();
  dart.addTypeTests(async._EventSinkWrapper, _is__EventSinkWrapper_default);
  const _transformerSink = Symbol('_transformerSink');
  const _isSubscribed = Symbol('_isSubscribed');
  const _is__SinkTransformerStreamSubscription_default = Symbol('_is__SinkTransformerStreamSubscription_default');
  async._SinkTransformerStreamSubscription$ = dart.generic((S, T) => {
    let EventSinkOfS = () => (EventSinkOfS = dart.constFn(async.EventSink$(S)))();
    let StreamSubscriptionOfS = () => (StreamSubscriptionOfS = dart.constFn(async.StreamSubscription$(S)))();
    let _EventSinkWrapperOfT = () => (_EventSinkWrapperOfT = dart.constFn(async._EventSinkWrapper$(T)))();
    class _SinkTransformerStreamSubscription extends async._BufferingStreamSubscription$(T) {
      get [_isSubscribed]() {
        return this[_subscription] != null;
      }
      [_add](data) {
        T._check(data);
        if (dart.test(this[_isClosed])) {
          dart.throw(new core.StateError.new("Stream is already closed"));
        }
        super[_add](data);
      }
      [_addError](error, stackTrace) {
        if (dart.test(this[_isClosed])) {
          dart.throw(new core.StateError.new("Stream is already closed"));
        }
        super[_addError](error, stackTrace);
      }
      [_close]() {
        if (dart.test(this[_isClosed])) {
          dart.throw(new core.StateError.new("Stream is already closed"));
        }
        super[_close]();
      }
      [_onPause]() {
        if (dart.test(this[_isSubscribed])) this[_subscription].pause();
      }
      [_onResume]() {
        if (dart.test(this[_isSubscribed])) this[_subscription].resume();
      }
      [_onCancel]() {
        if (dart.test(this[_isSubscribed])) {
          let subscription = this[_subscription];
          this[_subscription] = null;
          return subscription.cancel();
        }
        return null;
      }
      [_handleData$](data) {
        S._check(data);
        try {
          this[_transformerSink].add(data);
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          this[_addError](e, s);
        }
      }
      [_handleError$](error, stackTrace) {
        if (stackTrace === void 0) stackTrace = null;
        try {
          this[_transformerSink].addError(error, stackTrace);
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          if (core.identical(e, error)) {
            this[_addError](error, stackTrace);
          } else {
            this[_addError](e, s);
          }
        }
      }
      [_handleDone]() {
        try {
          this[_subscription] = null;
          this[_transformerSink].close();
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          this[_addError](e, s);
        }
      }
    }
    (_SinkTransformerStreamSubscription.new = function(source, mapper, onData, onError, onDone, cancelOnError) {
      this[_transformerSink] = null;
      this[_subscription] = null;
      _SinkTransformerStreamSubscription.__proto__.new.call(this, onData, onError, onDone, cancelOnError);
      let eventSink = new (_EventSinkWrapperOfT()).new(this);
      this[_transformerSink] = mapper(eventSink);
      this[_subscription] = source.listen(dart.bind(this, _handleData$), {onError: dart.bind(this, _handleError$), onDone: dart.bind(this, _handleDone)});
    }).prototype = _SinkTransformerStreamSubscription.prototype;
    dart.addTypeTests(_SinkTransformerStreamSubscription);
    _SinkTransformerStreamSubscription.prototype[_is__SinkTransformerStreamSubscription_default] = true;
    dart.setMethodSignature(_SinkTransformerStreamSubscription, () => ({
      __proto__: dart.getMethods(_SinkTransformerStreamSubscription.__proto__),
      [_add]: dart.fnType(dart.void, [core.Object]),
      [_addError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
      [_close]: dart.fnType(dart.void, []),
      [_onPause]: dart.fnType(dart.void, []),
      [_onResume]: dart.fnType(dart.void, []),
      [_onCancel]: dart.fnType(async.Future, []),
      [_handleData$]: dart.fnType(dart.void, [core.Object]),
      [_handleError$]: dart.fnType(dart.void, [dart.dynamic], [core.StackTrace]),
      [_handleDone]: dart.fnType(dart.void, [])
    }));
    dart.setGetterSignature(_SinkTransformerStreamSubscription, () => ({
      __proto__: dart.getGetters(_SinkTransformerStreamSubscription.__proto__),
      [_isSubscribed]: core.bool
    }));
    dart.setFieldSignature(_SinkTransformerStreamSubscription, () => ({
      __proto__: dart.getFields(_SinkTransformerStreamSubscription.__proto__),
      [_transformerSink]: dart.fieldType(EventSinkOfS()),
      [_subscription]: dart.fieldType(StreamSubscriptionOfS())
    }));
    return _SinkTransformerStreamSubscription;
  });
  async._SinkTransformerStreamSubscription = async._SinkTransformerStreamSubscription$();
  dart.addTypeTests(async._SinkTransformerStreamSubscription, _is__SinkTransformerStreamSubscription_default);
  const _sinkMapper = Symbol('_sinkMapper');
  const _is__StreamSinkTransformer_default = Symbol('_is__StreamSinkTransformer_default');
  async._StreamSinkTransformer$ = dart.generic((S, T) => {
    let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
    let _BoundSinkStreamOfS$T = () => (_BoundSinkStreamOfS$T = dart.constFn(async._BoundSinkStream$(S, T)))();
    let EventSinkOfS = () => (EventSinkOfS = dart.constFn(async.EventSink$(S)))();
    let EventSinkOfTToEventSinkOfS = () => (EventSinkOfTToEventSinkOfS = dart.constFn(dart.fnType(EventSinkOfS(), [EventSinkOfT()])))();
    let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
    class _StreamSinkTransformer extends async.StreamTransformerBase$(S, T) {
      bind(stream) {
        StreamOfS()._check(stream);
        return new (_BoundSinkStreamOfS$T()).new(stream, this[_sinkMapper]);
      }
    }
    (_StreamSinkTransformer.new = function(sinkMapper) {
      this[_sinkMapper] = sinkMapper;
      _StreamSinkTransformer.__proto__.new.call(this);
    }).prototype = _StreamSinkTransformer.prototype;
    dart.addTypeTests(_StreamSinkTransformer);
    _StreamSinkTransformer.prototype[_is__StreamSinkTransformer_default] = true;
    dart.setMethodSignature(_StreamSinkTransformer, () => ({
      __proto__: dart.getMethods(_StreamSinkTransformer.__proto__),
      bind: dart.fnType(async.Stream$(T), [core.Object])
    }));
    dart.setFieldSignature(_StreamSinkTransformer, () => ({
      __proto__: dart.getFields(_StreamSinkTransformer.__proto__),
      [_sinkMapper]: dart.finalFieldType(EventSinkOfTToEventSinkOfS())
    }));
    return _StreamSinkTransformer;
  });
  async._StreamSinkTransformer = async._StreamSinkTransformer$();
  dart.addTypeTests(async._StreamSinkTransformer, _is__StreamSinkTransformer_default);
  const _is__BoundSinkStream_default = Symbol('_is__BoundSinkStream_default');
  async._BoundSinkStream$ = dart.generic((S, T) => {
    let _SinkTransformerStreamSubscriptionOfS$T = () => (_SinkTransformerStreamSubscriptionOfS$T = dart.constFn(async._SinkTransformerStreamSubscription$(S, T)))();
    let EventSinkOfS = () => (EventSinkOfS = dart.constFn(async.EventSink$(S)))();
    let EventSinkOfTToEventSinkOfS = () => (EventSinkOfTToEventSinkOfS = dart.constFn(dart.fnType(EventSinkOfS(), [EventSinkOfT()])))();
    let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
    let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
    class _BoundSinkStream extends async.Stream$(T) {
      get isBroadcast() {
        return this[_stream].isBroadcast;
      }
      listen(onData, opts) {
        let onError = opts && 'onError' in opts ? opts.onError : null;
        let onDone = opts && 'onDone' in opts ? opts.onDone : null;
        let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
        cancelOnError = true === cancelOnError;
        let subscription = new (_SinkTransformerStreamSubscriptionOfS$T()).new(this[_stream], this[_sinkMapper], onData, onError, onDone, cancelOnError);
        return subscription;
      }
    }
    (_BoundSinkStream.new = function(stream, sinkMapper) {
      this[_stream] = stream;
      this[_sinkMapper] = sinkMapper;
      _BoundSinkStream.__proto__.new.call(this);
    }).prototype = _BoundSinkStream.prototype;
    dart.addTypeTests(_BoundSinkStream);
    _BoundSinkStream.prototype[_is__BoundSinkStream_default] = true;
    dart.setMethodSignature(_BoundSinkStream, () => ({
      __proto__: dart.getMethods(_BoundSinkStream.__proto__),
      listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool})
    }));
    dart.setGetterSignature(_BoundSinkStream, () => ({
      __proto__: dart.getGetters(_BoundSinkStream.__proto__),
      isBroadcast: core.bool
    }));
    dart.setFieldSignature(_BoundSinkStream, () => ({
      __proto__: dart.getFields(_BoundSinkStream.__proto__),
      [_sinkMapper]: dart.finalFieldType(EventSinkOfTToEventSinkOfS()),
      [_stream]: dart.finalFieldType(StreamOfS())
    }));
    return _BoundSinkStream;
  });
  async._BoundSinkStream = async._BoundSinkStream$();
  dart.addTypeTests(async._BoundSinkStream, _is__BoundSinkStream_default);
  const _reportClosedSink = Symbol('_reportClosedSink');
  const _is__HandlerEventSink_default = Symbol('_is__HandlerEventSink_default');
  async._HandlerEventSink$ = dart.generic((S, T) => {
    let EventSinkOfS = () => (EventSinkOfS = dart.constFn(async.EventSink$(S)))();
    let SAndEventSinkOfTTovoid = () => (SAndEventSinkOfTTovoid = dart.constFn(dart.fnType(dart.void, [S, EventSinkOfT()])))();
    let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
    let ObjectAndStackTraceAndEventSinkOfTTovoid = () => (ObjectAndStackTraceAndEventSinkOfTTovoid = dart.constFn(dart.fnType(dart.void, [core.Object, core.StackTrace, EventSinkOfT()])))();
    let EventSinkOfTTovoid = () => (EventSinkOfTTovoid = dart.constFn(dart.fnType(dart.void, [EventSinkOfT()])))();
    class _HandlerEventSink extends core.Object {
      get [_isClosed]() {
        return this[_sink] == null;
      }
      [_reportClosedSink]() {
        let _ = async.Zone.root;
        _.print("Sink is closed and adding to it is an error.");
        _.print("  See http://dartbug.com/29554.");
        _.print(dart.toString(core.StackTrace.current));
      }
      add(data) {
        S._check(data);
        if (dart.test(this[_isClosed])) {
          this[_reportClosedSink]();
        }
        if (this[_handleData$] != null) {
          this[_handleData$](data, this[_sink]);
        } else {
          this[_sink].add(T.as(data));
        }
      }
      addError(error, stackTrace) {
        if (stackTrace === void 0) stackTrace = null;
        if (dart.test(this[_isClosed])) {
          this[_reportClosedSink]();
        }
        if (this[_handleError$] != null) {
          this[_handleError$](error, stackTrace, this[_sink]);
        } else {
          this[_sink].addError(error, stackTrace);
        }
      }
      close() {
        if (dart.test(this[_isClosed])) return;
        let sink = this[_sink];
        this[_sink] = null;
        if (this[_handleDone] != null) {
          this[_handleDone](sink);
        } else {
          sink.close();
        }
      }
    }
    (_HandlerEventSink.new = function(handleData, handleError, handleDone, sink) {
      this[_handleData$] = handleData;
      this[_handleError$] = handleError;
      this[_handleDone] = handleDone;
      this[_sink] = sink;
      if (this[_sink] == null) {
        dart.throw(new core.ArgumentError.new("The provided sink must not be null."));
      }
    }).prototype = _HandlerEventSink.prototype;
    dart.addTypeTests(_HandlerEventSink);
    _HandlerEventSink.prototype[_is__HandlerEventSink_default] = true;
    _HandlerEventSink[dart.implements] = () => [EventSinkOfS()];
    dart.setMethodSignature(_HandlerEventSink, () => ({
      __proto__: dart.getMethods(_HandlerEventSink.__proto__),
      [_reportClosedSink]: dart.fnType(dart.dynamic, []),
      add: dart.fnType(dart.void, [core.Object]),
      addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
      close: dart.fnType(dart.void, [])
    }));
    dart.setGetterSignature(_HandlerEventSink, () => ({
      __proto__: dart.getGetters(_HandlerEventSink.__proto__),
      [_isClosed]: core.bool
    }));
    dart.setFieldSignature(_HandlerEventSink, () => ({
      __proto__: dart.getFields(_HandlerEventSink.__proto__),
      [_handleData$]: dart.finalFieldType(SAndEventSinkOfTTovoid()),
      [_handleError$]: dart.finalFieldType(ObjectAndStackTraceAndEventSinkOfTTovoid()),
      [_handleDone]: dart.finalFieldType(EventSinkOfTTovoid()),
      [_sink]: dart.fieldType(EventSinkOfT())
    }));
    return _HandlerEventSink;
  });
  async._HandlerEventSink = async._HandlerEventSink$();
  dart.addTypeTests(async._HandlerEventSink, _is__HandlerEventSink_default);
  const _is__StreamHandlerTransformer_default = Symbol('_is__StreamHandlerTransformer_default');
  async._StreamHandlerTransformer$ = dart.generic((S, T) => {
    let _HandlerEventSinkOfS$T = () => (_HandlerEventSinkOfS$T = dart.constFn(async._HandlerEventSink$(S, T)))();
    let EventSinkOfTTo_HandlerEventSinkOfS$T = () => (EventSinkOfTTo_HandlerEventSinkOfS$T = dart.constFn(dart.fnType(_HandlerEventSinkOfS$T(), [EventSinkOfT()])))();
    let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
    let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
    class _StreamHandlerTransformer extends async._StreamSinkTransformer$(S, T) {
      bind(stream) {
        StreamOfS()._check(stream);
        return super.bind(stream);
      }
    }
    (_StreamHandlerTransformer.new = function(opts) {
      let handleData = opts && 'handleData' in opts ? opts.handleData : null;
      let handleError = opts && 'handleError' in opts ? opts.handleError : null;
      let handleDone = opts && 'handleDone' in opts ? opts.handleDone : null;
      _StreamHandlerTransformer.__proto__.new.call(this, dart.fn(outputSink => new (_HandlerEventSinkOfS$T()).new(handleData, handleError, handleDone, outputSink), EventSinkOfTTo_HandlerEventSinkOfS$T()));
    }).prototype = _StreamHandlerTransformer.prototype;
    dart.addTypeTests(_StreamHandlerTransformer);
    _StreamHandlerTransformer.prototype[_is__StreamHandlerTransformer_default] = true;
    dart.setMethodSignature(_StreamHandlerTransformer, () => ({
      __proto__: dart.getMethods(_StreamHandlerTransformer.__proto__),
      bind: dart.fnType(async.Stream$(T), [core.Object])
    }));
    return _StreamHandlerTransformer;
  });
  async._StreamHandlerTransformer = async._StreamHandlerTransformer$();
  dart.addTypeTests(async._StreamHandlerTransformer, _is__StreamHandlerTransformer_default);
  const _bind = Symbol('_bind');
  const _is__StreamBindTransformer_default = Symbol('_is__StreamBindTransformer_default');
  async._StreamBindTransformer$ = dart.generic((S, T) => {
    let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
    let StreamOfSToStreamOfT = () => (StreamOfSToStreamOfT = dart.constFn(dart.fnType(StreamOfT(), [StreamOfS()])))();
    let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
    class _StreamBindTransformer extends async.StreamTransformerBase$(S, T) {
      bind(stream) {
        StreamOfS()._check(stream);
        return this[_bind](stream);
      }
    }
    (_StreamBindTransformer.new = function(bind) {
      this[_bind] = bind;
      _StreamBindTransformer.__proto__.new.call(this);
    }).prototype = _StreamBindTransformer.prototype;
    dart.addTypeTests(_StreamBindTransformer);
    _StreamBindTransformer.prototype[_is__StreamBindTransformer_default] = true;
    dart.setMethodSignature(_StreamBindTransformer, () => ({
      __proto__: dart.getMethods(_StreamBindTransformer.__proto__),
      bind: dart.fnType(async.Stream$(T), [core.Object])
    }));
    dart.setFieldSignature(_StreamBindTransformer, () => ({
      __proto__: dart.getFields(_StreamBindTransformer.__proto__),
      [_bind]: dart.finalFieldType(StreamOfSToStreamOfT())
    }));
    return _StreamBindTransformer;
  });
  async._StreamBindTransformer = async._StreamBindTransformer$();
  dart.addTypeTests(async._StreamBindTransformer, _is__StreamBindTransformer_default);
  const _is__StreamSubscriptionTransformer_default = Symbol('_is__StreamSubscriptionTransformer_default');
  async._StreamSubscriptionTransformer$ = dart.generic((S, T) => {
    let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
    let _BoundSubscriptionStreamOfS$T = () => (_BoundSubscriptionStreamOfS$T = dart.constFn(async._BoundSubscriptionStream$(S, T)))();
    let StreamOfSAndboolToStreamSubscriptionOfT = () => (StreamOfSAndboolToStreamSubscriptionOfT = dart.constFn(dart.fnType(StreamSubscriptionOfT(), [StreamOfS(), core.bool])))();
    let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
    class _StreamSubscriptionTransformer extends async.StreamTransformerBase$(S, T) {
      bind(stream) {
        StreamOfS()._check(stream);
        return new (_BoundSubscriptionStreamOfS$T()).new(stream, this[_onListen]);
      }
    }
    (_StreamSubscriptionTransformer.new = function(onListen) {
      this[_onListen] = onListen;
      _StreamSubscriptionTransformer.__proto__.new.call(this);
    }).prototype = _StreamSubscriptionTransformer.prototype;
    dart.addTypeTests(_StreamSubscriptionTransformer);
    _StreamSubscriptionTransformer.prototype[_is__StreamSubscriptionTransformer_default] = true;
    dart.setMethodSignature(_StreamSubscriptionTransformer, () => ({
      __proto__: dart.getMethods(_StreamSubscriptionTransformer.__proto__),
      bind: dart.fnType(async.Stream$(T), [core.Object])
    }));
    dart.setFieldSignature(_StreamSubscriptionTransformer, () => ({
      __proto__: dart.getFields(_StreamSubscriptionTransformer.__proto__),
      [_onListen]: dart.finalFieldType(StreamOfSAndboolToStreamSubscriptionOfT())
    }));
    return _StreamSubscriptionTransformer;
  });
  async._StreamSubscriptionTransformer = async._StreamSubscriptionTransformer$();
  dart.addTypeTests(async._StreamSubscriptionTransformer, _is__StreamSubscriptionTransformer_default);
  const _is__BoundSubscriptionStream_default = Symbol('_is__BoundSubscriptionStream_default');
  async._BoundSubscriptionStream$ = dart.generic((S, T) => {
    let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
    let StreamOfSAndboolToStreamSubscriptionOfT = () => (StreamOfSAndboolToStreamSubscriptionOfT = dart.constFn(dart.fnType(StreamSubscriptionOfT(), [StreamOfS(), core.bool])))();
    let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
    class _BoundSubscriptionStream extends async.Stream$(T) {
      listen(onData, opts) {
        let onError = opts && 'onError' in opts ? opts.onError : null;
        let onDone = opts && 'onDone' in opts ? opts.onDone : null;
        let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
        cancelOnError = true === cancelOnError;
        let result = this[_onListen](this[_stream], cancelOnError);
        result.onData(onData);
        result.onError(onError);
        result.onDone(onDone);
        return result;
      }
    }
    (_BoundSubscriptionStream.new = function(stream, onListen) {
      this[_stream] = stream;
      this[_onListen] = onListen;
      _BoundSubscriptionStream.__proto__.new.call(this);
    }).prototype = _BoundSubscriptionStream.prototype;
    dart.addTypeTests(_BoundSubscriptionStream);
    _BoundSubscriptionStream.prototype[_is__BoundSubscriptionStream_default] = true;
    dart.setMethodSignature(_BoundSubscriptionStream, () => ({
      __proto__: dart.getMethods(_BoundSubscriptionStream.__proto__),
      listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool})
    }));
    dart.setFieldSignature(_BoundSubscriptionStream, () => ({
      __proto__: dart.getFields(_BoundSubscriptionStream.__proto__),
      [_onListen]: dart.finalFieldType(StreamOfSAndboolToStreamSubscriptionOfT()),
      [_stream]: dart.finalFieldType(StreamOfS())
    }));
    return _BoundSubscriptionStream;
  });
  async._BoundSubscriptionStream = async._BoundSubscriptionStream$();
  dart.addTypeTests(async._BoundSubscriptionStream, _is__BoundSubscriptionStream_default);
  async.Timer = class Timer extends core.Object {
    static new(duration, callback) {
      if (dart.equals(async.Zone.current, async.Zone.root)) {
        return async.Zone.current.createTimer(duration, callback);
      }
      return async.Zone.current.createTimer(duration, async.Zone.current.bindCallbackGuarded(callback));
    }
    static periodic(duration, callback) {
      if (dart.equals(async.Zone.current, async.Zone.root)) {
        return async.Zone.current.createPeriodicTimer(duration, callback);
      }
      let boundCallback = async.Zone.current.bindUnaryCallbackGuarded(async.Timer, callback);
      return async.Zone.current.createPeriodicTimer(duration, boundCallback);
    }
    static run(callback) {
      async.Timer.new(core.Duration.zero, callback);
    }
    static _createTimer(duration, callback) {
      let milliseconds = duration.inMilliseconds;
      if (dart.notNull(milliseconds) < 0) milliseconds = 0;
      return new _isolate_helper.TimerImpl.new(milliseconds, callback);
    }
    static _createPeriodicTimer(duration, callback) {
      let milliseconds = duration.inMilliseconds;
      if (dart.notNull(milliseconds) < 0) milliseconds = 0;
      return new _isolate_helper.TimerImpl.periodic(milliseconds, callback);
    }
  };
  (async.Timer[dart.mixinNew] = function() {
  }).prototype = async.Timer.prototype;
  dart.addTypeTests(async.Timer);
  async.AsyncError = class AsyncError extends core.Object {
    get error() {
      return this[error$];
    }
    set error(value) {
      super.error = value;
    }
    get stackTrace() {
      return this[stackTrace$];
    }
    set stackTrace(value) {
      super.stackTrace = value;
    }
    toString() {
      return dart.str(this.error);
    }
  };
  (async.AsyncError.new = function(error, stackTrace) {
    this[error$] = error;
    this[stackTrace$] = stackTrace;
  }).prototype = async.AsyncError.prototype;
  dart.addTypeTests(async.AsyncError);
  const error$ = Symbol("AsyncError.error");
  const stackTrace$ = Symbol("AsyncError.stackTrace");
  async.AsyncError[dart.implements] = () => [core.Error];
  dart.setFieldSignature(async.AsyncError, () => ({
    __proto__: dart.getFields(async.AsyncError.__proto__),
    error: dart.finalFieldType(core.Object),
    stackTrace: dart.finalFieldType(core.StackTrace)
  }));
  dart.defineExtensionMethods(async.AsyncError, ['toString']);
  dart.defineExtensionAccessors(async.AsyncError, ['stackTrace']);
  const _is__ZoneFunction_default = Symbol('_is__ZoneFunction_default');
  async._ZoneFunction$ = dart.generic(T => {
    class _ZoneFunction extends core.Object {}
    (_ZoneFunction.new = function(zone, func) {
      this.zone = zone;
      this.function = func;
    }).prototype = _ZoneFunction.prototype;
    dart.addTypeTests(_ZoneFunction);
    _ZoneFunction.prototype[_is__ZoneFunction_default] = true;
    dart.setFieldSignature(_ZoneFunction, () => ({
      __proto__: dart.getFields(_ZoneFunction.__proto__),
      zone: dart.finalFieldType(async._Zone),
      function: dart.finalFieldType(T)
    }));
    return _ZoneFunction;
  });
  async._ZoneFunction = async._ZoneFunction$();
  dart.addTypeTests(async._ZoneFunction, _is__ZoneFunction_default);
  async.ZoneSpecification = class ZoneSpecification extends core.Object {
    static new(opts) {
      return new async._ZoneSpecification.new(opts);
    }
    static from(other, opts) {
      let handleUncaughtError = opts && 'handleUncaughtError' in opts ? opts.handleUncaughtError : null;
      let run = opts && 'run' in opts ? opts.run : null;
      let runUnary = opts && 'runUnary' in opts ? opts.runUnary : null;
      let runBinary = opts && 'runBinary' in opts ? opts.runBinary : null;
      let registerCallback = opts && 'registerCallback' in opts ? opts.registerCallback : null;
      let registerUnaryCallback = opts && 'registerUnaryCallback' in opts ? opts.registerUnaryCallback : null;
      let registerBinaryCallback = opts && 'registerBinaryCallback' in opts ? opts.registerBinaryCallback : null;
      let errorCallback = opts && 'errorCallback' in opts ? opts.errorCallback : null;
      let scheduleMicrotask = opts && 'scheduleMicrotask' in opts ? opts.scheduleMicrotask : null;
      let createTimer = opts && 'createTimer' in opts ? opts.createTimer : null;
      let createPeriodicTimer = opts && 'createPeriodicTimer' in opts ? opts.createPeriodicTimer : null;
      let print = opts && 'print' in opts ? opts.print : null;
      let fork = opts && 'fork' in opts ? opts.fork : null;
      return async.ZoneSpecification.new({handleUncaughtError: handleUncaughtError != null ? handleUncaughtError : other.handleUncaughtError, run: run != null ? run : other.run, runUnary: runUnary != null ? runUnary : other.runUnary, runBinary: runBinary != null ? runBinary : other.runBinary, registerCallback: registerCallback != null ? registerCallback : other.registerCallback, registerUnaryCallback: registerUnaryCallback != null ? registerUnaryCallback : other.registerUnaryCallback, registerBinaryCallback: registerBinaryCallback != null ? registerBinaryCallback : other.registerBinaryCallback, errorCallback: errorCallback != null ? errorCallback : other.errorCallback, scheduleMicrotask: scheduleMicrotask != null ? scheduleMicrotask : other.scheduleMicrotask, createTimer: createTimer != null ? createTimer : other.createTimer, createPeriodicTimer: createPeriodicTimer != null ? createPeriodicTimer : other.createPeriodicTimer, print: print != null ? print : other.print, fork: fork != null ? fork : other.fork});
    }
  };
  (async.ZoneSpecification[dart.mixinNew] = function() {
  }).prototype = async.ZoneSpecification.prototype;
  dart.addTypeTests(async.ZoneSpecification);
  async._ZoneSpecification = class _ZoneSpecification extends core.Object {};
  (async._ZoneSpecification.new = function(opts) {
    let handleUncaughtError = opts && 'handleUncaughtError' in opts ? opts.handleUncaughtError : null;
    let run = opts && 'run' in opts ? opts.run : null;
    let runUnary = opts && 'runUnary' in opts ? opts.runUnary : null;
    let runBinary = opts && 'runBinary' in opts ? opts.runBinary : null;
    let registerCallback = opts && 'registerCallback' in opts ? opts.registerCallback : null;
    let registerUnaryCallback = opts && 'registerUnaryCallback' in opts ? opts.registerUnaryCallback : null;
    let registerBinaryCallback = opts && 'registerBinaryCallback' in opts ? opts.registerBinaryCallback : null;
    let errorCallback = opts && 'errorCallback' in opts ? opts.errorCallback : null;
    let scheduleMicrotask = opts && 'scheduleMicrotask' in opts ? opts.scheduleMicrotask : null;
    let createTimer = opts && 'createTimer' in opts ? opts.createTimer : null;
    let createPeriodicTimer = opts && 'createPeriodicTimer' in opts ? opts.createPeriodicTimer : null;
    let print = opts && 'print' in opts ? opts.print : null;
    let fork = opts && 'fork' in opts ? opts.fork : null;
    this.handleUncaughtError = handleUncaughtError;
    this.run = run;
    this.runUnary = runUnary;
    this.runBinary = runBinary;
    this.registerCallback = registerCallback;
    this.registerUnaryCallback = registerUnaryCallback;
    this.registerBinaryCallback = registerBinaryCallback;
    this.errorCallback = errorCallback;
    this.scheduleMicrotask = scheduleMicrotask;
    this.createTimer = createTimer;
    this.createPeriodicTimer = createPeriodicTimer;
    this.print = print;
    this.fork = fork;
  }).prototype = async._ZoneSpecification.prototype;
  dart.addTypeTests(async._ZoneSpecification);
  async._ZoneSpecification[dart.implements] = () => [async.ZoneSpecification];
  dart.setFieldSignature(async._ZoneSpecification, () => ({
    __proto__: dart.getFields(async._ZoneSpecification.__proto__),
    handleUncaughtError: dart.finalFieldType(ZoneAndZoneDelegateAndZone__Tovoid()),
    run: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToR()),
    runUnary: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToR$()),
    runBinary: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToR$0()),
    registerCallback: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToFn()),
    registerUnaryCallback: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToFn$()),
    registerBinaryCallback: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToFn$0()),
    errorCallback: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToAsyncError()),
    scheduleMicrotask: dart.finalFieldType(ZoneAndZoneDelegateAndZone__Tovoid$()),
    createTimer: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToTimer()),
    createPeriodicTimer: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToTimer$()),
    print: dart.finalFieldType(ZoneAndZoneDelegateAndZone__Tovoid$0()),
    fork: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToZone())
  }));
  async.ZoneDelegate = class ZoneDelegate extends core.Object {};
  (async.ZoneDelegate.new = function() {
  }).prototype = async.ZoneDelegate.prototype;
  dart.addTypeTests(async.ZoneDelegate);
  async.Zone = class Zone extends core.Object {
    static get current() {
      return async.Zone._current;
    }
    static _enter(zone) {
      if (!(zone != null)) dart.assertFailed();
      if (!!(zone == async.Zone._current)) dart.assertFailed();
      let previous = async.Zone._current;
      async.Zone._current = zone;
      return previous;
    }
    static _leave(previous) {
      if (!(previous != null)) dart.assertFailed();
      async.Zone._current = previous;
    }
  };
  (async.Zone.__ = function() {
  }).prototype = async.Zone.prototype;
  dart.addTypeTests(async.Zone);
  dart.defineLazy(async.Zone, {
    /*async.Zone.root*/get root() {
      return async._rootZone;
    },
    /*async.Zone._current*/get _current() {
      return async._rootZone;
    },
    set _current(_) {}
  });
  const _delegate = Symbol('_delegate');
  async._parentDelegate = function(zone) {
    if (zone.parent == null) return null;
    return zone.parent[_delegate];
  };
  const _delegationTarget = Symbol('_delegationTarget');
  const _handleUncaughtError = Symbol('_handleUncaughtError');
  const _run = Symbol('_run');
  const _runUnary = Symbol('_runUnary');
  const _runBinary = Symbol('_runBinary');
  const _registerCallback = Symbol('_registerCallback');
  const _registerUnaryCallback = Symbol('_registerUnaryCallback');
  const _registerBinaryCallback = Symbol('_registerBinaryCallback');
  const _errorCallback = Symbol('_errorCallback');
  const _createTimer = Symbol('_createTimer');
  const _createPeriodicTimer = Symbol('_createPeriodicTimer');
  const _print = Symbol('_print');
  const _fork = Symbol('_fork');
  async._ZoneDelegate = class _ZoneDelegate extends core.Object {
    handleUncaughtError(zone, error, stackTrace) {
      let implementation = this[_delegationTarget][_handleUncaughtError];
      let implZone = implementation.zone;
      let handler = implementation.function;
      return handler(implZone, async._parentDelegate(implZone), zone, error, stackTrace);
    }
    run(R, zone, f) {
      let implementation = this[_delegationTarget][_run];
      let implZone = implementation.zone;
      let handler = ZoneAndZoneDelegateAndZone__ToR()._check(implementation.function);
      return handler(R, implZone, async._parentDelegate(implZone), zone, f);
    }
    runUnary(R, T, zone, f, arg) {
      let implementation = this[_delegationTarget][_runUnary];
      let implZone = implementation.zone;
      let handler = ZoneAndZoneDelegateAndZone__ToR$()._check(implementation.function);
      return handler(R, T, implZone, async._parentDelegate(implZone), zone, f, arg);
    }
    runBinary(R, T1, T2, zone, f, arg1, arg2) {
      let implementation = this[_delegationTarget][_runBinary];
      let implZone = implementation.zone;
      let handler = ZoneAndZoneDelegateAndZone__ToR$0()._check(implementation.function);
      return handler(R, T1, T2, implZone, async._parentDelegate(implZone), zone, f, arg1, arg2);
    }
    registerCallback(R, zone, f) {
      let implementation = this[_delegationTarget][_registerCallback];
      let implZone = implementation.zone;
      let handler = ZoneAndZoneDelegateAndZone__ToFn()._check(implementation.function);
      return handler(R, implZone, async._parentDelegate(implZone), zone, f);
    }
    registerUnaryCallback(R, T, zone, f) {
      let implementation = this[_delegationTarget][_registerUnaryCallback];
      let implZone = implementation.zone;
      let handler = ZoneAndZoneDelegateAndZone__ToFn$()._check(implementation.function);
      return handler(R, T, implZone, async._parentDelegate(implZone), zone, f);
    }
    registerBinaryCallback(R, T1, T2, zone, f) {
      let implementation = this[_delegationTarget][_registerBinaryCallback];
      let implZone = implementation.zone;
      let handler = ZoneAndZoneDelegateAndZone__ToFn$0()._check(implementation.function);
      return handler(R, T1, T2, implZone, async._parentDelegate(implZone), zone, f);
    }
    errorCallback(zone, error, stackTrace) {
      let implementation = this[_delegationTarget][_errorCallback];
      let implZone = implementation.zone;
      if (implZone === async._rootZone) return null;
      let handler = implementation.function;
      return handler(implZone, async._parentDelegate(implZone), zone, error, stackTrace);
    }
    scheduleMicrotask(zone, f) {
      let implementation = this[_delegationTarget][_scheduleMicrotask];
      let implZone = implementation.zone;
      let handler = implementation.function;
      handler(implZone, async._parentDelegate(implZone), zone, f);
    }
    createTimer(zone, duration, f) {
      let implementation = this[_delegationTarget][_createTimer];
      let implZone = implementation.zone;
      let handler = implementation.function;
      return handler(implZone, async._parentDelegate(implZone), zone, duration, f);
    }
    createPeriodicTimer(zone, period, f) {
      let implementation = this[_delegationTarget][_createPeriodicTimer];
      let implZone = implementation.zone;
      let handler = implementation.function;
      return handler(implZone, async._parentDelegate(implZone), zone, period, f);
    }
    print(zone, line) {
      let implementation = this[_delegationTarget][_print];
      let implZone = implementation.zone;
      let handler = implementation.function;
      handler(implZone, async._parentDelegate(implZone), zone, line);
    }
    fork(zone, specification, zoneValues) {
      let implementation = this[_delegationTarget][_fork];
      let implZone = implementation.zone;
      let handler = implementation.function;
      return handler(implZone, async._parentDelegate(implZone), zone, specification, zoneValues);
    }
  };
  (async._ZoneDelegate.new = function(delegationTarget) {
    this[_delegationTarget] = delegationTarget;
  }).prototype = async._ZoneDelegate.prototype;
  dart.addTypeTests(async._ZoneDelegate);
  async._ZoneDelegate[dart.implements] = () => [async.ZoneDelegate];
  dart.setMethodSignature(async._ZoneDelegate, () => ({
    __proto__: dart.getMethods(async._ZoneDelegate.__proto__),
    handleUncaughtError: dart.fnType(dart.void, [async.Zone, dart.dynamic, core.StackTrace]),
    run: dart.gFnType(R => [R, [async.Zone, dart.fnType(R, [])]]),
    runUnary: dart.gFnType((R, T) => [R, [async.Zone, dart.fnType(R, [T]), T]]),
    runBinary: dart.gFnType((R, T1, T2) => [R, [async.Zone, dart.fnType(R, [T1, T2]), T1, T2]]),
    registerCallback: dart.gFnType(R => [dart.fnType(R, []), [async.Zone, dart.fnType(R, [])]]),
    registerUnaryCallback: dart.gFnType((R, T) => [dart.fnType(R, [T]), [async.Zone, dart.fnType(R, [T])]]),
    registerBinaryCallback: dart.gFnType((R, T1, T2) => [dart.fnType(R, [T1, T2]), [async.Zone, dart.fnType(R, [T1, T2])]]),
    errorCallback: dart.fnType(async.AsyncError, [async.Zone, core.Object, core.StackTrace]),
    scheduleMicrotask: dart.fnType(dart.void, [async.Zone, dart.fnType(dart.dynamic, [])]),
    createTimer: dart.fnType(async.Timer, [async.Zone, core.Duration, dart.fnType(dart.void, [])]),
    createPeriodicTimer: dart.fnType(async.Timer, [async.Zone, core.Duration, dart.fnType(dart.void, [async.Timer])]),
    print: dart.fnType(dart.void, [async.Zone, core.String]),
    fork: dart.fnType(async.Zone, [async.Zone, async.ZoneSpecification, core.Map])
  }));
  dart.setFieldSignature(async._ZoneDelegate, () => ({
    __proto__: dart.getFields(async._ZoneDelegate.__proto__),
    [_delegationTarget]: dart.finalFieldType(async._Zone)
  }));
  async._Zone = class _Zone extends core.Object {
    inSameErrorZone(otherZone) {
      return this === otherZone || this.errorZone == otherZone.errorZone;
    }
  };
  (async._Zone.new = function() {
  }).prototype = async._Zone.prototype;
  dart.addTypeTests(async._Zone);
  async._Zone[dart.implements] = () => [async.Zone];
  dart.setMethodSignature(async._Zone, () => ({
    __proto__: dart.getMethods(async._Zone.__proto__),
    inSameErrorZone: dart.fnType(core.bool, [async.Zone])
  }));
  const _map$ = Symbol('_map');
  const _delegateCache = Symbol('_delegateCache');
  async._CustomZone = class _CustomZone extends async._Zone {
    get [_delegate]() {
      if (this[_delegateCache] != null) return this[_delegateCache];
      this[_delegateCache] = new async._ZoneDelegate.new(this);
      return this[_delegateCache];
    }
    get errorZone() {
      return this[_handleUncaughtError].zone;
    }
    runGuarded(f) {
      try {
        this.run(dart.void, f);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        this.handleUncaughtError(e, s);
      }
    }
    runUnaryGuarded(T, f, arg) {
      try {
        this.runUnary(dart.void, T, f, arg);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        this.handleUncaughtError(e, s);
      }
    }
    runBinaryGuarded(T1, T2, f, arg1, arg2) {
      try {
        this.runBinary(dart.void, T1, T2, f, arg1, arg2);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        this.handleUncaughtError(e, s);
      }
    }
    bindCallback(R, f) {
      let registered = this.registerCallback(R, f);
      return dart.fn(() => this.run(R, registered), dart.fnType(R, []));
    }
    bindUnaryCallback(R, T, f) {
      let registered = this.registerUnaryCallback(R, T, f);
      return dart.fn(arg => this.runUnary(R, T, registered, arg), dart.fnType(R, [T]));
    }
    bindBinaryCallback(R, T1, T2, f) {
      let registered = this.registerBinaryCallback(R, T1, T2, f);
      return dart.fn((arg1, arg2) => this.runBinary(R, T1, T2, registered, arg1, arg2), dart.fnType(R, [T1, T2]));
    }
    bindCallbackGuarded(f) {
      let registered = this.registerCallback(dart.void, f);
      return dart.fn(() => this.runGuarded(registered), VoidTovoid());
    }
    bindUnaryCallbackGuarded(T, f) {
      let registered = this.registerUnaryCallback(dart.void, T, f);
      return dart.fn(arg => this.runUnaryGuarded(T, registered, arg), dart.fnType(dart.void, [T]));
    }
    bindBinaryCallbackGuarded(T1, T2, f) {
      let registered = this.registerBinaryCallback(dart.void, T1, T2, f);
      return dart.fn((arg1, arg2) => this.runBinaryGuarded(T1, T2, registered, arg1, arg2), dart.fnType(dart.void, [T1, T2]));
    }
    _get(key) {
      let result = this[_map$][$_get](key);
      if (result != null || dart.test(this[_map$][$containsKey](key))) return result;
      if (this.parent != null) {
        let value = this.parent._get(key);
        if (value != null) {
          this[_map$][$_set](key, value);
        }
        return value;
      }
      if (!this._equals(async._rootZone)) dart.assertFailed();
      return null;
    }
    handleUncaughtError(error, stackTrace) {
      let implementation = this[_handleUncaughtError];
      if (!(implementation != null)) dart.assertFailed();
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = implementation.function;
      return handler(implementation.zone, parentDelegate, this, error, stackTrace);
    }
    fork(opts) {
      let specification = opts && 'specification' in opts ? opts.specification : null;
      let zoneValues = opts && 'zoneValues' in opts ? opts.zoneValues : null;
      let implementation = this[_fork];
      if (!(implementation != null)) dart.assertFailed();
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = implementation.function;
      return handler(implementation.zone, parentDelegate, this, specification, zoneValues);
    }
    run(R, f) {
      let implementation = this[_run];
      if (!(implementation != null)) dart.assertFailed();
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = ZoneAndZoneDelegateAndZone__ToR()._check(implementation.function);
      return handler(R, implementation.zone, parentDelegate, this, f);
    }
    runUnary(R, T, f, arg) {
      let implementation = this[_runUnary];
      if (!(implementation != null)) dart.assertFailed();
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = ZoneAndZoneDelegateAndZone__ToR$()._check(implementation.function);
      return handler(R, T, implementation.zone, parentDelegate, this, f, arg);
    }
    runBinary(R, T1, T2, f, arg1, arg2) {
      let implementation = this[_runBinary];
      if (!(implementation != null)) dart.assertFailed();
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = ZoneAndZoneDelegateAndZone__ToR$0()._check(implementation.function);
      return handler(R, T1, T2, implementation.zone, parentDelegate, this, f, arg1, arg2);
    }
    registerCallback(R, callback) {
      let implementation = this[_registerCallback];
      if (!(implementation != null)) dart.assertFailed();
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = ZoneAndZoneDelegateAndZone__ToFn()._check(implementation.function);
      return handler(R, implementation.zone, parentDelegate, this, callback);
    }
    registerUnaryCallback(R, T, callback) {
      let implementation = this[_registerUnaryCallback];
      if (!(implementation != null)) dart.assertFailed();
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = ZoneAndZoneDelegateAndZone__ToFn$()._check(implementation.function);
      return handler(R, T, implementation.zone, parentDelegate, this, callback);
    }
    registerBinaryCallback(R, T1, T2, callback) {
      let implementation = this[_registerBinaryCallback];
      if (!(implementation != null)) dart.assertFailed();
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = ZoneAndZoneDelegateAndZone__ToFn$0()._check(implementation.function);
      return handler(R, T1, T2, implementation.zone, parentDelegate, this, callback);
    }
    errorCallback(error, stackTrace) {
      let implementation = this[_errorCallback];
      if (!(implementation != null)) dart.assertFailed();
      let implementationZone = implementation.zone;
      if (implementationZone === async._rootZone) return null;
      let parentDelegate = async._parentDelegate(async._Zone._check(implementationZone));
      let handler = implementation.function;
      return handler(implementationZone, parentDelegate, this, error, stackTrace);
    }
    scheduleMicrotask(f) {
      let implementation = this[_scheduleMicrotask];
      if (!(implementation != null)) dart.assertFailed();
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = implementation.function;
      return handler(implementation.zone, parentDelegate, this, f);
    }
    createTimer(duration, f) {
      let implementation = this[_createTimer];
      if (!(implementation != null)) dart.assertFailed();
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = implementation.function;
      return handler(implementation.zone, parentDelegate, this, duration, f);
    }
    createPeriodicTimer(duration, f) {
      let implementation = this[_createPeriodicTimer];
      if (!(implementation != null)) dart.assertFailed();
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = implementation.function;
      return handler(implementation.zone, parentDelegate, this, duration, f);
    }
    print(line) {
      let implementation = this[_print];
      if (!(implementation != null)) dart.assertFailed();
      let parentDelegate = async._parentDelegate(implementation.zone);
      let handler = implementation.function;
      return handler(implementation.zone, parentDelegate, this, line);
    }
  };
  (async._CustomZone.new = function(parent, specification, map) {
    this[_run] = null;
    this[_runUnary] = null;
    this[_runBinary] = null;
    this[_registerCallback] = null;
    this[_registerUnaryCallback] = null;
    this[_registerBinaryCallback] = null;
    this[_errorCallback] = null;
    this[_scheduleMicrotask] = null;
    this[_createTimer] = null;
    this[_createPeriodicTimer] = null;
    this[_print] = null;
    this[_fork] = null;
    this[_handleUncaughtError] = null;
    this[_delegateCache] = null;
    this.parent = parent;
    this[_map$] = map;
    async._CustomZone.__proto__.new.call(this);
    this[_run] = specification.run != null ? new (_ZoneFunctionOfFunction()).new(this, specification.run) : this.parent[_run];
    this[_runUnary] = specification.runUnary != null ? new (_ZoneFunctionOfFunction()).new(this, specification.runUnary) : this.parent[_runUnary];
    this[_runBinary] = specification.runBinary != null ? new (_ZoneFunctionOfFunction()).new(this, specification.runBinary) : this.parent[_runBinary];
    this[_registerCallback] = specification.registerCallback != null ? new (_ZoneFunctionOfFunction()).new(this, specification.registerCallback) : this.parent[_registerCallback];
    this[_registerUnaryCallback] = specification.registerUnaryCallback != null ? new (_ZoneFunctionOfFunction()).new(this, specification.registerUnaryCallback) : this.parent[_registerUnaryCallback];
    this[_registerBinaryCallback] = specification.registerBinaryCallback != null ? new (_ZoneFunctionOfFunction()).new(this, specification.registerBinaryCallback) : this.parent[_registerBinaryCallback];
    this[_errorCallback] = specification.errorCallback != null ? new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToAsyncError()).new(this, specification.errorCallback) : this.parent[_errorCallback];
    this[_scheduleMicrotask] = specification.scheduleMicrotask != null ? new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid()).new(this, specification.scheduleMicrotask) : this.parent[_scheduleMicrotask];
    this[_createTimer] = specification.createTimer != null ? new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer()).new(this, specification.createTimer) : this.parent[_createTimer];
    this[_createPeriodicTimer] = specification.createPeriodicTimer != null ? new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer$()).new(this, specification.createPeriodicTimer) : this.parent[_createPeriodicTimer];
    this[_print] = specification.print != null ? new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$()).new(this, specification.print) : this.parent[_print];
    this[_fork] = specification.fork != null ? new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToZone()).new(this, specification.fork) : this.parent[_fork];
    this[_handleUncaughtError] = specification.handleUncaughtError != null ? new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$0()).new(this, specification.handleUncaughtError) : this.parent[_handleUncaughtError];
  }).prototype = async._CustomZone.prototype;
  dart.addTypeTests(async._CustomZone);
  dart.setMethodSignature(async._CustomZone, () => ({
    __proto__: dart.getMethods(async._CustomZone.__proto__),
    runGuarded: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
    runUnaryGuarded: dart.gFnType(T => [dart.void, [dart.fnType(dart.void, [T]), T]]),
    runBinaryGuarded: dart.gFnType((T1, T2) => [dart.void, [dart.fnType(dart.void, [T1, T2]), T1, T2]]),
    bindCallback: dart.gFnType(R => [dart.fnType(R, []), [dart.fnType(R, [])]]),
    bindUnaryCallback: dart.gFnType((R, T) => [dart.fnType(R, [T]), [dart.fnType(R, [T])]]),
    bindBinaryCallback: dart.gFnType((R, T1, T2) => [dart.fnType(R, [T1, T2]), [dart.fnType(R, [T1, T2])]]),
    bindCallbackGuarded: dart.fnType(dart.fnType(dart.void, []), [dart.fnType(dart.void, [])]),
    bindUnaryCallbackGuarded: dart.gFnType(T => [dart.fnType(dart.void, [T]), [dart.fnType(dart.void, [T])]]),
    bindBinaryCallbackGuarded: dart.gFnType((T1, T2) => [dart.fnType(dart.void, [T1, T2]), [dart.fnType(dart.void, [T1, T2])]]),
    _get: dart.fnType(dart.dynamic, [core.Object]),
    handleUncaughtError: dart.fnType(dart.void, [dart.dynamic, core.StackTrace]),
    fork: dart.fnType(async.Zone, [], {specification: async.ZoneSpecification, zoneValues: core.Map}),
    run: dart.gFnType(R => [R, [dart.fnType(R, [])]]),
    runUnary: dart.gFnType((R, T) => [R, [dart.fnType(R, [T]), T]]),
    runBinary: dart.gFnType((R, T1, T2) => [R, [dart.fnType(R, [T1, T2]), T1, T2]]),
    registerCallback: dart.gFnType(R => [dart.fnType(R, []), [dart.fnType(R, [])]]),
    registerUnaryCallback: dart.gFnType((R, T) => [dart.fnType(R, [T]), [dart.fnType(R, [T])]]),
    registerBinaryCallback: dart.gFnType((R, T1, T2) => [dart.fnType(R, [T1, T2]), [dart.fnType(R, [T1, T2])]]),
    errorCallback: dart.fnType(async.AsyncError, [core.Object, core.StackTrace]),
    scheduleMicrotask: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
    createTimer: dart.fnType(async.Timer, [core.Duration, dart.fnType(dart.void, [])]),
    createPeriodicTimer: dart.fnType(async.Timer, [core.Duration, dart.fnType(dart.void, [async.Timer])]),
    print: dart.fnType(dart.void, [core.String])
  }));
  dart.setGetterSignature(async._CustomZone, () => ({
    __proto__: dart.getGetters(async._CustomZone.__proto__),
    [_delegate]: async.ZoneDelegate,
    errorZone: async.Zone
  }));
  dart.setFieldSignature(async._CustomZone, () => ({
    __proto__: dart.getFields(async._CustomZone.__proto__),
    [_run]: dart.fieldType(_ZoneFunctionOfFunction()),
    [_runUnary]: dart.fieldType(_ZoneFunctionOfFunction()),
    [_runBinary]: dart.fieldType(_ZoneFunctionOfFunction()),
    [_registerCallback]: dart.fieldType(_ZoneFunctionOfFunction()),
    [_registerUnaryCallback]: dart.fieldType(_ZoneFunctionOfFunction()),
    [_registerBinaryCallback]: dart.fieldType(_ZoneFunctionOfFunction()),
    [_errorCallback]: dart.fieldType(_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToAsyncError()),
    [_scheduleMicrotask]: dart.fieldType(_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid()),
    [_createTimer]: dart.fieldType(_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer()),
    [_createPeriodicTimer]: dart.fieldType(_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer$()),
    [_print]: dart.fieldType(_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$()),
    [_fork]: dart.fieldType(_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToZone()),
    [_handleUncaughtError]: dart.fieldType(_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$0()),
    [_delegateCache]: dart.fieldType(async.ZoneDelegate),
    parent: dart.finalFieldType(async._Zone),
    [_map$]: dart.finalFieldType(core.Map)
  }));
  async._rootHandleUncaughtError = function(self, parent, zone, error, stackTrace) {
    async._schedulePriorityAsyncCallback(dart.fn(() => {
      let t = error;
      t == null ? error = new core.NullThrownError.new() : t;
      if (stackTrace == null) dart.throw(error);
      async._rethrow(error, stackTrace);
    }, VoidToNull()));
  };
  async._rethrow = function(error, stackTrace) {
    throw dart.createErrorWithStack(error, stackTrace);
  };
  async._rootRun = function(R, self, parent, zone, f) {
    if (dart.equals(async.Zone._current, zone)) return f();
    let old = async.Zone._enter(zone);
    try {
      return f();
    } finally {
      async.Zone._leave(old);
    }
  };
  async._rootRunUnary = function(R, T, self, parent, zone, f, arg) {
    if (dart.equals(async.Zone._current, zone)) return f(arg);
    let old = async.Zone._enter(zone);
    try {
      return f(arg);
    } finally {
      async.Zone._leave(old);
    }
  };
  async._rootRunBinary = function(R, T1, T2, self, parent, zone, f, arg1, arg2) {
    if (dart.equals(async.Zone._current, zone)) return f(arg1, arg2);
    let old = async.Zone._enter(zone);
    try {
      return f(arg1, arg2);
    } finally {
      async.Zone._leave(old);
    }
  };
  async._rootRegisterCallback = function(R, self, parent, zone, f) {
    return f;
  };
  async._rootRegisterUnaryCallback = function(R, T, self, parent, zone, f) {
    return f;
  };
  async._rootRegisterBinaryCallback = function(R, T1, T2, self, parent, zone, f) {
    return f;
  };
  async._rootErrorCallback = function(self, parent, zone, error, stackTrace) {
    return null;
  };
  async._rootScheduleMicrotask = function(self, parent, zone, f) {
    if (!(async._rootZone === zone)) {
      let hasErrorHandler = !dart.test(async._rootZone.inSameErrorZone(zone));
      if (hasErrorHandler) {
        f = zone.bindCallbackGuarded(f);
      } else {
        f = zone.bindCallback(dart.void, f);
      }
      zone = async._rootZone;
    }
    async._scheduleAsyncCallback(f);
  };
  async._rootCreateTimer = function(self, parent, zone, duration, callback) {
    if (!(async._rootZone === zone)) {
      callback = zone.bindCallback(dart.void, callback);
    }
    return async.Timer._createTimer(duration, callback);
  };
  async._rootCreatePeriodicTimer = function(self, parent, zone, duration, callback) {
    if (!(async._rootZone === zone)) {
      callback = zone.bindUnaryCallback(dart.dynamic, async.Timer, callback);
    }
    return async.Timer._createPeriodicTimer(duration, callback);
  };
  async._rootPrint = function(self, parent, zone, line) {
    _internal.printToConsole(line);
  };
  async._printToZone = function(line) {
    async.Zone.current.print(line);
  };
  let const$15;
  async._rootFork = function(self, parent, zone, specification, zoneValues) {
    _internal.printToZone = dart.fn(async._printToZone, StringTovoid());
    if (specification == null) {
      specification = const$15 || (const$15 = dart.const(async.ZoneSpecification.new()));
    } else if (!async._ZoneSpecification.is(specification)) {
      dart.throw(new core.ArgumentError.new("ZoneSpecifications must be instantiated" + " with the provided constructor."));
    }
    let valueMap = null;
    if (zoneValues == null) {
      if (async._Zone.is(zone)) {
        valueMap = zone[_map$];
      } else {
        valueMap = new _js_helper.LinkedMap.new();
      }
    } else {
      valueMap = collection.HashMap.from(zoneValues);
    }
    return new async._CustomZone.new(async._Zone._check(zone), specification, valueMap);
  };
  let const$16;
  let const$17;
  let const$18;
  let const$19;
  let const$20;
  let const$21;
  let const$22;
  async._RootZone = class _RootZone extends async._Zone {
    get [_run]() {
      return dart.const(new (_ZoneFunctionOfFunction()).new(async._rootZone, dart.fn(async._rootRun, ZoneAndZoneDelegateAndZone__ToR())));
    }
    get [_runUnary]() {
      return dart.const(new (_ZoneFunctionOfFunction()).new(async._rootZone, dart.fn(async._rootRunUnary, ZoneAndZoneDelegateAndZone__ToR$())));
    }
    get [_runBinary]() {
      return dart.const(new (_ZoneFunctionOfFunction()).new(async._rootZone, dart.fn(async._rootRunBinary, ZoneAndZoneDelegateAndZone__ToR$0())));
    }
    get [_registerCallback]() {
      return dart.const(new (_ZoneFunctionOfFunction()).new(async._rootZone, dart.fn(async._rootRegisterCallback, ZoneAndZoneDelegateAndZone__ToFn())));
    }
    get [_registerUnaryCallback]() {
      return dart.const(new (_ZoneFunctionOfFunction()).new(async._rootZone, dart.fn(async._rootRegisterUnaryCallback, ZoneAndZoneDelegateAndZone__ToFn$())));
    }
    get [_registerBinaryCallback]() {
      return dart.const(new (_ZoneFunctionOfFunction()).new(async._rootZone, dart.fn(async._rootRegisterBinaryCallback, ZoneAndZoneDelegateAndZone__ToFn$0())));
    }
    get [_errorCallback]() {
      return const$16 || (const$16 = dart.const(new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToAsyncError()).new(async._rootZone, dart.fn(async._rootErrorCallback, ZoneAndZoneDelegateAndZone__ToAsyncError()))));
    }
    get [_scheduleMicrotask]() {
      return const$17 || (const$17 = dart.const(new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid()).new(async._rootZone, dart.fn(async._rootScheduleMicrotask, ZoneAndZoneDelegateAndZone__Tovoid$()))));
    }
    get [_createTimer]() {
      return const$18 || (const$18 = dart.const(new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer()).new(async._rootZone, dart.fn(async._rootCreateTimer, ZoneAndZoneDelegateAndZone__ToTimer()))));
    }
    get [_createPeriodicTimer]() {
      return const$19 || (const$19 = dart.const(new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer$()).new(async._rootZone, dart.fn(async._rootCreatePeriodicTimer, ZoneAndZoneDelegateAndZone__ToTimer$()))));
    }
    get [_print]() {
      return const$20 || (const$20 = dart.const(new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$()).new(async._rootZone, dart.fn(async._rootPrint, ZoneAndZoneDelegateAndZone__Tovoid$0()))));
    }
    get [_fork]() {
      return const$21 || (const$21 = dart.const(new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToZone()).new(async._rootZone, dart.fn(async._rootFork, ZoneAndZoneDelegateAndZone__ToZone()))));
    }
    get [_handleUncaughtError]() {
      return const$22 || (const$22 = dart.const(new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$0()).new(async._rootZone, dart.fn(async._rootHandleUncaughtError, ZoneAndZoneDelegateAndZone__Tovoid$1()))));
    }
    get parent() {
      return null;
    }
    get [_map$]() {
      return async._RootZone._rootMap;
    }
    get [_delegate]() {
      if (async._RootZone._rootDelegate != null) return async._RootZone._rootDelegate;
      return async._RootZone._rootDelegate = new async._ZoneDelegate.new(this);
    }
    get errorZone() {
      return this;
    }
    runGuarded(f) {
      try {
        if (async._rootZone === async.Zone._current) {
          f();
          return;
        }
        async._rootRun(dart.void, null, null, this, f);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        this.handleUncaughtError(e, s);
      }
    }
    runUnaryGuarded(T, f, arg) {
      try {
        if (async._rootZone === async.Zone._current) {
          f(arg);
          return;
        }
        async._rootRunUnary(dart.void, T, null, null, this, f, arg);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        this.handleUncaughtError(e, s);
      }
    }
    runBinaryGuarded(T1, T2, f, arg1, arg2) {
      try {
        if (async._rootZone === async.Zone._current) {
          f(arg1, arg2);
          return;
        }
        async._rootRunBinary(dart.void, T1, T2, null, null, this, f, arg1, arg2);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        this.handleUncaughtError(e, s);
      }
    }
    bindCallback(R, f) {
      return dart.fn(() => this.run(R, f), dart.fnType(R, []));
    }
    bindUnaryCallback(R, T, f) {
      return dart.fn(arg => this.runUnary(R, T, f, arg), dart.fnType(R, [T]));
    }
    bindBinaryCallback(R, T1, T2, f) {
      return dart.fn((arg1, arg2) => this.runBinary(R, T1, T2, f, arg1, arg2), dart.fnType(R, [T1, T2]));
    }
    bindCallbackGuarded(f) {
      return dart.fn(() => this.runGuarded(f), VoidTovoid());
    }
    bindUnaryCallbackGuarded(T, f) {
      return dart.fn(arg => this.runUnaryGuarded(T, f, arg), dart.fnType(dart.void, [T]));
    }
    bindBinaryCallbackGuarded(T1, T2, f) {
      return dart.fn((arg1, arg2) => this.runBinaryGuarded(T1, T2, f, arg1, arg2), dart.fnType(dart.void, [T1, T2]));
    }
    _get(key) {
      return null;
    }
    handleUncaughtError(error, stackTrace) {
      async._rootHandleUncaughtError(null, null, this, error, stackTrace);
    }
    fork(opts) {
      let specification = opts && 'specification' in opts ? opts.specification : null;
      let zoneValues = opts && 'zoneValues' in opts ? opts.zoneValues : null;
      return async._rootFork(null, null, this, specification, zoneValues);
    }
    run(R, f) {
      if (async.Zone._current === async._rootZone) return f();
      return async._rootRun(R, null, null, this, f);
    }
    runUnary(R, T, f, arg) {
      if (async.Zone._current === async._rootZone) return f(arg);
      return async._rootRunUnary(R, T, null, null, this, f, arg);
    }
    runBinary(R, T1, T2, f, arg1, arg2) {
      if (async.Zone._current === async._rootZone) return f(arg1, arg2);
      return async._rootRunBinary(R, T1, T2, null, null, this, f, arg1, arg2);
    }
    registerCallback(R, f) {
      return f;
    }
    registerUnaryCallback(R, T, f) {
      return f;
    }
    registerBinaryCallback(R, T1, T2, f) {
      return f;
    }
    errorCallback(error, stackTrace) {
      return null;
    }
    scheduleMicrotask(f) {
      async._rootScheduleMicrotask(null, null, this, f);
    }
    createTimer(duration, f) {
      return async.Timer._createTimer(duration, f);
    }
    createPeriodicTimer(duration, f) {
      return async.Timer._createPeriodicTimer(duration, f);
    }
    print(line) {
      _internal.printToConsole(line);
    }
  };
  (async._RootZone.new = function() {
    async._RootZone.__proto__.new.call(this);
  }).prototype = async._RootZone.prototype;
  dart.addTypeTests(async._RootZone);
  dart.setMethodSignature(async._RootZone, () => ({
    __proto__: dart.getMethods(async._RootZone.__proto__),
    runGuarded: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
    runUnaryGuarded: dart.gFnType(T => [dart.void, [dart.fnType(dart.void, [T]), T]]),
    runBinaryGuarded: dart.gFnType((T1, T2) => [dart.void, [dart.fnType(dart.void, [T1, T2]), T1, T2]]),
    bindCallback: dart.gFnType(R => [dart.fnType(R, []), [dart.fnType(R, [])]]),
    bindUnaryCallback: dart.gFnType((R, T) => [dart.fnType(R, [T]), [dart.fnType(R, [T])]]),
    bindBinaryCallback: dart.gFnType((R, T1, T2) => [dart.fnType(R, [T1, T2]), [dart.fnType(R, [T1, T2])]]),
    bindCallbackGuarded: dart.fnType(dart.fnType(dart.void, []), [dart.fnType(dart.void, [])]),
    bindUnaryCallbackGuarded: dart.gFnType(T => [dart.fnType(dart.void, [T]), [dart.fnType(dart.void, [T])]]),
    bindBinaryCallbackGuarded: dart.gFnType((T1, T2) => [dart.fnType(dart.void, [T1, T2]), [dart.fnType(dart.void, [T1, T2])]]),
    _get: dart.fnType(dart.dynamic, [core.Object]),
    handleUncaughtError: dart.fnType(dart.void, [dart.dynamic, core.StackTrace]),
    fork: dart.fnType(async.Zone, [], {specification: async.ZoneSpecification, zoneValues: core.Map}),
    run: dart.gFnType(R => [R, [dart.fnType(R, [])]]),
    runUnary: dart.gFnType((R, T) => [R, [dart.fnType(R, [T]), T]]),
    runBinary: dart.gFnType((R, T1, T2) => [R, [dart.fnType(R, [T1, T2]), T1, T2]]),
    registerCallback: dart.gFnType(R => [dart.fnType(R, []), [dart.fnType(R, [])]]),
    registerUnaryCallback: dart.gFnType((R, T) => [dart.fnType(R, [T]), [dart.fnType(R, [T])]]),
    registerBinaryCallback: dart.gFnType((R, T1, T2) => [dart.fnType(R, [T1, T2]), [dart.fnType(R, [T1, T2])]]),
    errorCallback: dart.fnType(async.AsyncError, [core.Object, core.StackTrace]),
    scheduleMicrotask: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
    createTimer: dart.fnType(async.Timer, [core.Duration, dart.fnType(dart.void, [])]),
    createPeriodicTimer: dart.fnType(async.Timer, [core.Duration, dart.fnType(dart.void, [async.Timer])]),
    print: dart.fnType(dart.void, [core.String])
  }));
  dart.setGetterSignature(async._RootZone, () => ({
    __proto__: dart.getGetters(async._RootZone.__proto__),
    [_run]: async._ZoneFunction$(core.Function),
    [_runUnary]: async._ZoneFunction$(core.Function),
    [_runBinary]: async._ZoneFunction$(core.Function),
    [_registerCallback]: async._ZoneFunction$(core.Function),
    [_registerUnaryCallback]: async._ZoneFunction$(core.Function),
    [_registerBinaryCallback]: async._ZoneFunction$(core.Function),
    [_errorCallback]: async._ZoneFunction$(dart.fnType(async.AsyncError, [async.Zone, async.ZoneDelegate, async.Zone, core.Object, core.StackTrace])),
    [_scheduleMicrotask]: async._ZoneFunction$(dart.fnType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, dart.fnType(dart.void, [])])),
    [_createTimer]: async._ZoneFunction$(dart.fnType(async.Timer, [async.Zone, async.ZoneDelegate, async.Zone, core.Duration, dart.fnType(dart.void, [])])),
    [_createPeriodicTimer]: async._ZoneFunction$(dart.fnType(async.Timer, [async.Zone, async.ZoneDelegate, async.Zone, core.Duration, dart.fnType(dart.void, [async.Timer])])),
    [_print]: async._ZoneFunction$(dart.fnType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, core.String])),
    [_fork]: async._ZoneFunction$(dart.fnType(async.Zone, [async.Zone, async.ZoneDelegate, async.Zone, async.ZoneSpecification, core.Map])),
    [_handleUncaughtError]: async._ZoneFunction$(dart.fnType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, core.Object, core.StackTrace])),
    parent: async._Zone,
    [_map$]: core.Map,
    [_delegate]: async.ZoneDelegate,
    errorZone: async.Zone
  }));
  dart.defineLazy(async._RootZone, {
    /*async._RootZone._rootMap*/get _rootMap() {
      return new _js_helper.LinkedMap.new();
    },
    /*async._RootZone._rootDelegate*/get _rootDelegate() {
      return null;
    },
    set _rootDelegate(_) {}
  });
  dart.defineLazy(async, {
    /*async._rootZone*/get _rootZone() {
      return dart.const(new async._RootZone.new());
    }
  });
  async.runZoned = function(R, body, opts) {
    let zoneValues = opts && 'zoneValues' in opts ? opts.zoneValues : null;
    let zoneSpecification = opts && 'zoneSpecification' in opts ? opts.zoneSpecification : null;
    let onError = opts && 'onError' in opts ? opts.onError : null;
    if (onError == null) {
      return async._runZoned(R, body, zoneValues, zoneSpecification);
    }
    let unaryOnError = null;
    let binaryOnError = null;
    if (ObjectAndStackTraceTovoid().is(onError)) {
      binaryOnError = onError;
    } else if (ObjectTovoid().is(onError)) {
      unaryOnError = onError;
    } else {
      dart.throw(new core.ArgumentError.new("onError callback must take either an Object " + "(the error), or both an Object (the error) and a StackTrace."));
    }
    let errorHandler = (self, parent, zone, error, stackTrace) => {
      try {
        if (binaryOnError != null) {
          self.parent.runBinary(dart.void, core.Object, core.StackTrace, binaryOnError, error, stackTrace);
        } else {
          if (!(unaryOnError != null)) dart.assertFailed();
          self.parent.runUnary(dart.void, core.Object, unaryOnError, error);
        }
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        if (core.identical(e, error)) {
          parent.handleUncaughtError(zone, error, stackTrace);
        } else {
          parent.handleUncaughtError(zone, e, s);
        }
      }
    };
    dart.fn(errorHandler, ZoneAndZoneDelegateAndZone__ToNull());
    if (zoneSpecification == null) {
      zoneSpecification = async.ZoneSpecification.new({handleUncaughtError: errorHandler});
    } else {
      zoneSpecification = async.ZoneSpecification.from(zoneSpecification, {handleUncaughtError: errorHandler});
    }
    try {
      return async._runZoned(R, body, zoneValues, zoneSpecification);
    } catch (e$) {
      let e = dart.getThrown(e$);
      let stackTrace = dart.stackTrace(e$);
      if (binaryOnError != null) {
        binaryOnError(e, stackTrace);
      } else {
        if (!(unaryOnError != null)) dart.assertFailed();
        unaryOnError(e);
      }
    }
    return null;
  };
  async._runZoned = function(R, body, zoneValues, specification) {
    return async.Zone.current.fork({specification: specification, zoneValues: zoneValues}).run(R, body);
  };
  const _map$0 = Symbol('_map');
  const _keyMap$ = Symbol('_keyMap');
  const _modifications$ = Symbol('_modifications');
  const _newSet = Symbol('_newSet');
  const _newSimilarSet = Symbol('_newSimilarSet');
  const _is__SetBase_default = Symbol('_is__SetBase_default');
  collection._SetBase$ = dart.generic(E => {
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let FollowedByIterableOfE = () => (FollowedByIterableOfE = dart.constFn(_internal.FollowedByIterable$(E)))();
    let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
    let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
    let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
    let WhereIterableOfE = () => (WhereIterableOfE = dart.constFn(_internal.WhereIterable$(E)))();
    let EAndEToE = () => (EAndEToE = dart.constFn(dart.fnType(E, [E, E])))();
    let TakeIterableOfE = () => (TakeIterableOfE = dart.constFn(_internal.TakeIterable$(E)))();
    let TakeWhileIterableOfE = () => (TakeWhileIterableOfE = dart.constFn(_internal.TakeWhileIterable$(E)))();
    let SkipIterableOfE = () => (SkipIterableOfE = dart.constFn(_internal.SkipIterable$(E)))();
    let SkipWhileIterableOfE = () => (SkipWhileIterableOfE = dart.constFn(_internal.SkipWhileIterable$(E)))();
    let VoidToE = () => (VoidToE = dart.constFn(dart.fnType(E, [])))();
    class _SetBase extends core.Object {
      cast(R) {
        return core.Set.castFrom(E, R, this, {newSet: dart.bind(this, _newSimilarSet)});
      }
      difference(other) {
        let result = this[_newSet]();
        for (let element of this) {
          if (!dart.test(other.contains(element))) result.add(element);
        }
        return result;
      }
      intersection(other) {
        let result = this[_newSet]();
        for (let element of this) {
          if (dart.test(other.contains(element))) result.add(element);
        }
        return result;
      }
      toSet() {
        let _ = this[_newSet]();
        _.addAll(this);
        return _;
      }
      get isEmpty() {
        return this[$length] === 0;
      }
      get isNotEmpty() {
        return this[$length] !== 0;
      }
      followedBy(other) {
        IterableOfE()._check(other);
        return FollowedByIterableOfE().firstEfficient(this, other);
      }
      whereType(T) {
        return new (_internal.WhereTypeIterable$(T)).new(this);
      }
      clear() {
        this.removeAll(this.toList());
      }
      addAll(elements) {
        IterableOfE()._check(elements);
        for (let element of elements)
          this.add(element);
      }
      removeAll(elements) {
        for (let element of elements)
          this.remove(element);
      }
      retainAll(elements) {
        let toRemove = this.toSet();
        for (let o of elements) {
          toRemove.remove(o);
        }
        this.removeAll(toRemove);
      }
      removeWhere(test) {
        let toRemove = [];
        for (let element of this) {
          if (dart.test(test(element))) toRemove[$add](element);
        }
        this.removeAll(toRemove);
      }
      retainWhere(test) {
        let toRemove = [];
        for (let element of this) {
          if (!dart.test(test(element))) toRemove[$add](element);
        }
        this.removeAll(toRemove);
      }
      containsAll(other) {
        for (let o of other) {
          if (!dart.test(this.contains(o))) return false;
        }
        return true;
      }
      union(other) {
        SetOfE()._check(other);
        let _ = this.toSet();
        _.addAll(other);
        return _;
      }
      toList(opts) {
        let growable = opts && 'growable' in opts ? opts.growable : true;
        let result = dart.test(growable) ? (() => {
          let _ = JSArrayOfE().of([]);
          _[$length] = this[$length];
          return _;
        })() : ListOfE().new(this[$length]);
        let i = 0;
        for (let element of this)
          result[$_set](i++, element);
        return result;
      }
      map(T, f) {
        return new (_internal.EfficientLengthMappedIterable$(E, T)).new(this, f);
      }
      get single() {
        if (dart.notNull(this[$length]) > 1) dart.throw(_internal.IterableElementError.tooMany());
        let it = this.iterator;
        if (!dart.test(it.moveNext())) dart.throw(_internal.IterableElementError.noElement());
        let result = it.current;
        return result;
      }
      toString() {
        return collection.IterableBase.iterableToFullString(this, "{", "}");
      }
      where(f) {
        return new (WhereIterableOfE()).new(this, f);
      }
      expand(T, f) {
        return new (_internal.ExpandIterable$(E, T)).new(this, f);
      }
      forEach(f) {
        for (let element of this)
          f(element);
      }
      reduce(combine) {
        EAndEToE()._check(combine);
        let iterator = this.iterator;
        if (!dart.test(iterator.moveNext())) {
          dart.throw(_internal.IterableElementError.noElement());
        }
        let value = iterator.current;
        while (dart.test(iterator.moveNext())) {
          value = combine(value, iterator.current);
        }
        return value;
      }
      fold(T, initialValue, combine) {
        let value = initialValue;
        for (let element of this)
          value = combine(value, element);
        return value;
      }
      every(f) {
        for (let element of this) {
          if (!dart.test(f(element))) return false;
        }
        return true;
      }
      join(separator) {
        if (separator === void 0) separator = "";
        let iterator = this.iterator;
        if (!dart.test(iterator.moveNext())) return "";
        let buffer = new core.StringBuffer.new();
        if (separator == null || separator === "") {
          do {
            buffer.write(iterator.current);
          } while (dart.test(iterator.moveNext()));
        } else {
          buffer.write(iterator.current);
          while (dart.test(iterator.moveNext())) {
            buffer.write(separator);
            buffer.write(iterator.current);
          }
        }
        return buffer.toString();
      }
      any(test) {
        for (let element of this) {
          if (dart.test(test(element))) return true;
        }
        return false;
      }
      take(n) {
        return TakeIterableOfE().new(this, n);
      }
      takeWhile(test) {
        return new (TakeWhileIterableOfE()).new(this, test);
      }
      skip(n) {
        return SkipIterableOfE().new(this, n);
      }
      skipWhile(test) {
        return new (SkipWhileIterableOfE()).new(this, test);
      }
      get first() {
        let it = this.iterator;
        if (!dart.test(it.moveNext())) {
          dart.throw(_internal.IterableElementError.noElement());
        }
        return it.current;
      }
      get last() {
        let it = this.iterator;
        if (!dart.test(it.moveNext())) {
          dart.throw(_internal.IterableElementError.noElement());
        }
        let result = null;
        do {
          result = it.current;
        } while (dart.test(it.moveNext()));
        return result;
      }
      firstWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        for (let element of this) {
          if (dart.test(test(element))) return element;
        }
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      lastWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        let result = null;
        let foundMatching = false;
        for (let element of this) {
          if (dart.test(test(element))) {
            result = element;
            foundMatching = true;
          }
        }
        if (foundMatching) return result;
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      singleWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        let result = null;
        let foundMatching = false;
        for (let element of this) {
          if (dart.test(test(element))) {
            if (foundMatching) {
              dart.throw(_internal.IterableElementError.tooMany());
            }
            result = element;
            foundMatching = true;
          }
        }
        if (foundMatching) return result;
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      elementAt(index) {
        core.ArgumentError.checkNotNull(index, "index");
        core.RangeError.checkNotNegative(index, "index");
        let elementIndex = 0;
        for (let element of this) {
          if (index === elementIndex) return element;
          elementIndex++;
        }
        dart.throw(core.RangeError.index(index, this, "index", null, elementIndex));
      }
    }
    (_SetBase.new = function() {
    }).prototype = _SetBase.prototype;
    dart.addTypeTests(_SetBase);
    _SetBase.prototype[_is__SetBase_default] = true;
    _SetBase[dart.implements] = () => [SetOfE()];
    dart.setMethodSignature(_SetBase, () => ({
      __proto__: dart.getMethods(_SetBase.__proto__),
      cast: dart.gFnType(R => [core.Set$(R), []]),
      [$cast]: dart.gFnType(R => [core.Set$(R), []]),
      difference: dart.fnType(core.Set$(E), [core.Set$(core.Object)]),
      intersection: dart.fnType(core.Set$(E), [core.Set$(core.Object)]),
      toSet: dart.fnType(core.Set$(E), []),
      [$toSet]: dart.fnType(core.Set$(E), []),
      followedBy: dart.fnType(core.Iterable$(E), [core.Object]),
      [$followedBy]: dart.fnType(core.Iterable$(E), [core.Object]),
      whereType: dart.gFnType(T => [core.Iterable$(T), []]),
      [$whereType]: dart.gFnType(T => [core.Iterable$(T), []]),
      clear: dart.fnType(dart.void, []),
      addAll: dart.fnType(dart.void, [core.Object]),
      removeAll: dart.fnType(dart.void, [core.Iterable$(core.Object)]),
      retainAll: dart.fnType(dart.void, [core.Iterable$(core.Object)]),
      removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      containsAll: dart.fnType(core.bool, [core.Iterable$(core.Object)]),
      union: dart.fnType(core.Set$(E), [core.Object]),
      toList: dart.fnType(core.List$(E), [], {growable: core.bool}),
      [$toList]: dart.fnType(core.List$(E), [], {growable: core.bool}),
      map: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
      [$map]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
      toString: dart.fnType(core.String, []),
      [$toString]: dart.fnType(core.String, []),
      where: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$where]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      expand: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
      [$expand]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
      forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
      [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
      reduce: dart.fnType(E, [core.Object]),
      [$reduce]: dart.fnType(E, [core.Object]),
      fold: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
      [$fold]: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
      every: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      [$every]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      join: dart.fnType(core.String, [], [core.String]),
      [$join]: dart.fnType(core.String, [], [core.String]),
      any: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      [$any]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      take: dart.fnType(core.Iterable$(E), [core.int]),
      [$take]: dart.fnType(core.Iterable$(E), [core.int]),
      takeWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$takeWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      skip: dart.fnType(core.Iterable$(E), [core.int]),
      [$skip]: dart.fnType(core.Iterable$(E), [core.int]),
      skipWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$skipWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      firstWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$firstWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      lastWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$lastWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      singleWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$singleWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      elementAt: dart.fnType(E, [core.int]),
      [$elementAt]: dart.fnType(E, [core.int])
    }));
    dart.setGetterSignature(_SetBase, () => ({
      __proto__: dart.getGetters(_SetBase.__proto__),
      isEmpty: core.bool,
      [$isEmpty]: core.bool,
      isNotEmpty: core.bool,
      [$isNotEmpty]: core.bool,
      single: E,
      [$single]: E,
      first: E,
      [$first]: E,
      last: E,
      [$last]: E
    }));
    dart.defineExtensionMethods(_SetBase, [
      'cast',
      'toSet',
      'followedBy',
      'whereType',
      'toList',
      'map',
      'toString',
      'where',
      'expand',
      'forEach',
      'reduce',
      'fold',
      'every',
      'join',
      'any',
      'take',
      'takeWhile',
      'skip',
      'skipWhile',
      'firstWhere',
      'lastWhere',
      'singleWhere',
      'elementAt'
    ]);
    dart.defineExtensionAccessors(_SetBase, [
      'isEmpty',
      'isNotEmpty',
      'single',
      'first',
      'last'
    ]);
    return _SetBase;
  });
  collection._SetBase = collection._SetBase$();
  dart.addTypeTests(collection._SetBase, _is__SetBase_default);
  const _is__InternalSet_default = Symbol('_is__InternalSet_default');
  collection._InternalSet$ = dart.generic(E => {
    let DartIteratorOfE = () => (DartIteratorOfE = dart.constFn(_js_helper.DartIterator$(E)))();
    class _InternalSet extends collection._SetBase$(E) {
      get length() {
        return this[_map$0].size;
      }
      get isEmpty() {
        return this[_map$0].size == 0;
      }
      get isNotEmpty() {
        return this[_map$0].size != 0;
      }
      get iterator() {
        return new (DartIteratorOfE()).new(this[Symbol.iterator]());
      }
      [Symbol.iterator]() {
        let self = this;
        let iterator = self[_map$0].values();
        let modifications = self[_modifications$];
        return {
          next() {
            if (modifications != self[_modifications$]) {
              throw new core.ConcurrentModificationError.new(self);
            }
            return iterator.next();
          }
        };
      }
    }
    (_InternalSet.new = function() {
      _InternalSet.__proto__.new.call(this);
    }).prototype = _InternalSet.prototype;
    dart.addTypeTests(_InternalSet);
    _InternalSet.prototype[_is__InternalSet_default] = true;
    dart.setMethodSignature(_InternalSet, () => ({
      __proto__: dart.getMethods(_InternalSet.__proto__),
      [Symbol.iterator]: dart.fnType(dart.dynamic, [])
    }));
    dart.setGetterSignature(_InternalSet, () => ({
      __proto__: dart.getGetters(_InternalSet.__proto__),
      length: core.int,
      [$length]: core.int,
      iterator: core.Iterator$(E),
      [$iterator]: core.Iterator$(E)
    }));
    dart.defineExtensionAccessors(_InternalSet, ['length', 'isEmpty', 'isNotEmpty', 'iterator']);
    return _InternalSet;
  });
  collection._InternalSet = collection._InternalSet$();
  dart.addTypeTests(collection._InternalSet, _is__InternalSet_default);
  const _is__HashSet_default = Symbol('_is__HashSet_default');
  collection._HashSet$ = dart.generic(E => {
    let _HashSetOfE = () => (_HashSetOfE = dart.constFn(collection._HashSet$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let HashSetOfE = () => (HashSetOfE = dart.constFn(collection.HashSet$(E)))();
    let LinkedHashSetOfE = () => (LinkedHashSetOfE = dart.constFn(collection.LinkedHashSet$(E)))();
    class _HashSet extends collection._InternalSet$(E) {
      [_newSet]() {
        return new (_HashSetOfE()).new();
      }
      [_newSimilarSet](R) {
        return new (collection._HashSet$(R)).new();
      }
      contains(key) {
        if (key == null) {
          key = null;
        } else if (key[$_equals] !== dart.identityEquals) {
          let k = key;
          let buckets = this[_keyMap$].get(k[$hashCode] & 0x3ffffff);
          if (buckets != null) {
            for (let i = 0, n = buckets.length; i < n; i++) {
              k = buckets[i];
              if (k[$_equals](key)) return true;
            }
          }
          return false;
        }
        return this[_map$0].has(key);
      }
      lookup(key) {
        if (key == null) return null;
        if (key[$_equals] !== dart.identityEquals) {
          let k = key;
          let buckets = this[_keyMap$].get(k[$hashCode] & 0x3ffffff);
          if (buckets != null) {
            for (let i = 0, n = buckets.length; i < n; i++) {
              k = buckets[i];
              if (k[$_equals](key)) return k;
            }
          }
          return null;
        }
        return this[_map$0].has(key) ? key : null;
      }
      add(key) {
        E._check(key);
        let map = this[_map$0];
        if (key == null) {
          if (dart.test(map.has(null))) return false;
          key = null;
        } else if (key[$_equals] !== dart.identityEquals) {
          let keyMap = this[_keyMap$];
          let k = key;
          let hash = k[$hashCode] & 0x3ffffff;
          let buckets = keyMap.get(hash);
          if (buckets == null) {
            keyMap.set(hash, [key]);
          } else {
            for (let i = 0, n = buckets.length; i < n; i++) {
              k = buckets[i];
              if (k[$_equals](key)) return false;
            }
            buckets.push(key);
          }
        } else if (dart.test(map.has(key))) {
          return false;
        }
        map.add(key);
        this[_modifications$] = this[_modifications$] + 1 & 67108863;
        return true;
      }
      addAll(objects) {
        IterableOfE()._check(objects);
        let map = this[_map$0];
        let length = map.size;
        for (let key of objects) {
          if (key == null) {
            key = null;
          } else if (key[$_equals] !== dart.identityEquals) {
            key = _js_helper.putLinkedMapKey(key, this[_keyMap$]);
          }
          map.add(key);
        }
        if (length !== map.size) {
          this[_modifications$] = this[_modifications$] + 1 & 67108863;
        }
      }
      remove(key) {
        if (key == null) {
          key = null;
        } else if (key[$_equals] !== dart.identityEquals) {
          let k = key;
          let hash = k[$hashCode] & 0x3ffffff;
          let buckets = this[_keyMap$].get(hash);
          if (buckets == null) return false;
          for (let i = 0, n = buckets.length;;) {
            k = buckets[i];
            if (k[$_equals](key)) {
              key = k;
              if (n === 1) {
                this[_keyMap$].delete(hash);
              } else {
                buckets.splice(i, 1);
              }
              break;
            }
            if (++i >= n) return false;
          }
        }
        let map = this[_map$0];
        if (map.delete(key)) {
          this[_modifications$] = this[_modifications$] + 1 & 67108863;
          return true;
        }
        return false;
      }
      clear() {
        let map = this[_map$0];
        if (map.size > 0) {
          map.clear();
          this[_keyMap$].clear();
          this[_modifications$] = this[_modifications$] + 1 & 67108863;
        }
      }
    }
    (_HashSet.new = function() {
      this[_map$0] = new Set();
      this[_keyMap$] = new Map();
      this[_modifications$] = 0;
      _HashSet.__proto__.new.call(this);
    }).prototype = _HashSet.prototype;
    dart.addTypeTests(_HashSet);
    _HashSet.prototype[_is__HashSet_default] = true;
    _HashSet[dart.implements] = () => [HashSetOfE(), LinkedHashSetOfE()];
    dart.setMethodSignature(_HashSet, () => ({
      __proto__: dart.getMethods(_HashSet.__proto__),
      [_newSet]: dart.fnType(core.Set$(E), []),
      [_newSimilarSet]: dart.gFnType(R => [core.Set$(R), []]),
      contains: dart.fnType(core.bool, [core.Object]),
      [$contains]: dart.fnType(core.bool, [core.Object]),
      lookup: dart.fnType(E, [core.Object]),
      add: dart.fnType(core.bool, [core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      remove: dart.fnType(core.bool, [core.Object])
    }));
    dart.setFieldSignature(_HashSet, () => ({
      __proto__: dart.getFields(_HashSet.__proto__),
      [_map$0]: dart.finalFieldType(dart.dynamic),
      [_keyMap$]: dart.finalFieldType(dart.dynamic),
      [_modifications$]: dart.fieldType(core.int)
    }));
    dart.defineExtensionMethods(_HashSet, ['contains']);
    return _HashSet;
  });
  collection._HashSet = collection._HashSet$();
  dart.addTypeTests(collection._HashSet, _is__HashSet_default);
  const _is_ImmutableSet_default = Symbol('_is_ImmutableSet_default');
  collection.ImmutableSet$ = dart.generic(E => {
    class ImmutableSet extends collection._HashSet$(E) {
      add(other) {
        return dart.throw(collection.ImmutableSet._unsupported());
      }
      addAll(other) {
        return dart.throw(collection.ImmutableSet._unsupported());
      }
      clear() {
        return dart.throw(collection.ImmutableSet._unsupported());
      }
      remove(key) {
        return dart.throw(collection.ImmutableSet._unsupported());
      }
      static _unsupported() {
        return new core.UnsupportedError.new("Cannot modify unmodifiable map");
      }
    }
    (ImmutableSet.from = function(entries) {
      ImmutableSet.__proto__.new.call(this);
      let map = this[_map$0];
      for (let key of entries) {
        if (key == null) {
          key = null;
        } else if (key[$_equals] !== dart.identityEquals) {
          key = _js_helper.putLinkedMapKey(key, this[_keyMap$]);
        }
        map.add(key);
      }
    }).prototype = ImmutableSet.prototype;
    dart.addTypeTests(ImmutableSet);
    ImmutableSet.prototype[_is_ImmutableSet_default] = true;
    dart.setMethodSignature(ImmutableSet, () => ({
      __proto__: dart.getMethods(ImmutableSet.__proto__),
      add: dart.fnType(core.bool, [core.Object]),
      addAll: dart.fnType(dart.void, [core.Object])
    }));
    return ImmutableSet;
  });
  collection.ImmutableSet = collection.ImmutableSet$();
  dart.addTypeTests(collection.ImmutableSet, _is_ImmutableSet_default);
  const _is__IdentityHashSet_default = Symbol('_is__IdentityHashSet_default');
  collection._IdentityHashSet$ = dart.generic(E => {
    let _IdentityHashSetOfE = () => (_IdentityHashSetOfE = dart.constFn(collection._IdentityHashSet$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let HashSetOfE = () => (HashSetOfE = dart.constFn(collection.HashSet$(E)))();
    let LinkedHashSetOfE = () => (LinkedHashSetOfE = dart.constFn(collection.LinkedHashSet$(E)))();
    class _IdentityHashSet extends collection._InternalSet$(E) {
      [_newSet]() {
        return new (_IdentityHashSetOfE()).new();
      }
      [_newSimilarSet](R) {
        return new (collection._IdentityHashSet$(R)).new();
      }
      contains(element) {
        return this[_map$0].has(element);
      }
      lookup(element) {
        return E._check(dart.test(this[_map$0].has(element)) ? element : null);
      }
      add(element) {
        E._check(element);
        let map = this[_map$0];
        if (map.has(element)) return false;
        map.add(element);
        this[_modifications$] = this[_modifications$] + 1 & 67108863;
        return true;
      }
      addAll(objects) {
        IterableOfE()._check(objects);
        let map = this[_map$0];
        let length = map.size;
        for (let key of objects) {
          map.add(key);
        }
        if (length !== map.size) {
          this[_modifications$] = this[_modifications$] + 1 & 67108863;
        }
      }
      remove(element) {
        if (this[_map$0].delete(element)) {
          this[_modifications$] = this[_modifications$] + 1 & 67108863;
          return true;
        }
        return false;
      }
      clear() {
        let map = this[_map$0];
        if (map.size > 0) {
          map.clear();
          this[_modifications$] = this[_modifications$] + 1 & 67108863;
        }
      }
    }
    (_IdentityHashSet.new = function() {
      this[_map$0] = new Set();
      this[_modifications$] = 0;
      _IdentityHashSet.__proto__.new.call(this);
    }).prototype = _IdentityHashSet.prototype;
    dart.addTypeTests(_IdentityHashSet);
    _IdentityHashSet.prototype[_is__IdentityHashSet_default] = true;
    _IdentityHashSet[dart.implements] = () => [HashSetOfE(), LinkedHashSetOfE()];
    dart.setMethodSignature(_IdentityHashSet, () => ({
      __proto__: dart.getMethods(_IdentityHashSet.__proto__),
      [_newSet]: dart.fnType(core.Set$(E), []),
      [_newSimilarSet]: dart.gFnType(R => [core.Set$(R), []]),
      contains: dart.fnType(core.bool, [core.Object]),
      [$contains]: dart.fnType(core.bool, [core.Object]),
      lookup: dart.fnType(E, [core.Object]),
      add: dart.fnType(core.bool, [core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      remove: dart.fnType(core.bool, [core.Object])
    }));
    dart.setFieldSignature(_IdentityHashSet, () => ({
      __proto__: dart.getFields(_IdentityHashSet.__proto__),
      [_map$0]: dart.finalFieldType(dart.dynamic),
      [_modifications$]: dart.fieldType(core.int)
    }));
    dart.defineExtensionMethods(_IdentityHashSet, ['contains']);
    return _IdentityHashSet;
  });
  collection._IdentityHashSet = collection._IdentityHashSet$();
  dart.addTypeTests(collection._IdentityHashSet, _is__IdentityHashSet_default);
  const _validKey$ = Symbol('_validKey');
  const _equals$0 = Symbol('_equals');
  const _hashCode$ = Symbol('_hashCode');
  const _is__CustomHashSet_default = Symbol('_is__CustomHashSet_default');
  collection._CustomHashSet$ = dart.generic(E => {
    let _CustomHashSetOfE = () => (_CustomHashSetOfE = dart.constFn(collection._CustomHashSet$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let HashSetOfE = () => (HashSetOfE = dart.constFn(collection.HashSet$(E)))();
    let LinkedHashSetOfE = () => (LinkedHashSetOfE = dart.constFn(collection.LinkedHashSet$(E)))();
    let EAndETobool = () => (EAndETobool = dart.constFn(dart.fnType(core.bool, [E, E])))();
    let EToint = () => (EToint = dart.constFn(dart.fnType(core.int, [E])))();
    class _CustomHashSet extends collection._InternalSet$(E) {
      [_newSet]() {
        return new (_CustomHashSetOfE()).new(this[_equals$0], this[_hashCode$]);
      }
      [_newSimilarSet](R) {
        return new (collection._HashSet$(R)).new();
      }
      contains(key) {
        if (E.is(key)) {
          let buckets = this[_keyMap$].get(this[_hashCode$](key) & 0x3ffffff);
          if (buckets != null) {
            let equals = this[_equals$0];
            for (let i = 0, n = buckets.length; i < n; i++) {
              let k = buckets[i];
              if (dart.test(equals(k, key))) return true;
            }
          }
        }
        return false;
      }
      lookup(key) {
        if (E.is(key)) {
          let buckets = this[_keyMap$].get(this[_hashCode$](key) & 0x3ffffff);
          if (buckets != null) {
            let equals = this[_equals$0];
            for (let i = 0, n = buckets.length; i < n; i++) {
              let k = buckets[i];
              if (dart.test(equals(k, key))) return k;
            }
          }
        }
        return null;
      }
      add(key) {
        E._check(key);
        let keyMap = this[_keyMap$];
        let hash = this[_hashCode$](key) & 0x3ffffff;
        let buckets = keyMap.get(hash);
        if (buckets == null) {
          keyMap.set(hash, [key]);
        } else {
          let equals = this[_equals$0];
          for (let i = 0, n = buckets.length; i < n; i++) {
            let k = buckets[i];
            if (dart.test(equals(k, key))) return false;
          }
          buckets.push(key);
        }
        this[_map$0].add(key);
        this[_modifications$] = this[_modifications$] + 1 & 67108863;
        return true;
      }
      addAll(objects) {
        IterableOfE()._check(objects);
        for (let element of objects)
          this.add(element);
      }
      remove(key) {
        if (E.is(key)) {
          let hash = this[_hashCode$](key) & 0x3ffffff;
          let keyMap = this[_keyMap$];
          let buckets = keyMap.get(hash);
          if (buckets == null) return false;
          let equals = this[_equals$0];
          for (let i = 0, n = buckets.length; i < n; i++) {
            let k = buckets[i];
            if (dart.test(equals(k, key))) {
              if (n === 1) {
                keyMap.delete(hash);
              } else {
                buckets.splice(i, 1);
              }
              this[_map$0].delete(k);
              this[_modifications$] = this[_modifications$] + 1 & 67108863;
              return true;
            }
          }
        }
        return false;
      }
      clear() {
        let map = this[_map$0];
        if (map.size > 0) {
          map.clear();
          this[_keyMap$].clear();
          this[_modifications$] = this[_modifications$] + 1 & 67108863;
        }
      }
    }
    (_CustomHashSet.new = function(equals, hashCode) {
      this[_modifications$] = 0;
      this[_map$0] = new Set();
      this[_keyMap$] = new Map();
      this[_equals$0] = equals;
      this[_hashCode$] = hashCode;
      _CustomHashSet.__proto__.new.call(this);
    }).prototype = _CustomHashSet.prototype;
    dart.addTypeTests(_CustomHashSet);
    _CustomHashSet.prototype[_is__CustomHashSet_default] = true;
    _CustomHashSet[dart.implements] = () => [HashSetOfE(), LinkedHashSetOfE()];
    dart.setMethodSignature(_CustomHashSet, () => ({
      __proto__: dart.getMethods(_CustomHashSet.__proto__),
      [_newSet]: dart.fnType(core.Set$(E), []),
      [_newSimilarSet]: dart.gFnType(R => [core.Set$(R), []]),
      contains: dart.fnType(core.bool, [core.Object]),
      [$contains]: dart.fnType(core.bool, [core.Object]),
      lookup: dart.fnType(E, [core.Object]),
      add: dart.fnType(core.bool, [core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      remove: dart.fnType(core.bool, [core.Object])
    }));
    dart.setFieldSignature(_CustomHashSet, () => ({
      __proto__: dart.getFields(_CustomHashSet.__proto__),
      [_equals$0]: dart.fieldType(EAndETobool()),
      [_hashCode$]: dart.fieldType(EToint()),
      [_modifications$]: dart.fieldType(core.int),
      [_map$0]: dart.finalFieldType(dart.dynamic),
      [_keyMap$]: dart.finalFieldType(dart.dynamic)
    }));
    dart.defineExtensionMethods(_CustomHashSet, ['contains']);
    return _CustomHashSet;
  });
  collection._CustomHashSet = collection._CustomHashSet$();
  dart.addTypeTests(collection._CustomHashSet, _is__CustomHashSet_default);
  const _is__CustomKeyHashSet_default = Symbol('_is__CustomKeyHashSet_default');
  collection._CustomKeyHashSet$ = dart.generic(E => {
    let _CustomKeyHashSetOfE = () => (_CustomKeyHashSetOfE = dart.constFn(collection._CustomKeyHashSet$(E)))();
    class _CustomKeyHashSet extends collection._CustomHashSet$(E) {
      [_newSet]() {
        return new (_CustomKeyHashSetOfE()).new(this[_equals$0], this[_hashCode$], this[_validKey$]);
      }
      [_newSimilarSet](R) {
        return new (collection._HashSet$(R)).new();
      }
      contains(element) {
        if (!dart.test(this[_validKey$](element))) return false;
        return super.contains(element);
      }
      lookup(element) {
        if (!dart.test(this[_validKey$](element))) return null;
        return super.lookup(element);
      }
      remove(element) {
        if (!dart.test(this[_validKey$](element))) return false;
        return super.remove(element);
      }
    }
    (_CustomKeyHashSet.new = function(equals, hashCode, validKey) {
      this[_validKey$] = validKey;
      _CustomKeyHashSet.__proto__.new.call(this, equals, hashCode);
    }).prototype = _CustomKeyHashSet.prototype;
    dart.addTypeTests(_CustomKeyHashSet);
    _CustomKeyHashSet.prototype[_is__CustomKeyHashSet_default] = true;
    dart.setFieldSignature(_CustomKeyHashSet, () => ({
      __proto__: dart.getFields(_CustomKeyHashSet.__proto__),
      [_validKey$]: dart.fieldType(ObjectTobool())
    }));
    dart.defineExtensionMethods(_CustomKeyHashSet, ['contains']);
    return _CustomKeyHashSet;
  });
  collection._CustomKeyHashSet = collection._CustomKeyHashSet$();
  dart.addTypeTests(collection._CustomKeyHashSet, _is__CustomKeyHashSet_default);
  const _source$0 = Symbol('_source');
  const _is_UnmodifiableListView_default = Symbol('_is_UnmodifiableListView_default');
  collection.UnmodifiableListView$ = dart.generic(E => {
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    class UnmodifiableListView extends _internal.UnmodifiableListBase$(E) {
      cast(R) {
        return new (collection.UnmodifiableListView$(R)).new(core.Iterable$(R)._check(this[_source$0][$cast](R)));
      }
      get length() {
        return this[_source$0][$length];
      }
      set length(value) {
        super.length = value;
      }
      _get(index) {
        return this[_source$0][$elementAt](index);
      }
    }
    (UnmodifiableListView.new = function(source) {
      this[_source$0] = source;
    }).prototype = UnmodifiableListView.prototype;
    dart.addTypeTests(UnmodifiableListView);
    UnmodifiableListView.prototype[_is_UnmodifiableListView_default] = true;
    dart.setMethodSignature(UnmodifiableListView, () => ({
      __proto__: dart.getMethods(UnmodifiableListView.__proto__),
      _get: dart.fnType(E, [core.int]),
      [$_get]: dart.fnType(E, [core.int])
    }));
    dart.setGetterSignature(UnmodifiableListView, () => ({
      __proto__: dart.getGetters(UnmodifiableListView.__proto__),
      length: core.int,
      [$length]: core.int
    }));
    dart.setFieldSignature(UnmodifiableListView, () => ({
      __proto__: dart.getFields(UnmodifiableListView.__proto__),
      [_source$0]: dart.finalFieldType(IterableOfE())
    }));
    dart.defineExtensionMethods(UnmodifiableListView, ['cast', '_get']);
    dart.defineExtensionAccessors(UnmodifiableListView, ['length']);
    return UnmodifiableListView;
  });
  collection.UnmodifiableListView = collection.UnmodifiableListView$();
  dart.addTypeTests(collection.UnmodifiableListView, _is_UnmodifiableListView_default);
  collection._defaultEquals = function(a, b) {
    return dart.equals(a, b);
  };
  collection._defaultHashCode = function(a) {
    return dart.hashCode(a);
  };
  const _is_HashMap_default = Symbol('_is_HashMap_default');
  collection.HashMap$ = dart.generic((K, V) => {
    let IdentityMapOfK$V = () => (IdentityMapOfK$V = dart.constFn(_js_helper.IdentityMap$(K, V)))();
    let LinkedMapOfK$V = () => (LinkedMapOfK$V = dart.constFn(_js_helper.LinkedMap$(K, V)))();
    let CustomHashMapOfK$V = () => (CustomHashMapOfK$V = dart.constFn(_js_helper.CustomHashMap$(K, V)))();
    let CustomKeyHashMapOfK$V = () => (CustomKeyHashMapOfK$V = dart.constFn(_js_helper.CustomKeyHashMap$(K, V)))();
    let HashMapOfK$V = () => (HashMapOfK$V = dart.constFn(collection.HashMap$(K, V)))();
    let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
    class HashMap extends core.Object {
      static new(opts) {
        let equals = opts && 'equals' in opts ? opts.equals : null;
        let hashCode = opts && 'hashCode' in opts ? opts.hashCode : null;
        let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
        if (isValidKey == null) {
          if (hashCode == null) {
            if (equals == null) {
              if (dart.wrapType(K) === dart.wrapType(core.String) || dart.wrapType(K) === dart.wrapType(core.int)) {
                return new (IdentityMapOfK$V()).new();
              }
              return new (LinkedMapOfK$V()).new();
            }
            hashCode = dart.hashCode;
          } else if (dart.fn(core.identityHashCode, ObjectToint()) === hashCode && dart.fn(core.identical, ObjectAndObjectTobool()) === equals) {
            return new (IdentityMapOfK$V()).new();
          }
          return new (CustomHashMapOfK$V()).new(equals != null ? equals : dart.equals, hashCode);
        }
        return new (CustomKeyHashMapOfK$V()).new(equals != null ? equals : dart.equals, hashCode != null ? hashCode : dart.hashCode, isValidKey);
      }
      static identity() {
        return new (IdentityMapOfK$V()).new();
      }
      static from(other) {
        let result = new (LinkedMapOfK$V()).new();
        other[$forEach](dart.fn((k, v) => {
          result[$_set](K._check(k), V._check(v));
        }, dynamicAnddynamicToNull()));
        return HashMapOfK$V()._check(result);
      }
      static of(other) {
        let _ = new (LinkedMapOfK$V()).new();
        _.addAll(other);
        return _;
      }
      static fromIterable(iterable, opts) {
        let key = opts && 'key' in opts ? opts.key : null;
        let value = opts && 'value' in opts ? opts.value : null;
        let map = new (LinkedMapOfK$V()).new();
        collection.MapBase._fillMapWithMappedIterable(map, iterable, key, value);
        return HashMapOfK$V()._check(map);
      }
      static fromIterables(keys, values) {
        let map = new (LinkedMapOfK$V()).new();
        collection.MapBase._fillMapWithIterables(map, keys, values);
        return HashMapOfK$V()._check(map);
      }
      static fromEntries(entries) {
        let _ = new (LinkedMapOfK$V()).new();
        _.addEntries(entries);
        return _;
      }
    }
    (HashMap[dart.mixinNew] = function() {
    }).prototype = HashMap.prototype;
    HashMap.prototype[dart.isMap] = true;
    dart.addTypeTests(HashMap);
    HashMap.prototype[_is_HashMap_default] = true;
    HashMap[dart.implements] = () => [MapOfK$V()];
    return HashMap;
  });
  collection.HashMap = collection.HashMap$();
  dart.addTypeTests(collection.HashMap, _is_HashMap_default);
  const _is_HashSet_default = Symbol('_is_HashSet_default');
  collection.HashSet$ = dart.generic(E => {
    let _IdentityHashSetOfE = () => (_IdentityHashSetOfE = dart.constFn(collection._IdentityHashSet$(E)))();
    let _HashSetOfE = () => (_HashSetOfE = dart.constFn(collection._HashSet$(E)))();
    let _CustomHashSetOfE = () => (_CustomHashSetOfE = dart.constFn(collection._CustomHashSet$(E)))();
    let _CustomKeyHashSetOfE = () => (_CustomKeyHashSetOfE = dart.constFn(collection._CustomKeyHashSet$(E)))();
    let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
    class HashSet extends core.Object {
      static new(opts) {
        let equals = opts && 'equals' in opts ? opts.equals : null;
        let hashCode = opts && 'hashCode' in opts ? opts.hashCode : null;
        let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
        if (isValidKey == null) {
          if (hashCode == null) {
            if (equals == null) {
              if (dart.wrapType(E) === dart.wrapType(core.String) || dart.wrapType(E) === dart.wrapType(core.int)) {
                return new (_IdentityHashSetOfE()).new();
              }
              return new (_HashSetOfE()).new();
            }
            hashCode = dart.hashCode;
          } else if (dart.fn(core.identityHashCode, ObjectToint()) === hashCode && dart.fn(core.identical, ObjectAndObjectTobool()) === equals) {
            return new (_IdentityHashSetOfE()).new();
          }
          return new (_CustomHashSetOfE()).new(equals != null ? equals : dart.equals, hashCode != null ? hashCode : dart.hashCode);
        }
        return new (_CustomKeyHashSetOfE()).new(equals != null ? equals : dart.equals, hashCode != null ? hashCode : dart.hashCode, isValidKey);
      }
      static identity() {
        return new (_IdentityHashSetOfE()).new();
      }
      static from(elements) {
        let result = new (_HashSetOfE()).new();
        for (let e of elements) {
          result.add(E._check(e));
        }
        return result;
      }
      static of(elements) {
        let _ = new (_HashSetOfE()).new();
        _.addAll(elements);
        return _;
      }
      [Symbol.iterator]() {
        return new dart.JsIterator(this.iterator);
      }
    }
    (HashSet[dart.mixinNew] = function() {
    }).prototype = HashSet.prototype;
    dart.addTypeTests(HashSet);
    HashSet.prototype[_is_HashSet_default] = true;
    HashSet[dart.implements] = () => [SetOfE()];
    return HashSet;
  });
  collection.HashSet = collection.HashSet$();
  dart.addTypeTests(collection.HashSet, _is_HashSet_default);
  const _is_IterableMixin_default = Symbol('_is_IterableMixin_default');
  collection.IterableMixin$ = dart.generic(E => {
    let WhereIterableOfE = () => (WhereIterableOfE = dart.constFn(_internal.WhereIterable$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let EfficientLengthIterableOfE = () => (EfficientLengthIterableOfE = dart.constFn(_internal.EfficientLengthIterable$(E)))();
    let FollowedByIterableOfE = () => (FollowedByIterableOfE = dart.constFn(_internal.FollowedByIterable$(E)))();
    let EAndEToE = () => (EAndEToE = dart.constFn(dart.fnType(E, [E, E])))();
    let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
    let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
    let TakeIterableOfE = () => (TakeIterableOfE = dart.constFn(_internal.TakeIterable$(E)))();
    let TakeWhileIterableOfE = () => (TakeWhileIterableOfE = dart.constFn(_internal.TakeWhileIterable$(E)))();
    let SkipIterableOfE = () => (SkipIterableOfE = dart.constFn(_internal.SkipIterable$(E)))();
    let SkipWhileIterableOfE = () => (SkipWhileIterableOfE = dart.constFn(_internal.SkipWhileIterable$(E)))();
    let VoidToE = () => (VoidToE = dart.constFn(dart.fnType(E, [])))();
    class IterableMixin extends core.Object {
      cast(R) {
        return core.Iterable.castFrom(E, R, this);
      }
      map(T, f) {
        return _internal.MappedIterable$(E, T).new(this, f);
      }
      where(f) {
        return new (WhereIterableOfE()).new(this, f);
      }
      whereType(T) {
        return new (_internal.WhereTypeIterable$(T)).new(this);
      }
      expand(T, f) {
        return new (_internal.ExpandIterable$(E, T)).new(this, f);
      }
      followedBy(other) {
        IterableOfE()._check(other);
        let self = this;
        if (EfficientLengthIterableOfE().is(self)) {
          return FollowedByIterableOfE().firstEfficient(self, other);
        }
        return new (FollowedByIterableOfE()).new(this, other);
      }
      contains(element) {
        for (let e of this) {
          if (dart.equals(e, element)) return true;
        }
        return false;
      }
      forEach(f) {
        for (let element of this)
          f(element);
      }
      reduce(combine) {
        EAndEToE()._check(combine);
        let iterator = this.iterator;
        if (!dart.test(iterator.moveNext())) {
          dart.throw(_internal.IterableElementError.noElement());
        }
        let value = iterator.current;
        while (dart.test(iterator.moveNext())) {
          value = combine(value, iterator.current);
        }
        return value;
      }
      fold(T, initialValue, combine) {
        let value = initialValue;
        for (let element of this)
          value = combine(value, element);
        return value;
      }
      every(f) {
        for (let element of this) {
          if (!dart.test(f(element))) return false;
        }
        return true;
      }
      join(separator) {
        if (separator === void 0) separator = "";
        let iterator = this.iterator;
        if (!dart.test(iterator.moveNext())) return "";
        let buffer = new core.StringBuffer.new();
        if (separator == null || separator === "") {
          do {
            buffer.write(dart.str(iterator.current));
          } while (dart.test(iterator.moveNext()));
        } else {
          buffer.write(dart.str(iterator.current));
          while (dart.test(iterator.moveNext())) {
            buffer.write(separator);
            buffer.write(dart.str(iterator.current));
          }
        }
        return buffer.toString();
      }
      any(test) {
        for (let element of this) {
          if (dart.test(test(element))) return true;
        }
        return false;
      }
      toList(opts) {
        let growable = opts && 'growable' in opts ? opts.growable : true;
        return ListOfE().from(this, {growable: growable});
      }
      toSet() {
        return SetOfE().from(this);
      }
      get length() {
        if (!!_internal.EfficientLengthIterable.is(this)) dart.assertFailed();
        let count = 0;
        let it = this[$iterator];
        while (dart.test(it.moveNext())) {
          count++;
        }
        return count;
      }
      get isEmpty() {
        return !dart.test(this[$iterator].moveNext());
      }
      get isNotEmpty() {
        return !dart.test(this.isEmpty);
      }
      take(count) {
        return TakeIterableOfE().new(this, count);
      }
      takeWhile(test) {
        return new (TakeWhileIterableOfE()).new(this, test);
      }
      skip(count) {
        return SkipIterableOfE().new(this, count);
      }
      skipWhile(test) {
        return new (SkipWhileIterableOfE()).new(this, test);
      }
      get first() {
        let it = this[$iterator];
        if (!dart.test(it.moveNext())) {
          dart.throw(_internal.IterableElementError.noElement());
        }
        return it.current;
      }
      get last() {
        let it = this[$iterator];
        if (!dart.test(it.moveNext())) {
          dart.throw(_internal.IterableElementError.noElement());
        }
        let result = null;
        do {
          result = it.current;
        } while (dart.test(it.moveNext()));
        return result;
      }
      get single() {
        let it = this[$iterator];
        if (!dart.test(it.moveNext())) dart.throw(_internal.IterableElementError.noElement());
        let result = it.current;
        if (dart.test(it.moveNext())) dart.throw(_internal.IterableElementError.tooMany());
        return result;
      }
      firstWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        for (let element of this) {
          if (dart.test(test(element))) return element;
        }
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      lastWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        let result = null;
        let foundMatching = false;
        for (let element of this) {
          if (dart.test(test(element))) {
            result = element;
            foundMatching = true;
          }
        }
        if (foundMatching) return result;
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      singleWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        let result = null;
        let foundMatching = false;
        for (let element of this) {
          if (dart.test(test(element))) {
            if (foundMatching) {
              dart.throw(_internal.IterableElementError.tooMany());
            }
            result = element;
            foundMatching = true;
          }
        }
        if (foundMatching) return result;
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      elementAt(index) {
        core.ArgumentError.checkNotNull(index, "index");
        core.RangeError.checkNotNegative(index, "index");
        let elementIndex = 0;
        for (let element of this) {
          if (index === elementIndex) return element;
          elementIndex++;
        }
        dart.throw(core.RangeError.index(index, this, "index", null, elementIndex));
      }
      toString() {
        return collection.IterableBase.iterableToShortString(this, "(", ")");
      }
      [Symbol.iterator]() {
        return new dart.JsIterator(this.iterator);
      }
    }
    (IterableMixin.new = function() {
    }).prototype = IterableMixin.prototype;
    IterableMixin.prototype[dart.isIterable] = true;
    dart.addTypeTests(IterableMixin);
    IterableMixin.prototype[_is_IterableMixin_default] = true;
    IterableMixin[dart.implements] = () => [IterableOfE()];
    dart.setMethodSignature(IterableMixin, () => ({
      __proto__: dart.getMethods(IterableMixin.__proto__),
      cast: dart.gFnType(R => [core.Iterable$(R), []]),
      [$cast]: dart.gFnType(R => [core.Iterable$(R), []]),
      map: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
      [$map]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
      where: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$where]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      whereType: dart.gFnType(T => [core.Iterable$(T), []]),
      [$whereType]: dart.gFnType(T => [core.Iterable$(T), []]),
      expand: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
      [$expand]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
      followedBy: dart.fnType(core.Iterable$(E), [core.Object]),
      [$followedBy]: dart.fnType(core.Iterable$(E), [core.Object]),
      contains: dart.fnType(core.bool, [core.Object]),
      [$contains]: dart.fnType(core.bool, [core.Object]),
      forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
      [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
      reduce: dart.fnType(E, [core.Object]),
      [$reduce]: dart.fnType(E, [core.Object]),
      fold: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
      [$fold]: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
      every: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      [$every]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      join: dart.fnType(core.String, [], [core.String]),
      [$join]: dart.fnType(core.String, [], [core.String]),
      any: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      [$any]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      toList: dart.fnType(core.List$(E), [], {growable: core.bool}),
      [$toList]: dart.fnType(core.List$(E), [], {growable: core.bool}),
      toSet: dart.fnType(core.Set$(E), []),
      [$toSet]: dart.fnType(core.Set$(E), []),
      take: dart.fnType(core.Iterable$(E), [core.int]),
      [$take]: dart.fnType(core.Iterable$(E), [core.int]),
      takeWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$takeWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      skip: dart.fnType(core.Iterable$(E), [core.int]),
      [$skip]: dart.fnType(core.Iterable$(E), [core.int]),
      skipWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$skipWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      firstWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$firstWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      lastWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$lastWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      singleWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$singleWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      elementAt: dart.fnType(E, [core.int]),
      [$elementAt]: dart.fnType(E, [core.int]),
      toString: dart.fnType(core.String, []),
      [$toString]: dart.fnType(core.String, [])
    }));
    dart.setGetterSignature(IterableMixin, () => ({
      __proto__: dart.getGetters(IterableMixin.__proto__),
      length: core.int,
      [$length]: core.int,
      isEmpty: core.bool,
      [$isEmpty]: core.bool,
      isNotEmpty: core.bool,
      [$isNotEmpty]: core.bool,
      first: E,
      [$first]: E,
      last: E,
      [$last]: E,
      single: E,
      [$single]: E
    }));
    dart.defineExtensionMethods(IterableMixin, [
      'cast',
      'map',
      'where',
      'whereType',
      'expand',
      'followedBy',
      'contains',
      'forEach',
      'reduce',
      'fold',
      'every',
      'join',
      'any',
      'toList',
      'toSet',
      'take',
      'takeWhile',
      'skip',
      'skipWhile',
      'firstWhere',
      'lastWhere',
      'singleWhere',
      'elementAt',
      'toString'
    ]);
    dart.defineExtensionAccessors(IterableMixin, [
      'length',
      'isEmpty',
      'isNotEmpty',
      'first',
      'last',
      'single'
    ]);
    return IterableMixin;
  });
  collection.IterableMixin = collection.IterableMixin$();
  dart.addTypeTests(collection.IterableMixin, _is_IterableMixin_default);
  dart.defineLazy(collection, {
    /*collection._toStringVisiting*/get _toStringVisiting() {
      return [];
    }
  });
  collection._isToStringVisiting = function(o) {
    for (let i = 0; i < dart.notNull(collection._toStringVisiting[$length]); i++) {
      if (core.identical(o, collection._toStringVisiting[$_get](i))) return true;
    }
    return false;
  };
  collection._iterablePartsToStrings = function(iterable, parts) {
    let lengthLimit = 80;
    let headCount = 3;
    let tailCount = 2;
    let maxCount = 100;
    let overhead = 2;
    let ellipsisSize = 3;
    let length = 0;
    let count = 0;
    let it = iterable[$iterator];
    while (length < lengthLimit || count < headCount) {
      if (!dart.test(it.moveNext())) return;
      let next = dart.str(it.current);
      parts[$add](next);
      length = length + (next.length + overhead);
      count++;
    }
    let penultimateString = null;
    let ultimateString = null;
    let penultimate = null;
    let ultimate = null;
    if (!dart.test(it.moveNext())) {
      if (count <= headCount + tailCount) return;
      ultimateString = parts[$removeLast]();
      penultimateString = parts[$removeLast]();
    } else {
      penultimate = it.current;
      count++;
      if (!dart.test(it.moveNext())) {
        if (count <= headCount + 1) {
          parts[$add](dart.str(penultimate));
          return;
        }
        ultimateString = dart.str(penultimate);
        penultimateString = parts[$removeLast]();
        length = length + (ultimateString.length + overhead);
      } else {
        ultimate = it.current;
        count++;
        if (!(count < maxCount)) dart.assertFailed();
        while (dart.test(it.moveNext())) {
          penultimate = ultimate;
          ultimate = it.current;
          count++;
          if (count > maxCount) {
            while (length > lengthLimit - ellipsisSize - overhead && count > headCount) {
              length = length - (parts[$removeLast]().length + overhead);
              count--;
            }
            parts[$add]("...");
            return;
          }
        }
        penultimateString = dart.str(penultimate);
        ultimateString = dart.str(ultimate);
        length = length + (ultimateString.length + penultimateString.length + 2 * overhead);
      }
    }
    let elision = null;
    if (count > dart.notNull(parts[$length]) + tailCount) {
      elision = "...";
      length = length + (ellipsisSize + overhead);
    }
    while (length > lengthLimit && dart.notNull(parts[$length]) > headCount) {
      length = length - (parts[$removeLast]().length + overhead);
      if (elision == null) {
        elision = "...";
        length = length + (ellipsisSize + overhead);
      }
    }
    if (elision != null) {
      parts[$add](elision);
    }
    parts[$add](penultimateString);
    parts[$add](ultimateString);
  };
  const _iterator$0 = Symbol('_iterator');
  const _state$ = Symbol('_state');
  const _move = Symbol('_move');
  const _is_HasNextIterator_default = Symbol('_is_HasNextIterator_default');
  collection.HasNextIterator$ = dart.generic(E => {
    let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
    class HasNextIterator extends core.Object {
      get hasNext() {
        if (this[_state$] === 2) this[_move]();
        return this[_state$] === 0;
      }
      next() {
        if (!dart.test(this.hasNext)) dart.throw(new core.StateError.new("No more elements"));
        if (!(this[_state$] === 0)) dart.assertFailed();
        let result = this[_iterator$0].current;
        this[_move]();
        return result;
      }
      [_move]() {
        if (dart.test(this[_iterator$0].moveNext())) {
          this[_state$] = 0;
        } else {
          this[_state$] = 1;
        }
      }
    }
    (HasNextIterator.new = function(iterator) {
      this[_state$] = 2;
      this[_iterator$0] = iterator;
    }).prototype = HasNextIterator.prototype;
    dart.addTypeTests(HasNextIterator);
    HasNextIterator.prototype[_is_HasNextIterator_default] = true;
    dart.setMethodSignature(HasNextIterator, () => ({
      __proto__: dart.getMethods(HasNextIterator.__proto__),
      next: dart.fnType(E, []),
      [_move]: dart.fnType(dart.void, [])
    }));
    dart.setGetterSignature(HasNextIterator, () => ({
      __proto__: dart.getGetters(HasNextIterator.__proto__),
      hasNext: core.bool
    }));
    dart.setFieldSignature(HasNextIterator, () => ({
      __proto__: dart.getFields(HasNextIterator.__proto__),
      [_iterator$0]: dart.fieldType(IteratorOfE()),
      [_state$]: dart.fieldType(core.int)
    }));
    return HasNextIterator;
  });
  collection.HasNextIterator = collection.HasNextIterator$();
  dart.defineLazy(collection.HasNextIterator, {
    /*collection.HasNextIterator._HAS_NEXT_AND_NEXT_IN_CURRENT*/get _HAS_NEXT_AND_NEXT_IN_CURRENT() {
      return 0;
    },
    /*collection.HasNextIterator._NO_NEXT*/get _NO_NEXT() {
      return 1;
    },
    /*collection.HasNextIterator._NOT_MOVED_YET*/get _NOT_MOVED_YET() {
      return 2;
    }
  });
  dart.addTypeTests(collection.HasNextIterator, _is_HasNextIterator_default);
  const _is_LinkedHashMap_default = Symbol('_is_LinkedHashMap_default');
  collection.LinkedHashMap$ = dart.generic((K, V) => {
    let IdentityMapOfK$V = () => (IdentityMapOfK$V = dart.constFn(_js_helper.IdentityMap$(K, V)))();
    let LinkedMapOfK$V = () => (LinkedMapOfK$V = dart.constFn(_js_helper.LinkedMap$(K, V)))();
    let CustomHashMapOfK$V = () => (CustomHashMapOfK$V = dart.constFn(_js_helper.CustomHashMap$(K, V)))();
    let CustomKeyHashMapOfK$V = () => (CustomKeyHashMapOfK$V = dart.constFn(_js_helper.CustomKeyHashMap$(K, V)))();
    let LinkedHashMapOfK$V = () => (LinkedHashMapOfK$V = dart.constFn(collection.LinkedHashMap$(K, V)))();
    let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
    class LinkedHashMap extends core.Object {
      static new(opts) {
        let equals = opts && 'equals' in opts ? opts.equals : null;
        let hashCode = opts && 'hashCode' in opts ? opts.hashCode : null;
        let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
        if (isValidKey == null) {
          if (hashCode == null) {
            if (equals == null) {
              if (dart.wrapType(K) === dart.wrapType(core.String) || dart.wrapType(K) === dart.wrapType(core.int)) {
                return new (IdentityMapOfK$V()).new();
              }
              return new (LinkedMapOfK$V()).new();
            }
            hashCode = dart.hashCode;
          } else if (dart.fn(core.identityHashCode, ObjectToint()) === hashCode && dart.fn(core.identical, ObjectAndObjectTobool()) === equals) {
            return new (IdentityMapOfK$V()).new();
          }
          return new (CustomHashMapOfK$V()).new(equals != null ? equals : dart.equals, hashCode);
        }
        return new (CustomKeyHashMapOfK$V()).new(equals != null ? equals : dart.equals, hashCode != null ? hashCode : dart.hashCode, isValidKey);
      }
      static identity() {
        return new (IdentityMapOfK$V()).new();
      }
      static from(other) {
        let result = new (LinkedMapOfK$V()).new();
        other[$forEach](dart.fn((k, v) => {
          result._set(K._check(k), V._check(v));
        }, dynamicAnddynamicToNull()));
        return result;
      }
      static of(other) {
        let _ = new (LinkedMapOfK$V()).new();
        _.addAll(other);
        return _;
      }
      static fromIterable(iterable, opts) {
        let key = opts && 'key' in opts ? opts.key : null;
        let value = opts && 'value' in opts ? opts.value : null;
        let map = new (LinkedMapOfK$V()).new();
        collection.MapBase._fillMapWithMappedIterable(map, iterable, key, value);
        return map;
      }
      static fromIterables(keys, values) {
        let map = new (LinkedMapOfK$V()).new();
        collection.MapBase._fillMapWithIterables(map, keys, values);
        return map;
      }
      static fromEntries(entries) {
        return LinkedHashMapOfK$V()._check((() => {
          let _ = new (LinkedMapOfK$V()).new();
          _[$addEntries](entries);
          return _;
        })());
      }
    }
    (LinkedHashMap[dart.mixinNew] = function() {
    }).prototype = LinkedHashMap.prototype;
    LinkedHashMap.prototype[dart.isMap] = true;
    dart.addTypeTests(LinkedHashMap);
    LinkedHashMap.prototype[_is_LinkedHashMap_default] = true;
    LinkedHashMap[dart.implements] = () => [MapOfK$V()];
    return LinkedHashMap;
  });
  collection.LinkedHashMap = collection.LinkedHashMap$();
  dart.addTypeTests(collection.LinkedHashMap, _is_LinkedHashMap_default);
  const _is_LinkedHashSet_default = Symbol('_is_LinkedHashSet_default');
  collection.LinkedHashSet$ = dart.generic(E => {
    let _IdentityHashSetOfE = () => (_IdentityHashSetOfE = dart.constFn(collection._IdentityHashSet$(E)))();
    let _HashSetOfE = () => (_HashSetOfE = dart.constFn(collection._HashSet$(E)))();
    let _CustomHashSetOfE = () => (_CustomHashSetOfE = dart.constFn(collection._CustomHashSet$(E)))();
    let _CustomKeyHashSetOfE = () => (_CustomKeyHashSetOfE = dart.constFn(collection._CustomKeyHashSet$(E)))();
    let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
    class LinkedHashSet extends core.Object {
      static new(opts) {
        let equals = opts && 'equals' in opts ? opts.equals : null;
        let hashCode = opts && 'hashCode' in opts ? opts.hashCode : null;
        let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
        if (isValidKey == null) {
          if (hashCode == null) {
            if (equals == null) {
              if (dart.wrapType(E) === dart.wrapType(core.String) || dart.wrapType(E) === dart.wrapType(core.int)) {
                return new (_IdentityHashSetOfE()).new();
              }
              return new (_HashSetOfE()).new();
            }
            hashCode = dart.hashCode;
          } else if (dart.fn(core.identityHashCode, ObjectToint()) === hashCode && dart.fn(core.identical, ObjectAndObjectTobool()) === equals) {
            return new (_IdentityHashSetOfE()).new();
          }
          return new (_CustomHashSetOfE()).new(equals != null ? equals : dart.equals, hashCode != null ? hashCode : dart.hashCode);
        }
        return new (_CustomKeyHashSetOfE()).new(equals != null ? equals : dart.equals, hashCode != null ? hashCode : dart.hashCode, isValidKey);
      }
      static identity() {
        return new (_IdentityHashSetOfE()).new();
      }
      static from(elements) {
        let result = new (_HashSetOfE()).new();
        for (let element of elements) {
          result.add(E._check(element));
        }
        return result;
      }
      static of(elements) {
        let _ = new (_HashSetOfE()).new();
        _.addAll(elements);
        return _;
      }
      [Symbol.iterator]() {
        return new dart.JsIterator(this.iterator);
      }
    }
    (LinkedHashSet[dart.mixinNew] = function() {
    }).prototype = LinkedHashSet.prototype;
    dart.addTypeTests(LinkedHashSet);
    LinkedHashSet.prototype[_is_LinkedHashSet_default] = true;
    LinkedHashSet[dart.implements] = () => [SetOfE()];
    return LinkedHashSet;
  });
  collection.LinkedHashSet = collection.LinkedHashSet$();
  dart.addTypeTests(collection.LinkedHashSet, _is_LinkedHashSet_default);
  const _modificationCount = Symbol('_modificationCount');
  const _length$0 = Symbol('_length');
  const _first$ = Symbol('_first');
  const _insertBefore = Symbol('_insertBefore');
  const _list$ = Symbol('_list');
  const _unlink = Symbol('_unlink');
  const _next$0 = Symbol('_next');
  const _previous$0 = Symbol('_previous');
  const _is_LinkedList_default$ = Symbol('_is_LinkedList_default');
  collection.LinkedList$ = dart.generic(E => {
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let _LinkedListIteratorOfE = () => (_LinkedListIteratorOfE = dart.constFn(collection._LinkedListIterator$(E)))();
    class LinkedList extends core.Iterable$(E) {
      addFirst(entry) {
        E._check(entry);
        this[_insertBefore](this[_first$], entry, {updateFirst: true});
        this[_first$] = entry;
      }
      add(entry) {
        E._check(entry);
        this[_insertBefore](this[_first$], entry, {updateFirst: false});
      }
      addAll(entries) {
        IterableOfE()._check(entries);
        entries[$forEach](dart.bind(this, 'add'));
      }
      remove(entry) {
        E._check(entry);
        if (!dart.equals(entry[_list$], this)) return false;
        this[_unlink](entry);
        return true;
      }
      get iterator() {
        return new (_LinkedListIteratorOfE()).new(this);
      }
      get length() {
        return this[_length$0];
      }
      clear() {
        this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
        if (dart.test(this.isEmpty)) return;
        let next = this[_first$];
        do {
          let entry = next;
          next = entry[_next$0];
          entry[_next$0] = entry[_previous$0] = entry[_list$] = null;
        } while (!(next == this[_first$]));
        this[_first$] = null;
        this[_length$0] = 0;
      }
      get first() {
        if (dart.test(this.isEmpty)) {
          dart.throw(new core.StateError.new("No such element"));
        }
        return this[_first$];
      }
      get last() {
        if (dart.test(this.isEmpty)) {
          dart.throw(new core.StateError.new("No such element"));
        }
        return this[_first$][_previous$0];
      }
      get single() {
        if (dart.test(this.isEmpty)) {
          dart.throw(new core.StateError.new("No such element"));
        }
        if (dart.notNull(this[_length$0]) > 1) {
          dart.throw(new core.StateError.new("Too many elements"));
        }
        return this[_first$];
      }
      forEach(action) {
        let modificationCount = this[_modificationCount];
        if (dart.test(this.isEmpty)) return;
        let current = this[_first$];
        do {
          action(current);
          if (modificationCount != this[_modificationCount]) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
          current = current[_next$0];
        } while (!(current == this[_first$]));
      }
      get isEmpty() {
        return this[_length$0] === 0;
      }
      [_insertBefore](entry, newEntry, opts) {
        E._check(entry);
        E._check(newEntry);
        let updateFirst = opts && 'updateFirst' in opts ? opts.updateFirst : null;
        if (newEntry.list != null) {
          dart.throw(new core.StateError.new("LinkedListEntry is already in a LinkedList"));
        }
        this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
        newEntry[_list$] = this;
        if (dart.test(this.isEmpty)) {
          if (!(entry == null)) dart.assertFailed();
          newEntry[_previous$0] = newEntry[_next$0] = newEntry;
          this[_first$] = newEntry;
          this[_length$0] = dart.notNull(this[_length$0]) + 1;
          return;
        }
        let predecessor = entry[_previous$0];
        let successor = entry;
        newEntry[_previous$0] = predecessor;
        newEntry[_next$0] = successor;
        predecessor[_next$0] = newEntry;
        successor[_previous$0] = newEntry;
        if (dart.test(updateFirst) && entry == this[_first$]) {
          this[_first$] = newEntry;
        }
        this[_length$0] = dart.notNull(this[_length$0]) + 1;
      }
      [_unlink](entry) {
        E._check(entry);
        this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
        entry[_next$0][_previous$0] = entry[_previous$0];
        let next = entry[_previous$0][_next$0] = entry[_next$0];
        this[_length$0] = dart.notNull(this[_length$0]) - 1;
        entry[_list$] = entry[_next$0] = entry[_previous$0] = null;
        if (dart.test(this.isEmpty)) {
          this[_first$] = null;
        } else if (entry == this[_first$]) {
          this[_first$] = next;
        }
      }
    }
    (LinkedList.new = function() {
      this[_modificationCount] = 0;
      this[_length$0] = 0;
      this[_first$] = null;
      LinkedList.__proto__.new.call(this);
    }).prototype = LinkedList.prototype;
    dart.addTypeTests(LinkedList);
    LinkedList.prototype[_is_LinkedList_default$] = true;
    dart.setMethodSignature(LinkedList, () => ({
      __proto__: dart.getMethods(LinkedList.__proto__),
      addFirst: dart.fnType(dart.void, [core.Object]),
      add: dart.fnType(dart.void, [core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      remove: dart.fnType(core.bool, [core.Object]),
      clear: dart.fnType(dart.void, []),
      [_insertBefore]: dart.fnType(dart.void, [core.Object, core.Object], {updateFirst: core.bool}),
      [_unlink]: dart.fnType(dart.void, [core.Object])
    }));
    dart.setGetterSignature(LinkedList, () => ({
      __proto__: dart.getGetters(LinkedList.__proto__),
      iterator: core.Iterator$(E),
      [$iterator]: core.Iterator$(E)
    }));
    dart.setFieldSignature(LinkedList, () => ({
      __proto__: dart.getFields(LinkedList.__proto__),
      [_modificationCount]: dart.fieldType(core.int),
      [_length$0]: dart.fieldType(core.int),
      [_first$]: dart.fieldType(E)
    }));
    dart.defineExtensionMethods(LinkedList, ['forEach']);
    dart.defineExtensionAccessors(LinkedList, [
      'iterator',
      'length',
      'first',
      'last',
      'single',
      'isEmpty'
    ]);
    return LinkedList;
  });
  collection.LinkedList = collection.LinkedList$();
  dart.addTypeTests(collection.LinkedList, _is_LinkedList_default$);
  const _visitedFirst = Symbol('_visitedFirst');
  const _current$1 = Symbol('_current');
  const _is__LinkedListIterator_default$ = Symbol('_is__LinkedListIterator_default');
  collection._LinkedListIterator$ = dart.generic(E => {
    let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
    let LinkedListOfE = () => (LinkedListOfE = dart.constFn(collection.LinkedList$(E)))();
    let LinkedListEntryOfE = () => (LinkedListEntryOfE = dart.constFn(collection.LinkedListEntry$(E)))();
    class _LinkedListIterator extends core.Object {
      get current() {
        return this[_current$1];
      }
      moveNext() {
        if (this[_modificationCount] != this[_list$][_modificationCount]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
        if (dart.test(this[_list$].isEmpty) || dart.test(this[_visitedFirst]) && this[_next$0] == this[_list$].first) {
          this[_current$1] = null;
          return false;
        }
        this[_visitedFirst] = true;
        this[_current$1] = E._check(this[_next$0]);
        this[_next$0] = this[_next$0][_next$0];
        return true;
      }
    }
    (_LinkedListIterator.new = function(list) {
      this[_current$1] = null;
      this[_list$] = list;
      this[_modificationCount] = list[_modificationCount];
      this[_next$0] = list[_first$];
      this[_visitedFirst] = false;
    }).prototype = _LinkedListIterator.prototype;
    dart.addTypeTests(_LinkedListIterator);
    _LinkedListIterator.prototype[_is__LinkedListIterator_default$] = true;
    _LinkedListIterator[dart.implements] = () => [IteratorOfE()];
    dart.setMethodSignature(_LinkedListIterator, () => ({
      __proto__: dart.getMethods(_LinkedListIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(_LinkedListIterator, () => ({
      __proto__: dart.getGetters(_LinkedListIterator.__proto__),
      current: E
    }));
    dart.setFieldSignature(_LinkedListIterator, () => ({
      __proto__: dart.getFields(_LinkedListIterator.__proto__),
      [_list$]: dart.finalFieldType(LinkedListOfE()),
      [_modificationCount]: dart.finalFieldType(core.int),
      [_current$1]: dart.fieldType(E),
      [_next$0]: dart.fieldType(LinkedListEntryOfE()),
      [_visitedFirst]: dart.fieldType(core.bool)
    }));
    return _LinkedListIterator;
  });
  collection._LinkedListIterator = collection._LinkedListIterator$();
  dart.addTypeTests(collection._LinkedListIterator, _is__LinkedListIterator_default$);
  const _is_LinkedListEntry_default$ = Symbol('_is_LinkedListEntry_default');
  collection.LinkedListEntry$ = dart.generic(E => {
    let LinkedListOfE = () => (LinkedListOfE = dart.constFn(collection.LinkedList$(E)))();
    class LinkedListEntry extends core.Object {
      get list() {
        return this[_list$];
      }
      unlink() {
        this[_list$][_unlink](E._check(this));
      }
      get next() {
        if (this[_list$] == null || this[_list$].first == this[_next$0]) return null;
        return this[_next$0];
      }
      get previous() {
        if (this[_list$] == null || this === this[_list$].first) return null;
        return this[_previous$0];
      }
      insertAfter(entry) {
        E._check(entry);
        this[_list$][_insertBefore](this[_next$0], entry, {updateFirst: false});
      }
      insertBefore(entry) {
        E._check(entry);
        this[_list$][_insertBefore](E._check(this), entry, {updateFirst: true});
      }
    }
    (LinkedListEntry.new = function() {
      this[_list$] = null;
      this[_next$0] = null;
      this[_previous$0] = null;
    }).prototype = LinkedListEntry.prototype;
    dart.addTypeTests(LinkedListEntry);
    LinkedListEntry.prototype[_is_LinkedListEntry_default$] = true;
    dart.setMethodSignature(LinkedListEntry, () => ({
      __proto__: dart.getMethods(LinkedListEntry.__proto__),
      unlink: dart.fnType(dart.void, []),
      insertAfter: dart.fnType(dart.void, [core.Object]),
      insertBefore: dart.fnType(dart.void, [core.Object])
    }));
    dart.setGetterSignature(LinkedListEntry, () => ({
      __proto__: dart.getGetters(LinkedListEntry.__proto__),
      list: collection.LinkedList$(E),
      next: E,
      previous: E
    }));
    dart.setFieldSignature(LinkedListEntry, () => ({
      __proto__: dart.getFields(LinkedListEntry.__proto__),
      [_list$]: dart.fieldType(LinkedListOfE()),
      [_next$0]: dart.fieldType(E),
      [_previous$0]: dart.fieldType(E)
    }));
    return LinkedListEntry;
  });
  collection.LinkedListEntry = collection.LinkedListEntry$();
  dart.addTypeTests(collection.LinkedListEntry, _is_LinkedListEntry_default$);
  const _is__MapBaseValueIterable_default = Symbol('_is__MapBaseValueIterable_default');
  collection._MapBaseValueIterable$ = dart.generic((K, V) => {
    let _MapBaseValueIteratorOfK$V = () => (_MapBaseValueIteratorOfK$V = dart.constFn(collection._MapBaseValueIterator$(K, V)))();
    let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
    class _MapBaseValueIterable extends _internal.EfficientLengthIterable$(V) {
      get length() {
        return this[_map$0][$length];
      }
      get isEmpty() {
        return this[_map$0][$isEmpty];
      }
      get isNotEmpty() {
        return this[_map$0][$isNotEmpty];
      }
      get first() {
        return this[_map$0][$_get](this[_map$0][$keys][$first]);
      }
      get single() {
        return this[_map$0][$_get](this[_map$0][$keys][$single]);
      }
      get last() {
        return this[_map$0][$_get](this[_map$0][$keys][$last]);
      }
      get iterator() {
        return new (_MapBaseValueIteratorOfK$V()).new(this[_map$0]);
      }
    }
    (_MapBaseValueIterable.new = function(map) {
      this[_map$0] = map;
      _MapBaseValueIterable.__proto__.new.call(this);
    }).prototype = _MapBaseValueIterable.prototype;
    dart.addTypeTests(_MapBaseValueIterable);
    _MapBaseValueIterable.prototype[_is__MapBaseValueIterable_default] = true;
    dart.setGetterSignature(_MapBaseValueIterable, () => ({
      __proto__: dart.getGetters(_MapBaseValueIterable.__proto__),
      length: core.int,
      [$length]: core.int,
      isEmpty: core.bool,
      [$isEmpty]: core.bool,
      isNotEmpty: core.bool,
      [$isNotEmpty]: core.bool,
      first: V,
      [$first]: V,
      single: V,
      [$single]: V,
      last: V,
      [$last]: V,
      iterator: core.Iterator$(V),
      [$iterator]: core.Iterator$(V)
    }));
    dart.setFieldSignature(_MapBaseValueIterable, () => ({
      __proto__: dart.getFields(_MapBaseValueIterable.__proto__),
      [_map$0]: dart.finalFieldType(MapOfK$V())
    }));
    dart.defineExtensionAccessors(_MapBaseValueIterable, [
      'length',
      'isEmpty',
      'isNotEmpty',
      'first',
      'single',
      'last',
      'iterator'
    ]);
    return _MapBaseValueIterable;
  });
  collection._MapBaseValueIterable = collection._MapBaseValueIterable$();
  dart.addTypeTests(collection._MapBaseValueIterable, _is__MapBaseValueIterable_default);
  const _keys = Symbol('_keys');
  const _is__MapBaseValueIterator_default = Symbol('_is__MapBaseValueIterator_default');
  collection._MapBaseValueIterator$ = dart.generic((K, V) => {
    let IteratorOfK = () => (IteratorOfK = dart.constFn(core.Iterator$(K)))();
    let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
    let IteratorOfV = () => (IteratorOfV = dart.constFn(core.Iterator$(V)))();
    class _MapBaseValueIterator extends core.Object {
      moveNext() {
        if (dart.test(this[_keys].moveNext())) {
          this[_current$1] = this[_map$0][$_get](this[_keys].current);
          return true;
        }
        this[_current$1] = null;
        return false;
      }
      get current() {
        return this[_current$1];
      }
    }
    (_MapBaseValueIterator.new = function(map) {
      this[_current$1] = null;
      this[_map$0] = map;
      this[_keys] = map[$keys][$iterator];
    }).prototype = _MapBaseValueIterator.prototype;
    dart.addTypeTests(_MapBaseValueIterator);
    _MapBaseValueIterator.prototype[_is__MapBaseValueIterator_default] = true;
    _MapBaseValueIterator[dart.implements] = () => [IteratorOfV()];
    dart.setMethodSignature(_MapBaseValueIterator, () => ({
      __proto__: dart.getMethods(_MapBaseValueIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(_MapBaseValueIterator, () => ({
      __proto__: dart.getGetters(_MapBaseValueIterator.__proto__),
      current: V
    }));
    dart.setFieldSignature(_MapBaseValueIterator, () => ({
      __proto__: dart.getFields(_MapBaseValueIterator.__proto__),
      [_keys]: dart.finalFieldType(IteratorOfK()),
      [_map$0]: dart.finalFieldType(MapOfK$V()),
      [_current$1]: dart.fieldType(V)
    }));
    return _MapBaseValueIterator;
  });
  collection._MapBaseValueIterator = collection._MapBaseValueIterator$();
  dart.addTypeTests(collection._MapBaseValueIterator, _is__MapBaseValueIterator_default);
  const _is_MapView_default = Symbol('_is_MapView_default');
  collection.MapView$ = dart.generic((K, V) => {
    let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
    let MapEntryOfK$V = () => (MapEntryOfK$V = dart.constFn(core.MapEntry$(K, V)))();
    let IterableOfMapEntryOfK$V = () => (IterableOfMapEntryOfK$V = dart.constFn(core.Iterable$(MapEntryOfK$V())))();
    let KAndVToV = () => (KAndVToV = dart.constFn(dart.fnType(V, [K, V])))();
    let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
    let VToV = () => (VToV = dart.constFn(dart.fnType(V, [V])))();
    class MapView extends core.Object {
      cast(RK, RV) {
        return core.Map$(RK, RV)._check(this[_map$0][$cast](RK, RV));
      }
      _get(key) {
        return this[_map$0][$_get](key);
      }
      _set(key, value) {
        K._check(key);
        V._check(value);
        this[_map$0][$_set](key, value);
        return value;
      }
      addAll(other) {
        MapOfK$V()._check(other);
        this[_map$0][$addAll](other);
      }
      clear() {
        this[_map$0][$clear]();
      }
      putIfAbsent(key, ifAbsent) {
        K._check(key);
        VoidToV()._check(ifAbsent);
        return this[_map$0][$putIfAbsent](key, ifAbsent);
      }
      containsKey(key) {
        return this[_map$0][$containsKey](key);
      }
      containsValue(value) {
        return this[_map$0][$containsValue](value);
      }
      forEach(action) {
        this[_map$0][$forEach](action);
      }
      get isEmpty() {
        return this[_map$0][$isEmpty];
      }
      get isNotEmpty() {
        return this[_map$0][$isNotEmpty];
      }
      get length() {
        return this[_map$0][$length];
      }
      get keys() {
        return this[_map$0][$keys];
      }
      remove(key) {
        return this[_map$0][$remove](key);
      }
      toString() {
        return dart.toString(this[_map$0]);
      }
      get values() {
        return this[_map$0][$values];
      }
      get entries() {
        return this[_map$0][$entries];
      }
      addEntries(entries) {
        IterableOfMapEntryOfK$V()._check(entries);
        this[_map$0][$addEntries](entries);
      }
      map(K2, V2, transform) {
        return core.Map$(K2, V2)._check(this[_map$0][$map](K2, V2, transform));
      }
      update(key, update, opts) {
        K._check(key);
        VToV()._check(update);
        let ifAbsent = opts && 'ifAbsent' in opts ? opts.ifAbsent : null;
        VoidToV()._check(ifAbsent);
        return this[_map$0][$update](key, update, {ifAbsent: ifAbsent});
      }
      updateAll(update) {
        KAndVToV()._check(update);
        this[_map$0][$updateAll](update);
      }
      removeWhere(test) {
        this[_map$0][$removeWhere](test);
      }
    }
    (MapView.new = function(map) {
      this[_map$0] = map;
    }).prototype = MapView.prototype;
    MapView.prototype[dart.isMap] = true;
    dart.addTypeTests(MapView);
    MapView.prototype[_is_MapView_default] = true;
    MapView[dart.implements] = () => [MapOfK$V()];
    dart.setMethodSignature(MapView, () => ({
      __proto__: dart.getMethods(MapView.__proto__),
      cast: dart.gFnType((RK, RV) => [core.Map$(RK, RV), []]),
      [$cast]: dart.gFnType((RK, RV) => [core.Map$(RK, RV), []]),
      _get: dart.fnType(V, [core.Object]),
      [$_get]: dart.fnType(V, [core.Object]),
      _set: dart.fnType(dart.void, [core.Object, core.Object]),
      [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      [$addAll]: dart.fnType(dart.void, [core.Object]),
      clear: dart.fnType(dart.void, []),
      [$clear]: dart.fnType(dart.void, []),
      putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
      [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
      containsKey: dart.fnType(core.bool, [core.Object]),
      [$containsKey]: dart.fnType(core.bool, [core.Object]),
      containsValue: dart.fnType(core.bool, [core.Object]),
      [$containsValue]: dart.fnType(core.bool, [core.Object]),
      forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [K, V])]),
      [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [K, V])]),
      remove: dart.fnType(V, [core.Object]),
      [$remove]: dart.fnType(V, [core.Object]),
      toString: dart.fnType(core.String, []),
      [$toString]: dart.fnType(core.String, []),
      addEntries: dart.fnType(dart.void, [core.Object]),
      [$addEntries]: dart.fnType(dart.void, [core.Object]),
      map: dart.gFnType((K2, V2) => [core.Map$(K2, V2), [dart.fnType(core.MapEntry$(K2, V2), [K, V])]]),
      [$map]: dart.gFnType((K2, V2) => [core.Map$(K2, V2), [dart.fnType(core.MapEntry$(K2, V2), [K, V])]]),
      update: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
      [$update]: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
      updateAll: dart.fnType(dart.void, [core.Object]),
      [$updateAll]: dart.fnType(dart.void, [core.Object]),
      removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [K, V])]),
      [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [K, V])])
    }));
    dart.setGetterSignature(MapView, () => ({
      __proto__: dart.getGetters(MapView.__proto__),
      isEmpty: core.bool,
      [$isEmpty]: core.bool,
      isNotEmpty: core.bool,
      [$isNotEmpty]: core.bool,
      length: core.int,
      [$length]: core.int,
      keys: core.Iterable$(K),
      [$keys]: core.Iterable$(K),
      values: core.Iterable$(V),
      [$values]: core.Iterable$(V),
      entries: core.Iterable$(core.MapEntry$(K, V)),
      [$entries]: core.Iterable$(core.MapEntry$(K, V))
    }));
    dart.setFieldSignature(MapView, () => ({
      __proto__: dart.getFields(MapView.__proto__),
      [_map$0]: dart.finalFieldType(MapOfK$V())
    }));
    dart.defineExtensionMethods(MapView, [
      'cast',
      '_get',
      '_set',
      'addAll',
      'clear',
      'putIfAbsent',
      'containsKey',
      'containsValue',
      'forEach',
      'remove',
      'toString',
      'addEntries',
      'map',
      'update',
      'updateAll',
      'removeWhere'
    ]);
    dart.defineExtensionAccessors(MapView, [
      'isEmpty',
      'isNotEmpty',
      'length',
      'keys',
      'values',
      'entries'
    ]);
    return MapView;
  });
  collection.MapView = collection.MapView$();
  dart.addTypeTests(collection.MapView, _is_MapView_default);
  const _is_UnmodifiableMapView_default = Symbol('_is_UnmodifiableMapView_default');
  collection.UnmodifiableMapView$ = dart.generic((K, V) => {
    const MapView__UnmodifiableMapMixin$ = class MapView__UnmodifiableMapMixin extends collection.MapView$(K, V) {};
    (MapView__UnmodifiableMapMixin$.new = function(map) {
      MapView__UnmodifiableMapMixin$.__proto__.new.call(this, map);
    }).prototype = MapView__UnmodifiableMapMixin$.prototype;
    dart.applyMixin(MapView__UnmodifiableMapMixin$, collection._UnmodifiableMapMixin$(K, V));
    class UnmodifiableMapView extends MapView__UnmodifiableMapMixin$ {
      cast(RK, RV) {
        return new (collection.UnmodifiableMapView$(RK, RV)).new(core.Map$(RK, RV)._check(this[_map$0][$cast](RK, RV)));
      }
    }
    (UnmodifiableMapView.new = function(map) {
      UnmodifiableMapView.__proto__.new.call(this, map);
    }).prototype = UnmodifiableMapView.prototype;
    dart.addTypeTests(UnmodifiableMapView);
    UnmodifiableMapView.prototype[_is_UnmodifiableMapView_default] = true;
    dart.defineExtensionMethods(UnmodifiableMapView, ['cast']);
    return UnmodifiableMapView;
  });
  collection.UnmodifiableMapView = collection.UnmodifiableMapView$();
  dart.addTypeTests(collection.UnmodifiableMapView, _is_UnmodifiableMapView_default);
  const _is_Queue_default = Symbol('_is_Queue_default');
  collection.Queue$ = dart.generic(E => {
    let ListQueueOfE = () => (ListQueueOfE = dart.constFn(collection.ListQueue$(E)))();
    let EfficientLengthIterableOfE = () => (EfficientLengthIterableOfE = dart.constFn(_internal.EfficientLengthIterable$(E)))();
    class Queue extends core.Object {
      static new() {
        return new (ListQueueOfE()).new();
      }
      static from(elements) {
        return ListQueueOfE().from(elements);
      }
      static of(elements) {
        return ListQueueOfE().of(elements);
      }
      static castFrom(S, T, source) {
        return new (_internal.CastQueue$(S, T)).new(source);
      }
    }
    (Queue[dart.mixinNew] = function() {
    }).prototype = Queue.prototype;
    dart.addTypeTests(Queue);
    Queue.prototype[_is_Queue_default] = true;
    Queue[dart.implements] = () => [EfficientLengthIterableOfE()];
    return Queue;
  });
  collection.Queue = collection.Queue$();
  dart.addTypeTests(collection.Queue, _is_Queue_default);
  const _previousLink = Symbol('_previousLink');
  const _nextLink = Symbol('_nextLink');
  const _link = Symbol('_link');
  const _is__DoubleLink_default = Symbol('_is__DoubleLink_default');
  collection._DoubleLink$ = dart.generic(Link => {
    class _DoubleLink extends core.Object {
      get [_previousLink]() {
        return this[_previousLink$];
      }
      set [_previousLink](value) {
        this[_previousLink$] = Link._check(value);
      }
      get [_nextLink]() {
        return this[_nextLink$];
      }
      set [_nextLink](value) {
        this[_nextLink$] = Link._check(value);
      }
      [_link](previous, next) {
        Link._check(previous);
        Link._check(next);
        this[_nextLink] = next;
        this[_previousLink] = previous;
        if (previous != null) previous[_nextLink] = Link._check(this);
        if (next != null) next[_previousLink] = Link._check(this);
      }
      [_unlink]() {
        if (this[_previousLink] != null) this[_previousLink][_nextLink] = this[_nextLink];
        if (this[_nextLink] != null) this[_nextLink][_previousLink] = this[_previousLink];
        this[_nextLink] = null;
        this[_previousLink] = null;
      }
    }
    (_DoubleLink.new = function() {
      this[_previousLink$] = null;
      this[_nextLink$] = null;
    }).prototype = _DoubleLink.prototype;
    dart.addTypeTests(_DoubleLink);
    _DoubleLink.prototype[_is__DoubleLink_default] = true;
    const _previousLink$ = Symbol("_DoubleLink._previousLink");
    const _nextLink$ = Symbol("_DoubleLink._nextLink");
    dart.setMethodSignature(_DoubleLink, () => ({
      __proto__: dart.getMethods(_DoubleLink.__proto__),
      [_link]: dart.fnType(dart.void, [core.Object, core.Object]),
      [_unlink]: dart.fnType(dart.void, [])
    }));
    dart.setFieldSignature(_DoubleLink, () => ({
      __proto__: dart.getFields(_DoubleLink.__proto__),
      [_previousLink]: dart.fieldType(Link),
      [_nextLink]: dart.fieldType(Link)
    }));
    return _DoubleLink;
  });
  collection._DoubleLink = collection._DoubleLink$();
  dart.addTypeTests(collection._DoubleLink, _is__DoubleLink_default);
  const _is_DoubleLinkedQueueEntry_default = Symbol('_is_DoubleLinkedQueueEntry_default');
  collection.DoubleLinkedQueueEntry$ = dart.generic(E => {
    let DoubleLinkedQueueEntryOfE = () => (DoubleLinkedQueueEntryOfE = dart.constFn(collection.DoubleLinkedQueueEntry$(E)))();
    class DoubleLinkedQueueEntry extends collection._DoubleLink {
      get element() {
        return this[element$];
      }
      set element(value) {
        this[element$] = E._check(value);
      }
      append(e) {
        E._check(e);
        new (DoubleLinkedQueueEntryOfE()).new(e)[_link](this, this[_nextLink]);
      }
      prepend(e) {
        E._check(e);
        new (DoubleLinkedQueueEntryOfE()).new(e)[_link](this[_previousLink], this);
      }
      remove() {
        this[_unlink]();
        return this.element;
      }
      previousEntry() {
        return this[_previousLink];
      }
      nextEntry() {
        return this[_nextLink];
      }
    }
    (DoubleLinkedQueueEntry.new = function(element) {
      this[element$] = element;
      DoubleLinkedQueueEntry.__proto__.new.call(this);
    }).prototype = DoubleLinkedQueueEntry.prototype;
    dart.addTypeTests(DoubleLinkedQueueEntry);
    DoubleLinkedQueueEntry.prototype[_is_DoubleLinkedQueueEntry_default] = true;
    const element$ = Symbol("DoubleLinkedQueueEntry.element");
    dart.setMethodSignature(DoubleLinkedQueueEntry, () => ({
      __proto__: dart.getMethods(DoubleLinkedQueueEntry.__proto__),
      append: dart.fnType(dart.void, [core.Object]),
      prepend: dart.fnType(dart.void, [core.Object]),
      remove: dart.fnType(E, []),
      previousEntry: dart.fnType(collection.DoubleLinkedQueueEntry$(E), []),
      nextEntry: dart.fnType(collection.DoubleLinkedQueueEntry$(E), [])
    }));
    dart.setFieldSignature(DoubleLinkedQueueEntry, () => ({
      __proto__: dart.getFields(DoubleLinkedQueueEntry.__proto__),
      element: dart.fieldType(E)
    }));
    return DoubleLinkedQueueEntry;
  }, E => {
    dart.setBaseClass(collection.DoubleLinkedQueueEntry$(E), collection._DoubleLink$(collection.DoubleLinkedQueueEntry$(E)));
  });
  collection.DoubleLinkedQueueEntry = collection.DoubleLinkedQueueEntry$();
  dart.addTypeTests(collection.DoubleLinkedQueueEntry, _is_DoubleLinkedQueueEntry_default);
  const _queue = Symbol('_queue');
  const _append = Symbol('_append');
  const _prepend = Symbol('_prepend');
  const _element = Symbol('_element');
  const _asNonSentinelEntry = Symbol('_asNonSentinelEntry');
  const _is__DoubleLinkedQueueEntry_default = Symbol('_is__DoubleLinkedQueueEntry_default');
  collection._DoubleLinkedQueueEntry$ = dart.generic(E => {
    let _DoubleLinkedQueueElementOfE = () => (_DoubleLinkedQueueElementOfE = dart.constFn(collection._DoubleLinkedQueueElement$(E)))();
    let _DoubleLinkedQueueEntryOfE = () => (_DoubleLinkedQueueEntryOfE = dart.constFn(collection._DoubleLinkedQueueEntry$(E)))();
    let DoubleLinkedQueueOfE = () => (DoubleLinkedQueueOfE = dart.constFn(collection.DoubleLinkedQueue$(E)))();
    class _DoubleLinkedQueueEntry extends collection.DoubleLinkedQueueEntry$(E) {
      [_append](e) {
        E._check(e);
        new (_DoubleLinkedQueueElementOfE()).new(e, this[_queue])[_link](this, this[_nextLink]);
      }
      [_prepend](e) {
        E._check(e);
        new (_DoubleLinkedQueueElementOfE()).new(e, this[_queue])[_link](this[_previousLink], this);
      }
      get [_element]() {
        return this.element;
      }
      nextEntry() {
        let entry = _DoubleLinkedQueueEntryOfE()._check(this[_nextLink]);
        return entry[_asNonSentinelEntry]();
      }
      previousEntry() {
        let entry = _DoubleLinkedQueueEntryOfE()._check(this[_previousLink]);
        return entry[_asNonSentinelEntry]();
      }
    }
    (_DoubleLinkedQueueEntry.new = function(element, queue) {
      this[_queue] = queue;
      _DoubleLinkedQueueEntry.__proto__.new.call(this, element);
    }).prototype = _DoubleLinkedQueueEntry.prototype;
    dart.addTypeTests(_DoubleLinkedQueueEntry);
    _DoubleLinkedQueueEntry.prototype[_is__DoubleLinkedQueueEntry_default] = true;
    dart.setMethodSignature(_DoubleLinkedQueueEntry, () => ({
      __proto__: dart.getMethods(_DoubleLinkedQueueEntry.__proto__),
      [_append]: dart.fnType(dart.void, [core.Object]),
      [_prepend]: dart.fnType(dart.void, [core.Object])
    }));
    dart.setGetterSignature(_DoubleLinkedQueueEntry, () => ({
      __proto__: dart.getGetters(_DoubleLinkedQueueEntry.__proto__),
      [_element]: E
    }));
    dart.setFieldSignature(_DoubleLinkedQueueEntry, () => ({
      __proto__: dart.getFields(_DoubleLinkedQueueEntry.__proto__),
      [_queue]: dart.fieldType(DoubleLinkedQueueOfE())
    }));
    return _DoubleLinkedQueueEntry;
  });
  collection._DoubleLinkedQueueEntry = collection._DoubleLinkedQueueEntry$();
  dart.addTypeTests(collection._DoubleLinkedQueueEntry, _is__DoubleLinkedQueueEntry_default);
  const _elementCount = Symbol('_elementCount');
  const _remove = Symbol('_remove');
  const _is__DoubleLinkedQueueElement_default = Symbol('_is__DoubleLinkedQueueElement_default');
  collection._DoubleLinkedQueueElement$ = dart.generic(E => {
    class _DoubleLinkedQueueElement extends collection._DoubleLinkedQueueEntry$(E) {
      append(e) {
        E._check(e);
        this[_append](e);
        if (this[_queue] != null) {
          let o = this[_queue];
          o[_elementCount] = dart.notNull(o[_elementCount]) + 1;
        }
      }
      prepend(e) {
        E._check(e);
        this[_prepend](e);
        if (this[_queue] != null) {
          let o = this[_queue];
          o[_elementCount] = dart.notNull(o[_elementCount]) + 1;
        }
      }
      [_remove]() {
        this[_queue] = null;
        this[_unlink]();
        return this.element;
      }
      remove() {
        if (this[_queue] != null) {
          let o = this[_queue];
          o[_elementCount] = dart.notNull(o[_elementCount]) - 1;
        }
        return this[_remove]();
      }
      [_asNonSentinelEntry]() {
        return this;
      }
    }
    (_DoubleLinkedQueueElement.new = function(element, queue) {
      _DoubleLinkedQueueElement.__proto__.new.call(this, element, queue);
    }).prototype = _DoubleLinkedQueueElement.prototype;
    dart.addTypeTests(_DoubleLinkedQueueElement);
    _DoubleLinkedQueueElement.prototype[_is__DoubleLinkedQueueElement_default] = true;
    dart.setMethodSignature(_DoubleLinkedQueueElement, () => ({
      __proto__: dart.getMethods(_DoubleLinkedQueueElement.__proto__),
      append: dart.fnType(dart.void, [core.Object]),
      prepend: dart.fnType(dart.void, [core.Object]),
      [_remove]: dart.fnType(E, []),
      [_asNonSentinelEntry]: dart.fnType(collection._DoubleLinkedQueueElement$(E), [])
    }));
    return _DoubleLinkedQueueElement;
  });
  collection._DoubleLinkedQueueElement = collection._DoubleLinkedQueueElement$();
  dart.addTypeTests(collection._DoubleLinkedQueueElement, _is__DoubleLinkedQueueElement_default);
  const _is__DoubleLinkedQueueSentinel_default = Symbol('_is__DoubleLinkedQueueSentinel_default');
  collection._DoubleLinkedQueueSentinel$ = dart.generic(E => {
    class _DoubleLinkedQueueSentinel extends collection._DoubleLinkedQueueEntry$(E) {
      [_asNonSentinelEntry]() {
        return null;
      }
      [_remove]() {
        dart.throw(_internal.IterableElementError.noElement());
      }
      get [_element]() {
        dart.throw(_internal.IterableElementError.noElement());
      }
    }
    (_DoubleLinkedQueueSentinel.new = function(queue) {
      _DoubleLinkedQueueSentinel.__proto__.new.call(this, null, queue);
      this[_previousLink] = this;
      this[_nextLink] = this;
    }).prototype = _DoubleLinkedQueueSentinel.prototype;
    dart.addTypeTests(_DoubleLinkedQueueSentinel);
    _DoubleLinkedQueueSentinel.prototype[_is__DoubleLinkedQueueSentinel_default] = true;
    dart.setMethodSignature(_DoubleLinkedQueueSentinel, () => ({
      __proto__: dart.getMethods(_DoubleLinkedQueueSentinel.__proto__),
      [_asNonSentinelEntry]: dart.fnType(collection.DoubleLinkedQueueEntry$(E), []),
      [_remove]: dart.fnType(E, [])
    }));
    return _DoubleLinkedQueueSentinel;
  });
  collection._DoubleLinkedQueueSentinel = collection._DoubleLinkedQueueSentinel$();
  dart.addTypeTests(collection._DoubleLinkedQueueSentinel, _is__DoubleLinkedQueueSentinel_default);
  const _sentinel = Symbol('_sentinel');
  const _is_DoubleLinkedQueue_default = Symbol('_is_DoubleLinkedQueue_default');
  collection.DoubleLinkedQueue$ = dart.generic(E => {
    let _DoubleLinkedQueueSentinelOfE = () => (_DoubleLinkedQueueSentinelOfE = dart.constFn(collection._DoubleLinkedQueueSentinel$(E)))();
    let DoubleLinkedQueueOfE = () => (DoubleLinkedQueueOfE = dart.constFn(collection.DoubleLinkedQueue$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let _DoubleLinkedQueueEntryOfE = () => (_DoubleLinkedQueueEntryOfE = dart.constFn(collection._DoubleLinkedQueueEntry$(E)))();
    let _DoubleLinkedQueueElementOfE = () => (_DoubleLinkedQueueElementOfE = dart.constFn(collection._DoubleLinkedQueueElement$(E)))();
    let _DoubleLinkedQueueIteratorOfE = () => (_DoubleLinkedQueueIteratorOfE = dart.constFn(collection._DoubleLinkedQueueIterator$(E)))();
    let QueueOfE = () => (QueueOfE = dart.constFn(collection.Queue$(E)))();
    class DoubleLinkedQueue extends core.Iterable$(E) {
      static from(elements) {
        let list = new (DoubleLinkedQueueOfE()).new();
        for (let e of elements) {
          list.addLast(E._check(e));
        }
        return DoubleLinkedQueueOfE()._check(list);
      }
      static of(elements) {
        let _ = new (DoubleLinkedQueueOfE()).new();
        _.addAll(elements);
        return _;
      }
      cast(R) {
        return collection.Queue.castFrom(E, R, this);
      }
      get length() {
        return this[_elementCount];
      }
      addLast(value) {
        E._check(value);
        this[_sentinel][_prepend](value);
        this[_elementCount] = dart.notNull(this[_elementCount]) + 1;
      }
      addFirst(value) {
        E._check(value);
        this[_sentinel][_append](value);
        this[_elementCount] = dart.notNull(this[_elementCount]) + 1;
      }
      add(value) {
        E._check(value);
        this[_sentinel][_prepend](value);
        this[_elementCount] = dart.notNull(this[_elementCount]) + 1;
      }
      addAll(iterable) {
        IterableOfE()._check(iterable);
        for (let value of iterable) {
          this[_sentinel][_prepend](value);
          this[_elementCount] = dart.notNull(this[_elementCount]) + 1;
        }
      }
      removeLast() {
        let lastEntry = _DoubleLinkedQueueEntryOfE()._check(this[_sentinel][_previousLink]);
        let result = lastEntry[_remove]();
        this[_elementCount] = dart.notNull(this[_elementCount]) - 1;
        return result;
      }
      removeFirst() {
        let firstEntry = _DoubleLinkedQueueEntryOfE()._check(this[_sentinel][_nextLink]);
        let result = firstEntry[_remove]();
        this[_elementCount] = dart.notNull(this[_elementCount]) - 1;
        return result;
      }
      remove(o) {
        let entry = _DoubleLinkedQueueEntryOfE()._check(this[_sentinel][_nextLink]);
        while (!(entry == this[_sentinel])) {
          let equals = dart.equals(entry[_element], o);
          if (!(this === entry[_queue])) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
          if (equals) {
            entry[_remove]();
            this[_elementCount] = dart.notNull(this[_elementCount]) - 1;
            return true;
          }
          entry = _DoubleLinkedQueueEntryOfE()._check(entry[_nextLink]);
        }
        return false;
      }
      [_filter](test, removeMatching) {
        let entry = _DoubleLinkedQueueEntryOfE()._check(this[_sentinel][_nextLink]);
        while (!(entry == this[_sentinel])) {
          let matches = test(entry[_element]);
          if (!(this === entry[_queue])) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
          let next = _DoubleLinkedQueueEntryOfE()._check(entry[_nextLink]);
          if (removeMatching == matches) {
            entry[_remove]();
            this[_elementCount] = dart.notNull(this[_elementCount]) - 1;
          }
          entry = next;
        }
      }
      removeWhere(test) {
        this[_filter](test, true);
      }
      retainWhere(test) {
        this[_filter](test, false);
      }
      get first() {
        let firstEntry = _DoubleLinkedQueueEntryOfE()._check(this[_sentinel][_nextLink]);
        return firstEntry[_element];
      }
      get last() {
        let lastEntry = _DoubleLinkedQueueEntryOfE()._check(this[_sentinel][_previousLink]);
        return lastEntry[_element];
      }
      get single() {
        if (this[_sentinel][_nextLink] == this[_sentinel][_previousLink]) {
          let entry = _DoubleLinkedQueueEntryOfE()._check(this[_sentinel][_nextLink]);
          return entry[_element];
        }
        dart.throw(_internal.IterableElementError.tooMany());
      }
      firstEntry() {
        return this[_sentinel].nextEntry();
      }
      lastEntry() {
        return this[_sentinel].previousEntry();
      }
      get isEmpty() {
        return this[_sentinel][_nextLink] == this[_sentinel];
      }
      clear() {
        this[_sentinel][_nextLink] = this[_sentinel];
        this[_sentinel][_previousLink] = this[_sentinel];
        this[_elementCount] = 0;
      }
      forEachEntry(action) {
        let entry = _DoubleLinkedQueueEntryOfE()._check(this[_sentinel][_nextLink]);
        while (!(entry == this[_sentinel])) {
          let element = _DoubleLinkedQueueElementOfE()._check(entry);
          let next = _DoubleLinkedQueueEntryOfE()._check(element[_nextLink]);
          action(element);
          if (this === entry[_queue]) {
            next = _DoubleLinkedQueueEntryOfE()._check(entry[_nextLink]);
          } else if (!(this === next[_queue])) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
          entry = next;
        }
      }
      get iterator() {
        return new (_DoubleLinkedQueueIteratorOfE()).new(this[_sentinel]);
      }
      toString() {
        return collection.IterableBase.iterableToFullString(this, "{", "}");
      }
    }
    (DoubleLinkedQueue.new = function() {
      this[_sentinel] = null;
      this[_elementCount] = 0;
      DoubleLinkedQueue.__proto__.new.call(this);
      this[_sentinel] = new (_DoubleLinkedQueueSentinelOfE()).new(this);
    }).prototype = DoubleLinkedQueue.prototype;
    dart.addTypeTests(DoubleLinkedQueue);
    DoubleLinkedQueue.prototype[_is_DoubleLinkedQueue_default] = true;
    DoubleLinkedQueue[dart.implements] = () => [QueueOfE()];
    dart.setMethodSignature(DoubleLinkedQueue, () => ({
      __proto__: dart.getMethods(DoubleLinkedQueue.__proto__),
      cast: dart.gFnType(R => [collection.Queue$(R), []]),
      [$cast]: dart.gFnType(R => [collection.Queue$(R), []]),
      addLast: dart.fnType(dart.void, [core.Object]),
      addFirst: dart.fnType(dart.void, [core.Object]),
      add: dart.fnType(dart.void, [core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      removeLast: dart.fnType(E, []),
      removeFirst: dart.fnType(E, []),
      remove: dart.fnType(core.bool, [core.Object]),
      [_filter]: dart.fnType(dart.void, [dart.fnType(core.bool, [E]), core.bool]),
      removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      firstEntry: dart.fnType(collection.DoubleLinkedQueueEntry$(E), []),
      lastEntry: dart.fnType(collection.DoubleLinkedQueueEntry$(E), []),
      clear: dart.fnType(dart.void, []),
      forEachEntry: dart.fnType(dart.void, [dart.fnType(dart.void, [collection.DoubleLinkedQueueEntry$(E)])])
    }));
    dart.setGetterSignature(DoubleLinkedQueue, () => ({
      __proto__: dart.getGetters(DoubleLinkedQueue.__proto__),
      iterator: collection._DoubleLinkedQueueIterator$(E),
      [$iterator]: collection._DoubleLinkedQueueIterator$(E)
    }));
    dart.setFieldSignature(DoubleLinkedQueue, () => ({
      __proto__: dart.getFields(DoubleLinkedQueue.__proto__),
      [_sentinel]: dart.fieldType(_DoubleLinkedQueueSentinelOfE()),
      [_elementCount]: dart.fieldType(core.int)
    }));
    dart.defineExtensionMethods(DoubleLinkedQueue, ['cast', 'toString']);
    dart.defineExtensionAccessors(DoubleLinkedQueue, [
      'length',
      'first',
      'last',
      'single',
      'isEmpty',
      'iterator'
    ]);
    return DoubleLinkedQueue;
  });
  collection.DoubleLinkedQueue = collection.DoubleLinkedQueue$();
  dart.addTypeTests(collection.DoubleLinkedQueue, _is_DoubleLinkedQueue_default);
  const _nextEntry = Symbol('_nextEntry');
  const _is__DoubleLinkedQueueIterator_default = Symbol('_is__DoubleLinkedQueueIterator_default');
  collection._DoubleLinkedQueueIterator$ = dart.generic(E => {
    let _DoubleLinkedQueueEntryOfE = () => (_DoubleLinkedQueueEntryOfE = dart.constFn(collection._DoubleLinkedQueueEntry$(E)))();
    let _DoubleLinkedQueueElementOfE = () => (_DoubleLinkedQueueElementOfE = dart.constFn(collection._DoubleLinkedQueueElement$(E)))();
    let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
    let _DoubleLinkedQueueSentinelOfE = () => (_DoubleLinkedQueueSentinelOfE = dart.constFn(collection._DoubleLinkedQueueSentinel$(E)))();
    class _DoubleLinkedQueueIterator extends core.Object {
      moveNext() {
        if (this[_nextEntry] == this[_sentinel]) {
          this[_current$1] = null;
          this[_nextEntry] = null;
          this[_sentinel] = null;
          return false;
        }
        let elementEntry = _DoubleLinkedQueueElementOfE()._check(this[_nextEntry]);
        if (!(this[_sentinel][_queue] == elementEntry[_queue])) {
          dart.throw(new core.ConcurrentModificationError.new(this[_sentinel][_queue]));
        }
        this[_current$1] = elementEntry[_element];
        this[_nextEntry] = _DoubleLinkedQueueEntryOfE()._check(elementEntry[_nextLink]);
        return true;
      }
      get current() {
        return this[_current$1];
      }
    }
    (_DoubleLinkedQueueIterator.new = function(sentinel) {
      this[_current$1] = null;
      this[_sentinel] = sentinel;
      this[_nextEntry] = _DoubleLinkedQueueEntryOfE()._check(sentinel[_nextLink]);
    }).prototype = _DoubleLinkedQueueIterator.prototype;
    dart.addTypeTests(_DoubleLinkedQueueIterator);
    _DoubleLinkedQueueIterator.prototype[_is__DoubleLinkedQueueIterator_default] = true;
    _DoubleLinkedQueueIterator[dart.implements] = () => [IteratorOfE()];
    dart.setMethodSignature(_DoubleLinkedQueueIterator, () => ({
      __proto__: dart.getMethods(_DoubleLinkedQueueIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(_DoubleLinkedQueueIterator, () => ({
      __proto__: dart.getGetters(_DoubleLinkedQueueIterator.__proto__),
      current: E
    }));
    dart.setFieldSignature(_DoubleLinkedQueueIterator, () => ({
      __proto__: dart.getFields(_DoubleLinkedQueueIterator.__proto__),
      [_sentinel]: dart.fieldType(_DoubleLinkedQueueSentinelOfE()),
      [_nextEntry]: dart.fieldType(_DoubleLinkedQueueEntryOfE()),
      [_current$1]: dart.fieldType(E)
    }));
    return _DoubleLinkedQueueIterator;
  });
  collection._DoubleLinkedQueueIterator = collection._DoubleLinkedQueueIterator$();
  dart.addTypeTests(collection._DoubleLinkedQueueIterator, _is__DoubleLinkedQueueIterator_default);
  const _head = Symbol('_head');
  const _tail = Symbol('_tail');
  const _table = Symbol('_table');
  const _checkModification = Symbol('_checkModification');
  const _writeToList = Symbol('_writeToList');
  const _add$ = Symbol('_add');
  const _preGrow = Symbol('_preGrow');
  const _filterWhere = Symbol('_filterWhere');
  const _grow = Symbol('_grow');
  const _is_ListQueue_default = Symbol('_is_ListQueue_default');
  collection.ListQueue$ = dart.generic(E => {
    let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
    let ListQueueOfE = () => (ListQueueOfE = dart.constFn(collection.ListQueue$(E)))();
    let _ListQueueIteratorOfE = () => (_ListQueueIteratorOfE = dart.constFn(collection._ListQueueIterator$(E)))();
    let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let QueueOfE = () => (QueueOfE = dart.constFn(collection.Queue$(E)))();
    class ListQueue extends _internal.ListIterable$(E) {
      static from(elements) {
        if (core.List.is(elements)) {
          let length = elements[$length];
          let queue = new (ListQueueOfE()).new(dart.notNull(length) + 1);
          if (!(dart.notNull(queue[_table][$length]) > dart.notNull(length))) dart.assertFailed();
          for (let i = 0; i < dart.notNull(length); i++) {
            queue[_table][$_set](i, E._check(elements[$_get](i)));
          }
          queue[_tail] = length;
          return queue;
        } else {
          let capacity = 8;
          if (_internal.EfficientLengthIterable.is(elements)) {
            capacity = elements[$length];
          }
          let result = new (ListQueueOfE()).new(capacity);
          for (let element of elements) {
            result.addLast(E._check(element));
          }
          return result;
        }
      }
      static of(elements) {
        let _ = new (ListQueueOfE()).new();
        _.addAll(elements);
        return _;
      }
      cast(R) {
        return collection.Queue.castFrom(E, R, this);
      }
      get iterator() {
        return new (_ListQueueIteratorOfE()).new(this);
      }
      forEach(f) {
        let modificationCount = this[_modificationCount];
        for (let i = this[_head]; i != this[_tail]; i = (dart.notNull(i) + 1 & dart.notNull(this[_table][$length]) - 1) >>> 0) {
          f(this[_table][$_get](i));
          this[_checkModification](modificationCount);
        }
      }
      get isEmpty() {
        return this[_head] == this[_tail];
      }
      get length() {
        return (dart.notNull(this[_tail]) - dart.notNull(this[_head]) & dart.notNull(this[_table][$length]) - 1) >>> 0;
      }
      get first() {
        if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
        return this[_table][$_get](this[_head]);
      }
      get last() {
        if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
        return this[_table][$_get]((dart.notNull(this[_tail]) - 1 & dart.notNull(this[_table][$length]) - 1) >>> 0);
      }
      get single() {
        if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
        if (dart.notNull(this.length) > 1) dart.throw(_internal.IterableElementError.tooMany());
        return this[_table][$_get](this[_head]);
      }
      elementAt(index) {
        core.RangeError.checkValidIndex(index, this);
        return this[_table][$_get]((dart.notNull(this[_head]) + dart.notNull(index) & dart.notNull(this[_table][$length]) - 1) >>> 0);
      }
      toList(opts) {
        let growable = opts && 'growable' in opts ? opts.growable : true;
        let list = null;
        if (dart.test(growable)) {
          list = JSArrayOfE().of([]);
          list[$length] = this.length;
        } else {
          list = ListOfE().new(this.length);
        }
        this[_writeToList](list);
        return list;
      }
      add(value) {
        E._check(value);
        this[_add$](value);
      }
      addAll(elements) {
        IterableOfE()._check(elements);
        if (ListOfE().is(elements)) {
          let list = elements;
          let addCount = list[$length];
          let length = this.length;
          if (dart.notNull(length) + dart.notNull(addCount) >= dart.notNull(this[_table][$length])) {
            this[_preGrow](dart.notNull(length) + dart.notNull(addCount));
            this[_table][$setRange](length, dart.notNull(length) + dart.notNull(addCount), list, 0);
            this[_tail] = dart.notNull(this[_tail]) + dart.notNull(addCount);
          } else {
            let endSpace = dart.notNull(this[_table][$length]) - dart.notNull(this[_tail]);
            if (dart.notNull(addCount) < endSpace) {
              this[_table][$setRange](this[_tail], dart.notNull(this[_tail]) + dart.notNull(addCount), list, 0);
              this[_tail] = dart.notNull(this[_tail]) + dart.notNull(addCount);
            } else {
              let preSpace = dart.notNull(addCount) - endSpace;
              this[_table][$setRange](this[_tail], dart.notNull(this[_tail]) + endSpace, list, 0);
              this[_table][$setRange](0, preSpace, list, endSpace);
              this[_tail] = preSpace;
            }
          }
          this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
        } else {
          for (let element of elements)
            this[_add$](element);
        }
      }
      remove(value) {
        for (let i = this[_head]; i != this[_tail]; i = (dart.notNull(i) + 1 & dart.notNull(this[_table][$length]) - 1) >>> 0) {
          let element = this[_table][$_get](i);
          if (dart.equals(element, value)) {
            this[_remove](i);
            this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
            return true;
          }
        }
        return false;
      }
      [_filterWhere](test, removeMatching) {
        let modificationCount = this[_modificationCount];
        let i = this[_head];
        while (i != this[_tail]) {
          let element = this[_table][$_get](i);
          let remove = removeMatching == test(element);
          this[_checkModification](modificationCount);
          if (remove) {
            i = this[_remove](i);
            modificationCount = this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
          } else {
            i = (dart.notNull(i) + 1 & dart.notNull(this[_table][$length]) - 1) >>> 0;
          }
        }
      }
      removeWhere(test) {
        this[_filterWhere](test, true);
      }
      retainWhere(test) {
        this[_filterWhere](test, false);
      }
      clear() {
        if (this[_head] != this[_tail]) {
          for (let i = this[_head]; i != this[_tail]; i = (dart.notNull(i) + 1 & dart.notNull(this[_table][$length]) - 1) >>> 0) {
            this[_table][$_set](i, null);
          }
          this[_head] = this[_tail] = 0;
          this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
        }
      }
      toString() {
        return collection.IterableBase.iterableToFullString(this, "{", "}");
      }
      addLast(value) {
        E._check(value);
        this[_add$](value);
      }
      addFirst(value) {
        E._check(value);
        this[_head] = (dart.notNull(this[_head]) - 1 & dart.notNull(this[_table][$length]) - 1) >>> 0;
        this[_table][$_set](this[_head], value);
        if (this[_head] == this[_tail]) this[_grow]();
        this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      }
      removeFirst() {
        if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
        this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
        let result = this[_table][$_get](this[_head]);
        this[_table][$_set](this[_head], null);
        this[_head] = (dart.notNull(this[_head]) + 1 & dart.notNull(this[_table][$length]) - 1) >>> 0;
        return result;
      }
      removeLast() {
        if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
        this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
        this[_tail] = (dart.notNull(this[_tail]) - 1 & dart.notNull(this[_table][$length]) - 1) >>> 0;
        let result = this[_table][$_get](this[_tail]);
        this[_table][$_set](this[_tail], null);
        return result;
      }
      static _isPowerOf2(number) {
        return (dart.notNull(number) & dart.notNull(number) - 1) === 0;
      }
      static _nextPowerOf2(number) {
        if (!(dart.notNull(number) > 0)) dart.assertFailed();
        number = (dart.notNull(number) << 1 >>> 0) - 1;
        for (;;) {
          let nextNumber = (dart.notNull(number) & dart.notNull(number) - 1) >>> 0;
          if (nextNumber === 0) return number;
          number = nextNumber;
        }
      }
      [_checkModification](expectedModificationCount) {
        if (expectedModificationCount != this[_modificationCount]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      [_add$](element) {
        E._check(element);
        this[_table][$_set](this[_tail], element);
        this[_tail] = (dart.notNull(this[_tail]) + 1 & dart.notNull(this[_table][$length]) - 1) >>> 0;
        if (this[_head] == this[_tail]) this[_grow]();
        this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      }
      [_remove](offset) {
        let mask = dart.notNull(this[_table][$length]) - 1;
        let startDistance = (dart.notNull(offset) - dart.notNull(this[_head]) & mask) >>> 0;
        let endDistance = (dart.notNull(this[_tail]) - dart.notNull(offset) & mask) >>> 0;
        if (startDistance < endDistance) {
          let i = offset;
          while (i != this[_head]) {
            let prevOffset = (dart.notNull(i) - 1 & mask) >>> 0;
            this[_table][$_set](i, this[_table][$_get](prevOffset));
            i = prevOffset;
          }
          this[_table][$_set](this[_head], null);
          this[_head] = (dart.notNull(this[_head]) + 1 & mask) >>> 0;
          return (dart.notNull(offset) + 1 & mask) >>> 0;
        } else {
          this[_tail] = (dart.notNull(this[_tail]) - 1 & mask) >>> 0;
          let i = offset;
          while (i != this[_tail]) {
            let nextOffset = (dart.notNull(i) + 1 & mask) >>> 0;
            this[_table][$_set](i, this[_table][$_get](nextOffset));
            i = nextOffset;
          }
          this[_table][$_set](this[_tail], null);
          return offset;
        }
      }
      [_grow]() {
        let newTable = ListOfE().new(dart.notNull(this[_table][$length]) * 2);
        let split = dart.notNull(this[_table][$length]) - dart.notNull(this[_head]);
        newTable[$setRange](0, split, this[_table], this[_head]);
        newTable[$setRange](split, split + dart.notNull(this[_head]), this[_table], 0);
        this[_head] = 0;
        this[_tail] = this[_table][$length];
        this[_table] = newTable;
      }
      [_writeToList](target) {
        ListOfE()._check(target);
        if (!(dart.notNull(target[$length]) >= dart.notNull(this.length))) dart.assertFailed();
        if (dart.notNull(this[_head]) <= dart.notNull(this[_tail])) {
          let length = dart.notNull(this[_tail]) - dart.notNull(this[_head]);
          target[$setRange](0, length, this[_table], this[_head]);
          return length;
        } else {
          let firstPartSize = dart.notNull(this[_table][$length]) - dart.notNull(this[_head]);
          target[$setRange](0, firstPartSize, this[_table], this[_head]);
          target[$setRange](firstPartSize, firstPartSize + dart.notNull(this[_tail]), this[_table], 0);
          return dart.notNull(this[_tail]) + firstPartSize;
        }
      }
      [_preGrow](newElementCount) {
        if (!(dart.notNull(newElementCount) >= dart.notNull(this.length))) dart.assertFailed();
        newElementCount = dart.notNull(newElementCount) + newElementCount[$rightShift](1);
        let newCapacity = collection.ListQueue._nextPowerOf2(newElementCount);
        let newTable = ListOfE().new(newCapacity);
        this[_tail] = this[_writeToList](newTable);
        this[_table] = newTable;
        this[_head] = 0;
      }
    }
    (ListQueue.new = function(initialCapacity) {
      if (initialCapacity === void 0) initialCapacity = null;
      this[_table] = null;
      this[_modificationCount] = 0;
      this[_head] = 0;
      this[_tail] = 0;
      ListQueue.__proto__.new.call(this);
      if (initialCapacity == null || dart.notNull(initialCapacity) < 8) {
        initialCapacity = 8;
      } else if (!dart.test(collection.ListQueue._isPowerOf2(initialCapacity))) {
        initialCapacity = collection.ListQueue._nextPowerOf2(initialCapacity);
      }
      if (!dart.test(collection.ListQueue._isPowerOf2(initialCapacity))) dart.assertFailed();
      this[_table] = ListOfE().new(initialCapacity);
    }).prototype = ListQueue.prototype;
    dart.addTypeTests(ListQueue);
    ListQueue.prototype[_is_ListQueue_default] = true;
    ListQueue[dart.implements] = () => [QueueOfE()];
    dart.setMethodSignature(ListQueue, () => ({
      __proto__: dart.getMethods(ListQueue.__proto__),
      cast: dart.gFnType(R => [collection.Queue$(R), []]),
      [$cast]: dart.gFnType(R => [collection.Queue$(R), []]),
      elementAt: dart.fnType(E, [core.int]),
      [$elementAt]: dart.fnType(E, [core.int]),
      add: dart.fnType(dart.void, [core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      remove: dart.fnType(core.bool, [core.Object]),
      [_filterWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E]), core.bool]),
      removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      clear: dart.fnType(dart.void, []),
      addLast: dart.fnType(dart.void, [core.Object]),
      addFirst: dart.fnType(dart.void, [core.Object]),
      removeFirst: dart.fnType(E, []),
      removeLast: dart.fnType(E, []),
      [_checkModification]: dart.fnType(dart.void, [core.int]),
      [_add$]: dart.fnType(dart.void, [core.Object]),
      [_remove]: dart.fnType(core.int, [core.int]),
      [_grow]: dart.fnType(dart.void, []),
      [_writeToList]: dart.fnType(core.int, [core.Object]),
      [_preGrow]: dart.fnType(dart.void, [core.int])
    }));
    dart.setGetterSignature(ListQueue, () => ({
      __proto__: dart.getGetters(ListQueue.__proto__),
      length: core.int,
      [$length]: core.int
    }));
    dart.setFieldSignature(ListQueue, () => ({
      __proto__: dart.getFields(ListQueue.__proto__),
      [_table]: dart.fieldType(ListOfE()),
      [_head]: dart.fieldType(core.int),
      [_tail]: dart.fieldType(core.int),
      [_modificationCount]: dart.fieldType(core.int)
    }));
    dart.defineExtensionMethods(ListQueue, [
      'cast',
      'forEach',
      'elementAt',
      'toList',
      'toString'
    ]);
    dart.defineExtensionAccessors(ListQueue, [
      'iterator',
      'isEmpty',
      'length',
      'first',
      'last',
      'single'
    ]);
    return ListQueue;
  });
  collection.ListQueue = collection.ListQueue$();
  dart.defineLazy(collection.ListQueue, {
    /*collection.ListQueue._INITIAL_CAPACITY*/get _INITIAL_CAPACITY() {
      return 8;
    }
  });
  dart.addTypeTests(collection.ListQueue, _is_ListQueue_default);
  const _end = Symbol('_end');
  const _position = Symbol('_position');
  const _is__ListQueueIterator_default = Symbol('_is__ListQueueIterator_default');
  collection._ListQueueIterator$ = dart.generic(E => {
    let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
    let ListQueueOfE = () => (ListQueueOfE = dart.constFn(collection.ListQueue$(E)))();
    class _ListQueueIterator extends core.Object {
      get current() {
        return this[_current$1];
      }
      moveNext() {
        this[_queue][_checkModification](this[_modificationCount]);
        if (this[_position] == this[_end]) {
          this[_current$1] = null;
          return false;
        }
        this[_current$1] = this[_queue][_table][$_get](this[_position]);
        this[_position] = (dart.notNull(this[_position]) + 1 & dart.notNull(this[_queue][_table][$length]) - 1) >>> 0;
        return true;
      }
    }
    (_ListQueueIterator.new = function(queue) {
      this[_current$1] = null;
      this[_queue] = queue;
      this[_end] = queue[_tail];
      this[_modificationCount] = queue[_modificationCount];
      this[_position] = queue[_head];
    }).prototype = _ListQueueIterator.prototype;
    dart.addTypeTests(_ListQueueIterator);
    _ListQueueIterator.prototype[_is__ListQueueIterator_default] = true;
    _ListQueueIterator[dart.implements] = () => [IteratorOfE()];
    dart.setMethodSignature(_ListQueueIterator, () => ({
      __proto__: dart.getMethods(_ListQueueIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(_ListQueueIterator, () => ({
      __proto__: dart.getGetters(_ListQueueIterator.__proto__),
      current: E
    }));
    dart.setFieldSignature(_ListQueueIterator, () => ({
      __proto__: dart.getFields(_ListQueueIterator.__proto__),
      [_queue]: dart.finalFieldType(ListQueueOfE()),
      [_end]: dart.finalFieldType(core.int),
      [_modificationCount]: dart.finalFieldType(core.int),
      [_position]: dart.fieldType(core.int),
      [_current$1]: dart.fieldType(E)
    }));
    return _ListQueueIterator;
  });
  collection._ListQueueIterator = collection._ListQueueIterator$();
  dart.addTypeTests(collection._ListQueueIterator, _is__ListQueueIterator_default);
  const _is_SetMixin_default = Symbol('_is_SetMixin_default');
  collection.SetMixin$ = dart.generic(E => {
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let FollowedByIterableOfE = () => (FollowedByIterableOfE = dart.constFn(_internal.FollowedByIterable$(E)))();
    let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
    let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
    let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
    let WhereIterableOfE = () => (WhereIterableOfE = dart.constFn(_internal.WhereIterable$(E)))();
    let EAndEToE = () => (EAndEToE = dart.constFn(dart.fnType(E, [E, E])))();
    let TakeIterableOfE = () => (TakeIterableOfE = dart.constFn(_internal.TakeIterable$(E)))();
    let TakeWhileIterableOfE = () => (TakeWhileIterableOfE = dart.constFn(_internal.TakeWhileIterable$(E)))();
    let SkipIterableOfE = () => (SkipIterableOfE = dart.constFn(_internal.SkipIterable$(E)))();
    let SkipWhileIterableOfE = () => (SkipWhileIterableOfE = dart.constFn(_internal.SkipWhileIterable$(E)))();
    let VoidToE = () => (VoidToE = dart.constFn(dart.fnType(E, [])))();
    class SetMixin extends core.Object {
      [Symbol.iterator]() {
        return new dart.JsIterator(this.iterator);
      }
      get isEmpty() {
        return this.length === 0;
      }
      get isNotEmpty() {
        return this.length !== 0;
      }
      cast(R) {
        return core.Set.castFrom(E, R, this);
      }
      followedBy(other) {
        IterableOfE()._check(other);
        return FollowedByIterableOfE().firstEfficient(this, other);
      }
      whereType(T) {
        return new (_internal.WhereTypeIterable$(T)).new(this);
      }
      clear() {
        this.removeAll(this.toList());
      }
      addAll(elements) {
        IterableOfE()._check(elements);
        for (let element of elements)
          this.add(element);
      }
      removeAll(elements) {
        for (let element of elements)
          this.remove(element);
      }
      retainAll(elements) {
        let toRemove = this.toSet();
        for (let o of elements) {
          toRemove.remove(o);
        }
        this.removeAll(toRemove);
      }
      removeWhere(test) {
        let toRemove = [];
        for (let element of this) {
          if (dart.test(test(element))) toRemove[$add](element);
        }
        this.removeAll(toRemove);
      }
      retainWhere(test) {
        let toRemove = [];
        for (let element of this) {
          if (!dart.test(test(element))) toRemove[$add](element);
        }
        this.removeAll(toRemove);
      }
      containsAll(other) {
        for (let o of other) {
          if (!dart.test(this.contains(o))) return false;
        }
        return true;
      }
      union(other) {
        SetOfE()._check(other);
        let _ = this.toSet();
        _.addAll(other);
        return _;
      }
      intersection(other) {
        let result = this.toSet();
        for (let element of this) {
          if (!dart.test(other.contains(element))) result.remove(element);
        }
        return result;
      }
      difference(other) {
        let result = this.toSet();
        for (let element of this) {
          if (dart.test(other.contains(element))) result.remove(element);
        }
        return result;
      }
      toList(opts) {
        let growable = opts && 'growable' in opts ? opts.growable : true;
        let result = dart.test(growable) ? (() => {
          let _ = JSArrayOfE().of([]);
          _[$length] = this.length;
          return _;
        })() : ListOfE().new(this.length);
        let i = 0;
        for (let element of this)
          result[$_set](i++, element);
        return result;
      }
      map(T, f) {
        return new (_internal.EfficientLengthMappedIterable$(E, T)).new(this, f);
      }
      get single() {
        if (dart.notNull(this.length) > 1) dart.throw(_internal.IterableElementError.tooMany());
        let it = this.iterator;
        if (!dart.test(it.moveNext())) dart.throw(_internal.IterableElementError.noElement());
        let result = it.current;
        return result;
      }
      toString() {
        return collection.IterableBase.iterableToFullString(this, "{", "}");
      }
      where(f) {
        return new (WhereIterableOfE()).new(this, f);
      }
      expand(T, f) {
        return new (_internal.ExpandIterable$(E, T)).new(this, f);
      }
      forEach(f) {
        for (let element of this)
          f(element);
      }
      reduce(combine) {
        EAndEToE()._check(combine);
        let iterator = this.iterator;
        if (!dart.test(iterator.moveNext())) {
          dart.throw(_internal.IterableElementError.noElement());
        }
        let value = iterator.current;
        while (dart.test(iterator.moveNext())) {
          value = combine(value, iterator.current);
        }
        return value;
      }
      fold(T, initialValue, combine) {
        let value = initialValue;
        for (let element of this)
          value = combine(value, element);
        return value;
      }
      every(f) {
        for (let element of this) {
          if (!dart.test(f(element))) return false;
        }
        return true;
      }
      join(separator) {
        if (separator === void 0) separator = "";
        let iterator = this.iterator;
        if (!dart.test(iterator.moveNext())) return "";
        let buffer = new core.StringBuffer.new();
        if (separator == null || separator === "") {
          do {
            buffer.write(iterator.current);
          } while (dart.test(iterator.moveNext()));
        } else {
          buffer.write(iterator.current);
          while (dart.test(iterator.moveNext())) {
            buffer.write(separator);
            buffer.write(iterator.current);
          }
        }
        return buffer.toString();
      }
      any(test) {
        for (let element of this) {
          if (dart.test(test(element))) return true;
        }
        return false;
      }
      take(n) {
        return TakeIterableOfE().new(this, n);
      }
      takeWhile(test) {
        return new (TakeWhileIterableOfE()).new(this, test);
      }
      skip(n) {
        return SkipIterableOfE().new(this, n);
      }
      skipWhile(test) {
        return new (SkipWhileIterableOfE()).new(this, test);
      }
      get first() {
        let it = this.iterator;
        if (!dart.test(it.moveNext())) {
          dart.throw(_internal.IterableElementError.noElement());
        }
        return it.current;
      }
      get last() {
        let it = this.iterator;
        if (!dart.test(it.moveNext())) {
          dart.throw(_internal.IterableElementError.noElement());
        }
        let result = null;
        do {
          result = it.current;
        } while (dart.test(it.moveNext()));
        return result;
      }
      firstWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        for (let element of this) {
          if (dart.test(test(element))) return element;
        }
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      lastWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        let result = null;
        let foundMatching = false;
        for (let element of this) {
          if (dart.test(test(element))) {
            result = element;
            foundMatching = true;
          }
        }
        if (foundMatching) return result;
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      singleWhere(test, opts) {
        let orElse = opts && 'orElse' in opts ? opts.orElse : null;
        VoidToE()._check(orElse);
        let result = null;
        let foundMatching = false;
        for (let element of this) {
          if (dart.test(test(element))) {
            if (foundMatching) {
              dart.throw(_internal.IterableElementError.tooMany());
            }
            result = element;
            foundMatching = true;
          }
        }
        if (foundMatching) return result;
        if (orElse != null) return orElse();
        dart.throw(_internal.IterableElementError.noElement());
      }
      elementAt(index) {
        core.ArgumentError.checkNotNull(index, "index");
        core.RangeError.checkNotNegative(index, "index");
        let elementIndex = 0;
        for (let element of this) {
          if (index === elementIndex) return element;
          elementIndex++;
        }
        dart.throw(core.RangeError.index(index, this, "index", null, elementIndex));
      }
    }
    (SetMixin.new = function() {
    }).prototype = SetMixin.prototype;
    dart.addTypeTests(SetMixin);
    SetMixin.prototype[_is_SetMixin_default] = true;
    SetMixin[dart.implements] = () => [SetOfE()];
    dart.setMethodSignature(SetMixin, () => ({
      __proto__: dart.getMethods(SetMixin.__proto__),
      cast: dart.gFnType(R => [core.Set$(R), []]),
      [$cast]: dart.gFnType(R => [core.Set$(R), []]),
      followedBy: dart.fnType(core.Iterable$(E), [core.Object]),
      [$followedBy]: dart.fnType(core.Iterable$(E), [core.Object]),
      whereType: dart.gFnType(T => [core.Iterable$(T), []]),
      [$whereType]: dart.gFnType(T => [core.Iterable$(T), []]),
      clear: dart.fnType(dart.void, []),
      addAll: dart.fnType(dart.void, [core.Object]),
      removeAll: dart.fnType(dart.void, [core.Iterable$(core.Object)]),
      retainAll: dart.fnType(dart.void, [core.Iterable$(core.Object)]),
      removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      containsAll: dart.fnType(core.bool, [core.Iterable$(core.Object)]),
      union: dart.fnType(core.Set$(E), [core.Object]),
      intersection: dart.fnType(core.Set$(E), [core.Set$(core.Object)]),
      difference: dart.fnType(core.Set$(E), [core.Set$(core.Object)]),
      toList: dart.fnType(core.List$(E), [], {growable: core.bool}),
      [$toList]: dart.fnType(core.List$(E), [], {growable: core.bool}),
      map: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
      [$map]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
      toString: dart.fnType(core.String, []),
      [$toString]: dart.fnType(core.String, []),
      where: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$where]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      expand: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
      [$expand]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
      forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
      [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
      reduce: dart.fnType(E, [core.Object]),
      [$reduce]: dart.fnType(E, [core.Object]),
      fold: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
      [$fold]: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
      every: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      [$every]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      join: dart.fnType(core.String, [], [core.String]),
      [$join]: dart.fnType(core.String, [], [core.String]),
      any: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      [$any]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
      take: dart.fnType(core.Iterable$(E), [core.int]),
      [$take]: dart.fnType(core.Iterable$(E), [core.int]),
      takeWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$takeWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      skip: dart.fnType(core.Iterable$(E), [core.int]),
      [$skip]: dart.fnType(core.Iterable$(E), [core.int]),
      skipWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      [$skipWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
      firstWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$firstWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      lastWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$lastWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      singleWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      [$singleWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
      elementAt: dart.fnType(E, [core.int]),
      [$elementAt]: dart.fnType(E, [core.int])
    }));
    dart.setGetterSignature(SetMixin, () => ({
      __proto__: dart.getGetters(SetMixin.__proto__),
      isEmpty: core.bool,
      [$isEmpty]: core.bool,
      isNotEmpty: core.bool,
      [$isNotEmpty]: core.bool,
      single: E,
      [$single]: E,
      first: E,
      [$first]: E,
      last: E,
      [$last]: E
    }));
    dart.defineExtensionMethods(SetMixin, [
      'cast',
      'followedBy',
      'whereType',
      'toList',
      'map',
      'toString',
      'where',
      'expand',
      'forEach',
      'reduce',
      'fold',
      'every',
      'join',
      'any',
      'take',
      'takeWhile',
      'skip',
      'skipWhile',
      'firstWhere',
      'lastWhere',
      'singleWhere',
      'elementAt'
    ]);
    dart.defineExtensionAccessors(SetMixin, [
      'isEmpty',
      'isNotEmpty',
      'single',
      'first',
      'last'
    ]);
    return SetMixin;
  });
  collection.SetMixin = collection.SetMixin$();
  dart.addTypeTests(collection.SetMixin, _is_SetMixin_default);
  const _is_SetBase_default = Symbol('_is_SetBase_default');
  collection.SetBase$ = dart.generic(E => {
    const Object_SetMixin$ = class Object_SetMixin extends core.Object {};
    (Object_SetMixin$.new = function() {
    }).prototype = Object_SetMixin$.prototype;
    dart.applyMixin(Object_SetMixin$, collection.SetMixin$(E));
    class SetBase extends Object_SetMixin$ {
      static setToString(set) {
        return collection.IterableBase.iterableToFullString(set, "{", "}");
      }
    }
    (SetBase.new = function() {
    }).prototype = SetBase.prototype;
    dart.addTypeTests(SetBase);
    SetBase.prototype[_is_SetBase_default] = true;
    return SetBase;
  });
  collection.SetBase = collection.SetBase$();
  dart.addTypeTests(collection.SetBase, _is_SetBase_default);
  const _is__UnmodifiableSet_default = Symbol('_is__UnmodifiableSet_default');
  collection._UnmodifiableSet$ = dart.generic(E => {
    let _HashSetOfE = () => (_HashSetOfE = dart.constFn(collection._HashSet$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let MapOfE$Null = () => (MapOfE$Null = dart.constFn(core.Map$(E, core.Null)))();
    class _UnmodifiableSet extends collection._SetBase$(E) {
      [_newSet]() {
        return new (_HashSetOfE()).new();
      }
      [_newSimilarSet](R) {
        return new (collection._HashSet$(R)).new();
      }
      contains(element) {
        return this[_map$0][$containsKey](element);
      }
      get iterator() {
        return this[_map$0][$keys][$iterator];
      }
      [Symbol.iterator]() {
        return new dart.JsIterator(this.iterator);
      }
      get length() {
        return this[_map$0][$length];
      }
      lookup(element) {
        for (let key of this[_map$0][$keys]) {
          if (dart.equals(key, element)) return key;
        }
        return null;
      }
      add(value) {
        E._check(value);
        dart.throw(new core.UnsupportedError.new("Cannot change unmodifiable set"));
      }
      clear() {
        dart.throw(new core.UnsupportedError.new("Cannot change unmodifiable set"));
      }
      addAll(elements) {
        IterableOfE()._check(elements);
        dart.throw(new core.UnsupportedError.new("Cannot change unmodifiable set"));
      }
      removeAll(elements) {
        dart.throw(new core.UnsupportedError.new("Cannot change unmodifiable set"));
      }
      retainAll(elements) {
        dart.throw(new core.UnsupportedError.new("Cannot change unmodifiable set"));
      }
      removeWhere(test) {
        dart.throw(new core.UnsupportedError.new("Cannot change unmodifiable set"));
      }
      retainWhere(test) {
        dart.throw(new core.UnsupportedError.new("Cannot change unmodifiable set"));
      }
      remove(value) {
        dart.throw(new core.UnsupportedError.new("Cannot change unmodifiable set"));
      }
    }
    (_UnmodifiableSet.new = function(map) {
      this[_map$0] = map;
      _UnmodifiableSet.__proto__.new.call(this);
    }).prototype = _UnmodifiableSet.prototype;
    dart.addTypeTests(_UnmodifiableSet);
    _UnmodifiableSet.prototype[_is__UnmodifiableSet_default] = true;
    dart.setMethodSignature(_UnmodifiableSet, () => ({
      __proto__: dart.getMethods(_UnmodifiableSet.__proto__),
      [_newSet]: dart.fnType(core.Set$(E), []),
      [_newSimilarSet]: dart.gFnType(R => [core.Set$(R), []]),
      contains: dart.fnType(core.bool, [core.Object]),
      [$contains]: dart.fnType(core.bool, [core.Object]),
      lookup: dart.fnType(E, [core.Object]),
      add: dart.fnType(core.bool, [core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      remove: dart.fnType(core.bool, [core.Object])
    }));
    dart.setGetterSignature(_UnmodifiableSet, () => ({
      __proto__: dart.getGetters(_UnmodifiableSet.__proto__),
      iterator: core.Iterator$(E),
      [$iterator]: core.Iterator$(E),
      length: core.int,
      [$length]: core.int
    }));
    dart.setFieldSignature(_UnmodifiableSet, () => ({
      __proto__: dart.getFields(_UnmodifiableSet.__proto__),
      [_map$0]: dart.finalFieldType(MapOfE$Null())
    }));
    dart.defineExtensionMethods(_UnmodifiableSet, ['contains']);
    dart.defineExtensionAccessors(_UnmodifiableSet, ['iterator', 'length']);
    return _UnmodifiableSet;
  });
  collection._UnmodifiableSet = collection._UnmodifiableSet$();
  dart.addTypeTests(collection._UnmodifiableSet, _is__UnmodifiableSet_default);
  const _is__SplayTreeNode_default = Symbol('_is__SplayTreeNode_default');
  collection._SplayTreeNode$ = dart.generic(K => {
    let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
    class _SplayTreeNode extends core.Object {}
    (_SplayTreeNode.new = function(key) {
      this.left = null;
      this.right = null;
      this.key = key;
    }).prototype = _SplayTreeNode.prototype;
    dart.addTypeTests(_SplayTreeNode);
    _SplayTreeNode.prototype[_is__SplayTreeNode_default] = true;
    dart.setFieldSignature(_SplayTreeNode, () => ({
      __proto__: dart.getFields(_SplayTreeNode.__proto__),
      key: dart.finalFieldType(K),
      left: dart.fieldType(_SplayTreeNodeOfK()),
      right: dart.fieldType(_SplayTreeNodeOfK())
    }));
    return _SplayTreeNode;
  });
  collection._SplayTreeNode = collection._SplayTreeNode$();
  dart.addTypeTests(collection._SplayTreeNode, _is__SplayTreeNode_default);
  const _is__SplayTreeMapNode_default = Symbol('_is__SplayTreeMapNode_default');
  collection._SplayTreeMapNode$ = dart.generic((K, V) => {
    class _SplayTreeMapNode extends collection._SplayTreeNode$(K) {}
    (_SplayTreeMapNode.new = function(key, value) {
      this.value = value;
      _SplayTreeMapNode.__proto__.new.call(this, key);
    }).prototype = _SplayTreeMapNode.prototype;
    dart.addTypeTests(_SplayTreeMapNode);
    _SplayTreeMapNode.prototype[_is__SplayTreeMapNode_default] = true;
    dart.setFieldSignature(_SplayTreeMapNode, () => ({
      __proto__: dart.getFields(_SplayTreeMapNode.__proto__),
      value: dart.fieldType(V)
    }));
    return _SplayTreeMapNode;
  });
  collection._SplayTreeMapNode = collection._SplayTreeMapNode$();
  dart.addTypeTests(collection._SplayTreeMapNode, _is__SplayTreeMapNode_default);
  const _count$ = Symbol('_count');
  const _splayCount = Symbol('_splayCount');
  const _root$ = Symbol('_root');
  const _dummy = Symbol('_dummy');
  const _compare = Symbol('_compare');
  const _splay = Symbol('_splay');
  const _splayMin = Symbol('_splayMin');
  const _splayMax = Symbol('_splayMax');
  const _addNewRoot = Symbol('_addNewRoot');
  const _last = Symbol('_last');
  const _clear = Symbol('_clear');
  const _is__SplayTree_default = Symbol('_is__SplayTree_default');
  collection._SplayTree$ = dart.generic((K, Node) => {
    class _SplayTree extends core.Object {
      [_splay](key) {
        K._check(key);
        if (this[_root$] == null) return -1;
        let left = this[_dummy];
        let right = this[_dummy];
        let current = this[_root$];
        let comp = null;
        while (true) {
          comp = this[_compare](current.key, key);
          if (dart.notNull(comp) > 0) {
            if (current.left == null) break;
            comp = this[_compare](current.left.key, key);
            if (dart.notNull(comp) > 0) {
              let tmp = current.left;
              current.left = tmp.right;
              tmp.right = current;
              current = Node._check(tmp);
              if (current.left == null) break;
            }
            right.left = current;
            right = current;
            current = Node._check(current.left);
          } else if (dart.notNull(comp) < 0) {
            if (current.right == null) break;
            comp = this[_compare](current.right.key, key);
            if (dart.notNull(comp) < 0) {
              let tmp = Node._check(current.right);
              current.right = tmp.left;
              tmp.left = current;
              current = tmp;
              if (current.right == null) break;
            }
            left.right = current;
            left = current;
            current = Node._check(current.right);
          } else {
            break;
          }
        }
        left.right = current.left;
        right.left = current.right;
        current.left = this[_dummy].right;
        current.right = this[_dummy].left;
        this[_root$] = current;
        this[_dummy].right = null;
        this[_dummy].left = null;
        this[_splayCount] = dart.notNull(this[_splayCount]) + 1;
        return comp;
      }
      [_splayMin](node) {
        Node._check(node);
        let current = node;
        while (current.left != null) {
          let left = Node._check(current.left);
          current.left = left.right;
          left.right = current;
          current = left;
        }
        return current;
      }
      [_splayMax](node) {
        Node._check(node);
        let current = node;
        while (current.right != null) {
          let right = Node._check(current.right);
          current.right = right.left;
          right.left = current;
          current = right;
        }
        return current;
      }
      [_remove](key) {
        K._check(key);
        if (this[_root$] == null) return null;
        let comp = this[_splay](key);
        if (comp !== 0) return null;
        let result = this[_root$];
        this[_count$] = dart.notNull(this[_count$]) - 1;
        if (this[_root$].left == null) {
          this[_root$] = Node._check(this[_root$].right);
        } else {
          let right = Node._check(this[_root$].right);
          this[_root$] = this[_splayMax](Node._check(this[_root$].left));
          this[_root$].right = right;
        }
        this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
        return result;
      }
      [_addNewRoot](node, comp) {
        Node._check(node);
        this[_count$] = dart.notNull(this[_count$]) + 1;
        this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
        if (this[_root$] == null) {
          this[_root$] = node;
          return;
        }
        if (dart.notNull(comp) < 0) {
          node.left = this[_root$];
          node.right = this[_root$].right;
          this[_root$].right = null;
        } else {
          node.right = this[_root$];
          node.left = this[_root$].left;
          this[_root$].left = null;
        }
        this[_root$] = node;
      }
      get [_first$]() {
        if (this[_root$] == null) return null;
        this[_root$] = this[_splayMin](this[_root$]);
        return this[_root$];
      }
      get [_last]() {
        if (this[_root$] == null) return null;
        this[_root$] = this[_splayMax](this[_root$]);
        return this[_root$];
      }
      [_clear]() {
        this[_root$] = null;
        this[_count$] = 0;
        this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      }
    }
    (_SplayTree.new = function() {
      this[_count$] = 0;
      this[_modificationCount] = 0;
      this[_splayCount] = 0;
    }).prototype = _SplayTree.prototype;
    dart.addTypeTests(_SplayTree);
    _SplayTree.prototype[_is__SplayTree_default] = true;
    dart.setMethodSignature(_SplayTree, () => ({
      __proto__: dart.getMethods(_SplayTree.__proto__),
      [_splay]: dart.fnType(core.int, [core.Object]),
      [_splayMin]: dart.fnType(Node, [core.Object]),
      [_splayMax]: dart.fnType(Node, [core.Object]),
      [_remove]: dart.fnType(Node, [core.Object]),
      [_addNewRoot]: dart.fnType(dart.void, [core.Object, core.int]),
      [_clear]: dart.fnType(dart.void, [])
    }));
    dart.setGetterSignature(_SplayTree, () => ({
      __proto__: dart.getGetters(_SplayTree.__proto__),
      [_first$]: Node,
      [_last]: Node
    }));
    dart.setFieldSignature(_SplayTree, () => ({
      __proto__: dart.getFields(_SplayTree.__proto__),
      [_count$]: dart.fieldType(core.int),
      [_modificationCount]: dart.fieldType(core.int),
      [_splayCount]: dart.fieldType(core.int)
    }));
    return _SplayTree;
  });
  collection._SplayTree = collection._SplayTree$();
  dart.addTypeTests(collection._SplayTree, _is__SplayTree_default);
  const _is__TypeTest_default = Symbol('_is__TypeTest_default');
  collection._TypeTest$ = dart.generic(T => {
    class _TypeTest extends core.Object {
      test(v) {
        return T.is(v);
      }
    }
    (_TypeTest.new = function() {
    }).prototype = _TypeTest.prototype;
    dart.addTypeTests(_TypeTest);
    _TypeTest.prototype[_is__TypeTest_default] = true;
    dart.setMethodSignature(_TypeTest, () => ({
      __proto__: dart.getMethods(_TypeTest.__proto__),
      test: dart.fnType(core.bool, [dart.dynamic])
    }));
    return _TypeTest;
  });
  collection._TypeTest = collection._TypeTest$();
  dart.addTypeTests(collection._TypeTest, _is__TypeTest_default);
  collection._dynamicCompare = function(a, b) {
    return core.Comparable.compare(core.Comparable._check(a), core.Comparable._check(b));
  };
  collection._defaultCompare = function(K) {
    let compare = dart.fn(core.Comparable.compare, ComparableAndComparableToint());
    if (dart.fnType(core.int, [K, K]).is(compare)) {
      return compare;
    }
    return dart.fn(collection._dynamicCompare, dynamicAnddynamicToint());
  };
  const _comparator = Symbol('_comparator');
  const _is_SplayTreeMap_default = Symbol('_is_SplayTreeMap_default');
  collection.SplayTreeMap$ = dart.generic((K, V) => {
    let _SplayTreeMapNodeOfK$V = () => (_SplayTreeMapNodeOfK$V = dart.constFn(collection._SplayTreeMapNode$(K, V)))();
    let SplayTreeMapOfK$V = () => (SplayTreeMapOfK$V = dart.constFn(collection.SplayTreeMap$(K, V)))();
    let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
    let KAndVToNull = () => (KAndVToNull = dart.constFn(dart.fnType(core.Null, [K, V])))();
    let _SplayTreeNodeIteratorOfK = () => (_SplayTreeNodeIteratorOfK = dart.constFn(collection._SplayTreeNodeIterator$(K)))();
    let _SplayTreeKeyIterableOfK = () => (_SplayTreeKeyIterableOfK = dart.constFn(collection._SplayTreeKeyIterable$(K)))();
    let _SplayTreeValueIterableOfK$V = () => (_SplayTreeValueIterableOfK$V = dart.constFn(collection._SplayTreeValueIterable$(K, V)))();
    let KAndKToint = () => (KAndKToint = dart.constFn(dart.fnType(core.int, [K, K])))();
    let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
    const _SplayTree_MapMixin$ = class _SplayTree_MapMixin extends collection._SplayTree$(K, collection._SplayTreeMapNode$(K, V)) {};
    (_SplayTree_MapMixin$.new = function() {
      _SplayTree_MapMixin$.__proto__.new.call(this);
    }).prototype = _SplayTree_MapMixin$.prototype;
    dart.applyMixin(_SplayTree_MapMixin$, collection.MapMixin$(K, V));
    class SplayTreeMap extends _SplayTree_MapMixin$ {
      static from(other, compare, isValidKey) {
        if (compare === void 0) compare = null;
        if (isValidKey === void 0) isValidKey = null;
        let result = new (SplayTreeMapOfK$V()).new(compare, isValidKey);
        other[$forEach](dart.fn((k, v) => {
          result._set(K._check(k), V._check(v));
        }, dynamicAnddynamicToNull()));
        return result;
      }
      static of(other, compare, isValidKey) {
        if (compare === void 0) compare = null;
        if (isValidKey === void 0) isValidKey = null;
        let _ = new (SplayTreeMapOfK$V()).new(compare, isValidKey);
        _.addAll(other);
        return _;
      }
      static fromIterable(iterable, opts) {
        let key = opts && 'key' in opts ? opts.key : null;
        let value = opts && 'value' in opts ? opts.value : null;
        let compare = opts && 'compare' in opts ? opts.compare : null;
        let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
        let map = new (SplayTreeMapOfK$V()).new(compare, isValidKey);
        collection.MapBase._fillMapWithMappedIterable(map, iterable, key, value);
        return map;
      }
      static fromIterables(keys, values, compare, isValidKey) {
        if (compare === void 0) compare = null;
        if (isValidKey === void 0) isValidKey = null;
        let map = new (SplayTreeMapOfK$V()).new(compare, isValidKey);
        collection.MapBase._fillMapWithIterables(map, keys, values);
        return map;
      }
      [_compare](key1, key2) {
        K._check(key1);
        K._check(key2);
        return this[_comparator](key1, key2);
      }
      _get(key) {
        if (!dart.test(this[_validKey$](key))) return null;
        if (this[_root$] != null) {
          let comp = this[_splay](K._check(key));
          if (comp === 0) {
            return this[_root$].value;
          }
        }
        return null;
      }
      remove(key) {
        if (!dart.test(this[_validKey$](key))) return null;
        let mapRoot = this[_remove](K._check(key));
        if (mapRoot != null) return mapRoot.value;
        return null;
      }
      _set(key, value) {
        K._check(key);
        V._check(value);
        if (key == null) dart.throw(new core.ArgumentError.new(key));
        let comp = this[_splay](key);
        if (comp === 0) {
          this[_root$].value = value;
          return value;
        }
        this[_addNewRoot](new (_SplayTreeMapNodeOfK$V()).new(key, value), comp);
        return value;
      }
      putIfAbsent(key, ifAbsent) {
        K._check(key);
        VoidToV()._check(ifAbsent);
        if (key == null) dart.throw(new core.ArgumentError.new(key));
        let comp = this[_splay](key);
        if (comp === 0) {
          return this[_root$].value;
        }
        let modificationCount = this[_modificationCount];
        let splayCount = this[_splayCount];
        let value = ifAbsent();
        if (modificationCount != this[_modificationCount]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
        if (splayCount != this[_splayCount]) {
          comp = this[_splay](key);
          if (!(comp !== 0)) dart.assertFailed();
        }
        this[_addNewRoot](new (_SplayTreeMapNodeOfK$V()).new(key, value), comp);
        return value;
      }
      addAll(other) {
        MapOfK$V()._check(other);
        other[$forEach](dart.fn((key, value) => {
          this._set(key, value);
        }, KAndVToNull()));
      }
      get isEmpty() {
        return this[_root$] == null;
      }
      get isNotEmpty() {
        return !dart.test(this.isEmpty);
      }
      forEach(f) {
        let nodes = new (_SplayTreeNodeIteratorOfK()).new(this);
        while (dart.test(nodes.moveNext())) {
          let node = _SplayTreeMapNodeOfK$V()._check(nodes.current);
          f(node.key, node.value);
        }
      }
      get length() {
        return this[_count$];
      }
      clear() {
        this[_clear]();
      }
      containsKey(key) {
        return dart.test(this[_validKey$](key)) && this[_splay](K._check(key)) === 0;
      }
      containsValue(value) {
        let initialSplayCount = this[_splayCount];
        const visit = (function(node) {
          while (node != null) {
            if (dart.equals(node.value, value)) return true;
            if (initialSplayCount != this[_splayCount]) {
              dart.throw(new core.ConcurrentModificationError.new(this));
            }
            if (node.right != null && dart.test(visit(collection._SplayTreeMapNode._check(node.right)))) return true;
            node = collection._SplayTreeMapNode._check(node.left);
          }
          return false;
        }).bind(this);
        dart.fn(visit, _SplayTreeMapNodeTobool());
        return visit(this[_root$]);
      }
      get keys() {
        return new (_SplayTreeKeyIterableOfK()).new(this);
      }
      get values() {
        return new (_SplayTreeValueIterableOfK$V()).new(this);
      }
      firstKey() {
        if (this[_root$] == null) return null;
        return this[_first$].key;
      }
      lastKey() {
        if (this[_root$] == null) return null;
        return this[_last].key;
      }
      lastKeyBefore(key) {
        K._check(key);
        if (key == null) dart.throw(new core.ArgumentError.new(key));
        if (this[_root$] == null) return null;
        let comp = this[_splay](key);
        if (dart.notNull(comp) < 0) return this[_root$].key;
        let node = this[_root$].left;
        if (node == null) return null;
        while (node.right != null) {
          node = node.right;
        }
        return node.key;
      }
      firstKeyAfter(key) {
        K._check(key);
        if (key == null) dart.throw(new core.ArgumentError.new(key));
        if (this[_root$] == null) return null;
        let comp = this[_splay](key);
        if (dart.notNull(comp) > 0) return this[_root$].key;
        let node = this[_root$].right;
        if (node == null) return null;
        while (node.left != null) {
          node = node.left;
        }
        return node.key;
      }
    }
    (SplayTreeMap.new = function(compare, isValidKey) {
      if (compare === void 0) compare = null;
      if (isValidKey === void 0) isValidKey = null;
      this[_root$] = null;
      this[_dummy] = new (_SplayTreeMapNodeOfK$V()).new(null, null);
      let l = compare;
      this[_comparator] = l != null ? l : collection._defaultCompare(K);
      let l$ = isValidKey;
      this[_validKey$] = l$ != null ? l$ : dart.fn(v => K.is(v), dynamicTobool());
      SplayTreeMap.__proto__.new.call(this);
    }).prototype = SplayTreeMap.prototype;
    (SplayTreeMap._internal = function() {
      this[_root$] = null;
      this[_dummy] = new (_SplayTreeMapNodeOfK$V()).new(null, null);
      this[_comparator] = null;
      this[_validKey$] = null;
      SplayTreeMap.__proto__.new.call(this);
    }).prototype = SplayTreeMap.prototype;
    dart.addTypeTests(SplayTreeMap);
    SplayTreeMap.prototype[_is_SplayTreeMap_default] = true;
    dart.setMethodSignature(SplayTreeMap, () => ({
      __proto__: dart.getMethods(SplayTreeMap.__proto__),
      [_compare]: dart.fnType(core.int, [core.Object, core.Object]),
      _get: dart.fnType(V, [core.Object]),
      [$_get]: dart.fnType(V, [core.Object]),
      remove: dart.fnType(V, [core.Object]),
      [$remove]: dart.fnType(V, [core.Object]),
      _set: dart.fnType(dart.void, [core.Object, core.Object]),
      [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
      putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
      [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      [$addAll]: dart.fnType(dart.void, [core.Object]),
      clear: dart.fnType(dart.void, []),
      [$clear]: dart.fnType(dart.void, []),
      firstKey: dart.fnType(K, []),
      lastKey: dart.fnType(K, []),
      lastKeyBefore: dart.fnType(K, [core.Object]),
      firstKeyAfter: dart.fnType(K, [core.Object])
    }));
    dart.setGetterSignature(SplayTreeMap, () => ({
      __proto__: dart.getGetters(SplayTreeMap.__proto__),
      keys: core.Iterable$(K),
      [$keys]: core.Iterable$(K)
    }));
    dart.setFieldSignature(SplayTreeMap, () => ({
      __proto__: dart.getFields(SplayTreeMap.__proto__),
      [_root$]: dart.fieldType(_SplayTreeMapNodeOfK$V()),
      [_dummy]: dart.finalFieldType(_SplayTreeMapNodeOfK$V()),
      [_comparator]: dart.fieldType(KAndKToint()),
      [_validKey$]: dart.fieldType(dynamicTobool())
    }));
    dart.defineExtensionMethods(SplayTreeMap, [
      '_get',
      'remove',
      '_set',
      'putIfAbsent',
      'addAll',
      'forEach',
      'clear',
      'containsKey',
      'containsValue'
    ]);
    dart.defineExtensionAccessors(SplayTreeMap, [
      'isEmpty',
      'isNotEmpty',
      'length',
      'keys',
      'values'
    ]);
    return SplayTreeMap;
  });
  collection.SplayTreeMap = collection.SplayTreeMap$();
  dart.addTypeTests(collection.SplayTreeMap, _is_SplayTreeMap_default);
  const _tree = Symbol('_tree');
  const _workList = Symbol('_workList');
  const _currentNode = Symbol('_currentNode');
  const _findLeftMostDescendent = Symbol('_findLeftMostDescendent');
  const _getValue = Symbol('_getValue');
  const _rebuildWorkList = Symbol('_rebuildWorkList');
  const _is__SplayTreeIterator_default = Symbol('_is__SplayTreeIterator_default');
  collection._SplayTreeIterator$ = dart.generic((K, T) => {
    let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
    let JSArrayOf_SplayTreeNodeOfK = () => (JSArrayOf_SplayTreeNodeOfK = dart.constFn(_interceptors.JSArray$(_SplayTreeNodeOfK())))();
    let _SplayTreeOfK$_SplayTreeNodeOfK = () => (_SplayTreeOfK$_SplayTreeNodeOfK = dart.constFn(collection._SplayTree$(K, _SplayTreeNodeOfK())))();
    let ListOf_SplayTreeNodeOfK = () => (ListOf_SplayTreeNodeOfK = dart.constFn(core.List$(_SplayTreeNodeOfK())))();
    let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
    class _SplayTreeIterator extends core.Object {
      get current() {
        if (this[_currentNode] == null) return null;
        return this[_getValue](this[_currentNode]);
      }
      [_findLeftMostDescendent](node) {
        _SplayTreeNodeOfK()._check(node);
        while (node != null) {
          this[_workList][$add](node);
          node = node.left;
        }
      }
      [_rebuildWorkList](currentNode) {
        _SplayTreeNodeOfK()._check(currentNode);
        if (!dart.test(this[_workList][$isNotEmpty])) dart.assertFailed();
        this[_workList][$clear]();
        if (currentNode == null) {
          this[_findLeftMostDescendent](this[_tree][_root$]);
        } else {
          this[_tree][_splay](currentNode.key);
          this[_findLeftMostDescendent](this[_tree][_root$].right);
          if (!dart.test(this[_workList][$isNotEmpty])) dart.assertFailed();
        }
      }
      moveNext() {
        if (this[_modificationCount] != this[_tree][_modificationCount]) {
          dart.throw(new core.ConcurrentModificationError.new(this[_tree]));
        }
        if (dart.test(this[_workList][$isEmpty])) {
          this[_currentNode] = null;
          return false;
        }
        if (this[_tree][_splayCount] != this[_splayCount] && this[_currentNode] != null) {
          this[_rebuildWorkList](this[_currentNode]);
        }
        this[_currentNode] = this[_workList][$removeLast]();
        this[_findLeftMostDescendent](this[_currentNode].right);
        return true;
      }
    }
    (_SplayTreeIterator.new = function(tree) {
      this[_workList] = JSArrayOf_SplayTreeNodeOfK().of([]);
      this[_currentNode] = null;
      this[_tree] = tree;
      this[_modificationCount] = tree[_modificationCount];
      this[_splayCount] = tree[_splayCount];
      this[_findLeftMostDescendent](tree[_root$]);
    }).prototype = _SplayTreeIterator.prototype;
    (_SplayTreeIterator.startAt = function(tree, startKey) {
      this[_workList] = JSArrayOf_SplayTreeNodeOfK().of([]);
      this[_splayCount] = null;
      this[_currentNode] = null;
      this[_tree] = tree;
      this[_modificationCount] = tree[_modificationCount];
      if (tree[_root$] == null) return;
      let compare = tree[_splay](startKey);
      this[_splayCount] = tree[_splayCount];
      if (dart.notNull(compare) < 0) {
        this[_findLeftMostDescendent](tree[_root$].right);
      } else {
        this[_workList][$add](tree[_root$]);
      }
    }).prototype = _SplayTreeIterator.prototype;
    dart.addTypeTests(_SplayTreeIterator);
    _SplayTreeIterator.prototype[_is__SplayTreeIterator_default] = true;
    _SplayTreeIterator[dart.implements] = () => [IteratorOfT()];
    dart.setMethodSignature(_SplayTreeIterator, () => ({
      __proto__: dart.getMethods(_SplayTreeIterator.__proto__),
      [_findLeftMostDescendent]: dart.fnType(dart.void, [core.Object]),
      [_rebuildWorkList]: dart.fnType(dart.void, [core.Object]),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(_SplayTreeIterator, () => ({
      __proto__: dart.getGetters(_SplayTreeIterator.__proto__),
      current: T
    }));
    dart.setFieldSignature(_SplayTreeIterator, () => ({
      __proto__: dart.getFields(_SplayTreeIterator.__proto__),
      [_tree]: dart.finalFieldType(_SplayTreeOfK$_SplayTreeNodeOfK()),
      [_workList]: dart.finalFieldType(ListOf_SplayTreeNodeOfK()),
      [_modificationCount]: dart.fieldType(core.int),
      [_splayCount]: dart.fieldType(core.int),
      [_currentNode]: dart.fieldType(_SplayTreeNodeOfK())
    }));
    return _SplayTreeIterator;
  });
  collection._SplayTreeIterator = collection._SplayTreeIterator$();
  dart.addTypeTests(collection._SplayTreeIterator, _is__SplayTreeIterator_default);
  const _copyNode = Symbol('_copyNode');
  const _is__SplayTreeKeyIterable_default = Symbol('_is__SplayTreeKeyIterable_default');
  collection._SplayTreeKeyIterable$ = dart.generic(K => {
    let _SplayTreeKeyIteratorOfK = () => (_SplayTreeKeyIteratorOfK = dart.constFn(collection._SplayTreeKeyIterator$(K)))();
    let KAndKToint = () => (KAndKToint = dart.constFn(dart.fnType(core.int, [K, K])))();
    let SplayTreeSetOfK = () => (SplayTreeSetOfK = dart.constFn(collection.SplayTreeSet$(K)))();
    let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
    let _SplayTreeOfK$_SplayTreeNodeOfK = () => (_SplayTreeOfK$_SplayTreeNodeOfK = dart.constFn(collection._SplayTree$(K, _SplayTreeNodeOfK())))();
    class _SplayTreeKeyIterable extends _internal.EfficientLengthIterable$(K) {
      get length() {
        return this[_tree][_count$];
      }
      get isEmpty() {
        return this[_tree][_count$] === 0;
      }
      get iterator() {
        return new (_SplayTreeKeyIteratorOfK()).new(this[_tree]);
      }
      toSet() {
        let set = new (SplayTreeSetOfK()).new(KAndKToint()._check(this[_tree][_comparator]), this[_tree][_validKey$]);
        set[_count$] = this[_tree][_count$];
        set[_root$] = set[_copyNode](this[_tree][_root$]);
        return set;
      }
    }
    (_SplayTreeKeyIterable.new = function(tree) {
      this[_tree] = tree;
      _SplayTreeKeyIterable.__proto__.new.call(this);
    }).prototype = _SplayTreeKeyIterable.prototype;
    dart.addTypeTests(_SplayTreeKeyIterable);
    _SplayTreeKeyIterable.prototype[_is__SplayTreeKeyIterable_default] = true;
    dart.setGetterSignature(_SplayTreeKeyIterable, () => ({
      __proto__: dart.getGetters(_SplayTreeKeyIterable.__proto__),
      length: core.int,
      [$length]: core.int,
      iterator: core.Iterator$(K),
      [$iterator]: core.Iterator$(K)
    }));
    dart.setFieldSignature(_SplayTreeKeyIterable, () => ({
      __proto__: dart.getFields(_SplayTreeKeyIterable.__proto__),
      [_tree]: dart.fieldType(_SplayTreeOfK$_SplayTreeNodeOfK())
    }));
    dart.defineExtensionMethods(_SplayTreeKeyIterable, ['toSet']);
    dart.defineExtensionAccessors(_SplayTreeKeyIterable, ['length', 'isEmpty', 'iterator']);
    return _SplayTreeKeyIterable;
  });
  collection._SplayTreeKeyIterable = collection._SplayTreeKeyIterable$();
  dart.addTypeTests(collection._SplayTreeKeyIterable, _is__SplayTreeKeyIterable_default);
  const _is__SplayTreeValueIterable_default = Symbol('_is__SplayTreeValueIterable_default');
  collection._SplayTreeValueIterable$ = dart.generic((K, V) => {
    let _SplayTreeValueIteratorOfK$V = () => (_SplayTreeValueIteratorOfK$V = dart.constFn(collection._SplayTreeValueIterator$(K, V)))();
    let SplayTreeMapOfK$V = () => (SplayTreeMapOfK$V = dart.constFn(collection.SplayTreeMap$(K, V)))();
    class _SplayTreeValueIterable extends _internal.EfficientLengthIterable$(V) {
      get length() {
        return this[_map$0][_count$];
      }
      get isEmpty() {
        return this[_map$0][_count$] === 0;
      }
      get iterator() {
        return new (_SplayTreeValueIteratorOfK$V()).new(this[_map$0]);
      }
    }
    (_SplayTreeValueIterable.new = function(map) {
      this[_map$0] = map;
      _SplayTreeValueIterable.__proto__.new.call(this);
    }).prototype = _SplayTreeValueIterable.prototype;
    dart.addTypeTests(_SplayTreeValueIterable);
    _SplayTreeValueIterable.prototype[_is__SplayTreeValueIterable_default] = true;
    dart.setGetterSignature(_SplayTreeValueIterable, () => ({
      __proto__: dart.getGetters(_SplayTreeValueIterable.__proto__),
      length: core.int,
      [$length]: core.int,
      isEmpty: core.bool,
      [$isEmpty]: core.bool,
      iterator: core.Iterator$(V),
      [$iterator]: core.Iterator$(V)
    }));
    dart.setFieldSignature(_SplayTreeValueIterable, () => ({
      __proto__: dart.getFields(_SplayTreeValueIterable.__proto__),
      [_map$0]: dart.fieldType(SplayTreeMapOfK$V())
    }));
    dart.defineExtensionAccessors(_SplayTreeValueIterable, ['length', 'isEmpty', 'iterator']);
    return _SplayTreeValueIterable;
  });
  collection._SplayTreeValueIterable = collection._SplayTreeValueIterable$();
  dart.addTypeTests(collection._SplayTreeValueIterable, _is__SplayTreeValueIterable_default);
  const _is__SplayTreeKeyIterator_default = Symbol('_is__SplayTreeKeyIterator_default');
  collection._SplayTreeKeyIterator$ = dart.generic(K => {
    let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
    class _SplayTreeKeyIterator extends collection._SplayTreeIterator$(K, K) {
      [_getValue](node) {
        _SplayTreeNodeOfK()._check(node);
        return node.key;
      }
    }
    (_SplayTreeKeyIterator.new = function(map) {
      _SplayTreeKeyIterator.__proto__.new.call(this, map);
    }).prototype = _SplayTreeKeyIterator.prototype;
    dart.addTypeTests(_SplayTreeKeyIterator);
    _SplayTreeKeyIterator.prototype[_is__SplayTreeKeyIterator_default] = true;
    dart.setMethodSignature(_SplayTreeKeyIterator, () => ({
      __proto__: dart.getMethods(_SplayTreeKeyIterator.__proto__),
      [_getValue]: dart.fnType(K, [core.Object])
    }));
    return _SplayTreeKeyIterator;
  });
  collection._SplayTreeKeyIterator = collection._SplayTreeKeyIterator$();
  dart.addTypeTests(collection._SplayTreeKeyIterator, _is__SplayTreeKeyIterator_default);
  const _is__SplayTreeValueIterator_default = Symbol('_is__SplayTreeValueIterator_default');
  collection._SplayTreeValueIterator$ = dart.generic((K, V) => {
    let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
    let _SplayTreeMapNodeOfK$V = () => (_SplayTreeMapNodeOfK$V = dart.constFn(collection._SplayTreeMapNode$(K, V)))();
    class _SplayTreeValueIterator extends collection._SplayTreeIterator$(K, V) {
      [_getValue](node) {
        _SplayTreeNodeOfK()._check(node);
        let mapNode = _SplayTreeMapNodeOfK$V()._check(node);
        return mapNode.value;
      }
    }
    (_SplayTreeValueIterator.new = function(map) {
      _SplayTreeValueIterator.__proto__.new.call(this, map);
    }).prototype = _SplayTreeValueIterator.prototype;
    dart.addTypeTests(_SplayTreeValueIterator);
    _SplayTreeValueIterator.prototype[_is__SplayTreeValueIterator_default] = true;
    dart.setMethodSignature(_SplayTreeValueIterator, () => ({
      __proto__: dart.getMethods(_SplayTreeValueIterator.__proto__),
      [_getValue]: dart.fnType(V, [core.Object])
    }));
    return _SplayTreeValueIterator;
  });
  collection._SplayTreeValueIterator = collection._SplayTreeValueIterator$();
  dart.addTypeTests(collection._SplayTreeValueIterator, _is__SplayTreeValueIterator_default);
  const _is__SplayTreeNodeIterator_default = Symbol('_is__SplayTreeNodeIterator_default');
  collection._SplayTreeNodeIterator$ = dart.generic(K => {
    let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
    class _SplayTreeNodeIterator extends collection._SplayTreeIterator$(K, collection._SplayTreeNode$(K)) {
      [_getValue](node) {
        _SplayTreeNodeOfK()._check(node);
        return node;
      }
    }
    (_SplayTreeNodeIterator.new = function(tree) {
      _SplayTreeNodeIterator.__proto__.new.call(this, tree);
    }).prototype = _SplayTreeNodeIterator.prototype;
    (_SplayTreeNodeIterator.startAt = function(tree, startKey) {
      _SplayTreeNodeIterator.__proto__.startAt.call(this, tree, startKey);
    }).prototype = _SplayTreeNodeIterator.prototype;
    dart.addTypeTests(_SplayTreeNodeIterator);
    _SplayTreeNodeIterator.prototype[_is__SplayTreeNodeIterator_default] = true;
    dart.setMethodSignature(_SplayTreeNodeIterator, () => ({
      __proto__: dart.getMethods(_SplayTreeNodeIterator.__proto__),
      [_getValue]: dart.fnType(collection._SplayTreeNode$(K), [core.Object])
    }));
    return _SplayTreeNodeIterator;
  });
  collection._SplayTreeNodeIterator = collection._SplayTreeNodeIterator$();
  dart.addTypeTests(collection._SplayTreeNodeIterator, _is__SplayTreeNodeIterator_default);
  const _clone$ = Symbol('_clone');
  const _is_SplayTreeSet_default = Symbol('_is_SplayTreeSet_default');
  collection.SplayTreeSet$ = dart.generic(E => {
    let _SplayTreeNodeOfE = () => (_SplayTreeNodeOfE = dart.constFn(collection._SplayTreeNode$(E)))();
    let SplayTreeSetOfE = () => (SplayTreeSetOfE = dart.constFn(collection.SplayTreeSet$(E)))();
    let _SplayTreeKeyIteratorOfE = () => (_SplayTreeKeyIteratorOfE = dart.constFn(collection._SplayTreeKeyIterator$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
    let EAndEToint = () => (EAndEToint = dart.constFn(dart.fnType(core.int, [E, E])))();
    const _SplayTree_IterableMixin$ = class _SplayTree_IterableMixin extends collection._SplayTree$(E, collection._SplayTreeNode$(E)) {};
    (_SplayTree_IterableMixin$.new = function() {
      _SplayTree_IterableMixin$.__proto__.new.call(this);
    }).prototype = _SplayTree_IterableMixin$.prototype;
    dart.applyMixin(_SplayTree_IterableMixin$, collection.IterableMixin$(E));
    const _SplayTree_SetMixin$ = class _SplayTree_SetMixin extends _SplayTree_IterableMixin$ {};
    (_SplayTree_SetMixin$.new = function() {
      _SplayTree_SetMixin$.__proto__.new.call(this);
    }).prototype = _SplayTree_SetMixin$.prototype;
    dart.applyMixin(_SplayTree_SetMixin$, collection.SetMixin$(E));
    class SplayTreeSet extends _SplayTree_SetMixin$ {
      get [_root$]() {
        return this[_root];
      }
      set [_root$](value) {
        this[_root] = _SplayTreeNodeOfE()._check(value);
      }
      static from(elements, compare, isValidKey) {
        if (compare === void 0) compare = null;
        if (isValidKey === void 0) isValidKey = null;
        let result = new (SplayTreeSetOfE()).new(compare, isValidKey);
        for (let element of elements) {
          let e = E._check(element);
          result.add(e);
        }
        return result;
      }
      static of(elements, compare, isValidKey) {
        if (compare === void 0) compare = null;
        if (isValidKey === void 0) isValidKey = null;
        let _ = new (SplayTreeSetOfE()).new(compare, isValidKey);
        _.addAll(elements);
        return _;
      }
      [_newSet](T) {
        return new (collection.SplayTreeSet$(T)).new(dart.fn((a, b) => this[_comparator](E.as(a), E.as(b)), dart.fnType(core.int, [T, T])), this[_validKey$]);
      }
      cast(R) {
        return core.Set.castFrom(E, R, this, {newSet: dart.bind(this, _newSet)});
      }
      [_compare](e1, e2) {
        E._check(e1);
        E._check(e2);
        return this[_comparator](e1, e2);
      }
      get iterator() {
        return new (_SplayTreeKeyIteratorOfE()).new(this);
      }
      get length() {
        return this[_count$];
      }
      get isEmpty() {
        return this[_root$] == null;
      }
      get isNotEmpty() {
        return this[_root$] != null;
      }
      get first() {
        if (this[_count$] === 0) dart.throw(_internal.IterableElementError.noElement());
        return this[_first$].key;
      }
      get last() {
        if (this[_count$] === 0) dart.throw(_internal.IterableElementError.noElement());
        return this[_last].key;
      }
      get single() {
        if (this[_count$] === 0) dart.throw(_internal.IterableElementError.noElement());
        if (dart.notNull(this[_count$]) > 1) dart.throw(_internal.IterableElementError.tooMany());
        return this[_root$].key;
      }
      contains(element) {
        return dart.test(this[_validKey$](element)) && this[_splay](E._check(element)) === 0;
      }
      add(element) {
        E._check(element);
        let compare = this[_splay](element);
        if (compare === 0) return false;
        this[_addNewRoot](new (_SplayTreeNodeOfE()).new(element), compare);
        return true;
      }
      remove(object) {
        if (!dart.test(this[_validKey$](object))) return false;
        return this[_remove](E._check(object)) != null;
      }
      addAll(elements) {
        IterableOfE()._check(elements);
        for (let element of elements) {
          let compare = this[_splay](element);
          if (compare !== 0) {
            this[_addNewRoot](new (_SplayTreeNodeOfE()).new(element), compare);
          }
        }
      }
      removeAll(elements) {
        for (let element of elements) {
          if (dart.test(this[_validKey$](element))) this[_remove](E._check(element));
        }
      }
      retainAll(elements) {
        let retainSet = new (SplayTreeSetOfE()).new(this[_comparator], this[_validKey$]);
        let modificationCount = this[_modificationCount];
        for (let object of elements) {
          if (modificationCount != this[_modificationCount]) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
          if (dart.test(this[_validKey$](object)) && this[_splay](E._check(object)) === 0) {
            retainSet.add(this[_root$].key);
          }
        }
        if (retainSet[_count$] != this[_count$]) {
          this[_root$] = retainSet[_root$];
          this[_count$] = retainSet[_count$];
          this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
        }
      }
      lookup(object) {
        if (!dart.test(this[_validKey$](object))) return null;
        let comp = this[_splay](E._check(object));
        if (comp !== 0) return null;
        return this[_root$].key;
      }
      intersection(other) {
        let result = new (SplayTreeSetOfE()).new(this[_comparator], this[_validKey$]);
        for (let element of this) {
          if (dart.test(other.contains(element))) result.add(element);
        }
        return result;
      }
      difference(other) {
        let result = new (SplayTreeSetOfE()).new(this[_comparator], this[_validKey$]);
        for (let element of this) {
          if (!dart.test(other.contains(element))) result.add(element);
        }
        return result;
      }
      union(other) {
        SetOfE()._check(other);
        let _ = this[_clone$]();
        _.addAll(other);
        return _;
      }
      [_clone$]() {
        let set = new (SplayTreeSetOfE()).new(this[_comparator], this[_validKey$]);
        set[_count$] = this[_count$];
        set[_root$] = this[_copyNode](this[_root$]);
        return set;
      }
      [_copyNode](node) {
        _SplayTreeNodeOfE()._check(node);
        if (node == null) return null;
        let _ = new (_SplayTreeNodeOfE()).new(node.key);
        _.left = this[_copyNode](node.left);
        _.right = this[_copyNode](node.right);
        return _;
      }
      clear() {
        this[_clear]();
      }
      toSet() {
        return this[_clone$]();
      }
      toString() {
        return collection.IterableBase.iterableToFullString(this, "{", "}");
      }
    }
    (SplayTreeSet.new = function(compare, isValidKey) {
      if (compare === void 0) compare = null;
      if (isValidKey === void 0) isValidKey = null;
      this[_root] = null;
      this[_dummy] = new (_SplayTreeNodeOfE()).new(null);
      let l = compare;
      this[_comparator] = l != null ? l : collection._defaultCompare(E);
      let l$ = isValidKey;
      this[_validKey$] = l$ != null ? l$ : dart.fn(v => E.is(v), dynamicTobool());
      SplayTreeSet.__proto__.new.call(this);
    }).prototype = SplayTreeSet.prototype;
    dart.addTypeTests(SplayTreeSet);
    SplayTreeSet.prototype[_is_SplayTreeSet_default] = true;
    const _root = Symbol("SplayTreeSet._root");
    dart.setMethodSignature(SplayTreeSet, () => ({
      __proto__: dart.getMethods(SplayTreeSet.__proto__),
      [_newSet]: dart.gFnType(T => [core.Set$(T), []]),
      [_compare]: dart.fnType(core.int, [core.Object, core.Object]),
      contains: dart.fnType(core.bool, [core.Object]),
      [$contains]: dart.fnType(core.bool, [core.Object]),
      add: dart.fnType(core.bool, [core.Object]),
      remove: dart.fnType(core.bool, [core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      lookup: dart.fnType(E, [core.Object]),
      union: dart.fnType(core.Set$(E), [core.Object]),
      [_clone$]: dart.fnType(collection.SplayTreeSet$(E), []),
      [_copyNode]: dart.fnType(collection._SplayTreeNode$(E), [core.Object]),
      toSet: dart.fnType(core.Set$(E), []),
      [$toSet]: dart.fnType(core.Set$(E), [])
    }));
    dart.setGetterSignature(SplayTreeSet, () => ({
      __proto__: dart.getGetters(SplayTreeSet.__proto__),
      iterator: core.Iterator$(E),
      [$iterator]: core.Iterator$(E),
      length: core.int,
      [$length]: core.int
    }));
    dart.setFieldSignature(SplayTreeSet, () => ({
      __proto__: dart.getFields(SplayTreeSet.__proto__),
      [_root$]: dart.fieldType(_SplayTreeNodeOfE()),
      [_dummy]: dart.finalFieldType(_SplayTreeNodeOfE()),
      [_comparator]: dart.fieldType(EAndEToint()),
      [_validKey$]: dart.fieldType(dynamicTobool())
    }));
    dart.defineExtensionMethods(SplayTreeSet, ['cast', 'contains', 'toSet', 'toString']);
    dart.defineExtensionAccessors(SplayTreeSet, [
      'iterator',
      'length',
      'isEmpty',
      'isNotEmpty',
      'first',
      'last',
      'single'
    ]);
    return SplayTreeSet;
  });
  collection.SplayTreeSet = collection.SplayTreeSet$();
  dart.addTypeTests(collection.SplayTreeSet, _is_SplayTreeSet_default);
  const _processed = Symbol('_processed');
  const _computeKeys = Symbol('_computeKeys');
  const _original = Symbol('_original');
  convert._convertJsonToDart = function(json, reviver) {
    if (!(reviver != null)) dart.assertFailed();
    function walk(e) {
      if (e == null || typeof e != "object") {
        return e;
      }
      if (Object.getPrototypeOf(e) === Array.prototype) {
        for (let i = 0; i < e.length; i++) {
          let item = e[i];
          e[i] = reviver(i, walk(item));
        }
        return e;
      }
      let map = new convert._JsonMap.new(e);
      let processed = map[_processed];
      let keys = map[_computeKeys]();
      for (let i = 0; i < dart.notNull(keys[$length]); i++) {
        let key = keys[$_get](i);
        let revived = reviver(key, walk(e[key]));
        processed[key] = revived;
      }
      map[_original] = processed;
      return map;
    }
    dart.fn(walk, dynamicTodynamic());
    return reviver(null, walk(json));
  };
  convert._convertJsonToDartLazy = function(object) {
    if (object == null) return null;
    if (typeof object != "object") {
      return object;
    }
    if (Object.getPrototypeOf(object) !== Array.prototype) {
      return new convert._JsonMap.new(object);
    }
    for (let i = 0; i < object.length; i++) {
      let item = object[i];
      object[i] = convert._convertJsonToDartLazy(item);
    }
    return object;
  };
  const _data = Symbol('_data');
  const _isUpgraded = Symbol('_isUpgraded');
  const _upgradedMap = Symbol('_upgradedMap');
  const _process$ = Symbol('_process');
  const _upgrade = Symbol('_upgrade');
  core.String = class String extends core.Object {
    static fromCharCodes(charCodes, start, end) {
      if (start === void 0) start = 0;
      if (end === void 0) end = null;
      if (_interceptors.JSArray.is(charCodes)) {
        return core.String._stringFromJSArray(charCodes, start, end);
      }
      if (_native_typed_data.NativeUint8List.is(charCodes)) {
        return core.String._stringFromUint8List(charCodes, start, end);
      }
      return core.String._stringFromIterable(charCodes, start, end);
    }
    static fromCharCode(charCode) {
      return _js_helper.Primitives.stringFromCharCode(charCode);
    }
    static fromEnvironment(name, opts) {
      let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : null;
      dart.throw(new core.UnsupportedError.new("String.fromEnvironment can only be used as a const constructor"));
    }
    static _stringFromJSArray(list, start, endOrNull) {
      let len = core.int._check(dart.dload(list, 'length'));
      let end = core.RangeError.checkValidRange(start, endOrNull, len);
      if (dart.notNull(start) > 0 || dart.notNull(end) < dart.notNull(len)) {
        list = dart.dsend(list, 'sublist', [start, end]);
      }
      return _js_helper.Primitives.stringFromCharCodes(JSArrayOfint()._check(list));
    }
    static _stringFromUint8List(charCodes, start, endOrNull) {
      let len = charCodes[$length];
      let end = core.RangeError.checkValidRange(start, endOrNull, len);
      return _js_helper.Primitives.stringFromNativeUint8List(charCodes, start, end);
    }
    static _stringFromIterable(charCodes, start, end) {
      if (dart.notNull(start) < 0) dart.throw(new core.RangeError.range(start, 0, charCodes[$length]));
      if (end != null && dart.notNull(end) < dart.notNull(start)) {
        dart.throw(new core.RangeError.range(end, start, charCodes[$length]));
      }
      let it = charCodes[$iterator];
      for (let i = 0; i < dart.notNull(start); i++) {
        if (!dart.test(it.moveNext())) {
          dart.throw(new core.RangeError.range(start, 0, i));
        }
      }
      let list = JSArrayOfint().of([]);
      if (end == null) {
        while (dart.test(it.moveNext()))
          list[$add](it.current);
      } else {
        for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
          if (!dart.test(it.moveNext())) {
            dart.throw(new core.RangeError.range(end, start, i));
          }
          list[$add](it.current);
        }
      }
      return _js_helper.Primitives.stringFromCharCodes(JSArrayOfint()._check(list));
    }
  };
  (core.String[dart.mixinNew] = function() {
  }).prototype = core.String.prototype;
  core.String.is = function is_String(o) {
    return typeof o == "string";
  };
  core.String.as = function as_String(o) {
    if (typeof o == "string" || o == null) return o;
    return dart.as(o, core.String, false);
  };
  core.String._check = function check_String(o) {
    if (typeof o == "string" || o == null) return o;
    return dart.as(o, core.String, true);
  };
  core.String[dart.implements] = () => [ComparableOfString(), core.Pattern];
  convert._JsonMap = class _JsonMap extends collection.MapBase$(core.String, dart.dynamic) {
    _get(key) {
      if (dart.test(this[_isUpgraded])) {
        return this[_upgradedMap][$_get](key);
      } else if (!(typeof key == 'string')) {
        return null;
      } else {
        let result = convert._JsonMap._getProperty(this[_processed], core.String._check(key));
        if (dart.test(convert._JsonMap._isUnprocessed(result))) result = this[_process$](core.String._check(key));
        return result;
      }
    }
    get length() {
      return dart.test(this[_isUpgraded]) ? this[_upgradedMap][$length] : this[_computeKeys]()[$length];
    }
    get isEmpty() {
      return this.length === 0;
    }
    get isNotEmpty() {
      return dart.notNull(this.length) > 0;
    }
    get keys() {
      if (dart.test(this[_isUpgraded])) return this[_upgradedMap][$keys];
      return new convert._JsonMapKeyIterable.new(this);
    }
    get values() {
      if (dart.test(this[_isUpgraded])) return this[_upgradedMap][$values];
      return MappedIterableOfString$dynamic().new(this[_computeKeys](), dart.fn(each => this._get(each), dynamicTodynamic()));
    }
    _set(key, value) {
      core.String._check(key);
      if (dart.test(this[_isUpgraded])) {
        this[_upgradedMap][$_set](key, value);
      } else if (dart.test(this.containsKey(key))) {
        let processed = this[_processed];
        convert._JsonMap._setProperty(processed, key, value);
        let original = this[_original];
        if (!core.identical(original, processed)) {
          convert._JsonMap._setProperty(original, key, null);
        }
      } else {
        this[_upgrade]()[$_set](key, value);
      }
      return value;
    }
    addAll(other) {
      MapOfString$dynamic()._check(other);
      other[$forEach](dart.fn((key, value) => {
        this._set(key, value);
      }, StringAnddynamicToNull()));
    }
    containsValue(value) {
      if (dart.test(this[_isUpgraded])) return this[_upgradedMap][$containsValue](value);
      let keys = this[_computeKeys]();
      for (let i = 0; i < dart.notNull(keys[$length]); i++) {
        let key = keys[$_get](i);
        if (dart.equals(this._get(key), value)) return true;
      }
      return false;
    }
    containsKey(key) {
      if (dart.test(this[_isUpgraded])) return this[_upgradedMap][$containsKey](key);
      if (!(typeof key == 'string')) return false;
      return convert._JsonMap._hasProperty(this[_original], core.String._check(key));
    }
    putIfAbsent(key, ifAbsent) {
      core.String._check(key);
      if (dart.test(this.containsKey(key))) return this._get(key);
      let value = ifAbsent();
      this._set(key, value);
      return value;
    }
    remove(key) {
      if (!dart.test(this[_isUpgraded]) && !dart.test(this.containsKey(key))) return null;
      return this[_upgrade]()[$remove](key);
    }
    clear() {
      if (dart.test(this[_isUpgraded])) {
        this[_upgradedMap][$clear]();
      } else {
        if (this[_data] != null) {
          dart.dsend(this[_data], 'clear', []);
        }
        this[_original] = this[_processed] = null;
        this[_data] = new _js_helper.LinkedMap.new();
      }
    }
    forEach(f) {
      if (dart.test(this[_isUpgraded])) return this[_upgradedMap][$forEach](f);
      let keys = this[_computeKeys]();
      for (let i = 0; i < dart.notNull(keys[$length]); i++) {
        let key = keys[$_get](i);
        let value = convert._JsonMap._getProperty(this[_processed], key);
        if (dart.test(convert._JsonMap._isUnprocessed(value))) {
          value = convert._convertJsonToDartLazy(convert._JsonMap._getProperty(this[_original], key));
          convert._JsonMap._setProperty(this[_processed], key, value);
        }
        f(key, value);
        if (!core.identical(keys, this[_data])) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
    }
    get [_isUpgraded]() {
      return this[_processed] == null;
    }
    get [_upgradedMap]() {
      if (!dart.test(this[_isUpgraded])) dart.assertFailed();
      return this[_data];
    }
    [_computeKeys]() {
      if (!!dart.test(this[_isUpgraded])) dart.assertFailed();
      let keys = core.List._check(this[_data]);
      if (keys == null) {
        keys = this[_data] = convert._JsonMap._getPropertyNames(this[_original]);
      }
      return keys;
    }
    [_upgrade]() {
      if (dart.test(this[_isUpgraded])) return this[_upgradedMap];
      let result = new (IdentityMapOfString$dynamic()).new();
      let keys = this[_computeKeys]();
      for (let i = 0; i < dart.notNull(keys[$length]); i++) {
        let key = keys[$_get](i);
        result[$_set](key, this._get(key));
      }
      if (dart.test(keys[$isEmpty])) {
        keys[$add](null);
      } else {
        keys[$clear]();
      }
      this[_original] = this[_processed] = null;
      this[_data] = result;
      if (!dart.test(this[_isUpgraded])) dart.assertFailed();
      return result;
    }
    [_process$](key) {
      if (!dart.test(convert._JsonMap._hasProperty(this[_original], key))) return null;
      let result = convert._convertJsonToDartLazy(convert._JsonMap._getProperty(this[_original], key));
      return convert._JsonMap._setProperty(this[_processed], key, result);
    }
    static _hasProperty(object, key) {
      return Object.prototype.hasOwnProperty.call(object, key);
    }
    static _getProperty(object, key) {
      return object[key];
    }
    static _setProperty(object, key, value) {
      return object[key] = value;
    }
    static _getPropertyNames(object) {
      return Object.keys(object);
    }
    static _isUnprocessed(object) {
      return typeof object == "undefined";
    }
    static _newJavaScriptObject() {
      return Object.create(null);
    }
  };
  (convert._JsonMap.new = function(original) {
    this[_processed] = convert._JsonMap._newJavaScriptObject();
    this[_data] = null;
    this[_original] = original;
  }).prototype = convert._JsonMap.prototype;
  dart.addTypeTests(convert._JsonMap);
  dart.setMethodSignature(convert._JsonMap, () => ({
    __proto__: dart.getMethods(convert._JsonMap.__proto__),
    _get: dart.fnType(dart.dynamic, [core.Object]),
    [$_get]: dart.fnType(dart.dynamic, [core.Object]),
    _set: dart.fnType(dart.void, [core.Object, dart.dynamic]),
    [$_set]: dart.fnType(dart.void, [core.Object, dart.dynamic]),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    containsValue: dart.fnType(core.bool, [core.Object]),
    [$containsValue]: dart.fnType(core.bool, [core.Object]),
    containsKey: dart.fnType(core.bool, [core.Object]),
    [$containsKey]: dart.fnType(core.bool, [core.Object]),
    putIfAbsent: dart.fnType(dart.dynamic, [core.Object, dart.fnType(dart.dynamic, [])]),
    [$putIfAbsent]: dart.fnType(dart.dynamic, [core.Object, dart.fnType(dart.dynamic, [])]),
    remove: dart.fnType(dart.dynamic, [core.Object]),
    [$remove]: dart.fnType(dart.dynamic, [core.Object]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, []),
    forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, dart.dynamic])]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, dart.dynamic])]),
    [_computeKeys]: dart.fnType(core.List$(core.String), []),
    [_upgrade]: dart.fnType(core.Map$(core.String, dart.dynamic), []),
    [_process$]: dart.fnType(dart.dynamic, [core.String])
  }));
  dart.setGetterSignature(convert._JsonMap, () => ({
    __proto__: dart.getGetters(convert._JsonMap.__proto__),
    length: core.int,
    [$length]: core.int,
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    isNotEmpty: core.bool,
    [$isNotEmpty]: core.bool,
    keys: core.Iterable$(core.String),
    [$keys]: core.Iterable$(core.String),
    values: core.Iterable,
    [$values]: core.Iterable,
    [_isUpgraded]: core.bool,
    [_upgradedMap]: core.Map$(core.String, dart.dynamic)
  }));
  dart.setFieldSignature(convert._JsonMap, () => ({
    __proto__: dart.getFields(convert._JsonMap.__proto__),
    [_original]: dart.fieldType(dart.dynamic),
    [_processed]: dart.fieldType(dart.dynamic),
    [_data]: dart.fieldType(dart.dynamic)
  }));
  dart.defineExtensionMethods(convert._JsonMap, [
    '_get',
    '_set',
    'addAll',
    'containsValue',
    'containsKey',
    'putIfAbsent',
    'remove',
    'clear',
    'forEach'
  ]);
  dart.defineExtensionAccessors(convert._JsonMap, [
    'length',
    'isEmpty',
    'isNotEmpty',
    'keys',
    'values'
  ]);
  const _parent = Symbol('_parent');
  convert._JsonMapKeyIterable = class _JsonMapKeyIterable extends _internal.ListIterable$(core.String) {
    get length() {
      return this[_parent].length;
    }
    elementAt(index) {
      return dart.test(this[_parent][_isUpgraded]) ? this[_parent].keys[$elementAt](index) : this[_parent][_computeKeys]()[$_get](index);
    }
    get iterator() {
      return dart.test(this[_parent][_isUpgraded]) ? this[_parent].keys[$iterator] : this[_parent][_computeKeys]()[$iterator];
    }
    contains(key) {
      return this[_parent].containsKey(key);
    }
  };
  (convert._JsonMapKeyIterable.new = function(parent) {
    this[_parent] = parent;
    convert._JsonMapKeyIterable.__proto__.new.call(this);
  }).prototype = convert._JsonMapKeyIterable.prototype;
  dart.addTypeTests(convert._JsonMapKeyIterable);
  dart.setMethodSignature(convert._JsonMapKeyIterable, () => ({
    __proto__: dart.getMethods(convert._JsonMapKeyIterable.__proto__),
    elementAt: dart.fnType(core.String, [core.int]),
    [$elementAt]: dart.fnType(core.String, [core.int]),
    contains: dart.fnType(core.bool, [core.Object]),
    [$contains]: dart.fnType(core.bool, [core.Object])
  }));
  dart.setGetterSignature(convert._JsonMapKeyIterable, () => ({
    __proto__: dart.getGetters(convert._JsonMapKeyIterable.__proto__),
    length: core.int,
    [$length]: core.int,
    iterator: core.Iterator$(core.String),
    [$iterator]: core.Iterator$(core.String)
  }));
  dart.setFieldSignature(convert._JsonMapKeyIterable, () => ({
    __proto__: dart.getFields(convert._JsonMapKeyIterable.__proto__),
    [_parent]: dart.finalFieldType(convert._JsonMap)
  }));
  dart.defineExtensionMethods(convert._JsonMapKeyIterable, ['elementAt', 'contains']);
  dart.defineExtensionAccessors(convert._JsonMapKeyIterable, ['length', 'iterator']);
  const _reviver = Symbol('_reviver');
  const _sink$ = Symbol('_sink');
  const _stringSink = Symbol('_stringSink');
  convert.StringConversionSinkMixin = class StringConversionSinkMixin extends core.Object {
    add(str) {
      core.String._check(str);
      this.addSlice(str, 0, str.length, false);
    }
    asUtf8Sink(allowMalformed) {
      return new convert._Utf8ConversionSink.new(this, allowMalformed);
    }
    asStringSink() {
      return new convert._StringConversionSinkAsStringSinkAdapter.new(this);
    }
  };
  (convert.StringConversionSinkMixin.new = function() {
  }).prototype = convert.StringConversionSinkMixin.prototype;
  dart.addTypeTests(convert.StringConversionSinkMixin);
  convert.StringConversionSinkMixin[dart.implements] = () => [convert.StringConversionSink];
  dart.setMethodSignature(convert.StringConversionSinkMixin, () => ({
    __proto__: dart.getMethods(convert.StringConversionSinkMixin.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    asUtf8Sink: dart.fnType(convert.ByteConversionSink, [core.bool]),
    asStringSink: dart.fnType(convert.ClosableStringSink, [])
  }));
  convert.StringConversionSinkBase = class StringConversionSinkBase extends convert.StringConversionSinkMixin {};
  (convert.StringConversionSinkBase.new = function() {
  }).prototype = convert.StringConversionSinkBase.prototype;
  dart.addTypeTests(convert.StringConversionSinkBase);
  const _is__StringSinkConversionSink_default = Symbol('_is__StringSinkConversionSink_default');
  convert._StringSinkConversionSink$ = dart.generic(TStringSink => {
    class _StringSinkConversionSink extends convert.StringConversionSinkBase {
      close() {}
      addSlice(str, start, end, isLast) {
        if (start !== 0 || end !== str.length) {
          for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
            this[_stringSink].writeCharCode(str[$codeUnitAt](i));
          }
        } else {
          this[_stringSink].write(str);
        }
        if (dart.test(isLast)) this.close();
      }
      add(str) {
        core.String._check(str);
        this[_stringSink].write(str);
      }
      asUtf8Sink(allowMalformed) {
        return new convert._Utf8StringSinkAdapter.new(this, this[_stringSink], allowMalformed);
      }
      asStringSink() {
        return convert.ClosableStringSink.fromStringSink(this[_stringSink], dart.bind(this, 'close'));
      }
    }
    (_StringSinkConversionSink.new = function(stringSink) {
      this[_stringSink] = stringSink;
    }).prototype = _StringSinkConversionSink.prototype;
    dart.addTypeTests(_StringSinkConversionSink);
    _StringSinkConversionSink.prototype[_is__StringSinkConversionSink_default] = true;
    dart.setMethodSignature(_StringSinkConversionSink, () => ({
      __proto__: dart.getMethods(_StringSinkConversionSink.__proto__),
      close: dart.fnType(dart.void, []),
      addSlice: dart.fnType(dart.void, [core.String, core.int, core.int, core.bool]),
      add: dart.fnType(dart.void, [core.Object]),
      asUtf8Sink: dart.fnType(convert.ByteConversionSink, [core.bool]),
      asStringSink: dart.fnType(convert.ClosableStringSink, [])
    }));
    dart.setFieldSignature(_StringSinkConversionSink, () => ({
      __proto__: dart.getFields(_StringSinkConversionSink.__proto__),
      [_stringSink]: dart.fieldType(TStringSink)
    }));
    return _StringSinkConversionSink;
  });
  convert._StringSinkConversionSink = convert._StringSinkConversionSink$();
  dart.addTypeTests(convert._StringSinkConversionSink, _is__StringSinkConversionSink_default);
  core.StringSink = class StringSink extends core.Object {};
  (core.StringSink.new = function() {
  }).prototype = core.StringSink.prototype;
  dart.addTypeTests(core.StringSink);
  convert._JsonDecoderSink = class _JsonDecoderSink extends convert._StringSinkConversionSink$(core.StringSink) {
    close() {
      super.close();
      let buffer = core.StringBuffer._check(this[_stringSink]);
      let accumulated = dart.toString(buffer);
      buffer.clear();
      let decoded = convert._parseJson(accumulated, this[_reviver]);
      this[_sink$].add(decoded);
      this[_sink$].close();
    }
  };
  (convert._JsonDecoderSink.new = function(reviver, sink) {
    this[_reviver] = reviver;
    this[_sink$] = sink;
    convert._JsonDecoderSink.__proto__.new.call(this, new core.StringBuffer.new(""));
  }).prototype = convert._JsonDecoderSink.prototype;
  dart.addTypeTests(convert._JsonDecoderSink);
  dart.setMethodSignature(convert._JsonDecoderSink, () => ({
    __proto__: dart.getMethods(convert._JsonDecoderSink.__proto__),
    close: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(convert._JsonDecoderSink, () => ({
    __proto__: dart.getFields(convert._JsonDecoderSink.__proto__),
    [_reviver]: dart.finalFieldType(ObjectAndObjectTodynamic()),
    [_sink$]: dart.finalFieldType(SinkOfObject())
  }));
  dart.defineLazy(convert, {
    /*convert.ascii*/get ascii() {
      return dart.const(new convert.AsciiCodec.new());
    },
    /*convert._asciiMask*/get _asciiMask() {
      return 127;
    }
  });
  const _allowInvalid = Symbol('_allowInvalid');
  let const$23;
  let const$24;
  let const$25;
  let const$26;
  let const$27;
  const _is_Codec_default = Symbol('_is_Codec_default');
  convert.Codec$ = dart.generic((S, T) => {
    let _InvertedCodecOfT$S = () => (_InvertedCodecOfT$S = dart.constFn(convert._InvertedCodec$(T, S)))();
    class Codec extends core.Object {
      encode(input) {
        S._check(input);
        return this.encoder.convert(input);
      }
      decode(encoded) {
        T._check(encoded);
        return this.decoder.convert(encoded);
      }
      fuse(R, other) {
        convert.Codec$(T, R)._check(other);
        return new (convert._FusedCodec$(S, T, R)).new(this, other);
      }
      get inverted() {
        return new (_InvertedCodecOfT$S()).new(this);
      }
    }
    (Codec.new = function() {
    }).prototype = Codec.prototype;
    dart.addTypeTests(Codec);
    Codec.prototype[_is_Codec_default] = true;
    dart.setMethodSignature(Codec, () => ({
      __proto__: dart.getMethods(Codec.__proto__),
      encode: dart.fnType(T, [core.Object]),
      decode: dart.fnType(S, [core.Object]),
      fuse: dart.gFnType(R => [convert.Codec$(S, R), [core.Object]])
    }));
    dart.setGetterSignature(Codec, () => ({
      __proto__: dart.getGetters(Codec.__proto__),
      inverted: convert.Codec$(T, S)
    }));
    return Codec;
  });
  convert.Codec = convert.Codec$();
  dart.addTypeTests(convert.Codec, _is_Codec_default);
  core.List$ = dart.generic(E => {
    let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
    let EfficientLengthIterableOfE = () => (EfficientLengthIterableOfE = dart.constFn(_internal.EfficientLengthIterable$(E)))();
    class List extends core.Object {
      static new(_length) {
        let list = null;
        if (_length === void 0) {
          list = [];
        } else {
          let length = _length;
          if (_length == null || length < 0) {
            dart.throw(new core.ArgumentError.new("Length must be a non-negative integer: " + dart.str(_length)));
          }
          list = new Array(length);
          list.fill(null);
          _interceptors.JSArray.markFixedList(list);
        }
        return JSArrayOfE().of(list);
      }
      static filled(length, fill, opts) {
        if (length == null) dart.argumentError(length);
        let growable = opts && 'growable' in opts ? opts.growable : false;
        let list = JSArrayOfE().of(new Array(length));
        list.fill(fill);
        if (!dart.test(growable)) _interceptors.JSArray.markFixedList(list);
        return list;
      }
      static from(elements, opts) {
        let growable = opts && 'growable' in opts ? opts.growable : true;
        let list = JSArrayOfE().of([]);
        if (IterableOfE().is(elements)) {
          for (let e of elements) {
            list[$add](e);
          }
        } else {
          for (let e of elements) {
            list[$add](E.as(e));
          }
        }
        if (!dart.test(growable)) _interceptors.JSArray.markFixedList(list);
        return list;
      }
      static of(elements, opts) {
        let growable = opts && 'growable' in opts ? opts.growable : true;
        return ListOfE().from(elements, {growable: growable});
      }
      static generate(length, generator, opts) {
        let growable = opts && 'growable' in opts ? opts.growable : true;
        let result = null;
        if (dart.test(growable)) {
          result = JSArrayOfE().of([]);
          result[$length] = length;
        } else {
          result = ListOfE().new(length);
        }
        for (let i = 0; i < dart.notNull(length); i++) {
          result[$_set](i, generator(i));
        }
        return result;
      }
      static unmodifiable(elements) {
        let list = ListOfE().from(elements);
        _interceptors.JSArray.markUnmodifiableList(list);
        return list;
      }
      static castFrom(S, T, source) {
        return new (_internal.CastList$(S, T)).new(source);
      }
      static copyRange(T, target, at, source, start, end) {
        if (start === void 0) start = null;
        if (end === void 0) end = null;
        let t = start;
        t == null ? start = 0 : t;
        end = core.RangeError.checkValidRange(start, end, source[$length]);
        let length = dart.notNull(end) - dart.notNull(start);
        if (dart.notNull(target[$length]) < dart.notNull(at) + length) {
          dart.throw(new core.ArgumentError.value(target, "target", "Not big enough to hold " + dart.str(length) + " elements at position " + dart.str(at)));
        }
        if (!(source == target) || dart.notNull(start) >= dart.notNull(at)) {
          for (let i = 0; i < length; i++) {
            target[$_set](dart.notNull(at) + i, source[$_get](dart.notNull(start) + i));
          }
        } else {
          for (let i = length; --i >= 0;) {
            target[$_set](dart.notNull(at) + i, source[$_get](dart.notNull(start) + i));
          }
        }
      }
      static writeIterable(T, target, at, source) {
        core.RangeError.checkValueInInterval(at, 0, target[$length], "at");
        let index = at;
        let targetLength = target[$length];
        for (let element of source) {
          if (index == targetLength) {
            dart.throw(new core.IndexError.new(targetLength, target));
          }
          target[$_set](index, element);
          index = dart.notNull(index) + 1;
        }
      }
    }
    (List[dart.mixinNew] = function() {
    }).prototype = List.prototype;
    dart.addTypeTests(List);
    List.prototype[dart.isList] = true;
    List[dart.implements] = () => [EfficientLengthIterableOfE()];
    return List;
  });
  core.List = core.List$();
  dart.addTypeTests(core.List, dart.isList);
  convert.Encoding = class Encoding extends convert.Codec$(core.String, core.List$(core.int)) {
    decodeStream(byteStream) {
      return FutureOfString()._check(FutureOfStringBuffer()._check(StreamOfString()._check(byteStream.transform(core.String, this.decoder)).fold(core.StringBuffer, new core.StringBuffer.new(), dart.fn((buffer, string) => {
        buffer.write(string);
        return buffer;
      }, StringBufferAndStringToStringBuffer()))).then(core.String, dart.fn(buffer => dart.toString(buffer), StringBufferToString())));
    }
    static getByName(name) {
      if (name == null) return null;
      name = name[$toLowerCase]();
      return convert.Encoding._nameToEncoding[$_get](name);
    }
  };
  (convert.Encoding.new = function() {
    convert.Encoding.__proto__.new.call(this);
  }).prototype = convert.Encoding.prototype;
  dart.addTypeTests(convert.Encoding);
  dart.setMethodSignature(convert.Encoding, () => ({
    __proto__: dart.getMethods(convert.Encoding.__proto__),
    decodeStream: dart.fnType(async.Future$(core.String), [async.Stream$(core.List$(core.int))])
  }));
  dart.defineLazy(convert.Encoding, {
    /*convert.Encoding._nameToEncoding*/get _nameToEncoding() {
      return new (IdentityMapOfString$Encoding()).from(["iso_8859-1:1987", convert.latin1, "iso-ir-100", convert.latin1, "iso_8859-1", convert.latin1, "iso-8859-1", convert.latin1, "latin1", convert.latin1, "l1", convert.latin1, "ibm819", convert.latin1, "cp819", convert.latin1, "csisolatin1", convert.latin1, "iso-ir-6", convert.ascii, "ansi_x3.4-1968", convert.ascii, "ansi_x3.4-1986", convert.ascii, "iso_646.irv:1991", convert.ascii, "iso646-us", convert.ascii, "us-ascii", convert.ascii, "us", convert.ascii, "ibm367", convert.ascii, "cp367", convert.ascii, "csascii", convert.ascii, "ascii", convert.ascii, "csutf8", convert.utf8, "utf-8", convert.utf8]);
    }
  });
  convert.AsciiCodec = class AsciiCodec extends convert.Encoding {
    get name() {
      return "us-ascii";
    }
    encode(source) {
      core.String._check(source);
      return this.encoder.convert(source);
    }
    decode(bytes, opts) {
      ListOfint()._check(bytes);
      let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : null;
      let t = allowInvalid;
      t == null ? allowInvalid = this[_allowInvalid] : t;
      if (dart.test(allowInvalid)) {
        return (const$23 || (const$23 = dart.const(new convert.AsciiDecoder.new({allowInvalid: true})))).convert(bytes);
      } else {
        return (const$24 || (const$24 = dart.const(new convert.AsciiDecoder.new({allowInvalid: false})))).convert(bytes);
      }
    }
    get encoder() {
      return const$25 || (const$25 = dart.const(new convert.AsciiEncoder.new()));
    }
    get decoder() {
      return dart.test(this[_allowInvalid]) ? const$26 || (const$26 = dart.const(new convert.AsciiDecoder.new({allowInvalid: true}))) : const$27 || (const$27 = dart.const(new convert.AsciiDecoder.new({allowInvalid: false})));
    }
  };
  (convert.AsciiCodec.new = function(opts) {
    let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : false;
    this[_allowInvalid] = allowInvalid;
    convert.AsciiCodec.__proto__.new.call(this);
  }).prototype = convert.AsciiCodec.prototype;
  dart.addTypeTests(convert.AsciiCodec);
  dart.setMethodSignature(convert.AsciiCodec, () => ({
    __proto__: dart.getMethods(convert.AsciiCodec.__proto__),
    encode: dart.fnType(typed_data.Uint8List, [core.Object]),
    decode: dart.fnType(core.String, [core.Object], {allowInvalid: core.bool})
  }));
  dart.setGetterSignature(convert.AsciiCodec, () => ({
    __proto__: dart.getGetters(convert.AsciiCodec.__proto__),
    name: core.String,
    encoder: convert.AsciiEncoder,
    decoder: convert.AsciiDecoder
  }));
  dart.setFieldSignature(convert.AsciiCodec, () => ({
    __proto__: dart.getFields(convert.AsciiCodec.__proto__),
    [_allowInvalid]: dart.finalFieldType(core.bool)
  }));
  const _subsetMask = Symbol('_subsetMask');
  convert._UnicodeSubsetEncoder = class _UnicodeSubsetEncoder extends convert.Converter$(core.String, core.List$(core.int)) {
    convert(string, start, end) {
      core.String._check(string);
      if (start === void 0) start = 0;
      if (end === void 0) end = null;
      let stringLength = string.length;
      end = core.RangeError.checkValidRange(start, end, stringLength);
      let length = dart.notNull(end) - dart.notNull(start);
      let result = typed_data.Uint8List.new(length);
      for (let i = 0; i < length; i++) {
        let codeUnit = string[$codeUnitAt](dart.notNull(start) + i);
        if ((codeUnit & ~dart.notNull(this[_subsetMask])) !== 0) {
          dart.throw(new core.ArgumentError.value(string, "string", "Contains invalid characters."));
        }
        result[$_set](i, codeUnit);
      }
      return result;
    }
    startChunkedConversion(sink) {
      SinkOfListOfint()._check(sink);
      return new convert._UnicodeSubsetEncoderSink.new(this[_subsetMask], convert.ByteConversionSink.is(sink) ? sink : convert.ByteConversionSink.from(sink));
    }
    bind(stream) {
      StreamOfString()._check(stream);
      return super.bind(stream);
    }
  };
  (convert._UnicodeSubsetEncoder.new = function(subsetMask) {
    this[_subsetMask] = subsetMask;
    convert._UnicodeSubsetEncoder.__proto__.new.call(this);
  }).prototype = convert._UnicodeSubsetEncoder.prototype;
  dart.addTypeTests(convert._UnicodeSubsetEncoder);
  dart.setMethodSignature(convert._UnicodeSubsetEncoder, () => ({
    __proto__: dart.getMethods(convert._UnicodeSubsetEncoder.__proto__),
    convert: dart.fnType(typed_data.Uint8List, [core.Object], [core.int, core.int]),
    startChunkedConversion: dart.fnType(convert.StringConversionSink, [core.Object]),
    bind: dart.fnType(async.Stream$(core.List$(core.int)), [core.Object])
  }));
  dart.setFieldSignature(convert._UnicodeSubsetEncoder, () => ({
    __proto__: dart.getFields(convert._UnicodeSubsetEncoder.__proto__),
    [_subsetMask]: dart.finalFieldType(core.int)
  }));
  convert.AsciiEncoder = class AsciiEncoder extends convert._UnicodeSubsetEncoder {};
  (convert.AsciiEncoder.new = function() {
    convert.AsciiEncoder.__proto__.new.call(this, 127);
  }).prototype = convert.AsciiEncoder.prototype;
  dart.addTypeTests(convert.AsciiEncoder);
  convert._UnicodeSubsetEncoderSink = class _UnicodeSubsetEncoderSink extends convert.StringConversionSinkBase {
    close() {
      this[_sink$].close();
    }
    addSlice(source, start, end, isLast) {
      core.RangeError.checkValidRange(start, end, source.length);
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let codeUnit = source[$codeUnitAt](i);
        if ((codeUnit & ~dart.notNull(this[_subsetMask])) !== 0) {
          dart.throw(new core.ArgumentError.new("Source contains invalid character with code point: " + dart.str(codeUnit) + "."));
        }
      }
      this[_sink$].add(source[$codeUnits][$sublist](start, end));
      if (dart.test(isLast)) {
        this.close();
      }
    }
  };
  (convert._UnicodeSubsetEncoderSink.new = function(subsetMask, sink) {
    this[_subsetMask] = subsetMask;
    this[_sink$] = sink;
  }).prototype = convert._UnicodeSubsetEncoderSink.prototype;
  dart.addTypeTests(convert._UnicodeSubsetEncoderSink);
  dart.setMethodSignature(convert._UnicodeSubsetEncoderSink, () => ({
    __proto__: dart.getMethods(convert._UnicodeSubsetEncoderSink.__proto__),
    close: dart.fnType(dart.void, []),
    addSlice: dart.fnType(dart.void, [core.String, core.int, core.int, core.bool])
  }));
  dart.setFieldSignature(convert._UnicodeSubsetEncoderSink, () => ({
    __proto__: dart.getFields(convert._UnicodeSubsetEncoderSink.__proto__),
    [_sink$]: dart.finalFieldType(convert.ByteConversionSink),
    [_subsetMask]: dart.finalFieldType(core.int)
  }));
  const _convertInvalid = Symbol('_convertInvalid');
  convert._UnicodeSubsetDecoder = class _UnicodeSubsetDecoder extends convert.Converter$(core.List$(core.int), core.String) {
    convert(bytes, start, end) {
      ListOfint()._check(bytes);
      if (start === void 0) start = 0;
      if (end === void 0) end = null;
      let byteCount = bytes[$length];
      core.RangeError.checkValidRange(start, end, byteCount);
      let t = end;
      t == null ? end = byteCount : t;
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let byte = bytes[$_get](i);
        if ((dart.notNull(byte) & ~dart.notNull(this[_subsetMask])) !== 0) {
          if (!dart.test(this[_allowInvalid])) {
            dart.throw(new core.FormatException.new("Invalid value in input: " + dart.str(byte)));
          }
          return this[_convertInvalid](bytes, start, end);
        }
      }
      return core.String.fromCharCodes(bytes, start, end);
    }
    [_convertInvalid](bytes, start, end) {
      let buffer = new core.StringBuffer.new();
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let value = bytes[$_get](i);
        if ((dart.notNull(value) & ~dart.notNull(this[_subsetMask])) !== 0) value = 65533;
        buffer.writeCharCode(value);
      }
      return buffer.toString();
    }
    bind(stream) {
      StreamOfListOfint()._check(stream);
      return super.bind(stream);
    }
  };
  (convert._UnicodeSubsetDecoder.new = function(allowInvalid, subsetMask) {
    this[_allowInvalid] = allowInvalid;
    this[_subsetMask] = subsetMask;
    convert._UnicodeSubsetDecoder.__proto__.new.call(this);
  }).prototype = convert._UnicodeSubsetDecoder.prototype;
  dart.addTypeTests(convert._UnicodeSubsetDecoder);
  dart.setMethodSignature(convert._UnicodeSubsetDecoder, () => ({
    __proto__: dart.getMethods(convert._UnicodeSubsetDecoder.__proto__),
    convert: dart.fnType(core.String, [core.Object], [core.int, core.int]),
    [_convertInvalid]: dart.fnType(core.String, [core.List$(core.int), core.int, core.int]),
    bind: dart.fnType(async.Stream$(core.String), [core.Object])
  }));
  dart.setFieldSignature(convert._UnicodeSubsetDecoder, () => ({
    __proto__: dart.getFields(convert._UnicodeSubsetDecoder.__proto__),
    [_allowInvalid]: dart.finalFieldType(core.bool),
    [_subsetMask]: dart.finalFieldType(core.int)
  }));
  convert.AsciiDecoder = class AsciiDecoder extends convert._UnicodeSubsetDecoder {
    startChunkedConversion(sink) {
      SinkOfString()._check(sink);
      let stringSink = null;
      if (convert.StringConversionSink.is(sink)) {
        stringSink = sink;
      } else {
        stringSink = convert.StringConversionSink.from(sink);
      }
      if (dart.test(this[_allowInvalid])) {
        return new convert._ErrorHandlingAsciiDecoderSink.new(stringSink.asUtf8Sink(false));
      } else {
        return new convert._SimpleAsciiDecoderSink.new(stringSink);
      }
    }
  };
  (convert.AsciiDecoder.new = function(opts) {
    let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : false;
    convert.AsciiDecoder.__proto__.new.call(this, allowInvalid, 127);
  }).prototype = convert.AsciiDecoder.prototype;
  dart.addTypeTests(convert.AsciiDecoder);
  dart.setMethodSignature(convert.AsciiDecoder, () => ({
    __proto__: dart.getMethods(convert.AsciiDecoder.__proto__),
    startChunkedConversion: dart.fnType(convert.ByteConversionSink, [core.Object])
  }));
  const _utf8Sink = Symbol('_utf8Sink');
  let const$28;
  const _is_ChunkedConversionSink_default = Symbol('_is_ChunkedConversionSink_default');
  convert.ChunkedConversionSink$ = dart.generic(T => {
    let _SimpleCallbackSinkOfT = () => (_SimpleCallbackSinkOfT = dart.constFn(convert._SimpleCallbackSink$(T)))();
    let SinkOfT = () => (SinkOfT = dart.constFn(core.Sink$(T)))();
    class ChunkedConversionSink extends core.Object {
      static withCallback(callback) {
        return new (_SimpleCallbackSinkOfT()).new(callback);
      }
    }
    (ChunkedConversionSink.new = function() {
    }).prototype = ChunkedConversionSink.prototype;
    dart.addTypeTests(ChunkedConversionSink);
    ChunkedConversionSink.prototype[_is_ChunkedConversionSink_default] = true;
    ChunkedConversionSink[dart.implements] = () => [SinkOfT()];
    return ChunkedConversionSink;
  });
  convert.ChunkedConversionSink = convert.ChunkedConversionSink$();
  dart.addTypeTests(convert.ChunkedConversionSink, _is_ChunkedConversionSink_default);
  convert.ByteConversionSink = class ByteConversionSink extends convert.ChunkedConversionSink$(core.List$(core.int)) {
    static withCallback(callback) {
      return new convert._ByteCallbackSink.new(callback);
    }
    static from(sink) {
      return new convert._ByteAdapterSink.new(sink);
    }
  };
  (convert.ByteConversionSink.new = function() {
    convert.ByteConversionSink.__proto__.new.call(this);
  }).prototype = convert.ByteConversionSink.prototype;
  dart.addTypeTests(convert.ByteConversionSink);
  convert.ByteConversionSinkBase = class ByteConversionSinkBase extends convert.ByteConversionSink {
    addSlice(chunk, start, end, isLast) {
      this.add(chunk[$sublist](start, end));
      if (dart.test(isLast)) this.close();
    }
  };
  (convert.ByteConversionSinkBase.new = function() {
    convert.ByteConversionSinkBase.__proto__.new.call(this);
  }).prototype = convert.ByteConversionSinkBase.prototype;
  dart.addTypeTests(convert.ByteConversionSinkBase);
  dart.setMethodSignature(convert.ByteConversionSinkBase, () => ({
    __proto__: dart.getMethods(convert.ByteConversionSinkBase.__proto__),
    addSlice: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool])
  }));
  convert._ErrorHandlingAsciiDecoderSink = class _ErrorHandlingAsciiDecoderSink extends convert.ByteConversionSinkBase {
    close() {
      this[_utf8Sink].close();
    }
    add(source) {
      ListOfint()._check(source);
      this.addSlice(source, 0, source[$length], false);
    }
    addSlice(source, start, end, isLast) {
      core.RangeError.checkValidRange(start, end, source[$length]);
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        if ((dart.notNull(source[$_get](i)) & ~127) !== 0) {
          if (dart.notNull(i) > dart.notNull(start)) this[_utf8Sink].addSlice(source, start, i, false);
          this[_utf8Sink].add(const$28 || (const$28 = dart.constList([239, 191, 189], core.int)));
          start = dart.notNull(i) + 1;
        }
      }
      if (dart.notNull(start) < dart.notNull(end)) {
        this[_utf8Sink].addSlice(source, start, end, isLast);
      } else if (dart.test(isLast)) {
        this.close();
      }
    }
  };
  (convert._ErrorHandlingAsciiDecoderSink.new = function(utf8Sink) {
    this[_utf8Sink] = utf8Sink;
    convert._ErrorHandlingAsciiDecoderSink.__proto__.new.call(this);
  }).prototype = convert._ErrorHandlingAsciiDecoderSink.prototype;
  dart.addTypeTests(convert._ErrorHandlingAsciiDecoderSink);
  dart.setMethodSignature(convert._ErrorHandlingAsciiDecoderSink, () => ({
    __proto__: dart.getMethods(convert._ErrorHandlingAsciiDecoderSink.__proto__),
    close: dart.fnType(dart.void, []),
    add: dart.fnType(dart.void, [core.Object])
  }));
  dart.setFieldSignature(convert._ErrorHandlingAsciiDecoderSink, () => ({
    __proto__: dart.getFields(convert._ErrorHandlingAsciiDecoderSink.__proto__),
    [_utf8Sink]: dart.fieldType(convert.ByteConversionSink)
  }));
  convert._SimpleAsciiDecoderSink = class _SimpleAsciiDecoderSink extends convert.ByteConversionSinkBase {
    close() {
      this[_sink$].close();
    }
    add(source) {
      ListOfint()._check(source);
      for (let i = 0; i < dart.notNull(source[$length]); i++) {
        if ((dart.notNull(source[$_get](i)) & ~127) !== 0) {
          dart.throw(new core.FormatException.new("Source contains non-ASCII bytes."));
        }
      }
      this[_sink$].add(core.String.fromCharCodes(source));
    }
    addSlice(source, start, end, isLast) {
      let length = source[$length];
      core.RangeError.checkValidRange(start, end, length);
      if (dart.notNull(start) < dart.notNull(end)) {
        if (start !== 0 || end != length) {
          source = source[$sublist](start, end);
        }
        this.add(source);
      }
      if (dart.test(isLast)) this.close();
    }
  };
  (convert._SimpleAsciiDecoderSink.new = function(sink) {
    this[_sink$] = sink;
    convert._SimpleAsciiDecoderSink.__proto__.new.call(this);
  }).prototype = convert._SimpleAsciiDecoderSink.prototype;
  dart.addTypeTests(convert._SimpleAsciiDecoderSink);
  dart.setMethodSignature(convert._SimpleAsciiDecoderSink, () => ({
    __proto__: dart.getMethods(convert._SimpleAsciiDecoderSink.__proto__),
    close: dart.fnType(dart.void, []),
    add: dart.fnType(dart.void, [core.Object])
  }));
  dart.setFieldSignature(convert._SimpleAsciiDecoderSink, () => ({
    __proto__: dart.getFields(convert._SimpleAsciiDecoderSink.__proto__),
    [_sink$]: dart.fieldType(core.Sink)
  }));
  dart.defineLazy(convert, {
    /*convert.base64*/get base64() {
      return dart.const(new convert.Base64Codec.new());
    },
    /*convert.base64Url*/get base64Url() {
      return dart.const(new convert.Base64Codec.urlSafe());
    }
  });
  convert.base64Encode = function(bytes) {
    return convert.base64.encode(bytes);
  };
  convert.base64UrlEncode = function(bytes) {
    return convert.base64Url.encode(bytes);
  };
  convert.base64Decode = function(source) {
    return convert.base64.decode(source);
  };
  dart.defineLazy(convert, {
    /*convert._paddingChar*/get _paddingChar() {
      return 61;
    }
  });
  const _encoder = Symbol('_encoder');
  let const$29;
  let const$30;
  let const$31;
  convert.Base64Codec = class Base64Codec extends convert.Codec$(core.List$(core.int), core.String) {
    get encoder() {
      return this[_encoder];
    }
    get decoder() {
      return const$31 || (const$31 = dart.const(new convert.Base64Decoder.new()));
    }
    decode(encoded) {
      core.String._check(encoded);
      return this.decoder.convert(encoded);
    }
    normalize(source, start, end) {
      if (start === void 0) start = 0;
      if (end === void 0) end = null;
      end = core.RangeError.checkValidRange(start, end, source.length);
      let percent = 37;
      let equals = 61;
      let buffer = null;
      let sliceStart = start;
      let alphabet = convert._Base64Encoder._base64Alphabet;
      let inverseAlphabet = convert._Base64Decoder._inverseAlphabet;
      let firstPadding = -1;
      let firstPaddingSourceIndex = -1;
      let paddingCount = 0;
      for (let i = start; dart.notNull(i) < dart.notNull(end);) {
        let sliceEnd = i;
        let char = source[$codeUnitAt]((() => {
          let x = i;
          i = dart.notNull(x) + 1;
          return x;
        })());
        let originalChar = char;
        if (char === percent) {
          if (dart.notNull(i) + 2 <= dart.notNull(end)) {
            char = _internal.parseHexByte(source, i);
            i = dart.notNull(i) + 2;
            if (char === percent) char = -1;
          } else {
            char = -1;
          }
        }
        if (0 <= dart.notNull(char) && dart.notNull(char) <= 127) {
          let value = inverseAlphabet[$_get](char);
          if (dart.notNull(value) >= 0) {
            char = alphabet[$codeUnitAt](value);
            if (char == originalChar) continue;
          } else if (value === convert._Base64Decoder._padding) {
            if (firstPadding < 0) {
              firstPadding = (() => {
                let l = buffer == null ? null : buffer.length;
                return l != null ? l : 0;
              })() + (dart.notNull(sliceEnd) - dart.notNull(sliceStart));
              firstPaddingSourceIndex = sliceEnd;
            }
            paddingCount++;
            if (originalChar === equals) continue;
          }
          if (value !== convert._Base64Decoder._invalid) {
            let t = buffer;
            t == null ? buffer = new core.StringBuffer.new() : t;
            buffer.write(source[$substring](sliceStart, sliceEnd));
            buffer.writeCharCode(char);
            sliceStart = i;
            continue;
          }
        }
        dart.throw(new core.FormatException.new("Invalid base64 data", source, sliceEnd));
      }
      if (buffer != null) {
        buffer.write(source[$substring](sliceStart, end));
        if (firstPadding >= 0) {
          convert.Base64Codec._checkPadding(source, firstPaddingSourceIndex, end, firstPadding, paddingCount, buffer.length);
        } else {
          let endLength = (dart.notNull(buffer.length) - 1)[$modulo](4) + 1;
          if (endLength === 1) {
            dart.throw(new core.FormatException.new("Invalid base64 encoding length ", source, end));
          }
          while (endLength < 4) {
            buffer.write("=");
            endLength++;
          }
        }
        return source[$replaceRange](start, end, dart.toString(buffer));
      }
      let length = dart.notNull(end) - dart.notNull(start);
      if (firstPadding >= 0) {
        convert.Base64Codec._checkPadding(source, firstPaddingSourceIndex, end, firstPadding, paddingCount, length);
      } else {
        let endLength = length[$modulo](4);
        if (endLength === 1) {
          dart.throw(new core.FormatException.new("Invalid base64 encoding length ", source, end));
        }
        if (endLength > 1) {
          source = source[$replaceRange](end, end, endLength === 2 ? "==" : "=");
        }
      }
      return source;
    }
    static _checkPadding(source, sourceIndex, sourceEnd, firstPadding, paddingCount, length) {
      if (length[$modulo](4) !== 0) {
        dart.throw(new core.FormatException.new("Invalid base64 padding, padded length must be multiple of four, " + ("is " + dart.str(length)), source, sourceEnd));
      }
      if (dart.notNull(firstPadding) + dart.notNull(paddingCount) !== length) {
        dart.throw(new core.FormatException.new("Invalid base64 padding, '=' not at the end", source, sourceIndex));
      }
      if (dart.notNull(paddingCount) > 2) {
        dart.throw(new core.FormatException.new("Invalid base64 padding, more than two '=' characters", source, sourceIndex));
      }
    }
  };
  (convert.Base64Codec.new = function() {
    this[_encoder] = const$29 || (const$29 = dart.const(new convert.Base64Encoder.new()));
    convert.Base64Codec.__proto__.new.call(this);
  }).prototype = convert.Base64Codec.prototype;
  (convert.Base64Codec.urlSafe = function() {
    this[_encoder] = const$30 || (const$30 = dart.const(new convert.Base64Encoder.urlSafe()));
    convert.Base64Codec.__proto__.new.call(this);
  }).prototype = convert.Base64Codec.prototype;
  dart.addTypeTests(convert.Base64Codec);
  dart.setMethodSignature(convert.Base64Codec, () => ({
    __proto__: dart.getMethods(convert.Base64Codec.__proto__),
    decode: dart.fnType(typed_data.Uint8List, [core.Object]),
    normalize: dart.fnType(core.String, [core.String], [core.int, core.int])
  }));
  dart.setGetterSignature(convert.Base64Codec, () => ({
    __proto__: dart.getGetters(convert.Base64Codec.__proto__),
    encoder: convert.Base64Encoder,
    decoder: convert.Base64Decoder
  }));
  dart.setFieldSignature(convert.Base64Codec, () => ({
    __proto__: dart.getFields(convert.Base64Codec.__proto__),
    [_encoder]: dart.finalFieldType(convert.Base64Encoder)
  }));
  const _urlSafe = Symbol('_urlSafe');
  convert.Base64Encoder = class Base64Encoder extends convert.Converter$(core.List$(core.int), core.String) {
    convert(input) {
      ListOfint()._check(input);
      if (dart.test(input[$isEmpty])) return "";
      let encoder = new convert._Base64Encoder.new(this[_urlSafe]);
      let buffer = encoder.encode(input, 0, input[$length], true);
      return core.String.fromCharCodes(buffer);
    }
    startChunkedConversion(sink) {
      SinkOfString()._check(sink);
      if (convert.StringConversionSink.is(sink)) {
        return new convert._Utf8Base64EncoderSink.new(sink.asUtf8Sink(false), this[_urlSafe]);
      }
      return new convert._AsciiBase64EncoderSink.new(sink, this[_urlSafe]);
    }
  };
  (convert.Base64Encoder.new = function() {
    this[_urlSafe] = false;
    convert.Base64Encoder.__proto__.new.call(this);
  }).prototype = convert.Base64Encoder.prototype;
  (convert.Base64Encoder.urlSafe = function() {
    this[_urlSafe] = true;
    convert.Base64Encoder.__proto__.new.call(this);
  }).prototype = convert.Base64Encoder.prototype;
  dart.addTypeTests(convert.Base64Encoder);
  dart.setMethodSignature(convert.Base64Encoder, () => ({
    __proto__: dart.getMethods(convert.Base64Encoder.__proto__),
    convert: dart.fnType(core.String, [core.Object]),
    startChunkedConversion: dart.fnType(convert.ByteConversionSink, [core.Object])
  }));
  dart.setFieldSignature(convert.Base64Encoder, () => ({
    __proto__: dart.getFields(convert.Base64Encoder.__proto__),
    [_urlSafe]: dart.finalFieldType(core.bool)
  }));
  const _alphabet = Symbol('_alphabet');
  const _state$0 = Symbol('_state');
  convert._Base64Encoder = class _Base64Encoder extends core.Object {
    static _encodeState(count, bits) {
      if (!(dart.notNull(count) <= 3)) dart.assertFailed();
      return (dart.notNull(bits) << 2 | dart.notNull(count)) >>> 0;
    }
    static _stateBits(state) {
      return state[$rightShift](2);
    }
    static _stateCount(state) {
      return dart.notNull(state) & 3;
    }
    createBuffer(bufferLength) {
      return typed_data.Uint8List.new(bufferLength);
    }
    encode(bytes, start, end, isLast) {
      if (!(0 <= dart.notNull(start))) dart.assertFailed();
      if (!(dart.notNull(start) <= dart.notNull(end))) dart.assertFailed();
      if (!(bytes == null || dart.notNull(end) <= dart.notNull(bytes[$length]))) dart.assertFailed();
      let length = dart.notNull(end) - dart.notNull(start);
      let count = convert._Base64Encoder._stateCount(this[_state$0]);
      let byteCount = dart.notNull(count) + length;
      let fullChunks = (byteCount / 3)[$truncate]();
      let partialChunkLength = byteCount - fullChunks * 3;
      let bufferLength = fullChunks * 4;
      if (dart.test(isLast) && partialChunkLength > 0) {
        bufferLength = bufferLength + 4;
      }
      let output = this.createBuffer(bufferLength);
      this[_state$0] = convert._Base64Encoder.encodeChunk(this[_alphabet], bytes, start, end, isLast, output, 0, this[_state$0]);
      if (bufferLength > 0) return output;
      return null;
    }
    static encodeChunk(alphabet, bytes, start, end, isLast, output, outputIndex, state) {
      let bits = convert._Base64Encoder._stateBits(state);
      let expectedChars = 3 - dart.notNull(convert._Base64Encoder._stateCount(state));
      let byteOr = 0;
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let byte = bytes[$_get](i);
        byteOr = (byteOr | dart.notNull(byte)) >>> 0;
        bits = (dart.notNull(bits) << 8 | dart.notNull(byte)) & 16777215;
        expectedChars--;
        if (expectedChars === 0) {
          output[$_set]((() => {
            let x = outputIndex;
            outputIndex = dart.notNull(x) + 1;
            return x;
          })(), alphabet[$codeUnitAt](dart.notNull(bits) >> 18 & 63));
          output[$_set]((() => {
            let x = outputIndex;
            outputIndex = dart.notNull(x) + 1;
            return x;
          })(), alphabet[$codeUnitAt](dart.notNull(bits) >> 12 & 63));
          output[$_set]((() => {
            let x = outputIndex;
            outputIndex = dart.notNull(x) + 1;
            return x;
          })(), alphabet[$codeUnitAt](dart.notNull(bits) >> 6 & 63));
          output[$_set]((() => {
            let x = outputIndex;
            outputIndex = dart.notNull(x) + 1;
            return x;
          })(), alphabet[$codeUnitAt](dart.notNull(bits) & 63));
          expectedChars = 3;
          bits = 0;
        }
      }
      if (byteOr >= 0 && byteOr <= 255) {
        if (dart.test(isLast) && expectedChars < 3) {
          convert._Base64Encoder.writeFinalChunk(alphabet, output, outputIndex, 3 - expectedChars, bits);
          return 0;
        }
        return convert._Base64Encoder._encodeState(3 - expectedChars, bits);
      }
      let i = start;
      while (dart.notNull(i) < dart.notNull(end)) {
        let byte = bytes[$_get](i);
        if (dart.notNull(byte) < 0 || dart.notNull(byte) > 255) break;
        i = dart.notNull(i) + 1;
      }
      dart.throw(new core.ArgumentError.value(bytes, "Not a byte value at index " + dart.str(i) + ": 0x" + bytes[$_get](i)[$toRadixString](16)));
    }
    static writeFinalChunk(alphabet, output, outputIndex, count, bits) {
      if (!(dart.notNull(count) > 0)) dart.assertFailed();
      if (count === 1) {
        output[$_set]((() => {
          let x = outputIndex;
          outputIndex = dart.notNull(x) + 1;
          return x;
        })(), alphabet[$codeUnitAt](dart.notNull(bits) >> 2 & 63));
        output[$_set]((() => {
          let x = outputIndex;
          outputIndex = dart.notNull(x) + 1;
          return x;
        })(), alphabet[$codeUnitAt](dart.notNull(bits) << 4 & 63));
        output[$_set]((() => {
          let x = outputIndex;
          outputIndex = dart.notNull(x) + 1;
          return x;
        })(), 61);
        output[$_set]((() => {
          let x = outputIndex;
          outputIndex = dart.notNull(x) + 1;
          return x;
        })(), 61);
      } else {
        if (!(count === 2)) dart.assertFailed();
        output[$_set]((() => {
          let x = outputIndex;
          outputIndex = dart.notNull(x) + 1;
          return x;
        })(), alphabet[$codeUnitAt](dart.notNull(bits) >> 10 & 63));
        output[$_set]((() => {
          let x = outputIndex;
          outputIndex = dart.notNull(x) + 1;
          return x;
        })(), alphabet[$codeUnitAt](dart.notNull(bits) >> 4 & 63));
        output[$_set]((() => {
          let x = outputIndex;
          outputIndex = dart.notNull(x) + 1;
          return x;
        })(), alphabet[$codeUnitAt](dart.notNull(bits) << 2 & 63));
        output[$_set]((() => {
          let x = outputIndex;
          outputIndex = dart.notNull(x) + 1;
          return x;
        })(), 61);
      }
    }
  };
  (convert._Base64Encoder.new = function(urlSafe) {
    this[_state$0] = 0;
    this[_alphabet] = dart.test(urlSafe) ? "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  }).prototype = convert._Base64Encoder.prototype;
  dart.addTypeTests(convert._Base64Encoder);
  dart.setMethodSignature(convert._Base64Encoder, () => ({
    __proto__: dart.getMethods(convert._Base64Encoder.__proto__),
    createBuffer: dart.fnType(typed_data.Uint8List, [core.int]),
    encode: dart.fnType(typed_data.Uint8List, [core.List$(core.int), core.int, core.int, core.bool])
  }));
  dart.setFieldSignature(convert._Base64Encoder, () => ({
    __proto__: dart.getFields(convert._Base64Encoder.__proto__),
    [_state$0]: dart.fieldType(core.int),
    [_alphabet]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(convert._Base64Encoder, {
    /*convert._Base64Encoder._base64Alphabet*/get _base64Alphabet() {
      return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    },
    /*convert._Base64Encoder._base64UrlAlphabet*/get _base64UrlAlphabet() {
      return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
    },
    /*convert._Base64Encoder._valueShift*/get _valueShift() {
      return 2;
    },
    /*convert._Base64Encoder._countMask*/get _countMask() {
      return 3;
    },
    /*convert._Base64Encoder._sixBitMask*/get _sixBitMask() {
      return 63;
    }
  });
  convert._BufferCachingBase64Encoder = class _BufferCachingBase64Encoder extends convert._Base64Encoder {
    createBuffer(bufferLength) {
      if (this.bufferCache == null || dart.notNull(this.bufferCache[$length]) < dart.notNull(bufferLength)) {
        this.bufferCache = typed_data.Uint8List.new(bufferLength);
      }
      return typed_data.Uint8List.view(this.bufferCache[$buffer], 0, bufferLength);
    }
  };
  (convert._BufferCachingBase64Encoder.new = function(urlSafe) {
    this.bufferCache = null;
    convert._BufferCachingBase64Encoder.__proto__.new.call(this, urlSafe);
  }).prototype = convert._BufferCachingBase64Encoder.prototype;
  dart.addTypeTests(convert._BufferCachingBase64Encoder);
  dart.setFieldSignature(convert._BufferCachingBase64Encoder, () => ({
    __proto__: dart.getFields(convert._BufferCachingBase64Encoder.__proto__),
    bufferCache: dart.fieldType(typed_data.Uint8List)
  }));
  const _add$0 = Symbol('_add');
  convert._Base64EncoderSink = class _Base64EncoderSink extends convert.ByteConversionSinkBase {
    add(source) {
      ListOfint()._check(source);
      this[_add$0](source, 0, source[$length], false);
    }
    close() {
      this[_add$0](null, 0, 0, true);
    }
    addSlice(source, start, end, isLast) {
      if (end == null) dart.throw(new core.ArgumentError.notNull("end"));
      core.RangeError.checkValidRange(start, end, source[$length]);
      this[_add$0](source, start, end, isLast);
    }
  };
  (convert._Base64EncoderSink.new = function() {
    convert._Base64EncoderSink.__proto__.new.call(this);
  }).prototype = convert._Base64EncoderSink.prototype;
  dart.addTypeTests(convert._Base64EncoderSink);
  dart.setMethodSignature(convert._Base64EncoderSink, () => ({
    __proto__: dart.getMethods(convert._Base64EncoderSink.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    close: dart.fnType(dart.void, [])
  }));
  convert._AsciiBase64EncoderSink = class _AsciiBase64EncoderSink extends convert._Base64EncoderSink {
    [_add$0](source, start, end, isLast) {
      let buffer = this[_encoder].encode(source, start, end, isLast);
      if (buffer != null) {
        let string = core.String.fromCharCodes(buffer);
        this[_sink$].add(string);
      }
      if (dart.test(isLast)) {
        this[_sink$].close();
      }
    }
  };
  (convert._AsciiBase64EncoderSink.new = function(sink, urlSafe) {
    this[_sink$] = sink;
    this[_encoder] = new convert._BufferCachingBase64Encoder.new(urlSafe);
    convert._AsciiBase64EncoderSink.__proto__.new.call(this);
  }).prototype = convert._AsciiBase64EncoderSink.prototype;
  dart.addTypeTests(convert._AsciiBase64EncoderSink);
  dart.setMethodSignature(convert._AsciiBase64EncoderSink, () => ({
    __proto__: dart.getMethods(convert._AsciiBase64EncoderSink.__proto__),
    [_add$0]: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool])
  }));
  dart.setFieldSignature(convert._AsciiBase64EncoderSink, () => ({
    __proto__: dart.getFields(convert._AsciiBase64EncoderSink.__proto__),
    [_sink$]: dart.finalFieldType(SinkOfString()),
    [_encoder]: dart.finalFieldType(convert._Base64Encoder)
  }));
  convert._Utf8Base64EncoderSink = class _Utf8Base64EncoderSink extends convert._Base64EncoderSink {
    [_add$0](source, start, end, isLast) {
      let buffer = this[_encoder].encode(source, start, end, isLast);
      if (buffer != null) {
        this[_sink$].addSlice(buffer, 0, buffer[$length], isLast);
      }
    }
  };
  (convert._Utf8Base64EncoderSink.new = function(sink, urlSafe) {
    this[_sink$] = sink;
    this[_encoder] = new convert._Base64Encoder.new(urlSafe);
    convert._Utf8Base64EncoderSink.__proto__.new.call(this);
  }).prototype = convert._Utf8Base64EncoderSink.prototype;
  dart.addTypeTests(convert._Utf8Base64EncoderSink);
  dart.setMethodSignature(convert._Utf8Base64EncoderSink, () => ({
    __proto__: dart.getMethods(convert._Utf8Base64EncoderSink.__proto__),
    [_add$0]: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool])
  }));
  dart.setFieldSignature(convert._Utf8Base64EncoderSink, () => ({
    __proto__: dart.getFields(convert._Utf8Base64EncoderSink.__proto__),
    [_sink$]: dart.finalFieldType(convert.ByteConversionSink),
    [_encoder]: dart.finalFieldType(convert._Base64Encoder)
  }));
  convert.Base64Decoder = class Base64Decoder extends convert.Converter$(core.String, core.List$(core.int)) {
    convert(input, start, end) {
      core.String._check(input);
      if (start === void 0) start = 0;
      if (end === void 0) end = null;
      end = core.RangeError.checkValidRange(start, end, input.length);
      if (start == end) return typed_data.Uint8List.new(0);
      let decoder = new convert._Base64Decoder.new();
      let buffer = decoder.decode(input, start, end);
      decoder.close(input, end);
      return buffer;
    }
    startChunkedConversion(sink) {
      SinkOfListOfint()._check(sink);
      return new convert._Base64DecoderSink.new(sink);
    }
  };
  (convert.Base64Decoder.new = function() {
    convert.Base64Decoder.__proto__.new.call(this);
  }).prototype = convert.Base64Decoder.prototype;
  dart.addTypeTests(convert.Base64Decoder);
  dart.setMethodSignature(convert.Base64Decoder, () => ({
    __proto__: dart.getMethods(convert.Base64Decoder.__proto__),
    convert: dart.fnType(typed_data.Uint8List, [core.Object], [core.int, core.int]),
    startChunkedConversion: dart.fnType(convert.StringConversionSink, [core.Object])
  }));
  convert._Base64Decoder = class _Base64Decoder extends core.Object {
    static _encodeCharacterState(count, bits) {
      if (!(count === (dart.notNull(count) & 3))) dart.assertFailed();
      return (dart.notNull(bits) << 2 | dart.notNull(count)) >>> 0;
    }
    static _stateCount(state) {
      if (!(dart.notNull(state) >= 0)) dart.assertFailed();
      return dart.notNull(state) & 3;
    }
    static _stateBits(state) {
      if (!(dart.notNull(state) >= 0)) dart.assertFailed();
      return state[$rightShift](2);
    }
    static _encodePaddingState(expectedPadding) {
      if (!(dart.notNull(expectedPadding) >= 0)) dart.assertFailed();
      if (!(dart.notNull(expectedPadding) <= 5)) dart.assertFailed();
      return -dart.notNull(expectedPadding) - 1;
    }
    static _statePadding(state) {
      if (!(dart.notNull(state) < 0)) dart.assertFailed();
      return -dart.notNull(state) - 1;
    }
    static _hasSeenPadding(state) {
      return dart.notNull(state) < 0;
    }
    decode(input, start, end) {
      if (!(0 <= dart.notNull(start))) dart.assertFailed();
      if (!(dart.notNull(start) <= dart.notNull(end))) dart.assertFailed();
      if (!(dart.notNull(end) <= input.length)) dart.assertFailed();
      if (dart.test(convert._Base64Decoder._hasSeenPadding(this[_state$0]))) {
        this[_state$0] = convert._Base64Decoder._checkPadding(input, start, end, this[_state$0]);
        return null;
      }
      if (start == end) return typed_data.Uint8List.new(0);
      let buffer = convert._Base64Decoder._allocateBuffer(input, start, end, this[_state$0]);
      this[_state$0] = convert._Base64Decoder.decodeChunk(input, start, end, buffer, 0, this[_state$0]);
      return buffer;
    }
    close(input, end) {
      if (dart.notNull(this[_state$0]) < dart.notNull(convert._Base64Decoder._encodePaddingState(0))) {
        dart.throw(new core.FormatException.new("Missing padding character", input, end));
      }
      if (dart.notNull(this[_state$0]) > 0) {
        dart.throw(new core.FormatException.new("Invalid length, must be multiple of four", input, end));
      }
      this[_state$0] = convert._Base64Decoder._encodePaddingState(0);
    }
    static decodeChunk(input, start, end, output, outIndex, state) {
      if (!!dart.test(convert._Base64Decoder._hasSeenPadding(state))) dart.assertFailed();
      let asciiMask = 127;
      let asciiMax = 127;
      let eightBitMask = 255;
      let bitsPerCharacter = 6;
      let bits = convert._Base64Decoder._stateBits(state);
      let count = convert._Base64Decoder._stateCount(state);
      let charOr = 0;
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let char = input[$codeUnitAt](i);
        charOr = (charOr | char) >>> 0;
        let code = convert._Base64Decoder._inverseAlphabet[$_get]((char & asciiMask) >>> 0);
        if (dart.notNull(code) >= 0) {
          bits = (bits[$leftShift](bitsPerCharacter) | dart.notNull(code)) & 16777215;
          count = dart.notNull(count) + 1 & 3;
          if (count === 0) {
            if (!(dart.notNull(outIndex) + 3 <= dart.notNull(output[$length]))) dart.assertFailed();
            output[$_set]((() => {
              let x = outIndex;
              outIndex = dart.notNull(x) + 1;
              return x;
            })(), (bits[$rightShift](16) & eightBitMask) >>> 0);
            output[$_set]((() => {
              let x = outIndex;
              outIndex = dart.notNull(x) + 1;
              return x;
            })(), (bits[$rightShift](8) & eightBitMask) >>> 0);
            output[$_set]((() => {
              let x = outIndex;
              outIndex = dart.notNull(x) + 1;
              return x;
            })(), (dart.notNull(bits) & eightBitMask) >>> 0);
            bits = 0;
          }
          continue;
        } else if (code === -1 && dart.notNull(count) > 1) {
          if (charOr < 0 || charOr > asciiMax) break;
          if (count === 3) {
            if ((dart.notNull(bits) & 3) !== 0) {
              dart.throw(new core.FormatException.new("Invalid encoding before padding", input, i));
            }
            output[$_set]((() => {
              let x = outIndex;
              outIndex = dart.notNull(x) + 1;
              return x;
            })(), bits[$rightShift](10));
            output[$_set]((() => {
              let x = outIndex;
              outIndex = dart.notNull(x) + 1;
              return x;
            })(), bits[$rightShift](2));
          } else {
            if ((dart.notNull(bits) & 15) !== 0) {
              dart.throw(new core.FormatException.new("Invalid encoding before padding", input, i));
            }
            output[$_set]((() => {
              let x = outIndex;
              outIndex = dart.notNull(x) + 1;
              return x;
            })(), bits[$rightShift](4));
          }
          let expectedPadding = (3 - dart.notNull(count)) * 3;
          if (char === 37) {
            expectedPadding = expectedPadding + 2;
          }
          state = convert._Base64Decoder._encodePaddingState(expectedPadding);
          return convert._Base64Decoder._checkPadding(input, dart.notNull(i) + 1, end, state);
        }
        dart.throw(new core.FormatException.new("Invalid character", input, i));
      }
      if (charOr >= 0 && charOr <= asciiMax) {
        return convert._Base64Decoder._encodeCharacterState(count, bits);
      }
      let i = null;
      for (i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let char = input[$codeUnitAt](i);
        if (char < 0 || char > asciiMax) break;
      }
      dart.throw(new core.FormatException.new("Invalid character", input, i));
    }
    static _allocateBuffer(input, start, end, state) {
      if (!(dart.notNull(state) >= 0)) dart.assertFailed();
      let paddingStart = convert._Base64Decoder._trimPaddingChars(input, start, end);
      let length = dart.notNull(convert._Base64Decoder._stateCount(state)) + (dart.notNull(paddingStart) - dart.notNull(start));
      let bufferLength = length[$rightShift](2) * 3;
      let remainderLength = length & 3;
      if (remainderLength !== 0 && dart.notNull(paddingStart) < dart.notNull(end)) {
        bufferLength = bufferLength + (remainderLength - 1);
      }
      if (bufferLength > 0) return typed_data.Uint8List.new(bufferLength);
      return null;
    }
    static _trimPaddingChars(input, start, end) {
      let padding = 0;
      let index = end;
      let newEnd = end;
      while (dart.notNull(index) > dart.notNull(start) && padding < 2) {
        index = dart.notNull(index) - 1;
        let char = input[$codeUnitAt](index);
        if (char === 61) {
          padding++;
          newEnd = index;
          continue;
        }
        if ((char | 32) === 100) {
          if (index == start) break;
          index = dart.notNull(index) - 1;
          char = input[$codeUnitAt](index);
        }
        if (char === 51) {
          if (index == start) break;
          index = dart.notNull(index) - 1;
          char = input[$codeUnitAt](index);
        }
        if (char === 37) {
          padding++;
          newEnd = index;
          continue;
        }
        break;
      }
      return newEnd;
    }
    static _checkPadding(input, start, end, state) {
      if (!dart.test(convert._Base64Decoder._hasSeenPadding(state))) dart.assertFailed();
      if (start == end) return state;
      let expectedPadding = convert._Base64Decoder._statePadding(state);
      if (!(dart.notNull(expectedPadding) >= 0)) dart.assertFailed();
      if (!(dart.notNull(expectedPadding) < 6)) dart.assertFailed();
      while (dart.notNull(expectedPadding) > 0) {
        let char = input[$codeUnitAt](start);
        if (expectedPadding === 3) {
          if (char === 61) {
            expectedPadding = dart.notNull(expectedPadding) - 3;
            start = dart.notNull(start) + 1;
            break;
          }
          if (char === 37) {
            expectedPadding = dart.notNull(expectedPadding) - 1;
            start = dart.notNull(start) + 1;
            if (start == end) break;
            char = input[$codeUnitAt](start);
          } else {
            break;
          }
        }
        let expectedPartialPadding = expectedPadding;
        if (dart.notNull(expectedPartialPadding) > 3) {
          expectedPartialPadding = dart.notNull(expectedPartialPadding) - 3;
        }
        if (expectedPartialPadding === 2) {
          if (char !== 51) break;
          start = dart.notNull(start) + 1;
          expectedPadding = dart.notNull(expectedPadding) - 1;
          if (start == end) break;
          char = input[$codeUnitAt](start);
        }
        if ((char | 32) !== 100) break;
        start = dart.notNull(start) + 1;
        expectedPadding = dart.notNull(expectedPadding) - 1;
        if (start == end) break;
      }
      if (start != end) {
        dart.throw(new core.FormatException.new("Invalid padding character", input, start));
      }
      return convert._Base64Decoder._encodePaddingState(expectedPadding);
    }
  };
  (convert._Base64Decoder.new = function() {
    this[_state$0] = 0;
  }).prototype = convert._Base64Decoder.prototype;
  dart.addTypeTests(convert._Base64Decoder);
  dart.setMethodSignature(convert._Base64Decoder, () => ({
    __proto__: dart.getMethods(convert._Base64Decoder.__proto__),
    decode: dart.fnType(typed_data.Uint8List, [core.String, core.int, core.int]),
    close: dart.fnType(dart.void, [core.String, core.int])
  }));
  dart.setFieldSignature(convert._Base64Decoder, () => ({
    __proto__: dart.getFields(convert._Base64Decoder.__proto__),
    [_state$0]: dart.fieldType(core.int)
  }));
  dart.defineLazy(convert._Base64Decoder, {
    /*convert._Base64Decoder._valueShift*/get _valueShift() {
      return 2;
    },
    /*convert._Base64Decoder._countMask*/get _countMask() {
      return 3;
    },
    /*convert._Base64Decoder._invalid*/get _invalid() {
      return -2;
    },
    /*convert._Base64Decoder._padding*/get _padding() {
      return -1;
    },
    /*convert._Base64Decoder.___*/get ___() {
      return -2;
    },
    /*convert._Base64Decoder._p*/get _p() {
      return -1;
    },
    /*convert._Base64Decoder._inverseAlphabet*/get _inverseAlphabet() {
      return typed_data.Int8List.fromList(JSArrayOfint().of([-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -2, -2, -2, -2, -2, 62, -2, 62, -2, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -2, -2, -2, -1, -2, -2, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -2, -2, -2, -2, 63, -2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -2, -2, -2, -2, -2]));
    },
    /*convert._Base64Decoder._char_percent*/get _char_percent() {
      return 37;
    },
    /*convert._Base64Decoder._char_3*/get _char_3() {
      return 51;
    },
    /*convert._Base64Decoder._char_d*/get _char_d() {
      return 100;
    }
  });
  const _decoder = Symbol('_decoder');
  convert._Base64DecoderSink = class _Base64DecoderSink extends convert.StringConversionSinkBase {
    add(string) {
      core.String._check(string);
      if (string[$isEmpty]) return;
      let buffer = this[_decoder].decode(string, 0, string.length);
      if (buffer != null) this[_sink$].add(buffer);
    }
    close() {
      this[_decoder].close(null, null);
      this[_sink$].close();
    }
    addSlice(string, start, end, isLast) {
      end = core.RangeError.checkValidRange(start, end, string.length);
      if (start == end) return;
      let buffer = this[_decoder].decode(string, start, end);
      if (buffer != null) this[_sink$].add(buffer);
      if (dart.test(isLast)) {
        this[_decoder].close(string, end);
        this[_sink$].close();
      }
    }
  };
  (convert._Base64DecoderSink.new = function(sink) {
    this[_decoder] = new convert._Base64Decoder.new();
    this[_sink$] = sink;
  }).prototype = convert._Base64DecoderSink.prototype;
  dart.addTypeTests(convert._Base64DecoderSink);
  dart.setMethodSignature(convert._Base64DecoderSink, () => ({
    __proto__: dart.getMethods(convert._Base64DecoderSink.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    close: dart.fnType(dart.void, []),
    addSlice: dart.fnType(dart.void, [core.String, core.int, core.int, core.bool])
  }));
  dart.setFieldSignature(convert._Base64DecoderSink, () => ({
    __proto__: dart.getFields(convert._Base64DecoderSink.__proto__),
    [_sink$]: dart.finalFieldType(SinkOfListOfint()),
    [_decoder]: dart.finalFieldType(convert._Base64Decoder)
  }));
  convert._ByteAdapterSink = class _ByteAdapterSink extends convert.ByteConversionSinkBase {
    add(chunk) {
      ListOfint()._check(chunk);
      this[_sink$].add(chunk);
    }
    close() {
      this[_sink$].close();
    }
  };
  (convert._ByteAdapterSink.new = function(sink) {
    this[_sink$] = sink;
    convert._ByteAdapterSink.__proto__.new.call(this);
  }).prototype = convert._ByteAdapterSink.prototype;
  dart.addTypeTests(convert._ByteAdapterSink);
  dart.setMethodSignature(convert._ByteAdapterSink, () => ({
    __proto__: dart.getMethods(convert._ByteAdapterSink.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    close: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(convert._ByteAdapterSink, () => ({
    __proto__: dart.getFields(convert._ByteAdapterSink.__proto__),
    [_sink$]: dart.finalFieldType(SinkOfListOfint())
  }));
  const _callback = Symbol('_callback');
  const _buffer = Symbol('_buffer');
  const _bufferIndex = Symbol('_bufferIndex');
  convert._ByteCallbackSink = class _ByteCallbackSink extends convert.ByteConversionSinkBase {
    add(chunk) {
      IterableOfint()._check(chunk);
      let freeCount = dart.notNull(this[_buffer][$length]) - dart.notNull(this[_bufferIndex]);
      if (dart.notNull(chunk[$length]) > freeCount) {
        let oldLength = this[_buffer][$length];
        let newLength = dart.notNull(convert._ByteCallbackSink._roundToPowerOf2(dart.notNull(chunk[$length]) + dart.notNull(oldLength))) * 2;
        let grown = typed_data.Uint8List.new(newLength);
        grown[$setRange](0, this[_buffer][$length], this[_buffer]);
        this[_buffer] = grown;
      }
      this[_buffer][$setRange](this[_bufferIndex], dart.notNull(this[_bufferIndex]) + dart.notNull(chunk[$length]), chunk);
      this[_bufferIndex] = dart.notNull(this[_bufferIndex]) + dart.notNull(chunk[$length]);
    }
    static _roundToPowerOf2(v) {
      if (!(dart.notNull(v) > 0)) dart.assertFailed();
      v = dart.notNull(v) - 1;
      v = (dart.notNull(v) | v[$rightShift](1)) >>> 0;
      v = (dart.notNull(v) | v[$rightShift](2)) >>> 0;
      v = (dart.notNull(v) | v[$rightShift](4)) >>> 0;
      v = (dart.notNull(v) | v[$rightShift](8)) >>> 0;
      v = (dart.notNull(v) | v[$rightShift](16)) >>> 0;
      v = dart.notNull(v) + 1;
      return v;
    }
    close() {
      this[_callback](this[_buffer][$sublist](0, this[_bufferIndex]));
    }
  };
  (convert._ByteCallbackSink.new = function(callback) {
    this[_buffer] = typed_data.Uint8List.new(1024);
    this[_bufferIndex] = 0;
    this[_callback] = callback;
    convert._ByteCallbackSink.__proto__.new.call(this);
  }).prototype = convert._ByteCallbackSink.prototype;
  dart.addTypeTests(convert._ByteCallbackSink);
  dart.setMethodSignature(convert._ByteCallbackSink, () => ({
    __proto__: dart.getMethods(convert._ByteCallbackSink.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    close: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(convert._ByteCallbackSink, () => ({
    __proto__: dart.getFields(convert._ByteCallbackSink.__proto__),
    [_callback]: dart.finalFieldType(ListOfintTovoid()),
    [_buffer]: dart.fieldType(ListOfint()),
    [_bufferIndex]: dart.fieldType(core.int)
  }));
  dart.defineLazy(convert._ByteCallbackSink, {
    /*convert._ByteCallbackSink._INITIAL_BUFFER_SIZE*/get _INITIAL_BUFFER_SIZE() {
      return 1024;
    }
  });
  const _accumulated = Symbol('_accumulated');
  const _is__SimpleCallbackSink_default = Symbol('_is__SimpleCallbackSink_default');
  convert._SimpleCallbackSink$ = dart.generic(T => {
    let JSArrayOfT = () => (JSArrayOfT = dart.constFn(_interceptors.JSArray$(T)))();
    let ListOfT = () => (ListOfT = dart.constFn(core.List$(T)))();
    let ListOfTTovoid = () => (ListOfTTovoid = dart.constFn(dart.fnType(dart.void, [ListOfT()])))();
    class _SimpleCallbackSink extends convert.ChunkedConversionSink$(T) {
      add(chunk) {
        T._check(chunk);
        this[_accumulated][$add](chunk);
      }
      close() {
        this[_callback](this[_accumulated]);
      }
    }
    (_SimpleCallbackSink.new = function(callback) {
      this[_accumulated] = JSArrayOfT().of([]);
      this[_callback] = callback;
      _SimpleCallbackSink.__proto__.new.call(this);
    }).prototype = _SimpleCallbackSink.prototype;
    dart.addTypeTests(_SimpleCallbackSink);
    _SimpleCallbackSink.prototype[_is__SimpleCallbackSink_default] = true;
    dart.setMethodSignature(_SimpleCallbackSink, () => ({
      __proto__: dart.getMethods(_SimpleCallbackSink.__proto__),
      add: dart.fnType(dart.void, [core.Object]),
      close: dart.fnType(dart.void, [])
    }));
    dart.setFieldSignature(_SimpleCallbackSink, () => ({
      __proto__: dart.getFields(_SimpleCallbackSink.__proto__),
      [_callback]: dart.finalFieldType(ListOfTTovoid()),
      [_accumulated]: dart.finalFieldType(ListOfT())
    }));
    return _SimpleCallbackSink;
  });
  convert._SimpleCallbackSink = convert._SimpleCallbackSink$();
  dart.addTypeTests(convert._SimpleCallbackSink, _is__SimpleCallbackSink_default);
  const _eventSink = Symbol('_eventSink');
  const _chunkedSink = Symbol('_chunkedSink');
  const _is__ConverterStreamEventSink_default = Symbol('_is__ConverterStreamEventSink_default');
  convert._ConverterStreamEventSink$ = dart.generic((S, T) => {
    let EventSinkOfS = () => (EventSinkOfS = dart.constFn(async.EventSink$(S)))();
    let SinkOfS = () => (SinkOfS = dart.constFn(core.Sink$(S)))();
    let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
    class _ConverterStreamEventSink extends core.Object {
      add(o) {
        S._check(o);
        this[_chunkedSink].add(o);
      }
      addError(error, stackTrace) {
        if (stackTrace === void 0) stackTrace = null;
        this[_eventSink].addError(error, stackTrace);
      }
      close() {
        this[_chunkedSink].close();
      }
    }
    (_ConverterStreamEventSink.new = function(converter, sink) {
      this[_eventSink] = sink;
      this[_chunkedSink] = converter.startChunkedConversion(sink);
    }).prototype = _ConverterStreamEventSink.prototype;
    dart.addTypeTests(_ConverterStreamEventSink);
    _ConverterStreamEventSink.prototype[_is__ConverterStreamEventSink_default] = true;
    _ConverterStreamEventSink[dart.implements] = () => [EventSinkOfS()];
    dart.setMethodSignature(_ConverterStreamEventSink, () => ({
      __proto__: dart.getMethods(_ConverterStreamEventSink.__proto__),
      add: dart.fnType(dart.void, [core.Object]),
      addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
      close: dart.fnType(dart.void, [])
    }));
    dart.setFieldSignature(_ConverterStreamEventSink, () => ({
      __proto__: dart.getFields(_ConverterStreamEventSink.__proto__),
      [_eventSink]: dart.finalFieldType(EventSinkOfT()),
      [_chunkedSink]: dart.finalFieldType(SinkOfS())
    }));
    return _ConverterStreamEventSink;
  });
  convert._ConverterStreamEventSink = convert._ConverterStreamEventSink$();
  dart.addTypeTests(convert._ConverterStreamEventSink, _is__ConverterStreamEventSink_default);
  const _first$0 = Symbol('_first');
  const _second$ = Symbol('_second');
  const _is__FusedCodec_default = Symbol('_is__FusedCodec_default');
  convert._FusedCodec$ = dart.generic((S, M, T) => {
    let ConverterOfS$T = () => (ConverterOfS$T = dart.constFn(convert.Converter$(S, T)))();
    let ConverterOfT$S = () => (ConverterOfT$S = dart.constFn(convert.Converter$(T, S)))();
    let CodecOfS$M = () => (CodecOfS$M = dart.constFn(convert.Codec$(S, M)))();
    let CodecOfM$T = () => (CodecOfM$T = dart.constFn(convert.Codec$(M, T)))();
    class _FusedCodec extends convert.Codec$(S, T) {
      get encoder() {
        return ConverterOfS$T()._check(this[_first$0].encoder.fuse(T, this[_second$].encoder));
      }
      get decoder() {
        return ConverterOfT$S()._check(this[_second$].decoder.fuse(S, this[_first$0].decoder));
      }
    }
    (_FusedCodec.new = function(first, second) {
      this[_first$0] = first;
      this[_second$] = second;
      _FusedCodec.__proto__.new.call(this);
    }).prototype = _FusedCodec.prototype;
    dart.addTypeTests(_FusedCodec);
    _FusedCodec.prototype[_is__FusedCodec_default] = true;
    dart.setGetterSignature(_FusedCodec, () => ({
      __proto__: dart.getGetters(_FusedCodec.__proto__),
      encoder: convert.Converter$(S, T),
      decoder: convert.Converter$(T, S)
    }));
    dart.setFieldSignature(_FusedCodec, () => ({
      __proto__: dart.getFields(_FusedCodec.__proto__),
      [_first$0]: dart.finalFieldType(CodecOfS$M()),
      [_second$]: dart.finalFieldType(CodecOfM$T())
    }));
    return _FusedCodec;
  });
  convert._FusedCodec = convert._FusedCodec$();
  dart.addTypeTests(convert._FusedCodec, _is__FusedCodec_default);
  const _codec = Symbol('_codec');
  const _is__InvertedCodec_default = Symbol('_is__InvertedCodec_default');
  convert._InvertedCodec$ = dart.generic((T, S) => {
    let CodecOfS$T = () => (CodecOfS$T = dart.constFn(convert.Codec$(S, T)))();
    class _InvertedCodec extends convert.Codec$(T, S) {
      get encoder() {
        return this[_codec].decoder;
      }
      get decoder() {
        return this[_codec].encoder;
      }
      get inverted() {
        return this[_codec];
      }
    }
    (_InvertedCodec.new = function(codec) {
      this[_codec] = codec;
      _InvertedCodec.__proto__.new.call(this);
    }).prototype = _InvertedCodec.prototype;
    dart.addTypeTests(_InvertedCodec);
    _InvertedCodec.prototype[_is__InvertedCodec_default] = true;
    dart.setGetterSignature(_InvertedCodec, () => ({
      __proto__: dart.getGetters(_InvertedCodec.__proto__),
      encoder: convert.Converter$(T, S),
      decoder: convert.Converter$(S, T)
    }));
    dart.setFieldSignature(_InvertedCodec, () => ({
      __proto__: dart.getFields(_InvertedCodec.__proto__),
      [_codec]: dart.finalFieldType(CodecOfS$T())
    }));
    return _InvertedCodec;
  });
  convert._InvertedCodec = convert._InvertedCodec$();
  dart.addTypeTests(convert._InvertedCodec, _is__InvertedCodec_default);
  const _is__FusedConverter_default = Symbol('_is__FusedConverter_default');
  convert._FusedConverter$ = dart.generic((S, M, T) => {
    let ConverterOfS$M = () => (ConverterOfS$M = dart.constFn(convert.Converter$(S, M)))();
    let ConverterOfM$T = () => (ConverterOfM$T = dart.constFn(convert.Converter$(M, T)))();
    let SinkOfT = () => (SinkOfT = dart.constFn(core.Sink$(T)))();
    class _FusedConverter extends convert.Converter$(S, T) {
      convert(input) {
        S._check(input);
        return this[_second$].convert(this[_first$0].convert(input));
      }
      startChunkedConversion(sink) {
        SinkOfT()._check(sink);
        return this[_first$0].startChunkedConversion(this[_second$].startChunkedConversion(sink));
      }
    }
    (_FusedConverter.new = function(first, second) {
      this[_first$0] = first;
      this[_second$] = second;
      _FusedConverter.__proto__.new.call(this);
    }).prototype = _FusedConverter.prototype;
    dart.addTypeTests(_FusedConverter);
    _FusedConverter.prototype[_is__FusedConverter_default] = true;
    dart.setMethodSignature(_FusedConverter, () => ({
      __proto__: dart.getMethods(_FusedConverter.__proto__),
      convert: dart.fnType(T, [core.Object]),
      startChunkedConversion: dart.fnType(core.Sink$(S), [core.Object])
    }));
    dart.setFieldSignature(_FusedConverter, () => ({
      __proto__: dart.getFields(_FusedConverter.__proto__),
      [_first$0]: dart.finalFieldType(ConverterOfS$M()),
      [_second$]: dart.finalFieldType(ConverterOfM$T())
    }));
    return _FusedConverter;
  });
  convert._FusedConverter = convert._FusedConverter$();
  dart.addTypeTests(convert._FusedConverter, _is__FusedConverter_default);
  dart.defineLazy(convert, {
    /*convert.htmlEscape*/get htmlEscape() {
      return dart.const(new convert.HtmlEscape.new());
    }
  });
  const _name$1 = Symbol('_name');
  convert.HtmlEscapeMode = class HtmlEscapeMode extends core.Object {
    get escapeLtGt() {
      return this[escapeLtGt$];
    }
    set escapeLtGt(value) {
      super.escapeLtGt = value;
    }
    get escapeQuot() {
      return this[escapeQuot$];
    }
    set escapeQuot(value) {
      super.escapeQuot = value;
    }
    get escapeApos() {
      return this[escapeApos$];
    }
    set escapeApos(value) {
      super.escapeApos = value;
    }
    get escapeSlash() {
      return this[escapeSlash$];
    }
    set escapeSlash(value) {
      super.escapeSlash = value;
    }
    toString() {
      return this[_name$1];
    }
  };
  (convert.HtmlEscapeMode.__ = function(name, escapeLtGt, escapeQuot, escapeApos, escapeSlash) {
    this[_name$1] = name;
    this[escapeLtGt$] = escapeLtGt;
    this[escapeQuot$] = escapeQuot;
    this[escapeApos$] = escapeApos;
    this[escapeSlash$] = escapeSlash;
  }).prototype = convert.HtmlEscapeMode.prototype;
  (convert.HtmlEscapeMode.new = function(opts) {
    let name = opts && 'name' in opts ? opts.name : "custom";
    let escapeLtGt = opts && 'escapeLtGt' in opts ? opts.escapeLtGt : false;
    let escapeQuot = opts && 'escapeQuot' in opts ? opts.escapeQuot : false;
    let escapeApos = opts && 'escapeApos' in opts ? opts.escapeApos : false;
    let escapeSlash = opts && 'escapeSlash' in opts ? opts.escapeSlash : false;
    this[escapeLtGt$] = escapeLtGt;
    this[escapeQuot$] = escapeQuot;
    this[escapeApos$] = escapeApos;
    this[escapeSlash$] = escapeSlash;
    this[_name$1] = name;
  }).prototype = convert.HtmlEscapeMode.prototype;
  dart.addTypeTests(convert.HtmlEscapeMode);
  const escapeLtGt$ = Symbol("HtmlEscapeMode.escapeLtGt");
  const escapeQuot$ = Symbol("HtmlEscapeMode.escapeQuot");
  const escapeApos$ = Symbol("HtmlEscapeMode.escapeApos");
  const escapeSlash$ = Symbol("HtmlEscapeMode.escapeSlash");
  dart.setFieldSignature(convert.HtmlEscapeMode, () => ({
    __proto__: dart.getFields(convert.HtmlEscapeMode.__proto__),
    [_name$1]: dart.finalFieldType(core.String),
    escapeLtGt: dart.finalFieldType(core.bool),
    escapeQuot: dart.finalFieldType(core.bool),
    escapeApos: dart.finalFieldType(core.bool),
    escapeSlash: dart.finalFieldType(core.bool)
  }));
  dart.defineExtensionMethods(convert.HtmlEscapeMode, ['toString']);
  dart.defineLazy(convert.HtmlEscapeMode, {
    /*convert.HtmlEscapeMode.unknown*/get unknown() {
      return dart.const(new convert.HtmlEscapeMode.__("unknown", true, true, true, true));
    },
    /*convert.HtmlEscapeMode.attribute*/get attribute() {
      return dart.const(new convert.HtmlEscapeMode.__("attribute", true, true, false, false));
    },
    /*convert.HtmlEscapeMode.sqAttribute*/get sqAttribute() {
      return dart.const(new convert.HtmlEscapeMode.__("attribute", true, false, true, false));
    },
    /*convert.HtmlEscapeMode.element*/get element() {
      return dart.const(new convert.HtmlEscapeMode.__("element", true, false, false, false));
    }
  });
  const _convert = Symbol('_convert');
  convert.HtmlEscape = class HtmlEscape extends convert.Converter$(core.String, core.String) {
    get mode() {
      return this[mode$];
    }
    set mode(value) {
      super.mode = value;
    }
    convert(text) {
      core.String._check(text);
      let val = this[_convert](text, 0, text.length);
      return val == null ? text : val;
    }
    [_convert](text, start, end) {
      let result = null;
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let ch = text[$_get](i);
        let replacement = null;
        switch (ch) {
          case "&":
          {
            replacement = "&amp;";
            break;
          }
          case "\"":
          {
            if (dart.test(this.mode.escapeQuot)) replacement = "&quot;";
            break;
          }
          case "'":
          {
            if (dart.test(this.mode.escapeApos)) replacement = "&#39;";
            break;
          }
          case "<":
          {
            if (dart.test(this.mode.escapeLtGt)) replacement = "&lt;";
            break;
          }
          case ">":
          {
            if (dart.test(this.mode.escapeLtGt)) replacement = "&gt;";
            break;
          }
          case "/":
          {
            if (dart.test(this.mode.escapeSlash)) replacement = "&#47;";
            break;
          }
        }
        if (replacement != null) {
          let t = result;
          t == null ? result = new core.StringBuffer.new() : t;
          if (dart.notNull(i) > dart.notNull(start)) result.write(text[$substring](start, i));
          result.write(replacement);
          start = dart.notNull(i) + 1;
        }
      }
      if (result == null) return null;
      if (dart.notNull(end) > dart.notNull(start)) result.write(text[$substring](start, end));
      return dart.toString(result);
    }
    startChunkedConversion(sink) {
      SinkOfString()._check(sink);
      return new convert._HtmlEscapeSink.new(this, convert.StringConversionSink.is(sink) ? sink : convert.StringConversionSink.from(sink));
    }
  };
  (convert.HtmlEscape.new = function(mode) {
    if (mode === void 0) mode = convert.HtmlEscapeMode.unknown;
    this[mode$] = mode;
    convert.HtmlEscape.__proto__.new.call(this);
  }).prototype = convert.HtmlEscape.prototype;
  dart.addTypeTests(convert.HtmlEscape);
  const mode$ = Symbol("HtmlEscape.mode");
  dart.setMethodSignature(convert.HtmlEscape, () => ({
    __proto__: dart.getMethods(convert.HtmlEscape.__proto__),
    convert: dart.fnType(core.String, [core.Object]),
    [_convert]: dart.fnType(core.String, [core.String, core.int, core.int]),
    startChunkedConversion: dart.fnType(convert.StringConversionSink, [core.Object])
  }));
  dart.setFieldSignature(convert.HtmlEscape, () => ({
    __proto__: dart.getFields(convert.HtmlEscape.__proto__),
    mode: dart.finalFieldType(convert.HtmlEscapeMode)
  }));
  const _escape = Symbol('_escape');
  convert._HtmlEscapeSink = class _HtmlEscapeSink extends convert.StringConversionSinkBase {
    addSlice(chunk, start, end, isLast) {
      let val = this[_escape][_convert](chunk, start, end);
      if (val == null) {
        this[_sink$].addSlice(chunk, start, end, isLast);
      } else {
        this[_sink$].add(val);
        if (dart.test(isLast)) this[_sink$].close();
      }
    }
    close() {
      this[_sink$].close();
    }
  };
  (convert._HtmlEscapeSink.new = function(escape, sink) {
    this[_escape] = escape;
    this[_sink$] = sink;
  }).prototype = convert._HtmlEscapeSink.prototype;
  dart.addTypeTests(convert._HtmlEscapeSink);
  dart.setMethodSignature(convert._HtmlEscapeSink, () => ({
    __proto__: dart.getMethods(convert._HtmlEscapeSink.__proto__),
    addSlice: dart.fnType(dart.void, [core.String, core.int, core.int, core.bool]),
    close: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(convert._HtmlEscapeSink, () => ({
    __proto__: dart.getFields(convert._HtmlEscapeSink.__proto__),
    [_escape]: dart.finalFieldType(convert.HtmlEscape),
    [_sink$]: dart.finalFieldType(convert.StringConversionSink)
  }));
  convert.JsonUnsupportedObjectError = class JsonUnsupportedObjectError extends core.Error {
    get unsupportedObject() {
      return this[unsupportedObject$];
    }
    set unsupportedObject(value) {
      super.unsupportedObject = value;
    }
    get cause() {
      return this[cause$];
    }
    set cause(value) {
      super.cause = value;
    }
    get partialResult() {
      return this[partialResult$];
    }
    set partialResult(value) {
      super.partialResult = value;
    }
    toString() {
      let safeString = core.Error.safeToString(this.unsupportedObject);
      let prefix = null;
      if (this.cause != null) {
        prefix = "Converting object to an encodable object failed:";
      } else {
        prefix = "Converting object did not return an encodable object:";
      }
      return dart.str(prefix) + " " + dart.str(safeString);
    }
  };
  (convert.JsonUnsupportedObjectError.new = function(unsupportedObject, opts) {
    let cause = opts && 'cause' in opts ? opts.cause : null;
    let partialResult = opts && 'partialResult' in opts ? opts.partialResult : null;
    this[unsupportedObject$] = unsupportedObject;
    this[cause$] = cause;
    this[partialResult$] = partialResult;
    convert.JsonUnsupportedObjectError.__proto__.new.call(this);
  }).prototype = convert.JsonUnsupportedObjectError.prototype;
  dart.addTypeTests(convert.JsonUnsupportedObjectError);
  const unsupportedObject$ = Symbol("JsonUnsupportedObjectError.unsupportedObject");
  const cause$ = Symbol("JsonUnsupportedObjectError.cause");
  const partialResult$ = Symbol("JsonUnsupportedObjectError.partialResult");
  dart.setFieldSignature(convert.JsonUnsupportedObjectError, () => ({
    __proto__: dart.getFields(convert.JsonUnsupportedObjectError.__proto__),
    unsupportedObject: dart.finalFieldType(core.Object),
    cause: dart.finalFieldType(core.Object),
    partialResult: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(convert.JsonUnsupportedObjectError, ['toString']);
  convert.JsonCyclicError = class JsonCyclicError extends convert.JsonUnsupportedObjectError {
    toString() {
      return "Cyclic error in JSON stringify";
    }
  };
  (convert.JsonCyclicError.new = function(object) {
    convert.JsonCyclicError.__proto__.new.call(this, object);
  }).prototype = convert.JsonCyclicError.prototype;
  dart.addTypeTests(convert.JsonCyclicError);
  dart.defineExtensionMethods(convert.JsonCyclicError, ['toString']);
  dart.defineLazy(convert, {
    /*convert.json*/get json() {
      return dart.const(new convert.JsonCodec.new());
    }
  });
  convert.jsonEncode = function(object, opts) {
    let toEncodable = opts && 'toEncodable' in opts ? opts.toEncodable : null;
    return convert.json.encode(object, {toEncodable: toEncodable});
  };
  convert.jsonDecode = function(source, opts) {
    let reviver = opts && 'reviver' in opts ? opts.reviver : null;
    return convert.json.decode(source, {reviver: reviver});
  };
  const _toEncodable = Symbol('_toEncodable');
  let const$32;
  let const$33;
  convert.JsonCodec = class JsonCodec extends convert.Codec$(core.Object, core.String) {
    decode(source, opts) {
      core.String._check(source);
      let reviver = opts && 'reviver' in opts ? opts.reviver : null;
      let t = reviver;
      t == null ? reviver = this[_reviver] : t;
      if (reviver == null) return this.decoder.convert(source);
      return new convert.JsonDecoder.new(reviver).convert(source);
    }
    encode(value, opts) {
      let toEncodable = opts && 'toEncodable' in opts ? opts.toEncodable : null;
      let t = toEncodable;
      t == null ? toEncodable = this[_toEncodable] : t;
      if (toEncodable == null) return this.encoder.convert(value);
      return new convert.JsonEncoder.new(toEncodable).convert(value);
    }
    get encoder() {
      if (this[_toEncodable] == null) return const$32 || (const$32 = dart.const(new convert.JsonEncoder.new()));
      return new convert.JsonEncoder.new(this[_toEncodable]);
    }
    get decoder() {
      if (this[_reviver] == null) return const$33 || (const$33 = dart.const(new convert.JsonDecoder.new()));
      return new convert.JsonDecoder.new(this[_reviver]);
    }
  };
  (convert.JsonCodec.new = function(opts) {
    let reviver = opts && 'reviver' in opts ? opts.reviver : null;
    let toEncodable = opts && 'toEncodable' in opts ? opts.toEncodable : null;
    this[_reviver] = reviver;
    this[_toEncodable] = toEncodable;
    convert.JsonCodec.__proto__.new.call(this);
  }).prototype = convert.JsonCodec.prototype;
  (convert.JsonCodec.withReviver = function(reviver) {
    convert.JsonCodec.new.call(this, {reviver: reviver});
  }).prototype = convert.JsonCodec.prototype;
  dart.addTypeTests(convert.JsonCodec);
  dart.setMethodSignature(convert.JsonCodec, () => ({
    __proto__: dart.getMethods(convert.JsonCodec.__proto__),
    decode: dart.fnType(dart.dynamic, [core.Object], {reviver: dart.fnType(dart.dynamic, [core.Object, core.Object])}),
    encode: dart.fnType(core.String, [core.Object], {toEncodable: dart.fnType(dart.dynamic, [dart.dynamic])})
  }));
  dart.setGetterSignature(convert.JsonCodec, () => ({
    __proto__: dart.getGetters(convert.JsonCodec.__proto__),
    encoder: convert.JsonEncoder,
    decoder: convert.JsonDecoder
  }));
  dart.setFieldSignature(convert.JsonCodec, () => ({
    __proto__: dart.getFields(convert.JsonCodec.__proto__),
    [_reviver]: dart.finalFieldType(ObjectAndObjectTodynamic()),
    [_toEncodable]: dart.finalFieldType(dynamicTodynamic())
  }));
  convert.JsonEncoder = class JsonEncoder extends convert.Converter$(core.Object, core.String) {
    get indent() {
      return this[indent$];
    }
    set indent(value) {
      super.indent = value;
    }
    convert(object) {
      return convert._JsonStringStringifier.stringify(object, this[_toEncodable], this.indent);
    }
    startChunkedConversion(sink) {
      SinkOfString()._check(sink);
      if (convert._Utf8EncoderSink.is(sink)) {
        return new convert._JsonUtf8EncoderSink.new(sink[_sink$], this[_toEncodable], convert.JsonUtf8Encoder._utf8Encode(this.indent), convert.JsonUtf8Encoder._defaultBufferSize);
      }
      return new convert._JsonEncoderSink.new(convert.StringConversionSink.is(sink) ? sink : convert.StringConversionSink.from(sink), this[_toEncodable], this.indent);
    }
    bind(stream) {
      return super.bind(stream);
    }
    fuse(T, other) {
      convert.Converter$(core.String, T)._check(other);
      if (convert.Utf8Encoder.is(other) && ListOfint().is(dart.wrapType(T))) {
        return convert.Converter$(core.Object, T)._check(new convert.JsonUtf8Encoder.new(this.indent, this[_toEncodable]));
      }
      return super.fuse(T, other);
    }
  };
  (convert.JsonEncoder.new = function(toEncodable) {
    if (toEncodable === void 0) toEncodable = null;
    this[indent$] = null;
    this[_toEncodable] = toEncodable;
    convert.JsonEncoder.__proto__.new.call(this);
  }).prototype = convert.JsonEncoder.prototype;
  (convert.JsonEncoder.withIndent = function(indent, toEncodable) {
    if (toEncodable === void 0) toEncodable = null;
    this[indent$] = indent;
    this[_toEncodable] = toEncodable;
    convert.JsonEncoder.__proto__.new.call(this);
  }).prototype = convert.JsonEncoder.prototype;
  dart.addTypeTests(convert.JsonEncoder);
  const indent$ = Symbol("JsonEncoder.indent");
  dart.setMethodSignature(convert.JsonEncoder, () => ({
    __proto__: dart.getMethods(convert.JsonEncoder.__proto__),
    convert: dart.fnType(core.String, [core.Object]),
    startChunkedConversion: dart.fnType(convert.ChunkedConversionSink$(core.Object), [core.Object]),
    bind: dart.fnType(async.Stream$(core.String), [async.Stream$(core.Object)]),
    fuse: dart.gFnType(T => [convert.Converter$(core.Object, T), [core.Object]])
  }));
  dart.setFieldSignature(convert.JsonEncoder, () => ({
    __proto__: dart.getFields(convert.JsonEncoder.__proto__),
    indent: dart.finalFieldType(core.String),
    [_toEncodable]: dart.finalFieldType(dynamicTodynamic())
  }));
  const _indent = Symbol('_indent');
  const _bufferSize = Symbol('_bufferSize');
  convert.JsonUtf8Encoder = class JsonUtf8Encoder extends convert.Converter$(core.Object, core.List$(core.int)) {
    static _utf8Encode(string) {
      if (string == null) return null;
      if (string[$isEmpty]) return typed_data.Uint8List.new(0);
      checkAscii: {
        for (let i = 0; i < string.length; i++) {
          if (string[$codeUnitAt](i) >= 128) break checkAscii;
        }
        return string[$codeUnits];
      }
      return convert.utf8.encode(string);
    }
    convert(object) {
      let bytes = JSArrayOfListOfint().of([]);
      function addChunk(chunk, start, end) {
        if (dart.notNull(start) > 0 || dart.notNull(end) < dart.notNull(chunk[$length])) {
          let length = dart.notNull(end) - dart.notNull(start);
          chunk = typed_data.Uint8List.view(chunk[$buffer], dart.notNull(chunk[$offsetInBytes]) + dart.notNull(start), length);
        }
        bytes[$add](chunk);
      }
      dart.fn(addChunk, Uint8ListAndintAndintTovoid());
      convert._JsonUtf8Stringifier.stringify(object, this[_indent], this[_toEncodable], this[_bufferSize], addChunk);
      if (bytes[$length] === 1) return bytes[$_get](0);
      let length = 0;
      for (let i = 0; i < dart.notNull(bytes[$length]); i++) {
        length = length + dart.notNull(bytes[$_get](i)[$length]);
      }
      let result = typed_data.Uint8List.new(length);
      for (let i = 0, offset = 0; i < dart.notNull(bytes[$length]); i++) {
        let byteList = bytes[$_get](i);
        let end = offset + dart.notNull(byteList[$length]);
        result[$setRange](offset, end, byteList);
        offset = end;
      }
      return result;
    }
    startChunkedConversion(sink) {
      SinkOfListOfint()._check(sink);
      let byteSink = null;
      if (convert.ByteConversionSink.is(sink)) {
        byteSink = sink;
      } else {
        byteSink = convert.ByteConversionSink.from(sink);
      }
      return new convert._JsonUtf8EncoderSink.new(byteSink, this[_toEncodable], this[_indent], this[_bufferSize]);
    }
    bind(stream) {
      return super.bind(stream);
    }
  };
  (convert.JsonUtf8Encoder.new = function(indent, toEncodable, bufferSize) {
    if (indent === void 0) indent = null;
    if (toEncodable === void 0) toEncodable = null;
    if (bufferSize === void 0) bufferSize = 256;
    this[_indent] = convert.JsonUtf8Encoder._utf8Encode(indent);
    this[_toEncodable] = toEncodable;
    this[_bufferSize] = bufferSize;
    convert.JsonUtf8Encoder.__proto__.new.call(this);
  }).prototype = convert.JsonUtf8Encoder.prototype;
  dart.addTypeTests(convert.JsonUtf8Encoder);
  dart.setMethodSignature(convert.JsonUtf8Encoder, () => ({
    __proto__: dart.getMethods(convert.JsonUtf8Encoder.__proto__),
    convert: dart.fnType(core.List$(core.int), [core.Object]),
    startChunkedConversion: dart.fnType(convert.ChunkedConversionSink$(core.Object), [core.Object]),
    bind: dart.fnType(async.Stream$(core.List$(core.int)), [async.Stream$(core.Object)])
  }));
  dart.setFieldSignature(convert.JsonUtf8Encoder, () => ({
    __proto__: dart.getFields(convert.JsonUtf8Encoder.__proto__),
    [_indent]: dart.finalFieldType(ListOfint()),
    [_toEncodable]: dart.finalFieldType(dynamicTodynamic()),
    [_bufferSize]: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(convert.JsonUtf8Encoder, {
    /*convert.JsonUtf8Encoder._defaultBufferSize*/get _defaultBufferSize() {
      return 256;
    },
    /*convert.JsonUtf8Encoder.DEFAULT_BUFFER_SIZE*/get DEFAULT_BUFFER_SIZE() {
      return 256;
    }
  });
  const _isDone = Symbol('_isDone');
  convert._JsonEncoderSink = class _JsonEncoderSink extends convert.ChunkedConversionSink$(core.Object) {
    add(o) {
      if (dart.test(this[_isDone])) {
        dart.throw(new core.StateError.new("Only one call to add allowed"));
      }
      this[_isDone] = true;
      let stringSink = this[_sink$].asStringSink();
      convert._JsonStringStringifier.printOn(o, stringSink, this[_toEncodable], this[_indent]);
      stringSink.close();
    }
    close() {}
  };
  (convert._JsonEncoderSink.new = function(sink, toEncodable, indent) {
    this[_isDone] = false;
    this[_sink$] = sink;
    this[_toEncodable] = toEncodable;
    this[_indent] = indent;
    convert._JsonEncoderSink.__proto__.new.call(this);
  }).prototype = convert._JsonEncoderSink.prototype;
  dart.addTypeTests(convert._JsonEncoderSink);
  dart.setMethodSignature(convert._JsonEncoderSink, () => ({
    __proto__: dart.getMethods(convert._JsonEncoderSink.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    close: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(convert._JsonEncoderSink, () => ({
    __proto__: dart.getFields(convert._JsonEncoderSink.__proto__),
    [_indent]: dart.finalFieldType(core.String),
    [_toEncodable]: dart.finalFieldType(dynamicTodynamic()),
    [_sink$]: dart.finalFieldType(convert.StringConversionSink),
    [_isDone]: dart.fieldType(core.bool)
  }));
  const _addChunk = Symbol('_addChunk');
  convert._JsonUtf8EncoderSink = class _JsonUtf8EncoderSink extends convert.ChunkedConversionSink$(core.Object) {
    [_addChunk](chunk, start, end) {
      this[_sink$].addSlice(chunk, start, end, false);
    }
    add(object) {
      if (dart.test(this[_isDone])) {
        dart.throw(new core.StateError.new("Only one call to add allowed"));
      }
      this[_isDone] = true;
      convert._JsonUtf8Stringifier.stringify(object, this[_indent], this[_toEncodable], this[_bufferSize], dart.bind(this, _addChunk));
      this[_sink$].close();
    }
    close() {
      if (!dart.test(this[_isDone])) {
        this[_isDone] = true;
        this[_sink$].close();
      }
    }
  };
  (convert._JsonUtf8EncoderSink.new = function(sink, toEncodable, indent, bufferSize) {
    this[_isDone] = false;
    this[_sink$] = sink;
    this[_toEncodable] = toEncodable;
    this[_indent] = indent;
    this[_bufferSize] = bufferSize;
    convert._JsonUtf8EncoderSink.__proto__.new.call(this);
  }).prototype = convert._JsonUtf8EncoderSink.prototype;
  dart.addTypeTests(convert._JsonUtf8EncoderSink);
  dart.setMethodSignature(convert._JsonUtf8EncoderSink, () => ({
    __proto__: dart.getMethods(convert._JsonUtf8EncoderSink.__proto__),
    [_addChunk]: dart.fnType(dart.void, [typed_data.Uint8List, core.int, core.int]),
    add: dart.fnType(dart.void, [core.Object]),
    close: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(convert._JsonUtf8EncoderSink, () => ({
    __proto__: dart.getFields(convert._JsonUtf8EncoderSink.__proto__),
    [_sink$]: dart.finalFieldType(convert.ByteConversionSink),
    [_indent]: dart.finalFieldType(ListOfint()),
    [_toEncodable]: dart.finalFieldType(dynamicTodynamic()),
    [_bufferSize]: dart.finalFieldType(core.int),
    [_isDone]: dart.fieldType(core.bool)
  }));
  convert.JsonDecoder = class JsonDecoder extends convert.Converter$(core.String, core.Object) {
    convert(input) {
      core.String._check(input);
      return convert._parseJson(input, this[_reviver]);
    }
    startChunkedConversion(sink) {
      return new convert._JsonDecoderSink.new(this[_reviver], sink);
    }
    bind(stream) {
      StreamOfString()._check(stream);
      return super.bind(stream);
    }
  };
  (convert.JsonDecoder.new = function(reviver) {
    if (reviver === void 0) reviver = null;
    this[_reviver] = reviver;
    convert.JsonDecoder.__proto__.new.call(this);
  }).prototype = convert.JsonDecoder.prototype;
  dart.addTypeTests(convert.JsonDecoder);
  dart.setMethodSignature(convert.JsonDecoder, () => ({
    __proto__: dart.getMethods(convert.JsonDecoder.__proto__),
    convert: dart.fnType(dart.dynamic, [core.Object]),
    startChunkedConversion: dart.fnType(convert.StringConversionSink, [core.Sink$(core.Object)]),
    bind: dart.fnType(async.Stream$(core.Object), [core.Object])
  }));
  dart.setFieldSignature(convert.JsonDecoder, () => ({
    __proto__: dart.getFields(convert.JsonDecoder.__proto__),
    [_reviver]: dart.finalFieldType(ObjectAndObjectTodynamic())
  }));
  convert._parseJson = function(source, reviver) {
    if (!(typeof source == 'string')) dart.throw(_js_helper.argumentErrorValue(source));
    let parsed = null;
    try {
      parsed = JSON.parse(source);
    } catch (e$) {
      let e = dart.getThrown(e$);
      dart.throw(new core.FormatException.new(String(e)));
    }
    if (reviver == null) {
      return convert._convertJsonToDartLazy(parsed);
    } else {
      return convert._convertJsonToDart(parsed, reviver);
    }
  };
  convert._defaultToEncodable = function(object) {
    return dart.dsend(object, 'toJson', []);
  };
  const _seen = Symbol('_seen');
  const _checkCycle = Symbol('_checkCycle');
  const _removeSeen = Symbol('_removeSeen');
  const _partialResult = Symbol('_partialResult');
  convert._JsonStringifier = class _JsonStringifier extends core.Object {
    static hexDigit(x) {
      return dart.notNull(x) < 10 ? 48 + dart.notNull(x) : 87 + dart.notNull(x);
    }
    writeStringContent(s) {
      let offset = 0;
      let length = s.length;
      for (let i = 0; i < length; i++) {
        let charCode = s[$codeUnitAt](i);
        if (charCode > 92) continue;
        if (charCode < 32) {
          if (i > offset) this.writeStringSlice(s, offset, i);
          offset = i + 1;
          this.writeCharCode(92);
          switch (charCode) {
            case 8:
            {
              this.writeCharCode(98);
              break;
            }
            case 9:
            {
              this.writeCharCode(116);
              break;
            }
            case 10:
            {
              this.writeCharCode(110);
              break;
            }
            case 12:
            {
              this.writeCharCode(102);
              break;
            }
            case 13:
            {
              this.writeCharCode(114);
              break;
            }
            default:
            {
              this.writeCharCode(117);
              this.writeCharCode(48);
              this.writeCharCode(48);
              this.writeCharCode(convert._JsonStringifier.hexDigit(charCode >> 4 & 15));
              this.writeCharCode(convert._JsonStringifier.hexDigit(charCode & 15));
              break;
            }
          }
        } else if (charCode === 34 || charCode === 92) {
          if (i > offset) this.writeStringSlice(s, offset, i);
          offset = i + 1;
          this.writeCharCode(92);
          this.writeCharCode(charCode);
        }
      }
      if (offset === 0) {
        this.writeString(s);
      } else if (offset < length) {
        this.writeStringSlice(s, offset, length);
      }
    }
    [_checkCycle](object) {
      for (let i = 0; i < dart.notNull(this[_seen][$length]); i++) {
        if (core.identical(object, this[_seen][$_get](i))) {
          dart.throw(new convert.JsonCyclicError.new(object));
        }
      }
      this[_seen][$add](object);
    }
    [_removeSeen](object) {
      if (!dart.test(this[_seen][$isNotEmpty])) dart.assertFailed();
      if (!core.identical(this[_seen][$last], object)) dart.assertFailed();
      this[_seen][$removeLast]();
    }
    writeObject(object) {
      if (dart.test(this.writeJsonValue(object))) return;
      this[_checkCycle](object);
      try {
        let customJson = this[_toEncodable](object);
        if (!dart.test(this.writeJsonValue(customJson))) {
          dart.throw(new convert.JsonUnsupportedObjectError.new(object, {partialResult: this[_partialResult]}));
        }
        this[_removeSeen](object);
      } catch (e$) {
        let e = dart.getThrown(e$);
        dart.throw(new convert.JsonUnsupportedObjectError.new(object, {cause: e, partialResult: this[_partialResult]}));
      }
    }
    writeJsonValue(object) {
      if (typeof object == 'number') {
        if (!object[$isFinite]) return false;
        this.writeNumber(object);
        return true;
      } else if (object === true) {
        this.writeString("true");
        return true;
      } else if (object === false) {
        this.writeString("false");
        return true;
      } else if (object == null) {
        this.writeString("null");
        return true;
      } else if (typeof object == 'string') {
        this.writeString("\"");
        this.writeStringContent(object);
        this.writeString("\"");
        return true;
      } else if (core.List.is(object)) {
        this[_checkCycle](object);
        this.writeList(object);
        this[_removeSeen](object);
        return true;
      } else if (core.Map.is(object)) {
        this[_checkCycle](object);
        let success = this.writeMap(object);
        this[_removeSeen](object);
        return success;
      } else {
        return false;
      }
    }
    writeList(list) {
      this.writeString("[");
      if (dart.test(list[$isNotEmpty])) {
        this.writeObject(list[$_get](0));
        for (let i = 1; i < dart.notNull(list[$length]); i++) {
          this.writeString(",");
          this.writeObject(list[$_get](i));
        }
      }
      this.writeString("]");
    }
    writeMap(map) {
      if (dart.test(map[$isEmpty])) {
        this.writeString("{}");
        return true;
      }
      let keyValueList = core.List.new(dart.notNull(map[$length]) * 2);
      let i = 0;
      let allStringKeys = true;
      map[$forEach](dart.fn((key, value) => {
        if (!(typeof key == 'string')) {
          allStringKeys = false;
        }
        keyValueList[$_set](i++, key);
        keyValueList[$_set](i++, value);
      }, dynamicAnddynamicToNull()));
      if (!allStringKeys) return false;
      this.writeString("{");
      let separator = "\"";
      for (let i = 0; i < dart.notNull(keyValueList[$length]); i = i + 2) {
        this.writeString(separator);
        separator = ",\"";
        this.writeStringContent(core.String._check(keyValueList[$_get](i)));
        this.writeString("\":");
        this.writeObject(keyValueList[$_get](i + 1));
      }
      this.writeString("}");
      return true;
    }
  };
  (convert._JsonStringifier.new = function(toEncodable) {
    this[_seen] = [];
    let l = toEncodable;
    this[_toEncodable] = l != null ? l : dart.fn(convert._defaultToEncodable, dynamicTodynamic());
  }).prototype = convert._JsonStringifier.prototype;
  dart.addTypeTests(convert._JsonStringifier);
  dart.setMethodSignature(convert._JsonStringifier, () => ({
    __proto__: dart.getMethods(convert._JsonStringifier.__proto__),
    writeStringContent: dart.fnType(dart.void, [core.String]),
    [_checkCycle]: dart.fnType(dart.void, [dart.dynamic]),
    [_removeSeen]: dart.fnType(dart.void, [dart.dynamic]),
    writeObject: dart.fnType(dart.void, [dart.dynamic]),
    writeJsonValue: dart.fnType(core.bool, [dart.dynamic]),
    writeList: dart.fnType(dart.void, [core.List]),
    writeMap: dart.fnType(core.bool, [core.Map])
  }));
  dart.setFieldSignature(convert._JsonStringifier, () => ({
    __proto__: dart.getFields(convert._JsonStringifier.__proto__),
    [_seen]: dart.finalFieldType(core.List),
    [_toEncodable]: dart.finalFieldType(dynamicTodynamic())
  }));
  dart.defineLazy(convert._JsonStringifier, {
    /*convert._JsonStringifier.backspace*/get backspace() {
      return 8;
    },
    /*convert._JsonStringifier.tab*/get tab() {
      return 9;
    },
    /*convert._JsonStringifier.newline*/get newline() {
      return 10;
    },
    /*convert._JsonStringifier.carriageReturn*/get carriageReturn() {
      return 13;
    },
    /*convert._JsonStringifier.formFeed*/get formFeed() {
      return 12;
    },
    /*convert._JsonStringifier.quote*/get quote() {
      return 34;
    },
    /*convert._JsonStringifier.char_0*/get char_0() {
      return 48;
    },
    /*convert._JsonStringifier.backslash*/get backslash() {
      return 92;
    },
    /*convert._JsonStringifier.char_b*/get char_b() {
      return 98;
    },
    /*convert._JsonStringifier.char_f*/get char_f() {
      return 102;
    },
    /*convert._JsonStringifier.char_n*/get char_n() {
      return 110;
    },
    /*convert._JsonStringifier.char_r*/get char_r() {
      return 114;
    },
    /*convert._JsonStringifier.char_t*/get char_t() {
      return 116;
    },
    /*convert._JsonStringifier.char_u*/get char_u() {
      return 117;
    }
  });
  const _indentLevel = Symbol('_indentLevel');
  convert._JsonPrettyPrintMixin = class _JsonPrettyPrintMixin extends core.Object {
    writeList(list) {
      if (dart.test(list[$isEmpty])) {
        this.writeString("[]");
      } else {
        this.writeString("[\n");
        this[_indentLevel] = dart.notNull(this[_indentLevel]) + 1;
        this.writeIndentation(this[_indentLevel]);
        this.writeObject(list[$_get](0));
        for (let i = 1; i < dart.notNull(list[$length]); i++) {
          this.writeString(",\n");
          this.writeIndentation(this[_indentLevel]);
          this.writeObject(list[$_get](i));
        }
        this.writeString("\n");
        this[_indentLevel] = dart.notNull(this[_indentLevel]) - 1;
        this.writeIndentation(this[_indentLevel]);
        this.writeString("]");
      }
    }
    writeMap(map) {
      if (dart.test(map[$isEmpty])) {
        this.writeString("{}");
        return true;
      }
      let keyValueList = core.List.new(dart.notNull(map[$length]) * 2);
      let i = 0;
      let allStringKeys = true;
      map[$forEach](dart.fn((key, value) => {
        if (!(typeof key == 'string')) {
          allStringKeys = false;
        }
        keyValueList[$_set](i++, key);
        keyValueList[$_set](i++, value);
      }, dynamicAnddynamicToNull()));
      if (!allStringKeys) return false;
      this.writeString("{\n");
      this[_indentLevel] = dart.notNull(this[_indentLevel]) + 1;
      let separator = "";
      for (let i = 0; i < dart.notNull(keyValueList[$length]); i = i + 2) {
        this.writeString(separator);
        separator = ",\n";
        this.writeIndentation(this[_indentLevel]);
        this.writeString("\"");
        this.writeStringContent(core.String._check(keyValueList[$_get](i)));
        this.writeString("\": ");
        this.writeObject(keyValueList[$_get](i + 1));
      }
      this.writeString("\n");
      this[_indentLevel] = dart.notNull(this[_indentLevel]) - 1;
      this.writeIndentation(this[_indentLevel]);
      this.writeString("}");
      return true;
    }
  };
  (convert._JsonPrettyPrintMixin.new = function() {
    this[_indentLevel] = 0;
  }).prototype = convert._JsonPrettyPrintMixin.prototype;
  dart.addTypeTests(convert._JsonPrettyPrintMixin);
  convert._JsonPrettyPrintMixin[dart.implements] = () => [convert._JsonStringifier];
  dart.setMethodSignature(convert._JsonPrettyPrintMixin, () => ({
    __proto__: dart.getMethods(convert._JsonPrettyPrintMixin.__proto__),
    writeList: dart.fnType(dart.void, [core.List]),
    writeMap: dart.fnType(core.bool, [core.Map])
  }));
  dart.setFieldSignature(convert._JsonPrettyPrintMixin, () => ({
    __proto__: dart.getFields(convert._JsonPrettyPrintMixin.__proto__),
    [_indentLevel]: dart.fieldType(core.int)
  }));
  convert._JsonStringStringifier = class _JsonStringStringifier extends convert._JsonStringifier {
    static stringify(object, toEncodable, indent) {
      let output = new core.StringBuffer.new();
      convert._JsonStringStringifier.printOn(object, output, toEncodable, indent);
      return output.toString();
    }
    static printOn(object, output, toEncodable, indent) {
      let stringifier = null;
      if (indent == null) {
        stringifier = new convert._JsonStringStringifier.new(output, toEncodable);
      } else {
        stringifier = new convert._JsonStringStringifierPretty.new(output, toEncodable, indent);
      }
      stringifier.writeObject(object);
    }
    get [_partialResult]() {
      return core.StringBuffer.is(this[_sink$]) ? dart.toString(this[_sink$]) : null;
    }
    writeNumber(number) {
      this[_sink$].write(dart.toString(number));
    }
    writeString(string) {
      this[_sink$].write(string);
    }
    writeStringSlice(string, start, end) {
      this[_sink$].write(string[$substring](start, end));
    }
    writeCharCode(charCode) {
      this[_sink$].writeCharCode(charCode);
    }
  };
  (convert._JsonStringStringifier.new = function(sink, _toEncodable) {
    this[_sink$] = sink;
    convert._JsonStringStringifier.__proto__.new.call(this, _toEncodable);
  }).prototype = convert._JsonStringStringifier.prototype;
  dart.addTypeTests(convert._JsonStringStringifier);
  dart.setMethodSignature(convert._JsonStringStringifier, () => ({
    __proto__: dart.getMethods(convert._JsonStringStringifier.__proto__),
    writeNumber: dart.fnType(dart.void, [core.num]),
    writeString: dart.fnType(dart.void, [core.String]),
    writeStringSlice: dart.fnType(dart.void, [core.String, core.int, core.int]),
    writeCharCode: dart.fnType(dart.void, [core.int])
  }));
  dart.setGetterSignature(convert._JsonStringStringifier, () => ({
    __proto__: dart.getGetters(convert._JsonStringStringifier.__proto__),
    [_partialResult]: core.String
  }));
  dart.setFieldSignature(convert._JsonStringStringifier, () => ({
    __proto__: dart.getFields(convert._JsonStringStringifier.__proto__),
    [_sink$]: dart.finalFieldType(core.StringSink)
  }));
  const _JsonStringStringifier__JsonPrettyPrintMixin$ = class _JsonStringStringifier__JsonPrettyPrintMixin extends convert._JsonStringStringifier {};
  (_JsonStringStringifier__JsonPrettyPrintMixin$.new = function(_sink, _toEncodable) {
    convert._JsonPrettyPrintMixin.new.call(this);
    _JsonStringStringifier__JsonPrettyPrintMixin$.__proto__.new.call(this, _sink, _toEncodable);
  }).prototype = _JsonStringStringifier__JsonPrettyPrintMixin$.prototype;
  dart.applyMixin(_JsonStringStringifier__JsonPrettyPrintMixin$, convert._JsonPrettyPrintMixin);
  convert._JsonStringStringifierPretty = class _JsonStringStringifierPretty extends _JsonStringStringifier__JsonPrettyPrintMixin$ {
    writeIndentation(count) {
      for (let i = 0; i < dart.notNull(count); i++)
        this.writeString(this[_indent]);
    }
  };
  (convert._JsonStringStringifierPretty.new = function(sink, toEncodable, indent) {
    this[_indent] = indent;
    convert._JsonStringStringifierPretty.__proto__.new.call(this, sink, toEncodable);
  }).prototype = convert._JsonStringStringifierPretty.prototype;
  dart.addTypeTests(convert._JsonStringStringifierPretty);
  dart.setMethodSignature(convert._JsonStringStringifierPretty, () => ({
    __proto__: dart.getMethods(convert._JsonStringStringifierPretty.__proto__),
    writeIndentation: dart.fnType(dart.void, [core.int])
  }));
  dart.setFieldSignature(convert._JsonStringStringifierPretty, () => ({
    __proto__: dart.getFields(convert._JsonStringStringifierPretty.__proto__),
    [_indent]: dart.finalFieldType(core.String)
  }));
  convert._JsonUtf8Stringifier = class _JsonUtf8Stringifier extends convert._JsonStringifier {
    static stringify(object, indent, toEncodable, bufferSize, addChunk) {
      let stringifier = null;
      if (indent != null) {
        stringifier = new convert._JsonUtf8StringifierPretty.new(toEncodable, indent, bufferSize, addChunk);
      } else {
        stringifier = new convert._JsonUtf8Stringifier.new(toEncodable, bufferSize, addChunk);
      }
      stringifier.writeObject(object);
      stringifier.flush();
    }
    flush() {
      if (dart.notNull(this.index) > 0) {
        this.addChunk(this.buffer, 0, this.index);
      }
      this.buffer = null;
      this.index = 0;
    }
    get [_partialResult]() {
      return null;
    }
    writeNumber(number) {
      this.writeAsciiString(dart.toString(number));
    }
    writeAsciiString(string) {
      for (let i = 0; i < string.length; i++) {
        let char = string[$codeUnitAt](i);
        if (!(char <= 127)) dart.assertFailed();
        this.writeByte(char);
      }
    }
    writeString(string) {
      this.writeStringSlice(string, 0, string.length);
    }
    writeStringSlice(string, start, end) {
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let char = string[$codeUnitAt](i);
        if (char <= 127) {
          this.writeByte(char);
        } else {
          if ((char & 64512) === 55296 && dart.notNull(i) + 1 < dart.notNull(end)) {
            let nextChar = string[$codeUnitAt](dart.notNull(i) + 1);
            if ((nextChar & 64512) === 56320) {
              char = 65536 + ((char & 1023) << 10) + (nextChar & 1023);
              this.writeFourByteCharCode(char);
              i = dart.notNull(i) + 1;
              continue;
            }
          }
          this.writeMultiByteCharCode(char);
        }
      }
    }
    writeCharCode(charCode) {
      if (dart.notNull(charCode) <= 127) {
        this.writeByte(charCode);
        return;
      }
      this.writeMultiByteCharCode(charCode);
    }
    writeMultiByteCharCode(charCode) {
      if (dart.notNull(charCode) <= 2047) {
        this.writeByte((192 | charCode[$rightShift](6)) >>> 0);
        this.writeByte(128 | dart.notNull(charCode) & 63);
        return;
      }
      if (dart.notNull(charCode) <= 65535) {
        this.writeByte((224 | charCode[$rightShift](12)) >>> 0);
        this.writeByte(128 | dart.notNull(charCode) >> 6 & 63);
        this.writeByte(128 | dart.notNull(charCode) & 63);
        return;
      }
      this.writeFourByteCharCode(charCode);
    }
    writeFourByteCharCode(charCode) {
      if (!(dart.notNull(charCode) <= 1114111)) dart.assertFailed();
      this.writeByte((240 | charCode[$rightShift](18)) >>> 0);
      this.writeByte(128 | dart.notNull(charCode) >> 12 & 63);
      this.writeByte(128 | dart.notNull(charCode) >> 6 & 63);
      this.writeByte(128 | dart.notNull(charCode) & 63);
    }
    writeByte(byte) {
      if (!(dart.notNull(byte) <= 255)) dart.assertFailed();
      if (this.index == this.buffer[$length]) {
        this.addChunk(this.buffer, 0, this.index);
        this.buffer = typed_data.Uint8List.new(this.bufferSize);
        this.index = 0;
      }
      this.buffer[$_set]((() => {
        let x = this.index;
        this.index = dart.notNull(x) + 1;
        return x;
      })(), byte);
    }
  };
  (convert._JsonUtf8Stringifier.new = function(toEncodable, bufferSize, addChunk) {
    this.index = 0;
    this.bufferSize = bufferSize;
    this.addChunk = addChunk;
    this.buffer = typed_data.Uint8List.new(bufferSize);
    convert._JsonUtf8Stringifier.__proto__.new.call(this, toEncodable);
  }).prototype = convert._JsonUtf8Stringifier.prototype;
  dart.addTypeTests(convert._JsonUtf8Stringifier);
  dart.setMethodSignature(convert._JsonUtf8Stringifier, () => ({
    __proto__: dart.getMethods(convert._JsonUtf8Stringifier.__proto__),
    flush: dart.fnType(dart.void, []),
    writeNumber: dart.fnType(dart.void, [core.num]),
    writeAsciiString: dart.fnType(dart.void, [core.String]),
    writeString: dart.fnType(dart.void, [core.String]),
    writeStringSlice: dart.fnType(dart.void, [core.String, core.int, core.int]),
    writeCharCode: dart.fnType(dart.void, [core.int]),
    writeMultiByteCharCode: dart.fnType(dart.void, [core.int]),
    writeFourByteCharCode: dart.fnType(dart.void, [core.int]),
    writeByte: dart.fnType(dart.void, [core.int])
  }));
  dart.setGetterSignature(convert._JsonUtf8Stringifier, () => ({
    __proto__: dart.getGetters(convert._JsonUtf8Stringifier.__proto__),
    [_partialResult]: core.String
  }));
  dart.setFieldSignature(convert._JsonUtf8Stringifier, () => ({
    __proto__: dart.getFields(convert._JsonUtf8Stringifier.__proto__),
    bufferSize: dart.finalFieldType(core.int),
    addChunk: dart.finalFieldType(Uint8ListAndintAndintTovoid()),
    buffer: dart.fieldType(typed_data.Uint8List),
    index: dart.fieldType(core.int)
  }));
  const _JsonUtf8Stringifier__JsonPrettyPrintMixin$ = class _JsonUtf8Stringifier__JsonPrettyPrintMixin extends convert._JsonUtf8Stringifier {};
  (_JsonUtf8Stringifier__JsonPrettyPrintMixin$.new = function(toEncodable, bufferSize, addChunk) {
    convert._JsonPrettyPrintMixin.new.call(this);
    _JsonUtf8Stringifier__JsonPrettyPrintMixin$.__proto__.new.call(this, toEncodable, bufferSize, addChunk);
  }).prototype = _JsonUtf8Stringifier__JsonPrettyPrintMixin$.prototype;
  dart.applyMixin(_JsonUtf8Stringifier__JsonPrettyPrintMixin$, convert._JsonPrettyPrintMixin);
  convert._JsonUtf8StringifierPretty = class _JsonUtf8StringifierPretty extends _JsonUtf8Stringifier__JsonPrettyPrintMixin$ {
    writeIndentation(count) {
      let indent = this.indent;
      let indentLength = indent[$length];
      if (indentLength === 1) {
        let char = indent[$_get](0);
        while (dart.notNull(count) > 0) {
          this.writeByte(char);
          count = dart.notNull(count) - 1;
        }
        return;
      }
      while (dart.notNull(count) > 0) {
        count = dart.notNull(count) - 1;
        let end = dart.notNull(this.index) + dart.notNull(indentLength);
        if (end <= dart.notNull(this.buffer[$length])) {
          this.buffer[$setRange](this.index, end, indent);
          this.index = end;
        } else {
          for (let i = 0; i < dart.notNull(indentLength); i++) {
            this.writeByte(indent[$_get](i));
          }
        }
      }
    }
  };
  (convert._JsonUtf8StringifierPretty.new = function(toEncodable, indent, bufferSize, addChunk) {
    this.indent = indent;
    convert._JsonUtf8StringifierPretty.__proto__.new.call(this, toEncodable, bufferSize, addChunk);
  }).prototype = convert._JsonUtf8StringifierPretty.prototype;
  dart.addTypeTests(convert._JsonUtf8StringifierPretty);
  dart.setMethodSignature(convert._JsonUtf8StringifierPretty, () => ({
    __proto__: dart.getMethods(convert._JsonUtf8StringifierPretty.__proto__),
    writeIndentation: dart.fnType(dart.void, [core.int])
  }));
  dart.setFieldSignature(convert._JsonUtf8StringifierPretty, () => ({
    __proto__: dart.getFields(convert._JsonUtf8StringifierPretty.__proto__),
    indent: dart.finalFieldType(ListOfint())
  }));
  dart.defineLazy(convert, {
    /*convert.latin1*/get latin1() {
      return dart.const(new convert.Latin1Codec.new());
    },
    /*convert._latin1Mask*/get _latin1Mask() {
      return 255;
    }
  });
  let const$34;
  let const$35;
  let const$36;
  let const$37;
  let const$38;
  convert.Latin1Codec = class Latin1Codec extends convert.Encoding {
    get name() {
      return "iso-8859-1";
    }
    encode(source) {
      core.String._check(source);
      return this.encoder.convert(source);
    }
    decode(bytes, opts) {
      ListOfint()._check(bytes);
      let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : null;
      let t = allowInvalid;
      t == null ? allowInvalid = this[_allowInvalid] : t;
      if (dart.test(allowInvalid)) {
        return (const$34 || (const$34 = dart.const(new convert.Latin1Decoder.new({allowInvalid: true})))).convert(bytes);
      } else {
        return (const$35 || (const$35 = dart.const(new convert.Latin1Decoder.new({allowInvalid: false})))).convert(bytes);
      }
    }
    get encoder() {
      return const$36 || (const$36 = dart.const(new convert.Latin1Encoder.new()));
    }
    get decoder() {
      return dart.test(this[_allowInvalid]) ? const$37 || (const$37 = dart.const(new convert.Latin1Decoder.new({allowInvalid: true}))) : const$38 || (const$38 = dart.const(new convert.Latin1Decoder.new({allowInvalid: false})));
    }
  };
  (convert.Latin1Codec.new = function(opts) {
    let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : false;
    this[_allowInvalid] = allowInvalid;
    convert.Latin1Codec.__proto__.new.call(this);
  }).prototype = convert.Latin1Codec.prototype;
  dart.addTypeTests(convert.Latin1Codec);
  dart.setMethodSignature(convert.Latin1Codec, () => ({
    __proto__: dart.getMethods(convert.Latin1Codec.__proto__),
    encode: dart.fnType(typed_data.Uint8List, [core.Object]),
    decode: dart.fnType(core.String, [core.Object], {allowInvalid: core.bool})
  }));
  dart.setGetterSignature(convert.Latin1Codec, () => ({
    __proto__: dart.getGetters(convert.Latin1Codec.__proto__),
    name: core.String,
    encoder: convert.Latin1Encoder,
    decoder: convert.Latin1Decoder
  }));
  dart.setFieldSignature(convert.Latin1Codec, () => ({
    __proto__: dart.getFields(convert.Latin1Codec.__proto__),
    [_allowInvalid]: dart.finalFieldType(core.bool)
  }));
  convert.Latin1Encoder = class Latin1Encoder extends convert._UnicodeSubsetEncoder {};
  (convert.Latin1Encoder.new = function() {
    convert.Latin1Encoder.__proto__.new.call(this, 255);
  }).prototype = convert.Latin1Encoder.prototype;
  dart.addTypeTests(convert.Latin1Encoder);
  convert.Latin1Decoder = class Latin1Decoder extends convert._UnicodeSubsetDecoder {
    startChunkedConversion(sink) {
      SinkOfString()._check(sink);
      let stringSink = null;
      if (convert.StringConversionSink.is(sink)) {
        stringSink = sink;
      } else {
        stringSink = convert.StringConversionSink.from(sink);
      }
      if (!dart.test(this[_allowInvalid])) return new convert._Latin1DecoderSink.new(stringSink);
      return new convert._Latin1AllowInvalidDecoderSink.new(stringSink);
    }
  };
  (convert.Latin1Decoder.new = function(opts) {
    let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : false;
    convert.Latin1Decoder.__proto__.new.call(this, allowInvalid, 255);
  }).prototype = convert.Latin1Decoder.prototype;
  dart.addTypeTests(convert.Latin1Decoder);
  dart.setMethodSignature(convert.Latin1Decoder, () => ({
    __proto__: dart.getMethods(convert.Latin1Decoder.__proto__),
    startChunkedConversion: dart.fnType(convert.ByteConversionSink, [core.Object])
  }));
  const _addSliceToSink = Symbol('_addSliceToSink');
  convert._Latin1DecoderSink = class _Latin1DecoderSink extends convert.ByteConversionSinkBase {
    close() {
      this[_sink$].close();
      this[_sink$] = null;
    }
    add(source) {
      ListOfint()._check(source);
      this.addSlice(source, 0, source[$length], false);
    }
    [_addSliceToSink](source, start, end, isLast) {
      this[_sink$].add(core.String.fromCharCodes(source, start, end));
      if (dart.test(isLast)) this.close();
    }
    addSlice(source, start, end, isLast) {
      end = core.RangeError.checkValidRange(start, end, source[$length]);
      if (start == end) return;
      if (!typed_data.Uint8List.is(source)) {
        convert._Latin1DecoderSink._checkValidLatin1(source, start, end);
      }
      this[_addSliceToSink](source, start, end, isLast);
    }
    static _checkValidLatin1(source, start, end) {
      let mask = 0;
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        mask = (mask | dart.notNull(source[$_get](i))) >>> 0;
      }
      if (mask >= 0 && mask <= 255) {
        return;
      }
      convert._Latin1DecoderSink._reportInvalidLatin1(source, start, end);
    }
    static _reportInvalidLatin1(source, start, end) {
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let char = source[$_get](i);
        if (dart.notNull(char) < 0 || dart.notNull(char) > 255) {
          dart.throw(new core.FormatException.new("Source contains non-Latin-1 characters.", source, i));
        }
      }
      if (!false) dart.assertFailed();
    }
  };
  (convert._Latin1DecoderSink.new = function(sink) {
    this[_sink$] = sink;
    convert._Latin1DecoderSink.__proto__.new.call(this);
  }).prototype = convert._Latin1DecoderSink.prototype;
  dart.addTypeTests(convert._Latin1DecoderSink);
  dart.setMethodSignature(convert._Latin1DecoderSink, () => ({
    __proto__: dart.getMethods(convert._Latin1DecoderSink.__proto__),
    close: dart.fnType(dart.void, []),
    add: dart.fnType(dart.void, [core.Object]),
    [_addSliceToSink]: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool])
  }));
  dart.setFieldSignature(convert._Latin1DecoderSink, () => ({
    __proto__: dart.getFields(convert._Latin1DecoderSink.__proto__),
    [_sink$]: dart.fieldType(convert.StringConversionSink)
  }));
  let const$39;
  convert._Latin1AllowInvalidDecoderSink = class _Latin1AllowInvalidDecoderSink extends convert._Latin1DecoderSink {
    addSlice(source, start, end, isLast) {
      core.RangeError.checkValidRange(start, end, source[$length]);
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let char = source[$_get](i);
        if (dart.notNull(char) > 255 || dart.notNull(char) < 0) {
          if (dart.notNull(i) > dart.notNull(start)) this[_addSliceToSink](source, start, i, false);
          this[_addSliceToSink](const$39 || (const$39 = dart.constList([65533], core.int)), 0, 1, false);
          start = dart.notNull(i) + 1;
        }
      }
      if (dart.notNull(start) < dart.notNull(end)) {
        this[_addSliceToSink](source, start, end, isLast);
      }
      if (dart.test(isLast)) {
        this.close();
      }
    }
  };
  (convert._Latin1AllowInvalidDecoderSink.new = function(sink) {
    convert._Latin1AllowInvalidDecoderSink.__proto__.new.call(this, sink);
  }).prototype = convert._Latin1AllowInvalidDecoderSink.prototype;
  dart.addTypeTests(convert._Latin1AllowInvalidDecoderSink);
  dart.defineLazy(convert, {
    /*convert._LF*/get _LF() {
      return 10;
    },
    /*convert._CR*/get _CR() {
      return 13;
    }
  });
  convert.LineSplitter = class LineSplitter extends async.StreamTransformerBase$(core.String, core.String) {
    static split(lines, start, end) {
      return new (SyncIterableOfString()).new(() => (function* split(end) {
        if (start === void 0) start = 0;
        if (end === void 0) end = null;
        end = core.RangeError.checkValidRange(start, end, lines.length);
        let sliceStart = start;
        let char = 0;
        for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
          let previousChar = char;
          char = lines[$codeUnitAt](i);
          if (char !== 13) {
            if (char !== 10) continue;
            if (previousChar === 13) {
              sliceStart = dart.notNull(i) + 1;
              continue;
            }
          }
          yield lines[$substring](sliceStart, i);
          sliceStart = dart.notNull(i) + 1;
        }
        if (dart.notNull(sliceStart) < dart.notNull(end)) {
          yield lines[$substring](sliceStart, end);
        }
      })(end));
    }
    convert(data) {
      let lines = JSArrayOfString().of([]);
      let end = data.length;
      let sliceStart = 0;
      let char = 0;
      for (let i = 0; i < end; i++) {
        let previousChar = char;
        char = data[$codeUnitAt](i);
        if (char !== 13) {
          if (char !== 10) continue;
          if (previousChar === 13) {
            sliceStart = i + 1;
            continue;
          }
        }
        lines[$add](data[$substring](sliceStart, i));
        sliceStart = i + 1;
      }
      if (sliceStart < end) {
        lines[$add](data[$substring](sliceStart, end));
      }
      return lines;
    }
    startChunkedConversion(sink) {
      return new convert._LineSplitterSink.new(convert.StringConversionSink.is(sink) ? sink : convert.StringConversionSink.from(sink));
    }
    bind(stream) {
      StreamOfString()._check(stream);
      return StreamOfString().eventTransformed(stream, dart.fn(sink => new convert._LineSplitterEventSink.new(sink), EventSinkOfStringTo_LineSplitterEventSink()));
    }
  };
  (convert.LineSplitter.new = function() {
    convert.LineSplitter.__proto__.new.call(this);
  }).prototype = convert.LineSplitter.prototype;
  dart.addTypeTests(convert.LineSplitter);
  dart.setMethodSignature(convert.LineSplitter, () => ({
    __proto__: dart.getMethods(convert.LineSplitter.__proto__),
    convert: dart.fnType(core.List$(core.String), [core.String]),
    startChunkedConversion: dart.fnType(convert.StringConversionSink, [core.Sink$(core.String)]),
    bind: dart.fnType(async.Stream$(core.String), [core.Object])
  }));
  const _carry = Symbol('_carry');
  const _skipLeadingLF = Symbol('_skipLeadingLF');
  const _addLines = Symbol('_addLines');
  convert._LineSplitterSink = class _LineSplitterSink extends convert.StringConversionSinkBase {
    addSlice(chunk, start, end, isLast) {
      end = core.RangeError.checkValidRange(start, end, chunk.length);
      if (dart.notNull(start) >= dart.notNull(end)) {
        if (dart.test(isLast)) this.close();
        return;
      }
      if (this[_carry] != null) {
        if (!!dart.test(this[_skipLeadingLF])) dart.assertFailed();
        chunk = dart.notNull(this[_carry]) + chunk[$substring](start, end);
        start = 0;
        end = chunk.length;
        this[_carry] = null;
      } else if (dart.test(this[_skipLeadingLF])) {
        if (chunk[$codeUnitAt](start) === 10) {
          start = dart.notNull(start) + 1;
        }
        this[_skipLeadingLF] = false;
      }
      this[_addLines](chunk, start, end);
      if (dart.test(isLast)) this.close();
    }
    close() {
      if (this[_carry] != null) {
        this[_sink$].add(this[_carry]);
        this[_carry] = null;
      }
      this[_sink$].close();
    }
    [_addLines](lines, start, end) {
      let sliceStart = start;
      let char = 0;
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let previousChar = char;
        char = lines[$codeUnitAt](i);
        if (char !== 13) {
          if (char !== 10) continue;
          if (previousChar === 13) {
            sliceStart = dart.notNull(i) + 1;
            continue;
          }
        }
        this[_sink$].add(lines[$substring](sliceStart, i));
        sliceStart = dart.notNull(i) + 1;
      }
      if (dart.notNull(sliceStart) < dart.notNull(end)) {
        this[_carry] = lines[$substring](sliceStart, end);
      } else {
        this[_skipLeadingLF] = char === 13;
      }
    }
  };
  (convert._LineSplitterSink.new = function(sink) {
    this[_carry] = null;
    this[_skipLeadingLF] = false;
    this[_sink$] = sink;
  }).prototype = convert._LineSplitterSink.prototype;
  dart.addTypeTests(convert._LineSplitterSink);
  dart.setMethodSignature(convert._LineSplitterSink, () => ({
    __proto__: dart.getMethods(convert._LineSplitterSink.__proto__),
    addSlice: dart.fnType(dart.void, [core.String, core.int, core.int, core.bool]),
    close: dart.fnType(dart.void, []),
    [_addLines]: dart.fnType(dart.void, [core.String, core.int, core.int])
  }));
  dart.setFieldSignature(convert._LineSplitterSink, () => ({
    __proto__: dart.getFields(convert._LineSplitterSink.__proto__),
    [_sink$]: dart.finalFieldType(convert.StringConversionSink),
    [_carry]: dart.fieldType(core.String),
    [_skipLeadingLF]: dart.fieldType(core.bool)
  }));
  convert._LineSplitterEventSink = class _LineSplitterEventSink extends convert._LineSplitterSink {
    addError(o, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      this[_eventSink].addError(o, stackTrace);
    }
  };
  (convert._LineSplitterEventSink.new = function(eventSink) {
    this[_eventSink] = eventSink;
    convert._LineSplitterEventSink.__proto__.new.call(this, convert.StringConversionSink.from(eventSink));
  }).prototype = convert._LineSplitterEventSink.prototype;
  dart.addTypeTests(convert._LineSplitterEventSink);
  convert._LineSplitterEventSink[dart.implements] = () => [EventSinkOfString()];
  dart.setMethodSignature(convert._LineSplitterEventSink, () => ({
    __proto__: dart.getMethods(convert._LineSplitterEventSink.__proto__),
    addError: dart.fnType(dart.void, [core.Object], [core.StackTrace])
  }));
  dart.setFieldSignature(convert._LineSplitterEventSink, () => ({
    __proto__: dart.getFields(convert._LineSplitterEventSink.__proto__),
    [_eventSink]: dart.finalFieldType(EventSinkOfString())
  }));
  convert.StringConversionSink = class StringConversionSink extends convert.ChunkedConversionSink$(core.String) {
    static withCallback(callback) {
      return new convert._StringCallbackSink.new(callback);
    }
    static from(sink) {
      return new convert._StringAdapterSink.new(sink);
    }
    static fromStringSink(sink) {
      return new (_StringSinkConversionSinkOfStringSink()).new(sink);
    }
  };
  (convert.StringConversionSink.new = function() {
    convert.StringConversionSink.__proto__.new.call(this);
  }).prototype = convert.StringConversionSink.prototype;
  dart.addTypeTests(convert.StringConversionSink);
  convert.ClosableStringSink = class ClosableStringSink extends core.StringSink {
    static fromStringSink(sink, onClose) {
      return new convert._ClosableStringSink.new(sink, onClose);
    }
  };
  dart.addTypeTests(convert.ClosableStringSink);
  convert._ClosableStringSink = class _ClosableStringSink extends core.Object {
    close() {
      this[_callback]();
    }
    writeCharCode(charCode) {
      this[_sink$].writeCharCode(charCode);
    }
    write(o) {
      this[_sink$].write(o);
    }
    writeln(o) {
      if (o === void 0) o = "";
      this[_sink$].writeln(o);
    }
    writeAll(objects, separator) {
      if (separator === void 0) separator = "";
      this[_sink$].writeAll(objects, separator);
    }
  };
  (convert._ClosableStringSink.new = function(sink, callback) {
    this[_sink$] = sink;
    this[_callback] = callback;
  }).prototype = convert._ClosableStringSink.prototype;
  dart.addTypeTests(convert._ClosableStringSink);
  convert._ClosableStringSink[dart.implements] = () => [convert.ClosableStringSink];
  dart.setMethodSignature(convert._ClosableStringSink, () => ({
    __proto__: dart.getMethods(convert._ClosableStringSink.__proto__),
    close: dart.fnType(dart.void, []),
    writeCharCode: dart.fnType(dart.void, [core.int]),
    write: dart.fnType(dart.void, [core.Object]),
    writeln: dart.fnType(dart.void, [], [core.Object]),
    writeAll: dart.fnType(dart.void, [core.Iterable], [core.String])
  }));
  dart.setFieldSignature(convert._ClosableStringSink, () => ({
    __proto__: dart.getFields(convert._ClosableStringSink.__proto__),
    [_callback]: dart.finalFieldType(VoidTovoid()),
    [_sink$]: dart.finalFieldType(core.StringSink)
  }));
  const _flush = Symbol('_flush');
  convert._StringConversionSinkAsStringSinkAdapter = class _StringConversionSinkAsStringSinkAdapter extends core.Object {
    close() {
      if (dart.test(this[_buffer].isNotEmpty)) this[_flush]();
      this[_chunkedSink].close();
    }
    writeCharCode(charCode) {
      this[_buffer].writeCharCode(charCode);
      if (dart.notNull(this[_buffer].length) > 16) this[_flush]();
    }
    write(o) {
      if (dart.test(this[_buffer].isNotEmpty)) this[_flush]();
      this[_chunkedSink].add(dart.toString(o));
    }
    writeln(o) {
      if (o === void 0) o = "";
      this[_buffer].writeln(o);
      if (dart.notNull(this[_buffer].length) > 16) this[_flush]();
    }
    writeAll(objects, separator) {
      if (separator === void 0) separator = "";
      if (dart.test(this[_buffer].isNotEmpty)) this[_flush]();
      let iterator = objects[$iterator];
      if (!dart.test(iterator.moveNext())) return;
      if (separator[$isEmpty]) {
        do {
          this[_chunkedSink].add(dart.toString(iterator.current));
        } while (dart.test(iterator.moveNext()));
      } else {
        this[_chunkedSink].add(dart.toString(iterator.current));
        while (dart.test(iterator.moveNext())) {
          this.write(separator);
          this[_chunkedSink].add(dart.toString(iterator.current));
        }
      }
    }
    [_flush]() {
      let accumulated = dart.toString(this[_buffer]);
      this[_buffer].clear();
      this[_chunkedSink].add(accumulated);
    }
  };
  (convert._StringConversionSinkAsStringSinkAdapter.new = function(chunkedSink) {
    this[_chunkedSink] = chunkedSink;
    this[_buffer] = new core.StringBuffer.new();
  }).prototype = convert._StringConversionSinkAsStringSinkAdapter.prototype;
  dart.addTypeTests(convert._StringConversionSinkAsStringSinkAdapter);
  convert._StringConversionSinkAsStringSinkAdapter[dart.implements] = () => [convert.ClosableStringSink];
  dart.setMethodSignature(convert._StringConversionSinkAsStringSinkAdapter, () => ({
    __proto__: dart.getMethods(convert._StringConversionSinkAsStringSinkAdapter.__proto__),
    close: dart.fnType(dart.void, []),
    writeCharCode: dart.fnType(dart.void, [core.int]),
    write: dart.fnType(dart.void, [core.Object]),
    writeln: dart.fnType(dart.void, [], [core.Object]),
    writeAll: dart.fnType(dart.void, [core.Iterable], [core.String]),
    [_flush]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(convert._StringConversionSinkAsStringSinkAdapter, () => ({
    __proto__: dart.getFields(convert._StringConversionSinkAsStringSinkAdapter.__proto__),
    [_buffer]: dart.fieldType(core.StringBuffer),
    [_chunkedSink]: dart.fieldType(convert.StringConversionSink)
  }));
  dart.defineLazy(convert._StringConversionSinkAsStringSinkAdapter, {
    /*convert._StringConversionSinkAsStringSinkAdapter._MIN_STRING_SIZE*/get _MIN_STRING_SIZE() {
      return 16;
    }
  });
  const _contents = Symbol('_contents');
  const _writeString = Symbol('_writeString');
  core.StringBuffer = class StringBuffer extends core.Object {
    get length() {
      return this[_contents].length;
    }
    get isEmpty() {
      return this.length === 0;
    }
    get isNotEmpty() {
      return !dart.test(this.isEmpty);
    }
    write(obj) {
      this[_writeString](dart.str(obj));
    }
    writeCharCode(charCode) {
      this[_writeString](core.String.fromCharCode(charCode));
    }
    writeAll(objects, separator) {
      if (separator === void 0) separator = "";
      this[_contents] = core.StringBuffer._writeAll(this[_contents], objects, separator);
    }
    writeln(obj) {
      if (obj === void 0) obj = "";
      this[_writeString](dart.str(obj) + "\n");
    }
    clear() {
      this[_contents] = "";
    }
    toString() {
      return _js_helper.Primitives.flattenString(this[_contents]);
    }
    [_writeString](str) {
      this[_contents] = _js_helper.Primitives.stringConcatUnchecked(this[_contents], core.String._check(str));
    }
    static _writeAll(string, objects, separator) {
      let iterator = objects[$iterator];
      if (!dart.test(iterator.moveNext())) return string;
      if (separator[$isEmpty]) {
        do {
          string = core.StringBuffer._writeOne(string, iterator.current);
        } while (dart.test(iterator.moveNext()));
      } else {
        string = core.StringBuffer._writeOne(string, iterator.current);
        while (dart.test(iterator.moveNext())) {
          string = core.StringBuffer._writeOne(string, separator);
          string = core.StringBuffer._writeOne(string, iterator.current);
        }
      }
      return string;
    }
    static _writeOne(string, obj) {
      return _js_helper.Primitives.stringConcatUnchecked(string, dart.str(obj));
    }
  };
  (core.StringBuffer.new = function(content) {
    if (content === void 0) content = "";
    this[_contents] = dart.str(content);
  }).prototype = core.StringBuffer.prototype;
  dart.addTypeTests(core.StringBuffer);
  core.StringBuffer[dart.implements] = () => [core.StringSink];
  dart.setMethodSignature(core.StringBuffer, () => ({
    __proto__: dart.getMethods(core.StringBuffer.__proto__),
    write: dart.fnType(dart.void, [core.Object]),
    writeCharCode: dart.fnType(dart.void, [core.int]),
    writeAll: dart.fnType(dart.void, [core.Iterable], [core.String]),
    writeln: dart.fnType(dart.void, [], [core.Object]),
    clear: dart.fnType(dart.void, []),
    [_writeString]: dart.fnType(dart.void, [dart.dynamic])
  }));
  dart.setGetterSignature(core.StringBuffer, () => ({
    __proto__: dart.getGetters(core.StringBuffer.__proto__),
    length: core.int,
    isEmpty: core.bool,
    isNotEmpty: core.bool
  }));
  dart.setFieldSignature(core.StringBuffer, () => ({
    __proto__: dart.getFields(core.StringBuffer.__proto__),
    [_contents]: dart.fieldType(core.String)
  }));
  dart.defineExtensionMethods(core.StringBuffer, ['toString']);
  convert._StringCallbackSink = class _StringCallbackSink extends convert._StringSinkConversionSink$(core.StringBuffer) {
    close() {
      let accumulated = dart.toString(this[_stringSink]);
      this[_stringSink].clear();
      this[_callback](accumulated);
    }
    asUtf8Sink(allowMalformed) {
      return new convert._Utf8StringSinkAdapter.new(this, this[_stringSink], allowMalformed);
    }
  };
  (convert._StringCallbackSink.new = function(callback) {
    this[_callback] = callback;
    convert._StringCallbackSink.__proto__.new.call(this, new core.StringBuffer.new());
  }).prototype = convert._StringCallbackSink.prototype;
  dart.addTypeTests(convert._StringCallbackSink);
  dart.setMethodSignature(convert._StringCallbackSink, () => ({
    __proto__: dart.getMethods(convert._StringCallbackSink.__proto__),
    close: dart.fnType(dart.void, []),
    asUtf8Sink: dart.fnType(convert.ByteConversionSink, [core.bool])
  }));
  dart.setFieldSignature(convert._StringCallbackSink, () => ({
    __proto__: dart.getFields(convert._StringCallbackSink.__proto__),
    [_callback]: dart.finalFieldType(StringTovoid())
  }));
  convert._StringAdapterSink = class _StringAdapterSink extends convert.StringConversionSinkBase {
    add(str) {
      core.String._check(str);
      this[_sink$].add(str);
    }
    addSlice(str, start, end, isLast) {
      if (start === 0 && end === str.length) {
        this.add(str);
      } else {
        this.add(str[$substring](start, end));
      }
      if (dart.test(isLast)) this.close();
    }
    close() {
      this[_sink$].close();
    }
  };
  (convert._StringAdapterSink.new = function(sink) {
    this[_sink$] = sink;
  }).prototype = convert._StringAdapterSink.prototype;
  dart.addTypeTests(convert._StringAdapterSink);
  dart.setMethodSignature(convert._StringAdapterSink, () => ({
    __proto__: dart.getMethods(convert._StringAdapterSink.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    addSlice: dart.fnType(dart.void, [core.String, core.int, core.int, core.bool]),
    close: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(convert._StringAdapterSink, () => ({
    __proto__: dart.getFields(convert._StringAdapterSink.__proto__),
    [_sink$]: dart.finalFieldType(SinkOfString())
  }));
  convert._Utf8StringSinkAdapter = class _Utf8StringSinkAdapter extends convert.ByteConversionSink {
    close() {
      this[_decoder].close();
      if (this[_sink$] != null) this[_sink$].close();
    }
    add(chunk) {
      ListOfint()._check(chunk);
      this.addSlice(chunk, 0, chunk[$length], false);
    }
    addSlice(codeUnits, startIndex, endIndex, isLast) {
      this[_decoder].convert(codeUnits, startIndex, endIndex);
      if (dart.test(isLast)) this.close();
    }
  };
  (convert._Utf8StringSinkAdapter.new = function(sink, stringSink, allowMalformed) {
    this[_sink$] = sink;
    this[_decoder] = new convert._Utf8Decoder.new(stringSink, allowMalformed);
    convert._Utf8StringSinkAdapter.__proto__.new.call(this);
  }).prototype = convert._Utf8StringSinkAdapter.prototype;
  dart.addTypeTests(convert._Utf8StringSinkAdapter);
  dart.setMethodSignature(convert._Utf8StringSinkAdapter, () => ({
    __proto__: dart.getMethods(convert._Utf8StringSinkAdapter.__proto__),
    close: dart.fnType(dart.void, []),
    add: dart.fnType(dart.void, [core.Object]),
    addSlice: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool])
  }));
  dart.setFieldSignature(convert._Utf8StringSinkAdapter, () => ({
    __proto__: dart.getFields(convert._Utf8StringSinkAdapter.__proto__),
    [_decoder]: dart.finalFieldType(convert._Utf8Decoder),
    [_sink$]: dart.finalFieldType(core.Sink)
  }));
  convert._Utf8ConversionSink = class _Utf8ConversionSink extends convert.ByteConversionSink {
    close() {
      this[_decoder].close();
      if (dart.test(this[_buffer].isNotEmpty)) {
        let accumulated = dart.toString(this[_buffer]);
        this[_buffer].clear();
        this[_chunkedSink].addSlice(accumulated, 0, accumulated.length, true);
      } else {
        this[_chunkedSink].close();
      }
    }
    add(chunk) {
      ListOfint()._check(chunk);
      this.addSlice(chunk, 0, chunk[$length], false);
    }
    addSlice(chunk, startIndex, endIndex, isLast) {
      this[_decoder].convert(chunk, startIndex, endIndex);
      if (dart.test(this[_buffer].isNotEmpty)) {
        let accumulated = dart.toString(this[_buffer]);
        this[_chunkedSink].addSlice(accumulated, 0, accumulated.length, isLast);
        this[_buffer].clear();
        return;
      }
      if (dart.test(isLast)) this.close();
    }
  };
  (convert._Utf8ConversionSink.new = function(sink, allowMalformed) {
    convert._Utf8ConversionSink.__.call(this, sink, new core.StringBuffer.new(), allowMalformed);
  }).prototype = convert._Utf8ConversionSink.prototype;
  (convert._Utf8ConversionSink.__ = function(chunkedSink, stringBuffer, allowMalformed) {
    this[_chunkedSink] = chunkedSink;
    this[_decoder] = new convert._Utf8Decoder.new(stringBuffer, allowMalformed);
    this[_buffer] = stringBuffer;
    convert._Utf8ConversionSink.__proto__.new.call(this);
  }).prototype = convert._Utf8ConversionSink.prototype;
  dart.addTypeTests(convert._Utf8ConversionSink);
  dart.setMethodSignature(convert._Utf8ConversionSink, () => ({
    __proto__: dart.getMethods(convert._Utf8ConversionSink.__proto__),
    close: dart.fnType(dart.void, []),
    add: dart.fnType(dart.void, [core.Object]),
    addSlice: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool])
  }));
  dart.setFieldSignature(convert._Utf8ConversionSink, () => ({
    __proto__: dart.getFields(convert._Utf8ConversionSink.__proto__),
    [_decoder]: dart.finalFieldType(convert._Utf8Decoder),
    [_chunkedSink]: dart.finalFieldType(convert.StringConversionSink),
    [_buffer]: dart.finalFieldType(core.StringBuffer)
  }));
  dart.defineLazy(convert, {
    /*convert.unicodeReplacementCharacterRune*/get unicodeReplacementCharacterRune() {
      return 65533;
    },
    /*convert.unicodeBomCharacterRune*/get unicodeBomCharacterRune() {
      return 65279;
    },
    /*convert.utf8*/get utf8() {
      return dart.const(new convert.Utf8Codec.new());
    }
  });
  const _allowMalformed = Symbol('_allowMalformed');
  let const$40;
  convert.Utf8Codec = class Utf8Codec extends convert.Encoding {
    get name() {
      return "utf-8";
    }
    decode(codeUnits, opts) {
      ListOfint()._check(codeUnits);
      let allowMalformed = opts && 'allowMalformed' in opts ? opts.allowMalformed : null;
      let t = allowMalformed;
      t == null ? allowMalformed = this[_allowMalformed] : t;
      return new convert.Utf8Decoder.new({allowMalformed: allowMalformed}).convert(codeUnits);
    }
    get encoder() {
      return const$40 || (const$40 = dart.const(new convert.Utf8Encoder.new()));
    }
    get decoder() {
      return new convert.Utf8Decoder.new({allowMalformed: this[_allowMalformed]});
    }
  };
  (convert.Utf8Codec.new = function(opts) {
    let allowMalformed = opts && 'allowMalformed' in opts ? opts.allowMalformed : false;
    this[_allowMalformed] = allowMalformed;
    convert.Utf8Codec.__proto__.new.call(this);
  }).prototype = convert.Utf8Codec.prototype;
  dart.addTypeTests(convert.Utf8Codec);
  dart.setMethodSignature(convert.Utf8Codec, () => ({
    __proto__: dart.getMethods(convert.Utf8Codec.__proto__),
    decode: dart.fnType(core.String, [core.Object], {allowMalformed: core.bool})
  }));
  dart.setGetterSignature(convert.Utf8Codec, () => ({
    __proto__: dart.getGetters(convert.Utf8Codec.__proto__),
    name: core.String,
    encoder: convert.Utf8Encoder,
    decoder: convert.Utf8Decoder
  }));
  dart.setFieldSignature(convert.Utf8Codec, () => ({
    __proto__: dart.getFields(convert.Utf8Codec.__proto__),
    [_allowMalformed]: dart.finalFieldType(core.bool)
  }));
  const _fillBuffer = Symbol('_fillBuffer');
  const _writeSurrogate = Symbol('_writeSurrogate');
  convert.Utf8Encoder = class Utf8Encoder extends convert.Converter$(core.String, core.List$(core.int)) {
    convert(string, start, end) {
      core.String._check(string);
      if (start === void 0) start = 0;
      if (end === void 0) end = null;
      let stringLength = string.length;
      end = core.RangeError.checkValidRange(start, end, stringLength);
      let length = dart.notNull(end) - dart.notNull(start);
      if (length === 0) return typed_data.Uint8List.new(0);
      let encoder = new convert._Utf8Encoder.withBufferSize(length * 3);
      let endPosition = encoder[_fillBuffer](string, start, end);
      if (!(dart.notNull(endPosition) >= dart.notNull(end) - 1)) dart.assertFailed();
      if (endPosition != end) {
        let lastCodeUnit = string[$codeUnitAt](dart.notNull(end) - 1);
        if (!dart.test(convert._isLeadSurrogate(lastCodeUnit))) dart.assertFailed();
        let wasCombined = encoder[_writeSurrogate](lastCodeUnit, 0);
        if (!!dart.test(wasCombined)) dart.assertFailed();
      }
      return encoder[_buffer][$sublist](0, encoder[_bufferIndex]);
    }
    startChunkedConversion(sink) {
      SinkOfListOfint()._check(sink);
      return new convert._Utf8EncoderSink.new(convert.ByteConversionSink.is(sink) ? sink : convert.ByteConversionSink.from(sink));
    }
    bind(stream) {
      StreamOfString()._check(stream);
      return super.bind(stream);
    }
  };
  (convert.Utf8Encoder.new = function() {
    convert.Utf8Encoder.__proto__.new.call(this);
  }).prototype = convert.Utf8Encoder.prototype;
  dart.addTypeTests(convert.Utf8Encoder);
  dart.setMethodSignature(convert.Utf8Encoder, () => ({
    __proto__: dart.getMethods(convert.Utf8Encoder.__proto__),
    convert: dart.fnType(core.List$(core.int), [core.Object], [core.int, core.int]),
    startChunkedConversion: dart.fnType(convert.StringConversionSink, [core.Object]),
    bind: dart.fnType(async.Stream$(core.List$(core.int)), [core.Object])
  }));
  convert._Utf8Encoder = class _Utf8Encoder extends core.Object {
    static _createBuffer(size) {
      return typed_data.Uint8List.new(size);
    }
    [_writeSurrogate](leadingSurrogate, nextCodeUnit) {
      if (dart.test(convert._isTailSurrogate(nextCodeUnit))) {
        let rune = convert._combineSurrogatePair(leadingSurrogate, nextCodeUnit);
        if (!(dart.notNull(rune) > 65535)) dart.assertFailed();
        if (!(dart.notNull(rune) <= 1114111)) dart.assertFailed();
        this[_buffer][$_set]((() => {
          let x = this[_bufferIndex];
          this[_bufferIndex] = dart.notNull(x) + 1;
          return x;
        })(), (240 | rune[$rightShift](18)) >>> 0);
        this[_buffer][$_set]((() => {
          let x = this[_bufferIndex];
          this[_bufferIndex] = dart.notNull(x) + 1;
          return x;
        })(), 128 | dart.notNull(rune) >> 12 & 63);
        this[_buffer][$_set]((() => {
          let x = this[_bufferIndex];
          this[_bufferIndex] = dart.notNull(x) + 1;
          return x;
        })(), 128 | dart.notNull(rune) >> 6 & 63);
        this[_buffer][$_set]((() => {
          let x = this[_bufferIndex];
          this[_bufferIndex] = dart.notNull(x) + 1;
          return x;
        })(), 128 | dart.notNull(rune) & 63);
        return true;
      } else {
        this[_buffer][$_set]((() => {
          let x = this[_bufferIndex];
          this[_bufferIndex] = dart.notNull(x) + 1;
          return x;
        })(), (224 | leadingSurrogate[$rightShift](12)) >>> 0);
        this[_buffer][$_set]((() => {
          let x = this[_bufferIndex];
          this[_bufferIndex] = dart.notNull(x) + 1;
          return x;
        })(), 128 | dart.notNull(leadingSurrogate) >> 6 & 63);
        this[_buffer][$_set]((() => {
          let x = this[_bufferIndex];
          this[_bufferIndex] = dart.notNull(x) + 1;
          return x;
        })(), 128 | dart.notNull(leadingSurrogate) & 63);
        return false;
      }
    }
    [_fillBuffer](str, start, end) {
      if (start != end && dart.test(convert._isLeadSurrogate(str[$codeUnitAt](dart.notNull(end) - 1)))) {
        end = dart.notNull(end) - 1;
      }
      let stringIndex = null;
      for (stringIndex = start; dart.notNull(stringIndex) < dart.notNull(end); stringIndex = dart.notNull(stringIndex) + 1) {
        let codeUnit = str[$codeUnitAt](stringIndex);
        if (codeUnit <= 127) {
          if (dart.notNull(this[_bufferIndex]) >= dart.notNull(this[_buffer][$length])) break;
          this[_buffer][$_set]((() => {
            let x = this[_bufferIndex];
            this[_bufferIndex] = dart.notNull(x) + 1;
            return x;
          })(), codeUnit);
        } else if (dart.test(convert._isLeadSurrogate(codeUnit))) {
          if (dart.notNull(this[_bufferIndex]) + 3 >= dart.notNull(this[_buffer][$length])) break;
          let nextCodeUnit = str[$codeUnitAt](dart.notNull(stringIndex) + 1);
          let wasCombined = this[_writeSurrogate](codeUnit, nextCodeUnit);
          if (dart.test(wasCombined)) {
            stringIndex = dart.notNull(stringIndex) + 1;
          }
        } else {
          let rune = codeUnit;
          if (rune <= 2047) {
            if (dart.notNull(this[_bufferIndex]) + 1 >= dart.notNull(this[_buffer][$length])) break;
            this[_buffer][$_set]((() => {
              let x = this[_bufferIndex];
              this[_bufferIndex] = dart.notNull(x) + 1;
              return x;
            })(), (192 | rune[$rightShift](6)) >>> 0);
            this[_buffer][$_set]((() => {
              let x = this[_bufferIndex];
              this[_bufferIndex] = dart.notNull(x) + 1;
              return x;
            })(), 128 | rune & 63);
          } else {
            if (!(rune <= 65535)) dart.assertFailed();
            if (dart.notNull(this[_bufferIndex]) + 2 >= dart.notNull(this[_buffer][$length])) break;
            this[_buffer][$_set]((() => {
              let x = this[_bufferIndex];
              this[_bufferIndex] = dart.notNull(x) + 1;
              return x;
            })(), (224 | rune[$rightShift](12)) >>> 0);
            this[_buffer][$_set]((() => {
              let x = this[_bufferIndex];
              this[_bufferIndex] = dart.notNull(x) + 1;
              return x;
            })(), 128 | rune >> 6 & 63);
            this[_buffer][$_set]((() => {
              let x = this[_bufferIndex];
              this[_bufferIndex] = dart.notNull(x) + 1;
              return x;
            })(), 128 | rune & 63);
          }
        }
      }
      return stringIndex;
    }
  };
  (convert._Utf8Encoder.new = function() {
    convert._Utf8Encoder.withBufferSize.call(this, 1024);
  }).prototype = convert._Utf8Encoder.prototype;
  (convert._Utf8Encoder.withBufferSize = function(bufferSize) {
    this[_carry] = 0;
    this[_bufferIndex] = 0;
    this[_buffer] = convert._Utf8Encoder._createBuffer(bufferSize);
  }).prototype = convert._Utf8Encoder.prototype;
  dart.addTypeTests(convert._Utf8Encoder);
  dart.setMethodSignature(convert._Utf8Encoder, () => ({
    __proto__: dart.getMethods(convert._Utf8Encoder.__proto__),
    [_writeSurrogate]: dart.fnType(core.bool, [core.int, core.int]),
    [_fillBuffer]: dart.fnType(core.int, [core.String, core.int, core.int])
  }));
  dart.setFieldSignature(convert._Utf8Encoder, () => ({
    __proto__: dart.getFields(convert._Utf8Encoder.__proto__),
    [_carry]: dart.fieldType(core.int),
    [_bufferIndex]: dart.fieldType(core.int),
    [_buffer]: dart.finalFieldType(ListOfint())
  }));
  dart.defineLazy(convert._Utf8Encoder, {
    /*convert._Utf8Encoder._DEFAULT_BYTE_BUFFER_SIZE*/get _DEFAULT_BYTE_BUFFER_SIZE() {
      return 1024;
    }
  });
  const _Utf8Encoder_StringConversionSinkMixin$ = class _Utf8Encoder_StringConversionSinkMixin extends convert._Utf8Encoder {};
  (_Utf8Encoder_StringConversionSinkMixin$.new = function() {
    _Utf8Encoder_StringConversionSinkMixin$.__proto__.new.call(this);
  }).prototype = _Utf8Encoder_StringConversionSinkMixin$.prototype;
  (_Utf8Encoder_StringConversionSinkMixin$.withBufferSize = function(bufferSize) {
    _Utf8Encoder_StringConversionSinkMixin$.__proto__.withBufferSize.call(this, bufferSize);
  }).prototype = _Utf8Encoder_StringConversionSinkMixin$.prototype;
  dart.applyMixin(_Utf8Encoder_StringConversionSinkMixin$, convert.StringConversionSinkMixin);
  convert._Utf8EncoderSink = class _Utf8EncoderSink extends _Utf8Encoder_StringConversionSinkMixin$ {
    close() {
      if (this[_carry] !== 0) {
        this.addSlice("", 0, 0, true);
        return;
      }
      this[_sink$].close();
    }
    addSlice(str, start, end, isLast) {
      this[_bufferIndex] = 0;
      if (start == end && !dart.test(isLast)) {
        return;
      }
      if (this[_carry] !== 0) {
        let nextCodeUnit = 0;
        if (start != end) {
          nextCodeUnit = str[$codeUnitAt](start);
        } else {
          if (!dart.test(isLast)) dart.assertFailed();
        }
        let wasCombined = this[_writeSurrogate](this[_carry], nextCodeUnit);
        if (!(!dart.test(wasCombined) || start != end)) dart.assertFailed();
        if (dart.test(wasCombined)) {
          start = dart.notNull(start) + 1;
        }
        this[_carry] = 0;
      }
      do {
        start = this[_fillBuffer](str, start, end);
        let isLastSlice = dart.test(isLast) && start == end;
        if (start === dart.notNull(end) - 1 && dart.test(convert._isLeadSurrogate(str[$codeUnitAt](start)))) {
          if (dart.test(isLast) && dart.notNull(this[_bufferIndex]) < dart.notNull(this[_buffer][$length]) - 3) {
            let hasBeenCombined = this[_writeSurrogate](str[$codeUnitAt](start), 0);
            if (!!dart.test(hasBeenCombined)) dart.assertFailed();
          } else {
            this[_carry] = str[$codeUnitAt](start);
          }
          start = dart.notNull(start) + 1;
        }
        this[_sink$].addSlice(this[_buffer], 0, this[_bufferIndex], isLastSlice);
        this[_bufferIndex] = 0;
      } while (dart.notNull(start) < dart.notNull(end));
      if (dart.test(isLast)) this.close();
    }
  };
  (convert._Utf8EncoderSink.new = function(sink) {
    this[_sink$] = sink;
    convert._Utf8EncoderSink.__proto__.new.call(this);
  }).prototype = convert._Utf8EncoderSink.prototype;
  dart.addTypeTests(convert._Utf8EncoderSink);
  dart.setMethodSignature(convert._Utf8EncoderSink, () => ({
    __proto__: dart.getMethods(convert._Utf8EncoderSink.__proto__),
    close: dart.fnType(dart.void, []),
    addSlice: dart.fnType(dart.void, [core.String, core.int, core.int, core.bool])
  }));
  dart.setFieldSignature(convert._Utf8EncoderSink, () => ({
    __proto__: dart.getFields(convert._Utf8EncoderSink.__proto__),
    [_sink$]: dart.finalFieldType(convert.ByteConversionSink)
  }));
  convert.Utf8Decoder = class Utf8Decoder extends convert.Converter$(core.List$(core.int), core.String) {
    convert(codeUnits, start, end) {
      ListOfint()._check(codeUnits);
      if (start === void 0) start = 0;
      if (end === void 0) end = null;
      let result = convert.Utf8Decoder._convertIntercepted(this[_allowMalformed], codeUnits, start, end);
      if (result != null) {
        return result;
      }
      let length = codeUnits[$length];
      end = core.RangeError.checkValidRange(start, end, length);
      let buffer = new core.StringBuffer.new();
      let decoder = new convert._Utf8Decoder.new(buffer, this[_allowMalformed]);
      decoder.convert(codeUnits, start, end);
      decoder.flush(codeUnits, end);
      return buffer.toString();
    }
    startChunkedConversion(sink) {
      SinkOfString()._check(sink);
      let stringSink = null;
      if (convert.StringConversionSink.is(sink)) {
        stringSink = sink;
      } else {
        stringSink = convert.StringConversionSink.from(sink);
      }
      return stringSink.asUtf8Sink(this[_allowMalformed]);
    }
    bind(stream) {
      StreamOfListOfint()._check(stream);
      return super.bind(stream);
    }
    fuse(T, next) {
      convert.Converter$(core.String, T)._check(next);
      return super.fuse(T, next);
    }
    static _convertIntercepted(allowMalformed, codeUnits, start, end) {
      if (codeUnits instanceof Uint8Array) {
        let casted = codeUnits;
        return convert.Utf8Decoder._convertInterceptedUint8List(allowMalformed, casted, start, end);
      }
    }
    static _convertInterceptedUint8List(allowMalformed, codeUnits, start, end) {
      if (dart.test(allowMalformed)) {
        return null;
      }
      let decoder = convert.Utf8Decoder._decoder;
      if (decoder == null) return null;
      if (0 === start && end == null) {
        return convert.Utf8Decoder._useTextDecoderChecked(decoder, codeUnits);
      }
      let length = codeUnits[$length];
      end = core.RangeError.checkValidRange(start, end, length);
      if (0 === start && end == codeUnits[$length]) {
        return convert.Utf8Decoder._useTextDecoderChecked(decoder, codeUnits);
      }
      return convert.Utf8Decoder._useTextDecoderChecked(decoder, codeUnits.subarray(start, end));
    }
    static _useTextDecoderChecked(decoder, codeUnits) {
      if (dart.test(convert.Utf8Decoder._unsafe(codeUnits))) return null;
      return convert.Utf8Decoder._useTextDecoderUnchecked(decoder, codeUnits);
    }
    static _useTextDecoderUnchecked(decoder, codeUnits) {
      try {
        return decoder.decode(codeUnits);
      } catch (e$) {
        let e = dart.getThrown(e$);
      }
      return null;
    }
    static _unsafe(codeUnits) {
      let limit = dart.notNull(codeUnits[$length]) - 2;
      for (let i = 0; i < limit; i++) {
        let unit1 = codeUnits[$_get](i);
        if (unit1 === 237) {
          let unit2 = codeUnits[$_get](i + 1);
          if ((unit2 & 224) === 160) return true;
        }
      }
      return false;
    }
  };
  (convert.Utf8Decoder.new = function(opts) {
    let allowMalformed = opts && 'allowMalformed' in opts ? opts.allowMalformed : false;
    this[_allowMalformed] = allowMalformed;
    convert.Utf8Decoder.__proto__.new.call(this);
  }).prototype = convert.Utf8Decoder.prototype;
  dart.addTypeTests(convert.Utf8Decoder);
  dart.setMethodSignature(convert.Utf8Decoder, () => ({
    __proto__: dart.getMethods(convert.Utf8Decoder.__proto__),
    convert: dart.fnType(core.String, [core.Object], [core.int, core.int]),
    startChunkedConversion: dart.fnType(convert.ByteConversionSink, [core.Object]),
    bind: dart.fnType(async.Stream$(core.String), [core.Object]),
    fuse: dart.gFnType(T => [convert.Converter$(core.List$(core.int), T), [core.Object]])
  }));
  dart.setFieldSignature(convert.Utf8Decoder, () => ({
    __proto__: dart.getFields(convert.Utf8Decoder.__proto__),
    [_allowMalformed]: dart.finalFieldType(core.bool)
  }));
  dart.defineLazy(convert.Utf8Decoder, {
    /*convert.Utf8Decoder._decoder*/get _decoder() {
      return dart.fn(() => {
        try {
          return new TextDecoder("utf-8", {fatal: true});
        } catch (e$) {
          let e = dart.getThrown(e$);
        }
        return null;
      }, VoidTodynamic())();
    }
  });
  dart.defineLazy(convert, {
    /*convert._ONE_BYTE_LIMIT*/get _ONE_BYTE_LIMIT() {
      return 127;
    },
    /*convert._TWO_BYTE_LIMIT*/get _TWO_BYTE_LIMIT() {
      return 2047;
    },
    /*convert._THREE_BYTE_LIMIT*/get _THREE_BYTE_LIMIT() {
      return 65535;
    },
    /*convert._FOUR_BYTE_LIMIT*/get _FOUR_BYTE_LIMIT() {
      return 1114111;
    },
    /*convert._SURROGATE_TAG_MASK*/get _SURROGATE_TAG_MASK() {
      return 64512;
    },
    /*convert._SURROGATE_VALUE_MASK*/get _SURROGATE_VALUE_MASK() {
      return 1023;
    },
    /*convert._LEAD_SURROGATE_MIN*/get _LEAD_SURROGATE_MIN() {
      return 55296;
    },
    /*convert._TAIL_SURROGATE_MIN*/get _TAIL_SURROGATE_MIN() {
      return 56320;
    }
  });
  convert._isLeadSurrogate = function(codeUnit) {
    return (dart.notNull(codeUnit) & 64512) === 55296;
  };
  convert._isTailSurrogate = function(codeUnit) {
    return (dart.notNull(codeUnit) & 64512) === 56320;
  };
  convert._combineSurrogatePair = function(lead, tail) {
    return (65536 + ((dart.notNull(lead) & 1023) << 10) | dart.notNull(tail) & 1023) >>> 0;
  };
  const _isFirstCharacter = Symbol('_isFirstCharacter');
  const _value$ = Symbol('_value');
  const _expectedUnits = Symbol('_expectedUnits');
  const _extraUnits = Symbol('_extraUnits');
  convert._Utf8Decoder = class _Utf8Decoder extends core.Object {
    get hasPartialInput() {
      return dart.notNull(this[_expectedUnits]) > 0;
    }
    close() {
      this.flush();
    }
    flush(source, offset) {
      if (source === void 0) source = null;
      if (offset === void 0) offset = null;
      if (dart.test(this.hasPartialInput)) {
        if (!dart.test(this[_allowMalformed])) {
          dart.throw(new core.FormatException.new("Unfinished UTF-8 octet sequence", source, offset));
        }
        this[_stringSink].writeCharCode(65533);
        this[_value$] = 0;
        this[_expectedUnits] = 0;
        this[_extraUnits] = 0;
      }
    }
    convert(codeUnits, startIndex, endIndex) {
      let value = this[_value$];
      let expectedUnits = this[_expectedUnits];
      let extraUnits = this[_extraUnits];
      this[_value$] = 0;
      this[_expectedUnits] = 0;
      this[_extraUnits] = 0;
      const addSingleBytes = (function(from, to) {
        if (!(dart.notNull(from) >= dart.notNull(startIndex) && dart.notNull(from) <= dart.notNull(endIndex))) dart.assertFailed();
        if (!(dart.notNull(to) >= dart.notNull(startIndex) && dart.notNull(to) <= dart.notNull(endIndex))) dart.assertFailed();
        this[_stringSink].write(core.String.fromCharCodes(codeUnits, from, to));
      }).bind(this);
      dart.fn(addSingleBytes, intAndintTovoid());
      let i = startIndex;
      loop:
        while (true) {
          multibyte:
            if (dart.notNull(expectedUnits) > 0) {
              do {
                if (i == endIndex) {
                  break loop;
                }
                let unit = codeUnits[$_get](i);
                if ((dart.notNull(unit) & 192) !== 128) {
                  expectedUnits = 0;
                  if (!dart.test(this[_allowMalformed])) {
                    dart.throw(new core.FormatException.new("Bad UTF-8 encoding 0x" + unit[$toRadixString](16), codeUnits, i));
                  }
                  this[_isFirstCharacter] = false;
                  this[_stringSink].writeCharCode(65533);
                  break multibyte;
                } else {
                  value = (dart.notNull(value) << 6 | dart.notNull(unit) & 63) >>> 0;
                  expectedUnits = dart.notNull(expectedUnits) - 1;
                  i = dart.notNull(i) + 1;
                }
              } while (dart.notNull(expectedUnits) > 0);
              if (dart.notNull(value) <= dart.notNull(convert._Utf8Decoder._LIMITS[$_get](dart.notNull(extraUnits) - 1))) {
                if (!dart.test(this[_allowMalformed])) {
                  dart.throw(new core.FormatException.new("Overlong encoding of 0x" + value[$toRadixString](16), codeUnits, dart.notNull(i) - dart.notNull(extraUnits) - 1));
                }
                expectedUnits = extraUnits = 0;
                value = 65533;
              }
              if (dart.notNull(value) > 1114111) {
                if (!dart.test(this[_allowMalformed])) {
                  dart.throw(new core.FormatException.new("Character outside valid Unicode range: " + ("0x" + value[$toRadixString](16)), codeUnits, dart.notNull(i) - dart.notNull(extraUnits) - 1));
                }
                value = 65533;
              }
              if (!dart.test(this[_isFirstCharacter]) || value !== 65279) {
                this[_stringSink].writeCharCode(value);
              }
              this[_isFirstCharacter] = false;
            }
          while (dart.notNull(i) < dart.notNull(endIndex)) {
            let oneBytes = convert._scanOneByteCharacters(codeUnits, i, endIndex);
            if (dart.notNull(oneBytes) > 0) {
              this[_isFirstCharacter] = false;
              addSingleBytes(i, dart.notNull(i) + dart.notNull(oneBytes));
              i = dart.notNull(i) + dart.notNull(oneBytes);
              if (i == endIndex) break;
            }
            let unit = codeUnits[$_get]((() => {
              let x = i;
              i = dart.notNull(x) + 1;
              return x;
            })());
            if (dart.notNull(unit) < 0) {
              if (!dart.test(this[_allowMalformed])) {
                dart.throw(new core.FormatException.new("Negative UTF-8 code unit: -0x" + (-dart.notNull(unit))[$toRadixString](16), codeUnits, dart.notNull(i) - 1));
              }
              this[_stringSink].writeCharCode(65533);
            } else {
              if (!(dart.notNull(unit) > 127)) dart.assertFailed();
              if ((dart.notNull(unit) & 224) === 192) {
                value = dart.notNull(unit) & 31;
                expectedUnits = extraUnits = 1;
                continue loop;
              }
              if ((dart.notNull(unit) & 240) === 224) {
                value = dart.notNull(unit) & 15;
                expectedUnits = extraUnits = 2;
                continue loop;
              }
              if ((dart.notNull(unit) & 248) === 240 && dart.notNull(unit) < 245) {
                value = dart.notNull(unit) & 7;
                expectedUnits = extraUnits = 3;
                continue loop;
              }
              if (!dart.test(this[_allowMalformed])) {
                dart.throw(new core.FormatException.new("Bad UTF-8 encoding 0x" + unit[$toRadixString](16), codeUnits, dart.notNull(i) - 1));
              }
              value = 65533;
              expectedUnits = extraUnits = 0;
              this[_isFirstCharacter] = false;
              this[_stringSink].writeCharCode(value);
            }
          }
          break loop;
        }
      if (dart.notNull(expectedUnits) > 0) {
        this[_value$] = value;
        this[_expectedUnits] = expectedUnits;
        this[_extraUnits] = extraUnits;
      }
    }
  };
  (convert._Utf8Decoder.new = function(stringSink, allowMalformed) {
    this[_isFirstCharacter] = true;
    this[_value$] = 0;
    this[_expectedUnits] = 0;
    this[_extraUnits] = 0;
    this[_stringSink] = stringSink;
    this[_allowMalformed] = allowMalformed;
  }).prototype = convert._Utf8Decoder.prototype;
  dart.addTypeTests(convert._Utf8Decoder);
  dart.setMethodSignature(convert._Utf8Decoder, () => ({
    __proto__: dart.getMethods(convert._Utf8Decoder.__proto__),
    close: dart.fnType(dart.void, []),
    flush: dart.fnType(dart.void, [], [core.List$(core.int), core.int]),
    convert: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int])
  }));
  dart.setGetterSignature(convert._Utf8Decoder, () => ({
    __proto__: dart.getGetters(convert._Utf8Decoder.__proto__),
    hasPartialInput: core.bool
  }));
  dart.setFieldSignature(convert._Utf8Decoder, () => ({
    __proto__: dart.getFields(convert._Utf8Decoder.__proto__),
    [_allowMalformed]: dart.finalFieldType(core.bool),
    [_stringSink]: dart.finalFieldType(core.StringSink),
    [_isFirstCharacter]: dart.fieldType(core.bool),
    [_value$]: dart.fieldType(core.int),
    [_expectedUnits]: dart.fieldType(core.int),
    [_extraUnits]: dart.fieldType(core.int)
  }));
  dart.defineLazy(convert._Utf8Decoder, {
    /*convert._Utf8Decoder._LIMITS*/get _LIMITS() {
      return dart.constList([127, 2047, 65535, 1114111], core.int);
    }
  });
  convert._scanOneByteCharacters = function(units, from, endIndex) {
    let to = endIndex;
    for (let i = from; dart.notNull(i) < dart.notNull(to); i = dart.notNull(i) + 1) {
      let unit = units[$_get](i);
      if ((dart.notNull(unit) & 127) !== unit) return dart.notNull(i) - dart.notNull(from);
    }
    return dart.notNull(to) - dart.notNull(from);
  };
  core._symbolToString = function(symbol) {
    return _js_helper.PrivateSymbol.is(symbol) ? _js_helper.PrivateSymbol.getName(symbol) : _internal.Symbol.getName(_internal.Symbol._check(symbol));
  };
  core._kNull = function(_) {
    return null;
  };
  const _errorMsg = Symbol('_errorMsg');
  core._CompileTimeError = class _CompileTimeError extends core.Error {
    toString() {
      return this[_errorMsg];
    }
  };
  (core._CompileTimeError.new = function(errorMsg) {
    this[_errorMsg] = errorMsg;
    core._CompileTimeError.__proto__.new.call(this);
  }).prototype = core._CompileTimeError.prototype;
  dart.addTypeTests(core._CompileTimeError);
  dart.setFieldSignature(core._CompileTimeError, () => ({
    __proto__: dart.getFields(core._CompileTimeError.__proto__),
    [_errorMsg]: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(core._CompileTimeError, ['toString']);
  const _name$2 = Symbol('_name');
  core._DuplicatedFieldInitializerError = class _DuplicatedFieldInitializerError extends core.Object {
    toString() {
      return "Error: field '" + dart.str(this[_name$2]) + "' is already initialized.";
    }
  };
  (core._DuplicatedFieldInitializerError.new = function(name) {
    this[_name$2] = name;
  }).prototype = core._DuplicatedFieldInitializerError.prototype;
  dart.addTypeTests(core._DuplicatedFieldInitializerError);
  dart.setFieldSignature(core._DuplicatedFieldInitializerError, () => ({
    __proto__: dart.getFields(core._DuplicatedFieldInitializerError.__proto__),
    [_name$2]: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(core._DuplicatedFieldInitializerError, ['toString']);
  core._max = function(a, b) {
    return dart.notNull(a) > dart.notNull(b) ? a : b;
  };
  core._min = function(a, b) {
    return dart.notNull(a) < dart.notNull(b) ? a : b;
  };
  const _used = Symbol('_used');
  const _digits = Symbol('_digits');
  const _isNegative = Symbol('_isNegative');
  const _isZero = Symbol('_isZero');
  const _dlShift = Symbol('_dlShift');
  const _drShift = Symbol('_drShift');
  const _absCompare = Symbol('_absCompare');
  const _absAddSetSign = Symbol('_absAddSetSign');
  const _absSubSetSign = Symbol('_absSubSetSign');
  const _absAndSetSign = Symbol('_absAndSetSign');
  const _absAndNotSetSign = Symbol('_absAndNotSetSign');
  const _absOrSetSign = Symbol('_absOrSetSign');
  const _absXorSetSign = Symbol('_absXorSetSign');
  const _divRem = Symbol('_divRem');
  const _div = Symbol('_div');
  const _rem = Symbol('_rem');
  let const$41;
  let const$42;
  let const$43;
  const _toRadixCodeUnit = Symbol('_toRadixCodeUnit');
  const _toHexString = Symbol('_toHexString');
  core._BigIntImpl = class _BigIntImpl extends core.Object {
    static parse(source, opts) {
      let radix = opts && 'radix' in opts ? opts.radix : null;
      let result = core._BigIntImpl._tryParse(source, {radix: radix});
      if (result == null) {
        dart.throw(new core.FormatException.new("Could not parse BigInt", source));
      }
      return result;
    }
    static _parseDecimal(source, isNegative) {
      let _0 = 48;
      let part = 0;
      let result = core._BigIntImpl.zero;
      let digitInPartCount = dart.asInt(4 - source.length[$remainder](4));
      if (digitInPartCount === 4) digitInPartCount = 0;
      for (let i = 0; i < source.length; i++) {
        part = part * 10 + source[$codeUnitAt](i) - _0;
        if ((digitInPartCount = dart.notNull(digitInPartCount) + 1) === 4) {
          result = result['*'](core._BigIntImpl._bigInt10000)['+'](core._BigIntImpl._fromInt(part));
          part = 0;
          digitInPartCount = 0;
        }
      }
      if (dart.test(isNegative)) return result._negate();
      return result;
    }
    static _codeUnitToRadixValue(codeUnit) {
      let _0 = 48;
      let _9 = 57;
      let _a = 97;
      if (_0 <= dart.notNull(codeUnit) && dart.notNull(codeUnit) <= _9) return dart.notNull(codeUnit) - _0;
      codeUnit = (dart.notNull(codeUnit) | 32) >>> 0;
      let result = dart.notNull(codeUnit) - _a + 10;
      return result;
    }
    static _parseHex(source, startPos, isNegative) {
      let hexDigitsPerChunk = (16 / 4)[$truncate]();
      let sourceLength = source.length - dart.notNull(startPos);
      let chunkCount = (sourceLength / hexDigitsPerChunk)[$ceil]();
      let digits = typed_data.Uint16List.new(chunkCount);
      let lastDigitLength = sourceLength - (chunkCount - 1) * hexDigitsPerChunk;
      let digitIndex = dart.notNull(digits[$length]) - 1;
      let i = startPos;
      let chunk = 0;
      for (let j = 0; j < lastDigitLength; j++) {
        let digitValue = core._BigIntImpl._codeUnitToRadixValue(source[$codeUnitAt]((() => {
          let x = i;
          i = dart.notNull(x) + 1;
          return x;
        })()));
        if (dart.notNull(digitValue) >= 16) return null;
        chunk = chunk * 16 + dart.notNull(digitValue);
      }
      digits[$_set](digitIndex--, chunk);
      while (dart.notNull(i) < source.length) {
        chunk = 0;
        for (let j = 0; j < hexDigitsPerChunk; j++) {
          let digitValue = core._BigIntImpl._codeUnitToRadixValue(source[$codeUnitAt]((() => {
            let x = i;
            i = dart.notNull(x) + 1;
            return x;
          })()));
          if (dart.notNull(digitValue) >= 16) return null;
          chunk = chunk * 16 + dart.notNull(digitValue);
        }
        digits[$_set](digitIndex--, chunk);
      }
      if (digits[$length] === 1 && digits[$_get](0) === 0) return core._BigIntImpl.zero;
      return new core._BigIntImpl.__(isNegative, digits[$length], digits);
    }
    static _parseRadix(source, radix, isNegative) {
      let result = core._BigIntImpl.zero;
      let base = core._BigIntImpl._fromInt(radix);
      for (let i = 0; i < source.length; i++) {
        let digitValue = core._BigIntImpl._codeUnitToRadixValue(source[$codeUnitAt](i));
        if (dart.notNull(digitValue) >= dart.notNull(radix)) return null;
        result = result['*'](base)['+'](core._BigIntImpl._fromInt(digitValue));
      }
      if (dart.test(isNegative)) return result._negate();
      return result;
    }
    static _tryParse(source, opts) {
      let radix = opts && 'radix' in opts ? opts.radix : null;
      if (source === "") return null;
      let re = core.RegExp.new("^\\s*([+-]?)((0x[a-f0-9]+)|(\\d+)|([a-z0-9]+))\\s*$", {caseSensitive: false});
      let match = re.firstMatch(source);
      let signIndex = 1;
      let hexIndex = 3;
      let decimalIndex = 4;
      let nonDecimalHexIndex = 5;
      if (match == null) return null;
      let isNegative = match._get(signIndex) === "-";
      let decimalMatch = match._get(decimalIndex);
      let hexMatch = match._get(hexIndex);
      let nonDecimalMatch = match._get(nonDecimalHexIndex);
      if (radix == null) {
        if (decimalMatch != null) {
          return core._BigIntImpl._parseDecimal(decimalMatch, isNegative);
        }
        if (hexMatch != null) {
          return core._BigIntImpl._parseHex(hexMatch, 2, isNegative);
        }
        return null;
      }
      if (!core.int.is(radix)) {
        dart.throw(new core.ArgumentError.value(radix, "radix", "is not an integer"));
      }
      if (dart.notNull(radix) < 2 || dart.notNull(radix) > 36) {
        dart.throw(new core.RangeError.range(radix, 2, 36, "radix"));
      }
      if (radix === 10 && decimalMatch != null) {
        return core._BigIntImpl._parseDecimal(decimalMatch, isNegative);
      }
      if (radix === 16 && (decimalMatch != null || nonDecimalMatch != null)) {
        return core._BigIntImpl._parseHex(decimalMatch != null ? decimalMatch : nonDecimalMatch, 0, isNegative);
      }
      return core._BigIntImpl._parseRadix((() => {
        let l = decimalMatch != null ? decimalMatch : nonDecimalMatch;
        return l != null ? l : hexMatch;
      })(), radix, isNegative);
    }
    static _normalize(used, digits) {
      while (dart.notNull(used) > 0 && digits[$_get](dart.notNull(used) - 1) === 0) {
        used = dart.notNull(used) - 1;
      }
      return used;
    }
    get [_isZero]() {
      return this[_used] === 0;
    }
    static _cloneDigits(digits, from, to, length) {
      let resultDigits = typed_data.Uint16List.new(length);
      let n = dart.notNull(to) - dart.notNull(from);
      for (let i = 0; i < n; i++) {
        resultDigits[$_set](i, digits[$_get](dart.notNull(from) + i));
      }
      return resultDigits;
    }
    static from(value) {
      if (value === 0) return core._BigIntImpl.zero;
      if (value === 1) return core._BigIntImpl.one;
      if (value === 2) return core._BigIntImpl.two;
      if (value[$abs]() < 4294967296) return core._BigIntImpl._fromInt(value[$toInt]());
      if (typeof value == 'number') return core._BigIntImpl._fromDouble(value);
      return core._BigIntImpl._fromInt(dart.asInt(value));
    }
    static _fromInt(value) {
      let isNegative = dart.notNull(value) < 0;
      if (!(16 === 16)) dart.assertFailed();
      if (isNegative) {
        let minInt64 = -2147483648 * 4294967296;
        if (value === minInt64) {
          let digits = typed_data.Uint16List.new(4);
          digits[$_set](3, 32768);
          return new core._BigIntImpl.__(true, 4, digits);
        }
        value = -dart.notNull(value);
      }
      if (dart.notNull(value) < 65536) {
        let digits = typed_data.Uint16List.new(1);
        digits[$_set](0, value);
        return new core._BigIntImpl.__(isNegative, 1, digits);
      }
      if (dart.notNull(value) <= 4294967295) {
        let digits = typed_data.Uint16List.new(2);
        digits[$_set](0, dart.notNull(value) & 65535);
        digits[$_set](1, value[$rightShift](16));
        return new core._BigIntImpl.__(isNegative, 2, digits);
      }
      let bits = value[$bitLength];
      let digits = typed_data.Uint16List.new(((bits - 1) / 16)[$truncate]() + 1);
      let i = 0;
      while (value !== 0) {
        digits[$_set](i++, dart.notNull(value) & 65535);
        value = (dart.notNull(value) / 65536)[$truncate]();
      }
      return new core._BigIntImpl.__(isNegative, digits[$length], digits);
    }
    static _fromDouble(value) {
      let exponentBias = 1075;
      if (value[$isNaN] || value[$isInfinite]) {
        dart.throw(new core.ArgumentError.new("Value must be finite: " + dart.str(value)));
      }
      let isNegative = dart.notNull(value) < 0;
      if (isNegative) value = -dart.notNull(value);
      value = value[$floorToDouble]();
      if (value === 0) return core._BigIntImpl.zero;
      let bits = core._BigIntImpl._bitsForFromDouble;
      for (let i = 0; i < 8; i++) {
        bits[$_set](i, 0);
      }
      bits[$buffer][$asByteData]()[$setFloat64](0, value, typed_data.Endian.little);
      let biasedExponent = (dart.notNull(bits[$_get](7)) << 4 >>> 0) + bits[$_get](6)[$rightShift](4);
      let exponent = biasedExponent - exponentBias;
      if (!(16 === 16)) dart.assertFailed();
      let unshiftedDigits = typed_data.Uint16List.new(4);
      unshiftedDigits[$_set](0, (dart.notNull(bits[$_get](1)) << 8 >>> 0) + dart.notNull(bits[$_get](0)));
      unshiftedDigits[$_set](1, (dart.notNull(bits[$_get](3)) << 8 >>> 0) + dart.notNull(bits[$_get](2)));
      unshiftedDigits[$_set](2, (dart.notNull(bits[$_get](5)) << 8 >>> 0) + dart.notNull(bits[$_get](4)));
      unshiftedDigits[$_set](3, 16 | dart.notNull(bits[$_get](6)) & 15);
      let unshiftedBig = new core._BigIntImpl._normalized(false, 4, unshiftedDigits);
      let absResult = unshiftedBig;
      if (exponent < 0) {
        absResult = unshiftedBig['>>'](-exponent);
      } else if (exponent > 0) {
        absResult = unshiftedBig['<<'](exponent);
      }
      if (isNegative) return absResult._negate();
      return absResult;
    }
    _negate() {
      if (this[_used] === 0) return this;
      return new core._BigIntImpl.__(!dart.test(this[_isNegative]), this[_used], this[_digits]);
    }
    abs() {
      return dart.test(this[_isNegative]) ? this._negate() : this;
    }
    [_dlShift](n) {
      let used = this[_used];
      if (used === 0) {
        return core._BigIntImpl.zero;
      }
      let resultUsed = dart.notNull(used) + dart.notNull(n);
      let digits = this[_digits];
      let resultDigits = typed_data.Uint16List.new(resultUsed);
      for (let i = dart.notNull(used) - 1; i >= 0; i--) {
        resultDigits[$_set](i + dart.notNull(n), digits[$_get](i));
      }
      return new core._BigIntImpl.__(this[_isNegative], resultUsed, resultDigits);
    }
    static _dlShiftDigits(xDigits, xUsed, n, resultDigits) {
      if (xUsed === 0) {
        return 0;
      }
      if (n === 0 && resultDigits == xDigits) {
        return xUsed;
      }
      let resultUsed = dart.notNull(xUsed) + dart.notNull(n);
      for (let i = dart.notNull(xUsed) - 1; i >= 0; i--) {
        resultDigits[$_set](i + dart.notNull(n), xDigits[$_get](i));
      }
      for (let i = dart.notNull(n) - 1; i >= 0; i--) {
        resultDigits[$_set](i, 0);
      }
      return resultUsed;
    }
    [_drShift](n) {
      let used = this[_used];
      if (used === 0) {
        return core._BigIntImpl.zero;
      }
      let resultUsed = dart.notNull(used) - dart.notNull(n);
      if (resultUsed <= 0) {
        return dart.test(this[_isNegative]) ? core._BigIntImpl._minusOne : core._BigIntImpl.zero;
      }
      let digits = this[_digits];
      let resultDigits = typed_data.Uint16List.new(resultUsed);
      for (let i = n; dart.notNull(i) < dart.notNull(used); i = dart.notNull(i) + 1) {
        resultDigits[$_set](dart.notNull(i) - dart.notNull(n), digits[$_get](i));
      }
      let result = new core._BigIntImpl.__(this[_isNegative], resultUsed, resultDigits);
      if (dart.test(this[_isNegative])) {
        for (let i = 0; i < dart.notNull(n); i++) {
          if (digits[$_get](i) !== 0) {
            return result['-'](core._BigIntImpl.one);
          }
        }
      }
      return result;
    }
    static _lsh(xDigits, xUsed, n, resultDigits) {
      if (!(dart.notNull(xUsed) > 0)) dart.assertFailed();
      let digitShift = (dart.notNull(n) / 16)[$truncate]();
      let bitShift = n[$modulo](16);
      let carryBitShift = 16 - bitShift;
      let bitMask = (1)[$leftShift](carryBitShift) - 1;
      let carry = 0;
      for (let i = dart.notNull(xUsed) - 1; i >= 0; i--) {
        let digit = xDigits[$_get](i);
        resultDigits[$_set](i + digitShift + 1, (digit[$rightShift](carryBitShift) | carry) >>> 0);
        carry = ((dart.notNull(digit) & bitMask) >>> 0)[$leftShift](bitShift);
      }
      resultDigits[$_set](digitShift, carry);
    }
    ['<<'](shiftAmount) {
      if (dart.notNull(shiftAmount) < 0) {
        dart.throw(new core.ArgumentError.new("shift-amount must be posititve " + dart.str(shiftAmount)));
      }
      if (dart.test(this[_isZero])) return this;
      let digitShift = (dart.notNull(shiftAmount) / 16)[$truncate]();
      let bitShift = shiftAmount[$modulo](16);
      if (bitShift === 0) {
        return this[_dlShift](digitShift);
      }
      let resultUsed = dart.notNull(this[_used]) + digitShift + 1;
      let resultDigits = typed_data.Uint16List.new(resultUsed);
      core._BigIntImpl._lsh(this[_digits], this[_used], shiftAmount, resultDigits);
      return new core._BigIntImpl.__(this[_isNegative], resultUsed, resultDigits);
    }
    static _lShiftDigits(xDigits, xUsed, n, resultDigits) {
      let digitsShift = (dart.notNull(n) / 16)[$truncate]();
      let bitShift = n[$modulo](16);
      if (bitShift === 0) {
        return core._BigIntImpl._dlShiftDigits(xDigits, xUsed, digitsShift, resultDigits);
      }
      let resultUsed = dart.notNull(xUsed) + digitsShift + 1;
      core._BigIntImpl._lsh(xDigits, xUsed, n, resultDigits);
      let i = digitsShift;
      while (--i >= 0) {
        resultDigits[$_set](i, 0);
      }
      if (resultDigits[$_get](resultUsed - 1) === 0) {
        resultUsed--;
      }
      return resultUsed;
    }
    static _rsh(xDigits, xUsed, n, resultDigits) {
      if (!(dart.notNull(xUsed) > 0)) dart.assertFailed();
      let digitsShift = (dart.notNull(n) / 16)[$truncate]();
      let bitShift = n[$modulo](16);
      let carryBitShift = 16 - bitShift;
      let bitMask = (1)[$leftShift](bitShift) - 1;
      let carry = xDigits[$_get](digitsShift)[$rightShift](bitShift);
      let last = dart.notNull(xUsed) - digitsShift - 1;
      for (let i = 0; i < last; i++) {
        let digit = xDigits[$_get](i + digitsShift + 1);
        resultDigits[$_set](i, (((dart.notNull(digit) & bitMask) >>> 0)[$leftShift](carryBitShift) | carry) >>> 0);
        carry = digit[$rightShift](bitShift);
      }
      resultDigits[$_set](last, carry);
    }
    ['>>'](shiftAmount) {
      if (dart.notNull(shiftAmount) < 0) {
        dart.throw(new core.ArgumentError.new("shift-amount must be posititve " + dart.str(shiftAmount)));
      }
      if (dart.test(this[_isZero])) return this;
      let digitShift = (dart.notNull(shiftAmount) / 16)[$truncate]();
      let bitShift = shiftAmount[$modulo](16);
      if (bitShift === 0) {
        return this[_drShift](digitShift);
      }
      let used = this[_used];
      let resultUsed = dart.notNull(used) - digitShift;
      if (resultUsed <= 0) {
        return dart.test(this[_isNegative]) ? core._BigIntImpl._minusOne : core._BigIntImpl.zero;
      }
      let digits = this[_digits];
      let resultDigits = typed_data.Uint16List.new(resultUsed);
      core._BigIntImpl._rsh(digits, used, shiftAmount, resultDigits);
      let result = new core._BigIntImpl.__(this[_isNegative], resultUsed, resultDigits);
      if (dart.test(this[_isNegative])) {
        if ((dart.notNull(digits[$_get](digitShift)) & (1)[$leftShift](bitShift) - 1) !== 0) {
          return result['-'](core._BigIntImpl.one);
        }
        for (let i = 0; i < digitShift; i++) {
          if (digits[$_get](i) !== 0) {
            return result['-'](core._BigIntImpl.one);
          }
        }
      }
      return result;
    }
    [_absCompare](bigInt) {
      let other = core._BigIntImpl._check(bigInt);
      return core._BigIntImpl._compareDigits(this[_digits], this[_used], other[_digits], other[_used]);
    }
    compareTo(bigInt) {
      core.BigInt._check(bigInt);
      let other = core._BigIntImpl._check(bigInt);
      if (this[_isNegative] == other[_isNegative]) {
        let result = this[_absCompare](other);
        return dart.test(this[_isNegative]) ? 0 - dart.notNull(result) : result;
      }
      return dart.test(this[_isNegative]) ? -1 : 1;
    }
    static _compareDigits(digits, used, otherDigits, otherUsed) {
      let result = dart.notNull(used) - dart.notNull(otherUsed);
      if (result === 0) {
        for (let i = dart.notNull(used) - 1; i >= 0; i--) {
          result = dart.notNull(digits[$_get](i)) - dart.notNull(otherDigits[$_get](i));
          if (result !== 0) return result;
        }
      }
      return result;
    }
    static _absAdd(digits, used, otherDigits, otherUsed, resultDigits) {
      if (!(dart.notNull(used) >= dart.notNull(otherUsed) && dart.notNull(otherUsed) > 0)) dart.assertFailed();
      let carry = 0;
      for (let i = 0; i < dart.notNull(otherUsed); i++) {
        carry = carry + (dart.notNull(digits[$_get](i)) + dart.notNull(otherDigits[$_get](i)));
        resultDigits[$_set](i, carry & 65535);
        carry = carry[$rightShift](16);
      }
      for (let i = otherUsed; dart.notNull(i) < dart.notNull(used); i = dart.notNull(i) + 1) {
        carry = carry + dart.notNull(digits[$_get](i));
        resultDigits[$_set](i, carry & 65535);
        carry = carry[$rightShift](16);
      }
      resultDigits[$_set](used, carry);
    }
    static _absSub(digits, used, otherDigits, otherUsed, resultDigits) {
      if (!(dart.notNull(used) >= dart.notNull(otherUsed) && dart.notNull(otherUsed) > 0)) dart.assertFailed();
      let carry = 0;
      for (let i = 0; i < dart.notNull(otherUsed); i++) {
        carry = carry + (dart.notNull(digits[$_get](i)) - dart.notNull(otherDigits[$_get](i)));
        resultDigits[$_set](i, carry & 65535);
        carry = 0 - (carry >> 16 & 1);
      }
      for (let i = otherUsed; dart.notNull(i) < dart.notNull(used); i = dart.notNull(i) + 1) {
        carry = carry + dart.notNull(digits[$_get](i));
        resultDigits[$_set](i, carry & 65535);
        carry = 0 - (carry >> 16 & 1);
      }
    }
    [_absAddSetSign](other, isNegative) {
      let used = this[_used];
      let otherUsed = other[_used];
      if (dart.notNull(used) < dart.notNull(otherUsed)) {
        return other[_absAddSetSign](this, isNegative);
      }
      if (used === 0) {
        if (!!dart.test(isNegative)) dart.assertFailed();
        return core._BigIntImpl.zero;
      }
      if (otherUsed === 0) {
        return this[_isNegative] == isNegative ? this : this._negate();
      }
      let resultUsed = dart.notNull(used) + 1;
      let resultDigits = typed_data.Uint16List.new(resultUsed);
      core._BigIntImpl._absAdd(this[_digits], used, other[_digits], otherUsed, resultDigits);
      return new core._BigIntImpl.__(isNegative, resultUsed, resultDigits);
    }
    [_absSubSetSign](other, isNegative) {
      if (!(dart.notNull(this[_absCompare](other)) >= 0)) dart.assertFailed();
      let used = this[_used];
      if (used === 0) {
        if (!!dart.test(isNegative)) dart.assertFailed();
        return core._BigIntImpl.zero;
      }
      let otherUsed = other[_used];
      if (otherUsed === 0) {
        return this[_isNegative] == isNegative ? this : this._negate();
      }
      let resultDigits = typed_data.Uint16List.new(used);
      core._BigIntImpl._absSub(this[_digits], used, other[_digits], otherUsed, resultDigits);
      return new core._BigIntImpl.__(isNegative, used, resultDigits);
    }
    [_absAndSetSign](other, isNegative) {
      let resultUsed = core._min(this[_used], other[_used]);
      let digits = this[_digits];
      let otherDigits = other[_digits];
      let resultDigits = typed_data.Uint16List.new(resultUsed);
      for (let i = 0; i < dart.notNull(resultUsed); i++) {
        resultDigits[$_set](i, (dart.notNull(digits[$_get](i)) & dart.notNull(otherDigits[$_get](i))) >>> 0);
      }
      return new core._BigIntImpl.__(isNegative, resultUsed, resultDigits);
    }
    [_absAndNotSetSign](other, isNegative) {
      let resultUsed = this[_used];
      let digits = this[_digits];
      let otherDigits = other[_digits];
      let resultDigits = typed_data.Uint16List.new(resultUsed);
      let m = core._min(resultUsed, other[_used]);
      for (let i = 0; i < dart.notNull(m); i++) {
        resultDigits[$_set](i, (dart.notNull(digits[$_get](i)) & dart.notNull(core.int._check(~dart.notNull(otherDigits[$_get](i)) >>> 0))) >>> 0);
      }
      for (let i = m; dart.notNull(i) < dart.notNull(resultUsed); i = dart.notNull(i) + 1) {
        resultDigits[$_set](i, digits[$_get](i));
      }
      return new core._BigIntImpl.__(isNegative, resultUsed, resultDigits);
    }
    [_absOrSetSign](other, isNegative) {
      let used = this[_used];
      let otherUsed = other[_used];
      let resultUsed = core._max(used, otherUsed);
      let digits = this[_digits];
      let otherDigits = other[_digits];
      let resultDigits = typed_data.Uint16List.new(resultUsed);
      let l = null, m = null;
      if (dart.notNull(used) < dart.notNull(otherUsed)) {
        l = other;
        m = used;
      } else {
        l = this;
        m = otherUsed;
      }
      for (let i = 0; i < dart.notNull(core.num._check(m)); i++) {
        resultDigits[$_set](i, (dart.notNull(digits[$_get](i)) | dart.notNull(otherDigits[$_get](i))) >>> 0);
      }
      let lDigits = dart.dload(l, _digits);
      for (let i = m; dart.dtest(dart.dsend(i, '<', [resultUsed])); i = dart.dsend(i, '+', [1])) {
        resultDigits[$_set](core.int._check(i), core.int._check(dart.dindex(lDigits, i)));
      }
      return new core._BigIntImpl.__(isNegative, resultUsed, resultDigits);
    }
    [_absXorSetSign](other, isNegative) {
      let used = this[_used];
      let otherUsed = other[_used];
      let resultUsed = core._max(used, otherUsed);
      let digits = this[_digits];
      let otherDigits = other[_digits];
      let resultDigits = typed_data.Uint16List.new(resultUsed);
      let l = null, m = null;
      if (dart.notNull(used) < dart.notNull(otherUsed)) {
        l = other;
        m = used;
      } else {
        l = this;
        m = otherUsed;
      }
      for (let i = 0; i < dart.notNull(core.num._check(m)); i++) {
        resultDigits[$_set](i, (dart.notNull(digits[$_get](i)) ^ dart.notNull(otherDigits[$_get](i))) >>> 0);
      }
      let lDigits = dart.dload(l, _digits);
      for (let i = m; dart.dtest(dart.dsend(i, '<', [resultUsed])); i = dart.dsend(i, '+', [1])) {
        resultDigits[$_set](core.int._check(i), core.int._check(dart.dindex(lDigits, i)));
      }
      return new core._BigIntImpl.__(isNegative, resultUsed, resultDigits);
    }
    ['&'](bigInt) {
      let other = core._BigIntImpl._check(bigInt);
      if (dart.test(this[_isZero]) || dart.test(other[_isZero])) return core._BigIntImpl.zero;
      if (this[_isNegative] == other[_isNegative]) {
        if (dart.test(this[_isNegative])) {
          let this1 = this[_absSubSetSign](core._BigIntImpl.one, true);
          let other1 = other[_absSubSetSign](core._BigIntImpl.one, true);
          return this1[_absOrSetSign](other1, true)[_absAddSetSign](core._BigIntImpl.one, true);
        }
        return this[_absAndSetSign](other, false);
      }
      let p = null, n = null;
      if (dart.test(this[_isNegative])) {
        p = other;
        n = this;
      } else {
        p = this;
        n = other;
      }
      let n1 = dart.dsend(n, _absSubSetSign, [core._BigIntImpl.one, false]);
      return core._BigIntImpl._check(dart.dsend(p, _absAndNotSetSign, [n1, false]));
    }
    ['|'](bigInt) {
      let other = core._BigIntImpl._check(bigInt);
      if (dart.test(this[_isZero])) return other;
      if (dart.test(other[_isZero])) return this;
      if (this[_isNegative] == other[_isNegative]) {
        if (dart.test(this[_isNegative])) {
          let this1 = this[_absSubSetSign](core._BigIntImpl.one, true);
          let other1 = other[_absSubSetSign](core._BigIntImpl.one, true);
          return this1[_absAndSetSign](other1, true)[_absAddSetSign](core._BigIntImpl.one, true);
        }
        return this[_absOrSetSign](other, false);
      }
      let p = null, n = null;
      if (dart.test(this[_isNegative])) {
        p = other;
        n = this;
      } else {
        p = this;
        n = other;
      }
      let n1 = dart.dsend(n, _absSubSetSign, [core._BigIntImpl.one, true]);
      return core._BigIntImpl._check(dart.dsend(dart.dsend(n1, _absAndNotSetSign, [p, true]), _absAddSetSign, [core._BigIntImpl.one, true]));
    }
    ['^'](bigInt) {
      let other = core._BigIntImpl._check(bigInt);
      if (dart.test(this[_isZero])) return other;
      if (dart.test(other[_isZero])) return this;
      if (this[_isNegative] == other[_isNegative]) {
        if (dart.test(this[_isNegative])) {
          let this1 = this[_absSubSetSign](core._BigIntImpl.one, true);
          let other1 = other[_absSubSetSign](core._BigIntImpl.one, true);
          return this1[_absXorSetSign](other1, false);
        }
        return this[_absXorSetSign](other, false);
      }
      let p = null, n = null;
      if (dart.test(this[_isNegative])) {
        p = other;
        n = this;
      } else {
        p = this;
        n = other;
      }
      let n1 = dart.dsend(n, _absSubSetSign, [core._BigIntImpl.one, true]);
      return core._BigIntImpl._check(dart.dsend(dart.dsend(p, _absXorSetSign, [n1, true]), _absAddSetSign, [core._BigIntImpl.one, true]));
    }
    ['~']() {
      if (dart.test(this[_isZero])) return core._BigIntImpl._minusOne;
      if (dart.test(this[_isNegative])) {
        return this[_absSubSetSign](core._BigIntImpl.one, false);
      }
      return this[_absAddSetSign](core._BigIntImpl.one, true);
    }
    ['+'](bigInt) {
      let other = core._BigIntImpl._check(bigInt);
      if (dart.test(this[_isZero])) return other;
      if (dart.test(other[_isZero])) return this;
      let isNegative = this[_isNegative];
      if (isNegative == other[_isNegative]) {
        return this[_absAddSetSign](other, isNegative);
      }
      if (dart.notNull(this[_absCompare](other)) >= 0) {
        return this[_absSubSetSign](other, isNegative);
      }
      return other[_absSubSetSign](this, !dart.test(isNegative));
    }
    ['-'](bigInt) {
      let other = core._BigIntImpl._check(bigInt);
      if (dart.test(this[_isZero])) return other._negate();
      if (dart.test(other[_isZero])) return this;
      let isNegative = this[_isNegative];
      if (isNegative != other[_isNegative]) {
        return this[_absAddSetSign](other, isNegative);
      }
      if (dart.notNull(this[_absCompare](other)) >= 0) {
        return this[_absSubSetSign](other, isNegative);
      }
      return other[_absSubSetSign](this, !dart.test(isNegative));
    }
    static _mulAdd(x, multiplicandDigits, i, accumulatorDigits, j, n) {
      if (x === 0) {
        return;
      }
      let c = 0;
      while ((n = dart.notNull(n) - 1) >= 0) {
        let product = dart.notNull(x) * dart.notNull(multiplicandDigits[$_get]((() => {
          let x = i;
          i = dart.notNull(x) + 1;
          return x;
        })()));
        let combined = product + dart.notNull(accumulatorDigits[$_get](j)) + c;
        accumulatorDigits[$_set]((() => {
          let x = j;
          j = dart.notNull(x) + 1;
          return x;
        })(), combined & 65535);
        c = (combined / 65536)[$truncate]();
      }
      while (c !== 0) {
        let l = dart.notNull(accumulatorDigits[$_get](j)) + c;
        accumulatorDigits[$_set]((() => {
          let x = j;
          j = dart.notNull(x) + 1;
          return x;
        })(), l & 65535);
        c = (l / 65536)[$truncate]();
      }
    }
    ['*'](bigInt) {
      let other = core._BigIntImpl._check(bigInt);
      let used = this[_used];
      let otherUsed = other[_used];
      if (used === 0 || otherUsed === 0) {
        return core._BigIntImpl.zero;
      }
      let resultUsed = dart.notNull(used) + dart.notNull(otherUsed);
      let digits = this[_digits];
      let otherDigits = other[_digits];
      let resultDigits = typed_data.Uint16List.new(resultUsed);
      let i = 0;
      while (i < dart.notNull(otherUsed)) {
        core._BigIntImpl._mulAdd(otherDigits[$_get](i), digits, 0, resultDigits, i, used);
        i++;
      }
      return new core._BigIntImpl.__(this[_isNegative] != other[_isNegative], resultUsed, resultDigits);
    }
    static _mulDigits(xDigits, xUsed, otherDigits, otherUsed, resultDigits) {
      let resultUsed = dart.notNull(xUsed) + dart.notNull(otherUsed);
      let i = resultUsed;
      if (!(dart.notNull(resultDigits[$length]) >= i)) dart.assertFailed();
      while (--i >= 0) {
        resultDigits[$_set](i, 0);
      }
      i = 0;
      while (i < dart.notNull(otherUsed)) {
        core._BigIntImpl._mulAdd(otherDigits[$_get](i), xDigits, 0, resultDigits, i, xUsed);
        i++;
      }
      return resultUsed;
    }
    static _estimateQuotientDigit(topDigitDivisor, digits, i) {
      if (digits[$_get](i) == topDigitDivisor) return 65535;
      let quotientDigit = (((dart.notNull(digits[$_get](i)) << 16 | dart.notNull(digits[$_get](dart.notNull(i) - 1))) >>> 0) / dart.notNull(topDigitDivisor))[$truncate]();
      if (quotientDigit > 65535) return 65535;
      return quotientDigit;
    }
    [_div](bigInt) {
      let other = core._BigIntImpl._check(bigInt);
      if (!(dart.notNull(other[_used]) > 0)) dart.assertFailed();
      if (dart.notNull(this[_used]) < dart.notNull(other[_used])) {
        return core._BigIntImpl.zero;
      }
      this[_divRem](other);
      let lastQuo_used = dart.notNull(core._BigIntImpl._lastQuoRemUsed) - dart.notNull(core._BigIntImpl._lastRemUsed);
      let quo_digits = core._BigIntImpl._cloneDigits(core._BigIntImpl._lastQuoRemDigits, core._BigIntImpl._lastRemUsed, core._BigIntImpl._lastQuoRemUsed, lastQuo_used);
      let quo = new core._BigIntImpl.__(false, lastQuo_used, quo_digits);
      if (this[_isNegative] != other[_isNegative] && dart.notNull(quo[_used]) > 0) {
        quo = quo._negate();
      }
      return quo;
    }
    [_rem](bigInt) {
      let other = core._BigIntImpl._check(bigInt);
      if (!(dart.notNull(other[_used]) > 0)) dart.assertFailed();
      if (dart.notNull(this[_used]) < dart.notNull(other[_used])) {
        return this;
      }
      this[_divRem](other);
      let remDigits = core._BigIntImpl._cloneDigits(core._BigIntImpl._lastQuoRemDigits, 0, core._BigIntImpl._lastRemUsed, core._BigIntImpl._lastRemUsed);
      let rem = new core._BigIntImpl.__(false, core._BigIntImpl._lastRemUsed, remDigits);
      if (dart.notNull(core._BigIntImpl._lastRem_nsh) > 0) {
        rem = rem['>>'](core._BigIntImpl._lastRem_nsh);
      }
      if (dart.test(this[_isNegative]) && dart.notNull(rem[_used]) > 0) {
        rem = rem._negate();
      }
      return rem;
    }
    [_divRem](other) {
      if (this[_used] == core._BigIntImpl._lastDividendUsed && other[_used] == core._BigIntImpl._lastDivisorUsed && this[_digits] == core._BigIntImpl._lastDividendDigits && other[_digits] == core._BigIntImpl._lastDivisorDigits) {
        return;
      }
      if (!(dart.notNull(this[_used]) >= dart.notNull(other[_used]))) dart.assertFailed();
      let nsh = 16 - other[_digits][$_get](dart.notNull(other[_used]) - 1)[$bitLength];
      let resultDigits = null;
      let resultUsed = null;
      let yDigits = null;
      let yUsed = null;
      if (nsh > 0) {
        yDigits = typed_data.Uint16List.new(dart.notNull(other[_used]) + 5);
        yUsed = core._BigIntImpl._lShiftDigits(other[_digits], other[_used], nsh, yDigits);
        resultDigits = typed_data.Uint16List.new(dart.notNull(this[_used]) + 5);
        resultUsed = core._BigIntImpl._lShiftDigits(this[_digits], this[_used], nsh, resultDigits);
      } else {
        yDigits = other[_digits];
        yUsed = other[_used];
        resultDigits = core._BigIntImpl._cloneDigits(this[_digits], 0, this[_used], dart.notNull(this[_used]) + 2);
        resultUsed = this[_used];
      }
      let topDigitDivisor = yDigits[$_get](dart.notNull(yUsed) - 1);
      let i = resultUsed;
      let j = dart.notNull(i) - dart.notNull(yUsed);
      let tmpDigits = typed_data.Uint16List.new(i);
      let tmpUsed = core._BigIntImpl._dlShiftDigits(yDigits, yUsed, j, tmpDigits);
      if (dart.notNull(core._BigIntImpl._compareDigits(resultDigits, resultUsed, tmpDigits, tmpUsed)) >= 0) {
        if (!(i == resultUsed)) dart.assertFailed();
        resultDigits[$_set]((() => {
          let x = resultUsed;
          resultUsed = dart.notNull(x) + 1;
          return x;
        })(), 1);
        core._BigIntImpl._absSub(resultDigits, resultUsed, tmpDigits, tmpUsed, resultDigits);
      } else {
        resultDigits[$_set]((() => {
          let x = resultUsed;
          resultUsed = dart.notNull(x) + 1;
          return x;
        })(), 0);
      }
      let nyDigits = typed_data.Uint16List.new(dart.notNull(yUsed) + 2);
      nyDigits[$_set](yUsed, 1);
      core._BigIntImpl._absSub(nyDigits, dart.notNull(yUsed) + 1, yDigits, yUsed, nyDigits);
      i = dart.notNull(i) - 1;
      while (j > 0) {
        let estimatedQuotientDigit = core._BigIntImpl._estimateQuotientDigit(topDigitDivisor, resultDigits, i);
        j--;
        core._BigIntImpl._mulAdd(estimatedQuotientDigit, nyDigits, 0, resultDigits, j, yUsed);
        if (dart.notNull(resultDigits[$_get](i)) < dart.notNull(estimatedQuotientDigit)) {
          let tmpUsed = core._BigIntImpl._dlShiftDigits(nyDigits, yUsed, j, tmpDigits);
          core._BigIntImpl._absSub(resultDigits, resultUsed, tmpDigits, tmpUsed, resultDigits);
          while (dart.notNull(resultDigits[$_get](i)) < (estimatedQuotientDigit = dart.notNull(estimatedQuotientDigit) - 1)) {
            core._BigIntImpl._absSub(resultDigits, resultUsed, tmpDigits, tmpUsed, resultDigits);
          }
        }
        i = dart.notNull(i) - 1;
      }
      core._BigIntImpl._lastDividendDigits = this[_digits];
      core._BigIntImpl._lastDividendUsed = this[_used];
      core._BigIntImpl._lastDivisorDigits = other[_digits];
      core._BigIntImpl._lastDivisorUsed = other[_used];
      core._BigIntImpl._lastQuoRemDigits = resultDigits;
      core._BigIntImpl._lastQuoRemUsed = resultUsed;
      core._BigIntImpl._lastRemUsed = yUsed;
      core._BigIntImpl._lastRem_nsh = nsh;
    }
    get hashCode() {
      function combine(hash, value) {
        hash = 536870911 & dart.notNull(hash) + dart.notNull(value);
        hash = 536870911 & dart.notNull(hash) + ((524287 & dart.notNull(hash)) << 10);
        return (dart.notNull(hash) ^ hash[$rightShift](6)) >>> 0;
      }
      dart.fn(combine, intAndintToint());
      function finish(hash) {
        hash = 536870911 & dart.notNull(hash) + ((67108863 & dart.notNull(hash)) << 3);
        hash = (dart.notNull(hash) ^ hash[$rightShift](11)) >>> 0;
        return 536870911 & dart.notNull(hash) + ((16383 & dart.notNull(hash)) << 15);
      }
      dart.fn(finish, intToint());
      if (dart.test(this[_isZero])) return 6707;
      let hash = dart.test(this[_isNegative]) ? 83585 : 429689;
      for (let i = 0; i < dart.notNull(this[_used]); i++) {
        hash = combine(hash, this[_digits][$_get](i));
      }
      return finish(hash);
    }
    _equals(other) {
      return core._BigIntImpl.is(other) && this.compareTo(other) === 0;
    }
    get bitLength() {
      if (this[_used] === 0) return 0;
      if (dart.test(this[_isNegative])) return this['~']().bitLength;
      return 16 * (dart.notNull(this[_used]) - 1) + this[_digits][$_get](dart.notNull(this[_used]) - 1)[$bitLength];
    }
    ['~/'](bigInt) {
      let other = core._BigIntImpl._check(bigInt);
      if (other[_used] === 0) {
        dart.throw(const$41 || (const$41 = dart.const(new core.IntegerDivisionByZeroException.new())));
      }
      return this[_div](other);
    }
    remainder(bigInt) {
      let other = core._BigIntImpl._check(bigInt);
      if (other[_used] === 0) {
        dart.throw(const$42 || (const$42 = dart.const(new core.IntegerDivisionByZeroException.new())));
      }
      return this[_rem](other);
    }
    ['/'](other) {
      return dart.notNull(this.toDouble()) / dart.notNull(other.toDouble());
    }
    ['<'](other) {
      return dart.notNull(this.compareTo(other)) < 0;
    }
    ['<='](other) {
      return dart.notNull(this.compareTo(other)) <= 0;
    }
    ['>'](other) {
      return dart.notNull(this.compareTo(other)) > 0;
    }
    ['>='](other) {
      return dart.notNull(this.compareTo(other)) >= 0;
    }
    ['%'](bigInt) {
      let other = core._BigIntImpl._check(bigInt);
      if (other[_used] === 0) {
        dart.throw(const$43 || (const$43 = dart.const(new core.IntegerDivisionByZeroException.new())));
      }
      let result = this[_rem](other);
      if (dart.test(result[_isNegative])) {
        if (dart.test(other[_isNegative])) {
          result = result['-'](other);
        } else {
          result = result['+'](other);
        }
      }
      return result;
    }
    get sign() {
      if (this[_used] === 0) return 0;
      return dart.test(this[_isNegative]) ? -1 : 1;
    }
    get isEven() {
      return this[_used] === 0 || (dart.notNull(this[_digits][$_get](0)) & 1) === 0;
    }
    get isOdd() {
      return !dart.test(this.isEven);
    }
    get isNegative() {
      return this[_isNegative];
    }
    pow(exponent) {
      if (dart.notNull(exponent) < 0) {
        dart.throw(new core.ArgumentError.new("Exponent must not be negative: " + dart.str(exponent)));
      }
      if (exponent === 0) return core._BigIntImpl.one;
      let result = core._BigIntImpl.one;
      let base = this;
      while (exponent !== 0) {
        if ((dart.notNull(exponent) & 1) === 1) {
          result = result['*'](base);
        }
        exponent = exponent[$rightShift](1);
        if (exponent !== 0) {
          base = base['*'](base);
        }
      }
      return result;
    }
    modPow(bigExponent, bigModulus) {
      let exponent = core._BigIntImpl._check(bigExponent);
      let modulus = core._BigIntImpl._check(bigModulus);
      if (dart.test(exponent[_isNegative])) {
        dart.throw(new core.ArgumentError.new("exponent must be positive: " + dart.str(exponent)));
      }
      if (dart.test(modulus['<='](core._BigIntImpl.zero))) {
        dart.throw(new core.ArgumentError.new("modulus must be strictly positive: " + dart.str(modulus)));
      }
      if (dart.test(exponent[_isZero])) return core._BigIntImpl.one;
      let modulusUsed = modulus[_used];
      let modulusUsed2p4 = 2 * dart.notNull(modulusUsed) + 4;
      let exponentBitlen = exponent.bitLength;
      if (dart.notNull(exponentBitlen) <= 0) return core._BigIntImpl.one;
      let z = new core._BigIntClassic.new(modulus);
      let resultDigits = typed_data.Uint16List.new(modulusUsed2p4);
      let result2Digits = typed_data.Uint16List.new(modulusUsed2p4);
      let gDigits = typed_data.Uint16List.new(modulusUsed);
      let gUsed = z.convert(this, gDigits);
      for (let j = dart.notNull(gUsed) - 1; j >= 0; j--) {
        resultDigits[$_set](j, gDigits[$_get](j));
      }
      let resultUsed = gUsed;
      let result2Used = null;
      for (let i = dart.notNull(exponentBitlen) - 2; i >= 0; i--) {
        result2Used = z.sqr(resultDigits, resultUsed, result2Digits);
        if (!dart.test(exponent['&'](core._BigIntImpl.one['<<'](i))[_isZero])) {
          resultUsed = z.mul(result2Digits, core.int._check(result2Used), gDigits, gUsed, resultDigits);
        } else {
          let tmpDigits = resultDigits;
          let tmpUsed = resultUsed;
          resultDigits = result2Digits;
          resultUsed = core.int._check(result2Used);
          result2Digits = tmpDigits;
          result2Used = tmpUsed;
        }
      }
      return z.revert(resultDigits, resultUsed);
    }
    static _binaryGcd(x, y, inv) {
      let xDigits = x[_digits];
      let yDigits = y[_digits];
      let xUsed = x[_used];
      let yUsed = y[_used];
      let maxUsed = dart.notNull(xUsed) > dart.notNull(yUsed) ? xUsed : yUsed;
      let unshiftedMaxUsed = maxUsed;
      xDigits = core._BigIntImpl._cloneDigits(xDigits, 0, xUsed, maxUsed);
      yDigits = core._BigIntImpl._cloneDigits(yDigits, 0, yUsed, maxUsed);
      let shiftAmount = 0;
      if (dart.test(inv)) {
        if (yUsed === 1 && yDigits[$_get](0) === 1) return core._BigIntImpl.one;
        if (yUsed === 0 || yDigits[$_get](0)[$isEven] && xDigits[$_get](0)[$isEven]) {
          dart.throw(core.Exception.new("Not coprime"));
        }
      } else {
        if (dart.test(x[_isZero])) {
          dart.throw(new core.ArgumentError.value(0, "this", "must not be zero"));
        }
        if (dart.test(y[_isZero])) {
          dart.throw(new core.ArgumentError.value(0, "other", "must not be zero"));
        }
        if (xUsed === 1 && xDigits[$_get](0) === 1 || yUsed === 1 && yDigits[$_get](0) === 1) return core._BigIntImpl.one;
        while ((dart.notNull(xDigits[$_get](0)) & 1) === 0 && (dart.notNull(yDigits[$_get](0)) & 1) === 0) {
          core._BigIntImpl._rsh(xDigits, xUsed, 1, xDigits);
          core._BigIntImpl._rsh(yDigits, yUsed, 1, yDigits);
          shiftAmount++;
        }
        if (shiftAmount >= 16) {
          let digitShiftAmount = (shiftAmount / 16)[$truncate]();
          xUsed = dart.notNull(xUsed) - digitShiftAmount;
          yUsed = dart.notNull(yUsed) - digitShiftAmount;
          maxUsed = dart.notNull(maxUsed) - digitShiftAmount;
        }
        if ((dart.notNull(yDigits[$_get](0)) & 1) === 1) {
          let tmpDigits = xDigits;
          let tmpUsed = xUsed;
          xDigits = yDigits;
          xUsed = yUsed;
          yDigits = tmpDigits;
          yUsed = tmpUsed;
        }
      }
      let uDigits = core._BigIntImpl._cloneDigits(xDigits, 0, xUsed, unshiftedMaxUsed);
      let vDigits = core._BigIntImpl._cloneDigits(yDigits, 0, yUsed, dart.notNull(unshiftedMaxUsed) + 2);
      let ac = (dart.notNull(xDigits[$_get](0)) & 1) === 0;
      let abcdUsed = dart.notNull(maxUsed) + 1;
      let abcdLen = abcdUsed + 2;
      let aDigits = null, bDigits = null, cDigits = null, dDigits = null;
      let aIsNegative = null, bIsNegative = null, cIsNegative = null, dIsNegative = null;
      if (ac) {
        aDigits = typed_data.Uint16List.new(abcdLen);
        aIsNegative = false;
        dart.dsetindex(aDigits, 0, 1);
        cDigits = typed_data.Uint16List.new(abcdLen);
        cIsNegative = false;
      }
      bDigits = typed_data.Uint16List.new(abcdLen);
      bIsNegative = false;
      dDigits = typed_data.Uint16List.new(abcdLen);
      dIsNegative = false;
      dart.dsetindex(dDigits, 0, 1);
      while (true) {
        while ((dart.notNull(uDigits[$_get](0)) & 1) === 0) {
          core._BigIntImpl._rsh(uDigits, maxUsed, 1, uDigits);
          if (ac) {
            if (dart.equals(dart.dsend(dart.dindex(aDigits, 0), '&', [1]), 1) || dart.equals(dart.dsend(dart.dindex(bDigits, 0), '&', [1]), 1)) {
              if (dart.test(aIsNegative)) {
                if (!dart.equals(dart.dindex(aDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(aDigits), maxUsed, yDigits, maxUsed)) > 0) {
                  core._BigIntImpl._absSub(typed_data.Uint16List._check(aDigits), abcdUsed, yDigits, maxUsed, typed_data.Uint16List._check(aDigits));
                } else {
                  core._BigIntImpl._absSub(yDigits, maxUsed, typed_data.Uint16List._check(aDigits), maxUsed, typed_data.Uint16List._check(aDigits));
                  aIsNegative = false;
                }
              } else {
                core._BigIntImpl._absAdd(typed_data.Uint16List._check(aDigits), abcdUsed, yDigits, maxUsed, typed_data.Uint16List._check(aDigits));
              }
              if (dart.test(bIsNegative)) {
                core._BigIntImpl._absAdd(typed_data.Uint16List._check(bDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(bDigits));
              } else if (!dart.equals(dart.dindex(bDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(bDigits), maxUsed, xDigits, maxUsed)) > 0) {
                core._BigIntImpl._absSub(typed_data.Uint16List._check(bDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(bDigits));
              } else {
                core._BigIntImpl._absSub(xDigits, maxUsed, typed_data.Uint16List._check(bDigits), maxUsed, typed_data.Uint16List._check(bDigits));
                bIsNegative = true;
              }
            }
            core._BigIntImpl._rsh(typed_data.Uint16List._check(aDigits), abcdUsed, 1, typed_data.Uint16List._check(aDigits));
          } else if (dart.equals(dart.dsend(dart.dindex(bDigits, 0), '&', [1]), 1)) {
            if (dart.test(bIsNegative)) {
              core._BigIntImpl._absAdd(typed_data.Uint16List._check(bDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(bDigits));
            } else if (!dart.equals(dart.dindex(bDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(bDigits), maxUsed, xDigits, maxUsed)) > 0) {
              core._BigIntImpl._absSub(typed_data.Uint16List._check(bDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(bDigits));
            } else {
              core._BigIntImpl._absSub(xDigits, maxUsed, typed_data.Uint16List._check(bDigits), maxUsed, typed_data.Uint16List._check(bDigits));
              bIsNegative = true;
            }
          }
          core._BigIntImpl._rsh(typed_data.Uint16List._check(bDigits), abcdUsed, 1, typed_data.Uint16List._check(bDigits));
        }
        while ((dart.notNull(vDigits[$_get](0)) & 1) === 0) {
          core._BigIntImpl._rsh(vDigits, maxUsed, 1, vDigits);
          if (ac) {
            if (dart.equals(dart.dsend(dart.dindex(cDigits, 0), '&', [1]), 1) || dart.equals(dart.dsend(dart.dindex(dDigits, 0), '&', [1]), 1)) {
              if (dart.test(cIsNegative)) {
                if (!dart.equals(dart.dindex(cDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(cDigits), maxUsed, yDigits, maxUsed)) > 0) {
                  core._BigIntImpl._absSub(typed_data.Uint16List._check(cDigits), abcdUsed, yDigits, maxUsed, typed_data.Uint16List._check(cDigits));
                } else {
                  core._BigIntImpl._absSub(yDigits, maxUsed, typed_data.Uint16List._check(cDigits), maxUsed, typed_data.Uint16List._check(cDigits));
                  cIsNegative = false;
                }
              } else {
                core._BigIntImpl._absAdd(typed_data.Uint16List._check(cDigits), abcdUsed, yDigits, maxUsed, typed_data.Uint16List._check(cDigits));
              }
              if (dart.test(dIsNegative)) {
                core._BigIntImpl._absAdd(typed_data.Uint16List._check(dDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(dDigits));
              } else if (!dart.equals(dart.dindex(dDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(dDigits), maxUsed, xDigits, maxUsed)) > 0) {
                core._BigIntImpl._absSub(typed_data.Uint16List._check(dDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(dDigits));
              } else {
                core._BigIntImpl._absSub(xDigits, maxUsed, typed_data.Uint16List._check(dDigits), maxUsed, typed_data.Uint16List._check(dDigits));
                dIsNegative = true;
              }
            }
            core._BigIntImpl._rsh(typed_data.Uint16List._check(cDigits), abcdUsed, 1, typed_data.Uint16List._check(cDigits));
          } else if (dart.equals(dart.dsend(dart.dindex(dDigits, 0), '&', [1]), 1)) {
            if (dart.test(dIsNegative)) {
              core._BigIntImpl._absAdd(typed_data.Uint16List._check(dDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(dDigits));
            } else if (!dart.equals(dart.dindex(dDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(dDigits), maxUsed, xDigits, maxUsed)) > 0) {
              core._BigIntImpl._absSub(typed_data.Uint16List._check(dDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(dDigits));
            } else {
              core._BigIntImpl._absSub(xDigits, maxUsed, typed_data.Uint16List._check(dDigits), maxUsed, typed_data.Uint16List._check(dDigits));
              dIsNegative = true;
            }
          }
          core._BigIntImpl._rsh(typed_data.Uint16List._check(dDigits), abcdUsed, 1, typed_data.Uint16List._check(dDigits));
        }
        if (dart.notNull(core._BigIntImpl._compareDigits(uDigits, maxUsed, vDigits, maxUsed)) >= 0) {
          core._BigIntImpl._absSub(uDigits, maxUsed, vDigits, maxUsed, uDigits);
          if (ac) {
            if (aIsNegative == cIsNegative) {
              let a_cmp_c = core._BigIntImpl._compareDigits(typed_data.Uint16List._check(aDigits), abcdUsed, typed_data.Uint16List._check(cDigits), abcdUsed);
              if (dart.notNull(a_cmp_c) > 0) {
                core._BigIntImpl._absSub(typed_data.Uint16List._check(aDigits), abcdUsed, typed_data.Uint16List._check(cDigits), abcdUsed, typed_data.Uint16List._check(aDigits));
              } else {
                core._BigIntImpl._absSub(typed_data.Uint16List._check(cDigits), abcdUsed, typed_data.Uint16List._check(aDigits), abcdUsed, typed_data.Uint16List._check(aDigits));
                aIsNegative = !dart.test(aIsNegative) && a_cmp_c !== 0;
              }
            } else {
              core._BigIntImpl._absAdd(typed_data.Uint16List._check(aDigits), abcdUsed, typed_data.Uint16List._check(cDigits), abcdUsed, typed_data.Uint16List._check(aDigits));
            }
          }
          if (bIsNegative == dIsNegative) {
            let b_cmp_d = core._BigIntImpl._compareDigits(typed_data.Uint16List._check(bDigits), abcdUsed, typed_data.Uint16List._check(dDigits), abcdUsed);
            if (dart.notNull(b_cmp_d) > 0) {
              core._BigIntImpl._absSub(typed_data.Uint16List._check(bDigits), abcdUsed, typed_data.Uint16List._check(dDigits), abcdUsed, typed_data.Uint16List._check(bDigits));
            } else {
              core._BigIntImpl._absSub(typed_data.Uint16List._check(dDigits), abcdUsed, typed_data.Uint16List._check(bDigits), abcdUsed, typed_data.Uint16List._check(bDigits));
              bIsNegative = !dart.test(bIsNegative) && b_cmp_d !== 0;
            }
          } else {
            core._BigIntImpl._absAdd(typed_data.Uint16List._check(bDigits), abcdUsed, typed_data.Uint16List._check(dDigits), abcdUsed, typed_data.Uint16List._check(bDigits));
          }
        } else {
          core._BigIntImpl._absSub(vDigits, maxUsed, uDigits, maxUsed, vDigits);
          if (ac) {
            if (cIsNegative == aIsNegative) {
              let c_cmp_a = core._BigIntImpl._compareDigits(typed_data.Uint16List._check(cDigits), abcdUsed, typed_data.Uint16List._check(aDigits), abcdUsed);
              if (dart.notNull(c_cmp_a) > 0) {
                core._BigIntImpl._absSub(typed_data.Uint16List._check(cDigits), abcdUsed, typed_data.Uint16List._check(aDigits), abcdUsed, typed_data.Uint16List._check(cDigits));
              } else {
                core._BigIntImpl._absSub(typed_data.Uint16List._check(aDigits), abcdUsed, typed_data.Uint16List._check(cDigits), abcdUsed, typed_data.Uint16List._check(cDigits));
                cIsNegative = !dart.test(cIsNegative) && c_cmp_a !== 0;
              }
            } else {
              core._BigIntImpl._absAdd(typed_data.Uint16List._check(cDigits), abcdUsed, typed_data.Uint16List._check(aDigits), abcdUsed, typed_data.Uint16List._check(cDigits));
            }
          }
          if (dIsNegative == bIsNegative) {
            let d_cmp_b = core._BigIntImpl._compareDigits(typed_data.Uint16List._check(dDigits), abcdUsed, typed_data.Uint16List._check(bDigits), abcdUsed);
            if (dart.notNull(d_cmp_b) > 0) {
              core._BigIntImpl._absSub(typed_data.Uint16List._check(dDigits), abcdUsed, typed_data.Uint16List._check(bDigits), abcdUsed, typed_data.Uint16List._check(dDigits));
            } else {
              core._BigIntImpl._absSub(typed_data.Uint16List._check(bDigits), abcdUsed, typed_data.Uint16List._check(dDigits), abcdUsed, typed_data.Uint16List._check(dDigits));
              dIsNegative = !dart.test(dIsNegative) && d_cmp_b !== 0;
            }
          } else {
            core._BigIntImpl._absAdd(typed_data.Uint16List._check(dDigits), abcdUsed, typed_data.Uint16List._check(bDigits), abcdUsed, typed_data.Uint16List._check(dDigits));
          }
        }
        let i = maxUsed;
        while (dart.notNull(i) > 0 && uDigits[$_get](dart.notNull(i) - 1) === 0) {
          i = dart.notNull(i) - 1;
        }
        if (i === 0) break;
      }
      if (!dart.test(inv)) {
        if (shiftAmount > 0) {
          maxUsed = core._BigIntImpl._lShiftDigits(vDigits, maxUsed, shiftAmount, vDigits);
        }
        return new core._BigIntImpl.__(false, maxUsed, vDigits);
      }
      let i = dart.notNull(maxUsed) - 1;
      while (i > 0 && vDigits[$_get](i) === 0)
        --i;
      if (i !== 0 || vDigits[$_get](0) !== 1) {
        dart.throw(core.Exception.new("Not coprime"));
      }
      if (dart.test(dIsNegative)) {
        if (!dart.equals(dart.dindex(dDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(dDigits), maxUsed, xDigits, maxUsed)) > 0) {
          core._BigIntImpl._absSub(typed_data.Uint16List._check(dDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(dDigits));
          if (!dart.equals(dart.dindex(dDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(dDigits), maxUsed, xDigits, maxUsed)) > 0) {
            core._BigIntImpl._absSub(typed_data.Uint16List._check(dDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(dDigits));
          } else {
            core._BigIntImpl._absSub(xDigits, maxUsed, typed_data.Uint16List._check(dDigits), maxUsed, typed_data.Uint16List._check(dDigits));
            dIsNegative = false;
          }
        } else {
          core._BigIntImpl._absSub(xDigits, maxUsed, typed_data.Uint16List._check(dDigits), maxUsed, typed_data.Uint16List._check(dDigits));
          dIsNegative = false;
        }
      } else if (!dart.equals(dart.dindex(dDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(dDigits), maxUsed, xDigits, maxUsed)) > 0) {
        core._BigIntImpl._absSub(typed_data.Uint16List._check(dDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(dDigits));
        if (!dart.equals(dart.dindex(dDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(dDigits), maxUsed, xDigits, maxUsed)) > 0) {
          core._BigIntImpl._absSub(typed_data.Uint16List._check(dDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(dDigits));
        }
      }
      return new core._BigIntImpl.__(false, maxUsed, typed_data.Uint16List._check(dDigits));
    }
    modInverse(bigInt) {
      let modulus = core._BigIntImpl._check(bigInt);
      if (dart.test(modulus['<='](core._BigIntImpl.zero))) {
        dart.throw(new core.ArgumentError.new("Modulus must be strictly positive: " + dart.str(modulus)));
      }
      if (dart.equals(modulus, core._BigIntImpl.one)) return core._BigIntImpl.zero;
      let tmp = this;
      if (dart.test(tmp[_isNegative]) || dart.notNull(tmp[_absCompare](modulus)) >= 0) {
        tmp = tmp['%'](modulus);
      }
      return core._BigIntImpl._binaryGcd(modulus, tmp, true);
    }
    gcd(bigInt) {
      let other = core._BigIntImpl._check(bigInt);
      if (dart.test(this[_isZero])) return other.abs();
      if (dart.test(other[_isZero])) return this.abs();
      return core._BigIntImpl._binaryGcd(this, other, false);
    }
    toUnsigned(width) {
      return this['&'](core._BigIntImpl.one['<<'](width)['-'](core._BigIntImpl.one));
    }
    toSigned(width) {
      let signMask = core._BigIntImpl.one['<<'](dart.notNull(width) - 1);
      return this['&'](signMask['-'](core._BigIntImpl.one))['-'](this['&'](signMask));
    }
    get isValidInt() {
      if (dart.notNull(this[_used]) <= 3) return true;
      let asInt = this.toInt();
      if (!asInt[$toDouble]()[$isFinite]) return false;
      return this._equals(core._BigIntImpl._fromInt(asInt));
    }
    toInt() {
      let result = 0;
      for (let i = dart.notNull(this[_used]) - 1; i >= 0; i--) {
        result = result * 65536 + dart.notNull(this[_digits][$_get](i));
      }
      return dart.test(this[_isNegative]) ? -result : result;
    }
    toDouble() {
      let exponentBias = 1075;
      let maxDoubleExponent = 2046 - exponentBias;
      if (dart.test(this[_isZero])) return 0.0;
      let resultBits = typed_data.Uint8List.new(8);
      let length = 16 * (dart.notNull(this[_used]) - 1) + this[_digits][$_get](dart.notNull(this[_used]) - 1)[$bitLength];
      if (length - 53 > maxDoubleExponent) return core.double.infinity;
      if (dart.test(this[_isNegative])) resultBits[$_set](7, 128);
      let biasedExponent = length - 53 + exponentBias;
      resultBits[$_set](6, (biasedExponent & 15) << 4);
      let i$ = 7;
      resultBits[$_set](i$, (dart.notNull(resultBits[$_get](i$)) | biasedExponent[$rightShift](4)) >>> 0);
      let cachedBits = 0;
      let cachedBitsLength = 0;
      let digitIndex = dart.notNull(this[_used]) - 1;
      const readBits = (function(n) {
        while (cachedBitsLength < dart.notNull(n)) {
          let nextDigit = null;
          let nextDigitLength = 16;
          if (digitIndex < 0) {
            nextDigit = 0;
            digitIndex--;
          } else {
            nextDigit = this[_digits][$_get](digitIndex);
            if (digitIndex === dart.notNull(this[_used]) - 1) nextDigitLength = nextDigit[$bitLength];
            digitIndex--;
          }
          cachedBits = cachedBits[$leftShift](nextDigitLength) + dart.notNull(nextDigit);
          cachedBitsLength = cachedBitsLength + nextDigitLength;
        }
        let result = cachedBits[$rightShift](cachedBitsLength - dart.notNull(n));
        cachedBits = cachedBits - result[$leftShift](cachedBitsLength - dart.notNull(n));
        cachedBitsLength = cachedBitsLength - dart.notNull(n);
        return result;
      }).bind(this);
      dart.fn(readBits, intToint());
      let leadingBits = dart.notNull(readBits(5)) & 15;
      let i$0 = 6;
      resultBits[$_set](i$0, (dart.notNull(resultBits[$_get](i$0)) | leadingBits) >>> 0);
      for (let i = 5; i >= 0; i--) {
        resultBits[$_set](i, readBits(8));
      }
      function roundUp() {
        let carry = 1;
        for (let i = 0; i < 8; i++) {
          if (carry === 0) break;
          let sum = dart.notNull(resultBits[$_get](i)) + carry;
          resultBits[$_set](i, sum & 255);
          carry = sum[$rightShift](8);
        }
      }
      dart.fn(roundUp, VoidTovoid());
      if (readBits(1) === 1) {
        if (resultBits[$_get](0)[$isOdd]) {
          roundUp();
        } else {
          if (cachedBits !== 0) {
            roundUp();
          } else {
            for (let i = digitIndex; digitIndex >= 0; i--) {
              if (this[_digits][$_get](i) !== 0) {
                roundUp();
                break;
              }
            }
          }
        }
      }
      return resultBits[$buffer][$asByteData]()[$getFloat64](0, typed_data.Endian.little);
    }
    toString() {
      if (this[_used] === 0) return "0";
      if (this[_used] === 1) {
        if (dart.test(this[_isNegative])) return (-dart.notNull(this[_digits][$_get](0)))[$toString]();
        return dart.toString(this[_digits][$_get](0));
      }
      let decimalDigitChunks = JSArrayOfString().of([]);
      let rest = dart.test(this.isNegative) ? this._negate() : this;
      while (dart.notNull(rest[_used]) > 1) {
        let digits4 = dart.toString(rest.remainder(core._BigIntImpl._bigInt10000));
        decimalDigitChunks[$add](digits4);
        if (digits4.length === 1) decimalDigitChunks[$add]("000");
        if (digits4.length === 2) decimalDigitChunks[$add]("00");
        if (digits4.length === 3) decimalDigitChunks[$add]("0");
        rest = rest['~/'](core._BigIntImpl._bigInt10000);
      }
      decimalDigitChunks[$add](dart.toString(rest[_digits][$_get](0)));
      if (dart.test(this[_isNegative])) decimalDigitChunks[$add]("-");
      return decimalDigitChunks[$reversed][$join]();
    }
    [_toRadixCodeUnit](digit) {
      let _0 = 48;
      let _a = 97;
      if (dart.notNull(digit) < 10) return _0 + dart.notNull(digit);
      return _a + dart.notNull(digit) - 10;
    }
    toRadixString(radix) {
      if (dart.notNull(radix) > 36) dart.throw(new core.RangeError.range(radix, 2, 36));
      if (this[_used] === 0) return "0";
      if (this[_used] === 1) {
        let digitString = this[_digits][$_get](0)[$toRadixString](radix);
        if (dart.test(this[_isNegative])) return "-" + digitString;
        return digitString;
      }
      if (radix === 16) return this[_toHexString]();
      let base = core._BigIntImpl._fromInt(radix);
      let reversedDigitCodeUnits = JSArrayOfint().of([]);
      let rest = this.abs();
      while (!dart.test(rest[_isZero])) {
        let digit = rest.remainder(base).toInt();
        rest = rest['~/'](base);
        reversedDigitCodeUnits[$add](this[_toRadixCodeUnit](digit));
      }
      let digitString = core.String.fromCharCodes(reversedDigitCodeUnits[$reversed]);
      if (dart.test(this[_isNegative])) return "-" + digitString;
      return digitString;
    }
    [_toHexString]() {
      let chars = JSArrayOfint().of([]);
      for (let i = 0; i < dart.notNull(this[_used]) - 1; i++) {
        let chunk = this[_digits][$_get](i);
        for (let j = 0; j < (16 / 4)[$truncate](); j++) {
          chars[$add](this[_toRadixCodeUnit](dart.notNull(chunk) & 15));
          chunk = chunk[$rightShift](4);
        }
      }
      let msbChunk = this[_digits][$_get](dart.notNull(this[_used]) - 1);
      while (msbChunk !== 0) {
        chars[$add](this[_toRadixCodeUnit](dart.notNull(msbChunk) & 15));
        msbChunk = msbChunk[$rightShift](4);
      }
      if (dart.test(this[_isNegative])) {
        let _dash = 45;
        chars[$add](_dash);
      }
      return core.String.fromCharCodes(chars[$reversed]);
    }
  };
  (core._BigIntImpl.__ = function(isNegative, used, digits) {
    core._BigIntImpl._normalized.call(this, isNegative, core._BigIntImpl._normalize(used, digits), digits);
  }).prototype = core._BigIntImpl.prototype;
  (core._BigIntImpl._normalized = function(isNegative, used, digits) {
    this[_used] = used;
    this[_digits] = digits;
    this[_isNegative] = used === 0 ? false : isNegative;
  }).prototype = core._BigIntImpl.prototype;
  dart.addTypeTests(core._BigIntImpl);
  core._BigIntImpl[dart.implements] = () => [core.BigInt];
  dart.setMethodSignature(core._BigIntImpl, () => ({
    __proto__: dart.getMethods(core._BigIntImpl.__proto__),
    _negate: dart.fnType(core._BigIntImpl, []),
    abs: dart.fnType(core._BigIntImpl, []),
    [_dlShift]: dart.fnType(core._BigIntImpl, [core.int]),
    [_drShift]: dart.fnType(core._BigIntImpl, [core.int]),
    '<<': dart.fnType(core._BigIntImpl, [core.int]),
    '>>': dart.fnType(core._BigIntImpl, [core.int]),
    [_absCompare]: dart.fnType(core.int, [core.BigInt]),
    compareTo: dart.fnType(core.int, [core.Object]),
    [$compareTo]: dart.fnType(core.int, [core.Object]),
    [_absAddSetSign]: dart.fnType(core._BigIntImpl, [core._BigIntImpl, core.bool]),
    [_absSubSetSign]: dart.fnType(core._BigIntImpl, [core._BigIntImpl, core.bool]),
    [_absAndSetSign]: dart.fnType(core._BigIntImpl, [core._BigIntImpl, core.bool]),
    [_absAndNotSetSign]: dart.fnType(core._BigIntImpl, [core._BigIntImpl, core.bool]),
    [_absOrSetSign]: dart.fnType(core._BigIntImpl, [core._BigIntImpl, core.bool]),
    [_absXorSetSign]: dart.fnType(core._BigIntImpl, [core._BigIntImpl, core.bool]),
    '&': dart.fnType(core._BigIntImpl, [core.BigInt]),
    '|': dart.fnType(core._BigIntImpl, [core.BigInt]),
    '^': dart.fnType(core._BigIntImpl, [core.BigInt]),
    '~': dart.fnType(core._BigIntImpl, []),
    '+': dart.fnType(core._BigIntImpl, [core.BigInt]),
    '-': dart.fnType(core._BigIntImpl, [core.BigInt]),
    '*': dart.fnType(core._BigIntImpl, [core.BigInt]),
    [_div]: dart.fnType(core._BigIntImpl, [core.BigInt]),
    [_rem]: dart.fnType(core._BigIntImpl, [core.BigInt]),
    [_divRem]: dart.fnType(dart.void, [core._BigIntImpl]),
    _equals: dart.fnType(core.bool, [core.Object]),
    [$_equals]: dart.fnType(core.bool, [core.Object]),
    '~/': dart.fnType(core._BigIntImpl, [core.BigInt]),
    remainder: dart.fnType(core._BigIntImpl, [core.BigInt]),
    '/': dart.fnType(core.double, [core.BigInt]),
    '<': dart.fnType(core.bool, [core.BigInt]),
    '<=': dart.fnType(core.bool, [core.BigInt]),
    '>': dart.fnType(core.bool, [core.BigInt]),
    '>=': dart.fnType(core.bool, [core.BigInt]),
    '%': dart.fnType(core._BigIntImpl, [core.BigInt]),
    pow: dart.fnType(core._BigIntImpl, [core.int]),
    modPow: dart.fnType(core._BigIntImpl, [core.BigInt, core.BigInt]),
    modInverse: dart.fnType(core._BigIntImpl, [core.BigInt]),
    gcd: dart.fnType(core._BigIntImpl, [core.BigInt]),
    toUnsigned: dart.fnType(core._BigIntImpl, [core.int]),
    toSigned: dart.fnType(core._BigIntImpl, [core.int]),
    toInt: dart.fnType(core.int, []),
    toDouble: dart.fnType(core.double, []),
    [_toRadixCodeUnit]: dart.fnType(core.int, [core.int]),
    toRadixString: dart.fnType(core.String, [core.int]),
    [_toHexString]: dart.fnType(core.String, [])
  }));
  dart.setGetterSignature(core._BigIntImpl, () => ({
    __proto__: dart.getGetters(core._BigIntImpl.__proto__),
    [_isZero]: core.bool,
    bitLength: core.int,
    sign: core.int,
    isEven: core.bool,
    isOdd: core.bool,
    isNegative: core.bool,
    isValidInt: core.bool
  }));
  dart.setFieldSignature(core._BigIntImpl, () => ({
    __proto__: dart.getFields(core._BigIntImpl.__proto__),
    [_isNegative]: dart.finalFieldType(core.bool),
    [_digits]: dart.finalFieldType(typed_data.Uint16List),
    [_used]: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionMethods(core._BigIntImpl, ['compareTo', '_equals', 'toString']);
  dart.defineExtensionAccessors(core._BigIntImpl, ['hashCode']);
  dart.defineLazy(core._BigIntImpl, {
    /*core._BigIntImpl._digitBits*/get _digitBits() {
      return 16;
    },
    /*core._BigIntImpl._digitBase*/get _digitBase() {
      return 1 << 16;
    },
    /*core._BigIntImpl._digitMask*/get _digitMask() {
      return (1 << 16) - 1;
    },
    /*core._BigIntImpl.zero*/get zero() {
      return core._BigIntImpl._fromInt(0);
    },
    /*core._BigIntImpl.one*/get one() {
      return core._BigIntImpl._fromInt(1);
    },
    /*core._BigIntImpl.two*/get two() {
      return core._BigIntImpl._fromInt(2);
    },
    /*core._BigIntImpl._minusOne*/get _minusOne() {
      return core._BigIntImpl.one._negate();
    },
    /*core._BigIntImpl._bigInt10000*/get _bigInt10000() {
      return core._BigIntImpl._fromInt(10000);
    },
    /*core._BigIntImpl._lastDividendDigits*/get _lastDividendDigits() {
      return null;
    },
    set _lastDividendDigits(_) {},
    /*core._BigIntImpl._lastDividendUsed*/get _lastDividendUsed() {
      return null;
    },
    set _lastDividendUsed(_) {},
    /*core._BigIntImpl._lastDivisorDigits*/get _lastDivisorDigits() {
      return null;
    },
    set _lastDivisorDigits(_) {},
    /*core._BigIntImpl._lastDivisorUsed*/get _lastDivisorUsed() {
      return null;
    },
    set _lastDivisorUsed(_) {},
    /*core._BigIntImpl._lastQuoRemDigits*/get _lastQuoRemDigits() {
      return null;
    },
    set _lastQuoRemDigits(_) {},
    /*core._BigIntImpl._lastQuoRemUsed*/get _lastQuoRemUsed() {
      return null;
    },
    set _lastQuoRemUsed(_) {},
    /*core._BigIntImpl._lastRemUsed*/get _lastRemUsed() {
      return null;
    },
    set _lastRemUsed(_) {},
    /*core._BigIntImpl._lastRem_nsh*/get _lastRem_nsh() {
      return null;
    },
    set _lastRem_nsh(_) {},
    /*core._BigIntImpl._bitsForFromDouble*/get _bitsForFromDouble() {
      return typed_data.Uint8List.new(8);
    },
    /*core._BigIntImpl._simpleValidIntDigits*/get _simpleValidIntDigits() {
      return (53 / 16)[$truncate]();
    }
  });
  core._BigIntReduction = class _BigIntReduction extends core.Object {};
  (core._BigIntReduction.new = function() {
  }).prototype = core._BigIntReduction.prototype;
  dart.addTypeTests(core._BigIntReduction);
  const _modulus = Symbol('_modulus');
  const _normalizedModulus = Symbol('_normalizedModulus');
  const _reduce = Symbol('_reduce');
  core._BigIntClassic = class _BigIntClassic extends core.Object {
    convert(x, resultDigits) {
      let digits = null;
      let used = null;
      if (dart.test(x[_isNegative]) || dart.notNull(x[_absCompare](this[_modulus])) >= 0) {
        let remainder = x[_rem](this[_modulus]);
        if (dart.test(x[_isNegative]) && dart.notNull(remainder[_used]) > 0) {
          if (!dart.test(remainder[_isNegative])) dart.assertFailed();
          remainder = remainder['+'](this[_modulus]);
        }
        if (!!dart.test(remainder[_isNegative])) dart.assertFailed();
        used = remainder[_used];
        digits = remainder[_digits];
      } else {
        used = x[_used];
        digits = x[_digits];
      }
      let i = used;
      while (dart.dtest(dart.dsend(i = dart.dsend(i, '-', [1]), '>=', [0]))) {
        resultDigits[$_set](core.int._check(i), core.int._check(dart.dindex(digits, i)));
      }
      return core.int._check(used);
    }
    revert(xDigits, xUsed) {
      return new core._BigIntImpl.__(false, xUsed, xDigits);
    }
    [_reduce](xDigits, xUsed) {
      if (dart.notNull(xUsed) < dart.notNull(this[_modulus][_used])) {
        return xUsed;
      }
      let reverted = this.revert(xDigits, xUsed);
      let rem = reverted[_rem](this[_normalizedModulus]);
      return this.convert(rem, xDigits);
    }
    sqr(xDigits, xUsed, resultDigits) {
      let b = new core._BigIntImpl.__(false, xUsed, xDigits);
      let b2 = b['*'](b);
      for (let i = 0; i < dart.notNull(b2[_used]); i++) {
        resultDigits[$_set](i, b2[_digits][$_get](i));
      }
      for (let i = b2[_used]; dart.notNull(i) < 2 * dart.notNull(xUsed); i = dart.notNull(i) + 1) {
        resultDigits[$_set](i, 0);
      }
      return this[_reduce](resultDigits, 2 * dart.notNull(xUsed));
    }
    mul(xDigits, xUsed, yDigits, yUsed, resultDigits) {
      let resultUsed = core._BigIntImpl._mulDigits(xDigits, xUsed, yDigits, yUsed, resultDigits);
      return this[_reduce](resultDigits, resultUsed);
    }
  };
  (core._BigIntClassic.new = function(modulus) {
    this[_modulus] = modulus;
    this[_normalizedModulus] = modulus['<<'](core._BigIntImpl._digitBits - modulus[_digits][$_get](dart.notNull(modulus[_used]) - 1)[$bitLength]);
  }).prototype = core._BigIntClassic.prototype;
  dart.addTypeTests(core._BigIntClassic);
  core._BigIntClassic[dart.implements] = () => [core._BigIntReduction];
  dart.setMethodSignature(core._BigIntClassic, () => ({
    __proto__: dart.getMethods(core._BigIntClassic.__proto__),
    convert: dart.fnType(core.int, [core._BigIntImpl, typed_data.Uint16List]),
    revert: dart.fnType(core._BigIntImpl, [typed_data.Uint16List, core.int]),
    [_reduce]: dart.fnType(core.int, [typed_data.Uint16List, core.int]),
    sqr: dart.fnType(core.int, [typed_data.Uint16List, core.int, typed_data.Uint16List]),
    mul: dart.fnType(core.int, [typed_data.Uint16List, core.int, typed_data.Uint16List, core.int, typed_data.Uint16List])
  }));
  dart.setFieldSignature(core._BigIntClassic, () => ({
    __proto__: dart.getFields(core._BigIntClassic.__proto__),
    [_modulus]: dart.finalFieldType(core._BigIntImpl),
    [_normalizedModulus]: dart.finalFieldType(core._BigIntImpl)
  }));
  core.Deprecated = class Deprecated extends core.Object {
    get message() {
      return this[message$1];
    }
    set message(value) {
      super.message = value;
    }
    get expires() {
      return this.message;
    }
    toString() {
      return "Deprecated feature: " + dart.str(this.message);
    }
  };
  (core.Deprecated.new = function(message) {
    this[message$1] = message;
  }).prototype = core.Deprecated.prototype;
  dart.addTypeTests(core.Deprecated);
  const message$1 = Symbol("Deprecated.message");
  dart.setGetterSignature(core.Deprecated, () => ({
    __proto__: dart.getGetters(core.Deprecated.__proto__),
    expires: core.String
  }));
  dart.setFieldSignature(core.Deprecated, () => ({
    __proto__: dart.getFields(core.Deprecated.__proto__),
    message: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(core.Deprecated, ['toString']);
  dart.defineLazy(core, {
    /*core.deprecated*/get deprecated() {
      return dart.const(new core.Deprecated.new("next release"));
    }
  });
  core._Override = class _Override extends core.Object {};
  (core._Override.new = function() {
  }).prototype = core._Override.prototype;
  dart.addTypeTests(core._Override);
  dart.defineLazy(core, {
    /*core.override*/get override() {
      return dart.const(new core._Override.new());
    }
  });
  core.Provisional = class Provisional extends core.Object {
    get message() {
      return null;
    }
  };
  (core.Provisional.new = function(opts) {
    let message = opts && 'message' in opts ? opts.message : null;
  }).prototype = core.Provisional.prototype;
  dart.addTypeTests(core.Provisional);
  dart.setGetterSignature(core.Provisional, () => ({
    __proto__: dart.getGetters(core.Provisional.__proto__),
    message: core.String
  }));
  dart.defineLazy(core, {
    /*core.provisional*/get provisional() {
      return null;
    }
  });
  core._Proxy = class _Proxy extends core.Object {};
  (core._Proxy.new = function() {
  }).prototype = core._Proxy.prototype;
  dart.addTypeTests(core._Proxy);
  dart.defineLazy(core, {
    /*core.proxy*/get proxy() {
      return dart.const(new core._Proxy.new());
    }
  });
  core.pragma = class pragma extends core.Object {
    get name() {
      return this[name$0];
    }
    set name(value) {
      super.name = value;
    }
    get options() {
      return this[options$];
    }
    set options(value) {
      super.options = value;
    }
    static new(name, options) {
      return new core.pragma.__(name, options);
    }
  };
  (core.pragma.__ = function(name, options) {
    if (options === void 0) options = null;
    this[name$0] = name;
    this[options$] = options;
  }).prototype = core.pragma.prototype;
  dart.addTypeTests(core.pragma);
  const name$0 = Symbol("pragma.name");
  const options$ = Symbol("pragma.options");
  dart.setFieldSignature(core.pragma, () => ({
    __proto__: dart.getFields(core.pragma.__proto__),
    name: dart.finalFieldType(core.String),
    options: dart.finalFieldType(core.Object)
  }));
  core.BigInt = class BigInt extends core.Object {
    static get zero() {
      return core._BigIntImpl.zero;
    }
    static get one() {
      return core._BigIntImpl.one;
    }
    static get two() {
      return core._BigIntImpl.two;
    }
    static parse(source, opts) {
      let radix = opts && 'radix' in opts ? opts.radix : null;
      return core._BigIntImpl.parse(source, {radix: radix});
    }
    static tryParse(source, opts) {
      let radix = opts && 'radix' in opts ? opts.radix : null;
      return core._BigIntImpl._tryParse(source, {radix: radix});
    }
    static from(value) {
      return core._BigIntImpl.from(value);
    }
  };
  (core.BigInt[dart.mixinNew] = function() {
  }).prototype = core.BigInt.prototype;
  dart.addTypeTests(core.BigInt);
  core.BigInt[dart.implements] = () => [ComparableOfBigInt()];
  core.bool = class bool extends core.Object {
    static fromEnvironment(name, opts) {
      let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : false;
      dart.throw(new core.UnsupportedError.new("bool.fromEnvironment can only be used as a const constructor"));
    }
    get [$hashCode]() {
      return super[$hashCode];
    }
    [$bitAnd](other) {
      return dart.test(other) && this;
    }
    [$bitOr](other) {
      return dart.test(other) || this;
    }
    [$bitXor](other) {
      return !dart.test(other) === this;
    }
    [$toString]() {
      return this ? "true" : "false";
    }
  };
  (core.bool[dart.mixinNew] = function() {
  }).prototype = core.bool.prototype;
  core.bool.is = function is_bool(o) {
    return o === true || o === false;
  };
  core.bool.as = function as_bool(o) {
    if (o === true || o === false || o == null) return o;
    return dart.as(o, core.bool, false);
  };
  core.bool._check = function check_bool(o) {
    if (o === true || o === false || o == null) return o;
    return dart.as(o, core.bool, true);
  };
  dart.setMethodSignature(core.bool, () => ({
    __proto__: dart.getMethods(core.bool.__proto__),
    [$bitAnd]: dart.fnType(core.bool, [core.bool]),
    [$bitOr]: dart.fnType(core.bool, [core.bool]),
    [$bitXor]: dart.fnType(core.bool, [core.bool])
  }));
  const _is_Comparable_default = Symbol('_is_Comparable_default');
  core.Comparable$ = dart.generic(T => {
    class Comparable extends core.Object {
      static compare(a, b) {
        return a[$compareTo](b);
      }
    }
    (Comparable.new = function() {
    }).prototype = Comparable.prototype;
    dart.addTypeTests(Comparable);
    Comparable.prototype[_is_Comparable_default] = true;
    return Comparable;
  });
  core.Comparable = core.Comparable$();
  dart.addTypeTests(core.Comparable, _is_Comparable_default);
  const _value$0 = Symbol('_value');
  core.DateTime = class DateTime extends core.Object {
    get isUtc() {
      return this[isUtc$];
    }
    set isUtc(value) {
      super.isUtc = value;
    }
    static parse(formattedString) {
      let re = core.DateTime._parseFormat;
      let match = re.firstMatch(formattedString);
      if (match != null) {
        function parseIntOrZero(matched) {
          if (matched == null) return 0;
          return core.int.parse(matched);
        }
        dart.fn(parseIntOrZero, StringToint());
        function parseMilliAndMicroseconds(matched) {
          if (matched == null) return 0;
          let length = matched.length;
          if (!(length >= 1)) dart.assertFailed();
          if (!(length <= 6)) dart.assertFailed();
          let result = 0;
          for (let i = 0; i < 6; i++) {
            result = result * 10;
            if (i < matched.length) {
              result = result + ((matched[$codeUnitAt](i) ^ 48) >>> 0);
            }
          }
          return result;
        }
        dart.fn(parseMilliAndMicroseconds, StringToint());
        let years = core.int.parse(match._get(1));
        let month = core.int.parse(match._get(2));
        let day = core.int.parse(match._get(3));
        let hour = parseIntOrZero(match._get(4));
        let minute = parseIntOrZero(match._get(5));
        let second = parseIntOrZero(match._get(6));
        let addOneMillisecond = false;
        let milliAndMicroseconds = parseMilliAndMicroseconds(match._get(7));
        let millisecond = (dart.notNull(milliAndMicroseconds) / core.Duration.microsecondsPerMillisecond)[$truncate]();
        let microsecond = dart.asInt(milliAndMicroseconds[$remainder](core.Duration.microsecondsPerMillisecond));
        let isUtc = false;
        if (match._get(8) != null) {
          isUtc = true;
          if (match._get(9) != null) {
            let sign = match._get(9) === "-" ? -1 : 1;
            let hourDifference = core.int.parse(match._get(10));
            let minuteDifference = parseIntOrZero(match._get(11));
            minuteDifference = dart.notNull(minuteDifference) + 60 * dart.notNull(hourDifference);
            minute = dart.notNull(minute) - sign * dart.notNull(minuteDifference);
          }
        }
        let value = core.DateTime._brokenDownDateToValue(years, month, day, hour, minute, second, millisecond, microsecond, isUtc);
        if (value == null) {
          dart.throw(new core.FormatException.new("Time out of range", formattedString));
        }
        return new core.DateTime._withValue(value, {isUtc: isUtc});
      } else {
        dart.throw(new core.FormatException.new("Invalid date format", formattedString));
      }
    }
    static tryParse(formattedString) {
      try {
        return core.DateTime.parse(formattedString);
      } catch (e) {
        let ex = dart.getThrown(e);
        if (core.FormatException.is(ex)) {
          return null;
        } else
          throw e;
      }
    }
    _equals(other) {
      return core.DateTime.is(other) && this[_value$0] == other.millisecondsSinceEpoch && this.isUtc == other.isUtc;
    }
    isBefore(other) {
      return dart.notNull(this[_value$0]) < dart.notNull(other.millisecondsSinceEpoch);
    }
    isAfter(other) {
      return dart.notNull(this[_value$0]) > dart.notNull(other.millisecondsSinceEpoch);
    }
    isAtSameMomentAs(other) {
      return this[_value$0] == other.millisecondsSinceEpoch;
    }
    compareTo(other) {
      core.DateTime._check(other);
      return this[_value$0][$compareTo](other.millisecondsSinceEpoch);
    }
    get hashCode() {
      return (dart.notNull(this[_value$0]) ^ this[_value$0][$rightShift](30)) & 1073741823;
    }
    toLocal() {
      if (dart.test(this.isUtc)) {
        return new core.DateTime._withValue(this[_value$0], {isUtc: false});
      }
      return this;
    }
    toUtc() {
      if (dart.test(this.isUtc)) return this;
      return new core.DateTime._withValue(this[_value$0], {isUtc: true});
    }
    static _fourDigits(n) {
      let absN = n[$abs]();
      let sign = dart.notNull(n) < 0 ? "-" : "";
      if (absN >= 1000) return dart.str(n);
      if (absN >= 100) return sign + "0" + dart.str(absN);
      if (absN >= 10) return sign + "00" + dart.str(absN);
      return sign + "000" + dart.str(absN);
    }
    static _sixDigits(n) {
      if (!(dart.notNull(n) < -9999 || dart.notNull(n) > 9999)) dart.assertFailed();
      let absN = n[$abs]();
      let sign = dart.notNull(n) < 0 ? "-" : "+";
      if (absN >= 100000) return sign + dart.str(absN);
      return sign + "0" + dart.str(absN);
    }
    static _threeDigits(n) {
      if (dart.notNull(n) >= 100) return dart.str(n);
      if (dart.notNull(n) >= 10) return "0" + dart.str(n);
      return "00" + dart.str(n);
    }
    static _twoDigits(n) {
      if (dart.notNull(n) >= 10) return dart.str(n);
      return "0" + dart.str(n);
    }
    toString() {
      let y = core.DateTime._fourDigits(this.year);
      let m = core.DateTime._twoDigits(this.month);
      let d = core.DateTime._twoDigits(this.day);
      let h = core.DateTime._twoDigits(this.hour);
      let min = core.DateTime._twoDigits(this.minute);
      let sec = core.DateTime._twoDigits(this.second);
      let ms = core.DateTime._threeDigits(this.millisecond);
      let us = this.microsecond === 0 ? "" : core.DateTime._threeDigits(this.microsecond);
      if (dart.test(this.isUtc)) {
        return dart.str(y) + "-" + dart.str(m) + "-" + dart.str(d) + " " + dart.str(h) + ":" + dart.str(min) + ":" + dart.str(sec) + "." + dart.str(ms) + dart.str(us) + "Z";
      } else {
        return dart.str(y) + "-" + dart.str(m) + "-" + dart.str(d) + " " + dart.str(h) + ":" + dart.str(min) + ":" + dart.str(sec) + "." + dart.str(ms) + dart.str(us);
      }
    }
    toIso8601String() {
      let y = dart.notNull(this.year) >= -9999 && dart.notNull(this.year) <= 9999 ? core.DateTime._fourDigits(this.year) : core.DateTime._sixDigits(this.year);
      let m = core.DateTime._twoDigits(this.month);
      let d = core.DateTime._twoDigits(this.day);
      let h = core.DateTime._twoDigits(this.hour);
      let min = core.DateTime._twoDigits(this.minute);
      let sec = core.DateTime._twoDigits(this.second);
      let ms = core.DateTime._threeDigits(this.millisecond);
      let us = this.microsecond === 0 ? "" : core.DateTime._threeDigits(this.microsecond);
      if (dart.test(this.isUtc)) {
        return dart.str(y) + "-" + dart.str(m) + "-" + dart.str(d) + "T" + dart.str(h) + ":" + dart.str(min) + ":" + dart.str(sec) + "." + dart.str(ms) + dart.str(us) + "Z";
      } else {
        return dart.str(y) + "-" + dart.str(m) + "-" + dart.str(d) + "T" + dart.str(h) + ":" + dart.str(min) + ":" + dart.str(sec) + "." + dart.str(ms) + dart.str(us);
      }
    }
    add(duration) {
      return new core.DateTime._withValue(dart.notNull(this[_value$0]) + dart.notNull(duration.inMilliseconds), {isUtc: this.isUtc});
    }
    subtract(duration) {
      return new core.DateTime._withValue(dart.notNull(this[_value$0]) - dart.notNull(duration.inMilliseconds), {isUtc: this.isUtc});
    }
    difference(other) {
      return new core.Duration.new({milliseconds: dart.notNull(this[_value$0]) - dart.notNull(other[_value$0])});
    }
    static _brokenDownDateToValue(year, month, day, hour, minute, second, millisecond, microsecond, isUtc) {
      return dart.asInt(_js_helper.Primitives.valueFromDecomposedDate(year, month, day, hour, minute, second, dart.notNull(millisecond) + dart.notNull(core.DateTime._microsecondInRoundedMilliseconds(microsecond)), isUtc));
    }
    get millisecondsSinceEpoch() {
      return this[_value$0];
    }
    get microsecondsSinceEpoch() {
      return dart.notNull(this[_value$0]) * 1000;
    }
    get timeZoneName() {
      if (dart.test(this.isUtc)) return "UTC";
      return _js_helper.Primitives.getTimeZoneName(this);
    }
    get timeZoneOffset() {
      if (dart.test(this.isUtc)) return new core.Duration.new();
      return new core.Duration.new({minutes: _js_helper.Primitives.getTimeZoneOffsetInMinutes(this)});
    }
    get year() {
      return _js_helper.Primitives.getYear(this);
    }
    get month() {
      return _js_helper.Primitives.getMonth(this);
    }
    get day() {
      return _js_helper.Primitives.getDay(this);
    }
    get hour() {
      return _js_helper.Primitives.getHours(this);
    }
    get minute() {
      return _js_helper.Primitives.getMinutes(this);
    }
    get second() {
      return _js_helper.Primitives.getSeconds(this);
    }
    get millisecond() {
      return _js_helper.Primitives.getMilliseconds(this);
    }
    get microsecond() {
      return 0;
    }
    get weekday() {
      return _js_helper.Primitives.getWeekday(this);
    }
    static _microsecondInRoundedMilliseconds(microsecond) {
      return (dart.notNull(microsecond) / 1000)[$round]();
    }
  };
  (core.DateTime.new = function(year, month, day, hour, minute, second, millisecond, microsecond) {
    if (month === void 0) month = 1;
    if (day === void 0) day = 1;
    if (hour === void 0) hour = 0;
    if (minute === void 0) minute = 0;
    if (second === void 0) second = 0;
    if (millisecond === void 0) millisecond = 0;
    if (microsecond === void 0) microsecond = 0;
    core.DateTime._internal.call(this, year, month, day, hour, minute, second, millisecond, microsecond, false);
  }).prototype = core.DateTime.prototype;
  (core.DateTime.utc = function(year, month, day, hour, minute, second, millisecond, microsecond) {
    if (month === void 0) month = 1;
    if (day === void 0) day = 1;
    if (hour === void 0) hour = 0;
    if (minute === void 0) minute = 0;
    if (second === void 0) second = 0;
    if (millisecond === void 0) millisecond = 0;
    if (microsecond === void 0) microsecond = 0;
    core.DateTime._internal.call(this, year, month, day, hour, minute, second, millisecond, microsecond, true);
  }).prototype = core.DateTime.prototype;
  (core.DateTime.now = function() {
    core.DateTime._now.call(this);
  }).prototype = core.DateTime.prototype;
  (core.DateTime.fromMillisecondsSinceEpoch = function(millisecondsSinceEpoch, opts) {
    let isUtc = opts && 'isUtc' in opts ? opts.isUtc : false;
    core.DateTime._withValue.call(this, millisecondsSinceEpoch, {isUtc: isUtc});
  }).prototype = core.DateTime.prototype;
  (core.DateTime.fromMicrosecondsSinceEpoch = function(microsecondsSinceEpoch, opts) {
    let isUtc = opts && 'isUtc' in opts ? opts.isUtc : false;
    core.DateTime._withValue.call(this, core.DateTime._microsecondInRoundedMilliseconds(microsecondsSinceEpoch), {isUtc: isUtc});
  }).prototype = core.DateTime.prototype;
  (core.DateTime._withValue = function(value, opts) {
    let isUtc = opts && 'isUtc' in opts ? opts.isUtc : null;
    this[_value$0] = value;
    this[isUtc$] = isUtc;
    if (this.millisecondsSinceEpoch[$abs]() > 8640000000000000 || this.millisecondsSinceEpoch[$abs]() === 8640000000000000 && this.microsecond !== 0) {
      dart.throw(new core.ArgumentError.new("DateTime is outside valid range: " + dart.str(this.millisecondsSinceEpoch)));
    }
    if (this.isUtc == null) {
      dart.throw(new core.ArgumentError.new("'isUtc' flag may not be 'null'"));
    }
  }).prototype = core.DateTime.prototype;
  (core.DateTime._internal = function(year, month, day, hour, minute, second, millisecond, microsecond, isUtc) {
    this[isUtc$] = typeof isUtc == 'boolean' ? isUtc : dart.throw(new core.ArgumentError.value(isUtc, "isUtc"));
    this[_value$0] = core.int._check(_js_helper.checkInt(_js_helper.Primitives.valueFromDecomposedDate(year, month, day, hour, minute, second, dart.notNull(millisecond) + dart.notNull(core.DateTime._microsecondInRoundedMilliseconds(microsecond)), isUtc)));
  }).prototype = core.DateTime.prototype;
  (core.DateTime._now = function() {
    this[isUtc$] = false;
    this[_value$0] = _js_helper.Primitives.dateNow();
  }).prototype = core.DateTime.prototype;
  dart.addTypeTests(core.DateTime);
  const isUtc$ = Symbol("DateTime.isUtc");
  core.DateTime[dart.implements] = () => [ComparableOfDateTime()];
  dart.setMethodSignature(core.DateTime, () => ({
    __proto__: dart.getMethods(core.DateTime.__proto__),
    isBefore: dart.fnType(core.bool, [core.DateTime]),
    isAfter: dart.fnType(core.bool, [core.DateTime]),
    isAtSameMomentAs: dart.fnType(core.bool, [core.DateTime]),
    compareTo: dart.fnType(core.int, [core.Object]),
    [$compareTo]: dart.fnType(core.int, [core.Object]),
    toLocal: dart.fnType(core.DateTime, []),
    toUtc: dart.fnType(core.DateTime, []),
    toIso8601String: dart.fnType(core.String, []),
    add: dart.fnType(core.DateTime, [core.Duration]),
    subtract: dart.fnType(core.DateTime, [core.Duration]),
    difference: dart.fnType(core.Duration, [core.DateTime])
  }));
  dart.setGetterSignature(core.DateTime, () => ({
    __proto__: dart.getGetters(core.DateTime.__proto__),
    millisecondsSinceEpoch: core.int,
    microsecondsSinceEpoch: core.int,
    timeZoneName: core.String,
    timeZoneOffset: core.Duration,
    year: core.int,
    month: core.int,
    day: core.int,
    hour: core.int,
    minute: core.int,
    second: core.int,
    millisecond: core.int,
    microsecond: core.int,
    weekday: core.int
  }));
  dart.setFieldSignature(core.DateTime, () => ({
    __proto__: dart.getFields(core.DateTime.__proto__),
    [_value$0]: dart.finalFieldType(core.int),
    isUtc: dart.finalFieldType(core.bool)
  }));
  dart.defineExtensionMethods(core.DateTime, ['_equals', 'compareTo', 'toString']);
  dart.defineExtensionAccessors(core.DateTime, ['hashCode']);
  dart.defineLazy(core.DateTime, {
    /*core.DateTime.monday*/get monday() {
      return 1;
    },
    /*core.DateTime.tuesday*/get tuesday() {
      return 2;
    },
    /*core.DateTime.wednesday*/get wednesday() {
      return 3;
    },
    /*core.DateTime.thursday*/get thursday() {
      return 4;
    },
    /*core.DateTime.friday*/get friday() {
      return 5;
    },
    /*core.DateTime.saturday*/get saturday() {
      return 6;
    },
    /*core.DateTime.sunday*/get sunday() {
      return 7;
    },
    /*core.DateTime.daysPerWeek*/get daysPerWeek() {
      return 7;
    },
    /*core.DateTime.january*/get january() {
      return 1;
    },
    /*core.DateTime.february*/get february() {
      return 2;
    },
    /*core.DateTime.march*/get march() {
      return 3;
    },
    /*core.DateTime.april*/get april() {
      return 4;
    },
    /*core.DateTime.may*/get may() {
      return 5;
    },
    /*core.DateTime.june*/get june() {
      return 6;
    },
    /*core.DateTime.july*/get july() {
      return 7;
    },
    /*core.DateTime.august*/get august() {
      return 8;
    },
    /*core.DateTime.september*/get september() {
      return 9;
    },
    /*core.DateTime.october*/get october() {
      return 10;
    },
    /*core.DateTime.november*/get november() {
      return 11;
    },
    /*core.DateTime.december*/get december() {
      return 12;
    },
    /*core.DateTime.monthsPerYear*/get monthsPerYear() {
      return 12;
    },
    /*core.DateTime._maxMillisecondsSinceEpoch*/get _maxMillisecondsSinceEpoch() {
      return 8640000000000000;
    },
    /*core.DateTime._parseFormat*/get _parseFormat() {
      return core.RegExp.new("^([+-]?\\d{4,6})-?(\\d\\d)-?(\\d\\d)" + "(?:[ T](\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,6}))?)?)?" + "( ?[zZ]| ?([-+])(\\d\\d)(?::?(\\d\\d))?)?)?$");
    }
  });
  const _duration = Symbol('_duration');
  core.Duration = class Duration extends core.Object {
    ['+'](other) {
      return new core.Duration._microseconds(dart.notNull(this[_duration]) + dart.notNull(other[_duration]));
    }
    ['-'](other) {
      return new core.Duration._microseconds(dart.notNull(this[_duration]) - dart.notNull(other[_duration]));
    }
    ['*'](factor) {
      return new core.Duration._microseconds((dart.notNull(this[_duration]) * dart.notNull(factor))[$round]());
    }
    ['~/'](quotient) {
      if (quotient === 0) dart.throw(new core.IntegerDivisionByZeroException.new());
      return new core.Duration._microseconds((dart.notNull(this[_duration]) / dart.notNull(quotient))[$truncate]());
    }
    ['<'](other) {
      return dart.notNull(this[_duration]) < dart.notNull(other[_duration]);
    }
    ['>'](other) {
      return dart.notNull(this[_duration]) > dart.notNull(other[_duration]);
    }
    ['<='](other) {
      return dart.notNull(this[_duration]) <= dart.notNull(other[_duration]);
    }
    ['>='](other) {
      return dart.notNull(this[_duration]) >= dart.notNull(other[_duration]);
    }
    get inDays() {
      return (dart.notNull(this[_duration]) / core.Duration.microsecondsPerDay)[$truncate]();
    }
    get inHours() {
      return (dart.notNull(this[_duration]) / core.Duration.microsecondsPerHour)[$truncate]();
    }
    get inMinutes() {
      return (dart.notNull(this[_duration]) / core.Duration.microsecondsPerMinute)[$truncate]();
    }
    get inSeconds() {
      return (dart.notNull(this[_duration]) / core.Duration.microsecondsPerSecond)[$truncate]();
    }
    get inMilliseconds() {
      return (dart.notNull(this[_duration]) / core.Duration.microsecondsPerMillisecond)[$truncate]();
    }
    get inMicroseconds() {
      return this[_duration];
    }
    _equals(other) {
      return core.Duration.is(other) && this[_duration] == other.inMicroseconds;
    }
    get hashCode() {
      return dart.hashCode(this[_duration]);
    }
    compareTo(other) {
      core.Duration._check(other);
      return this[_duration][$compareTo](other[_duration]);
    }
    toString() {
      function sixDigits(n) {
        if (dart.notNull(n) >= 100000) return dart.str(n);
        if (dart.notNull(n) >= 10000) return "0" + dart.str(n);
        if (dart.notNull(n) >= 1000) return "00" + dart.str(n);
        if (dart.notNull(n) >= 100) return "000" + dart.str(n);
        if (dart.notNull(n) >= 10) return "0000" + dart.str(n);
        return "00000" + dart.str(n);
      }
      dart.fn(sixDigits, intToString());
      function twoDigits(n) {
        if (dart.notNull(n) >= 10) return dart.str(n);
        return "0" + dart.str(n);
      }
      dart.fn(twoDigits, intToString());
      if (dart.notNull(this.inMicroseconds) < 0) {
        return "-" + dart.str(this._negate());
      }
      let twoDigitMinutes = twoDigits(dart.asInt(this.inMinutes[$remainder](60)));
      let twoDigitSeconds = twoDigits(dart.asInt(this.inSeconds[$remainder](60)));
      let sixDigitUs = sixDigits(dart.asInt(this.inMicroseconds[$remainder](1000000)));
      return dart.str(this.inHours) + ":" + dart.str(twoDigitMinutes) + ":" + dart.str(twoDigitSeconds) + "." + dart.str(sixDigitUs);
    }
    get isNegative() {
      return dart.notNull(this[_duration]) < 0;
    }
    abs() {
      return new core.Duration._microseconds(this[_duration][$abs]());
    }
    _negate() {
      return new core.Duration._microseconds(0 - dart.notNull(this[_duration]));
    }
  };
  (core.Duration.new = function(opts) {
    let days = opts && 'days' in opts ? opts.days : 0;
    let hours = opts && 'hours' in opts ? opts.hours : 0;
    let minutes = opts && 'minutes' in opts ? opts.minutes : 0;
    let seconds = opts && 'seconds' in opts ? opts.seconds : 0;
    let milliseconds = opts && 'milliseconds' in opts ? opts.milliseconds : 0;
    let microseconds = opts && 'microseconds' in opts ? opts.microseconds : 0;
    core.Duration._microseconds.call(this, 86400000000 * dart.notNull(days) + 3600000000 * dart.notNull(hours) + 60000000 * dart.notNull(minutes) + 1000000 * dart.notNull(seconds) + 1000 * dart.notNull(milliseconds) + dart.notNull(microseconds));
  }).prototype = core.Duration.prototype;
  (core.Duration._microseconds = function(duration) {
    this[_duration] = duration;
  }).prototype = core.Duration.prototype;
  dart.addTypeTests(core.Duration);
  core.Duration[dart.implements] = () => [ComparableOfDuration()];
  dart.setMethodSignature(core.Duration, () => ({
    __proto__: dart.getMethods(core.Duration.__proto__),
    '+': dart.fnType(core.Duration, [core.Duration]),
    '-': dart.fnType(core.Duration, [core.Duration]),
    '*': dart.fnType(core.Duration, [core.num]),
    '~/': dart.fnType(core.Duration, [core.int]),
    '<': dart.fnType(core.bool, [core.Duration]),
    '>': dart.fnType(core.bool, [core.Duration]),
    '<=': dart.fnType(core.bool, [core.Duration]),
    '>=': dart.fnType(core.bool, [core.Duration]),
    compareTo: dart.fnType(core.int, [core.Object]),
    [$compareTo]: dart.fnType(core.int, [core.Object]),
    abs: dart.fnType(core.Duration, []),
    _negate: dart.fnType(core.Duration, [])
  }));
  dart.setGetterSignature(core.Duration, () => ({
    __proto__: dart.getGetters(core.Duration.__proto__),
    inDays: core.int,
    inHours: core.int,
    inMinutes: core.int,
    inSeconds: core.int,
    inMilliseconds: core.int,
    inMicroseconds: core.int,
    isNegative: core.bool
  }));
  dart.setFieldSignature(core.Duration, () => ({
    __proto__: dart.getFields(core.Duration.__proto__),
    [_duration]: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionMethods(core.Duration, ['_equals', 'compareTo', 'toString']);
  dart.defineExtensionAccessors(core.Duration, ['hashCode']);
  dart.defineLazy(core.Duration, {
    /*core.Duration.microsecondsPerMillisecond*/get microsecondsPerMillisecond() {
      return 1000;
    },
    /*core.Duration.millisecondsPerSecond*/get millisecondsPerSecond() {
      return 1000;
    },
    /*core.Duration.secondsPerMinute*/get secondsPerMinute() {
      return 60;
    },
    /*core.Duration.minutesPerHour*/get minutesPerHour() {
      return 60;
    },
    /*core.Duration.hoursPerDay*/get hoursPerDay() {
      return 24;
    },
    /*core.Duration.microsecondsPerSecond*/get microsecondsPerSecond() {
      return 1000 * 1000;
    },
    /*core.Duration.microsecondsPerMinute*/get microsecondsPerMinute() {
      return 1000000 * 60;
    },
    /*core.Duration.microsecondsPerHour*/get microsecondsPerHour() {
      return 60000000 * 60;
    },
    /*core.Duration.microsecondsPerDay*/get microsecondsPerDay() {
      return 3600000000 * 24;
    },
    /*core.Duration.millisecondsPerMinute*/get millisecondsPerMinute() {
      return 1000 * 60;
    },
    /*core.Duration.millisecondsPerHour*/get millisecondsPerHour() {
      return 60000 * 60;
    },
    /*core.Duration.millisecondsPerDay*/get millisecondsPerDay() {
      return 3600000 * 24;
    },
    /*core.Duration.secondsPerHour*/get secondsPerHour() {
      return 60 * 60;
    },
    /*core.Duration.secondsPerDay*/get secondsPerDay() {
      return 3600 * 24;
    },
    /*core.Duration.minutesPerDay*/get minutesPerDay() {
      return 60 * 24;
    },
    /*core.Duration.zero*/get zero() {
      return dart.const(new core.Duration.new({seconds: 0}));
    }
  });
  core.TypeError = class TypeError extends core.AssertionError {};
  (core.TypeError.new = function() {
    core.TypeError.__proto__.new.call(this);
  }).prototype = core.TypeError.prototype;
  dart.addTypeTests(core.TypeError);
  core.CastError = class CastError extends core.Error {};
  (core.CastError.new = function() {
    core.CastError.__proto__.new.call(this);
  }).prototype = core.CastError.prototype;
  dart.addTypeTests(core.CastError);
  core.NullThrownError = class NullThrownError extends core.Error {
    toString() {
      return "Throw of null.";
    }
  };
  (core.NullThrownError.new = function() {
    core.NullThrownError.__proto__.new.call(this);
  }).prototype = core.NullThrownError.prototype;
  dart.addTypeTests(core.NullThrownError);
  dart.defineExtensionMethods(core.NullThrownError, ['toString']);
  const _hasValue = Symbol('_hasValue');
  const _errorName = Symbol('_errorName');
  const _errorExplanation = Symbol('_errorExplanation');
  core.ArgumentError = class ArgumentError extends core.Error {
    get invalidValue() {
      return this[invalidValue];
    }
    set invalidValue(value) {
      super.invalidValue = value;
    }
    get name() {
      return this[name$1];
    }
    set name(value) {
      super.name = value;
    }
    get message() {
      return this[message$2];
    }
    set message(value) {
      super.message = value;
    }
    static checkNotNull(argument, name) {
      if (name === void 0) name = null;
      if (argument == null) dart.throw(new core.ArgumentError.notNull(name));
    }
    get [_errorName]() {
      return "Invalid argument" + (!dart.test(this[_hasValue]) ? "(s)" : "");
    }
    get [_errorExplanation]() {
      return "";
    }
    toString() {
      let nameString = "";
      if (this[$name] != null) {
        nameString = " (" + dart.str(this[$name]) + ")";
      }
      let message = this[$message] == null ? "" : ": " + dart.str(this[$message]);
      let prefix = dart.str(this[_errorName]) + nameString + message;
      if (!dart.test(this[_hasValue])) return prefix;
      let explanation = this[_errorExplanation];
      let errorValue = core.Error.safeToString(this[$invalidValue]);
      return prefix + dart.str(explanation) + ": " + dart.str(errorValue);
    }
  };
  (core.ArgumentError.new = function(message) {
    if (message === void 0) message = null;
    this[message$2] = message;
    this[invalidValue] = null;
    this[_hasValue] = false;
    this[name$1] = null;
    core.ArgumentError.__proto__.new.call(this);
  }).prototype = core.ArgumentError.prototype;
  (core.ArgumentError.value = function(value, name, message) {
    if (name === void 0) name = null;
    if (message === void 0) message = null;
    this[name$1] = name;
    this[message$2] = message;
    this[invalidValue] = value;
    this[_hasValue] = true;
    core.ArgumentError.__proto__.new.call(this);
  }).prototype = core.ArgumentError.prototype;
  (core.ArgumentError.notNull = function(name) {
    if (name === void 0) name = null;
    this[name$1] = name;
    this[_hasValue] = false;
    this[message$2] = "Must not be null";
    this[invalidValue] = null;
    core.ArgumentError.__proto__.new.call(this);
  }).prototype = core.ArgumentError.prototype;
  dart.addTypeTests(core.ArgumentError);
  const invalidValue = Symbol("ArgumentError.invalidValue");
  const name$1 = Symbol("ArgumentError.name");
  const message$2 = Symbol("ArgumentError.message");
  dart.setGetterSignature(core.ArgumentError, () => ({
    __proto__: dart.getGetters(core.ArgumentError.__proto__),
    [_errorName]: core.String,
    [_errorExplanation]: core.String
  }));
  dart.setFieldSignature(core.ArgumentError, () => ({
    __proto__: dart.getFields(core.ArgumentError.__proto__),
    [_hasValue]: dart.finalFieldType(core.bool),
    invalidValue: dart.finalFieldType(dart.dynamic),
    name: dart.finalFieldType(core.String),
    message: dart.finalFieldType(dart.dynamic)
  }));
  dart.defineExtensionMethods(core.ArgumentError, ['toString']);
  dart.defineExtensionAccessors(core.ArgumentError, ['invalidValue', 'name', 'message']);
  core.RangeError = class RangeError extends core.ArgumentError {
    get start() {
      return this[start];
    }
    set start(value) {
      super.start = value;
    }
    get end() {
      return this[end];
    }
    set end(value) {
      super.end = value;
    }
    static index(index, indexable, name, message, length) {
      return new core.IndexError.new(index, indexable, name, message, length);
    }
    static checkValueInInterval(value, minValue, maxValue, name, message) {
      if (name === void 0) name = null;
      if (message === void 0) message = null;
      if (dart.notNull(value) < dart.notNull(minValue) || dart.notNull(value) > dart.notNull(maxValue)) {
        dart.throw(new core.RangeError.range(value, minValue, maxValue, name, message));
      }
    }
    static checkValidIndex(index, indexable, name, length, message) {
      if (name === void 0) name = null;
      if (length === void 0) length = null;
      if (message === void 0) message = null;
      let t = length;
      t == null ? length = core.int._check(dart.dload(indexable, 'length')) : t;
      if (0 > dart.notNull(index) || dart.notNull(index) >= dart.notNull(length)) {
        let t$ = name;
        t$ == null ? name = "index" : t$;
        dart.throw(core.RangeError.index(index, indexable, name, message, length));
      }
    }
    static checkValidRange(start, end, length, startName, endName, message) {
      if (startName === void 0) startName = null;
      if (endName === void 0) endName = null;
      if (message === void 0) message = null;
      if (0 > dart.notNull(start) || dart.notNull(start) > dart.notNull(length)) {
        let t = startName;
        t == null ? startName = "start" : t;
        dart.throw(new core.RangeError.range(start, 0, length, startName, message));
      }
      if (end != null) {
        if (dart.notNull(start) > dart.notNull(end) || dart.notNull(end) > dart.notNull(length)) {
          let t$ = endName;
          t$ == null ? endName = "end" : t$;
          dart.throw(new core.RangeError.range(end, start, length, endName, message));
        }
        return end;
      }
      return length;
    }
    static checkNotNegative(value, name, message) {
      if (name === void 0) name = null;
      if (message === void 0) message = null;
      if (dart.notNull(value) < 0) dart.throw(new core.RangeError.range(value, 0, null, name, message));
    }
    get [_errorName]() {
      return "RangeError";
    }
    get [_errorExplanation]() {
      if (!dart.test(this[_hasValue])) dart.assertFailed();
      let explanation = "";
      if (this.start == null) {
        if (this.end != null) {
          explanation = ": Not less than or equal to " + dart.str(this.end);
        }
      } else if (this.end == null) {
        explanation = ": Not greater than or equal to " + dart.str(this.start);
      } else if (dart.notNull(this.end) > dart.notNull(this.start)) {
        explanation = ": Not in range " + dart.str(this.start) + ".." + dart.str(this.end) + ", inclusive";
      } else if (dart.notNull(this.end) < dart.notNull(this.start)) {
        explanation = ": Valid value range is empty";
      } else {
        explanation = ": Only valid value is " + dart.str(this.start);
      }
      return explanation;
    }
  };
  (core.RangeError.new = function(message) {
    this[start] = null;
    this[end] = null;
    core.RangeError.__proto__.new.call(this, message);
  }).prototype = core.RangeError.prototype;
  (core.RangeError.value = function(value, name, message) {
    if (name === void 0) name = null;
    if (message === void 0) message = null;
    this[start] = null;
    this[end] = null;
    core.RangeError.__proto__.value.call(this, value, name, message != null ? message : "Value not in range");
  }).prototype = core.RangeError.prototype;
  (core.RangeError.range = function(invalidValue, minValue, maxValue, name, message) {
    if (name === void 0) name = null;
    if (message === void 0) message = null;
    this[start] = minValue;
    this[end] = maxValue;
    core.RangeError.__proto__.value.call(this, invalidValue, name, message != null ? message : "Invalid value");
  }).prototype = core.RangeError.prototype;
  dart.addTypeTests(core.RangeError);
  const start = Symbol("RangeError.start");
  const end = Symbol("RangeError.end");
  dart.setFieldSignature(core.RangeError, () => ({
    __proto__: dart.getFields(core.RangeError.__proto__),
    start: dart.finalFieldType(core.num),
    end: dart.finalFieldType(core.num)
  }));
  core.IndexError = class IndexError extends core.ArgumentError {
    get indexable() {
      return this[indexable$];
    }
    set indexable(value) {
      super.indexable = value;
    }
    get length() {
      return this[length$];
    }
    set length(value) {
      super.length = value;
    }
    get start() {
      return 0;
    }
    get end() {
      return dart.notNull(this.length) - 1;
    }
    get [_errorName]() {
      return "RangeError";
    }
    get [_errorExplanation]() {
      if (!dart.test(this[_hasValue])) dart.assertFailed();
      let invalidValue = core.int._check(this.invalidValue);
      if (dart.notNull(invalidValue) < 0) {
        return ": index must not be negative";
      }
      if (this.length === 0) {
        return ": no indices are valid";
      }
      return ": index should be less than " + dart.str(this.length);
    }
  };
  (core.IndexError.new = function(invalidValue, indexable, name, message, length) {
    if (name === void 0) name = null;
    if (message === void 0) message = null;
    if (length === void 0) length = null;
    this[indexable$] = indexable;
    this[length$] = core.int._check((() => {
      let l = length;
      return l != null ? l : dart.dload(indexable, 'length');
    })());
    core.IndexError.__proto__.value.call(this, invalidValue, name, message != null ? message : "Index out of range");
  }).prototype = core.IndexError.prototype;
  dart.addTypeTests(core.IndexError);
  const indexable$ = Symbol("IndexError.indexable");
  const length$ = Symbol("IndexError.length");
  core.IndexError[dart.implements] = () => [core.RangeError];
  dart.setGetterSignature(core.IndexError, () => ({
    __proto__: dart.getGetters(core.IndexError.__proto__),
    start: core.int,
    end: core.int
  }));
  dart.setFieldSignature(core.IndexError, () => ({
    __proto__: dart.getFields(core.IndexError.__proto__),
    indexable: dart.finalFieldType(dart.dynamic),
    length: dart.finalFieldType(core.int)
  }));
  const _className = Symbol('_className');
  core.AbstractClassInstantiationError = class AbstractClassInstantiationError extends core.Error {
    toString() {
      return "Cannot instantiate abstract class: '" + dart.str(this[_className]) + "'";
    }
  };
  (core.AbstractClassInstantiationError.new = function(className) {
    this[_className] = className;
    core.AbstractClassInstantiationError.__proto__.new.call(this);
  }).prototype = core.AbstractClassInstantiationError.prototype;
  dart.addTypeTests(core.AbstractClassInstantiationError);
  dart.setFieldSignature(core.AbstractClassInstantiationError, () => ({
    __proto__: dart.getFields(core.AbstractClassInstantiationError.__proto__),
    [_className]: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(core.AbstractClassInstantiationError, ['toString']);
  const _receiver$ = Symbol('_receiver');
  const _memberName = Symbol('_memberName');
  const _arguments = Symbol('_arguments');
  const _namedArguments = Symbol('_namedArguments');
  const _existingArgumentNames = Symbol('_existingArgumentNames');
  core.NoSuchMethodError = class NoSuchMethodError extends core.Error {
    toString() {
      let sb = new core.StringBuffer.new("");
      let comma = "";
      if (this[_arguments] != null) {
        for (let argument of this[_arguments]) {
          sb.write(comma);
          sb.write(core.Error.safeToString(argument));
          comma = ", ";
        }
      }
      if (this[_namedArguments] != null) {
        this[_namedArguments][$forEach](dart.fn((key, value) => {
          sb.write(comma);
          sb.write(core._symbolToString(key));
          sb.write(": ");
          sb.write(core.Error.safeToString(value));
          comma = ", ";
        }, SymbolAnddynamicToNull()));
      }
      let memberName = core._symbolToString(this[_memberName]);
      let receiverText = core.Error.safeToString(this[_receiver$]);
      let actualParameters = dart.str(sb);
      if (this[_existingArgumentNames] == null) {
        return "NoSuchMethodError: method not found: '" + dart.str(memberName) + "'\n" + ("Receiver: " + dart.str(receiverText) + "\n") + ("Arguments: [" + actualParameters + "]");
      } else {
        let formalParameters = this[_existingArgumentNames][$join](", ");
        return "NoSuchMethodError: incorrect number of arguments passed to " + ("method named '" + dart.str(memberName) + "'\n") + ("Receiver: " + dart.str(receiverText) + "\n") + ("Tried calling: " + dart.str(memberName) + "(" + actualParameters + ")\n") + ("Found: " + dart.str(memberName) + "(" + dart.str(formalParameters) + ")");
      }
    }
  };
  (core.NoSuchMethodError.withInvocation = function(receiver, invocation) {
    this[_receiver$] = receiver;
    this[_memberName] = invocation.memberName;
    this[_arguments] = invocation.positionalArguments;
    this[_namedArguments] = invocation.namedArguments;
    this[_existingArgumentNames] = null;
    core.NoSuchMethodError.__proto__.new.call(this);
  }).prototype = core.NoSuchMethodError.prototype;
  (core.NoSuchMethodError.new = function(receiver, memberName, positionalArguments, namedArguments, existingArgumentNames) {
    if (existingArgumentNames === void 0) existingArgumentNames = null;
    this[_receiver$] = receiver;
    this[_memberName] = memberName;
    this[_arguments] = positionalArguments;
    this[_namedArguments] = namedArguments;
    this[_existingArgumentNames] = existingArgumentNames;
    core.NoSuchMethodError.__proto__.new.call(this);
  }).prototype = core.NoSuchMethodError.prototype;
  dart.addTypeTests(core.NoSuchMethodError);
  dart.setFieldSignature(core.NoSuchMethodError, () => ({
    __proto__: dart.getFields(core.NoSuchMethodError.__proto__),
    [_receiver$]: dart.finalFieldType(core.Object),
    [_memberName]: dart.finalFieldType(core.Symbol),
    [_arguments]: dart.finalFieldType(core.List),
    [_namedArguments]: dart.finalFieldType(MapOfSymbol$dynamic()),
    [_existingArgumentNames]: dart.finalFieldType(core.List)
  }));
  dart.defineExtensionMethods(core.NoSuchMethodError, ['toString']);
  core.UnsupportedError = class UnsupportedError extends core.Error {
    get message() {
      return this[message$3];
    }
    set message(value) {
      super.message = value;
    }
    toString() {
      return "Unsupported operation: " + dart.str(this.message);
    }
  };
  (core.UnsupportedError.new = function(message) {
    this[message$3] = message;
    core.UnsupportedError.__proto__.new.call(this);
  }).prototype = core.UnsupportedError.prototype;
  dart.addTypeTests(core.UnsupportedError);
  const message$3 = Symbol("UnsupportedError.message");
  dart.setFieldSignature(core.UnsupportedError, () => ({
    __proto__: dart.getFields(core.UnsupportedError.__proto__),
    message: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(core.UnsupportedError, ['toString']);
  core.UnimplementedError = class UnimplementedError extends core.Error {
    get message() {
      return this[message$4];
    }
    set message(value) {
      super.message = value;
    }
    toString() {
      return this.message != null ? "UnimplementedError: " + dart.str(this.message) : "UnimplementedError";
    }
  };
  (core.UnimplementedError.new = function(message) {
    if (message === void 0) message = null;
    this[message$4] = message;
    core.UnimplementedError.__proto__.new.call(this);
  }).prototype = core.UnimplementedError.prototype;
  dart.addTypeTests(core.UnimplementedError);
  const message$4 = Symbol("UnimplementedError.message");
  core.UnimplementedError[dart.implements] = () => [core.UnsupportedError];
  dart.setFieldSignature(core.UnimplementedError, () => ({
    __proto__: dart.getFields(core.UnimplementedError.__proto__),
    message: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(core.UnimplementedError, ['toString']);
  core.StateError = class StateError extends core.Error {
    get message() {
      return this[message$5];
    }
    set message(value) {
      super.message = value;
    }
    toString() {
      return "Bad state: " + dart.str(this.message);
    }
  };
  (core.StateError.new = function(message) {
    this[message$5] = message;
    core.StateError.__proto__.new.call(this);
  }).prototype = core.StateError.prototype;
  dart.addTypeTests(core.StateError);
  const message$5 = Symbol("StateError.message");
  dart.setFieldSignature(core.StateError, () => ({
    __proto__: dart.getFields(core.StateError.__proto__),
    message: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(core.StateError, ['toString']);
  core.ConcurrentModificationError = class ConcurrentModificationError extends core.Error {
    get modifiedObject() {
      return this[modifiedObject$];
    }
    set modifiedObject(value) {
      super.modifiedObject = value;
    }
    toString() {
      if (this.modifiedObject == null) {
        return "Concurrent modification during iteration.";
      }
      return "Concurrent modification during iteration: " + (dart.str(core.Error.safeToString(this.modifiedObject)) + ".");
    }
  };
  (core.ConcurrentModificationError.new = function(modifiedObject) {
    if (modifiedObject === void 0) modifiedObject = null;
    this[modifiedObject$] = modifiedObject;
    core.ConcurrentModificationError.__proto__.new.call(this);
  }).prototype = core.ConcurrentModificationError.prototype;
  dart.addTypeTests(core.ConcurrentModificationError);
  const modifiedObject$ = Symbol("ConcurrentModificationError.modifiedObject");
  dart.setFieldSignature(core.ConcurrentModificationError, () => ({
    __proto__: dart.getFields(core.ConcurrentModificationError.__proto__),
    modifiedObject: dart.finalFieldType(core.Object)
  }));
  dart.defineExtensionMethods(core.ConcurrentModificationError, ['toString']);
  core.OutOfMemoryError = class OutOfMemoryError extends core.Object {
    toString() {
      return "Out of Memory";
    }
    get stackTrace() {
      return null;
    }
  };
  (core.OutOfMemoryError.new = function() {
  }).prototype = core.OutOfMemoryError.prototype;
  dart.addTypeTests(core.OutOfMemoryError);
  core.OutOfMemoryError[dart.implements] = () => [core.Error];
  dart.setGetterSignature(core.OutOfMemoryError, () => ({
    __proto__: dart.getGetters(core.OutOfMemoryError.__proto__),
    stackTrace: core.StackTrace,
    [$stackTrace]: core.StackTrace
  }));
  dart.defineExtensionMethods(core.OutOfMemoryError, ['toString']);
  dart.defineExtensionAccessors(core.OutOfMemoryError, ['stackTrace']);
  core.StackOverflowError = class StackOverflowError extends core.Object {
    toString() {
      return "Stack Overflow";
    }
    get stackTrace() {
      return null;
    }
  };
  (core.StackOverflowError.new = function() {
  }).prototype = core.StackOverflowError.prototype;
  dart.addTypeTests(core.StackOverflowError);
  core.StackOverflowError[dart.implements] = () => [core.Error];
  dart.setGetterSignature(core.StackOverflowError, () => ({
    __proto__: dart.getGetters(core.StackOverflowError.__proto__),
    stackTrace: core.StackTrace,
    [$stackTrace]: core.StackTrace
  }));
  dart.defineExtensionMethods(core.StackOverflowError, ['toString']);
  dart.defineExtensionAccessors(core.StackOverflowError, ['stackTrace']);
  core.CyclicInitializationError = class CyclicInitializationError extends core.Error {
    get variableName() {
      return this[variableName$];
    }
    set variableName(value) {
      super.variableName = value;
    }
    toString() {
      return this.variableName == null ? "Reading static variable during its initialization" : "Reading static variable '" + dart.str(this.variableName) + "' during its initialization";
    }
  };
  (core.CyclicInitializationError.new = function(variableName) {
    if (variableName === void 0) variableName = null;
    this[variableName$] = variableName;
    core.CyclicInitializationError.__proto__.new.call(this);
  }).prototype = core.CyclicInitializationError.prototype;
  dart.addTypeTests(core.CyclicInitializationError);
  const variableName$ = Symbol("CyclicInitializationError.variableName");
  dart.setFieldSignature(core.CyclicInitializationError, () => ({
    __proto__: dart.getFields(core.CyclicInitializationError.__proto__),
    variableName: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(core.CyclicInitializationError, ['toString']);
  core.Exception = class Exception extends core.Object {
    static new(message) {
      if (message === void 0) message = null;
      return new core._Exception.new(message);
    }
  };
  (core.Exception[dart.mixinNew] = function() {
  }).prototype = core.Exception.prototype;
  dart.addTypeTests(core.Exception);
  core._Exception = class _Exception extends core.Object {
    toString() {
      if (this.message == null) return "Exception";
      return "Exception: " + dart.str(this.message);
    }
  };
  (core._Exception.new = function(message) {
    if (message === void 0) message = null;
    this.message = message;
  }).prototype = core._Exception.prototype;
  dart.addTypeTests(core._Exception);
  core._Exception[dart.implements] = () => [core.Exception];
  dart.setFieldSignature(core._Exception, () => ({
    __proto__: dart.getFields(core._Exception.__proto__),
    message: dart.finalFieldType(dart.dynamic)
  }));
  dart.defineExtensionMethods(core._Exception, ['toString']);
  core.FormatException = class FormatException extends core.Object {
    get message() {
      return this[message$6];
    }
    set message(value) {
      super.message = value;
    }
    get source() {
      return this[source$];
    }
    set source(value) {
      super.source = value;
    }
    get offset() {
      return this[offset$];
    }
    set offset(value) {
      super.offset = value;
    }
    toString() {
      let report = "FormatException";
      if (this.message != null && "" !== this.message) {
        report = report + ": " + dart.str(this.message);
      }
      let offset = this.offset;
      let objectSource = this.source;
      if (typeof objectSource == 'string') {
        let source = objectSource;
        if (offset != null && (dart.notNull(offset) < 0 || dart.notNull(offset) > source.length)) {
          offset = null;
        }
        if (offset == null) {
          if (source.length > 78) {
            source = source[$substring](0, 75) + "...";
          }
          return report + "\n" + dart.str(source);
        }
        let lineNum = 1;
        let lineStart = 0;
        let previousCharWasCR = false;
        for (let i = 0; i < dart.notNull(offset); i++) {
          let char = source[$codeUnitAt](i);
          if (char === 10) {
            if (lineStart !== i || !previousCharWasCR) {
              lineNum++;
            }
            lineStart = i + 1;
            previousCharWasCR = false;
          } else if (char === 13) {
            lineNum++;
            lineStart = i + 1;
            previousCharWasCR = true;
          }
        }
        if (lineNum > 1) {
          report = report + (" (at line " + dart.str(lineNum) + ", character " + dart.str(dart.notNull(offset) - lineStart + 1) + ")\n");
        } else {
          report = report + (" (at character " + dart.str(dart.notNull(offset) + 1) + ")\n");
        }
        let lineEnd = source.length;
        for (let i = offset; dart.notNull(i) < source.length; i = dart.notNull(i) + 1) {
          let char = source[$codeUnitAt](i);
          if (char === 10 || char === 13) {
            lineEnd = i;
            break;
          }
        }
        let length = dart.notNull(lineEnd) - lineStart;
        let start = lineStart;
        let end = lineEnd;
        let prefix = "";
        let postfix = "";
        if (length > 78) {
          let index = dart.notNull(offset) - lineStart;
          if (index < 75) {
            end = start + 75;
            postfix = "...";
          } else if (dart.notNull(end) - dart.notNull(offset) < 75) {
            start = dart.notNull(end) - 75;
            prefix = "...";
          } else {
            start = dart.notNull(offset) - 36;
            end = dart.notNull(offset) + 36;
            prefix = postfix = "...";
          }
        }
        let slice = source[$substring](start, end);
        let markOffset = dart.notNull(offset) - start + prefix.length;
        return report + prefix + slice + postfix + "\n" + " "[$times](markOffset) + "^\n";
      } else {
        if (offset != null) {
          report = report + (" (at offset " + dart.str(offset) + ")");
        }
        return report;
      }
    }
  };
  (core.FormatException.new = function(message, source, offset) {
    if (message === void 0) message = "";
    if (source === void 0) source = null;
    if (offset === void 0) offset = null;
    this[message$6] = message;
    this[source$] = source;
    this[offset$] = offset;
  }).prototype = core.FormatException.prototype;
  dart.addTypeTests(core.FormatException);
  const message$6 = Symbol("FormatException.message");
  const source$ = Symbol("FormatException.source");
  const offset$ = Symbol("FormatException.offset");
  core.FormatException[dart.implements] = () => [core.Exception];
  dart.setFieldSignature(core.FormatException, () => ({
    __proto__: dart.getFields(core.FormatException.__proto__),
    message: dart.finalFieldType(core.String),
    source: dart.finalFieldType(dart.dynamic),
    offset: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionMethods(core.FormatException, ['toString']);
  core.IntegerDivisionByZeroException = class IntegerDivisionByZeroException extends core.Object {
    toString() {
      return "IntegerDivisionByZeroException";
    }
  };
  (core.IntegerDivisionByZeroException.new = function() {
  }).prototype = core.IntegerDivisionByZeroException.prototype;
  dart.addTypeTests(core.IntegerDivisionByZeroException);
  core.IntegerDivisionByZeroException[dart.implements] = () => [core.Exception];
  dart.defineExtensionMethods(core.IntegerDivisionByZeroException, ['toString']);
  const _getKey = Symbol('_getKey');
  const _is_Expando_default = Symbol('_is_Expando_default');
  core.Expando$ = dart.generic(T => {
    class Expando extends core.Object {
      get name() {
        return this[name$];
      }
      set name(value) {
        super.name = value;
      }
      toString() {
        return "Expando:" + dart.str(this.name);
      }
      _get(object) {
        let values = _js_helper.Primitives.getProperty(object, "expando$values");
        return T._check(values == null ? null : _js_helper.Primitives.getProperty(values, this[_getKey]()));
      }
      _set(object, value) {
        T._check(value);
        let values = _js_helper.Primitives.getProperty(object, "expando$values");
        if (values == null) {
          values = new core.Object.new();
          _js_helper.Primitives.setProperty(object, "expando$values", values);
        }
        _js_helper.Primitives.setProperty(values, this[_getKey](), value);
        return value;
      }
      [_getKey]() {
        let key = core.String._check(_js_helper.Primitives.getProperty(this, "expando$key"));
        if (key == null) {
          key = "expando$key$" + dart.str((() => {
            let x = core.Expando._keyCount;
            core.Expando._keyCount = dart.notNull(x) + 1;
            return x;
          })());
          _js_helper.Primitives.setProperty(this, "expando$key", key);
        }
        return key;
      }
    }
    (Expando.new = function(name) {
      if (name === void 0) name = null;
      this[name$] = name;
    }).prototype = Expando.prototype;
    dart.addTypeTests(Expando);
    Expando.prototype[_is_Expando_default] = true;
    const name$ = Symbol("Expando.name");
    dart.setMethodSignature(Expando, () => ({
      __proto__: dart.getMethods(Expando.__proto__),
      toString: dart.fnType(core.String, []),
      [$toString]: dart.fnType(core.String, []),
      _get: dart.fnType(T, [core.Object]),
      _set: dart.fnType(dart.void, [core.Object, core.Object]),
      [_getKey]: dart.fnType(core.String, [])
    }));
    dart.setFieldSignature(Expando, () => ({
      __proto__: dart.getFields(Expando.__proto__),
      name: dart.finalFieldType(core.String)
    }));
    dart.defineExtensionMethods(Expando, ['toString']);
    return Expando;
  });
  core.Expando = core.Expando$();
  dart.defineLazy(core.Expando, {
    /*core.Expando._KEY_PROPERTY_NAME*/get _KEY_PROPERTY_NAME() {
      return "expando$key";
    },
    /*core.Expando._EXPANDO_PROPERTY_NAME*/get _EXPANDO_PROPERTY_NAME() {
      return "expando$values";
    },
    /*core.Expando._keyCount*/get _keyCount() {
      return 0;
    },
    set _keyCount(_) {}
  });
  dart.addTypeTests(core.Expando, _is_Expando_default);
  core.Function = class Function extends core.Object {
    static apply(f, positionalArguments, namedArguments) {
      if (namedArguments === void 0) namedArguments = null;
      let t = positionalArguments;
      t == null ? positionalArguments = [] : t;
      if (namedArguments != null && dart.test(namedArguments[$isNotEmpty])) {
        let map = {};
        namedArguments[$forEach](dart.fn((symbol, arg) => {
          map[core._symbolToString(symbol)] = arg;
        }, SymbolAnddynamicToNull()));
        return dart.dcall(f, positionalArguments, map);
      }
      return dart.dcall(f, positionalArguments);
    }
    static _toMangledNames(namedArguments) {
      let result = new (IdentityMapOfString$dynamic()).new();
      namedArguments[$forEach](dart.fn((symbol, value) => {
        result[$_set](core._symbolToString(symbol), value);
      }, SymbolAnddynamicToNull()));
      return result;
    }
  };
  (core.Function.new = function() {
  }).prototype = core.Function.prototype;
  core.Function.is = function is_Function(o) {
    return typeof o == "function";
  };
  core.Function.as = function as_Function(o) {
    if (typeof o == "function" || o == null) return o;
    return dart.as(o, core.Function, false);
  };
  core.Function._check = function check_Function(o) {
    if (typeof o == "function" || o == null) return o;
    return dart.as(o, core.Function, true);
  };
  core.identical = function(a, b) {
    return a == null ? b == null : a === b;
  };
  core.identityHashCode = function(object) {
    if (object == null) return 0;
    let hash = object[dart.identityHashCode_];
    if (hash == null) {
      hash = Math.random() * 0x3fffffff | 0;
      object[dart.identityHashCode_] = hash;
    }
    return hash;
  };
  const _positional = Symbol('_positional');
  let const$44;
  const _named = Symbol('_named');
  let const$45;
  let const$46;
  let const$47;
  let const$48;
  let const$49;
  let const$50;
  core._Invocation = class _Invocation extends core.Object {
    get positionalArguments() {
      return this[_positional] != null ? this[_positional] : const$48 || (const$48 = dart.constList([], core.Object));
    }
    get namedArguments() {
      return this[_named] != null ? this[_named] : const$49 || (const$49 = dart.constMap(core.Symbol, core.Object, []));
    }
    get isMethod() {
      return this[_named] != null;
    }
    get isGetter() {
      return this[_positional] == null;
    }
    get isSetter() {
      return this[_positional] != null && this[_named] == null;
    }
    get isAccessor() {
      return this[_named] == null;
    }
    static _ensureNonNullTypes(types) {
      if (types == null) return const$50 || (const$50 = dart.constList([], core.Type));
      for (let i = 0; i < dart.notNull(types[$length]); i++) {
        if (types[$_get](i) == null) {
          dart.throw(new core.ArgumentError.new("Type arguments must be non-null, was null at index " + dart.str(i) + "."));
        }
      }
      return types;
    }
    static _makeUnmodifiable(T, elements) {
      if (elements == null) return null;
      return core.List$(T).unmodifiable(elements);
    }
  };
  (core._Invocation.method = function(memberName, types, positional, named) {
    this.memberName = memberName;
    this.typeArguments = core._Invocation._ensureNonNullTypes(core._Invocation._makeUnmodifiable(core.Type, types));
    let l = core._Invocation._makeUnmodifiable(core.Object, positional);
    this[_positional] = l != null ? l : const$44 || (const$44 = dart.constList([], core.Object));
    this[_named] = named == null || dart.test(named[$isEmpty]) ? const$45 || (const$45 = dart.constMap(core.Symbol, core.Object, [])) : MapOfSymbol$Object().unmodifiable(named);
  }).prototype = core._Invocation.prototype;
  (core._Invocation.getter = function(memberName) {
    this.memberName = memberName;
    this.typeArguments = const$46 || (const$46 = dart.constList([], core.Type));
    this[_positional] = null;
    this[_named] = null;
  }).prototype = core._Invocation.prototype;
  (core._Invocation.setter = function(memberName, argument) {
    this.memberName = memberName;
    this.typeArguments = const$47 || (const$47 = dart.constList([], core.Type));
    this[_positional] = ListOfObject().unmodifiable([argument]);
    this[_named] = null;
  }).prototype = core._Invocation.prototype;
  dart.addTypeTests(core._Invocation);
  core._Invocation[dart.implements] = () => [core.Invocation];
  dart.setGetterSignature(core._Invocation, () => ({
    __proto__: dart.getGetters(core._Invocation.__proto__),
    positionalArguments: core.List,
    namedArguments: core.Map$(core.Symbol, dart.dynamic),
    isMethod: core.bool,
    isGetter: core.bool,
    isSetter: core.bool,
    isAccessor: core.bool
  }));
  dart.setFieldSignature(core._Invocation, () => ({
    __proto__: dart.getFields(core._Invocation.__proto__),
    memberName: dart.finalFieldType(core.Symbol),
    typeArguments: dart.finalFieldType(ListOfType()),
    [_positional]: dart.finalFieldType(ListOfObject()),
    [_named]: dart.finalFieldType(MapOfSymbol$Object())
  }));
  const _generator = Symbol('_generator');
  const _is__GeneratorIterable_default = Symbol('_is__GeneratorIterable_default');
  core._GeneratorIterable$ = dart.generic(E => {
    let intToE = () => (intToE = dart.constFn(dart.fnType(E, [core.int])))();
    class _GeneratorIterable extends _internal.ListIterable$(E) {
      get length() {
        return this[length$];
      }
      set length(value) {
        super.length = value;
      }
      elementAt(index) {
        core.RangeError.checkValidIndex(index, this);
        return this[_generator](index);
      }
      static _id(n) {
        return n;
      }
    }
    (_GeneratorIterable.new = function(length, generator) {
      this[length$] = length;
      this[_generator] = generator != null ? generator : intToE().as(dart.fn(core._GeneratorIterable._id, intToint()));
      _GeneratorIterable.__proto__.new.call(this);
    }).prototype = _GeneratorIterable.prototype;
    dart.addTypeTests(_GeneratorIterable);
    _GeneratorIterable.prototype[_is__GeneratorIterable_default] = true;
    const length$ = Symbol("_GeneratorIterable.length");
    dart.setMethodSignature(_GeneratorIterable, () => ({
      __proto__: dart.getMethods(_GeneratorIterable.__proto__),
      elementAt: dart.fnType(E, [core.int]),
      [$elementAt]: dart.fnType(E, [core.int])
    }));
    dart.setFieldSignature(_GeneratorIterable, () => ({
      __proto__: dart.getFields(_GeneratorIterable.__proto__),
      length: dart.finalFieldType(core.int),
      [_generator]: dart.finalFieldType(intToE())
    }));
    dart.defineExtensionMethods(_GeneratorIterable, ['elementAt']);
    dart.defineExtensionAccessors(_GeneratorIterable, ['length']);
    return _GeneratorIterable;
  });
  core._GeneratorIterable = core._GeneratorIterable$();
  dart.addTypeTests(core._GeneratorIterable, _is__GeneratorIterable_default);
  const _is_BidirectionalIterator_default = Symbol('_is_BidirectionalIterator_default');
  core.BidirectionalIterator$ = dart.generic(E => {
    let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
    class BidirectionalIterator extends core.Object {}
    (BidirectionalIterator.new = function() {
    }).prototype = BidirectionalIterator.prototype;
    dart.addTypeTests(BidirectionalIterator);
    BidirectionalIterator.prototype[_is_BidirectionalIterator_default] = true;
    BidirectionalIterator[dart.implements] = () => [IteratorOfE()];
    return BidirectionalIterator;
  });
  core.BidirectionalIterator = core.BidirectionalIterator$();
  dart.addTypeTests(core.BidirectionalIterator, _is_BidirectionalIterator_default);
  core.Map$ = dart.generic((K, V) => {
    let LinkedMapOfK$V = () => (LinkedMapOfK$V = dart.constFn(_js_helper.LinkedMap$(K, V)))();
    let LinkedHashMapOfK$V = () => (LinkedHashMapOfK$V = dart.constFn(collection.LinkedHashMap$(K, V)))();
    let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
    let UnmodifiableMapViewOfK$V = () => (UnmodifiableMapViewOfK$V = dart.constFn(collection.UnmodifiableMapView$(K, V)))();
    class Map extends core.Object {
      static new() {
        return new (LinkedMapOfK$V()).new();
      }
      static from(other) {
        return LinkedHashMapOfK$V().from(other);
      }
      static of(other) {
        return LinkedHashMapOfK$V().of(other);
      }
      static unmodifiable(other) {
        return new (UnmodifiableMapViewOfK$V()).new(MapOfK$V().from(other));
      }
      static identity() {
        return LinkedHashMapOfK$V().identity();
      }
      static fromIterable(iterable, opts) {
        return LinkedHashMapOfK$V().fromIterable(iterable, opts);
      }
      static fromIterables(keys, values) {
        return LinkedHashMapOfK$V().fromIterables(keys, values);
      }
      static castFrom(K, V, K2, V2, source) {
        return new (_internal.CastMap$(K, V, K2, V2)).new(source);
      }
      static fromEntries(entries) {
        let _ = new (LinkedMapOfK$V()).new();
        _[$addEntries](entries);
        return _;
      }
    }
    (Map[dart.mixinNew] = function() {
    }).prototype = Map.prototype;
    dart.addTypeTests(Map);
    Map.prototype[dart.isMap] = true;
    return Map;
  });
  core.Map = core.Map$();
  dart.addTypeTests(core.Map, dart.isMap);
  const _is_MapEntry_default = Symbol('_is_MapEntry_default');
  core.MapEntry$ = dart.generic((K, V) => {
    let MapEntryOfK$V = () => (MapEntryOfK$V = dart.constFn(core.MapEntry$(K, V)))();
    class MapEntry extends core.Object {
      get key() {
        return this[key$];
      }
      set key(value) {
        super.key = value;
      }
      get value() {
        return this[value$];
      }
      set value(value) {
        super.value = value;
      }
      static new(key, value) {
        return new (MapEntryOfK$V()).__(key, value);
      }
      toString() {
        return "MapEntry(" + dart.str(this.key) + ": " + dart.str(this.value) + ")";
      }
    }
    (MapEntry.__ = function(key, value) {
      this[key$] = key;
      this[value$] = value;
    }).prototype = MapEntry.prototype;
    dart.addTypeTests(MapEntry);
    MapEntry.prototype[_is_MapEntry_default] = true;
    const key$ = Symbol("MapEntry.key");
    const value$ = Symbol("MapEntry.value");
    dart.setMethodSignature(MapEntry, () => ({
      __proto__: dart.getMethods(MapEntry.__proto__),
      toString: dart.fnType(core.String, []),
      [$toString]: dart.fnType(core.String, [])
    }));
    dart.setFieldSignature(MapEntry, () => ({
      __proto__: dart.getFields(MapEntry.__proto__),
      key: dart.finalFieldType(K),
      value: dart.finalFieldType(V)
    }));
    dart.defineExtensionMethods(MapEntry, ['toString']);
    return MapEntry;
  });
  core.MapEntry = core.MapEntry$();
  dart.addTypeTests(core.MapEntry, _is_MapEntry_default);
  core.Null = class Null extends core.Object {
    get hashCode() {
      return super.hashCode;
    }
    toString() {
      return "null";
    }
  };
  (core.Null[dart.mixinNew] = function() {
  }).prototype = core.Null.prototype;
  core.Null.is = function is_Null(o) {
    return o == null;
  };
  core.Null.as = function as_Null(o) {
    if (o == null) return o;
    return dart.as(o, core.Null, false);
  };
  core.Null._check = function check_Null(o) {
    if (o == null) return o;
    return dart.as(o, core.Null, true);
  };
  dart.defineExtensionMethods(core.Null, ['toString']);
  dart.defineExtensionAccessors(core.Null, ['hashCode']);
  core.Pattern = class Pattern extends core.Object {};
  (core.Pattern.new = function() {
  }).prototype = core.Pattern.prototype;
  dart.addTypeTests(core.Pattern);
  core.print = function(object) {
    let line = dart.str(object);
    if (_internal.printToZone == null) {
      _internal.printToConsole(line);
    } else {
      _internal.printToZone(line);
    }
  };
  core.RegExp = class RegExp extends core.Object {
    static new(source, opts) {
      let multiLine = opts && 'multiLine' in opts ? opts.multiLine : false;
      let caseSensitive = opts && 'caseSensitive' in opts ? opts.caseSensitive : true;
      return new _js_helper.JSSyntaxRegExp.new(source, {multiLine: multiLine, caseSensitive: caseSensitive});
    }
    static escape(text) {
      return _js_helper.quoteStringForRegExp(text);
    }
  };
  (core.RegExp[dart.mixinNew] = function() {
  }).prototype = core.RegExp.prototype;
  dart.addTypeTests(core.RegExp);
  core.RegExp[dart.implements] = () => [core.Pattern];
  const _is_Set_default = Symbol('_is_Set_default');
  core.Set$ = dart.generic(E => {
    let LinkedHashSetOfE = () => (LinkedHashSetOfE = dart.constFn(collection.LinkedHashSet$(E)))();
    class Set extends _internal.EfficientLengthIterable$(E) {
      static new() {
        return LinkedHashSetOfE().new();
      }
      static identity() {
        return LinkedHashSetOfE().identity();
      }
      static from(elements) {
        return LinkedHashSetOfE().from(elements);
      }
      static of(elements) {
        return LinkedHashSetOfE().of(elements);
      }
      static castFrom(S, T, source, opts) {
        let newSet = opts && 'newSet' in opts ? opts.newSet : null;
        return new (_internal.CastSet$(S, T)).new(source, newSet);
      }
    }
    dart.addTypeTests(Set);
    Set.prototype[_is_Set_default] = true;
    return Set;
  });
  core.Set = core.Set$();
  dart.addTypeTests(core.Set, _is_Set_default);
  const _is_Sink_default = Symbol('_is_Sink_default');
  core.Sink$ = dart.generic(T => {
    class Sink extends core.Object {}
    (Sink.new = function() {
    }).prototype = Sink.prototype;
    dart.addTypeTests(Sink);
    Sink.prototype[_is_Sink_default] = true;
    return Sink;
  });
  core.Sink = core.Sink$();
  dart.addTypeTests(core.Sink, _is_Sink_default);
  core.StackTrace = class StackTrace extends core.Object {
    static fromString(stackTraceString) {
      return new core._StringStackTrace.new(stackTraceString);
    }
    static get current() {
      return dart.stackTrace(Error());
    }
  };
  (core.StackTrace.new = function() {
  }).prototype = core.StackTrace.prototype;
  dart.addTypeTests(core.StackTrace);
  const _stackTrace = Symbol('_stackTrace');
  core._StringStackTrace = class _StringStackTrace extends core.Object {
    toString() {
      return this[_stackTrace];
    }
  };
  (core._StringStackTrace.new = function(stackTrace) {
    this[_stackTrace] = stackTrace;
  }).prototype = core._StringStackTrace.prototype;
  dart.addTypeTests(core._StringStackTrace);
  core._StringStackTrace[dart.implements] = () => [core.StackTrace];
  dart.setFieldSignature(core._StringStackTrace, () => ({
    __proto__: dart.getFields(core._StringStackTrace.__proto__),
    [_stackTrace]: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(core._StringStackTrace, ['toString']);
  const _start$0 = Symbol('_start');
  const _stop = Symbol('_stop');
  core.Stopwatch = class Stopwatch extends core.Object {
    get frequency() {
      return core.Stopwatch._frequency;
    }
    start() {
      if (this[_stop] != null) {
        this[_start$0] = dart.notNull(this[_start$0]) + (dart.notNull(core.Stopwatch._now()) - dart.notNull(this[_stop]));
        this[_stop] = null;
      }
    }
    stop() {
      let t = this[_stop];
      t == null ? this[_stop] = core.Stopwatch._now() : t;
    }
    reset() {
      let l = this[_stop];
      this[_start$0] = l != null ? l : core.Stopwatch._now();
    }
    get elapsedTicks() {
      return dart.notNull((() => {
        let l = this[_stop];
        return l != null ? l : core.Stopwatch._now();
      })()) - dart.notNull(this[_start$0]);
    }
    get elapsed() {
      return new core.Duration.new({microseconds: this.elapsedMicroseconds});
    }
    get elapsedMicroseconds() {
      return (dart.notNull(this.elapsedTicks) * 1000000 / dart.notNull(this.frequency))[$truncate]();
    }
    get elapsedMilliseconds() {
      return (dart.notNull(this.elapsedTicks) * 1000 / dart.notNull(this.frequency))[$truncate]();
    }
    get isRunning() {
      return this[_stop] == null;
    }
    static _initTicker() {
      _js_helper.Primitives.initTicker();
      core.Stopwatch._frequency = _js_helper.Primitives.timerFrequency;
    }
    static _now() {
      return core.int._check(dart.dsend(_js_helper.Primitives, 'timerTicks', []));
    }
  };
  (core.Stopwatch.new = function() {
    this[_start$0] = 0;
    this[_stop] = 0;
    if (core.Stopwatch._frequency == null) core.Stopwatch._initTicker();
  }).prototype = core.Stopwatch.prototype;
  dart.addTypeTests(core.Stopwatch);
  dart.setMethodSignature(core.Stopwatch, () => ({
    __proto__: dart.getMethods(core.Stopwatch.__proto__),
    start: dart.fnType(dart.void, []),
    stop: dart.fnType(dart.void, []),
    reset: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(core.Stopwatch, () => ({
    __proto__: dart.getGetters(core.Stopwatch.__proto__),
    frequency: core.int,
    elapsedTicks: core.int,
    elapsed: core.Duration,
    elapsedMicroseconds: core.int,
    elapsedMilliseconds: core.int,
    isRunning: core.bool
  }));
  dart.setFieldSignature(core.Stopwatch, () => ({
    __proto__: dart.getFields(core.Stopwatch.__proto__),
    [_start$0]: dart.fieldType(core.int),
    [_stop]: dart.fieldType(core.int)
  }));
  dart.defineLazy(core.Stopwatch, {
    /*core.Stopwatch._frequency*/get _frequency() {
      return null;
    },
    set _frequency(_) {}
  });
  core.Runes = class Runes extends core.Iterable$(core.int) {
    get string() {
      return this[string$];
    }
    set string(value) {
      super.string = value;
    }
    get iterator() {
      return new core.RuneIterator.new(this.string);
    }
    get last() {
      if (this.string.length === 0) {
        dart.throw(new core.StateError.new("No elements."));
      }
      let length = this.string.length;
      let code = this.string[$codeUnitAt](length - 1);
      if (dart.test(core._isTrailSurrogate(code)) && this.string.length > 1) {
        let previousCode = this.string[$codeUnitAt](length - 2);
        if (dart.test(core._isLeadSurrogate(previousCode))) {
          return core._combineSurrogatePair(previousCode, code);
        }
      }
      return code;
    }
  };
  (core.Runes.new = function(string) {
    this[string$] = string;
    core.Runes.__proto__.new.call(this);
  }).prototype = core.Runes.prototype;
  dart.addTypeTests(core.Runes);
  const string$ = Symbol("Runes.string");
  dart.setGetterSignature(core.Runes, () => ({
    __proto__: dart.getGetters(core.Runes.__proto__),
    iterator: core.RuneIterator,
    [$iterator]: core.RuneIterator,
    last: core.int,
    [$last]: core.int
  }));
  dart.setFieldSignature(core.Runes, () => ({
    __proto__: dart.getFields(core.Runes.__proto__),
    string: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionAccessors(core.Runes, ['iterator', 'last']);
  core._isLeadSurrogate = function(code) {
    return (dart.notNull(code) & 64512) === 55296;
  };
  core._isTrailSurrogate = function(code) {
    return (dart.notNull(code) & 64512) === 56320;
  };
  core._combineSurrogatePair = function(start, end) {
    return 65536 + ((dart.notNull(start) & 1023) << 10) + (dart.notNull(end) & 1023);
  };
  const _position$ = Symbol('_position');
  const _nextPosition = Symbol('_nextPosition');
  const _currentCodePoint = Symbol('_currentCodePoint');
  const _checkSplitSurrogate = Symbol('_checkSplitSurrogate');
  core.RuneIterator = class RuneIterator extends core.Object {
    get string() {
      return this[string$0];
    }
    set string(value) {
      super.string = value;
    }
    [_checkSplitSurrogate](index) {
      if (dart.notNull(index) > 0 && dart.notNull(index) < this.string.length && dart.test(core._isLeadSurrogate(this.string[$codeUnitAt](dart.notNull(index) - 1))) && dart.test(core._isTrailSurrogate(this.string[$codeUnitAt](index)))) {
        dart.throw(new core.ArgumentError.new("Index inside surrogate pair: " + dart.str(index)));
      }
    }
    get rawIndex() {
      return this[_position$] != this[_nextPosition] ? this[_position$] : null;
    }
    set rawIndex(rawIndex) {
      core.RangeError.checkValidIndex(rawIndex, this.string, "rawIndex");
      this.reset(rawIndex);
      this.moveNext();
    }
    reset(rawIndex) {
      if (rawIndex === void 0) rawIndex = 0;
      core.RangeError.checkValueInInterval(rawIndex, 0, this.string.length, "rawIndex");
      this[_checkSplitSurrogate](rawIndex);
      this[_position$] = this[_nextPosition] = rawIndex;
      this[_currentCodePoint] = null;
    }
    get current() {
      return this[_currentCodePoint];
    }
    get currentSize() {
      return dart.notNull(this[_nextPosition]) - dart.notNull(this[_position$]);
    }
    get currentAsString() {
      if (this[_position$] == this[_nextPosition]) return null;
      if (dart.notNull(this[_position$]) + 1 === this[_nextPosition]) return this.string[$_get](this[_position$]);
      return this.string[$substring](this[_position$], this[_nextPosition]);
    }
    moveNext() {
      this[_position$] = this[_nextPosition];
      if (this[_position$] === this.string.length) {
        this[_currentCodePoint] = null;
        return false;
      }
      let codeUnit = this.string[$codeUnitAt](this[_position$]);
      let nextPosition = dart.notNull(this[_position$]) + 1;
      if (dart.test(core._isLeadSurrogate(codeUnit)) && nextPosition < this.string.length) {
        let nextCodeUnit = this.string[$codeUnitAt](nextPosition);
        if (dart.test(core._isTrailSurrogate(nextCodeUnit))) {
          this[_nextPosition] = nextPosition + 1;
          this[_currentCodePoint] = core._combineSurrogatePair(codeUnit, nextCodeUnit);
          return true;
        }
      }
      this[_nextPosition] = nextPosition;
      this[_currentCodePoint] = codeUnit;
      return true;
    }
    movePrevious() {
      this[_nextPosition] = this[_position$];
      if (this[_position$] === 0) {
        this[_currentCodePoint] = null;
        return false;
      }
      let position = dart.notNull(this[_position$]) - 1;
      let codeUnit = this.string[$codeUnitAt](position);
      if (dart.test(core._isTrailSurrogate(codeUnit)) && position > 0) {
        let prevCodeUnit = this.string[$codeUnitAt](position - 1);
        if (dart.test(core._isLeadSurrogate(prevCodeUnit))) {
          this[_position$] = position - 1;
          this[_currentCodePoint] = core._combineSurrogatePair(prevCodeUnit, codeUnit);
          return true;
        }
      }
      this[_position$] = position;
      this[_currentCodePoint] = codeUnit;
      return true;
    }
  };
  (core.RuneIterator.new = function(string) {
    this[_currentCodePoint] = null;
    this[string$0] = string;
    this[_position$] = 0;
    this[_nextPosition] = 0;
  }).prototype = core.RuneIterator.prototype;
  (core.RuneIterator.at = function(string, index) {
    this[_currentCodePoint] = null;
    this[string$0] = string;
    this[_position$] = index;
    this[_nextPosition] = index;
    core.RangeError.checkValueInInterval(index, 0, string.length);
    this[_checkSplitSurrogate](index);
  }).prototype = core.RuneIterator.prototype;
  dart.addTypeTests(core.RuneIterator);
  const string$0 = Symbol("RuneIterator.string");
  core.RuneIterator[dart.implements] = () => [BidirectionalIteratorOfint()];
  dart.setMethodSignature(core.RuneIterator, () => ({
    __proto__: dart.getMethods(core.RuneIterator.__proto__),
    [_checkSplitSurrogate]: dart.fnType(dart.void, [core.int]),
    reset: dart.fnType(dart.void, [], [core.int]),
    moveNext: dart.fnType(core.bool, []),
    movePrevious: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(core.RuneIterator, () => ({
    __proto__: dart.getGetters(core.RuneIterator.__proto__),
    rawIndex: core.int,
    current: core.int,
    currentSize: core.int,
    currentAsString: core.String
  }));
  dart.setSetterSignature(core.RuneIterator, () => ({
    __proto__: dart.getSetters(core.RuneIterator.__proto__),
    rawIndex: core.int
  }));
  dart.setFieldSignature(core.RuneIterator, () => ({
    __proto__: dart.getFields(core.RuneIterator.__proto__),
    string: dart.finalFieldType(core.String),
    [_position$]: dart.fieldType(core.int),
    [_nextPosition]: dart.fieldType(core.int),
    [_currentCodePoint]: dart.fieldType(core.int)
  }));
  core.Symbol = class Symbol extends core.Object {
    static new(name) {
      return new _internal.Symbol.new(name);
    }
  };
  (core.Symbol[dart.mixinNew] = function() {
  }).prototype = core.Symbol.prototype;
  dart.addTypeTests(core.Symbol);
  dart.defineLazy(core.Symbol, {
    /*core.Symbol.unaryMinus*/get unaryMinus() {
      return dart.const(core.Symbol.new("unary-"));
    },
    /*core.Symbol.empty*/get empty() {
      return dart.const(core.Symbol.new(""));
    }
  });
  dart.defineLazy(core, {
    /*core._SPACE*/get _SPACE() {
      return 32;
    },
    /*core._PERCENT*/get _PERCENT() {
      return 37;
    },
    /*core._AMPERSAND*/get _AMPERSAND() {
      return 38;
    },
    /*core._PLUS*/get _PLUS() {
      return 43;
    },
    /*core._DOT*/get _DOT() {
      return 46;
    },
    /*core._SLASH*/get _SLASH() {
      return 47;
    },
    /*core._COLON*/get _COLON() {
      return 58;
    },
    /*core._EQUALS*/get _EQUALS() {
      return 61;
    },
    /*core._UPPER_CASE_A*/get _UPPER_CASE_A() {
      return 65;
    },
    /*core._UPPER_CASE_Z*/get _UPPER_CASE_Z() {
      return 90;
    },
    /*core._LEFT_BRACKET*/get _LEFT_BRACKET() {
      return 91;
    },
    /*core._BACKSLASH*/get _BACKSLASH() {
      return 92;
    },
    /*core._RIGHT_BRACKET*/get _RIGHT_BRACKET() {
      return 93;
    },
    /*core._LOWER_CASE_A*/get _LOWER_CASE_A() {
      return 97;
    },
    /*core._LOWER_CASE_F*/get _LOWER_CASE_F() {
      return 102;
    },
    /*core._LOWER_CASE_Z*/get _LOWER_CASE_Z() {
      return 122;
    },
    /*core._hexDigits*/get _hexDigits() {
      return "0123456789ABCDEF";
    }
  });
  core.Uri = class Uri extends core.Object {
    static get base() {
      let uri = _js_helper.Primitives.currentUri();
      if (uri != null) return core.Uri.parse(uri);
      dart.throw(new core.UnsupportedError.new("'Uri.base' is not supported"));
    }
    static new(opts) {
      return core._Uri.new(opts);
    }
    static http(authority, unencodedPath, queryParameters) {
      return core._Uri.http(authority, unencodedPath, queryParameters);
    }
    static https(authority, unencodedPath, queryParameters) {
      return core._Uri.https(authority, unencodedPath, queryParameters);
    }
    static file(path, opts) {
      return core._Uri.file(path, opts);
    }
    static directory(path, opts) {
      return core._Uri.directory(path, opts);
    }
    static dataFromString(content, opts) {
      let mimeType = opts && 'mimeType' in opts ? opts.mimeType : null;
      let encoding = opts && 'encoding' in opts ? opts.encoding : null;
      let parameters = opts && 'parameters' in opts ? opts.parameters : null;
      let base64 = opts && 'base64' in opts ? opts.base64 : false;
      let data = core.UriData.fromString(content, {mimeType: mimeType, encoding: encoding, parameters: parameters, base64: base64});
      return data.uri;
    }
    static dataFromBytes(bytes, opts) {
      let mimeType = opts && 'mimeType' in opts ? opts.mimeType : "application/octet-stream";
      let parameters = opts && 'parameters' in opts ? opts.parameters : null;
      let percentEncoded = opts && 'percentEncoded' in opts ? opts.percentEncoded : false;
      let data = core.UriData.fromBytes(bytes, {mimeType: mimeType, parameters: parameters, percentEncoded: percentEncoded});
      return data.uri;
    }
    get hasScheme() {
      return this.scheme[$isNotEmpty];
    }
    static parse(uri, start, end) {
      if (start === void 0) start = 0;
      if (end === void 0) end = null;
      let t = end;
      t == null ? end = uri.length : t;
      if (dart.notNull(end) >= dart.notNull(start) + 5) {
        let dataDelta = core._startsWithData(uri, start);
        if (dataDelta === 0) {
          if (dart.notNull(start) > 0 || dart.notNull(end) < uri.length) uri = uri[$substring](start, end);
          return core.UriData._parse(uri, 5, null).uri;
        } else if (dataDelta === 32) {
          return core.UriData._parse(uri[$substring](dart.notNull(start) + 5, end), 0, null).uri;
        }
      }
      let indices = ListOfint().new(8);
      indices[$_set](0, 0);
      indices[$_set](1, dart.notNull(start) - 1);
      indices[$_set](2, dart.notNull(start) - 1);
      indices[$_set](7, dart.notNull(start) - 1);
      indices[$_set](3, start);
      indices[$_set](4, start);
      indices[$_set](5, end);
      indices[$_set](6, end);
      let state = core._scan(uri, start, end, 0, indices);
      if (dart.notNull(state) >= 14) {
        indices[$_set](7, end);
      }
      let schemeEnd = indices[$_get](1);
      if (dart.notNull(schemeEnd) >= dart.notNull(start)) {
        state = core._scan(uri, start, schemeEnd, 20, indices);
        if (state === 20) {
          indices[$_set](7, schemeEnd);
        }
      }
      let hostStart = dart.notNull(indices[$_get](2)) + 1;
      let portStart = indices[$_get](3);
      let pathStart = indices[$_get](4);
      let queryStart = indices[$_get](5);
      let fragmentStart = indices[$_get](6);
      let scheme = null;
      if (dart.notNull(fragmentStart) < dart.notNull(queryStart)) queryStart = fragmentStart;
      if (dart.notNull(pathStart) < hostStart) {
        pathStart = queryStart;
      } else if (dart.notNull(pathStart) <= dart.notNull(schemeEnd)) {
        pathStart = dart.notNull(schemeEnd) + 1;
      }
      if (dart.notNull(portStart) < hostStart) portStart = pathStart;
      if (!(hostStart === start || dart.notNull(schemeEnd) <= hostStart)) dart.assertFailed();
      if (!(hostStart <= dart.notNull(portStart))) dart.assertFailed();
      if (!(dart.notNull(schemeEnd) <= dart.notNull(pathStart))) dart.assertFailed();
      if (!(dart.notNull(portStart) <= dart.notNull(pathStart))) dart.assertFailed();
      if (!(dart.notNull(pathStart) <= dart.notNull(queryStart))) dart.assertFailed();
      if (!(dart.notNull(queryStart) <= dart.notNull(fragmentStart))) dart.assertFailed();
      let isSimple = dart.notNull(indices[$_get](7)) < dart.notNull(start);
      if (isSimple) {
        if (hostStart > dart.notNull(schemeEnd) + 3) {
          isSimple = false;
        } else if (dart.notNull(portStart) > dart.notNull(start) && dart.notNull(portStart) + 1 === pathStart) {
          isSimple = false;
        } else if (dart.notNull(queryStart) < dart.notNull(end) && queryStart === dart.notNull(pathStart) + 2 && uri[$startsWith]("..", pathStart) || dart.notNull(queryStart) > dart.notNull(pathStart) + 2 && uri[$startsWith]("/..", dart.notNull(queryStart) - 3)) {
          isSimple = false;
        } else {
          if (schemeEnd === dart.notNull(start) + 4) {
            if (uri[$startsWith]("file", start)) {
              scheme = "file";
              if (hostStart <= dart.notNull(start)) {
                let schemeAuth = "file://";
                let delta = 2;
                if (!uri[$startsWith]("/", pathStart)) {
                  schemeAuth = "file:///";
                  delta = 3;
                }
                uri = schemeAuth + uri[$substring](pathStart, end);
                schemeEnd = dart.notNull(schemeEnd) - dart.notNull(start);
                hostStart = 7;
                portStart = 7;
                pathStart = 7;
                queryStart = dart.notNull(queryStart) + (delta - dart.notNull(start));
                fragmentStart = dart.notNull(fragmentStart) + (delta - dart.notNull(start));
                start = 0;
                end = uri.length;
              } else if (pathStart == queryStart) {
                if (start === 0 && end === uri.length) {
                  uri = uri[$replaceRange](pathStart, queryStart, "/");
                  queryStart = dart.notNull(queryStart) + 1;
                  fragmentStart = dart.notNull(fragmentStart) + 1;
                  end = dart.notNull(end) + 1;
                } else {
                  uri = uri[$substring](start, pathStart) + "/" + uri[$substring](queryStart, end);
                  schemeEnd = dart.notNull(schemeEnd) - dart.notNull(start);
                  hostStart = hostStart - dart.notNull(start);
                  portStart = dart.notNull(portStart) - dart.notNull(start);
                  pathStart = dart.notNull(pathStart) - dart.notNull(start);
                  queryStart = dart.notNull(queryStart) + (1 - dart.notNull(start));
                  fragmentStart = dart.notNull(fragmentStart) + (1 - dart.notNull(start));
                  start = 0;
                  end = uri.length;
                }
              }
            } else if (uri[$startsWith]("http", start)) {
              scheme = "http";
              if (dart.notNull(portStart) > dart.notNull(start) && dart.notNull(portStart) + 3 === pathStart && uri[$startsWith]("80", dart.notNull(portStart) + 1)) {
                if (start === 0 && end === uri.length) {
                  uri = uri[$replaceRange](portStart, pathStart, "");
                  pathStart = dart.notNull(pathStart) - 3;
                  queryStart = dart.notNull(queryStart) - 3;
                  fragmentStart = dart.notNull(fragmentStart) - 3;
                  end = dart.notNull(end) - 3;
                } else {
                  uri = uri[$substring](start, portStart) + uri[$substring](pathStart, end);
                  schemeEnd = dart.notNull(schemeEnd) - dart.notNull(start);
                  hostStart = hostStart - dart.notNull(start);
                  portStart = dart.notNull(portStart) - dart.notNull(start);
                  pathStart = dart.notNull(pathStart) - (3 + dart.notNull(start));
                  queryStart = dart.notNull(queryStart) - (3 + dart.notNull(start));
                  fragmentStart = dart.notNull(fragmentStart) - (3 + dart.notNull(start));
                  start = 0;
                  end = uri.length;
                }
              }
            }
          } else if (schemeEnd === dart.notNull(start) + 5 && uri[$startsWith]("https", start)) {
            scheme = "https";
            if (dart.notNull(portStart) > dart.notNull(start) && dart.notNull(portStart) + 4 === pathStart && uri[$startsWith]("443", dart.notNull(portStart) + 1)) {
              if (start === 0 && end === uri.length) {
                uri = uri[$replaceRange](portStart, pathStart, "");
                pathStart = dart.notNull(pathStart) - 4;
                queryStart = dart.notNull(queryStart) - 4;
                fragmentStart = dart.notNull(fragmentStart) - 4;
                end = dart.notNull(end) - 3;
              } else {
                uri = uri[$substring](start, portStart) + uri[$substring](pathStart, end);
                schemeEnd = dart.notNull(schemeEnd) - dart.notNull(start);
                hostStart = hostStart - dart.notNull(start);
                portStart = dart.notNull(portStart) - dart.notNull(start);
                pathStart = dart.notNull(pathStart) - (4 + dart.notNull(start));
                queryStart = dart.notNull(queryStart) - (4 + dart.notNull(start));
                fragmentStart = dart.notNull(fragmentStart) - (4 + dart.notNull(start));
                start = 0;
                end = uri.length;
              }
            }
          }
        }
      }
      if (isSimple) {
        if (dart.notNull(start) > 0 || dart.notNull(end) < uri.length) {
          uri = uri[$substring](start, end);
          schemeEnd = dart.notNull(schemeEnd) - dart.notNull(start);
          hostStart = hostStart - dart.notNull(start);
          portStart = dart.notNull(portStart) - dart.notNull(start);
          pathStart = dart.notNull(pathStart) - dart.notNull(start);
          queryStart = dart.notNull(queryStart) - dart.notNull(start);
          fragmentStart = dart.notNull(fragmentStart) - dart.notNull(start);
        }
        return new core._SimpleUri.new(uri, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, scheme);
      }
      return core._Uri.notSimple(uri, start, end, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, scheme);
    }
    static tryParse(uri, start, end) {
      if (start === void 0) start = 0;
      if (end === void 0) end = null;
      try {
        return core.Uri.parse(uri, start, end);
      } catch (e) {
        let ex = dart.getThrown(e);
        if (core.FormatException.is(ex)) {
          return null;
        } else
          throw e;
      }
    }
    static encodeComponent(component) {
      return core._Uri._uriEncode(core._Uri._unreserved2396Table, component, convert.utf8, false);
    }
    static encodeQueryComponent(component, opts) {
      let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
      return core._Uri._uriEncode(core._Uri._unreservedTable, component, encoding, true);
    }
    static decodeComponent(encodedComponent) {
      return core._Uri._uriDecode(encodedComponent, 0, encodedComponent.length, convert.utf8, false);
    }
    static decodeQueryComponent(encodedComponent, opts) {
      let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
      return core._Uri._uriDecode(encodedComponent, 0, encodedComponent.length, encoding, true);
    }
    static encodeFull(uri) {
      return core._Uri._uriEncode(core._Uri._encodeFullTable, uri, convert.utf8, false);
    }
    static decodeFull(uri) {
      return core._Uri._uriDecode(uri, 0, uri.length, convert.utf8, false);
    }
    static splitQueryString(query, opts) {
      let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
      return MapOfString$String()._check(query[$split]("&")[$fold](MapOfString$String(), new (IdentityMapOfString$String()).new(), dart.fn((map, element) => {
        let index = element[$indexOf]("=");
        if (index === -1) {
          if (element !== "") {
            map[$_set](core.Uri.decodeQueryComponent(element, {encoding: encoding}), "");
          }
        } else if (index !== 0) {
          let key = element[$substring](0, index);
          let value = element[$substring](index + 1);
          map[$_set](core.Uri.decodeQueryComponent(key, {encoding: encoding}), core.Uri.decodeQueryComponent(value, {encoding: encoding}));
        }
        return map;
      }, MapOfString$StringAndStringToMapOfString$String())));
    }
    static parseIPv4Address(host) {
      return core.Uri._parseIPv4Address(host, 0, host.length);
    }
    static _parseIPv4Address(host, start, end) {
      function error(msg, position) {
        dart.throw(new core.FormatException.new("Illegal IPv4 address, " + dart.str(msg), host, position));
      }
      dart.fn(error, StringAndintTovoid());
      let result = typed_data.Uint8List.new(4);
      let partIndex = 0;
      let partStart = start;
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let char = host[$codeUnitAt](i);
        if (char !== 46) {
          if ((char ^ 48) >>> 0 > 9) {
            error("invalid character", i);
          }
        } else {
          if (partIndex === 3) {
            error("IPv4 address should contain exactly 4 parts", i);
          }
          let part = core.int.parse(host[$substring](partStart, i));
          if (dart.notNull(part) > 255) {
            error("each part must be in the range 0..255", partStart);
          }
          result[$_set](partIndex++, part);
          partStart = dart.notNull(i) + 1;
        }
      }
      if (partIndex !== 3) {
        error("IPv4 address should contain exactly 4 parts", end);
      }
      let part = core.int.parse(host[$substring](partStart, end));
      if (dart.notNull(part) > 255) {
        error("each part must be in the range 0..255", partStart);
      }
      result[$_set](partIndex, part);
      return result;
    }
    static parseIPv6Address(host, start, end) {
      if (start === void 0) start = 0;
      if (end === void 0) end = null;
      let t = end;
      t == null ? end = host.length : t;
      function error(msg, position) {
        if (position === void 0) position = null;
        dart.throw(new core.FormatException.new("Illegal IPv6 address, " + dart.str(msg), host, core.int._check(position)));
      }
      dart.fn(error, String__Tovoid());
      function parseHex(start, end) {
        if (dart.notNull(end) - dart.notNull(start) > 4) {
          error("an IPv6 part can only contain a maximum of 4 hex digits", start);
        }
        let value = core.int.parse(host[$substring](start, end), {radix: 16});
        if (dart.notNull(value) < 0 || dart.notNull(value) > 65535) {
          error("each part must be in the range of `0x0..0xFFFF`", start);
        }
        return value;
      }
      dart.fn(parseHex, intAndintToint());
      if (host.length < 2) error("address is too short");
      let parts = JSArrayOfint().of([]);
      let wildcardSeen = false;
      let seenDot = false;
      let partStart = start;
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let char = host[$codeUnitAt](i);
        if (char === 58) {
          if (i == start) {
            i = dart.notNull(i) + 1;
            if (host[$codeUnitAt](i) !== 58) {
              error("invalid start colon.", i);
            }
            partStart = i;
          }
          if (i == partStart) {
            if (wildcardSeen) {
              error("only one wildcard `::` is allowed", i);
            }
            wildcardSeen = true;
            parts[$add](-1);
          } else {
            parts[$add](parseHex(partStart, i));
          }
          partStart = dart.notNull(i) + 1;
        } else if (char === 46) {
          seenDot = true;
        }
      }
      if (parts[$length] === 0) error("too few parts");
      let atEnd = partStart == end;
      let isLastWildcard = parts[$last] === -1;
      if (atEnd && !isLastWildcard) {
        error("expected a part after last `:`", end);
      }
      if (!atEnd) {
        if (!seenDot) {
          parts[$add](parseHex(partStart, end));
        } else {
          let last = core.Uri._parseIPv4Address(host, partStart, end);
          parts[$add]((dart.notNull(last[$_get](0)) << 8 | dart.notNull(last[$_get](1))) >>> 0);
          parts[$add]((dart.notNull(last[$_get](2)) << 8 | dart.notNull(last[$_get](3))) >>> 0);
        }
      }
      if (wildcardSeen) {
        if (dart.notNull(parts[$length]) > 7) {
          error("an address with a wildcard must have less than 7 parts");
        }
      } else if (parts[$length] !== 8) {
        error("an address without a wildcard must contain exactly 8 parts");
      }
      let bytes = typed_data.Uint8List.new(16);
      for (let i = 0, index = 0; i < dart.notNull(parts[$length]); i++) {
        let value = parts[$_get](i);
        if (value === -1) {
          let wildCardLength = 9 - dart.notNull(parts[$length]);
          for (let j = 0; j < wildCardLength; j++) {
            bytes[$_set](index, 0);
            bytes[$_set](index + 1, 0);
            index = index + 2;
          }
        } else {
          bytes[$_set](index, value[$rightShift](8));
          bytes[$_set](index + 1, dart.notNull(value) & 255);
          index = index + 2;
        }
      }
      return bytes;
    }
  };
  (core.Uri[dart.mixinNew] = function() {
  }).prototype = core.Uri.prototype;
  dart.addTypeTests(core.Uri);
  dart.setGetterSignature(core.Uri, () => ({
    __proto__: dart.getGetters(core.Uri.__proto__),
    hasScheme: core.bool
  }));
  const _userInfo = Symbol('_userInfo');
  const _host = Symbol('_host');
  const _port = Symbol('_port');
  const _query = Symbol('_query');
  const _fragment = Symbol('_fragment');
  const _pathSegments = Symbol('_pathSegments');
  const _text = Symbol('_text');
  const _hashCodeCache = Symbol('_hashCodeCache');
  const _queryParameters = Symbol('_queryParameters');
  const _queryParameterLists = Symbol('_queryParameterLists');
  const _writeAuthority = Symbol('_writeAuthority');
  let const$51;
  const _mergePaths = Symbol('_mergePaths');
  const _toFilePath = Symbol('_toFilePath');
  const _isPathAbsolute = Symbol('_isPathAbsolute');
  const _initializeText = Symbol('_initializeText');
  core._Uri = class _Uri extends core.Object {
    static notSimple(uri, start, end, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, scheme) {
      if (scheme == null) {
        scheme = "";
        if (dart.notNull(schemeEnd) > dart.notNull(start)) {
          scheme = core._Uri._makeScheme(uri, start, schemeEnd);
        } else if (schemeEnd == start) {
          core._Uri._fail(uri, start, "Invalid empty scheme");
        }
      }
      let userInfo = "";
      let host = null;
      let port = null;
      if (dart.notNull(hostStart) > dart.notNull(start)) {
        let userInfoStart = dart.notNull(schemeEnd) + 3;
        if (userInfoStart < dart.notNull(hostStart)) {
          userInfo = core._Uri._makeUserInfo(uri, userInfoStart, dart.notNull(hostStart) - 1);
        }
        host = core._Uri._makeHost(uri, hostStart, portStart, false);
        if (dart.notNull(portStart) + 1 < dart.notNull(pathStart)) {
          port = core.int.parse(uri[$substring](dart.notNull(portStart) + 1, pathStart), {onError: dart.fn(_ => {
              dart.throw(new core.FormatException.new("Invalid port", uri, dart.notNull(portStart) + 1));
            }, StringToNull())});
          port = core._Uri._makePort(port, scheme);
        }
      }
      let path = core._Uri._makePath(uri, pathStart, queryStart, null, scheme, host != null);
      let query = null;
      if (dart.notNull(queryStart) < dart.notNull(fragmentStart)) {
        query = core._Uri._makeQuery(uri, dart.notNull(queryStart) + 1, fragmentStart, null);
      }
      let fragment = null;
      if (dart.notNull(fragmentStart) < dart.notNull(end)) {
        fragment = core._Uri._makeFragment(uri, dart.notNull(fragmentStart) + 1, end);
      }
      return new core._Uri._internal(scheme, userInfo, host, port, path, query, fragment);
    }
    static new(opts) {
      let scheme = opts && 'scheme' in opts ? opts.scheme : null;
      let userInfo = opts && 'userInfo' in opts ? opts.userInfo : null;
      let host = opts && 'host' in opts ? opts.host : null;
      let port = opts && 'port' in opts ? opts.port : null;
      let path = opts && 'path' in opts ? opts.path : null;
      let pathSegments = opts && 'pathSegments' in opts ? opts.pathSegments : null;
      let query = opts && 'query' in opts ? opts.query : null;
      let queryParameters = opts && 'queryParameters' in opts ? opts.queryParameters : null;
      let fragment = opts && 'fragment' in opts ? opts.fragment : null;
      scheme = core._Uri._makeScheme(scheme, 0, core._stringOrNullLength(scheme));
      userInfo = core._Uri._makeUserInfo(userInfo, 0, core._stringOrNullLength(userInfo));
      host = core._Uri._makeHost(host, 0, core._stringOrNullLength(host), false);
      if (query === "") query = null;
      query = core._Uri._makeQuery(query, 0, core._stringOrNullLength(query), queryParameters);
      fragment = core._Uri._makeFragment(fragment, 0, core._stringOrNullLength(fragment));
      port = core._Uri._makePort(port, scheme);
      let isFile = scheme === "file";
      if (host == null && (userInfo[$isNotEmpty] || port != null || isFile)) {
        host = "";
      }
      let hasAuthority = host != null;
      path = core._Uri._makePath(path, 0, core._stringOrNullLength(path), pathSegments, scheme, hasAuthority);
      if (scheme[$isEmpty] && host == null && !path[$startsWith]("/")) {
        let allowScheme = scheme[$isNotEmpty] || host != null;
        path = core._Uri._normalizeRelativePath(path, allowScheme);
      } else {
        path = core._Uri._removeDotSegments(path);
      }
      if (host == null && path[$startsWith]("//")) {
        host = "";
      }
      return new core._Uri._internal(scheme, userInfo, host, port, path, query, fragment);
    }
    static http(authority, unencodedPath, queryParameters) {
      if (queryParameters === void 0) queryParameters = null;
      return core._Uri._check(core._Uri._makeHttpUri("http", authority, unencodedPath, queryParameters));
    }
    static https(authority, unencodedPath, queryParameters) {
      if (queryParameters === void 0) queryParameters = null;
      return core._Uri._check(core._Uri._makeHttpUri("https", authority, unencodedPath, queryParameters));
    }
    get authority() {
      if (!dart.test(this.hasAuthority)) return "";
      let sb = new core.StringBuffer.new();
      this[_writeAuthority](sb);
      return sb.toString();
    }
    get userInfo() {
      return this[_userInfo];
    }
    get host() {
      if (this[_host] == null) return "";
      if (this[_host][$startsWith]("[")) {
        return this[_host][$substring](1, this[_host].length - 1);
      }
      return this[_host];
    }
    get port() {
      if (this[_port] == null) return core._Uri._defaultPort(this.scheme);
      return this[_port];
    }
    static _defaultPort(scheme) {
      if (scheme === "http") return 80;
      if (scheme === "https") return 443;
      return 0;
    }
    get query() {
      return this[_query] != null ? this[_query] : "";
    }
    get fragment() {
      return this[_fragment] != null ? this[_fragment] : "";
    }
    isScheme(scheme) {
      let thisScheme = this.scheme;
      if (scheme == null) return thisScheme[$isEmpty];
      if (scheme.length !== thisScheme.length) return false;
      return core._Uri._compareScheme(scheme, thisScheme);
    }
    static _compareScheme(scheme, uri) {
      for (let i = 0; i < scheme.length; i++) {
        let schemeChar = scheme[$codeUnitAt](i);
        let uriChar = uri[$codeUnitAt](i);
        let delta = (schemeChar ^ uriChar) >>> 0;
        if (delta !== 0) {
          if (delta === 32) {
            let lowerChar = (uriChar | delta) >>> 0;
            if (97 <= lowerChar && lowerChar <= 122) {
              continue;
            }
          }
          return false;
        }
      }
      return true;
    }
    static _fail(uri, index, message) {
      dart.throw(new core.FormatException.new(message, uri, index));
    }
    static _makeHttpUri(scheme, authority, unencodedPath, queryParameters) {
      let userInfo = "";
      let host = null;
      let port = null;
      if (authority != null && authority[$isNotEmpty]) {
        let hostStart = 0;
        let hasUserInfo = false;
        for (let i = 0; i < authority.length; i++) {
          let atSign = 64;
          if (authority[$codeUnitAt](i) === atSign) {
            hasUserInfo = true;
            userInfo = authority[$substring](0, i);
            hostStart = i + 1;
            break;
          }
        }
        let hostEnd = hostStart;
        if (hostStart < authority.length && authority[$codeUnitAt](hostStart) === 91) {
          for (; hostEnd < authority.length; hostEnd++) {
            if (authority[$codeUnitAt](hostEnd) === 93) break;
          }
          if (hostEnd === authority.length) {
            dart.throw(new core.FormatException.new("Invalid IPv6 host entry.", authority, hostStart));
          }
          core.Uri.parseIPv6Address(authority, hostStart + 1, hostEnd);
          hostEnd++;
          if (hostEnd !== authority.length && authority[$codeUnitAt](hostEnd) !== 58) {
            dart.throw(new core.FormatException.new("Invalid end of authority", authority, hostEnd));
          }
        }
        let hasPort = false;
        for (; hostEnd < authority.length; hostEnd++) {
          if (authority[$codeUnitAt](hostEnd) === 58) {
            let portString = authority[$substring](hostEnd + 1);
            if (portString[$isNotEmpty]) port = core.int.parse(portString);
            break;
          }
        }
        host = authority[$substring](hostStart, hostEnd);
      }
      return core.Uri.new({scheme: scheme, userInfo: userInfo, host: host, port: port, pathSegments: unencodedPath[$split]("/"), queryParameters: queryParameters});
    }
    static file(path, opts) {
      let windows = opts && 'windows' in opts ? opts.windows : null;
      windows = windows == null ? core._Uri._isWindows : windows;
      return core._Uri._check(dart.test(windows) ? core._Uri._makeWindowsFileUrl(path, false) : core._Uri._makeFileUri(path, false));
    }
    static directory(path, opts) {
      let windows = opts && 'windows' in opts ? opts.windows : null;
      windows = windows == null ? core._Uri._isWindows : windows;
      return core._Uri._check(dart.test(windows) ? core._Uri._makeWindowsFileUrl(path, true) : core._Uri._makeFileUri(path, true));
    }
    static get _isWindows() {
      return core._Uri._isWindowsCached;
    }
    static _checkNonWindowsPathReservedCharacters(segments, argumentError) {
      segments[$forEach](dart.fn(segment => {
        if (segment[$contains]("/")) {
          if (dart.test(argumentError)) {
            dart.throw(new core.ArgumentError.new("Illegal path character " + dart.str(segment)));
          } else {
            dart.throw(new core.UnsupportedError.new("Illegal path character " + dart.str(segment)));
          }
        }
      }, StringToNull()));
    }
    static _checkWindowsPathReservedCharacters(segments, argumentError, firstSegment) {
      if (firstSegment === void 0) firstSegment = 0;
      for (let segment of segments[$skip](firstSegment)) {
        if (segment[$contains](core.RegExp.new("[\"*/:<>?\\\\|]"))) {
          if (dart.test(argumentError)) {
            dart.throw(new core.ArgumentError.new("Illegal character in path"));
          } else {
            dart.throw(new core.UnsupportedError.new("Illegal character in path: " + dart.str(segment)));
          }
        }
      }
    }
    static _checkWindowsDriveLetter(charCode, argumentError) {
      if (65 <= dart.notNull(charCode) && dart.notNull(charCode) <= 90 || 97 <= dart.notNull(charCode) && dart.notNull(charCode) <= 122) {
        return;
      }
      if (dart.test(argumentError)) {
        dart.throw(new core.ArgumentError.new("Illegal drive letter " + core.String.fromCharCode(charCode)));
      } else {
        dart.throw(new core.UnsupportedError.new("Illegal drive letter " + core.String.fromCharCode(charCode)));
      }
    }
    static _makeFileUri(path, slashTerminated) {
      let sep = "/";
      let segments = path[$split](sep);
      if (dart.test(slashTerminated) && dart.test(segments[$isNotEmpty]) && segments[$last][$isNotEmpty]) {
        segments[$add]("");
      }
      if (path[$startsWith](sep)) {
        return core.Uri.new({scheme: "file", pathSegments: segments});
      } else {
        return core.Uri.new({pathSegments: segments});
      }
    }
    static _makeWindowsFileUrl(path, slashTerminated) {
      if (path[$startsWith]("\\\\?\\")) {
        if (path[$startsWith]("UNC\\", 4)) {
          path = path[$replaceRange](0, 7, "\\");
        } else {
          path = path[$substring](4);
          if (path.length < 3 || path[$codeUnitAt](1) !== 58 || path[$codeUnitAt](2) !== 92) {
            dart.throw(new core.ArgumentError.new("Windows paths with \\\\?\\ prefix must be absolute"));
          }
        }
      } else {
        path = path[$replaceAll]("/", "\\");
      }
      let sep = "\\";
      if (path.length > 1 && path[$codeUnitAt](1) === 58) {
        core._Uri._checkWindowsDriveLetter(path[$codeUnitAt](0), true);
        if (path.length === 2 || path[$codeUnitAt](2) !== 92) {
          dart.throw(new core.ArgumentError.new("Windows paths with drive letter must be absolute"));
        }
        let pathSegments = path[$split](sep);
        if (dart.test(slashTerminated) && pathSegments[$last][$isNotEmpty]) {
          pathSegments[$add]("");
        }
        core._Uri._checkWindowsPathReservedCharacters(pathSegments, true, 1);
        return core.Uri.new({scheme: "file", pathSegments: pathSegments});
      }
      if (path[$startsWith](sep)) {
        if (path[$startsWith](sep, 1)) {
          let pathStart = path[$indexOf]("\\", 2);
          let hostPart = pathStart < 0 ? path[$substring](2) : path[$substring](2, pathStart);
          let pathPart = pathStart < 0 ? "" : path[$substring](pathStart + 1);
          let pathSegments = pathPart[$split](sep);
          core._Uri._checkWindowsPathReservedCharacters(pathSegments, true);
          if (dart.test(slashTerminated) && pathSegments[$last][$isNotEmpty]) {
            pathSegments[$add]("");
          }
          return core.Uri.new({scheme: "file", host: hostPart, pathSegments: pathSegments});
        } else {
          let pathSegments = path[$split](sep);
          if (dart.test(slashTerminated) && pathSegments[$last][$isNotEmpty]) {
            pathSegments[$add]("");
          }
          core._Uri._checkWindowsPathReservedCharacters(pathSegments, true);
          return core.Uri.new({scheme: "file", pathSegments: pathSegments});
        }
      } else {
        let pathSegments = path[$split](sep);
        core._Uri._checkWindowsPathReservedCharacters(pathSegments, true);
        if (dart.test(slashTerminated) && dart.test(pathSegments[$isNotEmpty]) && pathSegments[$last][$isNotEmpty]) {
          pathSegments[$add]("");
        }
        return core.Uri.new({pathSegments: pathSegments});
      }
    }
    replace(opts) {
      let scheme = opts && 'scheme' in opts ? opts.scheme : null;
      let userInfo = opts && 'userInfo' in opts ? opts.userInfo : null;
      let host = opts && 'host' in opts ? opts.host : null;
      let port = opts && 'port' in opts ? opts.port : null;
      let path = opts && 'path' in opts ? opts.path : null;
      let pathSegments = opts && 'pathSegments' in opts ? opts.pathSegments : null;
      let query = opts && 'query' in opts ? opts.query : null;
      let queryParameters = opts && 'queryParameters' in opts ? opts.queryParameters : null;
      let fragment = opts && 'fragment' in opts ? opts.fragment : null;
      let schemeChanged = false;
      if (scheme != null) {
        scheme = core._Uri._makeScheme(scheme, 0, scheme.length);
        schemeChanged = scheme != this.scheme;
      } else {
        scheme = this.scheme;
      }
      let isFile = scheme === "file";
      if (userInfo != null) {
        userInfo = core._Uri._makeUserInfo(userInfo, 0, userInfo.length);
      } else {
        userInfo = this[_userInfo];
      }
      if (port != null) {
        port = core._Uri._makePort(port, scheme);
      } else {
        port = this[_port];
        if (schemeChanged) {
          port = core._Uri._makePort(port, scheme);
        }
      }
      if (host != null) {
        host = core._Uri._makeHost(host, 0, host.length, false);
      } else if (dart.test(this.hasAuthority)) {
        host = this[_host];
      } else if (userInfo[$isNotEmpty] || port != null || isFile) {
        host = "";
      }
      let hasAuthority = host != null;
      if (path != null || pathSegments != null) {
        path = core._Uri._makePath(path, 0, core._stringOrNullLength(path), pathSegments, scheme, hasAuthority);
      } else {
        path = this.path;
        if ((isFile || hasAuthority && !path[$isEmpty]) && !path[$startsWith]("/")) {
          path = "/" + dart.notNull(path);
        }
      }
      if (query != null || queryParameters != null) {
        query = core._Uri._makeQuery(query, 0, core._stringOrNullLength(query), queryParameters);
      } else {
        query = this[_query];
      }
      if (fragment != null) {
        fragment = core._Uri._makeFragment(fragment, 0, fragment.length);
      } else {
        fragment = this[_fragment];
      }
      return new core._Uri._internal(scheme, userInfo, host, port, path, query, fragment);
    }
    removeFragment() {
      if (!dart.test(this.hasFragment)) return this;
      return new core._Uri._internal(this.scheme, this[_userInfo], this[_host], this[_port], this.path, this[_query], null);
    }
    get pathSegments() {
      let result = this[_pathSegments];
      if (result != null) return result;
      let pathToSplit = this.path;
      if (pathToSplit[$isNotEmpty] && pathToSplit[$codeUnitAt](0) === 47) {
        pathToSplit = pathToSplit[$substring](1);
      }
      result = pathToSplit === "" ? const$51 || (const$51 = dart.constList([], core.String)) : ListOfString().unmodifiable(pathToSplit[$split]("/")[$map](dart.dynamic, dart.fn(core.Uri.decodeComponent, StringToString())));
      this[_pathSegments] = result;
      return result;
    }
    get queryParameters() {
      let t = this[_queryParameters];
      t == null ? this[_queryParameters] = new (UnmodifiableMapViewOfString$String()).new(core.Uri.splitQueryString(this.query)) : t;
      return this[_queryParameters];
    }
    get queryParametersAll() {
      if (this[_queryParameterLists] == null) {
        let queryParameterLists = core._Uri._splitQueryStringAll(this.query);
        for (let key of queryParameterLists[$keys]) {
          queryParameterLists[$_set](key, ListOfString().unmodifiable(core.Iterable._check(queryParameterLists[$_get](key))));
        }
        this[_queryParameterLists] = MapOfString$ListOfString().unmodifiable(queryParameterLists);
      }
      return this[_queryParameterLists];
    }
    normalizePath() {
      let path = core._Uri._normalizePath(this.path, this.scheme, this.hasAuthority);
      if (path == this.path) return this;
      return this.replace({path: path});
    }
    static _makePort(port, scheme) {
      if (port != null && port == core._Uri._defaultPort(scheme)) return null;
      return port;
    }
    static _makeHost(host, start, end, strictIPv6) {
      if (host == null) return null;
      if (start == end) return "";
      if (host[$codeUnitAt](start) === 91) {
        if (host[$codeUnitAt](dart.notNull(end) - 1) !== 93) {
          core._Uri._fail(host, start, "Missing end `]` to match `[` in host");
        }
        core.Uri.parseIPv6Address(host, dart.notNull(start) + 1, dart.notNull(end) - 1);
        return host[$substring](start, end)[$toLowerCase]();
      }
      if (!dart.test(strictIPv6)) {
        for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
          if (host[$codeUnitAt](i) === 58) {
            core.Uri.parseIPv6Address(host, start, end);
            return "[" + dart.str(host) + "]";
          }
        }
      }
      return core._Uri._normalizeRegName(host, start, end);
    }
    static _isRegNameChar(char) {
      return dart.notNull(char) < 127 && (dart.notNull(core._Uri._regNameTable[$_get](char[$rightShift](4))) & 1 << (dart.notNull(char) & 15)) !== 0;
    }
    static _normalizeRegName(host, start, end) {
      let buffer = null;
      let sectionStart = start;
      let index = start;
      let isNormalized = true;
      while (dart.notNull(index) < dart.notNull(end)) {
        let char = host[$codeUnitAt](index);
        if (char === 37) {
          let replacement = core._Uri._normalizeEscape(host, index, true);
          if (replacement == null && isNormalized) {
            index = dart.notNull(index) + 3;
            continue;
          }
          let t = buffer;
          t == null ? buffer = new core.StringBuffer.new() : t;
          let slice = host[$substring](sectionStart, index);
          if (!isNormalized) slice = slice[$toLowerCase]();
          buffer.write(slice);
          let sourceLength = 3;
          if (replacement == null) {
            replacement = host[$substring](index, dart.notNull(index) + 3);
          } else if (replacement === "%") {
            replacement = "%25";
            sourceLength = 1;
          }
          buffer.write(replacement);
          index = dart.notNull(index) + sourceLength;
          sectionStart = index;
          isNormalized = true;
        } else if (dart.test(core._Uri._isRegNameChar(char))) {
          if (isNormalized && 65 <= char && 90 >= char) {
            let t$ = buffer;
            t$ == null ? buffer = new core.StringBuffer.new() : t$;
            if (dart.notNull(sectionStart) < dart.notNull(index)) {
              buffer.write(host[$substring](sectionStart, index));
              sectionStart = index;
            }
            isNormalized = false;
          }
          index = dart.notNull(index) + 1;
        } else if (dart.test(core._Uri._isGeneralDelimiter(char))) {
          core._Uri._fail(host, index, "Invalid character");
        } else {
          let sourceLength = 1;
          if ((char & 64512) === 55296 && dart.notNull(index) + 1 < dart.notNull(end)) {
            let tail = host[$codeUnitAt](dart.notNull(index) + 1);
            if ((tail & 64512) === 56320) {
              char = 65536 | (char & 1023) << 10 | tail & 1023;
              sourceLength = 2;
            }
          }
          let t$0 = buffer;
          t$0 == null ? buffer = new core.StringBuffer.new() : t$0;
          let slice = host[$substring](sectionStart, index);
          if (!isNormalized) slice = slice[$toLowerCase]();
          buffer.write(slice);
          buffer.write(core._Uri._escapeChar(char));
          index = dart.notNull(index) + sourceLength;
          sectionStart = index;
        }
      }
      if (buffer == null) return host[$substring](start, end);
      if (dart.notNull(sectionStart) < dart.notNull(end)) {
        let slice = host[$substring](sectionStart, end);
        if (!isNormalized) slice = slice[$toLowerCase]();
        buffer.write(slice);
      }
      return dart.toString(buffer);
    }
    static _makeScheme(scheme, start, end) {
      if (start == end) return "";
      let firstCodeUnit = scheme[$codeUnitAt](start);
      if (!dart.test(core._Uri._isAlphabeticCharacter(firstCodeUnit))) {
        core._Uri._fail(scheme, start, "Scheme not starting with alphabetic character");
      }
      let containsUpperCase = false;
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let codeUnit = scheme[$codeUnitAt](i);
        if (!dart.test(core._Uri._isSchemeCharacter(codeUnit))) {
          core._Uri._fail(scheme, i, "Illegal scheme character");
        }
        if (65 <= codeUnit && codeUnit <= 90) {
          containsUpperCase = true;
        }
      }
      scheme = scheme[$substring](start, end);
      if (containsUpperCase) scheme = scheme[$toLowerCase]();
      return core._Uri._canonicalizeScheme(scheme);
    }
    static _canonicalizeScheme(scheme) {
      if (scheme === "http") return "http";
      if (scheme === "file") return "file";
      if (scheme === "https") return "https";
      if (scheme === "package") return "package";
      return scheme;
    }
    static _makeUserInfo(userInfo, start, end) {
      if (userInfo == null) return "";
      return core._Uri._normalizeOrSubstring(userInfo, start, end, core._Uri._userinfoTable);
    }
    static _makePath(path, start, end, pathSegments, scheme, hasAuthority) {
      let isFile = scheme === "file";
      let ensureLeadingSlash = isFile || dart.test(hasAuthority);
      if (path == null && pathSegments == null) return isFile ? "/" : "";
      if (path != null && pathSegments != null) {
        dart.throw(new core.ArgumentError.new("Both path and pathSegments specified"));
      }
      let result = null;
      if (path != null) {
        result = core._Uri._normalizeOrSubstring(path, start, end, core._Uri._pathCharOrSlashTable, {escapeDelimiters: true});
      } else {
        result = IterableOfString()._check(pathSegments[$map](core.String, dart.fn(s => core._Uri._uriEncode(core._Uri._pathCharTable, s, convert.utf8, false), StringToString())))[$join]("/");
      }
      if (result[$isEmpty]) {
        if (isFile) return "/";
      } else if (ensureLeadingSlash && !result[$startsWith]("/")) {
        result = "/" + dart.notNull(result);
      }
      result = core._Uri._normalizePath(result, scheme, hasAuthority);
      return result;
    }
    static _normalizePath(path, scheme, hasAuthority) {
      if (scheme[$isEmpty] && !dart.test(hasAuthority) && !path[$startsWith]("/")) {
        return core._Uri._normalizeRelativePath(path, scheme[$isNotEmpty] || dart.test(hasAuthority));
      }
      return core._Uri._removeDotSegments(path);
    }
    static _makeQuery(query, start, end, queryParameters) {
      if (query != null) {
        if (queryParameters != null) {
          dart.throw(new core.ArgumentError.new("Both query and queryParameters specified"));
        }
        return core._Uri._normalizeOrSubstring(query, start, end, core._Uri._queryCharTable, {escapeDelimiters: true});
      }
      if (queryParameters == null) return null;
      let result = new core.StringBuffer.new();
      let separator = "";
      function writeParameter(key, value) {
        result.write(separator);
        separator = "&";
        result.write(core.Uri.encodeQueryComponent(key));
        if (value != null && value[$isNotEmpty]) {
          result.write("=");
          result.write(core.Uri.encodeQueryComponent(value));
        }
      }
      dart.fn(writeParameter, StringAndStringTovoid());
      queryParameters[$forEach](dart.fn((key, value) => {
        if (value == null || typeof value == 'string') {
          writeParameter(key, core.String._check(value));
        } else {
          let values = core.Iterable._check(value);
          for (let value of values) {
            core.String._check(value);
            writeParameter(key, value);
          }
        }
      }, StringAnddynamicToNull()));
      return result.toString();
    }
    static _makeFragment(fragment, start, end) {
      if (fragment == null) return null;
      return core._Uri._normalizeOrSubstring(fragment, start, end, core._Uri._queryCharTable, {escapeDelimiters: true});
    }
    static _normalizeEscape(source, index, lowerCase) {
      if (!(source[$codeUnitAt](index) === 37)) dart.assertFailed();
      if (dart.notNull(index) + 2 >= source.length) {
        return "%";
      }
      let firstDigit = source[$codeUnitAt](dart.notNull(index) + 1);
      let secondDigit = source[$codeUnitAt](dart.notNull(index) + 2);
      let firstDigitValue = _internal.hexDigitValue(firstDigit);
      let secondDigitValue = _internal.hexDigitValue(secondDigit);
      if (dart.notNull(firstDigitValue) < 0 || dart.notNull(secondDigitValue) < 0) {
        return "%";
      }
      let value = dart.notNull(firstDigitValue) * 16 + dart.notNull(secondDigitValue);
      if (dart.test(core._Uri._isUnreservedChar(value))) {
        if (dart.test(lowerCase) && 65 <= value && 90 >= value) {
          value = (value | 32) >>> 0;
        }
        return core.String.fromCharCode(value);
      }
      if (firstDigit >= 97 || secondDigit >= 97) {
        return source[$substring](index, dart.notNull(index) + 3)[$toUpperCase]();
      }
      return null;
    }
    static _escapeChar(char) {
      if (!(dart.notNull(char) <= 1114111)) dart.assertFailed();
      let codeUnits = null;
      if (dart.notNull(char) < 128) {
        codeUnits = ListOfint().new(3);
        codeUnits[$_set](0, 37);
        codeUnits[$_set](1, "0123456789ABCDEF"[$codeUnitAt](char[$rightShift](4)));
        codeUnits[$_set](2, "0123456789ABCDEF"[$codeUnitAt](dart.notNull(char) & 15));
      } else {
        let flag = 192;
        let encodedBytes = 2;
        if (dart.notNull(char) > 2047) {
          flag = 224;
          encodedBytes = 3;
          if (dart.notNull(char) > 65535) {
            encodedBytes = 4;
            flag = 240;
          }
        }
        codeUnits = ListOfint().new(3 * encodedBytes);
        let index = 0;
        while (--encodedBytes >= 0) {
          let byte = (char[$rightShift](6 * encodedBytes) & 63 | flag) >>> 0;
          codeUnits[$_set](index, 37);
          codeUnits[$_set](index + 1, "0123456789ABCDEF"[$codeUnitAt](byte[$rightShift](4)));
          codeUnits[$_set](index + 2, "0123456789ABCDEF"[$codeUnitAt](byte & 15));
          index = index + 3;
          flag = 128;
        }
      }
      return core.String.fromCharCodes(codeUnits);
    }
    static _normalizeOrSubstring(component, start, end, charTable, opts) {
      let escapeDelimiters = opts && 'escapeDelimiters' in opts ? opts.escapeDelimiters : false;
      let l = core._Uri._normalize(component, start, end, charTable, {escapeDelimiters: escapeDelimiters});
      return l != null ? l : component[$substring](start, end);
    }
    static _normalize(component, start, end, charTable, opts) {
      let escapeDelimiters = opts && 'escapeDelimiters' in opts ? opts.escapeDelimiters : false;
      let buffer = null;
      let sectionStart = start;
      let index = start;
      while (dart.notNull(index) < dart.notNull(end)) {
        let char = component[$codeUnitAt](index);
        if (char < 127 && (dart.notNull(charTable[$_get](char[$rightShift](4))) & 1 << (char & 15)) !== 0) {
          index = dart.notNull(index) + 1;
        } else {
          let replacement = null;
          let sourceLength = null;
          if (char === 37) {
            replacement = core._Uri._normalizeEscape(component, index, false);
            if (replacement == null) {
              index = dart.notNull(index) + 3;
              continue;
            }
            if ("%" === replacement) {
              replacement = "%25";
              sourceLength = 1;
            } else {
              sourceLength = 3;
            }
          } else if (!dart.test(escapeDelimiters) && dart.test(core._Uri._isGeneralDelimiter(char))) {
            core._Uri._fail(component, index, "Invalid character");
          } else {
            sourceLength = 1;
            if ((char & 64512) === 55296) {
              if (dart.notNull(index) + 1 < dart.notNull(end)) {
                let tail = component[$codeUnitAt](dart.notNull(index) + 1);
                if ((tail & 64512) === 56320) {
                  sourceLength = 2;
                  char = 65536 | (char & 1023) << 10 | tail & 1023;
                }
              }
            }
            replacement = core._Uri._escapeChar(char);
          }
          let t = buffer;
          t == null ? buffer = new core.StringBuffer.new() : t;
          buffer.write(component[$substring](sectionStart, index));
          buffer.write(replacement);
          index = dart.notNull(index) + dart.notNull(sourceLength);
          sectionStart = index;
        }
      }
      if (buffer == null) {
        return null;
      }
      if (dart.notNull(sectionStart) < dart.notNull(end)) {
        buffer.write(component[$substring](sectionStart, end));
      }
      return dart.toString(buffer);
    }
    static _isSchemeCharacter(ch) {
      return dart.notNull(ch) < 128 && (dart.notNull(core._Uri._schemeTable[$_get](ch[$rightShift](4))) & 1 << (dart.notNull(ch) & 15)) !== 0;
    }
    static _isGeneralDelimiter(ch) {
      return dart.notNull(ch) <= 93 && (dart.notNull(core._Uri._genDelimitersTable[$_get](ch[$rightShift](4))) & 1 << (dart.notNull(ch) & 15)) !== 0;
    }
    get isAbsolute() {
      return this.scheme !== "" && this.fragment === "";
    }
    [_mergePaths](base, reference) {
      let backCount = 0;
      let refStart = 0;
      while (reference[$startsWith]("../", refStart)) {
        refStart = refStart + 3;
        backCount++;
      }
      let baseEnd = base[$lastIndexOf]("/");
      while (baseEnd > 0 && backCount > 0) {
        let newEnd = base[$lastIndexOf]("/", baseEnd - 1);
        if (newEnd < 0) {
          break;
        }
        let delta = baseEnd - newEnd;
        if ((delta === 2 || delta === 3) && base[$codeUnitAt](newEnd + 1) === 46 && (delta === 2 || base[$codeUnitAt](newEnd + 2) === 46)) {
          break;
        }
        baseEnd = newEnd;
        backCount--;
      }
      return base[$replaceRange](baseEnd + 1, null, reference[$substring](refStart - 3 * backCount));
    }
    static _mayContainDotSegments(path) {
      if (path[$startsWith](".")) return true;
      let index = path[$indexOf]("/.");
      return index !== -1;
    }
    static _removeDotSegments(path) {
      if (!dart.test(core._Uri._mayContainDotSegments(path))) return path;
      if (!path[$isNotEmpty]) dart.assertFailed();
      let output = JSArrayOfString().of([]);
      let appendSlash = false;
      for (let segment of path[$split]("/")) {
        appendSlash = false;
        if (segment === "..") {
          if (dart.test(output[$isNotEmpty])) {
            output[$removeLast]();
            if (dart.test(output[$isEmpty])) {
              output[$add]("");
            }
          }
          appendSlash = true;
        } else if ("." === segment) {
          appendSlash = true;
        } else {
          output[$add](segment);
        }
      }
      if (appendSlash) output[$add]("");
      return output[$join]("/");
    }
    static _normalizeRelativePath(path, allowScheme) {
      if (!!path[$startsWith]("/")) dart.assertFailed();
      if (!dart.test(core._Uri._mayContainDotSegments(path))) {
        if (!dart.test(allowScheme)) path = core._Uri._escapeScheme(path);
        return path;
      }
      if (!path[$isNotEmpty]) dart.assertFailed();
      let output = JSArrayOfString().of([]);
      let appendSlash = false;
      for (let segment of path[$split]("/")) {
        appendSlash = false;
        if (".." === segment) {
          if (!dart.test(output[$isEmpty]) && output[$last] !== "..") {
            output[$removeLast]();
            appendSlash = true;
          } else {
            output[$add]("..");
          }
        } else if ("." === segment) {
          appendSlash = true;
        } else {
          output[$add](segment);
        }
      }
      if (dart.test(output[$isEmpty]) || output[$length] === 1 && output[$_get](0)[$isEmpty]) {
        return "./";
      }
      if (appendSlash || output[$last] === "..") output[$add]("");
      if (!dart.test(allowScheme)) output[$_set](0, core._Uri._escapeScheme(output[$_get](0)));
      return output[$join]("/");
    }
    static _escapeScheme(path) {
      if (path.length >= 2 && dart.test(core._Uri._isAlphabeticCharacter(path[$codeUnitAt](0)))) {
        for (let i = 1; i < path.length; i++) {
          let char = path[$codeUnitAt](i);
          if (char === 58) {
            return path[$substring](0, i) + "%3A" + path[$substring](i + 1);
          }
          if (char > 127 || (dart.notNull(core._Uri._schemeTable[$_get](char[$rightShift](4))) & 1 << (char & 15)) === 0) {
            break;
          }
        }
      }
      return path;
    }
    resolve(reference) {
      return this.resolveUri(core.Uri.parse(reference));
    }
    resolveUri(reference) {
      let targetScheme = null;
      let targetUserInfo = "";
      let targetHost = null;
      let targetPort = null;
      let targetPath = null;
      let targetQuery = null;
      if (reference.scheme[$isNotEmpty]) {
        targetScheme = reference.scheme;
        if (dart.test(reference.hasAuthority)) {
          targetUserInfo = reference.userInfo;
          targetHost = reference.host;
          targetPort = dart.test(reference.hasPort) ? reference.port : null;
        }
        targetPath = core._Uri._removeDotSegments(reference.path);
        if (dart.test(reference.hasQuery)) {
          targetQuery = reference.query;
        }
      } else {
        targetScheme = this.scheme;
        if (dart.test(reference.hasAuthority)) {
          targetUserInfo = reference.userInfo;
          targetHost = reference.host;
          targetPort = core._Uri._makePort(dart.test(reference.hasPort) ? reference.port : null, targetScheme);
          targetPath = core._Uri._removeDotSegments(reference.path);
          if (dart.test(reference.hasQuery)) targetQuery = reference.query;
        } else {
          targetUserInfo = this[_userInfo];
          targetHost = this[_host];
          targetPort = this[_port];
          if (reference.path === "") {
            targetPath = this.path;
            if (dart.test(reference.hasQuery)) {
              targetQuery = reference.query;
            } else {
              targetQuery = this[_query];
            }
          } else {
            if (dart.test(reference.hasAbsolutePath)) {
              targetPath = core._Uri._removeDotSegments(reference.path);
            } else {
              if (dart.test(this.hasEmptyPath)) {
                if (!dart.test(this.hasAuthority)) {
                  if (!dart.test(this.hasScheme)) {
                    targetPath = reference.path;
                  } else {
                    targetPath = core._Uri._removeDotSegments(reference.path);
                  }
                } else {
                  targetPath = core._Uri._removeDotSegments("/" + dart.notNull(reference.path));
                }
              } else {
                let mergedPath = this[_mergePaths](this.path, reference.path);
                if (dart.test(this.hasScheme) || dart.test(this.hasAuthority) || dart.test(this.hasAbsolutePath)) {
                  targetPath = core._Uri._removeDotSegments(mergedPath);
                } else {
                  targetPath = core._Uri._normalizeRelativePath(mergedPath, dart.test(this.hasScheme) || dart.test(this.hasAuthority));
                }
              }
            }
            if (dart.test(reference.hasQuery)) targetQuery = reference.query;
          }
        }
      }
      let fragment = dart.test(reference.hasFragment) ? reference.fragment : null;
      return new core._Uri._internal(targetScheme, targetUserInfo, targetHost, targetPort, targetPath, targetQuery, fragment);
    }
    get hasScheme() {
      return this.scheme[$isNotEmpty];
    }
    get hasAuthority() {
      return this[_host] != null;
    }
    get hasPort() {
      return this[_port] != null;
    }
    get hasQuery() {
      return this[_query] != null;
    }
    get hasFragment() {
      return this[_fragment] != null;
    }
    get hasEmptyPath() {
      return this.path[$isEmpty];
    }
    get hasAbsolutePath() {
      return this.path[$startsWith]("/");
    }
    get origin() {
      if (this.scheme === "") {
        dart.throw(new core.StateError.new("Cannot use origin without a scheme: " + dart.str(this)));
      }
      if (this.scheme !== "http" && this.scheme !== "https") {
        dart.throw(new core.StateError.new("Origin is only applicable schemes http and https: " + dart.str(this)));
      }
      if (this[_host] == null || this[_host] === "") {
        dart.throw(new core.StateError.new("A " + dart.str(this.scheme) + ": URI should have a non-empty host name: " + dart.str(this)));
      }
      if (this[_port] == null) return dart.str(this.scheme) + "://" + dart.str(this[_host]);
      return dart.str(this.scheme) + "://" + dart.str(this[_host]) + ":" + dart.str(this[_port]);
    }
    toFilePath(opts) {
      let windows = opts && 'windows' in opts ? opts.windows : null;
      if (this.scheme !== "" && this.scheme !== "file") {
        dart.throw(new core.UnsupportedError.new("Cannot extract a file path from a " + dart.str(this.scheme) + " URI"));
      }
      if (this.query !== "") {
        dart.throw(new core.UnsupportedError.new("Cannot extract a file path from a URI with a query component"));
      }
      if (this.fragment !== "") {
        dart.throw(new core.UnsupportedError.new("Cannot extract a file path from a URI with a fragment component"));
      }
      let t = windows;
      t == null ? windows = core._Uri._isWindows : t;
      return dart.test(windows) ? core._Uri._toWindowsFilePath(this) : this[_toFilePath]();
    }
    [_toFilePath]() {
      if (dart.test(this.hasAuthority) && this.host !== "") {
        dart.throw(new core.UnsupportedError.new("Cannot extract a non-Windows file path from a file URI " + "with an authority"));
      }
      let pathSegments = this.pathSegments;
      core._Uri._checkNonWindowsPathReservedCharacters(pathSegments, false);
      let result = new core.StringBuffer.new();
      if (dart.test(this.hasAbsolutePath)) result.write("/");
      result.writeAll(pathSegments, "/");
      return result.toString();
    }
    static _toWindowsFilePath(uri) {
      let hasDriveLetter = false;
      let segments = uri.pathSegments;
      if (dart.notNull(segments[$length]) > 0 && segments[$_get](0).length === 2 && segments[$_get](0)[$codeUnitAt](1) === 58) {
        core._Uri._checkWindowsDriveLetter(segments[$_get](0)[$codeUnitAt](0), false);
        core._Uri._checkWindowsPathReservedCharacters(segments, false, 1);
        hasDriveLetter = true;
      } else {
        core._Uri._checkWindowsPathReservedCharacters(segments, false, 0);
      }
      let result = new core.StringBuffer.new();
      if (dart.test(uri.hasAbsolutePath) && !hasDriveLetter) result.write("\\");
      if (dart.test(uri.hasAuthority)) {
        let host = uri.host;
        if (host[$isNotEmpty]) {
          result.write("\\");
          result.write(host);
          result.write("\\");
        }
      }
      result.writeAll(segments, "\\");
      if (hasDriveLetter && segments[$length] === 1) result.write("\\");
      return result.toString();
    }
    get [_isPathAbsolute]() {
      return this.path != null && this.path[$startsWith]("/");
    }
    [_writeAuthority](ss) {
      if (this[_userInfo][$isNotEmpty]) {
        ss.write(this[_userInfo]);
        ss.write("@");
      }
      if (this[_host] != null) ss.write(this[_host]);
      if (this[_port] != null) {
        ss.write(":");
        ss.write(this[_port]);
      }
    }
    get data() {
      return this.scheme === "data" ? core.UriData.fromUri(this) : null;
    }
    toString() {
      let t = this[_text];
      return t == null ? this[_text] = this[_initializeText]() : t;
    }
    [_initializeText]() {
      if (!(this[_text] == null)) dart.assertFailed();
      let sb = new core.StringBuffer.new();
      if (this.scheme[$isNotEmpty]) {
        sb.write(this.scheme);
        sb.write(":");
      }
      if (dart.test(this.hasAuthority) || this.scheme === "file") {
        sb.write("//");
        this[_writeAuthority](sb);
      }
      sb.write(this.path);
      if (this[_query] != null) {
        sb.write("?");
        sb.write(this[_query]);
      }
      if (this[_fragment] != null) {
        sb.write("#");
        sb.write(this[_fragment]);
      }
      return sb.toString();
    }
    _equals(other) {
      if (this === other) return true;
      return core.Uri.is(other) && this.scheme == other.scheme && this.hasAuthority == other.hasAuthority && this.userInfo == other.userInfo && this.host == other.host && this.port == other.port && this.path == other.path && this.hasQuery == other.hasQuery && this.query == other.query && this.hasFragment == other.hasFragment && this.fragment == other.fragment;
    }
    get hashCode() {
      let t = this[_hashCodeCache];
      return t == null ? this[_hashCodeCache] = dart.hashCode(this.toString()) : t;
    }
    static _createList() {
      return JSArrayOfString().of([]);
    }
    static _splitQueryStringAll(query, opts) {
      let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
      let result = new (IdentityMapOfString$ListOfString()).new();
      let i = 0;
      let start = 0;
      let equalsIndex = -1;
      function parsePair(start, equalsIndex, end) {
        let key = null;
        let value = null;
        if (start == end) return;
        if (dart.notNull(equalsIndex) < 0) {
          key = core._Uri._uriDecode(query, start, end, encoding, true);
          value = "";
        } else {
          key = core._Uri._uriDecode(query, start, equalsIndex, encoding, true);
          value = core._Uri._uriDecode(query, dart.notNull(equalsIndex) + 1, end, encoding, true);
        }
        result[$putIfAbsent](key, dart.fn(core._Uri._createList, VoidToListOfString()))[$add](value);
      }
      dart.fn(parsePair, intAndintAndintTovoid());
      while (i < query.length) {
        let char = query[$codeUnitAt](i);
        if (char === 61) {
          if (equalsIndex < 0) equalsIndex = i;
        } else if (char === 38) {
          parsePair(start, equalsIndex, i);
          start = i + 1;
          equalsIndex = -1;
        }
        i++;
      }
      parsePair(start, equalsIndex, i);
      return result;
    }
    static _uriEncode(canonicalTable, text, encoding, spaceToPlus) {
      if (encoding === convert.utf8 && dart.test(core._Uri._needsNoEncoding.hasMatch(text))) {
        return text;
      }
      let result = new core.StringBuffer.new("");
      let bytes = encoding.encode(text);
      for (let i = 0; i < dart.notNull(bytes[$length]); i++) {
        let byte = bytes[$_get](i);
        if (dart.notNull(byte) < 128 && (dart.notNull(canonicalTable[$_get](byte[$rightShift](4))) & 1 << (dart.notNull(byte) & 15)) !== 0) {
          result.writeCharCode(byte);
        } else if (dart.test(spaceToPlus) && byte === 32) {
          result.write("+");
        } else {
          let hexDigits = "0123456789ABCDEF";
          result.write("%");
          result.write(hexDigits[$_get](dart.notNull(byte) >> 4 & 15));
          result.write(hexDigits[$_get](dart.notNull(byte) & 15));
        }
      }
      return result.toString();
    }
    static _hexCharPairToByte(s, pos) {
      let byte = 0;
      for (let i = 0; i < 2; i++) {
        let charCode = s[$codeUnitAt](dart.notNull(pos) + i);
        if (48 <= charCode && charCode <= 57) {
          byte = byte * 16 + charCode - 48;
        } else {
          charCode = (charCode | 32) >>> 0;
          if (97 <= charCode && charCode <= 102) {
            byte = byte * 16 + charCode - 87;
          } else {
            dart.throw(new core.ArgumentError.new("Invalid URL encoding"));
          }
        }
      }
      return byte;
    }
    static _uriDecode(text, start, end, encoding, plusToSpace) {
      if (!(0 <= dart.notNull(start))) dart.assertFailed();
      if (!(dart.notNull(start) <= dart.notNull(end))) dart.assertFailed();
      if (!(dart.notNull(end) <= text.length)) dart.assertFailed();
      if (!(encoding != null)) dart.assertFailed();
      let simple = true;
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let codeUnit = text[$codeUnitAt](i);
        if (codeUnit > 127 || codeUnit === 37 || dart.test(plusToSpace) && codeUnit === 43) {
          simple = false;
          break;
        }
      }
      let bytes = null;
      if (simple) {
        if (convert.utf8._equals(encoding) || convert.latin1._equals(encoding) || convert.ascii._equals(encoding)) {
          return text[$substring](start, end);
        } else {
          bytes = text[$substring](start, end)[$codeUnits];
        }
      } else {
        bytes = JSArrayOfint().of([]);
        for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
          let codeUnit = text[$codeUnitAt](i);
          if (codeUnit > 127) {
            dart.throw(new core.ArgumentError.new("Illegal percent encoding in URI"));
          }
          if (codeUnit === 37) {
            if (dart.notNull(i) + 3 > text.length) {
              dart.throw(new core.ArgumentError.new("Truncated URI"));
            }
            bytes[$add](core._Uri._hexCharPairToByte(text, dart.notNull(i) + 1));
            i = dart.notNull(i) + 2;
          } else if (dart.test(plusToSpace) && codeUnit === 43) {
            bytes[$add](32);
          } else {
            bytes[$add](codeUnit);
          }
        }
      }
      return encoding.decode(bytes);
    }
    static _isAlphabeticCharacter(codeUnit) {
      let lowerCase = (dart.notNull(codeUnit) | 32) >>> 0;
      return 97 <= lowerCase && lowerCase <= 122;
    }
    static _isUnreservedChar(char) {
      return dart.notNull(char) < 127 && (dart.notNull(core._Uri._unreservedTable[$_get](char[$rightShift](4))) & 1 << (dart.notNull(char) & 15)) !== 0;
    }
  };
  (core._Uri._internal = function(scheme, userInfo, host, port, path, query, fragment) {
    this[_pathSegments] = null;
    this[_text] = null;
    this[_hashCodeCache] = null;
    this[_queryParameters] = null;
    this[_queryParameterLists] = null;
    this.scheme = scheme;
    this[_userInfo] = userInfo;
    this[_host] = host;
    this[_port] = port;
    this.path = path;
    this[_query] = query;
    this[_fragment] = fragment;
  }).prototype = core._Uri.prototype;
  dart.addTypeTests(core._Uri);
  core._Uri[dart.implements] = () => [core.Uri];
  dart.setMethodSignature(core._Uri, () => ({
    __proto__: dart.getMethods(core._Uri.__proto__),
    isScheme: dart.fnType(core.bool, [core.String]),
    replace: dart.fnType(core.Uri, [], {scheme: core.String, userInfo: core.String, host: core.String, port: core.int, path: core.String, pathSegments: core.Iterable$(core.String), query: core.String, queryParameters: core.Map$(core.String, dart.dynamic), fragment: core.String}),
    removeFragment: dart.fnType(core.Uri, []),
    normalizePath: dart.fnType(core.Uri, []),
    [_mergePaths]: dart.fnType(core.String, [core.String, core.String]),
    resolve: dart.fnType(core.Uri, [core.String]),
    resolveUri: dart.fnType(core.Uri, [core.Uri]),
    toFilePath: dart.fnType(core.String, [], {windows: core.bool}),
    [_toFilePath]: dart.fnType(core.String, []),
    [_writeAuthority]: dart.fnType(dart.void, [core.StringSink]),
    [_initializeText]: dart.fnType(core.String, []),
    _equals: dart.fnType(core.bool, [core.Object]),
    [$_equals]: dart.fnType(core.bool, [core.Object])
  }));
  dart.setGetterSignature(core._Uri, () => ({
    __proto__: dart.getGetters(core._Uri.__proto__),
    authority: core.String,
    userInfo: core.String,
    host: core.String,
    port: core.int,
    query: core.String,
    fragment: core.String,
    pathSegments: core.List$(core.String),
    queryParameters: core.Map$(core.String, core.String),
    queryParametersAll: core.Map$(core.String, core.List$(core.String)),
    isAbsolute: core.bool,
    hasScheme: core.bool,
    hasAuthority: core.bool,
    hasPort: core.bool,
    hasQuery: core.bool,
    hasFragment: core.bool,
    hasEmptyPath: core.bool,
    hasAbsolutePath: core.bool,
    origin: core.String,
    [_isPathAbsolute]: core.bool,
    data: core.UriData
  }));
  dart.setFieldSignature(core._Uri, () => ({
    __proto__: dart.getFields(core._Uri.__proto__),
    scheme: dart.finalFieldType(core.String),
    [_userInfo]: dart.finalFieldType(core.String),
    [_host]: dart.finalFieldType(core.String),
    [_port]: dart.fieldType(core.int),
    path: dart.finalFieldType(core.String),
    [_query]: dart.finalFieldType(core.String),
    [_fragment]: dart.finalFieldType(core.String),
    [_pathSegments]: dart.fieldType(ListOfString()),
    [_text]: dart.fieldType(core.String),
    [_hashCodeCache]: dart.fieldType(core.int),
    [_queryParameters]: dart.fieldType(MapOfString$String()),
    [_queryParameterLists]: dart.fieldType(MapOfString$ListOfString())
  }));
  dart.defineExtensionMethods(core._Uri, ['toString', '_equals']);
  dart.defineExtensionAccessors(core._Uri, ['hashCode']);
  dart.defineLazy(core._Uri, {
    /*core._Uri._unreservedTable*/get _unreservedTable() {
      return dart.constList([0, 0, 24576, 1023, 65534, 34815, 65534, 18431], core.int);
    },
    /*core._Uri._unreserved2396Table*/get _unreserved2396Table() {
      return dart.constList([0, 0, 26498, 1023, 65534, 34815, 65534, 18431], core.int);
    },
    /*core._Uri._encodeFullTable*/get _encodeFullTable() {
      return dart.constList([0, 0, 65498, 45055, 65535, 34815, 65534, 18431], core.int);
    },
    /*core._Uri._schemeTable*/get _schemeTable() {
      return dart.constList([0, 0, 26624, 1023, 65534, 2047, 65534, 2047], core.int);
    },
    /*core._Uri._schemeLowerTable*/get _schemeLowerTable() {
      return dart.constList([0, 0, 26624, 1023, 0, 0, 65534, 2047], core.int);
    },
    /*core._Uri._subDelimitersTable*/get _subDelimitersTable() {
      return dart.constList([0, 0, 32722, 11263, 65534, 34815, 65534, 18431], core.int);
    },
    /*core._Uri._genDelimitersTable*/get _genDelimitersTable() {
      return dart.constList([0, 0, 32776, 33792, 1, 10240, 0, 0], core.int);
    },
    /*core._Uri._userinfoTable*/get _userinfoTable() {
      return dart.constList([0, 0, 32722, 12287, 65534, 34815, 65534, 18431], core.int);
    },
    /*core._Uri._regNameTable*/get _regNameTable() {
      return dart.constList([0, 0, 32754, 11263, 65534, 34815, 65534, 18431], core.int);
    },
    /*core._Uri._pathCharTable*/get _pathCharTable() {
      return dart.constList([0, 0, 32722, 12287, 65535, 34815, 65534, 18431], core.int);
    },
    /*core._Uri._pathCharOrSlashTable*/get _pathCharOrSlashTable() {
      return dart.constList([0, 0, 65490, 12287, 65535, 34815, 65534, 18431], core.int);
    },
    /*core._Uri._queryCharTable*/get _queryCharTable() {
      return dart.constList([0, 0, 65490, 45055, 65535, 34815, 65534, 18431], core.int);
    },
    /*core._Uri._isWindowsCached*/get _isWindowsCached() {
      return typeof process != "undefined" && Object.prototype.toString.call(process) == "[object process]" && process.platform == "win32";
    },
    /*core._Uri._needsNoEncoding*/get _needsNoEncoding() {
      return core.RegExp.new("^[\\-\\.0-9A-Z_a-z~]*$");
    }
  });
  const _separatorIndices = Symbol('_separatorIndices');
  const _uriCache = Symbol('_uriCache');
  core.UriData = class UriData extends core.Object {
    static fromString(content, opts) {
      let mimeType = opts && 'mimeType' in opts ? opts.mimeType : null;
      let encoding = opts && 'encoding' in opts ? opts.encoding : null;
      let parameters = opts && 'parameters' in opts ? opts.parameters : null;
      let base64 = opts && 'base64' in opts ? opts.base64 : false;
      let buffer = new core.StringBuffer.new();
      let indices = JSArrayOfint().of([-1]);
      let charsetName = null;
      let encodingName = null;
      if (parameters != null) charsetName = parameters[$_get]("charset");
      if (encoding == null) {
        if (charsetName != null) {
          encoding = convert.Encoding.getByName(charsetName);
        }
      } else if (charsetName == null) {
        encodingName = encoding.name;
      }
      let t = encoding;
      t == null ? encoding = convert.ascii : t;
      core.UriData._writeUri(mimeType, encodingName, parameters, buffer, indices);
      indices[$add](buffer.length);
      if (dart.test(base64)) {
        buffer.write(";base64,");
        indices[$add](dart.notNull(buffer.length) - 1);
        buffer.write(encoding.fuse(core.String, core.UriData._base64).encode(content));
      } else {
        buffer.write(",");
        core.UriData._uriEncodeBytes(core.UriData._uricTable, encoding.encode(content), buffer);
      }
      return new core.UriData.__(buffer.toString(), indices, null);
    }
    static fromBytes(bytes, opts) {
      let mimeType = opts && 'mimeType' in opts ? opts.mimeType : "application/octet-stream";
      let parameters = opts && 'parameters' in opts ? opts.parameters : null;
      let percentEncoded = opts && 'percentEncoded' in opts ? opts.percentEncoded : false;
      let buffer = new core.StringBuffer.new();
      let indices = JSArrayOfint().of([-1]);
      core.UriData._writeUri(core.String._check(mimeType), null, parameters, buffer, indices);
      indices[$add](buffer.length);
      if (dart.dtest(percentEncoded)) {
        buffer.write(",");
        core.UriData._uriEncodeBytes(core.UriData._uricTable, bytes, buffer);
      } else {
        buffer.write(";base64,");
        indices[$add](dart.notNull(buffer.length) - 1);
        core.UriData._base64.encoder.startChunkedConversion(convert.StringConversionSink.fromStringSink(buffer)).addSlice(bytes, 0, bytes[$length], true);
      }
      return new core.UriData.__(buffer.toString(), indices, null);
    }
    static fromUri(uri) {
      if (uri.scheme !== "data") {
        dart.throw(new core.ArgumentError.value(uri, "uri", "Scheme must be 'data'"));
      }
      if (dart.test(uri.hasAuthority)) {
        dart.throw(new core.ArgumentError.value(uri, "uri", "Data uri must not have authority"));
      }
      if (dart.test(uri.hasFragment)) {
        dart.throw(new core.ArgumentError.value(uri, "uri", "Data uri must not have a fragment part"));
      }
      if (!dart.test(uri.hasQuery)) {
        return core.UriData._parse(uri.path, 0, uri);
      }
      return core.UriData._parse(dart.str(uri), 5, uri);
    }
    static _writeUri(mimeType, charsetName, parameters, buffer, indices) {
      if (mimeType == null || mimeType === "text/plain") {
        mimeType = "";
      }
      if (mimeType[$isEmpty] || mimeType === "application/octet-stream") {
        buffer.write(mimeType);
      } else {
        let slashIndex = core.UriData._validateMimeType(mimeType);
        if (dart.notNull(slashIndex) < 0) {
          dart.throw(new core.ArgumentError.value(mimeType, "mimeType", "Invalid MIME type"));
        }
        buffer.write(core._Uri._uriEncode(core.UriData._tokenCharTable, mimeType[$substring](0, slashIndex), convert.utf8, false));
        buffer.write("/");
        buffer.write(core._Uri._uriEncode(core.UriData._tokenCharTable, mimeType[$substring](dart.notNull(slashIndex) + 1), convert.utf8, false));
      }
      if (charsetName != null) {
        if (indices != null) {
          indices[$add](buffer.length);
          indices[$add](dart.notNull(buffer.length) + 8);
        }
        buffer.write(";charset=");
        buffer.write(core._Uri._uriEncode(core.UriData._tokenCharTable, charsetName, convert.utf8, false));
      }
      parameters == null ? null : parameters[$forEach](dart.fn((key, value) => {
        if (key[$isEmpty]) {
          dart.throw(new core.ArgumentError.value("", "Parameter names must not be empty"));
        }
        if (value[$isEmpty]) {
          dart.throw(new core.ArgumentError.value("", "Parameter values must not be empty", "parameters[\"" + dart.str(key) + "\"]"));
        }
        if (indices != null) indices[$add](buffer.length);
        buffer.write(";");
        buffer.write(core._Uri._uriEncode(core.UriData._tokenCharTable, key, convert.utf8, false));
        if (indices != null) indices[$add](buffer.length);
        buffer.write("=");
        buffer.write(core._Uri._uriEncode(core.UriData._tokenCharTable, value, convert.utf8, false));
      }, StringAndStringToNull()));
    }
    static _validateMimeType(mimeType) {
      let slashIndex = -1;
      for (let i = 0; i < mimeType.length; i++) {
        let char = mimeType[$codeUnitAt](i);
        if (char !== 47) continue;
        if (slashIndex < 0) {
          slashIndex = i;
          continue;
        }
        return -1;
      }
      return slashIndex;
    }
    static parse(uri) {
      if (uri.length >= 5) {
        let dataDelta = core._startsWithData(uri, 0);
        if (dataDelta === 0) {
          return core.UriData._parse(uri, 5, null);
        }
        if (dataDelta === 32) {
          return core.UriData._parse(uri[$substring](5), 0, null);
        }
      }
      dart.throw(new core.FormatException.new("Does not start with 'data:'", uri, 0));
    }
    get uri() {
      if (this[_uriCache] != null) return this[_uriCache];
      let path = this[_text];
      let query = null;
      let colonIndex = this[_separatorIndices][$_get](0);
      let queryIndex = this[_text][$indexOf]("?", dart.notNull(colonIndex) + 1);
      let end = this[_text].length;
      if (queryIndex >= 0) {
        query = core._Uri._normalizeOrSubstring(this[_text], queryIndex + 1, end, core._Uri._queryCharTable);
        end = queryIndex;
      }
      path = core._Uri._normalizeOrSubstring(this[_text], dart.notNull(colonIndex) + 1, end, core._Uri._pathCharOrSlashTable);
      this[_uriCache] = new core._DataUri.new(this, path, query);
      return this[_uriCache];
    }
    get mimeType() {
      let start = dart.notNull(this[_separatorIndices][$_get](0)) + 1;
      let end = this[_separatorIndices][$_get](1);
      if (start === end) return "text/plain";
      return core._Uri._uriDecode(this[_text], start, end, convert.utf8, false);
    }
    get charset() {
      let parameterStart = 1;
      let parameterEnd = dart.notNull(this[_separatorIndices][$length]) - 1;
      if (dart.test(this.isBase64)) {
        parameterEnd = parameterEnd - 1;
      }
      for (let i = parameterStart; i < parameterEnd; i = i + 2) {
        let keyStart = dart.notNull(this[_separatorIndices][$_get](i)) + 1;
        let keyEnd = this[_separatorIndices][$_get](i + 1);
        if (keyEnd === keyStart + 7 && this[_text][$startsWith]("charset", keyStart)) {
          return core._Uri._uriDecode(this[_text], dart.notNull(keyEnd) + 1, this[_separatorIndices][$_get](i + 2), convert.utf8, false);
        }
      }
      return "US-ASCII";
    }
    get isBase64() {
      return this[_separatorIndices][$length][$isOdd];
    }
    get contentText() {
      return this[_text][$substring](dart.notNull(this[_separatorIndices][$last]) + 1);
    }
    contentAsBytes() {
      let text = this[_text];
      let start = dart.notNull(this[_separatorIndices][$last]) + 1;
      if (dart.test(this.isBase64)) {
        return convert.base64.decoder.convert(text, start);
      }
      let percent = 37;
      let length = text.length - start;
      for (let i = start; i < text.length; i++) {
        let codeUnit = text[$codeUnitAt](i);
        if (codeUnit === percent) {
          i = i + 2;
          length = length - 2;
        }
      }
      let result = typed_data.Uint8List.new(length);
      if (length === text.length) {
        result[$setRange](0, length, text[$codeUnits], start);
        return result;
      }
      let index = 0;
      for (let i = start; i < text.length; i++) {
        let codeUnit = text[$codeUnitAt](i);
        if (codeUnit !== percent) {
          result[$_set](index++, codeUnit);
        } else {
          if (i + 2 < text.length) {
            let byte = _internal.parseHexByte(text, i + 1);
            if (dart.notNull(byte) >= 0) {
              result[$_set](index++, byte);
              i = i + 2;
              continue;
            }
          }
          dart.throw(new core.FormatException.new("Invalid percent escape", text, i));
        }
      }
      if (!(index === result[$length])) dart.assertFailed();
      return result;
    }
    contentAsString(opts) {
      let encoding = opts && 'encoding' in opts ? opts.encoding : null;
      if (encoding == null) {
        let charset = this.charset;
        encoding = convert.Encoding.getByName(charset);
        if (encoding == null) {
          dart.throw(new core.UnsupportedError.new("Unknown charset: " + dart.str(charset)));
        }
      }
      let text = this[_text];
      let start = dart.notNull(this[_separatorIndices][$last]) + 1;
      if (dart.test(this.isBase64)) {
        let converter = convert.base64.decoder.fuse(core.String, encoding.decoder);
        return converter.convert(text[$substring](start));
      }
      return core._Uri._uriDecode(text, start, text.length, encoding, false);
    }
    get parameters() {
      let result = new (IdentityMapOfString$String()).new();
      for (let i = 3; i < dart.notNull(this[_separatorIndices][$length]); i = i + 2) {
        let start = dart.notNull(this[_separatorIndices][$_get](i - 2)) + 1;
        let equals = this[_separatorIndices][$_get](i - 1);
        let end = this[_separatorIndices][$_get](i);
        let key = core._Uri._uriDecode(this[_text], start, equals, convert.utf8, false);
        let value = core._Uri._uriDecode(this[_text], dart.notNull(equals) + 1, end, convert.utf8, false);
        result[$_set](key, value);
      }
      return result;
    }
    static _parse(text, start, sourceUri) {
      if (!(start === 0 || start === 5)) dart.assertFailed();
      if (!(start === 5 === text[$startsWith]("data:"))) dart.assertFailed();
      let comma = 44;
      let slash = 47;
      let semicolon = 59;
      let equals = 61;
      let indices = JSArrayOfint().of([dart.notNull(start) - 1]);
      let slashIndex = -1;
      let char = null;
      let i = start;
      for (; dart.notNull(i) < text.length; i = dart.notNull(i) + 1) {
        char = text[$codeUnitAt](i);
        if (dart.equals(char, comma) || dart.equals(char, semicolon)) break;
        if (dart.equals(char, slash)) {
          if (dart.notNull(slashIndex) < 0) {
            slashIndex = i;
            continue;
          }
          dart.throw(new core.FormatException.new("Invalid MIME type", text, i));
        }
      }
      if (dart.notNull(slashIndex) < 0 && dart.notNull(i) > dart.notNull(start)) {
        dart.throw(new core.FormatException.new("Invalid MIME type", text, i));
      }
      while (!dart.equals(char, comma)) {
        indices[$add](i);
        i = dart.notNull(i) + 1;
        let equalsIndex = -1;
        for (; dart.notNull(i) < text.length; i = dart.notNull(i) + 1) {
          char = text[$codeUnitAt](i);
          if (dart.equals(char, equals)) {
            if (dart.notNull(equalsIndex) < 0) equalsIndex = i;
          } else if (dart.equals(char, semicolon) || dart.equals(char, comma)) {
            break;
          }
        }
        if (dart.notNull(equalsIndex) >= 0) {
          indices[$add](equalsIndex);
        } else {
          let lastSeparator = indices[$last];
          if (!dart.equals(char, comma) || i !== dart.notNull(lastSeparator) + 7 || !text[$startsWith]("base64", dart.notNull(lastSeparator) + 1)) {
            dart.throw(new core.FormatException.new("Expecting '='", text, i));
          }
          break;
        }
      }
      indices[$add](i);
      let isBase64 = indices[$length][$isOdd];
      if (isBase64) {
        text = convert.base64.normalize(text, dart.notNull(i) + 1, text.length);
      } else {
        let data = core._Uri._normalize(text, dart.notNull(i) + 1, text.length, core.UriData._uricTable, {escapeDelimiters: true});
        if (data != null) {
          text = text[$replaceRange](dart.notNull(i) + 1, text.length, data);
        }
      }
      return new core.UriData.__(text, indices, sourceUri);
    }
    static _uriEncodeBytes(canonicalTable, bytes, buffer) {
      let byteOr = 0;
      for (let i = 0; i < dart.notNull(bytes[$length]); i++) {
        let byte = bytes[$_get](i);
        byteOr = (byteOr | dart.notNull(byte)) >>> 0;
        if (dart.notNull(byte) < 128 && (dart.notNull(canonicalTable[$_get](byte[$rightShift](4))) & 1 << (dart.notNull(byte) & 15)) !== 0) {
          buffer.writeCharCode(byte);
        } else {
          buffer.writeCharCode(37);
          buffer.writeCharCode("0123456789ABCDEF"[$codeUnitAt](byte[$rightShift](4)));
          buffer.writeCharCode("0123456789ABCDEF"[$codeUnitAt](dart.notNull(byte) & 15));
        }
      }
      if ((byteOr & ~255) !== 0) {
        for (let i = 0; i < dart.notNull(bytes[$length]); i++) {
          let byte = bytes[$_get](i);
          if (dart.notNull(byte) < 0 || dart.notNull(byte) > 255) {
            dart.throw(new core.ArgumentError.value(byte, "non-byte value"));
          }
        }
      }
    }
    toString() {
      return this[_separatorIndices][$_get](0) === -1 ? "data:" + dart.str(this[_text]) : this[_text];
    }
  };
  (core.UriData.__ = function(text, separatorIndices, uriCache) {
    this[_text] = text;
    this[_separatorIndices] = separatorIndices;
    this[_uriCache] = uriCache;
  }).prototype = core.UriData.prototype;
  dart.addTypeTests(core.UriData);
  dart.setMethodSignature(core.UriData, () => ({
    __proto__: dart.getMethods(core.UriData.__proto__),
    contentAsBytes: dart.fnType(typed_data.Uint8List, []),
    contentAsString: dart.fnType(core.String, [], {encoding: convert.Encoding})
  }));
  dart.setGetterSignature(core.UriData, () => ({
    __proto__: dart.getGetters(core.UriData.__proto__),
    uri: core.Uri,
    mimeType: core.String,
    charset: core.String,
    isBase64: core.bool,
    contentText: core.String,
    parameters: core.Map$(core.String, core.String)
  }));
  dart.setFieldSignature(core.UriData, () => ({
    __proto__: dart.getFields(core.UriData.__proto__),
    [_text]: dart.finalFieldType(core.String),
    [_separatorIndices]: dart.finalFieldType(ListOfint()),
    [_uriCache]: dart.fieldType(core.Uri)
  }));
  dart.defineExtensionMethods(core.UriData, ['toString']);
  dart.defineLazy(core.UriData, {
    /*core.UriData._noScheme*/get _noScheme() {
      return -1;
    },
    /*core.UriData._base64*/get _base64() {
      return convert.base64;
    },
    /*core.UriData._tokenCharTable*/get _tokenCharTable() {
      return dart.constList([0, 0, 27858, 1023, 65534, 51199, 65535, 32767], core.int);
    },
    /*core.UriData._uricTable*/get _uricTable() {
      return core._Uri._queryCharTable;
    },
    /*core.UriData._base64Table*/get _base64Table() {
      return dart.constList([0, 0, 34816, 1023, 65534, 2047, 65534, 2047], core.int);
    }
  });
  dart.defineLazy(core, {
    /*core._schemeEndIndex*/get _schemeEndIndex() {
      return 1;
    },
    /*core._hostStartIndex*/get _hostStartIndex() {
      return 2;
    },
    /*core._portStartIndex*/get _portStartIndex() {
      return 3;
    },
    /*core._pathStartIndex*/get _pathStartIndex() {
      return 4;
    },
    /*core._queryStartIndex*/get _queryStartIndex() {
      return 5;
    },
    /*core._fragmentStartIndex*/get _fragmentStartIndex() {
      return 6;
    },
    /*core._notSimpleIndex*/get _notSimpleIndex() {
      return 7;
    },
    /*core._uriStart*/get _uriStart() {
      return 0;
    },
    /*core._nonSimpleEndStates*/get _nonSimpleEndStates() {
      return 14;
    },
    /*core._schemeStart*/get _schemeStart() {
      return 20;
    },
    /*core._scannerTables*/get _scannerTables() {
      return core._createTables();
    }
  });
  core._createTables = function() {
    let stateCount = 22;
    let schemeOrPath = 1;
    let authOrPath = 2;
    let authOrPathSlash = 3;
    let uinfoOrHost0 = 4;
    let uinfoOrHost = 5;
    let uinfoOrPort0 = 6;
    let uinfoOrPort = 7;
    let ipv6Host = 8;
    let relPathSeg = 9;
    let pathSeg = 10;
    let path = 11;
    let query = 12;
    let fragment = 13;
    let schemeOrPathDot = 14;
    let schemeOrPathDot2 = 15;
    let relPathSegDot = 16;
    let relPathSegDot2 = 17;
    let pathSegDot = 18;
    let pathSegDot2 = 19;
    let scheme0 = 20;
    let scheme = 21;
    let schemeEnd = 1 << 5;
    let hostStart = 2 << 5;
    let portStart = 3 << 5;
    let pathStart = 4 << 5;
    let queryStart = 5 << 5;
    let fragmentStart = 6 << 5;
    let notSimple = 7 << 5;
    let unreserved = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-._~";
    let subDelims = "!$&'()*+,;=";
    let pchar = unreserved + subDelims;
    let tables = ListOfUint8List().generate(stateCount, dart.fn(_ => typed_data.Uint8List.new(96), intToUint8List()));
    function build(state, defaultTransition) {
      let _ = tables[$_get](core.int._check(state));
      _[$fillRange](0, 96, core.int._check(defaultTransition));
      return _;
    }
    dart.fn(build, dynamicAnddynamicToUint8List());
    function setChars(target, chars, transition) {
      for (let i = 0; i < chars.length; i++) {
        let char = chars[$codeUnitAt](i);
        target[$_set]((char ^ 96) >>> 0, transition);
      }
    }
    dart.fn(setChars, Uint8ListAndStringAndintTovoid());
    function setRange(target, range, transition) {
      for (let i = range[$codeUnitAt](0), n = range[$codeUnitAt](1); i <= n; i++) {
        target[$_set]((i ^ 96) >>> 0, transition);
      }
    }
    dart.fn(setRange, Uint8ListAndStringAndintTovoid());
    let b = null;
    b = build(0, (schemeOrPath | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), pchar, schemeOrPath);
    setChars(typed_data.Uint8List._check(b), ".", schemeOrPathDot);
    setChars(typed_data.Uint8List._check(b), ":", (authOrPath | schemeEnd) >>> 0);
    setChars(typed_data.Uint8List._check(b), "/", authOrPathSlash);
    setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(schemeOrPathDot, (schemeOrPath | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), pchar, schemeOrPath);
    setChars(typed_data.Uint8List._check(b), ".", schemeOrPathDot2);
    setChars(typed_data.Uint8List._check(b), ":", (authOrPath | schemeEnd) >>> 0);
    setChars(typed_data.Uint8List._check(b), "/", (pathSeg | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(schemeOrPathDot2, (schemeOrPath | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), pchar, schemeOrPath);
    setChars(typed_data.Uint8List._check(b), "%", (schemeOrPath | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), ":", (authOrPath | schemeEnd) >>> 0);
    setChars(typed_data.Uint8List._check(b), "/", relPathSeg);
    setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(schemeOrPath, (schemeOrPath | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), pchar, schemeOrPath);
    setChars(typed_data.Uint8List._check(b), ":", (authOrPath | schemeEnd) >>> 0);
    setChars(typed_data.Uint8List._check(b), "/", pathSeg);
    setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(authOrPath, (path | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), pchar, (path | pathStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "/", (authOrPathSlash | pathStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), ".", (pathSegDot | pathStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(authOrPathSlash, (path | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), pchar, path);
    setChars(typed_data.Uint8List._check(b), "/", (uinfoOrHost0 | hostStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), ".", pathSegDot);
    setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(uinfoOrHost0, (uinfoOrHost | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), pchar, uinfoOrHost);
    setRange(typed_data.Uint8List._check(b), "AZ", (uinfoOrHost | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), ":", (uinfoOrPort0 | portStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "@", (uinfoOrHost0 | hostStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "[", (ipv6Host | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), "/", (pathSeg | pathStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(uinfoOrHost, (uinfoOrHost | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), pchar, uinfoOrHost);
    setRange(typed_data.Uint8List._check(b), "AZ", (uinfoOrHost | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), ":", (uinfoOrPort0 | portStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "@", (uinfoOrHost0 | hostStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "/", (pathSeg | pathStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(uinfoOrPort0, (uinfoOrPort | notSimple) >>> 0);
    setRange(typed_data.Uint8List._check(b), "19", uinfoOrPort);
    setChars(typed_data.Uint8List._check(b), "@", (uinfoOrHost0 | hostStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "/", (pathSeg | pathStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(uinfoOrPort, (uinfoOrPort | notSimple) >>> 0);
    setRange(typed_data.Uint8List._check(b), "09", uinfoOrPort);
    setChars(typed_data.Uint8List._check(b), "@", (uinfoOrHost0 | hostStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "/", (pathSeg | pathStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(ipv6Host, ipv6Host);
    setChars(typed_data.Uint8List._check(b), "]", uinfoOrHost);
    b = build(relPathSeg, (path | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), pchar, path);
    setChars(typed_data.Uint8List._check(b), ".", relPathSegDot);
    setChars(typed_data.Uint8List._check(b), "/", (pathSeg | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(relPathSegDot, (path | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), pchar, path);
    setChars(typed_data.Uint8List._check(b), ".", relPathSegDot2);
    setChars(typed_data.Uint8List._check(b), "/", (pathSeg | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(relPathSegDot2, (path | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), pchar, path);
    setChars(typed_data.Uint8List._check(b), "/", relPathSeg);
    setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(pathSeg, (path | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), pchar, path);
    setChars(typed_data.Uint8List._check(b), ".", pathSegDot);
    setChars(typed_data.Uint8List._check(b), "/", (pathSeg | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(pathSegDot, (path | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), pchar, path);
    setChars(typed_data.Uint8List._check(b), ".", pathSegDot2);
    setChars(typed_data.Uint8List._check(b), "/", (pathSeg | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(pathSegDot2, (path | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), pchar, path);
    setChars(typed_data.Uint8List._check(b), "/", (pathSeg | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(path, (path | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), pchar, path);
    setChars(typed_data.Uint8List._check(b), "/", pathSeg);
    setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(query, (query | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), pchar, query);
    setChars(typed_data.Uint8List._check(b), "?", query);
    setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
    b = build(fragment, (fragment | notSimple) >>> 0);
    setChars(typed_data.Uint8List._check(b), pchar, fragment);
    setChars(typed_data.Uint8List._check(b), "?", fragment);
    b = build(scheme0, (scheme | notSimple) >>> 0);
    setRange(typed_data.Uint8List._check(b), "az", scheme);
    b = build(scheme, (scheme | notSimple) >>> 0);
    setRange(typed_data.Uint8List._check(b), "az", scheme);
    setRange(typed_data.Uint8List._check(b), "09", scheme);
    setChars(typed_data.Uint8List._check(b), "+-.", scheme);
    return tables;
  };
  core._scan = function(uri, start, end, state, indices) {
    let tables = core._scannerTables;
    if (!(dart.notNull(end) <= uri.length)) dart.assertFailed();
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let table = tables[$_get](state);
      let char = (uri[$codeUnitAt](i) ^ 96) >>> 0;
      if (char > 95) char = 31;
      let transition = table[$_get](char);
      state = dart.notNull(transition) & 31;
      indices[$_set](transition[$rightShift](5), i);
    }
    return state;
  };
  const _uri = Symbol('_uri');
  const _schemeEnd = Symbol('_schemeEnd');
  const _hostStart = Symbol('_hostStart');
  const _portStart = Symbol('_portStart');
  const _pathStart = Symbol('_pathStart');
  const _queryStart = Symbol('_queryStart');
  const _fragmentStart = Symbol('_fragmentStart');
  const _schemeCache = Symbol('_schemeCache');
  const _isFile = Symbol('_isFile');
  const _isHttp = Symbol('_isHttp');
  const _isHttps = Symbol('_isHttps');
  const _isPackage = Symbol('_isPackage');
  const _isScheme = Symbol('_isScheme');
  let const$52;
  let const$53;
  let const$54;
  const _isPort = Symbol('_isPort');
  const _simpleMerge = Symbol('_simpleMerge');
  const _toNonSimple = Symbol('_toNonSimple');
  core._SimpleUri = class _SimpleUri extends core.Object {
    get hasScheme() {
      return dart.notNull(this[_schemeEnd]) > 0;
    }
    get hasAuthority() {
      return dart.notNull(this[_hostStart]) > 0;
    }
    get hasUserInfo() {
      return dart.notNull(this[_hostStart]) > dart.notNull(this[_schemeEnd]) + 4;
    }
    get hasPort() {
      return dart.notNull(this[_hostStart]) > 0 && dart.notNull(this[_portStart]) + 1 < dart.notNull(this[_pathStart]);
    }
    get hasQuery() {
      return dart.notNull(this[_queryStart]) < dart.notNull(this[_fragmentStart]);
    }
    get hasFragment() {
      return dart.notNull(this[_fragmentStart]) < this[_uri].length;
    }
    get [_isFile]() {
      return this[_schemeEnd] === 4 && this[_uri][$startsWith]("file");
    }
    get [_isHttp]() {
      return this[_schemeEnd] === 4 && this[_uri][$startsWith]("http");
    }
    get [_isHttps]() {
      return this[_schemeEnd] === 5 && this[_uri][$startsWith]("https");
    }
    get [_isPackage]() {
      return this[_schemeEnd] === 7 && this[_uri][$startsWith]("package");
    }
    [_isScheme](scheme) {
      return this[_schemeEnd] === scheme.length && this[_uri][$startsWith](scheme);
    }
    get hasAbsolutePath() {
      return this[_uri][$startsWith]("/", this[_pathStart]);
    }
    get hasEmptyPath() {
      return this[_pathStart] == this[_queryStart];
    }
    get isAbsolute() {
      return dart.test(this.hasScheme) && !dart.test(this.hasFragment);
    }
    isScheme(scheme) {
      if (scheme == null || scheme[$isEmpty]) return dart.notNull(this[_schemeEnd]) < 0;
      if (scheme.length !== this[_schemeEnd]) return false;
      return core._Uri._compareScheme(scheme, this[_uri]);
    }
    get scheme() {
      if (dart.notNull(this[_schemeEnd]) <= 0) return "";
      if (this[_schemeCache] != null) return this[_schemeCache];
      if (dart.test(this[_isHttp])) {
        this[_schemeCache] = "http";
      } else if (dart.test(this[_isHttps])) {
        this[_schemeCache] = "https";
      } else if (dart.test(this[_isFile])) {
        this[_schemeCache] = "file";
      } else if (dart.test(this[_isPackage])) {
        this[_schemeCache] = "package";
      } else {
        this[_schemeCache] = this[_uri][$substring](0, this[_schemeEnd]);
      }
      return this[_schemeCache];
    }
    get authority() {
      return dart.notNull(this[_hostStart]) > 0 ? this[_uri][$substring](dart.notNull(this[_schemeEnd]) + 3, this[_pathStart]) : "";
    }
    get userInfo() {
      return dart.notNull(this[_hostStart]) > dart.notNull(this[_schemeEnd]) + 3 ? this[_uri][$substring](dart.notNull(this[_schemeEnd]) + 3, dart.notNull(this[_hostStart]) - 1) : "";
    }
    get host() {
      return dart.notNull(this[_hostStart]) > 0 ? this[_uri][$substring](this[_hostStart], this[_portStart]) : "";
    }
    get port() {
      if (dart.test(this.hasPort)) return core.int.parse(this[_uri][$substring](dart.notNull(this[_portStart]) + 1, this[_pathStart]));
      if (dart.test(this[_isHttp])) return 80;
      if (dart.test(this[_isHttps])) return 443;
      return 0;
    }
    get path() {
      return this[_uri][$substring](this[_pathStart], this[_queryStart]);
    }
    get query() {
      return dart.notNull(this[_queryStart]) < dart.notNull(this[_fragmentStart]) ? this[_uri][$substring](dart.notNull(this[_queryStart]) + 1, this[_fragmentStart]) : "";
    }
    get fragment() {
      return dart.notNull(this[_fragmentStart]) < this[_uri].length ? this[_uri][$substring](dart.notNull(this[_fragmentStart]) + 1) : "";
    }
    get origin() {
      let isHttp = this[_isHttp];
      if (dart.notNull(this[_schemeEnd]) < 0) {
        dart.throw(new core.StateError.new("Cannot use origin without a scheme: " + dart.str(this)));
      }
      if (!dart.test(isHttp) && !dart.test(this[_isHttps])) {
        dart.throw(new core.StateError.new("Origin is only applicable to schemes http and https: " + dart.str(this)));
      }
      if (this[_hostStart] == this[_portStart]) {
        dart.throw(new core.StateError.new("A " + dart.str(this.scheme) + ": URI should have a non-empty host name: " + dart.str(this)));
      }
      if (this[_hostStart] === dart.notNull(this[_schemeEnd]) + 3) {
        return this[_uri][$substring](0, this[_pathStart]);
      }
      return this[_uri][$substring](0, dart.notNull(this[_schemeEnd]) + 3) + this[_uri][$substring](this[_hostStart], this[_pathStart]);
    }
    get pathSegments() {
      let start = this[_pathStart];
      let end = this[_queryStart];
      if (this[_uri][$startsWith]("/", start)) {
        start = dart.notNull(start) + 1;
      }
      if (start == end) return const$52 || (const$52 = dart.constList([], core.String));
      let parts = JSArrayOfString().of([]);
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let char = this[_uri][$codeUnitAt](i);
        if (char === 47) {
          parts[$add](this[_uri][$substring](start, i));
          start = dart.notNull(i) + 1;
        }
      }
      parts[$add](this[_uri][$substring](start, end));
      return ListOfString().unmodifiable(parts);
    }
    get queryParameters() {
      if (!dart.test(this.hasQuery)) return const$53 || (const$53 = dart.constMap(core.String, core.String, []));
      return new (UnmodifiableMapViewOfString$String()).new(core.Uri.splitQueryString(this.query));
    }
    get queryParametersAll() {
      if (!dart.test(this.hasQuery)) return const$54 || (const$54 = dart.constMap(core.String, ListOfString(), []));
      let queryParameterLists = core._Uri._splitQueryStringAll(this.query);
      for (let key of queryParameterLists[$keys]) {
        queryParameterLists[$_set](key, ListOfString().unmodifiable(core.Iterable._check(queryParameterLists[$_get](key))));
      }
      return MapOfString$ListOfString().unmodifiable(queryParameterLists);
    }
    [_isPort](port) {
      let portDigitStart = dart.notNull(this[_portStart]) + 1;
      return portDigitStart + port.length === this[_pathStart] && this[_uri][$startsWith](port, portDigitStart);
    }
    normalizePath() {
      return this;
    }
    removeFragment() {
      if (!dart.test(this.hasFragment)) return this;
      return new core._SimpleUri.new(this[_uri][$substring](0, this[_fragmentStart]), this[_schemeEnd], this[_hostStart], this[_portStart], this[_pathStart], this[_queryStart], this[_fragmentStart], this[_schemeCache]);
    }
    replace(opts) {
      let scheme = opts && 'scheme' in opts ? opts.scheme : null;
      let userInfo = opts && 'userInfo' in opts ? opts.userInfo : null;
      let host = opts && 'host' in opts ? opts.host : null;
      let port = opts && 'port' in opts ? opts.port : null;
      let path = opts && 'path' in opts ? opts.path : null;
      let pathSegments = opts && 'pathSegments' in opts ? opts.pathSegments : null;
      let query = opts && 'query' in opts ? opts.query : null;
      let queryParameters = opts && 'queryParameters' in opts ? opts.queryParameters : null;
      let fragment = opts && 'fragment' in opts ? opts.fragment : null;
      let schemeChanged = false;
      if (scheme != null) {
        scheme = core._Uri._makeScheme(scheme, 0, scheme.length);
        schemeChanged = !dart.test(this[_isScheme](scheme));
      } else {
        scheme = this.scheme;
      }
      let isFile = scheme === "file";
      if (userInfo != null) {
        userInfo = core._Uri._makeUserInfo(userInfo, 0, userInfo.length);
      } else if (dart.notNull(this[_hostStart]) > 0) {
        userInfo = this[_uri][$substring](dart.notNull(this[_schemeEnd]) + 3, this[_hostStart]);
      } else {
        userInfo = "";
      }
      if (port != null) {
        port = core._Uri._makePort(port, scheme);
      } else {
        port = dart.test(this.hasPort) ? this.port : null;
        if (schemeChanged) {
          port = core._Uri._makePort(port, scheme);
        }
      }
      if (host != null) {
        host = core._Uri._makeHost(host, 0, host.length, false);
      } else if (dart.notNull(this[_hostStart]) > 0) {
        host = this[_uri][$substring](this[_hostStart], this[_portStart]);
      } else if (userInfo[$isNotEmpty] || port != null || isFile) {
        host = "";
      }
      let hasAuthority = host != null;
      if (path != null || pathSegments != null) {
        path = core._Uri._makePath(path, 0, core._stringOrNullLength(path), pathSegments, scheme, hasAuthority);
      } else {
        path = this[_uri][$substring](this[_pathStart], this[_queryStart]);
        if ((isFile || hasAuthority && !path[$isEmpty]) && !path[$startsWith]("/")) {
          path = "/" + dart.notNull(path);
        }
      }
      if (query != null || queryParameters != null) {
        query = core._Uri._makeQuery(query, 0, core._stringOrNullLength(query), queryParameters);
      } else if (dart.notNull(this[_queryStart]) < dart.notNull(this[_fragmentStart])) {
        query = this[_uri][$substring](dart.notNull(this[_queryStart]) + 1, this[_fragmentStart]);
      }
      if (fragment != null) {
        fragment = core._Uri._makeFragment(fragment, 0, fragment.length);
      } else if (dart.notNull(this[_fragmentStart]) < this[_uri].length) {
        fragment = this[_uri][$substring](dart.notNull(this[_fragmentStart]) + 1);
      }
      return new core._Uri._internal(scheme, userInfo, host, port, path, query, fragment);
    }
    resolve(reference) {
      return this.resolveUri(core.Uri.parse(reference));
    }
    resolveUri(reference) {
      if (core._SimpleUri.is(reference)) {
        return this[_simpleMerge](this, reference);
      }
      return this[_toNonSimple]().resolveUri(reference);
    }
    [_simpleMerge](base, ref) {
      if (dart.test(ref.hasScheme)) return ref;
      if (dart.test(ref.hasAuthority)) {
        if (!dart.test(base.hasScheme)) return ref;
        let isSimple = true;
        if (dart.test(base[_isFile])) {
          isSimple = !dart.test(ref.hasEmptyPath);
        } else if (dart.test(base[_isHttp])) {
          isSimple = !dart.test(ref[_isPort]("80"));
        } else if (dart.test(base[_isHttps])) {
          isSimple = !dart.test(ref[_isPort]("443"));
        }
        if (isSimple) {
          let delta = dart.notNull(base[_schemeEnd]) + 1;
          let newUri = base[_uri][$substring](0, dart.notNull(base[_schemeEnd]) + 1) + ref[_uri][$substring](dart.notNull(ref[_schemeEnd]) + 1);
          return new core._SimpleUri.new(newUri, base[_schemeEnd], dart.notNull(ref[_hostStart]) + delta, dart.notNull(ref[_portStart]) + delta, dart.notNull(ref[_pathStart]) + delta, dart.notNull(ref[_queryStart]) + delta, dart.notNull(ref[_fragmentStart]) + delta, base[_schemeCache]);
        } else {
          return this[_toNonSimple]().resolveUri(ref);
        }
      }
      if (dart.test(ref.hasEmptyPath)) {
        if (dart.test(ref.hasQuery)) {
          let delta = dart.notNull(base[_queryStart]) - dart.notNull(ref[_queryStart]);
          let newUri = base[_uri][$substring](0, base[_queryStart]) + ref[_uri][$substring](ref[_queryStart]);
          return new core._SimpleUri.new(newUri, base[_schemeEnd], base[_hostStart], base[_portStart], base[_pathStart], dart.notNull(ref[_queryStart]) + delta, dart.notNull(ref[_fragmentStart]) + delta, base[_schemeCache]);
        }
        if (dart.test(ref.hasFragment)) {
          let delta = dart.notNull(base[_fragmentStart]) - dart.notNull(ref[_fragmentStart]);
          let newUri = base[_uri][$substring](0, base[_fragmentStart]) + ref[_uri][$substring](ref[_fragmentStart]);
          return new core._SimpleUri.new(newUri, base[_schemeEnd], base[_hostStart], base[_portStart], base[_pathStart], base[_queryStart], dart.notNull(ref[_fragmentStart]) + delta, base[_schemeCache]);
        }
        return base.removeFragment();
      }
      if (dart.test(ref.hasAbsolutePath)) {
        let delta = dart.notNull(base[_pathStart]) - dart.notNull(ref[_pathStart]);
        let newUri = base[_uri][$substring](0, base[_pathStart]) + ref[_uri][$substring](ref[_pathStart]);
        return new core._SimpleUri.new(newUri, base[_schemeEnd], base[_hostStart], base[_portStart], base[_pathStart], dart.notNull(ref[_queryStart]) + delta, dart.notNull(ref[_fragmentStart]) + delta, base[_schemeCache]);
      }
      if (dart.test(base.hasEmptyPath) && dart.test(base.hasAuthority)) {
        let refStart = ref[_pathStart];
        while (ref[_uri][$startsWith]("../", refStart)) {
          refStart = dart.notNull(refStart) + 3;
        }
        let delta = dart.notNull(base[_pathStart]) - dart.notNull(refStart) + 1;
        let newUri = base[_uri][$substring](0, base[_pathStart]) + "/" + ref[_uri][$substring](refStart);
        return new core._SimpleUri.new(newUri, base[_schemeEnd], base[_hostStart], base[_portStart], base[_pathStart], dart.notNull(ref[_queryStart]) + delta, dart.notNull(ref[_fragmentStart]) + delta, base[_schemeCache]);
      }
      let baseUri = base[_uri];
      let refUri = ref[_uri];
      let baseStart = base[_pathStart];
      let baseEnd = base[_queryStart];
      while (baseUri[$startsWith]("../", baseStart)) {
        baseStart = dart.notNull(baseStart) + 3;
      }
      let refStart = ref[_pathStart];
      let refEnd = ref[_queryStart];
      let backCount = 0;
      while (dart.notNull(refStart) + 3 <= dart.notNull(refEnd) && refUri[$startsWith]("../", refStart)) {
        refStart = dart.notNull(refStart) + 3;
        backCount = backCount + 1;
      }
      let insert = "";
      while (dart.notNull(baseEnd) > dart.notNull(baseStart)) {
        baseEnd = dart.notNull(baseEnd) - 1;
        let char = baseUri[$codeUnitAt](baseEnd);
        if (char === 47) {
          insert = "/";
          if (backCount === 0) break;
          backCount--;
        }
      }
      if (baseEnd == baseStart && !dart.test(base.hasScheme) && !dart.test(base.hasAbsolutePath)) {
        insert = "";
        refStart = dart.notNull(refStart) - backCount * 3;
      }
      let delta = dart.notNull(baseEnd) - dart.notNull(refStart) + insert.length;
      let newUri = base[_uri][$substring](0, baseEnd) + insert + ref[_uri][$substring](refStart);
      return new core._SimpleUri.new(newUri, base[_schemeEnd], base[_hostStart], base[_portStart], base[_pathStart], dart.notNull(ref[_queryStart]) + delta, dart.notNull(ref[_fragmentStart]) + delta, base[_schemeCache]);
    }
    toFilePath(opts) {
      let windows = opts && 'windows' in opts ? opts.windows : null;
      if (dart.notNull(this[_schemeEnd]) >= 0 && !dart.test(this[_isFile])) {
        dart.throw(new core.UnsupportedError.new("Cannot extract a file path from a " + dart.str(this.scheme) + " URI"));
      }
      if (dart.notNull(this[_queryStart]) < this[_uri].length) {
        if (dart.notNull(this[_queryStart]) < dart.notNull(this[_fragmentStart])) {
          dart.throw(new core.UnsupportedError.new("Cannot extract a file path from a URI with a query component"));
        }
        dart.throw(new core.UnsupportedError.new("Cannot extract a file path from a URI with a fragment component"));
      }
      let t = windows;
      t == null ? windows = core._Uri._isWindows : t;
      return dart.test(windows) ? core._Uri._toWindowsFilePath(this) : this[_toFilePath]();
    }
    [_toFilePath]() {
      if (dart.notNull(this[_hostStart]) < dart.notNull(this[_portStart])) {
        dart.throw(new core.UnsupportedError.new("Cannot extract a non-Windows file path from a file URI " + "with an authority"));
      }
      return this.path;
    }
    get data() {
      if (!(this.scheme !== "data")) dart.assertFailed();
      return null;
    }
    get hashCode() {
      let t = this[_hashCodeCache];
      return t == null ? this[_hashCodeCache] = dart.hashCode(this[_uri]) : t;
    }
    _equals(other) {
      if (this === other) return true;
      return core.Uri.is(other) && this[_uri] == dart.toString(other);
    }
    [_toNonSimple]() {
      return new core._Uri._internal(this.scheme, this.userInfo, dart.test(this.hasAuthority) ? this.host : null, dart.test(this.hasPort) ? this.port : null, this.path, dart.test(this.hasQuery) ? this.query : null, dart.test(this.hasFragment) ? this.fragment : null);
    }
    toString() {
      return this[_uri];
    }
  };
  (core._SimpleUri.new = function(uri, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, schemeCache) {
    this[_hashCodeCache] = null;
    this[_uri] = uri;
    this[_schemeEnd] = schemeEnd;
    this[_hostStart] = hostStart;
    this[_portStart] = portStart;
    this[_pathStart] = pathStart;
    this[_queryStart] = queryStart;
    this[_fragmentStart] = fragmentStart;
    this[_schemeCache] = schemeCache;
  }).prototype = core._SimpleUri.prototype;
  dart.addTypeTests(core._SimpleUri);
  core._SimpleUri[dart.implements] = () => [core.Uri];
  dart.setMethodSignature(core._SimpleUri, () => ({
    __proto__: dart.getMethods(core._SimpleUri.__proto__),
    [_isScheme]: dart.fnType(core.bool, [core.String]),
    isScheme: dart.fnType(core.bool, [core.String]),
    [_isPort]: dart.fnType(core.bool, [core.String]),
    normalizePath: dart.fnType(core.Uri, []),
    removeFragment: dart.fnType(core.Uri, []),
    replace: dart.fnType(core.Uri, [], {scheme: core.String, userInfo: core.String, host: core.String, port: core.int, path: core.String, pathSegments: core.Iterable$(core.String), query: core.String, queryParameters: core.Map$(core.String, dart.dynamic), fragment: core.String}),
    resolve: dart.fnType(core.Uri, [core.String]),
    resolveUri: dart.fnType(core.Uri, [core.Uri]),
    [_simpleMerge]: dart.fnType(core.Uri, [core._SimpleUri, core._SimpleUri]),
    toFilePath: dart.fnType(core.String, [], {windows: core.bool}),
    [_toFilePath]: dart.fnType(core.String, []),
    _equals: dart.fnType(core.bool, [core.Object]),
    [$_equals]: dart.fnType(core.bool, [core.Object]),
    [_toNonSimple]: dart.fnType(core.Uri, [])
  }));
  dart.setGetterSignature(core._SimpleUri, () => ({
    __proto__: dart.getGetters(core._SimpleUri.__proto__),
    hasScheme: core.bool,
    hasAuthority: core.bool,
    hasUserInfo: core.bool,
    hasPort: core.bool,
    hasQuery: core.bool,
    hasFragment: core.bool,
    [_isFile]: core.bool,
    [_isHttp]: core.bool,
    [_isHttps]: core.bool,
    [_isPackage]: core.bool,
    hasAbsolutePath: core.bool,
    hasEmptyPath: core.bool,
    isAbsolute: core.bool,
    scheme: core.String,
    authority: core.String,
    userInfo: core.String,
    host: core.String,
    port: core.int,
    path: core.String,
    query: core.String,
    fragment: core.String,
    origin: core.String,
    pathSegments: core.List$(core.String),
    queryParameters: core.Map$(core.String, core.String),
    queryParametersAll: core.Map$(core.String, core.List$(core.String)),
    data: core.UriData
  }));
  dart.setFieldSignature(core._SimpleUri, () => ({
    __proto__: dart.getFields(core._SimpleUri.__proto__),
    [_uri]: dart.finalFieldType(core.String),
    [_schemeEnd]: dart.finalFieldType(core.int),
    [_hostStart]: dart.finalFieldType(core.int),
    [_portStart]: dart.finalFieldType(core.int),
    [_pathStart]: dart.finalFieldType(core.int),
    [_queryStart]: dart.finalFieldType(core.int),
    [_fragmentStart]: dart.finalFieldType(core.int),
    [_schemeCache]: dart.fieldType(core.String),
    [_hashCodeCache]: dart.fieldType(core.int)
  }));
  dart.defineExtensionMethods(core._SimpleUri, ['_equals', 'toString']);
  dart.defineExtensionAccessors(core._SimpleUri, ['hashCode']);
  const _data$ = Symbol('_data');
  core._DataUri = class _DataUri extends core._Uri {
    get data() {
      return this[_data$];
    }
  };
  (core._DataUri.new = function(data, path, query) {
    this[_data$] = data;
    core._DataUri.__proto__._internal.call(this, "data", null, null, null, path, query, null);
  }).prototype = core._DataUri.prototype;
  dart.addTypeTests(core._DataUri);
  dart.setFieldSignature(core._DataUri, () => ({
    __proto__: dart.getFields(core._DataUri.__proto__),
    [_data$]: dart.finalFieldType(core.UriData)
  }));
  core._startsWithData = function(text, start) {
    let delta = ((text[$codeUnitAt](dart.notNull(start) + 4) ^ 58) >>> 0) * 3;
    delta = (delta | text[$codeUnitAt](start) ^ 100) >>> 0;
    delta = (delta | text[$codeUnitAt](dart.notNull(start) + 1) ^ 97) >>> 0;
    delta = (delta | text[$codeUnitAt](dart.notNull(start) + 2) ^ 116) >>> 0;
    delta = (delta | text[$codeUnitAt](dart.notNull(start) + 3) ^ 97) >>> 0;
    return delta;
  };
  core._stringOrNullLength = function(s) {
    return s == null ? 0 : s.length;
  };
  developer.debugger = function(opts) {
    let when = opts && 'when' in opts ? opts.when : true;
    let message = opts && 'message' in opts ? opts.message : null;
    if (dart.test(when)) {
      debugger;
    }
    return when;
  };
  developer.inspect = function(object) {
    console.debug("dart.developer.inspect", object);
    return object;
  };
  developer.log = function(message, opts) {
    let time = opts && 'time' in opts ? opts.time : null;
    let sequenceNumber = opts && 'sequenceNumber' in opts ? opts.sequenceNumber : null;
    let level = opts && 'level' in opts ? opts.level : 0;
    let name = opts && 'name' in opts ? opts.name : "";
    let zone = opts && 'zone' in opts ? opts.zone : null;
    let error = opts && 'error' in opts ? opts.error : null;
    let stackTrace = opts && 'stackTrace' in opts ? opts.stackTrace : null;
    let items = {message: message, name: name, level: level};
    if (time != null) items.time = time;
    if (sequenceNumber != null) {
      items.sequenceNumber = sequenceNumber;
    }
    if (zone != null) items.zone = zone;
    if (error != null) items.error = error;
    if (stackTrace != null) items.stackTrace = stackTrace;
    console.debug("dart.developer.log", items);
  };
  dart.defineLazy(developer, {
    /*developer._extensions*/get _extensions() {
      return new (IdentityMapOfString$StringAndMapOfString$StringToFutureOfServiceExtensionResponse()).new();
    },
    /*developer._clockValue*/get _clockValue() {
      return 0;
    },
    set _clockValue(_) {}
  });
  developer._FakeUserTag = class _FakeUserTag extends core.Object {
    static new(label) {
      let existingTag = developer._FakeUserTag._instances[$_get](label);
      if (existingTag != null) {
        return developer._FakeUserTag._check(existingTag);
      }
      if (developer._FakeUserTag._instances[$length] === developer.UserTag.MAX_USER_TAGS) {
        dart.throw(new core.UnsupportedError.new("UserTag instance limit (" + dart.str(developer.UserTag.MAX_USER_TAGS) + ") reached."));
      }
      let instance = new developer._FakeUserTag.real(label);
      developer._FakeUserTag._instances[$_set](label, instance);
      return instance;
    }
    makeCurrent() {
      let old = developer._currentTag;
      developer._currentTag = this;
      return old;
    }
  };
  (developer._FakeUserTag.real = function(label) {
    this.label = label;
  }).prototype = developer._FakeUserTag.prototype;
  dart.addTypeTests(developer._FakeUserTag);
  developer._FakeUserTag[dart.implements] = () => [developer.UserTag];
  dart.setMethodSignature(developer._FakeUserTag, () => ({
    __proto__: dart.getMethods(developer._FakeUserTag.__proto__),
    makeCurrent: dart.fnType(developer.UserTag, [])
  }));
  dart.setFieldSignature(developer._FakeUserTag, () => ({
    __proto__: dart.getFields(developer._FakeUserTag.__proto__),
    label: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(developer._FakeUserTag, {
    /*developer._FakeUserTag._instances*/get _instances() {
      return new _js_helper.LinkedMap.new();
    },
    set _instances(_) {},
    /*developer._FakeUserTag._defaultTag*/get _defaultTag() {
      return developer._FakeUserTag.new("Default");
    }
  });
  dart.defineLazy(developer, {
    /*developer._currentTag*/get _currentTag() {
      return developer._FakeUserTag._defaultTag;
    },
    set _currentTag(_) {}
  });
  const _result = Symbol('_result');
  const _errorCode = Symbol('_errorCode');
  const _errorDetail = Symbol('_errorDetail');
  const _isError = Symbol('_isError');
  const _toString = Symbol('_toString');
  developer.ServiceExtensionResponse = class ServiceExtensionResponse extends core.Object {
    static _errorCodeMessage(errorCode) {
      developer.ServiceExtensionResponse._validateErrorCode(errorCode);
      if (errorCode === -32602) {
        return "Invalid params";
      }
      return "Server error";
    }
    static _validateErrorCode(errorCode) {
      core.ArgumentError.checkNotNull(errorCode, "errorCode");
      if (errorCode === -32602) return;
      if (dart.notNull(errorCode) >= -32016 && dart.notNull(errorCode) <= -32000) {
        return;
      }
      dart.throw(new core.ArgumentError.value(errorCode, "errorCode", "Out of range"));
    }
    [_isError]() {
      return this[_errorCode] != null && this[_errorDetail] != null;
    }
    [_toString]() {
      if (this[_result] != null) {
        return this[_result];
      } else {
        if (!(this[_errorCode] != null)) dart.assertFailed();
        if (!(this[_errorDetail] != null)) dart.assertFailed();
        return convert.json.encode(new (IdentityMapOfString$Object()).from(["code", this[_errorCode], "message", developer.ServiceExtensionResponse._errorCodeMessage(this[_errorCode]), "data", new (IdentityMapOfString$String()).from(["details", this[_errorDetail]])]));
      }
    }
  };
  (developer.ServiceExtensionResponse.result = function(result) {
    this[_result] = result;
    this[_errorCode] = null;
    this[_errorDetail] = null;
    core.ArgumentError.checkNotNull(this[_result], "result");
  }).prototype = developer.ServiceExtensionResponse.prototype;
  (developer.ServiceExtensionResponse.error = function(errorCode, errorDetail) {
    this[_result] = null;
    this[_errorCode] = errorCode;
    this[_errorDetail] = errorDetail;
    developer.ServiceExtensionResponse._validateErrorCode(this[_errorCode]);
    core.ArgumentError.checkNotNull(this[_errorDetail], "errorDetail");
  }).prototype = developer.ServiceExtensionResponse.prototype;
  dart.addTypeTests(developer.ServiceExtensionResponse);
  dart.setMethodSignature(developer.ServiceExtensionResponse, () => ({
    __proto__: dart.getMethods(developer.ServiceExtensionResponse.__proto__),
    [_isError]: dart.fnType(core.bool, []),
    [_toString]: dart.fnType(core.String, [])
  }));
  dart.setFieldSignature(developer.ServiceExtensionResponse, () => ({
    __proto__: dart.getFields(developer.ServiceExtensionResponse.__proto__),
    [_result]: dart.finalFieldType(core.String),
    [_errorCode]: dart.finalFieldType(core.int),
    [_errorDetail]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(developer.ServiceExtensionResponse, {
    /*developer.ServiceExtensionResponse.kInvalidParams*/get kInvalidParams() {
      return -32602;
    },
    /*developer.ServiceExtensionResponse.kExtensionError*/get kExtensionError() {
      return -32000;
    },
    /*developer.ServiceExtensionResponse.kExtensionErrorMax*/get kExtensionErrorMax() {
      return -32000;
    },
    /*developer.ServiceExtensionResponse.kExtensionErrorMin*/get kExtensionErrorMin() {
      return -32016;
    },
    /*developer.ServiceExtensionResponse.invalidParams*/get invalidParams() {
      return -32602;
    },
    /*developer.ServiceExtensionResponse.extensionError*/get extensionError() {
      return -32000;
    },
    /*developer.ServiceExtensionResponse.extensionErrorMax*/get extensionErrorMax() {
      return -32000;
    },
    /*developer.ServiceExtensionResponse.extensionErrorMin*/get extensionErrorMin() {
      return -32016;
    }
  });
  developer.registerExtension = function(method, handler) {
    core.ArgumentError.checkNotNull(method, "method");
    if (!method[$startsWith]("ext.")) {
      dart.throw(new core.ArgumentError.value(method, "method", "Must begin with ext."));
    }
    if (developer._lookupExtension(method) != null) {
      dart.throw(new core.ArgumentError.new("Extension already registered: " + dart.str(method)));
    }
    core.ArgumentError.checkNotNull(handler, "handler");
    developer._registerExtension(method, handler);
  };
  developer.postEvent = function(eventKind, eventData) {
    core.ArgumentError.checkNotNull(eventKind, "eventKind");
    core.ArgumentError.checkNotNull(eventData, "eventData");
    let eventDataAsString = convert.json.encode(eventData);
    developer._postEvent(eventKind, eventDataAsString);
  };
  developer._postEvent = function(eventKind, eventData) {
    console.debug("dart.developer.postEvent", eventKind, eventData);
  };
  developer._lookupExtension = function(method) {
    return developer._extensions[$_get](method);
  };
  developer._registerExtension = function(method, handler) {
    developer._extensions[$_set](method, handler);
    console.debug("dart.developer.registerExtension", method);
  };
  developer.UserTag = class UserTag extends core.Object {
    static new(label) {
      return developer._FakeUserTag.new(label);
    }
    static get defaultTag() {
      return developer._FakeUserTag._defaultTag;
    }
  };
  (developer.UserTag[dart.mixinNew] = function() {
  }).prototype = developer.UserTag.prototype;
  dart.addTypeTests(developer.UserTag);
  dart.defineLazy(developer.UserTag, {
    /*developer.UserTag.MAX_USER_TAGS*/get MAX_USER_TAGS() {
      return 64;
    }
  });
  developer.getCurrentTag = function() {
    return developer._currentTag;
  };
  developer.Metric = class Metric extends core.Object {
    get name() {
      return this[name$2];
    }
    set name(value) {
      super.name = value;
    }
    get description() {
      return this[description$];
    }
    set description(value) {
      super.description = value;
    }
  };
  (developer.Metric.new = function(name, description) {
    this[name$2] = name;
    this[description$] = description;
    if (this.name === "vm" || this.name[$contains]("/")) {
      dart.throw(new core.ArgumentError.new("Invalid Metric name."));
    }
  }).prototype = developer.Metric.prototype;
  dart.addTypeTests(developer.Metric);
  const name$2 = Symbol("Metric.name");
  const description$ = Symbol("Metric.description");
  dart.setFieldSignature(developer.Metric, () => ({
    __proto__: dart.getFields(developer.Metric.__proto__),
    name: dart.finalFieldType(core.String),
    description: dart.finalFieldType(core.String)
  }));
  const _value$1 = Symbol('_value');
  const _toJSON = Symbol('_toJSON');
  developer.Gauge = class Gauge extends developer.Metric {
    get min() {
      return this[min$];
    }
    set min(value) {
      super.min = value;
    }
    get max() {
      return this[max$];
    }
    set max(value) {
      super.max = value;
    }
    get value() {
      return this[_value$1];
    }
    set value(v) {
      if (dart.notNull(v) < dart.notNull(this.min)) {
        v = this.min;
      } else if (dart.notNull(v) > dart.notNull(this.max)) {
        v = this.max;
      }
      this[_value$1] = v;
    }
    [_toJSON]() {
      let map = new (IdentityMapOfString$Object()).from(["type", "Gauge", "id", "metrics/" + dart.str(this.name), "name", this.name, "description", this.description, "value", this.value, "min", this.min, "max", this.max]);
      return map;
    }
  };
  (developer.Gauge.new = function(name, description, min, max) {
    this[_value$1] = null;
    this[min$] = min;
    this[max$] = max;
    developer.Gauge.__proto__.new.call(this, name, description);
    core.ArgumentError.checkNotNull(this.min, "min");
    core.ArgumentError.checkNotNull(this.max, "max");
    if (!(dart.notNull(this.min) < dart.notNull(this.max))) dart.throw(new core.ArgumentError.new("min must be less than max"));
    this[_value$1] = this.min;
  }).prototype = developer.Gauge.prototype;
  dart.addTypeTests(developer.Gauge);
  const min$ = Symbol("Gauge.min");
  const max$ = Symbol("Gauge.max");
  dart.setMethodSignature(developer.Gauge, () => ({
    __proto__: dart.getMethods(developer.Gauge.__proto__),
    [_toJSON]: dart.fnType(core.Map, [])
  }));
  dart.setGetterSignature(developer.Gauge, () => ({
    __proto__: dart.getGetters(developer.Gauge.__proto__),
    value: core.double
  }));
  dart.setSetterSignature(developer.Gauge, () => ({
    __proto__: dart.getSetters(developer.Gauge.__proto__),
    value: core.double
  }));
  dart.setFieldSignature(developer.Gauge, () => ({
    __proto__: dart.getFields(developer.Gauge.__proto__),
    min: dart.finalFieldType(core.double),
    max: dart.finalFieldType(core.double),
    [_value$1]: dart.fieldType(core.double)
  }));
  developer.Counter = class Counter extends developer.Metric {
    get value() {
      return this[_value$1];
    }
    set value(v) {
      this[_value$1] = v;
    }
    [_toJSON]() {
      let map = new (IdentityMapOfString$Object()).from(["type", "Counter", "id", "metrics/" + dart.str(this.name), "name", this.name, "description", this.description, "value", this.value]);
      return map;
    }
  };
  (developer.Counter.new = function(name, description) {
    this[_value$1] = 0.0;
    developer.Counter.__proto__.new.call(this, name, description);
  }).prototype = developer.Counter.prototype;
  dart.addTypeTests(developer.Counter);
  dart.setMethodSignature(developer.Counter, () => ({
    __proto__: dart.getMethods(developer.Counter.__proto__),
    [_toJSON]: dart.fnType(core.Map, [])
  }));
  dart.setGetterSignature(developer.Counter, () => ({
    __proto__: dart.getGetters(developer.Counter.__proto__),
    value: core.double
  }));
  dart.setSetterSignature(developer.Counter, () => ({
    __proto__: dart.getSetters(developer.Counter.__proto__),
    value: core.double
  }));
  dart.setFieldSignature(developer.Counter, () => ({
    __proto__: dart.getFields(developer.Counter.__proto__),
    [_value$1]: dart.fieldType(core.double)
  }));
  developer.Metrics = class Metrics extends core.Object {
    static register(metric) {
      core.ArgumentError.checkNotNull(metric, "metric");
      if (developer.Metrics._metrics[$_get](metric.name) != null) {
        dart.throw(new core.ArgumentError.new("Registered metrics have unique names"));
      }
      developer.Metrics._metrics[$_set](metric.name, metric);
    }
    static deregister(metric) {
      core.ArgumentError.checkNotNull(metric, "metric");
      developer.Metrics._metrics[$remove](metric.name);
    }
    static _printMetric(id) {
      let metric = developer.Metrics._metrics[$_get](id);
      if (metric == null) {
        return null;
      }
      return convert.json.encode(metric[_toJSON]());
    }
    static _printMetrics() {
      let metrics = [];
      for (let metric of developer.Metrics._metrics[$values]) {
        metrics[$add](metric[_toJSON]());
      }
      let map = new (IdentityMapOfString$Object()).from(["type", "MetricList", "metrics", metrics]);
      return convert.json.encode(map);
    }
  };
  (developer.Metrics.new = function() {
  }).prototype = developer.Metrics.prototype;
  dart.addTypeTests(developer.Metrics);
  dart.defineLazy(developer.Metrics, {
    /*developer.Metrics._metrics*/get _metrics() {
      return new (IdentityMapOfString$Metric()).new();
    }
  });
  developer.ServiceProtocolInfo = class ServiceProtocolInfo extends core.Object {
    get majorVersion() {
      return this[majorVersion];
    }
    set majorVersion(value) {
      super.majorVersion = value;
    }
    get minorVersion() {
      return this[minorVersion];
    }
    set minorVersion(value) {
      super.minorVersion = value;
    }
    get serverUri() {
      return this[serverUri$];
    }
    set serverUri(value) {
      super.serverUri = value;
    }
    toString() {
      if (this.serverUri != null) {
        return "Dart VM Service Protocol v" + dart.str(this.majorVersion) + "." + dart.str(this.minorVersion) + " " + ("listening on " + dart.str(this.serverUri));
      } else {
        return "Dart VM Service Protocol v" + dart.str(this.majorVersion) + "." + dart.str(this.minorVersion);
      }
    }
  };
  (developer.ServiceProtocolInfo.new = function(serverUri) {
    this[majorVersion] = developer._getServiceMajorVersion();
    this[minorVersion] = developer._getServiceMinorVersion();
    this[serverUri$] = serverUri;
  }).prototype = developer.ServiceProtocolInfo.prototype;
  dart.addTypeTests(developer.ServiceProtocolInfo);
  const majorVersion = Symbol("ServiceProtocolInfo.majorVersion");
  const minorVersion = Symbol("ServiceProtocolInfo.minorVersion");
  const serverUri$ = Symbol("ServiceProtocolInfo.serverUri");
  dart.setFieldSignature(developer.ServiceProtocolInfo, () => ({
    __proto__: dart.getFields(developer.ServiceProtocolInfo.__proto__),
    majorVersion: dart.finalFieldType(core.int),
    minorVersion: dart.finalFieldType(core.int),
    serverUri: dart.finalFieldType(core.Uri)
  }));
  dart.defineExtensionMethods(developer.ServiceProtocolInfo, ['toString']);
  developer.Service = class Service extends core.Object {
    static getInfo() {
      return async.async(developer.ServiceProtocolInfo, function* getInfo() {
        let receivePort = isolate.RawReceivePort.new();
        let uriCompleter = CompleterOfUri().new();
        receivePort.handler = dart.fn(uri => uriCompleter.complete(uri), UriTovoid());
        developer._getServerInfo(receivePort.sendPort);
        let uri = (yield uriCompleter.future);
        receivePort.close();
        return new developer.ServiceProtocolInfo.new(uri);
      });
    }
    static controlWebServer(opts) {
      return async.async(developer.ServiceProtocolInfo, function* controlWebServer() {
        let enable = opts && 'enable' in opts ? opts.enable : false;
        core.ArgumentError.checkNotNull(enable, "enable");
        let receivePort = isolate.RawReceivePort.new();
        let uriCompleter = CompleterOfUri().new();
        receivePort.handler = dart.fn(uri => uriCompleter.complete(uri), UriTovoid());
        developer._webServerControl(receivePort.sendPort, enable);
        let uri = (yield uriCompleter.future);
        receivePort.close();
        return new developer.ServiceProtocolInfo.new(uri);
      });
    }
    static getIsolateID(isolate) {
      core.ArgumentError.checkNotNull(isolate, "isolate");
      return developer._getIsolateIDFromSendPort(isolate.controlPort);
    }
  };
  (developer.Service.new = function() {
  }).prototype = developer.Service.prototype;
  dart.addTypeTests(developer.Service);
  developer._getServerInfo = function(sendPort) {
    sendPort.send(null);
  };
  developer._webServerControl = function(sendPort, enable) {
    sendPort.send(null);
  };
  developer._getServiceMajorVersion = function() {
    return 0;
  };
  developer._getServiceMinorVersion = function() {
    return 0;
  };
  developer._getIsolateIDFromSendPort = function(sendPort) {
    return null;
  };
  dart.defineLazy(developer, {
    /*developer._isProduct*/get _isProduct() {
      return false;
    }
  });
  const _type$ = Symbol('_type');
  developer.Flow = class Flow extends core.Object {
    get id() {
      return this[id$];
    }
    set id(value) {
      super.id = value;
    }
    static begin(opts) {
      let id = opts && 'id' in opts ? opts.id : null;
      return new developer.Flow.__(9, id != null ? id : developer._getNextAsyncId());
    }
    static step(id) {
      return new developer.Flow.__(10, id);
    }
    static end(id) {
      return new developer.Flow.__(11, id);
    }
  };
  (developer.Flow.__ = function(type, id) {
    this[_type$] = type;
    this[id$] = id;
  }).prototype = developer.Flow.prototype;
  dart.addTypeTests(developer.Flow);
  const id$ = Symbol("Flow.id");
  dart.setFieldSignature(developer.Flow, () => ({
    __proto__: dart.getFields(developer.Flow.__proto__),
    [_type$]: dart.finalFieldType(core.int),
    id: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(developer.Flow, {
    /*developer.Flow._begin*/get _begin() {
      return 9;
    },
    /*developer.Flow._step*/get _step() {
      return 10;
    },
    /*developer.Flow._end*/get _end() {
      return 11;
    }
  });
  const _arguments$ = Symbol('_arguments');
  developer.Timeline = class Timeline extends core.Object {
    static startSync(name, opts) {
      let arguments$0 = opts && 'arguments' in opts ? opts.arguments : null;
      let flow = opts && 'flow' in opts ? opts.flow : null;
      if (dart.test(developer._isProduct)) return;
      core.ArgumentError.checkNotNull(name, "name");
      if (!dart.test(developer._isDartStreamEnabled())) {
        developer.Timeline._stack[$add](null);
        return;
      }
      let block = new developer._SyncBlock.__(name, developer._getTraceClock(), developer._getThreadCpuClock());
      if (arguments$0 != null) {
        block[_arguments$] = arguments$0;
      }
      if (flow != null) {
        block.flow = flow;
      }
      developer.Timeline._stack[$add](block);
    }
    static finishSync() {
      if (dart.test(developer._isProduct)) {
        return;
      }
      if (developer.Timeline._stack[$length] === 0) {
        dart.throw(new core.StateError.new("Uneven calls to startSync and finishSync"));
      }
      let block = developer.Timeline._stack[$removeLast]();
      if (block == null) {
        return;
      }
      block.finish();
    }
    static instantSync(name, opts) {
      let arguments$0 = opts && 'arguments' in opts ? opts.arguments : null;
      if (dart.test(developer._isProduct)) return;
      core.ArgumentError.checkNotNull(name, "name");
      if (!dart.test(developer._isDartStreamEnabled())) {
        return;
      }
      let instantArguments = null;
      if (arguments$0 != null) {
        instantArguments = core.Map.from(arguments$0);
      }
      developer._reportInstantEvent(developer._getTraceClock(), "Dart", name, developer._argumentsAsJson(instantArguments));
    }
    static timeSync(name, func, opts) {
      let arguments$0 = opts && 'arguments' in opts ? opts.arguments : null;
      let flow = opts && 'flow' in opts ? opts.flow : null;
      developer.Timeline.startSync(name, {arguments: arguments$0, flow: flow});
      try {
        return func();
      } finally {
        developer.Timeline.finishSync();
      }
    }
    static get now() {
      return developer._getTraceClock();
    }
  };
  (developer.Timeline.new = function() {
  }).prototype = developer.Timeline.prototype;
  dart.addTypeTests(developer.Timeline);
  dart.defineLazy(developer.Timeline, {
    /*developer.Timeline._stack*/get _stack() {
      return JSArrayOf_SyncBlock().of([]);
    }
  });
  const _taskId = Symbol('_taskId');
  const _stack = Symbol('_stack');
  const _start$1 = Symbol('_start');
  const _finish = Symbol('_finish');
  developer.TimelineTask = class TimelineTask extends core.Object {
    start(name, opts) {
      let arguments$0 = opts && 'arguments' in opts ? opts.arguments : null;
      if (dart.test(developer._isProduct)) return;
      core.ArgumentError.checkNotNull(name, "name");
      let block = new developer._AsyncBlock.__(name, this[_taskId]);
      if (arguments$0 != null) {
        block[_arguments$] = arguments$0;
      }
      this[_stack][$add](block);
      block[_start$1]();
    }
    instant(name, opts) {
      let arguments$0 = opts && 'arguments' in opts ? opts.arguments : null;
      if (dart.test(developer._isProduct)) return;
      core.ArgumentError.checkNotNull(name, "name");
      let instantArguments = null;
      if (arguments$0 != null) {
        instantArguments = core.Map.from(arguments$0);
      }
      developer._reportTaskEvent(developer._getTraceClock(), this[_taskId], "n", "Dart", name, developer._argumentsAsJson(instantArguments));
    }
    finish() {
      if (dart.test(developer._isProduct)) {
        return;
      }
      if (this[_stack][$length] === 0) {
        dart.throw(new core.StateError.new("Uneven calls to start and finish"));
      }
      let block = this[_stack][$removeLast]();
      block[_finish]();
    }
    pass() {
      if (dart.notNull(this[_stack][$length]) > 0) {
        dart.throw(new core.StateError.new("You cannot pass a TimelineTask without finishing all started " + "operations"));
      }
      let r = this[_taskId];
      return r;
    }
  };
  (developer.TimelineTask.new = function() {
    this[_stack] = JSArrayOf_AsyncBlock().of([]);
    this[_taskId] = developer._getNextAsyncId();
  }).prototype = developer.TimelineTask.prototype;
  (developer.TimelineTask.withTaskId = function(taskId) {
    this[_stack] = JSArrayOf_AsyncBlock().of([]);
    this[_taskId] = taskId;
    core.ArgumentError.checkNotNull(taskId, "taskId");
  }).prototype = developer.TimelineTask.prototype;
  dart.addTypeTests(developer.TimelineTask);
  dart.setMethodSignature(developer.TimelineTask, () => ({
    __proto__: dart.getMethods(developer.TimelineTask.__proto__),
    start: dart.fnType(dart.void, [core.String], {arguments: core.Map}),
    instant: dart.fnType(dart.void, [core.String], {arguments: core.Map}),
    finish: dart.fnType(dart.void, []),
    pass: dart.fnType(core.int, [])
  }));
  dart.setFieldSignature(developer.TimelineTask, () => ({
    __proto__: dart.getFields(developer.TimelineTask.__proto__),
    [_taskId]: dart.finalFieldType(core.int),
    [_stack]: dart.finalFieldType(ListOf_AsyncBlock())
  }));
  developer._AsyncBlock = class _AsyncBlock extends core.Object {
    [_start$1]() {
      developer._reportTaskEvent(developer._getTraceClock(), this[_taskId], "b", this.category, this.name, developer._argumentsAsJson(this[_arguments$]));
    }
    [_finish]() {
      developer._reportTaskEvent(developer._getTraceClock(), this[_taskId], "e", this.category, this.name, developer._argumentsAsJson(null));
    }
  };
  (developer._AsyncBlock.__ = function(name, taskId) {
    this.category = "Dart";
    this[_arguments$] = null;
    this.name = name;
    this[_taskId] = taskId;
  }).prototype = developer._AsyncBlock.prototype;
  dart.addTypeTests(developer._AsyncBlock);
  dart.setMethodSignature(developer._AsyncBlock, () => ({
    __proto__: dart.getMethods(developer._AsyncBlock.__proto__),
    [_start$1]: dart.fnType(dart.void, []),
    [_finish]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(developer._AsyncBlock, () => ({
    __proto__: dart.getFields(developer._AsyncBlock.__proto__),
    category: dart.finalFieldType(core.String),
    name: dart.finalFieldType(core.String),
    [_taskId]: dart.finalFieldType(core.int),
    [_arguments$]: dart.fieldType(core.Map)
  }));
  const _startCpu = Symbol('_startCpu');
  const _flow = Symbol('_flow');
  developer._SyncBlock = class _SyncBlock extends core.Object {
    finish() {
      developer._reportCompleteEvent(this[_start$1], this[_startCpu], this.category, this.name, developer._argumentsAsJson(this[_arguments$]));
      if (this[_flow] != null) {
        developer._reportFlowEvent(this[_start$1], this[_startCpu], this.category, this.name, this[_flow][_type$], this[_flow].id, developer._argumentsAsJson(null));
      }
    }
    set flow(f) {
      this[_flow] = f;
    }
  };
  (developer._SyncBlock.__ = function(name, start, startCpu) {
    this.category = "Dart";
    this[_arguments$] = null;
    this[_flow] = null;
    this.name = name;
    this[_start$1] = start;
    this[_startCpu] = startCpu;
  }).prototype = developer._SyncBlock.prototype;
  dart.addTypeTests(developer._SyncBlock);
  dart.setMethodSignature(developer._SyncBlock, () => ({
    __proto__: dart.getMethods(developer._SyncBlock.__proto__),
    finish: dart.fnType(dart.void, [])
  }));
  dart.setSetterSignature(developer._SyncBlock, () => ({
    __proto__: dart.getSetters(developer._SyncBlock.__proto__),
    flow: developer.Flow
  }));
  dart.setFieldSignature(developer._SyncBlock, () => ({
    __proto__: dart.getFields(developer._SyncBlock.__proto__),
    category: dart.finalFieldType(core.String),
    name: dart.finalFieldType(core.String),
    [_arguments$]: dart.fieldType(core.Map),
    [_start$1]: dart.finalFieldType(core.int),
    [_startCpu]: dart.finalFieldType(core.int),
    [_flow]: dart.fieldType(developer.Flow)
  }));
  developer._argumentsAsJson = function(arguments$0) {
    if (arguments$0 == null || arguments$0[$length] === 0) {
      return "{}";
    }
    return convert.json.encode(arguments$0);
  };
  developer._isDartStreamEnabled = function() {
    return false;
  };
  developer._getNextAsyncId = function() {
    return 0;
  };
  developer._getTraceClock = function() {
    let x = developer._clockValue;
    developer._clockValue = dart.notNull(x) + 1;
    return x;
  };
  developer._getThreadCpuClock = function() {
    return -1;
  };
  developer._reportTaskEvent = function(start, taskId, phase, category, name, argumentsAsJson) {
  };
  developer._reportCompleteEvent = function(start, startCpu, category, name, argumentsAsJson) {
  };
  developer._reportFlowEvent = function(start, startCpu, category, name, type, id, argumentsAsJson) {
  };
  developer._reportInstantEvent = function(start, category, name, argumentsAsJson) {
  };
  io.BytesBuilder = class BytesBuilder extends core.Object {
    static new(opts) {
      let copy = opts && 'copy' in opts ? opts.copy : true;
      if (dart.test(copy)) {
        return new io._CopyingBytesBuilder.new();
      } else {
        return new io._BytesBuilder.new();
      }
    }
  };
  (io.BytesBuilder[dart.mixinNew] = function() {
  }).prototype = io.BytesBuilder.prototype;
  dart.addTypeTests(io.BytesBuilder);
  const _buffer$ = Symbol('_buffer');
  const _length$1 = Symbol('_length');
  const _grow$ = Symbol('_grow');
  io._CopyingBytesBuilder = class _CopyingBytesBuilder extends core.Object {
    add(bytes) {
      let bytesLength = bytes[$length];
      if (bytesLength === 0) return;
      let required = dart.notNull(this[_length$1]) + dart.notNull(bytesLength);
      if (dart.notNull(this[_buffer$][$length]) < required) {
        this[_grow$](required);
      }
      if (!(dart.notNull(this[_buffer$][$length]) >= required)) dart.assertFailed();
      if (typed_data.Uint8List.is(bytes)) {
        this[_buffer$][$setRange](this[_length$1], required, bytes);
      } else {
        for (let i = 0; i < dart.notNull(bytesLength); i++) {
          this[_buffer$][$_set](dart.notNull(this[_length$1]) + i, bytes[$_get](i));
        }
      }
      this[_length$1] = required;
    }
    addByte(byte) {
      if (this[_buffer$][$length] == this[_length$1]) {
        this[_grow$](this[_length$1]);
      }
      if (!(dart.notNull(this[_buffer$][$length]) > dart.notNull(this[_length$1]))) dart.assertFailed();
      this[_buffer$][$_set](this[_length$1], byte);
      this[_length$1] = dart.notNull(this[_length$1]) + 1;
    }
    [_grow$](required) {
      let newSize = dart.notNull(required) * 2;
      if (dart.notNull(newSize) < 1024) {
        newSize = 1024;
      } else {
        newSize = io._CopyingBytesBuilder._pow2roundup(newSize);
      }
      let newBuffer = typed_data.Uint8List.new(newSize);
      newBuffer[$setRange](0, this[_buffer$][$length], this[_buffer$]);
      this[_buffer$] = newBuffer;
    }
    takeBytes() {
      if (this[_length$1] === 0) return io._CopyingBytesBuilder._emptyList;
      let buffer = typed_data.Uint8List.view(this[_buffer$][$buffer], 0, this[_length$1]);
      this.clear();
      return buffer;
    }
    toBytes() {
      if (this[_length$1] === 0) return io._CopyingBytesBuilder._emptyList;
      return typed_data.Uint8List.fromList(typed_data.Uint8List.view(this[_buffer$][$buffer], 0, this[_length$1]));
    }
    get length() {
      return this[_length$1];
    }
    get isEmpty() {
      return this[_length$1] === 0;
    }
    get isNotEmpty() {
      return this[_length$1] !== 0;
    }
    clear() {
      this[_length$1] = 0;
      this[_buffer$] = io._CopyingBytesBuilder._emptyList;
    }
    static _pow2roundup(x) {
      if (!(dart.notNull(x) > 0)) dart.assertFailed();
      x = dart.notNull(x) - 1;
      x = (dart.notNull(x) | x[$rightShift](1)) >>> 0;
      x = (dart.notNull(x) | x[$rightShift](2)) >>> 0;
      x = (dart.notNull(x) | x[$rightShift](4)) >>> 0;
      x = (dart.notNull(x) | x[$rightShift](8)) >>> 0;
      x = (dart.notNull(x) | x[$rightShift](16)) >>> 0;
      return dart.notNull(x) + 1;
    }
  };
  (io._CopyingBytesBuilder.new = function(initialCapacity) {
    if (initialCapacity === void 0) initialCapacity = 0;
    this[_length$1] = 0;
    this[_buffer$] = dart.notNull(initialCapacity) <= 0 ? io._CopyingBytesBuilder._emptyList : typed_data.Uint8List.new(io._CopyingBytesBuilder._pow2roundup(initialCapacity));
  }).prototype = io._CopyingBytesBuilder.prototype;
  dart.addTypeTests(io._CopyingBytesBuilder);
  io._CopyingBytesBuilder[dart.implements] = () => [io.BytesBuilder];
  dart.setMethodSignature(io._CopyingBytesBuilder, () => ({
    __proto__: dart.getMethods(io._CopyingBytesBuilder.__proto__),
    add: dart.fnType(dart.void, [core.List$(core.int)]),
    addByte: dart.fnType(dart.void, [core.int]),
    [_grow$]: dart.fnType(dart.void, [core.int]),
    takeBytes: dart.fnType(core.List$(core.int), []),
    toBytes: dart.fnType(core.List$(core.int), []),
    clear: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(io._CopyingBytesBuilder, () => ({
    __proto__: dart.getGetters(io._CopyingBytesBuilder.__proto__),
    length: core.int,
    isEmpty: core.bool,
    isNotEmpty: core.bool
  }));
  dart.setFieldSignature(io._CopyingBytesBuilder, () => ({
    __proto__: dart.getFields(io._CopyingBytesBuilder.__proto__),
    [_length$1]: dart.fieldType(core.int),
    [_buffer$]: dart.fieldType(typed_data.Uint8List)
  }));
  dart.defineLazy(io._CopyingBytesBuilder, {
    /*io._CopyingBytesBuilder._initSize*/get _initSize() {
      return 1024;
    },
    /*io._CopyingBytesBuilder._emptyList*/get _emptyList() {
      return typed_data.Uint8List.new(0);
    }
  });
  const _chunks = Symbol('_chunks');
  io._BytesBuilder = class _BytesBuilder extends core.Object {
    add(bytes) {
      let typedBytes = null;
      if (typed_data.Uint8List.is(bytes)) {
        typedBytes = bytes;
      } else {
        typedBytes = typed_data.Uint8List.fromList(bytes);
      }
      this[_chunks][$add](typedBytes);
      this[_length$1] = dart.notNull(this[_length$1]) + dart.notNull(typedBytes[$length]);
    }
    addByte(byte) {
      this[_chunks][$add]((() => {
        let _ = typed_data.Uint8List.new(1);
        _[$_set](0, byte);
        return _;
      })());
      this[_length$1] = dart.notNull(this[_length$1]) + 1;
    }
    takeBytes() {
      if (this[_length$1] === 0) return io._CopyingBytesBuilder._emptyList;
      if (this[_chunks][$length] === 1) {
        let buffer = this[_chunks][$_get](0);
        this.clear();
        return buffer;
      }
      let buffer = typed_data.Uint8List.new(this[_length$1]);
      let offset = 0;
      for (let chunk of this[_chunks]) {
        buffer[$setRange](offset, offset + dart.notNull(chunk[$length]), chunk);
        offset = offset + dart.notNull(chunk[$length]);
      }
      this.clear();
      return buffer;
    }
    toBytes() {
      if (this[_length$1] === 0) return io._CopyingBytesBuilder._emptyList;
      let buffer = typed_data.Uint8List.new(this[_length$1]);
      let offset = 0;
      for (let chunk of this[_chunks]) {
        buffer[$setRange](offset, offset + dart.notNull(chunk[$length]), chunk);
        offset = offset + dart.notNull(chunk[$length]);
      }
      return buffer;
    }
    get length() {
      return this[_length$1];
    }
    get isEmpty() {
      return this[_length$1] === 0;
    }
    get isNotEmpty() {
      return this[_length$1] !== 0;
    }
    clear() {
      this[_length$1] = 0;
      this[_chunks][$clear]();
    }
  };
  (io._BytesBuilder.new = function() {
    this[_length$1] = 0;
    this[_chunks] = JSArrayOfUint8List().of([]);
  }).prototype = io._BytesBuilder.prototype;
  dart.addTypeTests(io._BytesBuilder);
  io._BytesBuilder[dart.implements] = () => [io.BytesBuilder];
  dart.setMethodSignature(io._BytesBuilder, () => ({
    __proto__: dart.getMethods(io._BytesBuilder.__proto__),
    add: dart.fnType(dart.void, [core.List$(core.int)]),
    addByte: dart.fnType(dart.void, [core.int]),
    takeBytes: dart.fnType(core.List$(core.int), []),
    toBytes: dart.fnType(core.List$(core.int), []),
    clear: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(io._BytesBuilder, () => ({
    __proto__: dart.getGetters(io._BytesBuilder.__proto__),
    length: core.int,
    isEmpty: core.bool,
    isNotEmpty: core.bool
  }));
  dart.setFieldSignature(io._BytesBuilder, () => ({
    __proto__: dart.getFields(io._BytesBuilder.__proto__),
    [_length$1]: dart.fieldType(core.int),
    [_chunks]: dart.finalFieldType(ListOfUint8List())
  }));
  dart.defineLazy(io, {
    /*io._successResponse*/get _successResponse() {
      return 0;
    },
    /*io._illegalArgumentResponse*/get _illegalArgumentResponse() {
      return 1;
    },
    /*io._osErrorResponse*/get _osErrorResponse() {
      return 2;
    },
    /*io._fileClosedResponse*/get _fileClosedResponse() {
      return 3;
    },
    /*io._errorResponseErrorType*/get _errorResponseErrorType() {
      return 0;
    },
    /*io._osErrorResponseErrorCode*/get _osErrorResponseErrorCode() {
      return 1;
    },
    /*io._osErrorResponseMessage*/get _osErrorResponseMessage() {
      return 2;
    }
  });
  io._isErrorResponse = function(response) {
    return core.List.is(response) && !dart.equals(response[$_get](0), 0);
  };
  io._exceptionFromResponse = function(response, message, path) {
    if (!dart.test(io._isErrorResponse(response))) dart.assertFailed();
    switch (dart.dindex(response, 0)) {
      case 1:
      {
        return new core.ArgumentError.new(dart.str(message) + ": " + dart.str(path));
      }
      case 2:
      {
        let err = new io.OSError.new(core.String._check(dart.dindex(response, 2)), core.int._check(dart.dindex(response, 1)));
        return new io.FileSystemException.new(message, path, err);
      }
      case 3:
      {
        return new io.FileSystemException.new("File closed", path);
      }
      default:
      {
        return core.Exception.new("Unknown error");
      }
    }
  };
  io.IOException = class IOException extends core.Object {
    toString() {
      return "IOException";
    }
  };
  (io.IOException.new = function() {
  }).prototype = io.IOException.prototype;
  dart.addTypeTests(io.IOException);
  io.IOException[dart.implements] = () => [core.Exception];
  dart.defineExtensionMethods(io.IOException, ['toString']);
  io.OSError = class OSError extends core.Object {
    get message() {
      return this[message$7];
    }
    set message(value) {
      super.message = value;
    }
    get errorCode() {
      return this[errorCode$];
    }
    set errorCode(value) {
      super.errorCode = value;
    }
    toString() {
      let sb = new core.StringBuffer.new();
      sb.write("OS Error");
      if (this.message[$isNotEmpty]) {
        sb.write(": ");
        sb.write(this.message);
        if (this.errorCode !== -1) {
          sb.write(", errno = ");
          sb.write(dart.toString(this.errorCode));
        }
      } else if (this.errorCode !== -1) {
        sb.write(": errno = ");
        sb.write(dart.toString(this.errorCode));
      }
      return sb.toString();
    }
  };
  (io.OSError.new = function(message, errorCode) {
    if (message === void 0) message = "";
    if (errorCode === void 0) errorCode = -1;
    this[message$7] = message;
    this[errorCode$] = errorCode;
  }).prototype = io.OSError.prototype;
  dart.addTypeTests(io.OSError);
  const message$7 = Symbol("OSError.message");
  const errorCode$ = Symbol("OSError.errorCode");
  dart.setFieldSignature(io.OSError, () => ({
    __proto__: dart.getFields(io.OSError.__proto__),
    message: dart.finalFieldType(core.String),
    errorCode: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionMethods(io.OSError, ['toString']);
  dart.defineLazy(io.OSError, {
    /*io.OSError.noErrorCode*/get noErrorCode() {
      return -1;
    }
  });
  io._BufferAndStart = class _BufferAndStart extends core.Object {};
  (io._BufferAndStart.new = function(buffer, start) {
    this.buffer = buffer;
    this.start = start;
  }).prototype = io._BufferAndStart.prototype;
  dart.addTypeTests(io._BufferAndStart);
  dart.setFieldSignature(io._BufferAndStart, () => ({
    __proto__: dart.getFields(io._BufferAndStart.__proto__),
    buffer: dart.fieldType(ListOfint()),
    start: dart.fieldType(core.int)
  }));
  io._ensureFastAndSerializableByteData = function(buffer, start, end) {
    if (typed_data.Uint8List.is(buffer) || typed_data.Int8List.is(buffer)) {
      return new io._BufferAndStart.new(buffer, start);
    }
    let length = dart.notNull(end) - dart.notNull(start);
    let newBuffer = typed_data.Uint8List.new(length);
    let j = start;
    for (let i = 0; i < length; i++) {
      let value = buffer[$_get](j);
      if (value == null) dart.throw(new core.ArgumentError.new("List element is null at index " + dart.str(j)));
      newBuffer[$_set](i, value);
      j = dart.notNull(j) + 1;
    }
    return new io._BufferAndStart.new(newBuffer, 0);
  };
  io._IOCrypto = class _IOCrypto extends core.Object {
    static getRandomBytes(count) {
      dart.throw(new core.UnsupportedError.new("_IOCrypto.getRandomBytes"));
    }
  };
  (io._IOCrypto.new = function() {
  }).prototype = io._IOCrypto.prototype;
  dart.addTypeTests(io._IOCrypto);
  io.ZLibOption = class ZLibOption extends core.Object {};
  (io.ZLibOption.new = function() {
  }).prototype = io.ZLibOption.prototype;
  dart.addTypeTests(io.ZLibOption);
  dart.defineLazy(io.ZLibOption, {
    /*io.ZLibOption.minWindowBits*/get minWindowBits() {
      return 8;
    },
    /*io.ZLibOption.MIN_WINDOW_BITS*/get MIN_WINDOW_BITS() {
      return 8;
    },
    /*io.ZLibOption.maxWindowBits*/get maxWindowBits() {
      return 15;
    },
    /*io.ZLibOption.MAX_WINDOW_BITS*/get MAX_WINDOW_BITS() {
      return 15;
    },
    /*io.ZLibOption.defaultWindowBits*/get defaultWindowBits() {
      return 15;
    },
    /*io.ZLibOption.DEFAULT_WINDOW_BITS*/get DEFAULT_WINDOW_BITS() {
      return 15;
    },
    /*io.ZLibOption.minLevel*/get minLevel() {
      return -1;
    },
    /*io.ZLibOption.MIN_LEVEL*/get MIN_LEVEL() {
      return -1;
    },
    /*io.ZLibOption.maxLevel*/get maxLevel() {
      return 9;
    },
    /*io.ZLibOption.MAX_LEVEL*/get MAX_LEVEL() {
      return 9;
    },
    /*io.ZLibOption.defaultLevel*/get defaultLevel() {
      return 6;
    },
    /*io.ZLibOption.DEFAULT_LEVEL*/get DEFAULT_LEVEL() {
      return 6;
    },
    /*io.ZLibOption.minMemLevel*/get minMemLevel() {
      return 1;
    },
    /*io.ZLibOption.MIN_MEM_LEVEL*/get MIN_MEM_LEVEL() {
      return 1;
    },
    /*io.ZLibOption.maxMemLevel*/get maxMemLevel() {
      return 9;
    },
    /*io.ZLibOption.MAX_MEM_LEVEL*/get MAX_MEM_LEVEL() {
      return 9;
    },
    /*io.ZLibOption.defaultMemLevel*/get defaultMemLevel() {
      return 8;
    },
    /*io.ZLibOption.DEFAULT_MEM_LEVEL*/get DEFAULT_MEM_LEVEL() {
      return 8;
    },
    /*io.ZLibOption.strategyFiltered*/get strategyFiltered() {
      return 1;
    },
    /*io.ZLibOption.STRATEGY_FILTERED*/get STRATEGY_FILTERED() {
      return 1;
    },
    /*io.ZLibOption.strategyHuffmanOnly*/get strategyHuffmanOnly() {
      return 2;
    },
    /*io.ZLibOption.STRATEGY_HUFFMAN_ONLY*/get STRATEGY_HUFFMAN_ONLY() {
      return 2;
    },
    /*io.ZLibOption.strategyRle*/get strategyRle() {
      return 3;
    },
    /*io.ZLibOption.STRATEGY_RLE*/get STRATEGY_RLE() {
      return 3;
    },
    /*io.ZLibOption.strategyFixed*/get strategyFixed() {
      return 4;
    },
    /*io.ZLibOption.STRATEGY_FIXED*/get STRATEGY_FIXED() {
      return 4;
    },
    /*io.ZLibOption.strategyDefault*/get strategyDefault() {
      return 0;
    },
    /*io.ZLibOption.STRATEGY_DEFAULT*/get STRATEGY_DEFAULT() {
      return 0;
    }
  });
  dart.defineLazy(io, {
    /*io.zlib*/get zlib() {
      return dart.const(new io.ZLibCodec._default());
    },
    /*io.ZLIB*/get ZLIB() {
      return io.zlib;
    }
  });
  io.ZLibCodec = class ZLibCodec extends convert.Codec$(core.List$(core.int), core.List$(core.int)) {
    get gzip() {
      return this[gzip$];
    }
    set gzip(value) {
      super.gzip = value;
    }
    get level() {
      return this[level$];
    }
    set level(value) {
      super.level = value;
    }
    get memLevel() {
      return this[memLevel$];
    }
    set memLevel(value) {
      super.memLevel = value;
    }
    get strategy() {
      return this[strategy$];
    }
    set strategy(value) {
      super.strategy = value;
    }
    get windowBits() {
      return this[windowBits$];
    }
    set windowBits(value) {
      super.windowBits = value;
    }
    get raw() {
      return this[raw$];
    }
    set raw(value) {
      super.raw = value;
    }
    get dictionary() {
      return this[dictionary$];
    }
    set dictionary(value) {
      super.dictionary = value;
    }
    get encoder() {
      return new io.ZLibEncoder.new({gzip: false, level: this.level, windowBits: this.windowBits, memLevel: this.memLevel, strategy: this.strategy, dictionary: this.dictionary, raw: this.raw});
    }
    get decoder() {
      return new io.ZLibDecoder.new({windowBits: this.windowBits, dictionary: this.dictionary, raw: this.raw});
    }
  };
  (io.ZLibCodec.new = function(opts) {
    let level = opts && 'level' in opts ? opts.level : io.ZLibOption.defaultLevel;
    let windowBits = opts && 'windowBits' in opts ? opts.windowBits : io.ZLibOption.defaultWindowBits;
    let memLevel = opts && 'memLevel' in opts ? opts.memLevel : io.ZLibOption.defaultMemLevel;
    let strategy = opts && 'strategy' in opts ? opts.strategy : io.ZLibOption.strategyDefault;
    let dictionary = opts && 'dictionary' in opts ? opts.dictionary : null;
    let raw = opts && 'raw' in opts ? opts.raw : false;
    let gzip = opts && 'gzip' in opts ? opts.gzip : false;
    this[level$] = level;
    this[windowBits$] = windowBits;
    this[memLevel$] = memLevel;
    this[strategy$] = strategy;
    this[dictionary$] = dictionary;
    this[raw$] = raw;
    this[gzip$] = gzip;
    io.ZLibCodec.__proto__.new.call(this);
    io._validateZLibeLevel(this.level);
    io._validateZLibMemLevel(this.memLevel);
    io._validateZLibStrategy(this.strategy);
    io._validateZLibWindowBits(this.windowBits);
  }).prototype = io.ZLibCodec.prototype;
  (io.ZLibCodec._default = function() {
    this[level$] = io.ZLibOption.defaultLevel;
    this[windowBits$] = io.ZLibOption.defaultWindowBits;
    this[memLevel$] = io.ZLibOption.defaultMemLevel;
    this[strategy$] = io.ZLibOption.strategyDefault;
    this[raw$] = false;
    this[gzip$] = false;
    this[dictionary$] = null;
    io.ZLibCodec.__proto__.new.call(this);
  }).prototype = io.ZLibCodec.prototype;
  dart.addTypeTests(io.ZLibCodec);
  const gzip$ = Symbol("ZLibCodec.gzip");
  const level$ = Symbol("ZLibCodec.level");
  const memLevel$ = Symbol("ZLibCodec.memLevel");
  const strategy$ = Symbol("ZLibCodec.strategy");
  const windowBits$ = Symbol("ZLibCodec.windowBits");
  const raw$ = Symbol("ZLibCodec.raw");
  const dictionary$ = Symbol("ZLibCodec.dictionary");
  dart.setGetterSignature(io.ZLibCodec, () => ({
    __proto__: dart.getGetters(io.ZLibCodec.__proto__),
    encoder: io.ZLibEncoder,
    decoder: io.ZLibDecoder
  }));
  dart.setFieldSignature(io.ZLibCodec, () => ({
    __proto__: dart.getFields(io.ZLibCodec.__proto__),
    gzip: dart.finalFieldType(core.bool),
    level: dart.finalFieldType(core.int),
    memLevel: dart.finalFieldType(core.int),
    strategy: dart.finalFieldType(core.int),
    windowBits: dart.finalFieldType(core.int),
    raw: dart.finalFieldType(core.bool),
    dictionary: dart.finalFieldType(ListOfint())
  }));
  dart.defineLazy(io, {
    /*io.gzip*/get gzip() {
      return dart.const(new io.GZipCodec._default());
    },
    /*io.GZIP*/get GZIP() {
      return io.gzip;
    }
  });
  io.GZipCodec = class GZipCodec extends convert.Codec$(core.List$(core.int), core.List$(core.int)) {
    get gzip() {
      return this[gzip$0];
    }
    set gzip(value) {
      super.gzip = value;
    }
    get level() {
      return this[level$0];
    }
    set level(value) {
      super.level = value;
    }
    get memLevel() {
      return this[memLevel$0];
    }
    set memLevel(value) {
      super.memLevel = value;
    }
    get strategy() {
      return this[strategy$0];
    }
    set strategy(value) {
      super.strategy = value;
    }
    get windowBits() {
      return this[windowBits$0];
    }
    set windowBits(value) {
      super.windowBits = value;
    }
    get dictionary() {
      return this[dictionary$0];
    }
    set dictionary(value) {
      super.dictionary = value;
    }
    get raw() {
      return this[raw$0];
    }
    set raw(value) {
      super.raw = value;
    }
    get encoder() {
      return new io.ZLibEncoder.new({gzip: true, level: this.level, windowBits: this.windowBits, memLevel: this.memLevel, strategy: this.strategy, dictionary: this.dictionary, raw: this.raw});
    }
    get decoder() {
      return new io.ZLibDecoder.new({windowBits: this.windowBits, dictionary: this.dictionary, raw: this.raw});
    }
  };
  (io.GZipCodec.new = function(opts) {
    let level = opts && 'level' in opts ? opts.level : io.ZLibOption.defaultLevel;
    let windowBits = opts && 'windowBits' in opts ? opts.windowBits : io.ZLibOption.defaultWindowBits;
    let memLevel = opts && 'memLevel' in opts ? opts.memLevel : io.ZLibOption.defaultMemLevel;
    let strategy = opts && 'strategy' in opts ? opts.strategy : io.ZLibOption.strategyDefault;
    let dictionary = opts && 'dictionary' in opts ? opts.dictionary : null;
    let raw = opts && 'raw' in opts ? opts.raw : false;
    let gzip = opts && 'gzip' in opts ? opts.gzip : true;
    this[level$0] = level;
    this[windowBits$0] = windowBits;
    this[memLevel$0] = memLevel;
    this[strategy$0] = strategy;
    this[dictionary$0] = dictionary;
    this[raw$0] = raw;
    this[gzip$0] = gzip;
    io.GZipCodec.__proto__.new.call(this);
    io._validateZLibeLevel(this.level);
    io._validateZLibMemLevel(this.memLevel);
    io._validateZLibStrategy(this.strategy);
    io._validateZLibWindowBits(this.windowBits);
  }).prototype = io.GZipCodec.prototype;
  (io.GZipCodec._default = function() {
    this[level$0] = io.ZLibOption.defaultLevel;
    this[windowBits$0] = io.ZLibOption.defaultWindowBits;
    this[memLevel$0] = io.ZLibOption.defaultMemLevel;
    this[strategy$0] = io.ZLibOption.strategyDefault;
    this[raw$0] = false;
    this[gzip$0] = true;
    this[dictionary$0] = null;
    io.GZipCodec.__proto__.new.call(this);
  }).prototype = io.GZipCodec.prototype;
  dart.addTypeTests(io.GZipCodec);
  const gzip$0 = Symbol("GZipCodec.gzip");
  const level$0 = Symbol("GZipCodec.level");
  const memLevel$0 = Symbol("GZipCodec.memLevel");
  const strategy$0 = Symbol("GZipCodec.strategy");
  const windowBits$0 = Symbol("GZipCodec.windowBits");
  const dictionary$0 = Symbol("GZipCodec.dictionary");
  const raw$0 = Symbol("GZipCodec.raw");
  dart.setGetterSignature(io.GZipCodec, () => ({
    __proto__: dart.getGetters(io.GZipCodec.__proto__),
    encoder: io.ZLibEncoder,
    decoder: io.ZLibDecoder
  }));
  dart.setFieldSignature(io.GZipCodec, () => ({
    __proto__: dart.getFields(io.GZipCodec.__proto__),
    gzip: dart.finalFieldType(core.bool),
    level: dart.finalFieldType(core.int),
    memLevel: dart.finalFieldType(core.int),
    strategy: dart.finalFieldType(core.int),
    windowBits: dart.finalFieldType(core.int),
    dictionary: dart.finalFieldType(ListOfint()),
    raw: dart.finalFieldType(core.bool)
  }));
  io.ZLibEncoder = class ZLibEncoder extends convert.Converter$(core.List$(core.int), core.List$(core.int)) {
    get gzip() {
      return this[gzip$1];
    }
    set gzip(value) {
      super.gzip = value;
    }
    get level() {
      return this[level$1];
    }
    set level(value) {
      super.level = value;
    }
    get memLevel() {
      return this[memLevel$1];
    }
    set memLevel(value) {
      super.memLevel = value;
    }
    get strategy() {
      return this[strategy$1];
    }
    set strategy(value) {
      super.strategy = value;
    }
    get windowBits() {
      return this[windowBits$1];
    }
    set windowBits(value) {
      super.windowBits = value;
    }
    get dictionary() {
      return this[dictionary$1];
    }
    set dictionary(value) {
      super.dictionary = value;
    }
    get raw() {
      return this[raw$1];
    }
    set raw(value) {
      super.raw = value;
    }
    convert(bytes) {
      ListOfint()._check(bytes);
      let sink = new io._BufferSink.new();
      let _ = this.startChunkedConversion(sink);
      _.add(bytes);
      _.close();
      return sink.builder.takeBytes();
    }
    startChunkedConversion(sink) {
      SinkOfListOfint()._check(sink);
      if (!convert.ByteConversionSink.is(sink)) {
        sink = convert.ByteConversionSink.from(sink);
      }
      return new io._ZLibEncoderSink.new(convert.ByteConversionSink._check(sink), this.gzip, this.level, this.windowBits, this.memLevel, this.strategy, this.dictionary, this.raw);
    }
  };
  (io.ZLibEncoder.new = function(opts) {
    let gzip = opts && 'gzip' in opts ? opts.gzip : false;
    let level = opts && 'level' in opts ? opts.level : io.ZLibOption.defaultLevel;
    let windowBits = opts && 'windowBits' in opts ? opts.windowBits : io.ZLibOption.defaultWindowBits;
    let memLevel = opts && 'memLevel' in opts ? opts.memLevel : io.ZLibOption.defaultMemLevel;
    let strategy = opts && 'strategy' in opts ? opts.strategy : io.ZLibOption.strategyDefault;
    let dictionary = opts && 'dictionary' in opts ? opts.dictionary : null;
    let raw = opts && 'raw' in opts ? opts.raw : false;
    this[gzip$1] = gzip;
    this[level$1] = level;
    this[windowBits$1] = windowBits;
    this[memLevel$1] = memLevel;
    this[strategy$1] = strategy;
    this[dictionary$1] = dictionary;
    this[raw$1] = raw;
    io.ZLibEncoder.__proto__.new.call(this);
    io._validateZLibeLevel(this.level);
    io._validateZLibMemLevel(this.memLevel);
    io._validateZLibStrategy(this.strategy);
    io._validateZLibWindowBits(this.windowBits);
  }).prototype = io.ZLibEncoder.prototype;
  dart.addTypeTests(io.ZLibEncoder);
  const gzip$1 = Symbol("ZLibEncoder.gzip");
  const level$1 = Symbol("ZLibEncoder.level");
  const memLevel$1 = Symbol("ZLibEncoder.memLevel");
  const strategy$1 = Symbol("ZLibEncoder.strategy");
  const windowBits$1 = Symbol("ZLibEncoder.windowBits");
  const dictionary$1 = Symbol("ZLibEncoder.dictionary");
  const raw$1 = Symbol("ZLibEncoder.raw");
  dart.setMethodSignature(io.ZLibEncoder, () => ({
    __proto__: dart.getMethods(io.ZLibEncoder.__proto__),
    convert: dart.fnType(core.List$(core.int), [core.Object]),
    startChunkedConversion: dart.fnType(convert.ByteConversionSink, [core.Object])
  }));
  dart.setFieldSignature(io.ZLibEncoder, () => ({
    __proto__: dart.getFields(io.ZLibEncoder.__proto__),
    gzip: dart.finalFieldType(core.bool),
    level: dart.finalFieldType(core.int),
    memLevel: dart.finalFieldType(core.int),
    strategy: dart.finalFieldType(core.int),
    windowBits: dart.finalFieldType(core.int),
    dictionary: dart.finalFieldType(ListOfint()),
    raw: dart.finalFieldType(core.bool)
  }));
  io.ZLibDecoder = class ZLibDecoder extends convert.Converter$(core.List$(core.int), core.List$(core.int)) {
    get windowBits() {
      return this[windowBits$2];
    }
    set windowBits(value) {
      super.windowBits = value;
    }
    get dictionary() {
      return this[dictionary$2];
    }
    set dictionary(value) {
      super.dictionary = value;
    }
    get raw() {
      return this[raw$2];
    }
    set raw(value) {
      super.raw = value;
    }
    convert(bytes) {
      ListOfint()._check(bytes);
      let sink = new io._BufferSink.new();
      let _ = this.startChunkedConversion(sink);
      _.add(bytes);
      _.close();
      return sink.builder.takeBytes();
    }
    startChunkedConversion(sink) {
      SinkOfListOfint()._check(sink);
      if (!convert.ByteConversionSink.is(sink)) {
        sink = convert.ByteConversionSink.from(sink);
      }
      return new io._ZLibDecoderSink.new(convert.ByteConversionSink._check(sink), this.windowBits, this.dictionary, this.raw);
    }
  };
  (io.ZLibDecoder.new = function(opts) {
    let windowBits = opts && 'windowBits' in opts ? opts.windowBits : io.ZLibOption.defaultWindowBits;
    let dictionary = opts && 'dictionary' in opts ? opts.dictionary : null;
    let raw = opts && 'raw' in opts ? opts.raw : false;
    this[windowBits$2] = windowBits;
    this[dictionary$2] = dictionary;
    this[raw$2] = raw;
    io.ZLibDecoder.__proto__.new.call(this);
    io._validateZLibWindowBits(this.windowBits);
  }).prototype = io.ZLibDecoder.prototype;
  dart.addTypeTests(io.ZLibDecoder);
  const windowBits$2 = Symbol("ZLibDecoder.windowBits");
  const dictionary$2 = Symbol("ZLibDecoder.dictionary");
  const raw$2 = Symbol("ZLibDecoder.raw");
  dart.setMethodSignature(io.ZLibDecoder, () => ({
    __proto__: dart.getMethods(io.ZLibDecoder.__proto__),
    convert: dart.fnType(core.List$(core.int), [core.Object]),
    startChunkedConversion: dart.fnType(convert.ByteConversionSink, [core.Object])
  }));
  dart.setFieldSignature(io.ZLibDecoder, () => ({
    __proto__: dart.getFields(io.ZLibDecoder.__proto__),
    windowBits: dart.finalFieldType(core.int),
    dictionary: dart.finalFieldType(ListOfint()),
    raw: dart.finalFieldType(core.bool)
  }));
  io.RawZLibFilter = class RawZLibFilter extends core.Object {
    static deflateFilter(opts) {
      let gzip = opts && 'gzip' in opts ? opts.gzip : false;
      let level = opts && 'level' in opts ? opts.level : io.ZLibOption.defaultLevel;
      let windowBits = opts && 'windowBits' in opts ? opts.windowBits : io.ZLibOption.defaultWindowBits;
      let memLevel = opts && 'memLevel' in opts ? opts.memLevel : io.ZLibOption.defaultMemLevel;
      let strategy = opts && 'strategy' in opts ? opts.strategy : io.ZLibOption.strategyDefault;
      let dictionary = opts && 'dictionary' in opts ? opts.dictionary : null;
      let raw = opts && 'raw' in opts ? opts.raw : false;
      return io.RawZLibFilter._makeZLibDeflateFilter(gzip, level, windowBits, memLevel, strategy, dictionary, raw);
    }
    static inflateFilter(opts) {
      let windowBits = opts && 'windowBits' in opts ? opts.windowBits : io.ZLibOption.defaultWindowBits;
      let dictionary = opts && 'dictionary' in opts ? opts.dictionary : null;
      let raw = opts && 'raw' in opts ? opts.raw : false;
      return io.RawZLibFilter._makeZLibInflateFilter(windowBits, dictionary, raw);
    }
    static _makeZLibDeflateFilter(gzip, level, windowBits, memLevel, strategy, dictionary, raw) {
      dart.throw(new core.UnsupportedError.new("_newZLibDeflateFilter"));
    }
    static _makeZLibInflateFilter(windowBits, dictionary, raw) {
      dart.throw(new core.UnsupportedError.new("_newZLibInflateFilter"));
    }
  };
  (io.RawZLibFilter[dart.mixinNew] = function() {
  }).prototype = io.RawZLibFilter.prototype;
  dart.addTypeTests(io.RawZLibFilter);
  io._BufferSink = class _BufferSink extends convert.ByteConversionSink {
    add(chunk) {
      ListOfint()._check(chunk);
      this.builder.add(chunk);
    }
    addSlice(chunk, start, end, isLast) {
      if (typed_data.Uint8List.is(chunk)) {
        let list = chunk;
        this.builder.add(typed_data.Uint8List.view(list[$buffer], start, dart.notNull(end) - dart.notNull(start)));
      } else {
        this.builder.add(chunk[$sublist](start, end));
      }
    }
    close() {}
  };
  (io._BufferSink.new = function() {
    this.builder = io.BytesBuilder.new({copy: false});
    io._BufferSink.__proto__.new.call(this);
  }).prototype = io._BufferSink.prototype;
  dart.addTypeTests(io._BufferSink);
  dart.setMethodSignature(io._BufferSink, () => ({
    __proto__: dart.getMethods(io._BufferSink.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    addSlice: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool]),
    close: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(io._BufferSink, () => ({
    __proto__: dart.getFields(io._BufferSink.__proto__),
    builder: dart.finalFieldType(io.BytesBuilder)
  }));
  const _sink$0 = Symbol('_sink');
  const _filter$ = Symbol('_filter');
  const _closed = Symbol('_closed');
  const _empty = Symbol('_empty');
  let const$55;
  io._FilterSink = class _FilterSink extends convert.ByteConversionSink {
    add(data) {
      ListOfint()._check(data);
      this.addSlice(data, 0, data[$length], false);
    }
    addSlice(data, start, end, isLast) {
      if (dart.test(this[_closed])) return;
      if (end == null) dart.throw(new core.ArgumentError.notNull("end"));
      core.RangeError.checkValidRange(start, end, data[$length]);
      try {
        this[_empty] = false;
        let bufferAndStart = io._ensureFastAndSerializableByteData(data, start, end);
        this[_filter$].process(bufferAndStart.buffer, bufferAndStart.start, dart.notNull(end) - (dart.notNull(start) - dart.notNull(bufferAndStart.start)));
        let out = null;
        while ((out = this[_filter$].processed({flush: false})) != null) {
          this[_sink$0].add(out);
        }
      } catch (e$) {
        let e = dart.getThrown(e$);
        this[_closed] = true;
        dart.rethrow(e$);
      }
      if (dart.test(isLast)) this.close();
    }
    close() {
      if (dart.test(this[_closed])) return;
      if (dart.test(this[_empty])) this[_filter$].process(const$55 || (const$55 = dart.constList([], core.int)), 0, 0);
      try {
        let out = null;
        while ((out = this[_filter$].processed({end: true})) != null) {
          this[_sink$0].add(out);
        }
      } catch (e$) {
        let e = dart.getThrown(e$);
        this[_closed] = true;
        dart.throw(e);
      }
      this[_closed] = true;
      this[_sink$0].close();
    }
  };
  (io._FilterSink.new = function(sink, filter) {
    this[_closed] = false;
    this[_empty] = true;
    this[_sink$0] = sink;
    this[_filter$] = filter;
    io._FilterSink.__proto__.new.call(this);
  }).prototype = io._FilterSink.prototype;
  dart.addTypeTests(io._FilterSink);
  dart.setMethodSignature(io._FilterSink, () => ({
    __proto__: dart.getMethods(io._FilterSink.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    addSlice: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool]),
    close: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(io._FilterSink, () => ({
    __proto__: dart.getFields(io._FilterSink.__proto__),
    [_filter$]: dart.finalFieldType(io.RawZLibFilter),
    [_sink$0]: dart.finalFieldType(convert.ByteConversionSink),
    [_closed]: dart.fieldType(core.bool),
    [_empty]: dart.fieldType(core.bool)
  }));
  io._ZLibEncoderSink = class _ZLibEncoderSink extends io._FilterSink {};
  (io._ZLibEncoderSink.new = function(sink, gzip, level, windowBits, memLevel, strategy, dictionary, raw) {
    io._ZLibEncoderSink.__proto__.new.call(this, sink, io.RawZLibFilter._makeZLibDeflateFilter(gzip, level, windowBits, memLevel, strategy, dictionary, raw));
  }).prototype = io._ZLibEncoderSink.prototype;
  dart.addTypeTests(io._ZLibEncoderSink);
  io._ZLibDecoderSink = class _ZLibDecoderSink extends io._FilterSink {};
  (io._ZLibDecoderSink.new = function(sink, windowBits, dictionary, raw) {
    io._ZLibDecoderSink.__proto__.new.call(this, sink, io.RawZLibFilter._makeZLibInflateFilter(windowBits, dictionary, raw));
  }).prototype = io._ZLibDecoderSink.prototype;
  dart.addTypeTests(io._ZLibDecoderSink);
  io._validateZLibWindowBits = function(windowBits) {
    if (io.ZLibOption.minWindowBits > dart.notNull(windowBits) || io.ZLibOption.maxWindowBits < dart.notNull(windowBits)) {
      dart.throw(new core.RangeError.range(windowBits, io.ZLibOption.minWindowBits, io.ZLibOption.maxWindowBits));
    }
  };
  io._validateZLibeLevel = function(level) {
    if (io.ZLibOption.minLevel > dart.notNull(level) || io.ZLibOption.maxLevel < dart.notNull(level)) {
      dart.throw(new core.RangeError.range(level, io.ZLibOption.minLevel, io.ZLibOption.maxLevel));
    }
  };
  io._validateZLibMemLevel = function(memLevel) {
    if (io.ZLibOption.minMemLevel > dart.notNull(memLevel) || io.ZLibOption.maxMemLevel < dart.notNull(memLevel)) {
      dart.throw(new core.RangeError.range(memLevel, io.ZLibOption.minMemLevel, io.ZLibOption.maxMemLevel));
    }
  };
  let const$56;
  io._validateZLibStrategy = function(strategy) {
    let strategies = const$56 || (const$56 = dart.constList([io.ZLibOption.strategyFiltered, io.ZLibOption.strategyHuffmanOnly, io.ZLibOption.strategyRle, io.ZLibOption.strategyFixed, io.ZLibOption.strategyDefault], core.int));
    if (strategies[$indexOf](strategy) === -1) {
      dart.throw(new core.ArgumentError.new("Unsupported 'strategy'"));
    }
  };
  io.Directory = class Directory extends core.Object {
    static new(path) {
      let overrides = io.IOOverrides.current;
      if (overrides == null) {
        return new io._Directory.new(path);
      }
      return overrides.createDirectory(path);
    }
    static fromRawPath(path) {
      return new io._Directory.fromRawPath(path);
    }
    static fromUri(uri) {
      return io.Directory.new(uri.toFilePath());
    }
    static get current() {
      let overrides = io.IOOverrides.current;
      if (overrides == null) {
        return io._Directory.current;
      }
      return overrides.getCurrentDirectory();
    }
    static set current(path) {
      let overrides = io.IOOverrides.current;
      if (overrides == null) {
        io._Directory.current = path;
        return;
      }
      overrides.setCurrentDirectory(core.String._check(path));
    }
    static get systemTemp() {
      let overrides = io.IOOverrides.current;
      if (overrides == null) {
        return io._Directory.systemTemp;
      }
      return overrides.getSystemTempDirectory();
    }
  };
  (io.Directory[dart.mixinNew] = function() {
  }).prototype = io.Directory.prototype;
  dart.addTypeTests(io.Directory);
  io.Directory[dart.implements] = () => [io.FileSystemEntity];
  const _path = Symbol('_path');
  const _rawPath$ = Symbol('_rawPath');
  const _isErrorResponse = Symbol('_isErrorResponse');
  const _exceptionOrErrorFromResponse = Symbol('_exceptionOrErrorFromResponse');
  const _absolutePath = Symbol('_absolutePath');
  const _delete = Symbol('_delete');
  const _deleteSync = Symbol('_deleteSync');
  const _rawAbsolutePath = Symbol('_rawAbsolutePath');
  io.FileSystemEntity = class FileSystemEntity extends core.Object {
    get [_path]() {
      return this[_path$];
    }
    set [_path](value) {
      this[_path$] = value;
    }
    get [_rawPath$]() {
      return this[_rawPath];
    }
    set [_rawPath$](value) {
      this[_rawPath] = value;
    }
    get uri() {
      return core.Uri.file(this.path);
    }
    resolveSymbolicLinks() {
      return FutureOfString()._check(io._File._dispatchWithNamespace(io._IOService.fileResolveSymbolicLinks, [null, this[_rawPath$]]).then(core.String, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "Cannot resolve symbolic links", this.path));
        }
        return FutureOrOfString()._check(response);
      }, dynamicToFutureOrOfString())));
    }
    resolveSymbolicLinksSync() {
      let result = io.FileSystemEntity._resolveSymbolicLinks(io._Namespace._namespace, this[_rawPath$]);
      io.FileSystemEntity._throwIfError(result, "Cannot resolve symbolic links", this.path);
      return core.String._check(result);
    }
    stat() {
      return io.FileStat.stat(this.path);
    }
    statSync() {
      return io.FileStat.statSync(this.path);
    }
    delete(opts) {
      let recursive = opts && 'recursive' in opts ? opts.recursive : false;
      return this[_delete]({recursive: recursive});
    }
    deleteSync(opts) {
      let recursive = opts && 'recursive' in opts ? opts.recursive : false;
      return this[_deleteSync]({recursive: recursive});
    }
    watch(opts) {
      let events = opts && 'events' in opts ? opts.events : io.FileSystemEvent.all;
      let recursive = opts && 'recursive' in opts ? opts.recursive : false;
      let trimmedPath = io.FileSystemEntity._trimTrailingPathSeparators(this.path);
      let overrides = io.IOOverrides.current;
      if (overrides == null) {
        return io._FileSystemWatcher._watch(trimmedPath, events, recursive);
      }
      return overrides.fsWatch(trimmedPath, events, recursive);
    }
    static _identical(path1, path2) {
      return FutureOfbool()._check(io._File._dispatchWithNamespace(io._IOService.fileIdentical, [null, path1, path2]).then(core.bool, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "Error in FileSystemEntity.identical(" + dart.str(path1) + ", " + dart.str(path2) + ")", ""));
        }
        return FutureOrOfbool()._check(response);
      }, dynamicToFutureOrOfbool())));
    }
    static identical(path1, path2) {
      let overrides = io.IOOverrides.current;
      if (overrides == null) {
        return io.FileSystemEntity._identical(path1, path2);
      }
      return overrides.fseIdentical(path1, path2);
    }
    get isAbsolute() {
      if (dart.test(io.Platform.isWindows)) {
        return this.path[$startsWith](io.FileSystemEntity._absoluteWindowsPathPattern);
      } else {
        return this.path[$startsWith]("/");
      }
    }
    get [_absolutePath]() {
      if (dart.test(this.isAbsolute)) return this.path;
      let current = io.Directory.current.path;
      if (current[$endsWith]("/") || dart.test(io.Platform.isWindows) && current[$endsWith]("\\")) {
        return dart.str(current) + dart.str(this.path);
      } else {
        return dart.str(current) + dart.str(io.Platform.pathSeparator) + dart.str(this.path);
      }
    }
    get [_rawAbsolutePath]() {
      if (dart.test(this.isAbsolute)) return this[_rawPath$];
      let current = io.Directory.current[_rawPath$][$toList]();
      if (!(current[$last] === 0)) dart.assertFailed();
      current[$removeLast]();
      if (current[$last] === "/"[$codeUnitAt](0) || dart.test(io.Platform.isWindows) && current[$last] === "\\"[$codeUnitAt](0)) {
        current[$addAll](this[_rawPath$]);
        return typed_data.Uint8List.fromList(current);
      } else {
        current[$addAll](convert.utf8.encode(io.Platform.pathSeparator));
        current[$addAll](this[_rawPath$]);
        return typed_data.Uint8List.fromList(current);
      }
    }
    static _identicalSync(path1, path2) {
      let result = io.FileSystemEntity._identicalNative(io._Namespace._namespace, path1, path2);
      io.FileSystemEntity._throwIfError(result, "Error in FileSystemEntity.identicalSync");
      return core.bool._check(result);
    }
    static identicalSync(path1, path2) {
      let overrides = io.IOOverrides.current;
      if (overrides == null) {
        return io.FileSystemEntity._identicalSync(path1, path2);
      }
      return overrides.fseIdenticalSync(path1, path2);
    }
    static get isWatchSupported() {
      let overrides = io.IOOverrides.current;
      if (overrides == null) {
        return io._FileSystemWatcher.isSupported;
      }
      return overrides.fsWatchIsSupported();
    }
    static _toUtf8Array(s) {
      return io.FileSystemEntity._toNullTerminatedUtf8Array(typed_data.Uint8List._check(convert.utf8.encode(s)));
    }
    static _toNullTerminatedUtf8Array(l) {
      if (l == null) {
        return null;
      }
      if (dart.test(l[$isNotEmpty]) && l[$last] !== 0) {
        let tmp = typed_data.Uint8List.new(dart.notNull(l[$length]) + 1);
        tmp[$setRange](0, l[$length], l);
        return tmp;
      } else {
        return l;
      }
    }
    static _toStringFromUtf8Array(l) {
      if (l == null) {
        return "";
      }
      let nonNullTerminated = l;
      if (l[$last] === 0) {
        nonNullTerminated = typed_data.Uint8List.view(l[$buffer], 0, dart.notNull(l[$length]) - 1);
      }
      return convert.utf8.decode(nonNullTerminated, {allowMalformed: true});
    }
    static type(path, opts) {
      let followLinks = opts && 'followLinks' in opts ? opts.followLinks : true;
      return io.FileSystemEntity._getType(io.FileSystemEntity._toUtf8Array(path), followLinks);
    }
    static typeSync(path, opts) {
      let followLinks = opts && 'followLinks' in opts ? opts.followLinks : true;
      return io.FileSystemEntity._getTypeSync(io.FileSystemEntity._toUtf8Array(path), followLinks);
    }
    static isLink(path) {
      return io.FileSystemEntity._isLinkRaw(io.FileSystemEntity._toUtf8Array(path));
    }
    static _isLinkRaw(rawPath) {
      return FutureOfbool()._check(io.FileSystemEntity._getType(rawPath, false).then(core.bool, dart.fn(type => dart.equals(type, io.FileSystemEntityType.link), FileSystemEntityTypeTobool())));
    }
    static isFile(path) {
      return FutureOfbool()._check(io.FileSystemEntity._getType(io.FileSystemEntity._toUtf8Array(path), true).then(core.bool, dart.fn(type => dart.equals(type, io.FileSystemEntityType.file), FileSystemEntityTypeTobool())));
    }
    static isDirectory(path) {
      return FutureOfbool()._check(io.FileSystemEntity._getType(io.FileSystemEntity._toUtf8Array(path), true).then(core.bool, dart.fn(type => dart.equals(type, io.FileSystemEntityType.directory), FileSystemEntityTypeTobool())));
    }
    static isLinkSync(path) {
      return io.FileSystemEntity._isLinkRawSync(io.FileSystemEntity._toUtf8Array(path));
    }
    static _isLinkRawSync(rawPath) {
      return dart.equals(io.FileSystemEntity._getTypeSync(typed_data.Uint8List._check(rawPath), false), io.FileSystemEntityType.link);
    }
    static isFileSync(path) {
      return dart.equals(io.FileSystemEntity._getTypeSync(io.FileSystemEntity._toUtf8Array(path), true), io.FileSystemEntityType.file);
    }
    static isDirectorySync(path) {
      return dart.equals(io.FileSystemEntity._getTypeSync(io.FileSystemEntity._toUtf8Array(path), true), io.FileSystemEntityType.directory);
    }
    static _getTypeNative(namespace, rawPath, followLinks) {
      dart.throw(new core.UnsupportedError.new("FileSystemEntity._getType"));
    }
    static _identicalNative(namespace, path1, path2) {
      dart.throw(new core.UnsupportedError.new("FileSystemEntity._identical"));
    }
    static _resolveSymbolicLinks(namespace, rawPath) {
      dart.throw(new core.UnsupportedError.new("FileSystemEntity._resolveSymbolicLinks"));
    }
    static parentOf(path) {
      let rootEnd = -1;
      if (dart.test(io.Platform.isWindows)) {
        if (path[$startsWith](io.FileSystemEntity._absoluteWindowsPathPattern)) {
          rootEnd = path[$indexOf](core.RegExp.new("[/\\\\]"), 2);
          if (rootEnd === -1) return path;
        } else if (path[$startsWith]("\\") || path[$startsWith]("/")) {
          rootEnd = 0;
        }
      } else if (path[$startsWith]("/")) {
        rootEnd = 0;
      }
      let pos = path[$lastIndexOf](io.FileSystemEntity._parentRegExp);
      if (pos > rootEnd) {
        return path[$substring](0, pos + 1);
      } else if (rootEnd > -1) {
        return path[$substring](0, rootEnd + 1);
      } else {
        return ".";
      }
    }
    get parent() {
      return io.Directory.new(io.FileSystemEntity.parentOf(this.path));
    }
    static _getTypeSyncHelper(rawPath, followLinks) {
      let result = io.FileSystemEntity._getTypeNative(io._Namespace._namespace, rawPath, followLinks);
      io.FileSystemEntity._throwIfError(result, "Error getting type of FileSystemEntity");
      return io.FileSystemEntityType._lookup(core.int._check(result));
    }
    static _getTypeSync(rawPath, followLinks) {
      let overrides = io.IOOverrides.current;
      if (overrides == null) {
        return io.FileSystemEntity._getTypeSyncHelper(rawPath, followLinks);
      }
      return overrides.fseGetTypeSync(convert.utf8.decode(rawPath, {allowMalformed: true}), followLinks);
    }
    static _getTypeRequest(rawPath, followLinks) {
      return FutureOfFileSystemEntityType()._check(io._File._dispatchWithNamespace(io._IOService.fileType, [null, rawPath, followLinks]).then(io.FileSystemEntityType, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "Error getting type", convert.utf8.decode(rawPath, {allowMalformed: true})));
        }
        return io.FileSystemEntityType._lookup(core.int._check(response));
      }, dynamicToFileSystemEntityType())));
    }
    static _getType(rawPath, followLinks) {
      let overrides = io.IOOverrides.current;
      if (overrides == null) {
        return io.FileSystemEntity._getTypeRequest(rawPath, followLinks);
      }
      return overrides.fseGetType(convert.utf8.decode(rawPath, {allowMalformed: true}), followLinks);
    }
    static _throwIfError(result, msg, path) {
      if (path === void 0) path = null;
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new(msg, path, result));
      } else if (core.ArgumentError.is(result)) {
        dart.throw(result);
      }
    }
    static _trimTrailingPathSeparators(path) {
      if (path == null) return path;
      if (dart.test(io.Platform.isWindows)) {
        while (path.length > 1 && (path[$endsWith](io.Platform.pathSeparator) || path[$endsWith]("/"))) {
          path = path[$substring](0, path.length - 1);
        }
      } else {
        while (path.length > 1 && path[$endsWith](io.Platform.pathSeparator)) {
          path = path[$substring](0, path.length - 1);
        }
      }
      return path;
    }
    static _ensureTrailingPathSeparators(path) {
      if (path == null) return path;
      if (path[$isEmpty]) path = ".";
      if (dart.test(io.Platform.isWindows)) {
        while (!path[$endsWith](io.Platform.pathSeparator) && !path[$endsWith]("/")) {
          path = dart.str(path) + dart.str(io.Platform.pathSeparator);
        }
      } else {
        while (!path[$endsWith](io.Platform.pathSeparator)) {
          path = dart.str(path) + dart.str(io.Platform.pathSeparator);
        }
      }
      return path;
    }
  };
  (io.FileSystemEntity.new = function() {
    this[_path$] = null;
    this[_rawPath] = null;
  }).prototype = io.FileSystemEntity.prototype;
  dart.addTypeTests(io.FileSystemEntity);
  const _path$ = Symbol("FileSystemEntity._path");
  const _rawPath = Symbol("FileSystemEntity._rawPath");
  dart.setMethodSignature(io.FileSystemEntity, () => ({
    __proto__: dart.getMethods(io.FileSystemEntity.__proto__),
    resolveSymbolicLinks: dart.fnType(async.Future$(core.String), []),
    resolveSymbolicLinksSync: dart.fnType(core.String, []),
    stat: dart.fnType(async.Future$(io.FileStat), []),
    statSync: dart.fnType(io.FileStat, []),
    delete: dart.fnType(async.Future$(io.FileSystemEntity), [], {recursive: core.bool}),
    deleteSync: dart.fnType(dart.void, [], {recursive: core.bool}),
    watch: dart.fnType(async.Stream$(io.FileSystemEvent), [], {events: core.int, recursive: core.bool})
  }));
  dart.setGetterSignature(io.FileSystemEntity, () => ({
    __proto__: dart.getGetters(io.FileSystemEntity.__proto__),
    uri: core.Uri,
    isAbsolute: core.bool,
    [_absolutePath]: core.String,
    [_rawAbsolutePath]: typed_data.Uint8List,
    parent: io.Directory
  }));
  dart.setFieldSignature(io.FileSystemEntity, () => ({
    __proto__: dart.getFields(io.FileSystemEntity.__proto__),
    [_path]: dart.fieldType(core.String),
    [_rawPath$]: dart.fieldType(typed_data.Uint8List)
  }));
  dart.defineLazy(io.FileSystemEntity, {
    /*io.FileSystemEntity._absoluteWindowsPathPattern*/get _absoluteWindowsPathPattern() {
      return core.RegExp.new("^(\\\\\\\\|[a-zA-Z]:[/\\\\])");
    },
    /*io.FileSystemEntity._parentRegExp*/get _parentRegExp() {
      return dart.test(io.Platform.isWindows) ? core.RegExp.new("[^/\\\\][/\\\\]+[^/\\\\]") : core.RegExp.new("[^/]/+[^/]");
    }
  });
  io._Directory = class _Directory extends io.FileSystemEntity {
    get [_path]() {
      return this[_path$0];
    }
    set [_path](value) {
      this[_path$0] = value;
    }
    get [_rawPath$]() {
      return this[_rawPath$0];
    }
    set [_rawPath$](value) {
      this[_rawPath$0] = value;
    }
    get path() {
      return this[_path];
    }
    static _current(namespace) {
      dart.throw(new core.UnsupportedError.new("Directory._current"));
    }
    static _setCurrent(namespace, rawPath) {
      dart.throw(new core.UnsupportedError.new("Directory_SetCurrent"));
    }
    static _createTemp(namespace, rawPath) {
      dart.throw(new core.UnsupportedError.new("Directory._createTemp"));
    }
    static _systemTemp(namespace) {
      dart.throw(new core.UnsupportedError.new("Directory._systemTemp"));
    }
    static _exists(namespace, rawPath) {
      dart.throw(new core.UnsupportedError.new("Directory._exists"));
    }
    static _create(namespace, rawPath) {
      dart.throw(new core.UnsupportedError.new("Directory._create"));
    }
    static _deleteNative(namespace, rawPath, recursive) {
      dart.throw(new core.UnsupportedError.new("Directory._deleteNative"));
    }
    static _rename(namespace, rawPath, newPath) {
      dart.throw(new core.UnsupportedError.new("Directory._rename"));
    }
    static _fillWithDirectoryListing(namespace, list, rawPath, recursive, followLinks) {
      dart.throw(new core.UnsupportedError.new("Directory._fillWithDirectoryListing"));
    }
    static get current() {
      let result = io._Directory._current(io._Namespace._namespace);
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("Getting current working directory failed", "", result));
      }
      return new io._Directory.new(core.String._check(result));
    }
    static set current(path) {
      let _rawPath = null;
      if (io._Directory.is(path)) {
        _rawPath = path[_rawPath$];
      } else if (io.Directory.is(path)) {
        _rawPath = io.FileSystemEntity._toUtf8Array(path.path);
      } else if (typeof path == 'string') {
        _rawPath = io.FileSystemEntity._toUtf8Array(path);
      } else {
        dart.throw(new core.ArgumentError.new(dart.str(core.Error.safeToString(path)) + " is not a String or" + " Directory"));
      }
      if (!dart.test(io._EmbedderConfig._mayChdir)) {
        dart.throw(new core.UnsupportedError.new("This embedder disallows setting Directory.current"));
      }
      let result = io._Directory._setCurrent(io._Namespace._namespace, _rawPath);
      if (core.ArgumentError.is(result)) dart.throw(result);
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("Setting current working directory failed", core.String._check(path), result));
      }
    }
    get uri() {
      return core.Uri.directory(this.path);
    }
    exists() {
      return FutureOfbool()._check(io._File._dispatchWithNamespace(io._IOService.directoryExists, [null, this[_rawPath$]]).then(core.bool, dart.fn(response => {
        if (dart.test(this[_isErrorResponse](response))) {
          dart.throw(this[_exceptionOrErrorFromResponse](response, "Exists failed"));
        }
        return dart.equals(response, 1);
      }, dynamicTobool())));
    }
    existsSync() {
      let result = io._Directory._exists(io._Namespace._namespace, this[_rawPath$]);
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("Exists failed", this.path, result));
      }
      return dart.equals(result, 1);
    }
    get absolute() {
      return io.Directory.new(this[_absolutePath]);
    }
    create(opts) {
      let recursive = opts && 'recursive' in opts ? opts.recursive : false;
      if (dart.test(recursive)) {
        return FutureOfDirectory()._check(this.exists().then(io.Directory, dart.fn(exists => {
          if (dart.test(exists)) return this;
          if (this.path != this.parent.path) {
            return FutureOfDirectory()._check(this.parent.create({recursive: true}).then(io.Directory, dart.fn(_ => this.create(), DirectoryToFutureOfDirectory())));
          } else {
            return this.create();
          }
        }, boolToFutureOrOfDirectory())));
      } else {
        return FutureOfDirectory()._check(io._File._dispatchWithNamespace(io._IOService.directoryCreate, [null, this[_rawPath$]]).then(io.Directory, dart.fn(response => {
          if (dart.test(this[_isErrorResponse](response))) {
            dart.throw(this[_exceptionOrErrorFromResponse](response, "Creation failed"));
          }
          return this;
        }, dynamicTo_Directory())));
      }
    }
    createSync(opts) {
      let recursive = opts && 'recursive' in opts ? opts.recursive : false;
      if (dart.test(recursive)) {
        if (dart.test(this.existsSync())) return;
        if (this.path != this.parent.path) {
          this.parent.createSync({recursive: true});
        }
      }
      let result = io._Directory._create(io._Namespace._namespace, this[_rawPath$]);
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("Creation failed", this.path, result));
      }
    }
    static get systemTemp() {
      return io.Directory.new(io._Directory._systemTemp(io._Namespace._namespace));
    }
    createTemp(prefix) {
      if (prefix === void 0) prefix = null;
      let t = prefix;
      t == null ? prefix = "" : t;
      if (this.path === "") {
        dart.throw(new core.ArgumentError.new("Directory.createTemp called with an empty path. " + "To use the system temp directory, use Directory.systemTemp"));
      }
      let fullPrefix = null;
      if (this.path[$endsWith]("/") || dart.test(io.Platform.isWindows) && this.path[$endsWith]("\\")) {
        fullPrefix = dart.str(this.path) + dart.str(prefix);
      } else {
        fullPrefix = dart.str(this.path) + dart.str(io.Platform.pathSeparator) + dart.str(prefix);
      }
      return FutureOfDirectory()._check(io._File._dispatchWithNamespace(io._IOService.directoryCreateTemp, [null, io.FileSystemEntity._toUtf8Array(fullPrefix)]).then(io.Directory, dart.fn(response => {
        if (dart.test(this[_isErrorResponse](response))) {
          dart.throw(this[_exceptionOrErrorFromResponse](response, "Creation of temporary directory failed"));
        }
        return io.Directory.new(core.String._check(response));
      }, dynamicToDirectory())));
    }
    createTempSync(prefix) {
      if (prefix === void 0) prefix = null;
      let t = prefix;
      t == null ? prefix = "" : t;
      if (this.path === "") {
        dart.throw(new core.ArgumentError.new("Directory.createTemp called with an empty path. " + "To use the system temp directory, use Directory.systemTemp"));
      }
      let fullPrefix = null;
      if (this.path[$endsWith]("/") || dart.test(io.Platform.isWindows) && this.path[$endsWith]("\\")) {
        fullPrefix = dart.str(this.path) + dart.str(prefix);
      } else {
        fullPrefix = dart.str(this.path) + dart.str(io.Platform.pathSeparator) + dart.str(prefix);
      }
      let result = io._Directory._createTemp(io._Namespace._namespace, io.FileSystemEntity._toUtf8Array(fullPrefix));
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("Creation of temporary directory failed", fullPrefix, result));
      }
      return io.Directory.new(core.String._check(result));
    }
    [_delete](opts) {
      let recursive = opts && 'recursive' in opts ? opts.recursive : false;
      return FutureOfDirectory()._check(io._File._dispatchWithNamespace(io._IOService.directoryDelete, [null, this[_rawPath$], recursive]).then(io.Directory, dart.fn(response => {
        if (dart.test(this[_isErrorResponse](response))) {
          dart.throw(this[_exceptionOrErrorFromResponse](response, "Deletion failed"));
        }
        return this;
      }, dynamicTo_Directory())));
    }
    [_deleteSync](opts) {
      let recursive = opts && 'recursive' in opts ? opts.recursive : false;
      let result = io._Directory._deleteNative(io._Namespace._namespace, this[_rawPath$], recursive);
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("Deletion failed", this.path, result));
      }
    }
    rename(newPath) {
      return FutureOfDirectory()._check(io._File._dispatchWithNamespace(io._IOService.directoryRename, [null, this[_rawPath$], newPath]).then(io.Directory, dart.fn(response => {
        if (dart.test(this[_isErrorResponse](response))) {
          dart.throw(this[_exceptionOrErrorFromResponse](response, "Rename failed"));
        }
        return io.Directory.new(newPath);
      }, dynamicToDirectory())));
    }
    renameSync(newPath) {
      if (!(typeof newPath == 'string')) {
        dart.throw(new core.ArgumentError.new());
      }
      let result = io._Directory._rename(io._Namespace._namespace, this[_rawPath$], newPath);
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("Rename failed", this.path, result));
      }
      return io.Directory.new(newPath);
    }
    list(opts) {
      let recursive = opts && 'recursive' in opts ? opts.recursive : false;
      let followLinks = opts && 'followLinks' in opts ? opts.followLinks : true;
      return new io._AsyncDirectoryLister.new(io.FileSystemEntity._toUtf8Array(io.FileSystemEntity._ensureTrailingPathSeparators(this.path)), recursive, followLinks).stream;
    }
    listSync(opts) {
      let recursive = opts && 'recursive' in opts ? opts.recursive : false;
      let followLinks = opts && 'followLinks' in opts ? opts.followLinks : true;
      if (!(typeof recursive == 'boolean') || !(typeof followLinks == 'boolean')) {
        dart.throw(new core.ArgumentError.new());
      }
      let result = JSArrayOfFileSystemEntity().of([]);
      io._Directory._fillWithDirectoryListing(io._Namespace._namespace, result, io.FileSystemEntity._toUtf8Array(io.FileSystemEntity._ensureTrailingPathSeparators(this.path)), recursive, followLinks);
      return result;
    }
    toString() {
      return "Directory: '" + dart.str(this.path) + "'";
    }
    [_isErrorResponse](response) {
      return core.List.is(response) && !dart.equals(response[$_get](0), 0);
    }
    [_exceptionOrErrorFromResponse](response, message) {
      if (!dart.test(this[_isErrorResponse](response))) dart.assertFailed();
      switch (dart.dindex(response, 0)) {
        case 1:
        {
          return new core.ArgumentError.new();
        }
        case 2:
        {
          let err = new io.OSError.new(core.String._check(dart.dindex(response, 2)), core.int._check(dart.dindex(response, 1)));
          return new io.FileSystemException.new(message, this.path, err);
        }
        default:
        {
          return core.Exception.new("Unknown error");
        }
      }
    }
  };
  (io._Directory.new = function(path) {
    this[_path$0] = null;
    this[_rawPath$0] = null;
    io._Directory.__proto__.new.call(this);
    core.ArgumentError.checkNotNull(path, "path");
    this[_path] = path;
    this[_rawPath$] = io.FileSystemEntity._toUtf8Array(this[_path]);
  }).prototype = io._Directory.prototype;
  (io._Directory.fromRawPath = function(rawPath) {
    this[_path$0] = null;
    this[_rawPath$0] = null;
    io._Directory.__proto__.new.call(this);
    if (rawPath == null) {
      dart.throw(new core.ArgumentError.new("rawPath cannot be null"));
    }
    this[_rawPath$] = io.FileSystemEntity._toNullTerminatedUtf8Array(rawPath);
    this[_path] = io.FileSystemEntity._toStringFromUtf8Array(rawPath);
  }).prototype = io._Directory.prototype;
  dart.addTypeTests(io._Directory);
  const _path$0 = Symbol("_Directory._path");
  const _rawPath$0 = Symbol("_Directory._rawPath");
  io._Directory[dart.implements] = () => [io.Directory];
  dart.setMethodSignature(io._Directory, () => ({
    __proto__: dart.getMethods(io._Directory.__proto__),
    exists: dart.fnType(async.Future$(core.bool), []),
    existsSync: dart.fnType(core.bool, []),
    create: dart.fnType(async.Future$(io.Directory), [], {recursive: core.bool}),
    createSync: dart.fnType(dart.void, [], {recursive: core.bool}),
    createTemp: dart.fnType(async.Future$(io.Directory), [], [core.String]),
    createTempSync: dart.fnType(io.Directory, [], [core.String]),
    [_delete]: dart.fnType(async.Future$(io.Directory), [], {recursive: core.bool}),
    [_deleteSync]: dart.fnType(dart.void, [], {recursive: core.bool}),
    rename: dart.fnType(async.Future$(io.Directory), [core.String]),
    renameSync: dart.fnType(io.Directory, [core.String]),
    list: dart.fnType(async.Stream$(io.FileSystemEntity), [], {recursive: core.bool, followLinks: core.bool}),
    listSync: dart.fnType(core.List$(io.FileSystemEntity), [], {recursive: core.bool, followLinks: core.bool}),
    [_isErrorResponse]: dart.fnType(core.bool, [dart.dynamic]),
    [_exceptionOrErrorFromResponse]: dart.fnType(dart.dynamic, [dart.dynamic, core.String])
  }));
  dart.setGetterSignature(io._Directory, () => ({
    __proto__: dart.getGetters(io._Directory.__proto__),
    path: core.String,
    absolute: io.Directory
  }));
  dart.setFieldSignature(io._Directory, () => ({
    __proto__: dart.getFields(io._Directory.__proto__),
    [_path]: dart.fieldType(core.String),
    [_rawPath$]: dart.fieldType(typed_data.Uint8List)
  }));
  dart.defineExtensionMethods(io._Directory, ['toString']);
  io._AsyncDirectoryListerOps = class _AsyncDirectoryListerOps extends core.Object {
    static new(pointer) {
      dart.throw(new core.UnsupportedError.new("Directory._list"));
    }
  };
  (io._AsyncDirectoryListerOps[dart.mixinNew] = function() {
  }).prototype = io._AsyncDirectoryListerOps.prototype;
  dart.addTypeTests(io._AsyncDirectoryListerOps);
  const _ops = Symbol('_ops');
  const _pointer = Symbol('_pointer');
  const _cleanup = Symbol('_cleanup');
  io._AsyncDirectoryLister = class _AsyncDirectoryLister extends core.Object {
    [_pointer]() {
      return this[_ops] == null ? null : this[_ops].getPointer();
    }
    get stream() {
      return this.controller.stream;
    }
    onListen() {
      FutureOfNull()._check(io._File._dispatchWithNamespace(io._IOService.directoryListStart, [null, this.rawPath, this.recursive, this.followLinks]).then(core.Null, dart.fn(response => {
        if (core.int.is(response)) {
          this[_ops] = io._AsyncDirectoryListerOps.new(response);
          this.next();
        } else if (core.Error.is(response)) {
          this.controller.addError(response, response[$stackTrace]);
          this.close();
        } else {
          this.error(response);
          this.close();
        }
      }, dynamicToNull())));
    }
    onResume() {
      if (!dart.test(this.nextRunning)) {
        this.next();
      }
    }
    onCancel() {
      this.canceled = true;
      if (!dart.test(this.nextRunning)) {
        this.close();
      }
      return this.closeCompleter.future;
    }
    next() {
      if (dart.test(this.canceled)) {
        this.close();
        return;
      }
      if (dart.test(this.controller.isPaused) || dart.test(this.nextRunning)) {
        return;
      }
      let pointer = this[_pointer]();
      if (pointer == null) {
        return;
      }
      this.nextRunning = true;
      FutureOfNull()._check(io._IOService._dispatch(io._IOService.directoryListNext, [pointer]).then(core.Null, dart.fn(result => {
        this.nextRunning = false;
        if (core.List.is(result)) {
          this.next();
          if (!(result[$length][$modulo](2) === 0)) dart.assertFailed();
          for (let i = 0; i < dart.notNull(result[$length]); i++) {
            if (!(i[$modulo](2) === 0)) dart.assertFailed();
            switch (result[$_get](i++)) {
              case 0:
              {
                this.controller.add(io.File.fromRawPath(typed_data.Uint8List._check(result[$_get](i))));
                break;
              }
              case 1:
              {
                this.controller.add(io.Directory.fromRawPath(typed_data.Uint8List._check(result[$_get](i))));
                break;
              }
              case 2:
              {
                this.controller.add(io.Link.fromRawPath(typed_data.Uint8List._check(result[$_get](i))));
                break;
              }
              case 3:
              {
                this.error(result[$_get](i));
                break;
              }
              case 4:
              {
                this.canceled = true;
                return;
              }
            }
          }
        } else {
          this.controller.addError(new io.FileSystemException.new("Internal error"));
        }
      }, dynamicToNull())));
    }
    [_cleanup]() {
      this.controller.close();
      this.closeCompleter.complete();
      this[_ops] = null;
    }
    close() {
      if (dart.test(this.closed)) {
        return;
      }
      if (dart.test(this.nextRunning)) {
        return;
      }
      this.closed = true;
      let pointer = this[_pointer]();
      if (pointer == null) {
        this[_cleanup]();
      } else {
        io._IOService._dispatch(io._IOService.directoryListStop, [pointer]).whenComplete(dart.bind(this, _cleanup));
      }
    }
    error(message) {
      let errorType = dart.dindex(dart.dindex(message, 2), 0);
      if (dart.equals(errorType, 1)) {
        this.controller.addError(new core.ArgumentError.new());
      } else if (dart.equals(errorType, 2)) {
        let responseErrorInfo = dart.dindex(message, 2);
        let err = new io.OSError.new(core.String._check(dart.dindex(responseErrorInfo, 2)), core.int._check(dart.dindex(responseErrorInfo, 1)));
        let errorPath = dart.dindex(message, 1);
        if (errorPath == null) {
          errorPath = convert.utf8.decode(this.rawPath, {allowMalformed: true});
        } else if (typed_data.Uint8List.is(errorPath)) {
          errorPath = convert.utf8.decode(ListOfint()._check(dart.dindex(message, 1)), {allowMalformed: true});
        }
        this.controller.addError(new io.FileSystemException.new("Directory listing failed", core.String._check(errorPath), err));
      } else {
        this.controller.addError(new io.FileSystemException.new("Internal error"));
      }
    }
  };
  (io._AsyncDirectoryLister.new = function(rawPath, recursive, followLinks) {
    this.controller = null;
    this.canceled = false;
    this.nextRunning = false;
    this.closed = false;
    this[_ops] = null;
    this.closeCompleter = async.Completer.new();
    this.rawPath = rawPath;
    this.recursive = recursive;
    this.followLinks = followLinks;
    this.controller = StreamControllerOfFileSystemEntity().new({onListen: dart.bind(this, 'onListen'), onResume: dart.bind(this, 'onResume'), onCancel: dart.bind(this, 'onCancel'), sync: true});
  }).prototype = io._AsyncDirectoryLister.prototype;
  dart.addTypeTests(io._AsyncDirectoryLister);
  dart.setMethodSignature(io._AsyncDirectoryLister, () => ({
    __proto__: dart.getMethods(io._AsyncDirectoryLister.__proto__),
    [_pointer]: dart.fnType(core.int, []),
    onListen: dart.fnType(dart.void, []),
    onResume: dart.fnType(dart.void, []),
    onCancel: dart.fnType(async.Future, []),
    next: dart.fnType(dart.void, []),
    [_cleanup]: dart.fnType(dart.void, []),
    close: dart.fnType(dart.void, []),
    error: dart.fnType(dart.void, [dart.dynamic])
  }));
  dart.setGetterSignature(io._AsyncDirectoryLister, () => ({
    __proto__: dart.getGetters(io._AsyncDirectoryLister.__proto__),
    stream: async.Stream$(io.FileSystemEntity)
  }));
  dart.setFieldSignature(io._AsyncDirectoryLister, () => ({
    __proto__: dart.getFields(io._AsyncDirectoryLister.__proto__),
    rawPath: dart.finalFieldType(typed_data.Uint8List),
    recursive: dart.finalFieldType(core.bool),
    followLinks: dart.finalFieldType(core.bool),
    controller: dart.fieldType(StreamControllerOfFileSystemEntity()),
    canceled: dart.fieldType(core.bool),
    nextRunning: dart.fieldType(core.bool),
    closed: dart.fieldType(core.bool),
    [_ops]: dart.fieldType(io._AsyncDirectoryListerOps),
    closeCompleter: dart.fieldType(async.Completer)
  }));
  dart.defineLazy(io._AsyncDirectoryLister, {
    /*io._AsyncDirectoryLister.listFile*/get listFile() {
      return 0;
    },
    /*io._AsyncDirectoryLister.listDirectory*/get listDirectory() {
      return 1;
    },
    /*io._AsyncDirectoryLister.listLink*/get listLink() {
      return 2;
    },
    /*io._AsyncDirectoryLister.listError*/get listError() {
      return 3;
    },
    /*io._AsyncDirectoryLister.listDone*/get listDone() {
      return 4;
    },
    /*io._AsyncDirectoryLister.responseType*/get responseType() {
      return 0;
    },
    /*io._AsyncDirectoryLister.responsePath*/get responsePath() {
      return 1;
    },
    /*io._AsyncDirectoryLister.responseComplete*/get responseComplete() {
      return 1;
    },
    /*io._AsyncDirectoryLister.responseError*/get responseError() {
      return 2;
    }
  });
  io._EmbedderConfig = class _EmbedderConfig extends core.Object {};
  (io._EmbedderConfig.new = function() {
  }).prototype = io._EmbedderConfig.prototype;
  dart.addTypeTests(io._EmbedderConfig);
  dart.defineLazy(io._EmbedderConfig, {
    /*io._EmbedderConfig._mayChdir*/get _mayChdir() {
      return true;
    },
    set _mayChdir(_) {},
    /*io._EmbedderConfig._mayExit*/get _mayExit() {
      return true;
    },
    set _mayExit(_) {},
    /*io._EmbedderConfig._maySetEchoMode*/get _maySetEchoMode() {
      return true;
    },
    set _maySetEchoMode(_) {},
    /*io._EmbedderConfig._maySetLineMode*/get _maySetLineMode() {
      return true;
    },
    set _maySetLineMode(_) {},
    /*io._EmbedderConfig._maySleep*/get _maySleep() {
      return true;
    },
    set _maySleep(_) {}
  });
  io._EventHandler = class _EventHandler extends core.Object {
    static _sendData(sender, sendPort, data) {
      dart.throw(new core.UnsupportedError.new("EventHandler._sendData"));
    }
  };
  (io._EventHandler.new = function() {
  }).prototype = io._EventHandler.prototype;
  dart.addTypeTests(io._EventHandler);
  const _mode = Symbol('_mode');
  io.FileMode = class FileMode extends core.Object {};
  (io.FileMode._internal = function(mode) {
    this[_mode] = mode;
  }).prototype = io.FileMode.prototype;
  dart.addTypeTests(io.FileMode);
  dart.setFieldSignature(io.FileMode, () => ({
    __proto__: dart.getFields(io.FileMode.__proto__),
    [_mode]: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(io.FileMode, {
    /*io.FileMode.read*/get read() {
      return dart.const(new io.FileMode._internal(0));
    },
    /*io.FileMode.READ*/get READ() {
      return io.FileMode.read;
    },
    /*io.FileMode.write*/get write() {
      return dart.const(new io.FileMode._internal(1));
    },
    /*io.FileMode.WRITE*/get WRITE() {
      return io.FileMode.write;
    },
    /*io.FileMode.append*/get append() {
      return dart.const(new io.FileMode._internal(2));
    },
    /*io.FileMode.APPEND*/get APPEND() {
      return io.FileMode.append;
    },
    /*io.FileMode.writeOnly*/get writeOnly() {
      return dart.const(new io.FileMode._internal(3));
    },
    /*io.FileMode.WRITE_ONLY*/get WRITE_ONLY() {
      return io.FileMode.writeOnly;
    },
    /*io.FileMode.writeOnlyAppend*/get writeOnlyAppend() {
      return dart.const(new io.FileMode._internal(4));
    },
    /*io.FileMode.WRITE_ONLY_APPEND*/get WRITE_ONLY_APPEND() {
      return io.FileMode.writeOnlyAppend;
    }
  });
  dart.defineLazy(io, {
    /*io.READ*/get READ() {
      return io.FileMode.read;
    },
    /*io.WRITE*/get WRITE() {
      return io.FileMode.write;
    },
    /*io.APPEND*/get APPEND() {
      return io.FileMode.append;
    },
    /*io.WRITE_ONLY*/get WRITE_ONLY() {
      return io.FileMode.writeOnly;
    },
    /*io.WRITE_ONLY_APPEND*/get WRITE_ONLY_APPEND() {
      return io.FileMode.writeOnlyAppend;
    }
  });
  const _type$0 = Symbol('_type');
  io.FileLock = class FileLock extends core.Object {};
  (io.FileLock._internal = function(type) {
    this[_type$0] = type;
  }).prototype = io.FileLock.prototype;
  dart.addTypeTests(io.FileLock);
  dart.setFieldSignature(io.FileLock, () => ({
    __proto__: dart.getFields(io.FileLock.__proto__),
    [_type$0]: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(io.FileLock, {
    /*io.FileLock.shared*/get shared() {
      return dart.const(new io.FileLock._internal(1));
    },
    /*io.FileLock.SHARED*/get SHARED() {
      return io.FileLock.shared;
    },
    /*io.FileLock.exclusive*/get exclusive() {
      return dart.const(new io.FileLock._internal(2));
    },
    /*io.FileLock.EXCLUSIVE*/get EXCLUSIVE() {
      return io.FileLock.exclusive;
    },
    /*io.FileLock.blockingShared*/get blockingShared() {
      return dart.const(new io.FileLock._internal(3));
    },
    /*io.FileLock.BLOCKING_SHARED*/get BLOCKING_SHARED() {
      return io.FileLock.blockingShared;
    },
    /*io.FileLock.blockingExclusive*/get blockingExclusive() {
      return dart.const(new io.FileLock._internal(4));
    },
    /*io.FileLock.BLOCKING_EXCLUSIVE*/get BLOCKING_EXCLUSIVE() {
      return io.FileLock.blockingExclusive;
    }
  });
  io.File = class File extends core.Object {
    static new(path) {
      let overrides = io.IOOverrides.current;
      if (overrides == null) {
        return new io._File.new(path);
      }
      return overrides.createFile(path);
    }
    static fromUri(uri) {
      return io.File.new(uri.toFilePath());
    }
    static fromRawPath(rawPath) {
      return new io._File.fromRawPath(rawPath);
    }
  };
  (io.File[dart.mixinNew] = function() {
  }).prototype = io.File.prototype;
  dart.addTypeTests(io.File);
  io.File[dart.implements] = () => [io.FileSystemEntity];
  io.RandomAccessFile = class RandomAccessFile extends core.Object {};
  (io.RandomAccessFile.new = function() {
  }).prototype = io.RandomAccessFile.prototype;
  dart.addTypeTests(io.RandomAccessFile);
  io.FileSystemException = class FileSystemException extends core.Object {
    get message() {
      return this[message$8];
    }
    set message(value) {
      super.message = value;
    }
    get path() {
      return this[path$];
    }
    set path(value) {
      super.path = value;
    }
    get osError() {
      return this[osError$];
    }
    set osError(value) {
      super.osError = value;
    }
    toString() {
      let sb = new core.StringBuffer.new();
      sb.write("FileSystemException");
      if (this.message[$isNotEmpty]) {
        sb.write(": " + dart.str(this.message));
        if (this.path != null) {
          sb.write(", path = '" + dart.str(this.path) + "'");
        }
        if (this.osError != null) {
          sb.write(" (" + dart.str(this.osError) + ")");
        }
      } else if (this.osError != null) {
        sb.write(": " + dart.str(this.osError));
        if (this.path != null) {
          sb.write(", path = '" + dart.str(this.path) + "'");
        }
      } else if (this.path != null) {
        sb.write(": " + dart.str(this.path));
      }
      return sb.toString();
    }
  };
  (io.FileSystemException.new = function(message, path, osError) {
    if (message === void 0) message = "";
    if (path === void 0) path = "";
    if (osError === void 0) osError = null;
    this[message$8] = message;
    this[path$] = path;
    this[osError$] = osError;
  }).prototype = io.FileSystemException.prototype;
  dart.addTypeTests(io.FileSystemException);
  const message$8 = Symbol("FileSystemException.message");
  const path$ = Symbol("FileSystemException.path");
  const osError$ = Symbol("FileSystemException.osError");
  io.FileSystemException[dart.implements] = () => [io.IOException];
  dart.setFieldSignature(io.FileSystemException, () => ({
    __proto__: dart.getFields(io.FileSystemException.__proto__),
    message: dart.finalFieldType(core.String),
    path: dart.finalFieldType(core.String),
    osError: dart.finalFieldType(io.OSError)
  }));
  dart.defineExtensionMethods(io.FileSystemException, ['toString']);
  dart.defineLazy(io, {
    /*io._blockSize*/get _blockSize() {
      return 64 * 1024;
    }
  });
  const _position$0 = Symbol('_position');
  const _end$ = Symbol('_end');
  const _controller$ = Symbol('_controller');
  const _openedFile = Symbol('_openedFile');
  const _closeCompleter = Symbol('_closeCompleter');
  const _unsubscribed = Symbol('_unsubscribed');
  const _readInProgress = Symbol('_readInProgress');
  const _atEnd = Symbol('_atEnd');
  const _setupController = Symbol('_setupController');
  const _start$2 = Symbol('_start');
  const _readBlock = Symbol('_readBlock');
  const _closeFile = Symbol('_closeFile');
  io._FileStream = class _FileStream extends async.Stream$(core.List$(core.int)) {
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      this[_setupController]();
      return this[_controller$].stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
    [_setupController]() {
      this[_controller$] = StreamControllerOfListOfint().new({sync: true, onListen: dart.bind(this, _start$2), onResume: dart.bind(this, _readBlock), onCancel: dart.fn(() => {
          this[_unsubscribed] = true;
          return this[_closeFile]();
        }, VoidToFuture())});
    }
    [_closeFile]() {
      if (dart.test(this[_readInProgress]) || dart.test(this[_closed])) {
        return this[_closeCompleter].future;
      }
      this[_closed] = true;
      const done = (function() {
        this[_closeCompleter].complete();
        this[_controller$].close();
      }).bind(this);
      dart.fn(done, VoidTovoid());
      this[_openedFile].close().catchError(dart.bind(this[_controller$], 'addError')).whenComplete(done);
      return this[_closeCompleter].future;
    }
    [_readBlock]() {
      if (dart.test(this[_readInProgress])) return;
      if (dart.test(this[_atEnd])) {
        this[_closeFile]();
        return;
      }
      this[_readInProgress] = true;
      let readBytes = 65536;
      if (this[_end$] != null) {
        readBytes = math.min(core.int, readBytes, dart.notNull(this[_end$]) - dart.notNull(this[_position$0]));
        if (readBytes < 0) {
          this[_readInProgress] = false;
          if (!dart.test(this[_unsubscribed])) {
            this[_controller$].addError(new core.RangeError.new("Bad end position: " + dart.str(this[_end$])));
            this[_closeFile]();
            this[_unsubscribed] = true;
          }
          return;
        }
      }
      FutureOfNull()._check(this[_openedFile].read(readBytes).then(core.Null, dart.fn(block => {
        this[_readInProgress] = false;
        if (dart.test(this[_unsubscribed])) {
          this[_closeFile]();
          return;
        }
        this[_position$0] = dart.notNull(this[_position$0]) + dart.notNull(block[$length]);
        if (dart.notNull(block[$length]) < readBytes || this[_end$] != null && this[_position$0] == this[_end$]) {
          this[_atEnd] = true;
        }
        if (!dart.test(this[_atEnd]) && !dart.test(this[_controller$].isPaused)) {
          this[_readBlock]();
        }
        this[_controller$].add(block);
        if (dart.test(this[_atEnd])) {
          this[_closeFile]();
        }
      }, ListOfintToNull()))).catchError(dart.fn((e, s) => {
        if (!dart.test(this[_unsubscribed])) {
          this[_controller$].addError(e, core.StackTrace._check(s));
          this[_closeFile]();
          this[_unsubscribed] = true;
        }
      }, dynamicAnddynamicToNull()));
    }
    [_start$2]() {
      if (dart.notNull(this[_position$0]) < 0) {
        this[_controller$].addError(new core.RangeError.new("Bad start position: " + dart.str(this[_position$0])));
        this[_controller$].close();
        this[_closeCompleter].complete();
        return;
      }
      const onReady = (function(file) {
        this[_openedFile] = file;
        this[_readInProgress] = false;
        this[_readBlock]();
      }).bind(this);
      dart.fn(onReady, RandomAccessFileTovoid());
      const onOpenFile = (function(file) {
        if (dart.notNull(this[_position$0]) > 0) {
          file.setPosition(this[_position$0]).then(dart.void, onReady, {onError: dart.fn((e, s) => {
              this[_controller$].addError(e, core.StackTrace._check(s));
              this[_readInProgress] = false;
              this[_closeFile]();
            }, dynamicAnddynamicToNull())});
        } else {
          onReady(file);
        }
      }).bind(this);
      dart.fn(onOpenFile, RandomAccessFileTovoid());
      const openFailed = (function(error, stackTrace) {
        this[_controller$].addError(error, core.StackTrace._check(stackTrace));
        this[_controller$].close();
        this[_closeCompleter].complete();
      }).bind(this);
      dart.fn(openFailed, dynamicAnddynamicTovoid());
      if (this[_path] != null) {
        io.File.new(this[_path]).open({mode: io.FileMode.read}).then(dart.void, onOpenFile, {onError: openFailed});
      } else {
        try {
          onOpenFile(io._File._openStdioSync(0));
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          openFailed(e, s);
        }
      }
    }
  };
  (io._FileStream.new = function(path, position, end) {
    this[_controller$] = null;
    this[_openedFile] = null;
    this[_closeCompleter] = async.Completer.new();
    this[_unsubscribed] = false;
    this[_readInProgress] = true;
    this[_closed] = false;
    this[_atEnd] = false;
    this[_path] = path;
    this[_position$0] = position;
    this[_end$] = end;
    io._FileStream.__proto__.new.call(this);
    let t = this[_position$0];
    t == null ? this[_position$0] = 0 : t;
  }).prototype = io._FileStream.prototype;
  (io._FileStream.forStdin = function() {
    this[_controller$] = null;
    this[_path] = null;
    this[_openedFile] = null;
    this[_end$] = null;
    this[_closeCompleter] = async.Completer.new();
    this[_unsubscribed] = false;
    this[_readInProgress] = true;
    this[_closed] = false;
    this[_atEnd] = false;
    this[_position$0] = 0;
    io._FileStream.__proto__.new.call(this);
  }).prototype = io._FileStream.prototype;
  dart.addTypeTests(io._FileStream);
  dart.setMethodSignature(io._FileStream, () => ({
    __proto__: dart.getMethods(io._FileStream.__proto__),
    listen: dart.fnType(async.StreamSubscription$(core.List$(core.int)), [dart.fnType(dart.void, [core.List$(core.int)])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
    [_setupController]: dart.fnType(dart.void, []),
    [_closeFile]: dart.fnType(async.Future, []),
    [_readBlock]: dart.fnType(dart.void, []),
    [_start$2]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(io._FileStream, () => ({
    __proto__: dart.getFields(io._FileStream.__proto__),
    [_controller$]: dart.fieldType(StreamControllerOfListOfint()),
    [_path]: dart.fieldType(core.String),
    [_openedFile]: dart.fieldType(io.RandomAccessFile),
    [_position$0]: dart.fieldType(core.int),
    [_end$]: dart.fieldType(core.int),
    [_closeCompleter]: dart.finalFieldType(async.Completer),
    [_unsubscribed]: dart.fieldType(core.bool),
    [_readInProgress]: dart.fieldType(core.bool),
    [_closed]: dart.fieldType(core.bool),
    [_atEnd]: dart.fieldType(core.bool)
  }));
  const _file = Symbol('_file');
  const _openFuture = Symbol('_openFuture');
  io._FileStreamConsumer = class _FileStreamConsumer extends async.StreamConsumer$(core.List$(core.int)) {
    addStream(stream) {
      StreamOfListOfint()._check(stream);
      let completer = CompleterOfFile().sync();
      FutureOfNull()._check(this[_openFuture].then(core.Null, dart.fn(openedFile => {
        let _subscription = null;
        function error(e, stackTrace) {
          if (stackTrace === void 0) stackTrace = null;
          dart.dsend(_subscription, 'cancel', []);
          openedFile.close();
          completer.completeError(e, stackTrace);
        }
        dart.fn(error, dynamic__Tovoid());
        _subscription = stream.listen(dart.fn(d => {
          dart.dsend(_subscription, 'pause', []);
          try {
            openedFile.writeFrom(d, 0, d[$length]).then(dart.dynamic, dart.fn(_ => dart.dsend(_subscription, 'resume', []), RandomAccessFileTodynamic()), {onError: error});
          } catch (e$) {
            let e = dart.getThrown(e$);
            let stackTrace = dart.stackTrace(e$);
            error(e, stackTrace);
          }
        }, ListOfintToNull()), {onDone: dart.fn(() => {
            completer.complete(this[_file]);
          }, VoidToNull()), onError: error, cancelOnError: true});
      }, RandomAccessFileToNull()))).catchError(dart.bind(completer, 'completeError'));
      return completer.future;
    }
    close() {
      return FutureOfFile()._check(this[_openFuture].then(dart.void, dart.fn(openedFile => openedFile.close(), RandomAccessFileToFutureOfvoid())).then(io.File, dart.fn(_ => this[_file], voidToFile())));
    }
  };
  (io._FileStreamConsumer.new = function(file, mode) {
    this[_openFuture] = null;
    this[_file] = file;
    this[_openFuture] = this[_file].open({mode: mode});
  }).prototype = io._FileStreamConsumer.prototype;
  (io._FileStreamConsumer.fromStdio = function(fd) {
    this[_file] = null;
    this[_openFuture] = null;
    this[_openFuture] = FutureOfRandomAccessFile().value(io._File._openStdioSync(fd));
  }).prototype = io._FileStreamConsumer.prototype;
  dart.addTypeTests(io._FileStreamConsumer);
  dart.setMethodSignature(io._FileStreamConsumer, () => ({
    __proto__: dart.getMethods(io._FileStreamConsumer.__proto__),
    addStream: dart.fnType(async.Future$(io.File), [core.Object]),
    close: dart.fnType(async.Future$(io.File), [])
  }));
  dart.setFieldSignature(io._FileStreamConsumer, () => ({
    __proto__: dart.getFields(io._FileStreamConsumer.__proto__),
    [_file]: dart.fieldType(io.File),
    [_openFuture]: dart.fieldType(FutureOfRandomAccessFile())
  }));
  const _tryDecode = Symbol('_tryDecode');
  let const$57;
  let const$58;
  io._File = class _File extends io.FileSystemEntity {
    get [_path]() {
      return this[_path$1];
    }
    set [_path](value) {
      this[_path$1] = value;
    }
    get [_rawPath$]() {
      return this[_rawPath$1];
    }
    set [_rawPath$](value) {
      this[_rawPath$1] = value;
    }
    get path() {
      return this[_path];
    }
    static _namespacePointer() {
      return io._Namespace._namespacePointer;
    }
    static _dispatchWithNamespace(request, data) {
      data[$_set](0, io._File._namespacePointer());
      return io._IOService._dispatch(request, data);
    }
    exists() {
      return FutureOfbool()._check(io._File._dispatchWithNamespace(io._IOService.fileExists, [null, this[_rawPath$]]).then(core.bool, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "Cannot check existence", this.path));
        }
        return FutureOrOfbool()._check(response);
      }, dynamicToFutureOrOfbool())));
    }
    static _exists(namespace, rawPath) {
      dart.throw(new core.UnsupportedError.new("File._exists"));
    }
    existsSync() {
      let result = io._File._exists(io._Namespace._namespace, this[_rawPath$]);
      io._File.throwIfError(result, "Cannot check existence of file", this.path);
      return core.bool._check(result);
    }
    get absolute() {
      return io.File.new(this[_absolutePath]);
    }
    create(opts) {
      let recursive = opts && 'recursive' in opts ? opts.recursive : false;
      let result = dart.test(recursive) ? this.parent.create({recursive: true}) : FutureOfNull().value(null);
      return FutureOfFile()._check(result.then(dart.dynamic, dart.fn(_ => io._File._dispatchWithNamespace(io._IOService.fileCreate, [null, this[_rawPath$]]), DirectoryToFuture())).then(io.File, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "Cannot create file", this.path));
        }
        return this;
      }, dynamicTo_File())));
    }
    static _create(namespace, rawPath) {
      dart.throw(new core.UnsupportedError.new("File._create"));
    }
    static _createLink(namespace, rawPath, target) {
      dart.throw(new core.UnsupportedError.new("File._createLink"));
    }
    static _linkTarget(namespace, rawPath) {
      dart.throw(new core.UnsupportedError.new("File._linkTarget"));
    }
    createSync(opts) {
      let recursive = opts && 'recursive' in opts ? opts.recursive : false;
      if (dart.test(recursive)) {
        this.parent.createSync({recursive: true});
      }
      let result = io._File._create(io._Namespace._namespace, this[_rawPath$]);
      io._File.throwIfError(result, "Cannot create file", this.path);
    }
    [_delete](opts) {
      let recursive = opts && 'recursive' in opts ? opts.recursive : false;
      if (dart.test(recursive)) {
        return FutureOfFile()._check(io.Directory.new(this.path).delete({recursive: true}).then(io.File, dart.fn(_ => this, FileSystemEntityTo_File())));
      }
      return FutureOfFile()._check(io._File._dispatchWithNamespace(io._IOService.fileDelete, [null, this[_rawPath$]]).then(io.File, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "Cannot delete file", this.path));
        }
        return this;
      }, dynamicTo_File())));
    }
    static _deleteNative(namespace, rawPath) {
      dart.throw(new core.UnsupportedError.new("File._deleteNative"));
    }
    static _deleteLinkNative(namespace, rawPath) {
      dart.throw(new core.UnsupportedError.new("File._deleteLinkNative"));
    }
    [_deleteSync](opts) {
      let recursive = opts && 'recursive' in opts ? opts.recursive : false;
      if (dart.test(recursive)) {
        return io.Directory.fromRawPath(this[_rawPath$]).deleteSync({recursive: true});
      }
      let result = io._File._deleteNative(io._Namespace._namespace, this[_rawPath$]);
      io._File.throwIfError(result, "Cannot delete file", this.path);
    }
    rename(newPath) {
      return FutureOfFile()._check(io._File._dispatchWithNamespace(io._IOService.fileRename, [null, this[_rawPath$], newPath]).then(io.File, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "Cannot rename file to '" + dart.str(newPath) + "'", this.path));
        }
        return io.File.new(newPath);
      }, dynamicToFile())));
    }
    static _rename(namespace, oldPath, newPath) {
      dart.throw(new core.UnsupportedError.new("File._rename"));
    }
    static _renameLink(namespace, oldPath, newPath) {
      dart.throw(new core.UnsupportedError.new("File._renameLink"));
    }
    renameSync(newPath) {
      let result = io._File._rename(io._Namespace._namespace, this[_rawPath$], newPath);
      io._File.throwIfError(result, "Cannot rename file to '" + dart.str(newPath) + "'", this.path);
      return io.File.new(newPath);
    }
    copy(newPath) {
      return FutureOfFile()._check(io._File._dispatchWithNamespace(io._IOService.fileCopy, [null, this[_rawPath$], newPath]).then(io.File, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "Cannot copy file to '" + dart.str(newPath) + "'", this.path));
        }
        return io.File.new(newPath);
      }, dynamicToFile())));
    }
    static _copy(namespace, oldPath, newPath) {
      dart.throw(new core.UnsupportedError.new("File._copy"));
    }
    copySync(newPath) {
      let result = io._File._copy(io._Namespace._namespace, this[_rawPath$], newPath);
      io._File.throwIfError(result, "Cannot copy file to '" + dart.str(newPath) + "'", this.path);
      return io.File.new(newPath);
    }
    open(opts) {
      let mode = opts && 'mode' in opts ? opts.mode : io.FileMode.read;
      if (!dart.equals(mode, io.FileMode.read) && !dart.equals(mode, io.FileMode.write) && !dart.equals(mode, io.FileMode.append) && !dart.equals(mode, io.FileMode.writeOnly) && !dart.equals(mode, io.FileMode.writeOnlyAppend)) {
        return FutureOfRandomAccessFile().error(new core.ArgumentError.new("Invalid file mode for this operation"));
      }
      return FutureOfRandomAccessFile()._check(io._File._dispatchWithNamespace(io._IOService.fileOpen, [null, this[_rawPath$], mode[_mode]]).then(io.RandomAccessFile, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "Cannot open file", this.path));
        }
        return new io._RandomAccessFile.new(core.int._check(response), this.path);
      }, dynamicTo_RandomAccessFile())));
    }
    length() {
      return FutureOfint()._check(io._File._dispatchWithNamespace(io._IOService.fileLengthFromPath, [null, this[_rawPath$]]).then(core.int, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "Cannot retrieve length of file", this.path));
        }
        return FutureOrOfint()._check(response);
      }, dynamicToFutureOrOfint())));
    }
    static _lengthFromPath(namespace, rawPath) {
      dart.throw(new core.UnsupportedError.new("File._lengthFromPath"));
    }
    lengthSync() {
      let result = io._File._lengthFromPath(io._Namespace._namespace, this[_rawPath$]);
      io._File.throwIfError(result, "Cannot retrieve length of file", this.path);
      return core.int._check(result);
    }
    lastAccessed() {
      return FutureOfDateTime()._check(io._File._dispatchWithNamespace(io._IOService.fileLastAccessed, [null, this[_rawPath$]]).then(core.DateTime, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "Cannot retrieve access time", this.path));
        }
        return new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(response));
      }, dynamicToDateTime())));
    }
    static _lastAccessed(namespace, rawPath) {
      dart.throw(new core.UnsupportedError.new("File._lastAccessed"));
    }
    lastAccessedSync() {
      let ms = io._File._lastAccessed(io._Namespace._namespace, this[_rawPath$]);
      io._File.throwIfError(ms, "Cannot retrieve access time", this.path);
      return new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(ms));
    }
    setLastAccessed(time) {
      let millis = time.millisecondsSinceEpoch;
      return io._File._dispatchWithNamespace(io._IOService.fileSetLastAccessed, [null, this[_rawPath$], millis]).then(dart.dynamic, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "Cannot set access time", this.path));
        }
        return null;
      }, dynamicToNull()));
    }
    static _setLastAccessed(namespace, rawPath, millis) {
      dart.throw(new core.UnsupportedError.new("File._setLastAccessed"));
    }
    setLastAccessedSync(time) {
      let millis = time.millisecondsSinceEpoch;
      let result = io._File._setLastAccessed(io._Namespace._namespace, this[_rawPath$], millis);
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("Failed to set file access time", this.path, result));
      }
    }
    lastModified() {
      return FutureOfDateTime()._check(io._File._dispatchWithNamespace(io._IOService.fileLastModified, [null, this[_rawPath$]]).then(core.DateTime, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "Cannot retrieve modification time", this.path));
        }
        return new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(response));
      }, dynamicToDateTime())));
    }
    static _lastModified(namespace, rawPath) {
      dart.throw(new core.UnsupportedError.new("File._lastModified"));
    }
    lastModifiedSync() {
      let ms = io._File._lastModified(io._Namespace._namespace, this[_rawPath$]);
      io._File.throwIfError(ms, "Cannot retrieve modification time", this.path);
      return new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(ms));
    }
    setLastModified(time) {
      let millis = time.millisecondsSinceEpoch;
      return io._File._dispatchWithNamespace(io._IOService.fileSetLastModified, [null, this[_rawPath$], millis]).then(dart.dynamic, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "Cannot set modification time", this.path));
        }
        return null;
      }, dynamicToNull()));
    }
    static _setLastModified(namespace, rawPath, millis) {
      dart.throw(new core.UnsupportedError.new("File._setLastModified"));
    }
    setLastModifiedSync(time) {
      let millis = time.millisecondsSinceEpoch;
      let result = io._File._setLastModified(io._Namespace._namespace, this[_rawPath$], millis);
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("Failed to set file modification time", this.path, result));
      }
    }
    static _open(namespace, rawPath, mode) {
      dart.throw(new core.UnsupportedError.new("File._open"));
    }
    openSync(opts) {
      let mode = opts && 'mode' in opts ? opts.mode : io.FileMode.read;
      if (!dart.equals(mode, io.FileMode.read) && !dart.equals(mode, io.FileMode.write) && !dart.equals(mode, io.FileMode.append) && !dart.equals(mode, io.FileMode.writeOnly) && !dart.equals(mode, io.FileMode.writeOnlyAppend)) {
        dart.throw(new core.ArgumentError.new("Invalid file mode for this operation"));
      }
      let id = io._File._open(io._Namespace._namespace, this[_rawPath$], mode[_mode]);
      io._File.throwIfError(id, "Cannot open file", this.path);
      return new io._RandomAccessFile.new(core.int._check(id), this[_path]);
    }
    static _openStdio(fd) {
      dart.throw(new core.UnsupportedError.new("File._openStdio"));
    }
    static _openStdioSync(fd) {
      let id = io._File._openStdio(fd);
      if (id === 0) {
        dart.throw(new io.FileSystemException.new("Cannot open stdio file for: " + dart.str(fd)));
      }
      return new io._RandomAccessFile.new(id, "");
    }
    openRead(start, end) {
      if (start === void 0) start = null;
      if (end === void 0) end = null;
      return new io._FileStream.new(this.path, start, end);
    }
    openWrite(opts) {
      let mode = opts && 'mode' in opts ? opts.mode : io.FileMode.write;
      let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
      if (!dart.equals(mode, io.FileMode.write) && !dart.equals(mode, io.FileMode.append) && !dart.equals(mode, io.FileMode.writeOnly) && !dart.equals(mode, io.FileMode.writeOnlyAppend)) {
        dart.throw(new core.ArgumentError.new("Invalid file mode for this operation"));
      }
      let consumer = new io._FileStreamConsumer.new(this, mode);
      return io.IOSink.new(consumer, {encoding: encoding});
    }
    readAsBytes() {
      function readDataChunked(file) {
        let builder = io.BytesBuilder.new({copy: false});
        let completer = CompleterOfListOfint().new();
        function read() {
          FutureOfNull()._check(file.read(65536).then(core.Null, dart.fn(data => {
            if (dart.notNull(data[$length]) > 0) {
              builder.add(data);
              read();
            } else {
              completer.complete(builder.takeBytes());
            }
          }, ListOfintToNull()), {onError: dart.bind(completer, 'completeError')}));
        }
        dart.fn(read, VoidTovoid());
        read();
        return completer.future;
      }
      dart.fn(readDataChunked, RandomAccessFileToFutureOfListOfint());
      return FutureOfListOfint()._check(this.open().then(ListOfint(), dart.fn(file => FutureOfListOfint()._check(file.length().then(ListOfint(), dart.fn(length => {
        if (length === 0) {
          return readDataChunked(file);
        }
        return file.read(length);
      }, intToFutureOfListOfint()))).whenComplete(dart.bind(file, 'close')), RandomAccessFileToFutureOfListOfint())));
    }
    readAsBytesSync() {
      let opened = this.openSync();
      try {
        let data = null;
        let length = opened.lengthSync();
        if (length === 0) {
          let builder = io.BytesBuilder.new({copy: false});
          do {
            data = opened.readSync(65536);
            if (dart.notNull(data[$length]) > 0) builder.add(data);
          } while (dart.notNull(data[$length]) > 0);
          data = builder.takeBytes();
        } else {
          data = opened.readSync(length);
        }
        return data;
      } finally {
        opened.closeSync();
      }
    }
    [_tryDecode](bytes, encoding) {
      try {
        return encoding.decode(bytes);
      } catch (e) {
        let _ = dart.getThrown(e);
        dart.throw(new io.FileSystemException.new("Failed to decode data using encoding '" + dart.str(encoding.name) + "'", this.path));
      }
    }
    readAsString(opts) {
      let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
      let stack = core.StackTrace.current;
      return FutureOfString()._check(this.readAsBytes().then(core.String, dart.fn(bytes => {
        try {
          return this[_tryDecode](bytes, encoding);
        } catch (e$) {
          let e = dart.getThrown(e$);
          return FutureOfString().error(e, stack);
        }
      }, ListOfintToFutureOrOfString())));
    }
    readAsStringSync(opts) {
      let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
      return this[_tryDecode](this.readAsBytesSync(), encoding);
    }
    readAsLines(opts) {
      let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
      return FutureOfListOfString()._check(this.readAsString({encoding: encoding}).then(ListOfString(), dart.bind(const$57 || (const$57 = dart.const(new convert.LineSplitter.new())), 'convert')));
    }
    readAsLinesSync(opts) {
      let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
      return (const$58 || (const$58 = dart.const(new convert.LineSplitter.new()))).convert(this.readAsStringSync({encoding: encoding}));
    }
    writeAsBytes(bytes, opts) {
      let mode = opts && 'mode' in opts ? opts.mode : io.FileMode.write;
      let flush = opts && 'flush' in opts ? opts.flush : false;
      return FutureOfFile()._check(this.open({mode: mode}).then(io.File, dart.fn(file => FutureOfFile()._check(file.writeFrom(bytes, 0, bytes[$length]).then(io.File, dart.fn(_ => {
        if (dart.test(flush)) return FutureOfFile()._check(file.flush().then(io.File, dart.fn(_ => this, RandomAccessFileTo_File())));
        return this;
      }, RandomAccessFileToFutureOrOfFile()))).whenComplete(dart.bind(file, 'close')), RandomAccessFileToFutureOfFile())));
    }
    writeAsBytesSync(bytes, opts) {
      let mode = opts && 'mode' in opts ? opts.mode : io.FileMode.write;
      let flush = opts && 'flush' in opts ? opts.flush : false;
      let opened = this.openSync({mode: mode});
      try {
        opened.writeFromSync(bytes, 0, bytes[$length]);
        if (dart.test(flush)) opened.flushSync();
      } finally {
        opened.closeSync();
      }
    }
    writeAsString(contents, opts) {
      let mode = opts && 'mode' in opts ? opts.mode : io.FileMode.write;
      let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
      let flush = opts && 'flush' in opts ? opts.flush : false;
      try {
        return this.writeAsBytes(encoding.encode(contents), {mode: mode, flush: flush});
      } catch (e$) {
        let e = dart.getThrown(e$);
        return FutureOfFile().error(e);
      }
    }
    writeAsStringSync(contents, opts) {
      let mode = opts && 'mode' in opts ? opts.mode : io.FileMode.write;
      let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
      let flush = opts && 'flush' in opts ? opts.flush : false;
      this.writeAsBytesSync(encoding.encode(contents), {mode: mode, flush: flush});
    }
    toString() {
      return "File: '" + dart.str(this.path) + "'";
    }
    static throwIfError(result, msg, path) {
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new(msg, path, result));
      }
    }
  };
  (io._File.new = function(path) {
    this[_path$1] = null;
    this[_rawPath$1] = null;
    io._File.__proto__.new.call(this);
    core.ArgumentError.checkNotNull(path, "path");
    this[_path] = path;
    this[_rawPath$] = io.FileSystemEntity._toUtf8Array(path);
  }).prototype = io._File.prototype;
  (io._File.fromRawPath = function(rawPath) {
    this[_path$1] = null;
    this[_rawPath$1] = null;
    io._File.__proto__.new.call(this);
    core.ArgumentError.checkNotNull(rawPath, "rawPath");
    this[_rawPath$] = io.FileSystemEntity._toNullTerminatedUtf8Array(rawPath);
    this[_path] = io.FileSystemEntity._toStringFromUtf8Array(rawPath);
  }).prototype = io._File.prototype;
  dart.addTypeTests(io._File);
  const _path$1 = Symbol("_File._path");
  const _rawPath$1 = Symbol("_File._rawPath");
  io._File[dart.implements] = () => [io.File];
  dart.setMethodSignature(io._File, () => ({
    __proto__: dart.getMethods(io._File.__proto__),
    exists: dart.fnType(async.Future$(core.bool), []),
    existsSync: dart.fnType(core.bool, []),
    create: dart.fnType(async.Future$(io.File), [], {recursive: core.bool}),
    createSync: dart.fnType(dart.void, [], {recursive: core.bool}),
    [_delete]: dart.fnType(async.Future$(io.File), [], {recursive: core.bool}),
    [_deleteSync]: dart.fnType(dart.void, [], {recursive: core.bool}),
    rename: dart.fnType(async.Future$(io.File), [core.String]),
    renameSync: dart.fnType(io.File, [core.String]),
    copy: dart.fnType(async.Future$(io.File), [core.String]),
    copySync: dart.fnType(io.File, [core.String]),
    open: dart.fnType(async.Future$(io.RandomAccessFile), [], {mode: io.FileMode}),
    length: dart.fnType(async.Future$(core.int), []),
    lengthSync: dart.fnType(core.int, []),
    lastAccessed: dart.fnType(async.Future$(core.DateTime), []),
    lastAccessedSync: dart.fnType(core.DateTime, []),
    setLastAccessed: dart.fnType(async.Future, [core.DateTime]),
    setLastAccessedSync: dart.fnType(dart.void, [core.DateTime]),
    lastModified: dart.fnType(async.Future$(core.DateTime), []),
    lastModifiedSync: dart.fnType(core.DateTime, []),
    setLastModified: dart.fnType(async.Future, [core.DateTime]),
    setLastModifiedSync: dart.fnType(dart.void, [core.DateTime]),
    openSync: dart.fnType(io.RandomAccessFile, [], {mode: io.FileMode}),
    openRead: dart.fnType(async.Stream$(core.List$(core.int)), [], [core.int, core.int]),
    openWrite: dart.fnType(io.IOSink, [], {mode: io.FileMode, encoding: convert.Encoding}),
    readAsBytes: dart.fnType(async.Future$(core.List$(core.int)), []),
    readAsBytesSync: dart.fnType(core.List$(core.int), []),
    [_tryDecode]: dart.fnType(core.String, [core.List$(core.int), convert.Encoding]),
    readAsString: dart.fnType(async.Future$(core.String), [], {encoding: convert.Encoding}),
    readAsStringSync: dart.fnType(core.String, [], {encoding: convert.Encoding}),
    readAsLines: dart.fnType(async.Future$(core.List$(core.String)), [], {encoding: convert.Encoding}),
    readAsLinesSync: dart.fnType(core.List$(core.String), [], {encoding: convert.Encoding}),
    writeAsBytes: dart.fnType(async.Future$(io.File), [core.List$(core.int)], {mode: io.FileMode, flush: core.bool}),
    writeAsBytesSync: dart.fnType(dart.void, [core.List$(core.int)], {mode: io.FileMode, flush: core.bool}),
    writeAsString: dart.fnType(async.Future$(io.File), [core.String], {mode: io.FileMode, encoding: convert.Encoding, flush: core.bool}),
    writeAsStringSync: dart.fnType(dart.void, [core.String], {mode: io.FileMode, encoding: convert.Encoding, flush: core.bool})
  }));
  dart.setGetterSignature(io._File, () => ({
    __proto__: dart.getGetters(io._File.__proto__),
    path: core.String,
    absolute: io.File
  }));
  dart.setFieldSignature(io._File, () => ({
    __proto__: dart.getFields(io._File.__proto__),
    [_path]: dart.fieldType(core.String),
    [_rawPath$]: dart.fieldType(typed_data.Uint8List)
  }));
  dart.defineExtensionMethods(io._File, ['toString']);
  io._RandomAccessFileOps = class _RandomAccessFileOps extends core.Object {
    static new(pointer) {
      dart.throw(new core.UnsupportedError.new("RandomAccessFile"));
    }
  };
  (io._RandomAccessFileOps[dart.mixinNew] = function() {
  }).prototype = io._RandomAccessFileOps.prototype;
  dart.addTypeTests(io._RandomAccessFileOps);
  const _asyncDispatched = Symbol('_asyncDispatched');
  const _fileService = Symbol('_fileService');
  const _resourceInfo = Symbol('_resourceInfo');
  const _maybeConnectHandler = Symbol('_maybeConnectHandler');
  const _maybePerformCleanup = Symbol('_maybePerformCleanup');
  const _dispatch = Symbol('_dispatch');
  const _checkAvailable = Symbol('_checkAvailable');
  const _fileLockValue = Symbol('_fileLockValue');
  io._RandomAccessFile = class _RandomAccessFile extends core.Object {
    [_maybePerformCleanup]() {
      if (dart.test(this.closed)) {
        io._FileResourceInfo.FileClosed(this[_resourceInfo]);
      }
    }
    [_maybeConnectHandler]() {
      if (!dart.test(io._RandomAccessFile._connectedResourceHandler)) {
        developer.registerExtension("ext.dart.io.getOpenFiles", dart.fn(io._FileResourceInfo.getOpenFiles, dynamicAnddynamicToFutureOfServiceExtensionResponse()));
        developer.registerExtension("ext.dart.io.getFileByID", dart.fn(io._FileResourceInfo.getFileInfoMapByID, dynamicAnddynamicToFutureOfServiceExtensionResponse()));
        io._RandomAccessFile._connectedResourceHandler = true;
      }
    }
    close() {
      return this[_dispatch](io._IOService.fileClose, [null], {markClosed: true}).then(dart.void, dart.fn(result => {
        if (dart.equals(result, -1)) {
          dart.throw(new io.FileSystemException.new("Cannot close file", this.path));
        }
        this.closed = dart.test(this.closed) || dart.equals(result, 0);
        this[_maybePerformCleanup]();
      }, dynamicToNull()));
    }
    closeSync() {
      this[_checkAvailable]();
      let id = this[_ops].close();
      if (id === -1) {
        dart.throw(new io.FileSystemException.new("Cannot close file", this.path));
      }
      this.closed = dart.test(this.closed) || id === 0;
      this[_maybePerformCleanup]();
    }
    readByte() {
      return FutureOfint()._check(this[_dispatch](io._IOService.fileReadByte, [null]).then(core.int, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "readByte failed", this.path));
        }
        this[_resourceInfo].addRead(1);
        return FutureOrOfint()._check(response);
      }, dynamicToFutureOrOfint())));
    }
    readByteSync() {
      this[_checkAvailable]();
      let result = this[_ops].readByte();
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("readByte failed", this.path, result));
      }
      this[_resourceInfo].addRead(1);
      return core.int._check(result);
    }
    read(bytes) {
      core.ArgumentError.checkNotNull(bytes, "bytes");
      return FutureOfListOfint()._check(this[_dispatch](io._IOService.fileRead, [null, bytes]).then(ListOfint(), dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "read failed", this.path));
        }
        this[_resourceInfo].addRead(core.int._check(dart.dload(dart.dindex(response, 1), 'length')));
        let result = ListOfint()._check(dart.dindex(response, 1));
        return result;
      }, dynamicToListOfint())));
    }
    readSync(bytes) {
      this[_checkAvailable]();
      core.ArgumentError.checkNotNull(bytes, "bytes");
      let result = this[_ops].read(bytes);
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("readSync failed", this.path, result));
      }
      this[_resourceInfo].addRead(core.int._check(dart.dload(result, 'length')));
      return ListOfint()._check(result);
    }
    readInto(buffer, start, end) {
      if (start === void 0) start = 0;
      if (end === void 0) end = null;
      if (!core.List.is(buffer) || start != null && !core.int.is(start) || end != null && !core.int.is(end)) {
        dart.throw(new core.ArgumentError.new());
      }
      end = core.RangeError.checkValidRange(start, end, buffer[$length]);
      if (end == start) {
        return FutureOfint().value(0);
      }
      let length = dart.notNull(end) - dart.notNull(start);
      return FutureOfint()._check(this[_dispatch](io._IOService.fileReadInto, [null, length]).then(core.int, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "readInto failed", this.path));
        }
        let read = core.int._check(dart.dindex(response, 1));
        let data = ListOfint()._check(dart.dindex(response, 2));
        buffer[$setRange](start, dart.notNull(start) + dart.notNull(read), data);
        this[_resourceInfo].addRead(read);
        return read;
      }, dynamicToint())));
    }
    readIntoSync(buffer, start, end) {
      if (start === void 0) start = 0;
      if (end === void 0) end = null;
      this[_checkAvailable]();
      if (!core.List.is(buffer) || start != null && !core.int.is(start) || end != null && !core.int.is(end)) {
        dart.throw(new core.ArgumentError.new());
      }
      end = core.RangeError.checkValidRange(start, end, buffer[$length]);
      if (end == start) {
        return 0;
      }
      let result = this[_ops].readInto(buffer, start, end);
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("readInto failed", this.path, result));
      }
      this[_resourceInfo].addRead(core.int._check(result));
      return core.int._check(result);
    }
    writeByte(value) {
      core.ArgumentError.checkNotNull(value, "value");
      return FutureOfRandomAccessFile()._check(this[_dispatch](io._IOService.fileWriteByte, [null, value]).then(io.RandomAccessFile, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "writeByte failed", this.path));
        }
        this[_resourceInfo].addWrite(1);
        return this;
      }, dynamicTo_RandomAccessFile())));
    }
    writeByteSync(value) {
      this[_checkAvailable]();
      core.ArgumentError.checkNotNull(value, "value");
      let result = this[_ops].writeByte(value);
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("writeByte failed", this.path, result));
      }
      this[_resourceInfo].addWrite(1);
      return core.int._check(result);
    }
    writeFrom(buffer, start, end) {
      if (start === void 0) start = 0;
      if (end === void 0) end = null;
      if (!core.List.is(buffer) || start != null && !core.int.is(start) || end != null && !core.int.is(end)) {
        dart.throw(new core.ArgumentError.new("Invalid arguments to writeFrom"));
      }
      end = core.RangeError.checkValidRange(start, end, buffer[$length]);
      if (end == start) {
        return FutureOfRandomAccessFile().value(this);
      }
      let result = null;
      try {
        result = io._ensureFastAndSerializableByteData(buffer, start, end);
      } catch (e$) {
        let e = dart.getThrown(e$);
        return FutureOfRandomAccessFile().error(e);
      }
      let request = core.List.new(4);
      request[$_set](0, null);
      request[$_set](1, result.buffer);
      request[$_set](2, result.start);
      request[$_set](3, dart.notNull(end) - (dart.notNull(start) - dart.notNull(result.start)));
      return FutureOfRandomAccessFile()._check(this[_dispatch](io._IOService.fileWriteFrom, request).then(io.RandomAccessFile, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "writeFrom failed", this.path));
        }
        this[_resourceInfo].addWrite(dart.notNull(end) - (dart.notNull(start) - dart.notNull(result.start)));
        return this;
      }, dynamicTo_RandomAccessFile())));
    }
    writeFromSync(buffer, start, end) {
      if (start === void 0) start = 0;
      if (end === void 0) end = null;
      this[_checkAvailable]();
      if (!core.List.is(buffer) || start != null && !core.int.is(start) || end != null && !core.int.is(end)) {
        dart.throw(new core.ArgumentError.new("Invalid arguments to writeFromSync"));
      }
      end = core.RangeError.checkValidRange(start, end, buffer[$length]);
      if (end == start) {
        return;
      }
      let bufferAndStart = io._ensureFastAndSerializableByteData(buffer, start, end);
      let result = this[_ops].writeFrom(bufferAndStart.buffer, bufferAndStart.start, dart.notNull(end) - (dart.notNull(start) - dart.notNull(bufferAndStart.start)));
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("writeFrom failed", this.path, result));
      }
      this[_resourceInfo].addWrite(dart.notNull(end) - (dart.notNull(start) - dart.notNull(bufferAndStart.start)));
    }
    writeString(string, opts) {
      let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
      core.ArgumentError.checkNotNull(encoding, "encoding");
      let data = encoding.encode(string);
      return this.writeFrom(data, 0, data[$length]);
    }
    writeStringSync(string, opts) {
      let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
      core.ArgumentError.checkNotNull(encoding, "encoding");
      let data = encoding.encode(string);
      this.writeFromSync(data, 0, data[$length]);
    }
    position() {
      return FutureOfint()._check(this[_dispatch](io._IOService.filePosition, [null]).then(core.int, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "position failed", this.path));
        }
        return FutureOrOfint()._check(response);
      }, dynamicToFutureOrOfint())));
    }
    positionSync() {
      this[_checkAvailable]();
      let result = this[_ops].position();
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("position failed", this.path, result));
      }
      return core.int._check(result);
    }
    setPosition(position) {
      return FutureOfRandomAccessFile()._check(this[_dispatch](io._IOService.fileSetPosition, [null, position]).then(io.RandomAccessFile, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "setPosition failed", this.path));
        }
        return this;
      }, dynamicTo_RandomAccessFile())));
    }
    setPositionSync(position) {
      this[_checkAvailable]();
      let result = this[_ops].setPosition(position);
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("setPosition failed", this.path, result));
      }
    }
    truncate(length) {
      return FutureOfRandomAccessFile()._check(this[_dispatch](io._IOService.fileTruncate, [null, length]).then(io.RandomAccessFile, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "truncate failed", this.path));
        }
        return this;
      }, dynamicTo_RandomAccessFile())));
    }
    truncateSync(length) {
      this[_checkAvailable]();
      let result = this[_ops].truncate(length);
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("truncate failed", this.path, result));
      }
    }
    length() {
      return FutureOfint()._check(this[_dispatch](io._IOService.fileLength, [null]).then(core.int, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "length failed", this.path));
        }
        return FutureOrOfint()._check(response);
      }, dynamicToFutureOrOfint())));
    }
    lengthSync() {
      this[_checkAvailable]();
      let result = this[_ops].length();
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("length failed", this.path, result));
      }
      return core.int._check(result);
    }
    flush() {
      return FutureOfRandomAccessFile()._check(this[_dispatch](io._IOService.fileFlush, [null]).then(io.RandomAccessFile, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "flush failed", this.path));
        }
        return this;
      }, dynamicTo_RandomAccessFile())));
    }
    flushSync() {
      this[_checkAvailable]();
      let result = this[_ops].flush();
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("flush failed", this.path, result));
      }
    }
    [_fileLockValue](fl) {
      return fl[_type$0];
    }
    lock(mode, start, end) {
      if (mode === void 0) mode = io.FileLock.exclusive;
      if (start === void 0) start = 0;
      if (end === void 0) end = -1;
      if (!io.FileLock.is(mode) || !core.int.is(start) || !core.int.is(end)) {
        dart.throw(new core.ArgumentError.new());
      }
      if (dart.notNull(start) < 0 || dart.notNull(end) < -1 || end !== -1 && dart.notNull(start) >= dart.notNull(end)) {
        dart.throw(new core.ArgumentError.new());
      }
      let lock = this[_fileLockValue](mode);
      return FutureOfRandomAccessFile()._check(this[_dispatch](io._IOService.fileLock, [null, lock, start, end]).then(io.RandomAccessFile, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "lock failed", this.path));
        }
        return this;
      }, dynamicTo_RandomAccessFile())));
    }
    unlock(start, end) {
      if (start === void 0) start = 0;
      if (end === void 0) end = -1;
      if (!core.int.is(start) || !core.int.is(end)) {
        dart.throw(new core.ArgumentError.new());
      }
      if (start == end) {
        dart.throw(new core.ArgumentError.new());
      }
      return FutureOfRandomAccessFile()._check(this[_dispatch](io._IOService.fileLock, [null, 0, start, end]).then(io.RandomAccessFile, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          dart.throw(io._exceptionFromResponse(response, "unlock failed", this.path));
        }
        return this;
      }, dynamicTo_RandomAccessFile())));
    }
    lockSync(mode, start, end) {
      if (mode === void 0) mode = io.FileLock.exclusive;
      if (start === void 0) start = 0;
      if (end === void 0) end = -1;
      this[_checkAvailable]();
      if (!io.FileLock.is(mode) || !core.int.is(start) || !core.int.is(end)) {
        dart.throw(new core.ArgumentError.new());
      }
      if (dart.notNull(start) < 0 || dart.notNull(end) < -1 || end !== -1 && dart.notNull(start) >= dart.notNull(end)) {
        dart.throw(new core.ArgumentError.new());
      }
      let lock = this[_fileLockValue](mode);
      let result = this[_ops].lock(lock, start, end);
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("lock failed", this.path, result));
      }
    }
    unlockSync(start, end) {
      if (start === void 0) start = 0;
      if (end === void 0) end = -1;
      this[_checkAvailable]();
      if (!core.int.is(start) || !core.int.is(end)) {
        dart.throw(new core.ArgumentError.new());
      }
      if (start == end) {
        dart.throw(new core.ArgumentError.new());
      }
      let result = this[_ops].lock(0, start, end);
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new("unlock failed", this.path, result));
      }
    }
    [_pointer]() {
      return this[_ops].getPointer();
    }
    [_dispatch](request, data, opts) {
      let markClosed = opts && 'markClosed' in opts ? opts.markClosed : false;
      if (dart.test(this.closed)) {
        return async.Future.error(new io.FileSystemException.new("File closed", this.path));
      }
      if (dart.test(this[_asyncDispatched])) {
        let msg = "An async operation is currently pending";
        return async.Future.error(new io.FileSystemException.new(msg, this.path));
      }
      if (dart.test(markClosed)) {
        this.closed = true;
      }
      this[_asyncDispatched] = true;
      data[$_set](0, this[_pointer]());
      return io._IOService._dispatch(request, data).whenComplete(dart.fn(() => {
        this[_asyncDispatched] = false;
      }, VoidToNull()));
    }
    [_checkAvailable]() {
      if (dart.test(this[_asyncDispatched])) {
        dart.throw(new io.FileSystemException.new("An async operation is currently pending", this.path));
      }
      if (dart.test(this.closed)) {
        dart.throw(new io.FileSystemException.new("File closed", this.path));
      }
    }
  };
  (io._RandomAccessFile.new = function(pointer, path) {
    this[_asyncDispatched] = false;
    this[_fileService] = null;
    this[_resourceInfo] = null;
    this[_ops] = null;
    this.closed = false;
    this.path = path;
    this[_ops] = io._RandomAccessFileOps.new(pointer);
    this[_resourceInfo] = new io._FileResourceInfo.new(this);
    this[_maybeConnectHandler]();
  }).prototype = io._RandomAccessFile.prototype;
  dart.addTypeTests(io._RandomAccessFile);
  io._RandomAccessFile[dart.implements] = () => [io.RandomAccessFile];
  dart.setMethodSignature(io._RandomAccessFile, () => ({
    __proto__: dart.getMethods(io._RandomAccessFile.__proto__),
    [_maybePerformCleanup]: dart.fnType(dart.void, []),
    [_maybeConnectHandler]: dart.fnType(dart.dynamic, []),
    close: dart.fnType(async.Future$(dart.void), []),
    closeSync: dart.fnType(dart.void, []),
    readByte: dart.fnType(async.Future$(core.int), []),
    readByteSync: dart.fnType(core.int, []),
    read: dart.fnType(async.Future$(core.List$(core.int)), [core.int]),
    readSync: dart.fnType(core.List$(core.int), [core.int]),
    readInto: dart.fnType(async.Future$(core.int), [core.List$(core.int)], [core.int, core.int]),
    readIntoSync: dart.fnType(core.int, [core.List$(core.int)], [core.int, core.int]),
    writeByte: dart.fnType(async.Future$(io.RandomAccessFile), [core.int]),
    writeByteSync: dart.fnType(core.int, [core.int]),
    writeFrom: dart.fnType(async.Future$(io.RandomAccessFile), [core.List$(core.int)], [core.int, core.int]),
    writeFromSync: dart.fnType(dart.void, [core.List$(core.int)], [core.int, core.int]),
    writeString: dart.fnType(async.Future$(io.RandomAccessFile), [core.String], {encoding: convert.Encoding}),
    writeStringSync: dart.fnType(dart.void, [core.String], {encoding: convert.Encoding}),
    position: dart.fnType(async.Future$(core.int), []),
    positionSync: dart.fnType(core.int, []),
    setPosition: dart.fnType(async.Future$(io.RandomAccessFile), [core.int]),
    setPositionSync: dart.fnType(dart.void, [core.int]),
    truncate: dart.fnType(async.Future$(io.RandomAccessFile), [core.int]),
    truncateSync: dart.fnType(dart.void, [core.int]),
    length: dart.fnType(async.Future$(core.int), []),
    lengthSync: dart.fnType(core.int, []),
    flush: dart.fnType(async.Future$(io.RandomAccessFile), []),
    flushSync: dart.fnType(dart.void, []),
    [_fileLockValue]: dart.fnType(core.int, [io.FileLock]),
    lock: dart.fnType(async.Future$(io.RandomAccessFile), [], [io.FileLock, core.int, core.int]),
    unlock: dart.fnType(async.Future$(io.RandomAccessFile), [], [core.int, core.int]),
    lockSync: dart.fnType(dart.void, [], [io.FileLock, core.int, core.int]),
    unlockSync: dart.fnType(dart.void, [], [core.int, core.int]),
    [_pointer]: dart.fnType(core.int, []),
    [_dispatch]: dart.fnType(async.Future, [core.int, core.List], {markClosed: core.bool}),
    [_checkAvailable]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(io._RandomAccessFile, () => ({
    __proto__: dart.getFields(io._RandomAccessFile.__proto__),
    path: dart.finalFieldType(core.String),
    [_asyncDispatched]: dart.fieldType(core.bool),
    [_fileService]: dart.fieldType(isolate.SendPort),
    [_resourceInfo]: dart.fieldType(io._FileResourceInfo),
    [_ops]: dart.fieldType(io._RandomAccessFileOps),
    closed: dart.fieldType(core.bool)
  }));
  dart.defineLazy(io._RandomAccessFile, {
    /*io._RandomAccessFile._connectedResourceHandler*/get _connectedResourceHandler() {
      return false;
    },
    set _connectedResourceHandler(_) {},
    /*io._RandomAccessFile.lockUnlock*/get lockUnlock() {
      return 0;
    }
  });
  let const$59;
  io.FileSystemEntityType = class FileSystemEntityType extends core.Object {
    static _lookup(type) {
      return io.FileSystemEntityType._typeList[$_get](type);
    }
    toString() {
      return (const$59 || (const$59 = dart.constList(["file", "directory", "link", "notFound"], core.String)))[$_get](this[_type$0]);
    }
  };
  (io.FileSystemEntityType._internal = function(type) {
    this[_type$0] = type;
  }).prototype = io.FileSystemEntityType.prototype;
  dart.addTypeTests(io.FileSystemEntityType);
  dart.setFieldSignature(io.FileSystemEntityType, () => ({
    __proto__: dart.getFields(io.FileSystemEntityType.__proto__),
    [_type$0]: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionMethods(io.FileSystemEntityType, ['toString']);
  dart.defineLazy(io.FileSystemEntityType, {
    /*io.FileSystemEntityType.file*/get file() {
      return dart.const(new io.FileSystemEntityType._internal(0));
    },
    /*io.FileSystemEntityType.FILE*/get FILE() {
      return io.FileSystemEntityType.file;
    },
    /*io.FileSystemEntityType.directory*/get directory() {
      return dart.const(new io.FileSystemEntityType._internal(1));
    },
    /*io.FileSystemEntityType.DIRECTORY*/get DIRECTORY() {
      return io.FileSystemEntityType.directory;
    },
    /*io.FileSystemEntityType.link*/get link() {
      return dart.const(new io.FileSystemEntityType._internal(2));
    },
    /*io.FileSystemEntityType.LINK*/get LINK() {
      return io.FileSystemEntityType.link;
    },
    /*io.FileSystemEntityType.notFound*/get notFound() {
      return dart.const(new io.FileSystemEntityType._internal(3));
    },
    /*io.FileSystemEntityType.NOT_FOUND*/get NOT_FOUND() {
      return io.FileSystemEntityType.notFound;
    },
    /*io.FileSystemEntityType._typeList*/get _typeList() {
      return dart.constList([io.FileSystemEntityType.file, io.FileSystemEntityType.directory, io.FileSystemEntityType.link, io.FileSystemEntityType.notFound], io.FileSystemEntityType);
    }
  });
  let const$60;
  io.FileStat = class FileStat extends core.Object {
    get changed() {
      return this[changed$];
    }
    set changed(value) {
      super.changed = value;
    }
    get modified() {
      return this[modified$];
    }
    set modified(value) {
      super.modified = value;
    }
    get accessed() {
      return this[accessed$];
    }
    set accessed(value) {
      super.accessed = value;
    }
    get type() {
      return this[type$];
    }
    set type(value) {
      super.type = value;
    }
    get mode() {
      return this[mode$0];
    }
    set mode(value) {
      super.mode = value;
    }
    get size() {
      return this[size$];
    }
    set size(value) {
      super.size = value;
    }
    static _statSync(namespace, path) {
      dart.throw(new core.UnsupportedError.new("FileStat.stat"));
    }
    static statSync(path) {
      let overrides = io.IOOverrides.current;
      if (overrides == null) {
        return io.FileStat._statSyncInternal(path);
      }
      return overrides.statSync(path);
    }
    static _statSyncInternal(path) {
      if (dart.test(io.Platform.isWindows)) {
        path = io.FileSystemEntity._trimTrailingPathSeparators(path);
      }
      let data = io.FileStat._statSync(io._Namespace._namespace, path);
      if (io.OSError.is(data)) return io.FileStat._notFound;
      return new io.FileStat._internal(new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(dart.dindex(data, 1))), new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(dart.dindex(data, 2))), new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(dart.dindex(data, 3))), io.FileSystemEntityType._lookup(core.int._check(dart.dindex(data, 0))), core.int._check(dart.dindex(data, 4)), core.int._check(dart.dindex(data, 5)));
    }
    static stat(path) {
      let overrides = io.IOOverrides.current;
      if (overrides == null) {
        return io.FileStat._stat(path);
      }
      return overrides.stat(path);
    }
    static _stat(path) {
      if (dart.test(io.Platform.isWindows)) {
        path = io.FileSystemEntity._trimTrailingPathSeparators(path);
      }
      return FutureOfFileStat()._check(io._File._dispatchWithNamespace(io._IOService.fileStat, [null, path]).then(io.FileStat, dart.fn(response => {
        if (dart.test(io._isErrorResponse(response))) {
          return io.FileStat._notFound;
        }
        let data = core.List._check(dart.dindex(response, 1));
        return new io.FileStat._internal(new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(data[$_get](1))), new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(data[$_get](2))), new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(data[$_get](3))), io.FileSystemEntityType._lookup(core.int._check(data[$_get](0))), core.int._check(data[$_get](4)), core.int._check(data[$_get](5)));
      }, dynamicToFileStat())));
    }
    toString() {
      return "FileStat: type " + dart.str(this.type) + "\n          changed " + dart.str(this.changed) + "\n          modified " + dart.str(this.modified) + "\n          accessed " + dart.str(this.accessed) + "\n          mode " + dart.str(this.modeString()) + "\n          size " + dart.str(this.size);
    }
    modeString() {
      let permissions = dart.notNull(this.mode) & 4095;
      let codes = const$60 || (const$60 = dart.constList(["---", "--x", "-w-", "-wx", "r--", "r-x", "rw-", "rwx"], core.String));
      let result = [];
      if ((permissions & 2048) !== 0) result[$add]("(suid) ");
      if ((permissions & 1024) !== 0) result[$add]("(guid) ");
      if ((permissions & 512) !== 0) result[$add]("(sticky) ");
      result[$add](codes[$_get](permissions >> 6 & 7));
      result[$add](codes[$_get](permissions >> 3 & 7));
      result[$add](codes[$_get](permissions & 7));
      return result[$join]();
    }
  };
  (io.FileStat._internal = function(changed, modified, accessed, type, mode, size) {
    this[changed$] = changed;
    this[modified$] = modified;
    this[accessed$] = accessed;
    this[type$] = type;
    this[mode$0] = mode;
    this[size$] = size;
  }).prototype = io.FileStat.prototype;
  (io.FileStat._internalNotFound = function() {
    this[changed$] = null;
    this[modified$] = null;
    this[accessed$] = null;
    this[type$] = io.FileSystemEntityType.notFound;
    this[mode$0] = 0;
    this[size$] = -1;
  }).prototype = io.FileStat.prototype;
  dart.addTypeTests(io.FileStat);
  const changed$ = Symbol("FileStat.changed");
  const modified$ = Symbol("FileStat.modified");
  const accessed$ = Symbol("FileStat.accessed");
  const type$ = Symbol("FileStat.type");
  const mode$0 = Symbol("FileStat.mode");
  const size$ = Symbol("FileStat.size");
  dart.setMethodSignature(io.FileStat, () => ({
    __proto__: dart.getMethods(io.FileStat.__proto__),
    modeString: dart.fnType(core.String, [])
  }));
  dart.setFieldSignature(io.FileStat, () => ({
    __proto__: dart.getFields(io.FileStat.__proto__),
    changed: dart.finalFieldType(core.DateTime),
    modified: dart.finalFieldType(core.DateTime),
    accessed: dart.finalFieldType(core.DateTime),
    type: dart.finalFieldType(io.FileSystemEntityType),
    mode: dart.finalFieldType(core.int),
    size: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionMethods(io.FileStat, ['toString']);
  dart.defineLazy(io.FileStat, {
    /*io.FileStat._type*/get _type() {
      return 0;
    },
    /*io.FileStat._changedTime*/get _changedTime() {
      return 1;
    },
    /*io.FileStat._modifiedTime*/get _modifiedTime() {
      return 2;
    },
    /*io.FileStat._accessedTime*/get _accessedTime() {
      return 3;
    },
    /*io.FileStat._mode*/get _mode() {
      return 4;
    },
    /*io.FileStat._size*/get _size() {
      return 5;
    },
    /*io.FileStat._notFound*/get _notFound() {
      return dart.const(new io.FileStat._internalNotFound());
    }
  });
  io.FileSystemEvent = class FileSystemEvent extends core.Object {
    get type() {
      return this[type$0];
    }
    set type(value) {
      super.type = value;
    }
    get path() {
      return this[path$0];
    }
    set path(value) {
      super.path = value;
    }
    get isDirectory() {
      return this[isDirectory$];
    }
    set isDirectory(value) {
      super.isDirectory = value;
    }
  };
  (io.FileSystemEvent.__ = function(type, path, isDirectory) {
    this[type$0] = type;
    this[path$0] = path;
    this[isDirectory$] = isDirectory;
  }).prototype = io.FileSystemEvent.prototype;
  dart.addTypeTests(io.FileSystemEvent);
  const type$0 = Symbol("FileSystemEvent.type");
  const path$0 = Symbol("FileSystemEvent.path");
  const isDirectory$ = Symbol("FileSystemEvent.isDirectory");
  dart.setFieldSignature(io.FileSystemEvent, () => ({
    __proto__: dart.getFields(io.FileSystemEvent.__proto__),
    type: dart.finalFieldType(core.int),
    path: dart.finalFieldType(core.String),
    isDirectory: dart.finalFieldType(core.bool)
  }));
  dart.defineLazy(io.FileSystemEvent, {
    /*io.FileSystemEvent.create*/get create() {
      return 1 << 0;
    },
    /*io.FileSystemEvent.CREATE*/get CREATE() {
      return 1 << 0;
    },
    /*io.FileSystemEvent.modify*/get modify() {
      return 1 << 1;
    },
    /*io.FileSystemEvent.MODIFY*/get MODIFY() {
      return 1 << 1;
    },
    /*io.FileSystemEvent.delete*/get delete() {
      return 1 << 2;
    },
    /*io.FileSystemEvent.DELETE*/get DELETE() {
      return 1 << 2;
    },
    /*io.FileSystemEvent.move*/get move() {
      return 1 << 3;
    },
    /*io.FileSystemEvent.MOVE*/get MOVE() {
      return 1 << 3;
    },
    /*io.FileSystemEvent.all*/get all() {
      return 1 | 2 | 4 | 8;
    },
    /*io.FileSystemEvent.ALL*/get ALL() {
      return 1 | 2 | 4 | 8;
    },
    /*io.FileSystemEvent._modifyAttributes*/get _modifyAttributes() {
      return 1 << 4;
    },
    /*io.FileSystemEvent._deleteSelf*/get _deleteSelf() {
      return 1 << 5;
    },
    /*io.FileSystemEvent._isDir*/get _isDir() {
      return 1 << 6;
    }
  });
  io.FileSystemCreateEvent = class FileSystemCreateEvent extends io.FileSystemEvent {
    toString() {
      return "FileSystemCreateEvent('" + dart.str(this.path) + "')";
    }
  };
  (io.FileSystemCreateEvent.__ = function(path, isDirectory) {
    io.FileSystemCreateEvent.__proto__.__.call(this, io.FileSystemEvent.create, core.String._check(path), core.bool._check(isDirectory));
  }).prototype = io.FileSystemCreateEvent.prototype;
  dart.addTypeTests(io.FileSystemCreateEvent);
  dart.defineExtensionMethods(io.FileSystemCreateEvent, ['toString']);
  io.FileSystemModifyEvent = class FileSystemModifyEvent extends io.FileSystemEvent {
    get contentChanged() {
      return this[contentChanged$];
    }
    set contentChanged(value) {
      super.contentChanged = value;
    }
    toString() {
      return "FileSystemModifyEvent('" + dart.str(this.path) + "', contentChanged=" + dart.str(this.contentChanged) + ")";
    }
  };
  (io.FileSystemModifyEvent.__ = function(path, isDirectory, contentChanged) {
    this[contentChanged$] = contentChanged;
    io.FileSystemModifyEvent.__proto__.__.call(this, io.FileSystemEvent.modify, core.String._check(path), core.bool._check(isDirectory));
  }).prototype = io.FileSystemModifyEvent.prototype;
  dart.addTypeTests(io.FileSystemModifyEvent);
  const contentChanged$ = Symbol("FileSystemModifyEvent.contentChanged");
  dart.setFieldSignature(io.FileSystemModifyEvent, () => ({
    __proto__: dart.getFields(io.FileSystemModifyEvent.__proto__),
    contentChanged: dart.finalFieldType(core.bool)
  }));
  dart.defineExtensionMethods(io.FileSystemModifyEvent, ['toString']);
  io.FileSystemDeleteEvent = class FileSystemDeleteEvent extends io.FileSystemEvent {
    toString() {
      return "FileSystemDeleteEvent('" + dart.str(this.path) + "')";
    }
  };
  (io.FileSystemDeleteEvent.__ = function(path, isDirectory) {
    io.FileSystemDeleteEvent.__proto__.__.call(this, io.FileSystemEvent.delete, core.String._check(path), core.bool._check(isDirectory));
  }).prototype = io.FileSystemDeleteEvent.prototype;
  dart.addTypeTests(io.FileSystemDeleteEvent);
  dart.defineExtensionMethods(io.FileSystemDeleteEvent, ['toString']);
  io.FileSystemMoveEvent = class FileSystemMoveEvent extends io.FileSystemEvent {
    get destination() {
      return this[destination$];
    }
    set destination(value) {
      super.destination = value;
    }
    toString() {
      let buffer = new core.StringBuffer.new();
      buffer.write("FileSystemMoveEvent('" + dart.str(this.path) + "'");
      if (this.destination != null) buffer.write(", '" + dart.str(this.destination) + "'");
      buffer.write(")");
      return buffer.toString();
    }
  };
  (io.FileSystemMoveEvent.__ = function(path, isDirectory, destination) {
    this[destination$] = destination;
    io.FileSystemMoveEvent.__proto__.__.call(this, io.FileSystemEvent.move, core.String._check(path), core.bool._check(isDirectory));
  }).prototype = io.FileSystemMoveEvent.prototype;
  dart.addTypeTests(io.FileSystemMoveEvent);
  const destination$ = Symbol("FileSystemMoveEvent.destination");
  dart.setFieldSignature(io.FileSystemMoveEvent, () => ({
    __proto__: dart.getFields(io.FileSystemMoveEvent.__proto__),
    destination: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(io.FileSystemMoveEvent, ['toString']);
  io._FileSystemWatcher = class _FileSystemWatcher extends core.Object {
    static _watch(path, events, recursive) {
      dart.throw(new core.UnsupportedError.new("_FileSystemWatcher.watch"));
    }
    static get isSupported() {
      dart.throw(new core.UnsupportedError.new("_FileSystemWatcher.isSupported"));
    }
  };
  (io._FileSystemWatcher.new = function() {
  }).prototype = io._FileSystemWatcher.prototype;
  dart.addTypeTests(io._FileSystemWatcher);
  io._IOResourceInfo = class _IOResourceInfo extends core.Object {
    static get timestamp() {
      return dart.notNull(io._IOResourceInfo._startTime) + dart.notNull(io._IOResourceInfo._sw.elapsedMicroseconds) / 1000;
    }
    get referenceValueMap() {
      return new (IdentityMapOfString$dynamic()).from(["type", "@" + dart.str(this.type), "id", this.id, "name", this.name]);
    }
    static getNextID() {
      let x = io._IOResourceInfo._count;
      io._IOResourceInfo._count = dart.notNull(x) + 1;
      return x;
    }
  };
  (io._IOResourceInfo.new = function(type) {
    this.type = type;
    this.id = io._IOResourceInfo.getNextID();
  }).prototype = io._IOResourceInfo.prototype;
  dart.addTypeTests(io._IOResourceInfo);
  dart.setGetterSignature(io._IOResourceInfo, () => ({
    __proto__: dart.getGetters(io._IOResourceInfo.__proto__),
    referenceValueMap: core.Map$(core.String, dart.dynamic)
  }));
  dart.setFieldSignature(io._IOResourceInfo, () => ({
    __proto__: dart.getFields(io._IOResourceInfo.__proto__),
    type: dart.finalFieldType(core.String),
    id: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(io._IOResourceInfo, {
    /*io._IOResourceInfo._count*/get _count() {
      return 0;
    },
    set _count(_) {},
    /*io._IOResourceInfo._sw*/get _sw() {
      let _ = new core.Stopwatch.new();
      _.start();
      return _;
    },
    /*io._IOResourceInfo._startTime*/get _startTime() {
      return new core.DateTime.now().millisecondsSinceEpoch;
    }
  });
  io._ReadWriteResourceInfo = class _ReadWriteResourceInfo extends io._IOResourceInfo {
    addRead(bytes) {
      this.totalRead = dart.notNull(this.totalRead) + dart.notNull(bytes);
      this.readCount = dart.notNull(this.readCount) + 1;
      this.lastRead = io._IOResourceInfo.timestamp;
    }
    didRead() {
      this.addRead(0);
    }
    addWrite(bytes) {
      this.totalWritten = dart.notNull(this.totalWritten) + dart.notNull(bytes);
      this.writeCount = dart.notNull(this.writeCount) + 1;
      this.lastWrite = io._IOResourceInfo.timestamp;
    }
    get fullValueMap() {
      return new (IdentityMapOfString$dynamic()).from(["type", this.type, "id", this.id, "name", this.name, "totalRead", this.totalRead, "totalWritten", this.totalWritten, "readCount", this.readCount, "writeCount", this.writeCount, "lastRead", this.lastRead, "lastWrite", this.lastWrite]);
    }
  };
  (io._ReadWriteResourceInfo.new = function(type) {
    this.totalRead = 0;
    this.totalWritten = 0;
    this.readCount = 0;
    this.writeCount = 0;
    this.lastRead = 0.0;
    this.lastWrite = 0.0;
    io._ReadWriteResourceInfo.__proto__.new.call(this, type);
  }).prototype = io._ReadWriteResourceInfo.prototype;
  dart.addTypeTests(io._ReadWriteResourceInfo);
  dart.setMethodSignature(io._ReadWriteResourceInfo, () => ({
    __proto__: dart.getMethods(io._ReadWriteResourceInfo.__proto__),
    addRead: dart.fnType(dart.void, [core.int]),
    didRead: dart.fnType(dart.void, []),
    addWrite: dart.fnType(dart.void, [core.int])
  }));
  dart.setGetterSignature(io._ReadWriteResourceInfo, () => ({
    __proto__: dart.getGetters(io._ReadWriteResourceInfo.__proto__),
    fullValueMap: core.Map$(core.String, dart.dynamic)
  }));
  dart.setFieldSignature(io._ReadWriteResourceInfo, () => ({
    __proto__: dart.getFields(io._ReadWriteResourceInfo.__proto__),
    totalRead: dart.fieldType(core.int),
    totalWritten: dart.fieldType(core.int),
    readCount: dart.fieldType(core.int),
    writeCount: dart.fieldType(core.int),
    lastRead: dart.fieldType(core.double),
    lastWrite: dart.fieldType(core.double)
  }));
  io._FileResourceInfo = class _FileResourceInfo extends io._ReadWriteResourceInfo {
    static FileOpened(info) {
      if (!!dart.test(io._FileResourceInfo.openFiles[$containsKey](info.id))) dart.assertFailed();
      io._FileResourceInfo.openFiles[$_set](info.id, info);
    }
    static FileClosed(info) {
      if (!dart.test(io._FileResourceInfo.openFiles[$containsKey](info.id))) dart.assertFailed();
      io._FileResourceInfo.openFiles[$remove](info.id);
    }
    static getOpenFilesList() {
      return ListOfMapOfString$dynamic().from(io._FileResourceInfo.openFiles[$values][$map](dart.dynamic, dart.fn(e => e.referenceValueMap, _FileResourceInfoToMapOfString$dynamic())));
    }
    static getOpenFiles(func, params) {
      if (!dart.equals(func, "ext.dart.io.getOpenFiles")) dart.assertFailed();
      let data = new (IdentityMapOfString$Object()).from(["type", "_openfiles", "data", io._FileResourceInfo.getOpenFilesList()]);
      let jsonValue = convert.json.encode(data);
      return FutureOfServiceExtensionResponse().value(new developer.ServiceExtensionResponse.result(jsonValue));
    }
    getFileInfoMap() {
      return this.fullValueMap;
    }
    static getFileInfoMapByID(func, params) {
      if (!dart.dassert(dart.dsend(params, 'containsKey', ["id"]))) dart.assertFailed();
      let id = core.int.parse(core.String._check(dart.dindex(params, "id")));
      let result = dart.test(io._FileResourceInfo.openFiles[$containsKey](id)) ? io._FileResourceInfo.openFiles[$_get](id).getFileInfoMap() : new _js_helper.LinkedMap.new();
      let jsonValue = convert.json.encode(result);
      return FutureOfServiceExtensionResponse().value(new developer.ServiceExtensionResponse.result(jsonValue));
    }
    get name() {
      return dart.str(dart.dload(this.file, 'path'));
    }
  };
  (io._FileResourceInfo.new = function(file) {
    this.file = file;
    io._FileResourceInfo.__proto__.new.call(this, "_file");
    io._FileResourceInfo.FileOpened(this);
  }).prototype = io._FileResourceInfo.prototype;
  dart.addTypeTests(io._FileResourceInfo);
  dart.setMethodSignature(io._FileResourceInfo, () => ({
    __proto__: dart.getMethods(io._FileResourceInfo.__proto__),
    getFileInfoMap: dart.fnType(core.Map$(core.String, dart.dynamic), [])
  }));
  dart.setGetterSignature(io._FileResourceInfo, () => ({
    __proto__: dart.getGetters(io._FileResourceInfo.__proto__),
    name: core.String
  }));
  dart.setFieldSignature(io._FileResourceInfo, () => ({
    __proto__: dart.getFields(io._FileResourceInfo.__proto__),
    file: dart.finalFieldType(dart.dynamic)
  }));
  dart.defineLazy(io._FileResourceInfo, {
    /*io._FileResourceInfo._type*/get _type() {
      return "_file";
    },
    /*io._FileResourceInfo.openFiles*/get openFiles() {
      return new (IdentityMapOfint$_FileResourceInfo()).new();
    },
    set openFiles(_) {}
  });
  const _arguments$0 = Symbol('_arguments');
  const _workingDirectory = Symbol('_workingDirectory');
  io._ProcessResourceInfo = class _ProcessResourceInfo extends io._IOResourceInfo {
    get name() {
      return core.String._check(dart.dload(this.process, _path));
    }
    stopped() {
      io._ProcessResourceInfo.ProcessStopped(this);
    }
    get fullValueMap() {
      return new (IdentityMapOfString$dynamic()).from(["type", this.type, "id", this.id, "name", this.name, "pid", dart.dload(this.process, 'pid'), "startedAt", this.startedAt, "arguments", dart.dload(this.process, _arguments$0), "workingDirectory", dart.dload(this.process, _workingDirectory) == null ? "." : dart.dload(this.process, _workingDirectory)]);
    }
    static ProcessStarted(info) {
      if (!!dart.test(io._ProcessResourceInfo.startedProcesses[$containsKey](info.id))) dart.assertFailed();
      io._ProcessResourceInfo.startedProcesses[$_set](info.id, info);
    }
    static ProcessStopped(info) {
      if (!dart.test(io._ProcessResourceInfo.startedProcesses[$containsKey](info.id))) dart.assertFailed();
      io._ProcessResourceInfo.startedProcesses[$remove](info.id);
    }
    static getStartedProcessesList() {
      return ListOfMapOfString$dynamic().from(io._ProcessResourceInfo.startedProcesses[$values][$map](dart.dynamic, dart.fn(e => e.referenceValueMap, _ProcessResourceInfoToMapOfString$dynamic())));
    }
    static getStartedProcesses(func, params) {
      if (!(func === "ext.dart.io.getProcesses")) dart.assertFailed();
      let data = new (IdentityMapOfString$Object()).from(["type", "_startedprocesses", "data", io._ProcessResourceInfo.getStartedProcessesList()]);
      let jsonValue = convert.json.encode(data);
      return FutureOfServiceExtensionResponse().value(new developer.ServiceExtensionResponse.result(jsonValue));
    }
    static getProcessInfoMapById(func, params) {
      let id = core.int.parse(params[$_get]("id"));
      let result = dart.test(io._ProcessResourceInfo.startedProcesses[$containsKey](id)) ? io._ProcessResourceInfo.startedProcesses[$_get](id).fullValueMap : new _js_helper.LinkedMap.new();
      let jsonValue = convert.json.encode(result);
      return FutureOfServiceExtensionResponse().value(new developer.ServiceExtensionResponse.result(jsonValue));
    }
  };
  (io._ProcessResourceInfo.new = function(process) {
    this.process = process;
    this.startedAt = io._IOResourceInfo.timestamp;
    io._ProcessResourceInfo.__proto__.new.call(this, "_process");
    io._ProcessResourceInfo.ProcessStarted(this);
  }).prototype = io._ProcessResourceInfo.prototype;
  dart.addTypeTests(io._ProcessResourceInfo);
  dart.setMethodSignature(io._ProcessResourceInfo, () => ({
    __proto__: dart.getMethods(io._ProcessResourceInfo.__proto__),
    stopped: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(io._ProcessResourceInfo, () => ({
    __proto__: dart.getGetters(io._ProcessResourceInfo.__proto__),
    name: core.String,
    fullValueMap: core.Map$(core.String, dart.dynamic)
  }));
  dart.setFieldSignature(io._ProcessResourceInfo, () => ({
    __proto__: dart.getFields(io._ProcessResourceInfo.__proto__),
    process: dart.finalFieldType(dart.dynamic),
    startedAt: dart.finalFieldType(core.double)
  }));
  dart.defineLazy(io._ProcessResourceInfo, {
    /*io._ProcessResourceInfo._type*/get _type() {
      return "_process";
    },
    /*io._ProcessResourceInfo.startedProcesses*/get startedProcesses() {
      return new (IdentityMapOfint$_ProcessResourceInfo()).new();
    },
    set startedProcesses(_) {}
  });
  io._SocketResourceInfo = class _SocketResourceInfo extends io._ReadWriteResourceInfo {
    get name() {
      if (dart.dtest(dart.dload(this.socket, 'isListening'))) {
        return "listening:" + dart.str(dart.dload(dart.dload(this.socket, 'address'), 'host')) + ":" + dart.str(dart.dload(this.socket, 'port'));
      }
      let remote = "";
      try {
        let remoteHost = dart.dload(dart.dload(this.socket, 'remoteAddress'), 'host');
        let remotePort = dart.dload(this.socket, 'remotePort');
        remote = " -> " + dart.str(remoteHost) + ":" + dart.str(remotePort);
      } catch (e$) {
        let e = dart.getThrown(e$);
      }
      return dart.str(dart.dload(dart.dload(this.socket, 'address'), 'host')) + ":" + dart.str(dart.dload(this.socket, 'port')) + remote;
    }
    static getOpenSocketsList() {
      return ListOfMapOfString$dynamic().from(io._SocketResourceInfo.openSockets[$values][$map](dart.dynamic, dart.fn(e => e.referenceValueMap, _SocketResourceInfoToMapOfString$dynamic())));
    }
    getSocketInfoMap() {
      let result = this.fullValueMap;
      result[$_set]("socketType", dart.dtest(dart.dload(this.socket, 'isTcp')) ? "TCP" : "UDP");
      result[$_set]("listening", dart.dload(this.socket, 'isListening'));
      result[$_set]("host", dart.dload(dart.dload(this.socket, 'address'), 'host'));
      result[$_set]("port", dart.dload(this.socket, 'port'));
      if (!dart.dtest(dart.dload(this.socket, 'isListening'))) {
        try {
          result[$_set]("remoteHost", dart.dload(dart.dload(this.socket, 'remoteAddress'), 'host'));
          result[$_set]("remotePort", dart.dload(this.socket, 'remotePort'));
        } catch (e$) {
          let e = dart.getThrown(e$);
          result[$_set]("remotePort", "NA");
          result[$_set]("remoteHost", "NA");
        }
      } else {
        result[$_set]("remotePort", "NA");
        result[$_set]("remoteHost", "NA");
      }
      result[$_set]("addressType", dart.dload(dart.dload(dart.dload(this.socket, 'address'), 'type'), 'name'));
      return result;
    }
    static getSocketInfoMapByID(func, params) {
      if (!dart.test(params[$containsKey]("id"))) dart.assertFailed();
      let id = core.int.parse(params[$_get]("id"));
      let result = dart.test(io._SocketResourceInfo.openSockets[$containsKey](id)) ? io._SocketResourceInfo.openSockets[$_get](id).getSocketInfoMap() : new _js_helper.LinkedMap.new();
      let jsonValue = convert.json.encode(result);
      return FutureOfServiceExtensionResponse().value(new developer.ServiceExtensionResponse.result(jsonValue));
    }
    static getOpenSockets(func, params) {
      if (!dart.equals(func, "ext.dart.io.getOpenSockets")) dart.assertFailed();
      let data = new (IdentityMapOfString$Object()).from(["type", "_opensockets", "data", io._SocketResourceInfo.getOpenSocketsList()]);
      let jsonValue = convert.json.encode(data);
      return FutureOfServiceExtensionResponse().value(new developer.ServiceExtensionResponse.result(jsonValue));
    }
    static SocketOpened(info) {
      if (!!dart.test(io._SocketResourceInfo.openSockets[$containsKey](info.id))) dart.assertFailed();
      io._SocketResourceInfo.openSockets[$_set](info.id, info);
    }
    static SocketClosed(info) {
      if (!dart.test(io._SocketResourceInfo.openSockets[$containsKey](info.id))) dart.assertFailed();
      io._SocketResourceInfo.openSockets[$remove](info.id);
    }
  };
  (io._SocketResourceInfo.new = function(socket) {
    this.socket = socket;
    io._SocketResourceInfo.__proto__.new.call(this, "_socket");
    io._SocketResourceInfo.SocketOpened(this);
  }).prototype = io._SocketResourceInfo.prototype;
  dart.addTypeTests(io._SocketResourceInfo);
  dart.setMethodSignature(io._SocketResourceInfo, () => ({
    __proto__: dart.getMethods(io._SocketResourceInfo.__proto__),
    getSocketInfoMap: dart.fnType(core.Map$(core.String, dart.dynamic), [])
  }));
  dart.setGetterSignature(io._SocketResourceInfo, () => ({
    __proto__: dart.getGetters(io._SocketResourceInfo.__proto__),
    name: core.String
  }));
  dart.setFieldSignature(io._SocketResourceInfo, () => ({
    __proto__: dart.getFields(io._SocketResourceInfo.__proto__),
    socket: dart.finalFieldType(dart.dynamic)
  }));
  dart.defineLazy(io._SocketResourceInfo, {
    /*io._SocketResourceInfo._tcpString*/get _tcpString() {
      return "TCP";
    },
    /*io._SocketResourceInfo._udpString*/get _udpString() {
      return "UDP";
    },
    /*io._SocketResourceInfo._type*/get _type() {
      return "_socket";
    },
    /*io._SocketResourceInfo.openSockets*/get openSockets() {
      return new (IdentityMapOfint$_SocketResourceInfo()).new();
    },
    set openSockets(_) {}
  });
  io.IOSink = class IOSink extends core.Object {
    static new(target, opts) {
      let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
      return new io._IOSinkImpl.new(target, encoding);
    }
    get encoding() {
      return this[encoding];
    }
    set encoding(value) {
      this[encoding] = value;
    }
  };
  (io.IOSink[dart.mixinNew] = function() {
    this[encoding] = null;
  }).prototype = io.IOSink.prototype;
  dart.addTypeTests(io.IOSink);
  const encoding = Symbol("IOSink.encoding");
  io.IOSink[dart.implements] = () => [StreamSinkOfListOfint(), core.StringSink];
  dart.setFieldSignature(io.IOSink, () => ({
    __proto__: dart.getFields(io.IOSink.__proto__),
    encoding: dart.fieldType(convert.Encoding)
  }));
  const _target$ = Symbol('_target');
  const _doneCompleter = Symbol('_doneCompleter');
  const _controllerInstance = Symbol('_controllerInstance');
  const _controllerCompleter = Symbol('_controllerCompleter');
  const _isClosed$ = Symbol('_isClosed');
  const _isBound = Symbol('_isBound');
  const _hasError$ = Symbol('_hasError');
  const _reportClosedSink$ = Symbol('_reportClosedSink');
  const _closeTarget = Symbol('_closeTarget');
  const _completeDoneValue = Symbol('_completeDoneValue');
  const _completeDoneError = Symbol('_completeDoneError');
  const _is__StreamSinkImpl_default = Symbol('_is__StreamSinkImpl_default');
  io._StreamSinkImpl$ = dart.generic(T => {
    let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
    let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
    let StreamSinkOfT = () => (StreamSinkOfT = dart.constFn(async.StreamSink$(T)))();
    let StreamConsumerOfT = () => (StreamConsumerOfT = dart.constFn(async.StreamConsumer$(T)))();
    class _StreamSinkImpl extends core.Object {
      [_reportClosedSink$]() {
        if (this._equals(io.stderr[_sink$0])) {
          dart.throw(new core.StateError.new("Stderr is closed."));
        }
        io.stderr.writeln("StreamSink is closed and adding to it is an error.");
        io.stderr.writeln("  See http://dartbug.com/29554.");
        io.stderr.writeln(core.StackTrace.current);
      }
      add(data) {
        T._check(data);
        if (dart.test(this[_isClosed$])) {
          this[_reportClosedSink$]();
          return;
        }
        this[_controller$].add(data);
      }
      addError(error, stackTrace) {
        if (stackTrace === void 0) stackTrace = null;
        if (dart.test(this[_isClosed$])) {
          this[_reportClosedSink$]();
          return;
        }
        this[_controller$].addError(error, stackTrace);
      }
      addStream(stream) {
        StreamOfT()._check(stream);
        if (dart.test(this[_isBound])) {
          dart.throw(new core.StateError.new("StreamSink is already bound to a stream"));
        }
        if (dart.test(this[_hasError$])) return this.done;
        this[_isBound] = true;
        let future = this[_controllerCompleter] == null ? this[_target$].addStream(stream) : this[_controllerCompleter].future.then(dart.dynamic, dart.fn(_ => this[_target$].addStream(stream), dynamicToFuture()));
        let t = this[_controllerInstance];
        t == null ? null : t.close();
        return future.whenComplete(dart.fn(() => {
          this[_isBound] = false;
        }, VoidToNull()));
      }
      flush() {
        if (dart.test(this[_isBound])) {
          dart.throw(new core.StateError.new("StreamSink is bound to a stream"));
        }
        if (this[_controllerInstance] == null) return async.Future.value(this);
        this[_isBound] = true;
        let future = this[_controllerCompleter].future;
        this[_controllerInstance].close();
        return future.whenComplete(dart.fn(() => {
          this[_isBound] = false;
        }, VoidToNull()));
      }
      close() {
        if (dart.test(this[_isBound])) {
          dart.throw(new core.StateError.new("StreamSink is bound to a stream"));
        }
        if (!dart.test(this[_isClosed$])) {
          this[_isClosed$] = true;
          if (this[_controllerInstance] != null) {
            this[_controllerInstance].close();
          } else {
            this[_closeTarget]();
          }
        }
        return this.done;
      }
      [_closeTarget]() {
        this[_target$].close().then(dart.void, dart.bind(this, _completeDoneValue), {onError: dart.bind(this, _completeDoneError)});
      }
      get done() {
        return this[_doneCompleter].future;
      }
      [_completeDoneValue](value) {
        if (!dart.test(this[_doneCompleter].isCompleted)) {
          this[_doneCompleter].complete(value);
        }
      }
      [_completeDoneError](error, stackTrace) {
        if (!dart.test(this[_doneCompleter].isCompleted)) {
          this[_hasError$] = true;
          this[_doneCompleter].completeError(error, stackTrace);
        }
      }
      get [_controller$]() {
        if (dart.test(this[_isBound])) {
          dart.throw(new core.StateError.new("StreamSink is bound to a stream"));
        }
        if (dart.test(this[_isClosed$])) {
          dart.throw(new core.StateError.new("StreamSink is closed"));
        }
        if (this[_controllerInstance] == null) {
          this[_controllerInstance] = StreamControllerOfT().new({sync: true});
          this[_controllerCompleter] = async.Completer.new();
          FutureOfNull()._check(this[_target$].addStream(this[_controller$].stream).then(core.Null, dart.fn(_ => {
            if (dart.test(this[_isBound])) {
              this[_controllerCompleter].complete(this);
              this[_controllerCompleter] = null;
              this[_controllerInstance] = null;
            } else {
              this[_closeTarget]();
            }
          }, dynamicToNull()), {onError: dart.fn((error, stackTrace) => {
              if (dart.test(this[_isBound])) {
                this[_controllerCompleter].completeError(error, core.StackTrace._check(stackTrace));
                this[_controllerCompleter] = null;
                this[_controllerInstance] = null;
              } else {
                this[_completeDoneError](error, core.StackTrace._check(stackTrace));
              }
            }, dynamicAnddynamicToNull())}));
        }
        return this[_controllerInstance];
      }
    }
    (_StreamSinkImpl.new = function(target) {
      this[_doneCompleter] = async.Completer.new();
      this[_controllerInstance] = null;
      this[_controllerCompleter] = null;
      this[_isClosed$] = false;
      this[_isBound] = false;
      this[_hasError$] = false;
      this[_target$] = target;
    }).prototype = _StreamSinkImpl.prototype;
    dart.addTypeTests(_StreamSinkImpl);
    _StreamSinkImpl.prototype[_is__StreamSinkImpl_default] = true;
    _StreamSinkImpl[dart.implements] = () => [StreamSinkOfT()];
    dart.setMethodSignature(_StreamSinkImpl, () => ({
      __proto__: dart.getMethods(_StreamSinkImpl.__proto__),
      [_reportClosedSink$]: dart.fnType(dart.void, []),
      add: dart.fnType(dart.void, [core.Object]),
      addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
      addStream: dart.fnType(async.Future, [core.Object]),
      flush: dart.fnType(async.Future, []),
      close: dart.fnType(async.Future, []),
      [_closeTarget]: dart.fnType(dart.void, []),
      [_completeDoneValue]: dart.fnType(dart.void, [dart.dynamic]),
      [_completeDoneError]: dart.fnType(dart.void, [dart.dynamic, core.StackTrace])
    }));
    dart.setGetterSignature(_StreamSinkImpl, () => ({
      __proto__: dart.getGetters(_StreamSinkImpl.__proto__),
      done: async.Future,
      [_controller$]: async.StreamController$(T)
    }));
    dart.setFieldSignature(_StreamSinkImpl, () => ({
      __proto__: dart.getFields(_StreamSinkImpl.__proto__),
      [_target$]: dart.finalFieldType(StreamConsumerOfT()),
      [_doneCompleter]: dart.finalFieldType(async.Completer),
      [_controllerInstance]: dart.fieldType(StreamControllerOfT()),
      [_controllerCompleter]: dart.fieldType(async.Completer),
      [_isClosed$]: dart.fieldType(core.bool),
      [_isBound]: dart.fieldType(core.bool),
      [_hasError$]: dart.fieldType(core.bool)
    }));
    return _StreamSinkImpl;
  });
  io._StreamSinkImpl = io._StreamSinkImpl$();
  dart.addTypeTests(io._StreamSinkImpl, _is__StreamSinkImpl_default);
  const _encoding = Symbol('_encoding');
  const _encodingMutable = Symbol('_encodingMutable');
  io._IOSinkImpl = class _IOSinkImpl extends io._StreamSinkImpl$(core.List$(core.int)) {
    get encoding() {
      return this[_encoding];
    }
    set encoding(value) {
      if (!dart.test(this[_encodingMutable])) {
        dart.throw(new core.StateError.new("IOSink encoding is not mutable"));
      }
      this[_encoding] = value;
    }
    write(obj) {
      let string = dart.str(obj);
      if (string[$isEmpty]) return;
      this.add(this[_encoding].encode(string));
    }
    writeAll(objects, separator) {
      if (separator === void 0) separator = "";
      let iterator = objects[$iterator];
      if (!dart.test(iterator.moveNext())) return;
      if (separator[$isEmpty]) {
        do {
          this.write(iterator.current);
        } while (dart.test(iterator.moveNext()));
      } else {
        this.write(iterator.current);
        while (dart.test(iterator.moveNext())) {
          this.write(separator);
          this.write(iterator.current);
        }
      }
    }
    writeln(object) {
      if (object === void 0) object = "";
      this.write(object);
      this.write("\n");
    }
    writeCharCode(charCode) {
      this.write(core.String.fromCharCode(charCode));
    }
  };
  (io._IOSinkImpl.new = function(target, encoding) {
    this[_encodingMutable] = true;
    this[_encoding] = encoding;
    io._IOSinkImpl.__proto__.new.call(this, target);
  }).prototype = io._IOSinkImpl.prototype;
  dart.addTypeTests(io._IOSinkImpl);
  io._IOSinkImpl[dart.implements] = () => [io.IOSink];
  dart.setMethodSignature(io._IOSinkImpl, () => ({
    __proto__: dart.getMethods(io._IOSinkImpl.__proto__),
    write: dart.fnType(dart.void, [core.Object]),
    writeAll: dart.fnType(dart.void, [core.Iterable], [core.String]),
    writeln: dart.fnType(dart.void, [], [core.Object]),
    writeCharCode: dart.fnType(dart.void, [core.int])
  }));
  dart.setGetterSignature(io._IOSinkImpl, () => ({
    __proto__: dart.getGetters(io._IOSinkImpl.__proto__),
    encoding: convert.Encoding
  }));
  dart.setSetterSignature(io._IOSinkImpl, () => ({
    __proto__: dart.getSetters(io._IOSinkImpl.__proto__),
    encoding: convert.Encoding
  }));
  dart.setFieldSignature(io._IOSinkImpl, () => ({
    __proto__: dart.getFields(io._IOSinkImpl.__proto__),
    [_encoding]: dart.fieldType(convert.Encoding),
    [_encodingMutable]: dart.fieldType(core.bool)
  }));
  io._IOService = class _IOService extends core.Object {
    static _dispatch(request, data) {
      dart.throw(new core.UnsupportedError.new("_IOService._dispatch"));
    }
  };
  (io._IOService.new = function() {
  }).prototype = io._IOService.prototype;
  dart.addTypeTests(io._IOService);
  dart.defineLazy(io._IOService, {
    /*io._IOService.fileExists*/get fileExists() {
      return 0;
    },
    /*io._IOService.fileCreate*/get fileCreate() {
      return 1;
    },
    /*io._IOService.fileDelete*/get fileDelete() {
      return 2;
    },
    /*io._IOService.fileRename*/get fileRename() {
      return 3;
    },
    /*io._IOService.fileCopy*/get fileCopy() {
      return 4;
    },
    /*io._IOService.fileOpen*/get fileOpen() {
      return 5;
    },
    /*io._IOService.fileResolveSymbolicLinks*/get fileResolveSymbolicLinks() {
      return 6;
    },
    /*io._IOService.fileClose*/get fileClose() {
      return 7;
    },
    /*io._IOService.filePosition*/get filePosition() {
      return 8;
    },
    /*io._IOService.fileSetPosition*/get fileSetPosition() {
      return 9;
    },
    /*io._IOService.fileTruncate*/get fileTruncate() {
      return 10;
    },
    /*io._IOService.fileLength*/get fileLength() {
      return 11;
    },
    /*io._IOService.fileLengthFromPath*/get fileLengthFromPath() {
      return 12;
    },
    /*io._IOService.fileLastAccessed*/get fileLastAccessed() {
      return 13;
    },
    /*io._IOService.fileSetLastAccessed*/get fileSetLastAccessed() {
      return 14;
    },
    /*io._IOService.fileLastModified*/get fileLastModified() {
      return 15;
    },
    /*io._IOService.fileSetLastModified*/get fileSetLastModified() {
      return 16;
    },
    /*io._IOService.fileFlush*/get fileFlush() {
      return 17;
    },
    /*io._IOService.fileReadByte*/get fileReadByte() {
      return 18;
    },
    /*io._IOService.fileWriteByte*/get fileWriteByte() {
      return 19;
    },
    /*io._IOService.fileRead*/get fileRead() {
      return 20;
    },
    /*io._IOService.fileReadInto*/get fileReadInto() {
      return 21;
    },
    /*io._IOService.fileWriteFrom*/get fileWriteFrom() {
      return 22;
    },
    /*io._IOService.fileCreateLink*/get fileCreateLink() {
      return 23;
    },
    /*io._IOService.fileDeleteLink*/get fileDeleteLink() {
      return 24;
    },
    /*io._IOService.fileRenameLink*/get fileRenameLink() {
      return 25;
    },
    /*io._IOService.fileLinkTarget*/get fileLinkTarget() {
      return 26;
    },
    /*io._IOService.fileType*/get fileType() {
      return 27;
    },
    /*io._IOService.fileIdentical*/get fileIdentical() {
      return 28;
    },
    /*io._IOService.fileStat*/get fileStat() {
      return 29;
    },
    /*io._IOService.fileLock*/get fileLock() {
      return 30;
    },
    /*io._IOService.socketLookup*/get socketLookup() {
      return 31;
    },
    /*io._IOService.socketListInterfaces*/get socketListInterfaces() {
      return 32;
    },
    /*io._IOService.socketReverseLookup*/get socketReverseLookup() {
      return 33;
    },
    /*io._IOService.directoryCreate*/get directoryCreate() {
      return 34;
    },
    /*io._IOService.directoryDelete*/get directoryDelete() {
      return 35;
    },
    /*io._IOService.directoryExists*/get directoryExists() {
      return 36;
    },
    /*io._IOService.directoryCreateTemp*/get directoryCreateTemp() {
      return 37;
    },
    /*io._IOService.directoryListStart*/get directoryListStart() {
      return 38;
    },
    /*io._IOService.directoryListNext*/get directoryListNext() {
      return 39;
    },
    /*io._IOService.directoryListStop*/get directoryListStop() {
      return 40;
    },
    /*io._IOService.directoryRename*/get directoryRename() {
      return 41;
    },
    /*io._IOService.sslProcessFilter*/get sslProcessFilter() {
      return 42;
    }
  });
  io.Link = class Link extends core.Object {
    static new(path) {
      let overrides = io.IOOverrides.current;
      if (overrides == null) {
        return new io._Link.new(path);
      }
      return overrides.createLink(path);
    }
    static fromRawPath(rawPath) {
      return new io._Link.fromRawPath(rawPath);
    }
    static fromUri(uri) {
      return io.Link.new(uri.toFilePath());
    }
  };
  (io.Link[dart.mixinNew] = function() {
  }).prototype = io.Link.prototype;
  dart.addTypeTests(io.Link);
  io.Link[dart.implements] = () => [io.FileSystemEntity];
  const _makeWindowsLinkTarget = Symbol('_makeWindowsLinkTarget');
  const _exceptionFromResponse = Symbol('_exceptionFromResponse');
  io._Link = class _Link extends io.FileSystemEntity {
    get [_path]() {
      return this[_path$2];
    }
    set [_path](value) {
      this[_path$2] = value;
    }
    get [_rawPath$]() {
      return this[_rawPath$2];
    }
    set [_rawPath$](value) {
      this[_rawPath$2] = value;
    }
    get path() {
      return this[_path];
    }
    toString() {
      return "Link: '" + dart.str(this.path) + "'";
    }
    exists() {
      return io.FileSystemEntity._isLinkRaw(this[_rawPath$]);
    }
    existsSync() {
      return io.FileSystemEntity._isLinkRawSync(this[_rawPath$]);
    }
    get absolute() {
      return io.Link.fromRawPath(this[_rawAbsolutePath]);
    }
    create(target, opts) {
      let recursive = opts && 'recursive' in opts ? opts.recursive : false;
      if (dart.test(io.Platform.isWindows)) {
        target = this[_makeWindowsLinkTarget](target);
      }
      let result = dart.test(recursive) ? this.parent.create({recursive: true}) : FutureOfNull().value(null);
      return FutureOfLink()._check(result.then(dart.dynamic, dart.fn(_ => io._File._dispatchWithNamespace(io._IOService.fileCreateLink, [null, this[_rawPath$], target]), DirectoryToFuture())).then(io.Link, dart.fn(response => {
        if (dart.test(this[_isErrorResponse](response))) {
          dart.throw(this[_exceptionFromResponse](response, "Cannot create link to target '" + dart.str(target) + "'", this.path));
        }
        return this;
      }, dynamicTo_Link())));
    }
    createSync(target, opts) {
      let recursive = opts && 'recursive' in opts ? opts.recursive : false;
      if (dart.test(recursive)) {
        this.parent.createSync({recursive: true});
      }
      if (dart.test(io.Platform.isWindows)) {
        target = this[_makeWindowsLinkTarget](target);
      }
      let result = io._File._createLink(io._Namespace._namespace, this[_rawPath$], target);
      io._Link.throwIfError(result, "Cannot create link", this.path);
    }
    [_makeWindowsLinkTarget](target) {
      let base = core.Uri.file(dart.str(io.Directory.current.path) + "\\");
      let link = core.Uri.file(this.path);
      let destination = core.Uri.file(target);
      let result = base.resolveUri(link).resolveUri(destination).toFilePath();
      if (result.length > 3 && result[$_get](1) === ":" && result[$_get](2) === "\\") {
        return "\\??\\" + dart.str(result);
      } else {
        dart.throw(new io.FileSystemException.new("Target " + dart.str(result) + " of Link.create on Windows cannot be converted" + " to start with a drive letter.  Unexpected error."));
      }
    }
    updateSync(target) {
      this.deleteSync();
      this.createSync(target);
    }
    update(target) {
      return FutureOfLink()._check(this.delete().then(io.Link, dart.fn(_ => this.create(target), FileSystemEntityToFutureOfLink())));
    }
    [_delete](opts) {
      let recursive = opts && 'recursive' in opts ? opts.recursive : false;
      if (dart.test(recursive)) {
        return FutureOfLink()._check(io.Directory.fromRawPath(this[_rawPath$]).delete({recursive: true}).then(io.Link, dart.fn(_ => this, FileSystemEntityTo_Link())));
      }
      return FutureOfLink()._check(io._File._dispatchWithNamespace(io._IOService.fileDeleteLink, [null, this[_rawPath$]]).then(io.Link, dart.fn(response => {
        if (dart.test(this[_isErrorResponse](response))) {
          dart.throw(this[_exceptionFromResponse](response, "Cannot delete link", this.path));
        }
        return this;
      }, dynamicTo_Link())));
    }
    [_deleteSync](opts) {
      let recursive = opts && 'recursive' in opts ? opts.recursive : false;
      if (dart.test(recursive)) {
        return io.Directory.fromRawPath(this[_rawPath$]).deleteSync({recursive: true});
      }
      let result = io._File._deleteLinkNative(io._Namespace._namespace, this[_rawPath$]);
      io._Link.throwIfError(result, "Cannot delete link", this.path);
    }
    rename(newPath) {
      return FutureOfLink()._check(io._File._dispatchWithNamespace(io._IOService.fileRenameLink, [null, this[_rawPath$], newPath]).then(io.Link, dart.fn(response => {
        if (dart.test(this[_isErrorResponse](response))) {
          dart.throw(this[_exceptionFromResponse](response, "Cannot rename link to '" + dart.str(newPath) + "'", this.path));
        }
        return io.Link.new(newPath);
      }, dynamicToLink())));
    }
    renameSync(newPath) {
      let result = io._File._renameLink(io._Namespace._namespace, this[_rawPath$], newPath);
      io._Link.throwIfError(result, "Cannot rename link '" + dart.str(this.path) + "' to '" + dart.str(newPath) + "'");
      return io.Link.new(newPath);
    }
    target() {
      return FutureOfString()._check(io._File._dispatchWithNamespace(io._IOService.fileLinkTarget, [null, this[_rawPath$]]).then(core.String, dart.fn(response => {
        if (dart.test(this[_isErrorResponse](response))) {
          dart.throw(this[_exceptionFromResponse](response, "Cannot get target of link", this.path));
        }
        return FutureOrOfString()._check(response);
      }, dynamicToFutureOrOfString())));
    }
    targetSync() {
      let result = io._File._linkTarget(io._Namespace._namespace, this[_rawPath$]);
      io._Link.throwIfError(result, "Cannot read link", this.path);
      return core.String._check(result);
    }
    static throwIfError(result, msg, path) {
      if (path === void 0) path = "";
      if (io.OSError.is(result)) {
        dart.throw(new io.FileSystemException.new(msg, path, result));
      }
    }
    [_isErrorResponse](response) {
      return core.List.is(response) && !dart.equals(response[$_get](0), 0);
    }
    [_exceptionFromResponse](response, message, path) {
      if (!dart.test(this[_isErrorResponse](response))) dart.assertFailed();
      switch (dart.dindex(response, 0)) {
        case 1:
        {
          return new core.ArgumentError.new();
        }
        case 2:
        {
          let err = new io.OSError.new(core.String._check(dart.dindex(response, 2)), core.int._check(dart.dindex(response, 1)));
          return new io.FileSystemException.new(message, path, err);
        }
        default:
        {
          return core.Exception.new("Unknown error");
        }
      }
    }
  };
  (io._Link.new = function(path) {
    this[_path$2] = null;
    this[_rawPath$2] = null;
    io._Link.__proto__.new.call(this);
    core.ArgumentError.checkNotNull(path, "path");
    this[_path] = path;
    this[_rawPath$] = io.FileSystemEntity._toUtf8Array(path);
  }).prototype = io._Link.prototype;
  (io._Link.fromRawPath = function(rawPath) {
    this[_path$2] = null;
    this[_rawPath$2] = null;
    io._Link.__proto__.new.call(this);
    this[_rawPath$] = io.FileSystemEntity._toNullTerminatedUtf8Array(rawPath);
    this[_path] = io.FileSystemEntity._toStringFromUtf8Array(rawPath);
  }).prototype = io._Link.prototype;
  dart.addTypeTests(io._Link);
  const _path$2 = Symbol("_Link._path");
  const _rawPath$2 = Symbol("_Link._rawPath");
  io._Link[dart.implements] = () => [io.Link];
  dart.setMethodSignature(io._Link, () => ({
    __proto__: dart.getMethods(io._Link.__proto__),
    exists: dart.fnType(async.Future$(core.bool), []),
    existsSync: dart.fnType(core.bool, []),
    create: dart.fnType(async.Future$(io.Link), [core.String], {recursive: core.bool}),
    createSync: dart.fnType(dart.void, [core.String], {recursive: core.bool}),
    [_makeWindowsLinkTarget]: dart.fnType(core.String, [core.String]),
    updateSync: dart.fnType(dart.void, [core.String]),
    update: dart.fnType(async.Future$(io.Link), [core.String]),
    [_delete]: dart.fnType(async.Future$(io.Link), [], {recursive: core.bool}),
    [_deleteSync]: dart.fnType(dart.void, [], {recursive: core.bool}),
    rename: dart.fnType(async.Future$(io.Link), [core.String]),
    renameSync: dart.fnType(io.Link, [core.String]),
    target: dart.fnType(async.Future$(core.String), []),
    targetSync: dart.fnType(core.String, []),
    [_isErrorResponse]: dart.fnType(core.bool, [dart.dynamic]),
    [_exceptionFromResponse]: dart.fnType(dart.dynamic, [dart.dynamic, core.String, core.String])
  }));
  dart.setGetterSignature(io._Link, () => ({
    __proto__: dart.getGetters(io._Link.__proto__),
    path: core.String,
    absolute: io.Link
  }));
  dart.setFieldSignature(io._Link, () => ({
    __proto__: dart.getFields(io._Link.__proto__),
    [_path]: dart.fieldType(core.String),
    [_rawPath$]: dart.fieldType(typed_data.Uint8List)
  }));
  dart.defineExtensionMethods(io._Link, ['toString']);
  io._Namespace = class _Namespace extends core.Object {
    static get _namespace() {
      dart.throw(new core.UnsupportedError.new("_Namespace"));
    }
    static get _namespacePointer() {
      dart.throw(new core.UnsupportedError.new("_Namespace"));
    }
    static _setupNamespace(namespace) {
      dart.throw(new core.UnsupportedError.new("_Namespace"));
    }
  };
  (io._Namespace.new = function() {
  }).prototype = io._Namespace.prototype;
  dart.addTypeTests(io._Namespace);
  dart.defineLazy(io, {
    /*io._ioOverridesToken*/get _ioOverridesToken() {
      return new core.Object.new();
    },
    /*io._asyncRunZoned*/get _asyncRunZoned() {
      return dart.fn(async.runZoned, Fn__ToR());
    }
  });
  io.IOOverrides = class IOOverrides extends core.Object {
    static get current() {
      return io.IOOverrides._check((() => {
        let l = async.Zone.current._get(io._ioOverridesToken);
        return l != null ? l : io.IOOverrides._global;
      })());
    }
    static set global(overrides) {
      io.IOOverrides._global = overrides;
    }
    static runZoned(R, body, opts) {
      let createDirectory = opts && 'createDirectory' in opts ? opts.createDirectory : null;
      let getCurrentDirectory = opts && 'getCurrentDirectory' in opts ? opts.getCurrentDirectory : null;
      let setCurrentDirectory = opts && 'setCurrentDirectory' in opts ? opts.setCurrentDirectory : null;
      let getSystemTempDirectory = opts && 'getSystemTempDirectory' in opts ? opts.getSystemTempDirectory : null;
      let createFile = opts && 'createFile' in opts ? opts.createFile : null;
      let stat = opts && 'stat' in opts ? opts.stat : null;
      let statSync = opts && 'statSync' in opts ? opts.statSync : null;
      let fseIdentical = opts && 'fseIdentical' in opts ? opts.fseIdentical : null;
      let fseIdenticalSync = opts && 'fseIdenticalSync' in opts ? opts.fseIdenticalSync : null;
      let fseGetType = opts && 'fseGetType' in opts ? opts.fseGetType : null;
      let fseGetTypeSync = opts && 'fseGetTypeSync' in opts ? opts.fseGetTypeSync : null;
      let fsWatch = opts && 'fsWatch' in opts ? opts.fsWatch : null;
      let fsWatchIsSupported = opts && 'fsWatchIsSupported' in opts ? opts.fsWatchIsSupported : null;
      let createLink = opts && 'createLink' in opts ? opts.createLink : null;
      let socketConnect = opts && 'socketConnect' in opts ? opts.socketConnect : null;
      let socketStartConnect = opts && 'socketStartConnect' in opts ? opts.socketStartConnect : null;
      let zoneSpecification = opts && 'zoneSpecification' in opts ? opts.zoneSpecification : null;
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let overrides = new io._IOOverridesScope.new(createDirectory, getCurrentDirectory, setCurrentDirectory, getSystemTempDirectory, createFile, stat, statSync, fseIdentical, fseIdenticalSync, fseGetType, fseGetTypeSync, fsWatch, fsWatchIsSupported, createLink, socketConnect, socketStartConnect);
      return io._asyncRunZoned(R, body, {zoneValues: new _js_helper.LinkedMap.from([io._ioOverridesToken, overrides]), zoneSpecification: zoneSpecification, onError: onError});
    }
    static runWithIOOverrides(R, body, overrides, opts) {
      let zoneSpecification = opts && 'zoneSpecification' in opts ? opts.zoneSpecification : null;
      let onError = opts && 'onError' in opts ? opts.onError : null;
      return io._asyncRunZoned(R, body, {zoneValues: new _js_helper.LinkedMap.from([io._ioOverridesToken, overrides]), zoneSpecification: zoneSpecification, onError: onError});
    }
    createDirectory(path) {
      return new io._Directory.new(path);
    }
    getCurrentDirectory() {
      return io._Directory.current;
    }
    setCurrentDirectory(path) {
      io._Directory.current = path;
    }
    getSystemTempDirectory() {
      return io._Directory.systemTemp;
    }
    createFile(path) {
      return new io._File.new(path);
    }
    stat(path) {
      return io.FileStat._stat(path);
    }
    statSync(path) {
      return io.FileStat._statSyncInternal(path);
    }
    fseIdentical(path1, path2) {
      return io.FileSystemEntity._identical(path1, path2);
    }
    fseIdenticalSync(path1, path2) {
      return io.FileSystemEntity._identicalSync(path1, path2);
    }
    fseGetType(path, followLinks) {
      return io.FileSystemEntity._getTypeRequest(typed_data.Uint8List._check(convert.utf8.encode(path)), followLinks);
    }
    fseGetTypeSync(path, followLinks) {
      return io.FileSystemEntity._getTypeSyncHelper(typed_data.Uint8List._check(convert.utf8.encode(path)), followLinks);
    }
    fsWatch(path, events, recursive) {
      return io._FileSystemWatcher._watch(path, events, recursive);
    }
    fsWatchIsSupported() {
      return io._FileSystemWatcher.isSupported;
    }
    createLink(path) {
      return new io._Link.new(path);
    }
    socketConnect(host, port, opts) {
      let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
      let timeout = opts && 'timeout' in opts ? opts.timeout : null;
      return io.Socket._connect(host, port, {sourceAddress: sourceAddress, timeout: timeout});
    }
    socketStartConnect(host, port, opts) {
      let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
      return io.Socket._startConnect(host, port, {sourceAddress: sourceAddress});
    }
  };
  (io.IOOverrides.new = function() {
  }).prototype = io.IOOverrides.prototype;
  dart.addTypeTests(io.IOOverrides);
  dart.setMethodSignature(io.IOOverrides, () => ({
    __proto__: dart.getMethods(io.IOOverrides.__proto__),
    createDirectory: dart.fnType(io.Directory, [core.String]),
    getCurrentDirectory: dart.fnType(io.Directory, []),
    setCurrentDirectory: dart.fnType(dart.void, [core.String]),
    getSystemTempDirectory: dart.fnType(io.Directory, []),
    createFile: dart.fnType(io.File, [core.String]),
    stat: dart.fnType(async.Future$(io.FileStat), [core.String]),
    statSync: dart.fnType(io.FileStat, [core.String]),
    fseIdentical: dart.fnType(async.Future$(core.bool), [core.String, core.String]),
    fseIdenticalSync: dart.fnType(core.bool, [core.String, core.String]),
    fseGetType: dart.fnType(async.Future$(io.FileSystemEntityType), [core.String, core.bool]),
    fseGetTypeSync: dart.fnType(io.FileSystemEntityType, [core.String, core.bool]),
    fsWatch: dart.fnType(async.Stream$(io.FileSystemEvent), [core.String, core.int, core.bool]),
    fsWatchIsSupported: dart.fnType(core.bool, []),
    createLink: dart.fnType(io.Link, [core.String]),
    socketConnect: dart.fnType(async.Future$(io.Socket), [dart.dynamic, core.int], {sourceAddress: dart.dynamic, timeout: core.Duration}),
    socketStartConnect: dart.fnType(async.Future$(io.ConnectionTask$(io.Socket)), [dart.dynamic, core.int], {sourceAddress: dart.dynamic})
  }));
  dart.defineLazy(io.IOOverrides, {
    /*io.IOOverrides._global*/get _global() {
      return null;
    },
    set _global(_) {}
  });
  const _createDirectory = Symbol('_createDirectory');
  const _getCurrentDirectory = Symbol('_getCurrentDirectory');
  const _setCurrentDirectory = Symbol('_setCurrentDirectory');
  const _getSystemTempDirectory = Symbol('_getSystemTempDirectory');
  const _createFile = Symbol('_createFile');
  const _stat = Symbol('_stat');
  const _statSync = Symbol('_statSync');
  const _fseIdentical = Symbol('_fseIdentical');
  const _fseIdenticalSync = Symbol('_fseIdenticalSync');
  const _fseGetType = Symbol('_fseGetType');
  const _fseGetTypeSync = Symbol('_fseGetTypeSync');
  const _fsWatch = Symbol('_fsWatch');
  const _fsWatchIsSupported = Symbol('_fsWatchIsSupported');
  const _createLink = Symbol('_createLink');
  const _socketConnect = Symbol('_socketConnect');
  const _socketStartConnect = Symbol('_socketStartConnect');
  const _previous$1 = Symbol('_previous');
  io._IOOverridesScope = class _IOOverridesScope extends io.IOOverrides {
    createDirectory(path) {
      if (this[_createDirectory] != null) return this[_createDirectory](path);
      if (this[_previous$1] != null) return this[_previous$1].createDirectory(path);
      return super.createDirectory(path);
    }
    getCurrentDirectory() {
      if (this[_getCurrentDirectory] != null) return this[_getCurrentDirectory]();
      if (this[_previous$1] != null) return this[_previous$1].getCurrentDirectory();
      return super.getCurrentDirectory();
    }
    setCurrentDirectory(path) {
      if (this[_setCurrentDirectory] != null)
        this[_setCurrentDirectory](path);
      else if (this[_previous$1] != null)
        this[_previous$1].setCurrentDirectory(path);
      else
        super.setCurrentDirectory(path);
    }
    getSystemTempDirectory() {
      if (this[_getSystemTempDirectory] != null) return this[_getSystemTempDirectory]();
      if (this[_previous$1] != null) return this[_previous$1].getSystemTempDirectory();
      return super.getSystemTempDirectory();
    }
    createFile(path) {
      if (this[_createFile] != null) return this[_createFile](path);
      if (this[_previous$1] != null) return this[_previous$1].createFile(path);
      return super.createFile(path);
    }
    stat(path) {
      if (this[_stat] != null) return this[_stat](path);
      if (this[_previous$1] != null) return this[_previous$1].stat(path);
      return super.stat(path);
    }
    statSync(path) {
      if (this[_stat] != null) return this[_statSync](path);
      if (this[_previous$1] != null) return this[_previous$1].statSync(path);
      return super.statSync(path);
    }
    fseIdentical(path1, path2) {
      if (this[_fseIdentical] != null) return this[_fseIdentical](path1, path2);
      if (this[_previous$1] != null) return this[_previous$1].fseIdentical(path1, path2);
      return super.fseIdentical(path1, path2);
    }
    fseIdenticalSync(path1, path2) {
      if (this[_fseIdenticalSync] != null) return this[_fseIdenticalSync](path1, path2);
      if (this[_previous$1] != null) return this[_previous$1].fseIdenticalSync(path1, path2);
      return super.fseIdenticalSync(path1, path2);
    }
    fseGetType(path, followLinks) {
      if (this[_fseGetType] != null) return this[_fseGetType](path, followLinks);
      if (this[_previous$1] != null) return this[_previous$1].fseGetType(path, followLinks);
      return super.fseGetType(path, followLinks);
    }
    fseGetTypeSync(path, followLinks) {
      if (this[_fseGetTypeSync] != null) return this[_fseGetTypeSync](path, followLinks);
      if (this[_previous$1] != null) return this[_previous$1].fseGetTypeSync(path, followLinks);
      return super.fseGetTypeSync(path, followLinks);
    }
    fsWatch(path, events, recursive) {
      if (this[_fsWatch] != null) return this[_fsWatch](path, events, recursive);
      if (this[_previous$1] != null) return this[_previous$1].fsWatch(path, events, recursive);
      return super.fsWatch(path, events, recursive);
    }
    fsWatchIsSupported() {
      if (this[_fsWatchIsSupported] != null) return this[_fsWatchIsSupported]();
      if (this[_previous$1] != null) return this[_previous$1].fsWatchIsSupported();
      return super.fsWatchIsSupported();
    }
    createLink(path) {
      if (this[_createLink] != null) return this[_createLink](path);
      if (this[_previous$1] != null) return this[_previous$1].createLink(path);
      return super.createLink(path);
    }
    socketConnect(host, port, opts) {
      let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
      let timeout = opts && 'timeout' in opts ? opts.timeout : null;
      if (this[_socketConnect] != null) {
        return this[_socketConnect](host, port, {sourceAddress: sourceAddress, timeout: timeout});
      }
      if (this[_previous$1] != null) {
        return this[_previous$1].socketConnect(host, port, {sourceAddress: sourceAddress, timeout: timeout});
      }
      return super.socketConnect(host, port, {sourceAddress: sourceAddress, timeout: timeout});
    }
    socketStartConnect(host, port, opts) {
      let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
      if (this[_socketStartConnect] != null) {
        return this[_socketStartConnect](host, port, {sourceAddress: sourceAddress});
      }
      if (this[_previous$1] != null) {
        return this[_previous$1].socketStartConnect(host, port, {sourceAddress: sourceAddress});
      }
      return super.socketStartConnect(host, port, {sourceAddress: sourceAddress});
    }
  };
  (io._IOOverridesScope.new = function(createDirectory, getCurrentDirectory, setCurrentDirectory, getSystemTempDirectory, createFile, stat, statSync, fseIdentical, fseIdenticalSync, fseGetType, fseGetTypeSync, fsWatch, fsWatchIsSupported, createLink, socketConnect, socketStartConnect) {
    this[_previous$1] = io.IOOverrides.current;
    this[_createDirectory] = createDirectory;
    this[_getCurrentDirectory] = getCurrentDirectory;
    this[_setCurrentDirectory] = setCurrentDirectory;
    this[_getSystemTempDirectory] = getSystemTempDirectory;
    this[_createFile] = createFile;
    this[_stat] = stat;
    this[_statSync] = statSync;
    this[_fseIdentical] = fseIdentical;
    this[_fseIdenticalSync] = fseIdenticalSync;
    this[_fseGetType] = fseGetType;
    this[_fseGetTypeSync] = fseGetTypeSync;
    this[_fsWatch] = fsWatch;
    this[_fsWatchIsSupported] = fsWatchIsSupported;
    this[_createLink] = createLink;
    this[_socketConnect] = socketConnect;
    this[_socketStartConnect] = socketStartConnect;
  }).prototype = io._IOOverridesScope.prototype;
  dart.addTypeTests(io._IOOverridesScope);
  dart.setFieldSignature(io._IOOverridesScope, () => ({
    __proto__: dart.getFields(io._IOOverridesScope.__proto__),
    [_previous$1]: dart.finalFieldType(io.IOOverrides),
    [_createDirectory]: dart.fieldType(StringToDirectory()),
    [_getCurrentDirectory]: dart.fieldType(VoidToDirectory()),
    [_setCurrentDirectory]: dart.fieldType(StringTovoid()),
    [_getSystemTempDirectory]: dart.fieldType(VoidToDirectory()),
    [_createFile]: dart.fieldType(StringToFile()),
    [_stat]: dart.fieldType(StringToFutureOfFileStat()),
    [_statSync]: dart.fieldType(StringToFileStat()),
    [_fseIdentical]: dart.fieldType(StringAndStringToFutureOfbool()),
    [_fseIdenticalSync]: dart.fieldType(StringAndStringTobool()),
    [_fseGetType]: dart.fieldType(StringAndboolToFutureOfFileSystemEntityType()),
    [_fseGetTypeSync]: dart.fieldType(StringAndboolToFileSystemEntityType()),
    [_fsWatch]: dart.fieldType(StringAndintAndboolToStreamOfFileSystemEvent()),
    [_fsWatchIsSupported]: dart.fieldType(VoidTobool()),
    [_createLink]: dart.fieldType(StringToLink()),
    [_socketConnect]: dart.fieldType(dynamicAndint__ToFutureOfSocket()),
    [_socketStartConnect]: dart.fieldType(dynamicAndint__ToFutureOfConnectionTaskOfSocket())
  }));
  io.Platform = class Platform extends core.Object {
    static get numberOfProcessors() {
      return io.Platform._numberOfProcessors;
    }
    static get pathSeparator() {
      return io.Platform._pathSeparator;
    }
    static get localeName() {
      return io._Platform.localeName();
    }
    static get operatingSystem() {
      return io.Platform._operatingSystem;
    }
    static get operatingSystemVersion() {
      return io.Platform._operatingSystemVersion;
    }
    static get localHostname() {
      return io.Platform._localHostname;
    }
    static get environment() {
      return io._Platform.environment;
    }
    static get executable() {
      return io._Platform.executable;
    }
    static get resolvedExecutable() {
      return io._Platform.resolvedExecutable;
    }
    static get script() {
      return io._Platform.script;
    }
    static get executableArguments() {
      return io._Platform.executableArguments;
    }
    static get packageRoot() {
      return null;
    }
    static get packageConfig() {
      return io._Platform.packageConfig;
    }
    static get version() {
      return io.Platform._version;
    }
  };
  (io.Platform.new = function() {
  }).prototype = io.Platform.prototype;
  dart.addTypeTests(io.Platform);
  dart.defineLazy(io.Platform, {
    /*io.Platform._numberOfProcessors*/get _numberOfProcessors() {
      return io._Platform.numberOfProcessors;
    },
    /*io.Platform._pathSeparator*/get _pathSeparator() {
      return io._Platform.pathSeparator;
    },
    /*io.Platform._operatingSystem*/get _operatingSystem() {
      return io._Platform.operatingSystem;
    },
    /*io.Platform._operatingSystemVersion*/get _operatingSystemVersion() {
      return io._Platform.operatingSystemVersion;
    },
    /*io.Platform._localHostname*/get _localHostname() {
      return io._Platform.localHostname;
    },
    /*io.Platform._version*/get _version() {
      return io._Platform.version;
    },
    /*io.Platform.isLinux*/get isLinux() {
      return io.Platform._operatingSystem === "linux";
    },
    /*io.Platform.isMacOS*/get isMacOS() {
      return io.Platform._operatingSystem === "macos";
    },
    /*io.Platform.isWindows*/get isWindows() {
      return io.Platform._operatingSystem === "windows";
    },
    /*io.Platform.isAndroid*/get isAndroid() {
      return io.Platform._operatingSystem === "android";
    },
    /*io.Platform.isIOS*/get isIOS() {
      return io.Platform._operatingSystem === "ios";
    },
    /*io.Platform.isFuchsia*/get isFuchsia() {
      return io.Platform._operatingSystem === "fuchsia";
    }
  });
  io._Platform = class _Platform extends core.Object {
    static _numberOfProcessors() {
      dart.throw(new core.UnsupportedError.new("Platform._numberOfProcessors"));
    }
    static _pathSeparator() {
      dart.throw(new core.UnsupportedError.new("Platform._pathSeparator"));
    }
    static _operatingSystem() {
      dart.throw(new core.UnsupportedError.new("Platform._operatingSystem"));
    }
    static _operatingSystemVersion() {
      dart.throw(new core.UnsupportedError.new("Platform._operatingSystemVersion"));
    }
    static _localHostname() {
      dart.throw(new core.UnsupportedError.new("Platform._localHostname"));
    }
    static _executable() {
      dart.throw(new core.UnsupportedError.new("Platform._executable"));
    }
    static _resolvedExecutable() {
      dart.throw(new core.UnsupportedError.new("Platform._resolvedExecutable"));
    }
    static _environment() {
      dart.throw(new core.UnsupportedError.new("Platform._environment"));
    }
    static _executableArguments() {
      dart.throw(new core.UnsupportedError.new("Platform._executableArguments"));
    }
    static _packageRoot() {
      dart.throw(new core.UnsupportedError.new("Platform._packageRoot"));
    }
    static _packageConfig() {
      dart.throw(new core.UnsupportedError.new("Platform._packageConfig"));
    }
    static _version() {
      dart.throw(new core.UnsupportedError.new("Platform._version"));
    }
    static _localeName() {
      dart.throw(new core.UnsupportedError.new("Platform._localeName"));
    }
    static _script() {
      dart.throw(new core.UnsupportedError.new("Platform._script"));
    }
    static localeName() {
      let result = io._Platform._localeClosure == null ? io._Platform._localeName() : io._Platform._localeClosure();
      if (io.OSError.is(result)) {
        dart.throw(result);
      }
      return result;
    }
    static get numberOfProcessors() {
      return io._Platform._numberOfProcessors();
    }
    static get pathSeparator() {
      return io._Platform._pathSeparator();
    }
    static get operatingSystem() {
      return io._Platform._operatingSystem();
    }
    static get script() {
      return io._Platform._script();
    }
    static get operatingSystemVersion() {
      if (io._Platform._cachedOSVersion == null) {
        let result = io._Platform._operatingSystemVersion();
        if (io.OSError.is(result)) {
          dart.throw(result);
        }
        io._Platform._cachedOSVersion = core.String._check(result);
      }
      return io._Platform._cachedOSVersion;
    }
    static get localHostname() {
      let result = io._Platform._localHostname();
      if (io.OSError.is(result)) {
        dart.throw(result);
      }
      return core.String._check(result);
    }
    static get executableArguments() {
      return io._Platform._executableArguments();
    }
    static get environment() {
      if (io._Platform._environmentCache == null) {
        let env = io._Platform._environment();
        if (!io.OSError.is(env)) {
          let isWindows = io._Platform.operatingSystem === "windows";
          let result = isWindows ? new (_CaseInsensitiveStringMapOfString()).new() : new (IdentityMapOfString$String()).new();
          for (let str of core.Iterable._check(env)) {
            if (str == null) {
              continue;
            }
            let equalsIndex = dart.dsend(str, 'indexOf', ["="]);
            if (dart.dtest(dart.dsend(equalsIndex, '>', [0]))) {
              result[$_set](core.String._check(dart.dsend(str, 'substring', [0, equalsIndex])), core.String._check(dart.dsend(str, 'substring', [dart.dsend(equalsIndex, '+', [1])])));
            }
          }
          io._Platform._environmentCache = new (UnmodifiableMapViewOfString$String()).new(result);
        } else {
          io._Platform._environmentCache = env;
        }
      }
      if (io.OSError.is(io._Platform._environmentCache)) {
        dart.throw(io._Platform._environmentCache);
      } else {
        return MapOfString$String()._check(io._Platform._environmentCache);
      }
    }
    static get version() {
      return io._Platform._version();
    }
  };
  (io._Platform.new = function() {
  }).prototype = io._Platform.prototype;
  dart.addTypeTests(io._Platform);
  dart.defineLazy(io._Platform, {
    /*io._Platform.executable*/get executable() {
      return core.String._check(io._Platform._executable());
    },
    set executable(_) {},
    /*io._Platform.resolvedExecutable*/get resolvedExecutable() {
      return core.String._check(io._Platform._resolvedExecutable());
    },
    set resolvedExecutable(_) {},
    /*io._Platform.packageRoot*/get packageRoot() {
      return null;
    },
    set packageRoot(_) {},
    /*io._Platform.packageConfig*/get packageConfig() {
      return io._Platform._packageConfig();
    },
    set packageConfig(_) {},
    /*io._Platform._localeClosure*/get _localeClosure() {
      return null;
    },
    set _localeClosure(_) {},
    /*io._Platform._environmentCache*/get _environmentCache() {
      return null;
    },
    set _environmentCache(_) {},
    /*io._Platform._cachedOSVersion*/get _cachedOSVersion() {
      return null;
    },
    set _cachedOSVersion(_) {}
  });
  const _map$1 = Symbol('_map');
  const _is__CaseInsensitiveStringMap_default = Symbol('_is__CaseInsensitiveStringMap_default');
  io._CaseInsensitiveStringMap$ = dart.generic(V => {
    let IdentityMapOfString$V = () => (IdentityMapOfString$V = dart.constFn(_js_helper.IdentityMap$(core.String, V)))();
    let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
    let MapOfString$V = () => (MapOfString$V = dart.constFn(core.Map$(core.String, V)))();
    let StringAndVToV = () => (StringAndVToV = dart.constFn(dart.fnType(V, [core.String, V])))();
    let VToV = () => (VToV = dart.constFn(dart.fnType(V, [V])))();
    class _CaseInsensitiveStringMap extends collection.MapBase$(core.String, V) {
      containsKey(key) {
        return typeof key == 'string' && dart.test(this[_map$1][$containsKey](key[$toUpperCase]()));
      }
      containsValue(value) {
        return this[_map$1][$containsValue](value);
      }
      _get(key) {
        return typeof key == 'string' ? this[_map$1][$_get](key[$toUpperCase]()) : null;
      }
      _set(key, value) {
        core.String._check(key);
        V._check(value);
        this[_map$1][$_set](key[$toUpperCase](), value);
        return value;
      }
      putIfAbsent(key, ifAbsent) {
        core.String._check(key);
        VoidToV()._check(ifAbsent);
        return this[_map$1][$putIfAbsent](key[$toUpperCase](), ifAbsent);
      }
      addAll(other) {
        MapOfString$V()._check(other);
        other[$forEach](dart.fn((key, value) => this._set(key[$toUpperCase](), value), StringAndVToV()));
      }
      remove(key) {
        return typeof key == 'string' ? this[_map$1][$remove](key[$toUpperCase]()) : null;
      }
      clear() {
        this[_map$1][$clear]();
      }
      forEach(f) {
        this[_map$1][$forEach](f);
      }
      get keys() {
        return this[_map$1][$keys];
      }
      get values() {
        return this[_map$1][$values];
      }
      get length() {
        return this[_map$1][$length];
      }
      get isEmpty() {
        return this[_map$1][$isEmpty];
      }
      get isNotEmpty() {
        return this[_map$1][$isNotEmpty];
      }
      get entries() {
        return this[_map$1][$entries];
      }
      map(K2, V2, transform) {
        return core.Map$(K2, V2)._check(this[_map$1][$map](K2, V2, transform));
      }
      update(key, update, opts) {
        core.String._check(key);
        VToV()._check(update);
        let ifAbsent = opts && 'ifAbsent' in opts ? opts.ifAbsent : null;
        VoidToV()._check(ifAbsent);
        return this[_map$1][$update](key[$toUpperCase](), update, {ifAbsent: ifAbsent});
      }
      updateAll(update) {
        StringAndVToV()._check(update);
        this[_map$1][$updateAll](update);
      }
      removeWhere(test) {
        this[_map$1][$removeWhere](test);
      }
      toString() {
        return dart.toString(this[_map$1]);
      }
    }
    (_CaseInsensitiveStringMap.new = function() {
      this[_map$1] = new (IdentityMapOfString$V()).new();
    }).prototype = _CaseInsensitiveStringMap.prototype;
    dart.addTypeTests(_CaseInsensitiveStringMap);
    _CaseInsensitiveStringMap.prototype[_is__CaseInsensitiveStringMap_default] = true;
    dart.setMethodSignature(_CaseInsensitiveStringMap, () => ({
      __proto__: dart.getMethods(_CaseInsensitiveStringMap.__proto__),
      containsKey: dart.fnType(core.bool, [core.Object]),
      [$containsKey]: dart.fnType(core.bool, [core.Object]),
      containsValue: dart.fnType(core.bool, [core.Object]),
      [$containsValue]: dart.fnType(core.bool, [core.Object]),
      _get: dart.fnType(V, [core.Object]),
      [$_get]: dart.fnType(V, [core.Object]),
      _set: dart.fnType(dart.void, [core.Object, core.Object]),
      [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
      putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
      [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      [$addAll]: dart.fnType(dart.void, [core.Object]),
      remove: dart.fnType(V, [core.Object]),
      [$remove]: dart.fnType(V, [core.Object]),
      clear: dart.fnType(dart.void, []),
      [$clear]: dart.fnType(dart.void, []),
      forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, V])]),
      [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, V])]),
      map: dart.gFnType((K2, V2) => [core.Map$(K2, V2), [dart.fnType(core.MapEntry$(K2, V2), [core.String, V])]]),
      [$map]: dart.gFnType((K2, V2) => [core.Map$(K2, V2), [dart.fnType(core.MapEntry$(K2, V2), [core.String, V])]]),
      update: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
      [$update]: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
      updateAll: dart.fnType(dart.void, [core.Object]),
      [$updateAll]: dart.fnType(dart.void, [core.Object]),
      removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [core.String, V])]),
      [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [core.String, V])]),
      toString: dart.fnType(core.String, []),
      [$toString]: dart.fnType(core.String, [])
    }));
    dart.setGetterSignature(_CaseInsensitiveStringMap, () => ({
      __proto__: dart.getGetters(_CaseInsensitiveStringMap.__proto__),
      keys: core.Iterable$(core.String),
      [$keys]: core.Iterable$(core.String),
      values: core.Iterable$(V),
      [$values]: core.Iterable$(V),
      length: core.int,
      [$length]: core.int,
      isEmpty: core.bool,
      [$isEmpty]: core.bool,
      isNotEmpty: core.bool,
      [$isNotEmpty]: core.bool,
      entries: core.Iterable$(core.MapEntry$(core.String, V)),
      [$entries]: core.Iterable$(core.MapEntry$(core.String, V))
    }));
    dart.setFieldSignature(_CaseInsensitiveStringMap, () => ({
      __proto__: dart.getFields(_CaseInsensitiveStringMap.__proto__),
      [_map$1]: dart.finalFieldType(MapOfString$V())
    }));
    dart.defineExtensionMethods(_CaseInsensitiveStringMap, [
      'containsKey',
      'containsValue',
      '_get',
      '_set',
      'putIfAbsent',
      'addAll',
      'remove',
      'clear',
      'forEach',
      'map',
      'update',
      'updateAll',
      'removeWhere',
      'toString'
    ]);
    dart.defineExtensionAccessors(_CaseInsensitiveStringMap, [
      'keys',
      'values',
      'length',
      'isEmpty',
      'isNotEmpty',
      'entries'
    ]);
    return _CaseInsensitiveStringMap;
  });
  io._CaseInsensitiveStringMap = io._CaseInsensitiveStringMap$();
  dart.addTypeTests(io._CaseInsensitiveStringMap, _is__CaseInsensitiveStringMap_default);
  io._ProcessUtils = class _ProcessUtils extends core.Object {
    static _exit(status) {
      dart.throw(new core.UnsupportedError.new("ProcessUtils._exit"));
    }
    static _setExitCode(status) {
      dart.throw(new core.UnsupportedError.new("ProcessUtils._setExitCode"));
    }
    static _getExitCode() {
      dart.throw(new core.UnsupportedError.new("ProcessUtils._getExitCode"));
    }
    static _sleep(millis) {
      dart.throw(new core.UnsupportedError.new("ProcessUtils._sleep"));
    }
    static _pid(process) {
      dart.throw(new core.UnsupportedError.new("ProcessUtils._pid"));
    }
    static _watchSignal(signal) {
      dart.throw(new core.UnsupportedError.new("ProcessUtils._watchSignal"));
    }
  };
  (io._ProcessUtils.new = function() {
  }).prototype = io._ProcessUtils.prototype;
  dart.addTypeTests(io._ProcessUtils);
  io.exit = function(code) {
    core.ArgumentError.checkNotNull(code, "code");
    if (!dart.test(io._EmbedderConfig._mayExit)) {
      dart.throw(new core.UnsupportedError.new("This embedder disallows calling dart:io's exit()"));
    }
    io._ProcessUtils._exit(code);
  };
  dart.copyProperties(io, {
    get exitCode() {
      return io._ProcessUtils._getExitCode();
    },
    set exitCode(code) {
      core.ArgumentError.checkNotNull(code, "code");
      io._ProcessUtils._setExitCode(code);
    }
  });
  io.sleep = function(duration) {
    let milliseconds = duration.inMilliseconds;
    if (dart.notNull(milliseconds) < 0) {
      dart.throw(new core.ArgumentError.new("sleep: duration cannot be negative"));
    }
    if (!dart.test(io._EmbedderConfig._maySleep)) {
      dart.throw(new core.UnsupportedError.new("This embedder disallows calling dart:io's sleep()"));
    }
    io._ProcessUtils._sleep(milliseconds);
  };
  dart.copyProperties(io, {
    get pid() {
      return io._ProcessUtils._pid(null);
    }
  });
  io.ProcessInfo = class ProcessInfo extends core.Object {
    static get currentRss() {
      dart.throw(new core.UnsupportedError.new("ProcessInfo.currentRss"));
    }
    static get maxRss() {
      dart.throw(new core.UnsupportedError.new("ProcessInfo.maxRss"));
    }
  };
  (io.ProcessInfo.new = function() {
  }).prototype = io.ProcessInfo.prototype;
  dart.addTypeTests(io.ProcessInfo);
  let const$61;
  let const$62;
  io.ProcessStartMode = class ProcessStartMode extends core.Object {
    static get values() {
      return const$61 || (const$61 = dart.constList([io.ProcessStartMode.normal, io.ProcessStartMode.inheritStdio, io.ProcessStartMode.detached, io.ProcessStartMode.detachedWithStdio], io.ProcessStartMode));
    }
    toString() {
      return (const$62 || (const$62 = dart.constList(["normal", "inheritStdio", "detached", "detachedWithStdio"], core.String)))[$_get](this[_mode]);
    }
  };
  (io.ProcessStartMode._internal = function(mode) {
    this[_mode] = mode;
  }).prototype = io.ProcessStartMode.prototype;
  dart.addTypeTests(io.ProcessStartMode);
  dart.setFieldSignature(io.ProcessStartMode, () => ({
    __proto__: dart.getFields(io.ProcessStartMode.__proto__),
    [_mode]: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionMethods(io.ProcessStartMode, ['toString']);
  dart.defineLazy(io.ProcessStartMode, {
    /*io.ProcessStartMode.normal*/get normal() {
      return dart.const(new io.ProcessStartMode._internal(0));
    },
    /*io.ProcessStartMode.NORMAL*/get NORMAL() {
      return io.ProcessStartMode.normal;
    },
    /*io.ProcessStartMode.inheritStdio*/get inheritStdio() {
      return dart.const(new io.ProcessStartMode._internal(1));
    },
    /*io.ProcessStartMode.INHERIT_STDIO*/get INHERIT_STDIO() {
      return io.ProcessStartMode.inheritStdio;
    },
    /*io.ProcessStartMode.detached*/get detached() {
      return dart.const(new io.ProcessStartMode._internal(2));
    },
    /*io.ProcessStartMode.DETACHED*/get DETACHED() {
      return io.ProcessStartMode.detached;
    },
    /*io.ProcessStartMode.detachedWithStdio*/get detachedWithStdio() {
      return dart.const(new io.ProcessStartMode._internal(3));
    },
    /*io.ProcessStartMode.DETACHED_WITH_STDIO*/get DETACHED_WITH_STDIO() {
      return io.ProcessStartMode.detachedWithStdio;
    }
  });
  io.Process = class Process extends core.Object {
    static start(executable, arguments$0, opts) {
      let workingDirectory = opts && 'workingDirectory' in opts ? opts.workingDirectory : null;
      let environment = opts && 'environment' in opts ? opts.environment : null;
      let includeParentEnvironment = opts && 'includeParentEnvironment' in opts ? opts.includeParentEnvironment : true;
      let runInShell = opts && 'runInShell' in opts ? opts.runInShell : false;
      let mode = opts && 'mode' in opts ? opts.mode : io.ProcessStartMode.normal;
      dart.throw(new core.UnsupportedError.new("Process.start"));
    }
    static run(executable, arguments$0, opts) {
      let workingDirectory = opts && 'workingDirectory' in opts ? opts.workingDirectory : null;
      let environment = opts && 'environment' in opts ? opts.environment : null;
      let includeParentEnvironment = opts && 'includeParentEnvironment' in opts ? opts.includeParentEnvironment : true;
      let runInShell = opts && 'runInShell' in opts ? opts.runInShell : false;
      let stdoutEncoding = opts && 'stdoutEncoding' in opts ? opts.stdoutEncoding : io.systemEncoding;
      let stderrEncoding = opts && 'stderrEncoding' in opts ? opts.stderrEncoding : io.systemEncoding;
      dart.throw(new core.UnsupportedError.new("Process.run"));
    }
    static runSync(executable, arguments$0, opts) {
      let workingDirectory = opts && 'workingDirectory' in opts ? opts.workingDirectory : null;
      let environment = opts && 'environment' in opts ? opts.environment : null;
      let includeParentEnvironment = opts && 'includeParentEnvironment' in opts ? opts.includeParentEnvironment : true;
      let runInShell = opts && 'runInShell' in opts ? opts.runInShell : false;
      let stdoutEncoding = opts && 'stdoutEncoding' in opts ? opts.stdoutEncoding : io.systemEncoding;
      let stderrEncoding = opts && 'stderrEncoding' in opts ? opts.stderrEncoding : io.systemEncoding;
      dart.throw(new core.UnsupportedError.new("Process.runSync"));
    }
    static killPid(pid, signal) {
      if (signal === void 0) signal = io.ProcessSignal.sigterm;
      dart.throw(new core.UnsupportedError.new("Process.killPid"));
    }
  };
  (io.Process.new = function() {
  }).prototype = io.Process.prototype;
  dart.addTypeTests(io.Process);
  io.ProcessResult = class ProcessResult extends core.Object {
    get exitCode() {
      return this[exitCode$];
    }
    set exitCode(value) {
      super.exitCode = value;
    }
    get stdout() {
      return this[stdout$];
    }
    set stdout(value) {
      super.stdout = value;
    }
    get stderr() {
      return this[stderr$];
    }
    set stderr(value) {
      super.stderr = value;
    }
    get pid() {
      return this[pid$];
    }
    set pid(value) {
      super.pid = value;
    }
  };
  (io.ProcessResult.new = function(pid, exitCode, stdout, stderr) {
    this[pid$] = pid;
    this[exitCode$] = exitCode;
    this[stdout$] = stdout;
    this[stderr$] = stderr;
  }).prototype = io.ProcessResult.prototype;
  dart.addTypeTests(io.ProcessResult);
  const exitCode$ = Symbol("ProcessResult.exitCode");
  const stdout$ = Symbol("ProcessResult.stdout");
  const stderr$ = Symbol("ProcessResult.stderr");
  const pid$ = Symbol("ProcessResult.pid");
  dart.setFieldSignature(io.ProcessResult, () => ({
    __proto__: dart.getFields(io.ProcessResult.__proto__),
    exitCode: dart.finalFieldType(core.int),
    stdout: dart.finalFieldType(dart.dynamic),
    stderr: dart.finalFieldType(dart.dynamic),
    pid: dart.finalFieldType(core.int)
  }));
  const _signalNumber = Symbol('_signalNumber');
  const _name$3 = Symbol('_name');
  io.ProcessSignal = class ProcessSignal extends core.Object {
    toString() {
      return this[_name$3];
    }
    watch() {
      return io._ProcessUtils._watchSignal(this);
    }
  };
  (io.ProcessSignal.__ = function(signalNumber, name) {
    this[_signalNumber] = signalNumber;
    this[_name$3] = name;
  }).prototype = io.ProcessSignal.prototype;
  dart.addTypeTests(io.ProcessSignal);
  dart.setMethodSignature(io.ProcessSignal, () => ({
    __proto__: dart.getMethods(io.ProcessSignal.__proto__),
    watch: dart.fnType(async.Stream$(io.ProcessSignal), [])
  }));
  dart.setFieldSignature(io.ProcessSignal, () => ({
    __proto__: dart.getFields(io.ProcessSignal.__proto__),
    [_signalNumber]: dart.finalFieldType(core.int),
    [_name$3]: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(io.ProcessSignal, ['toString']);
  dart.defineLazy(io.ProcessSignal, {
    /*io.ProcessSignal.sighup*/get sighup() {
      return dart.const(new io.ProcessSignal.__(1, "SIGHUP"));
    },
    /*io.ProcessSignal.sigint*/get sigint() {
      return dart.const(new io.ProcessSignal.__(2, "SIGINT"));
    },
    /*io.ProcessSignal.sigquit*/get sigquit() {
      return dart.const(new io.ProcessSignal.__(3, "SIGQUIT"));
    },
    /*io.ProcessSignal.sigill*/get sigill() {
      return dart.const(new io.ProcessSignal.__(4, "SIGILL"));
    },
    /*io.ProcessSignal.sigtrap*/get sigtrap() {
      return dart.const(new io.ProcessSignal.__(5, "SIGTRAP"));
    },
    /*io.ProcessSignal.sigabrt*/get sigabrt() {
      return dart.const(new io.ProcessSignal.__(6, "SIGABRT"));
    },
    /*io.ProcessSignal.sigbus*/get sigbus() {
      return dart.const(new io.ProcessSignal.__(7, "SIGBUS"));
    },
    /*io.ProcessSignal.sigfpe*/get sigfpe() {
      return dart.const(new io.ProcessSignal.__(8, "SIGFPE"));
    },
    /*io.ProcessSignal.sigkill*/get sigkill() {
      return dart.const(new io.ProcessSignal.__(9, "SIGKILL"));
    },
    /*io.ProcessSignal.sigusr1*/get sigusr1() {
      return dart.const(new io.ProcessSignal.__(10, "SIGUSR1"));
    },
    /*io.ProcessSignal.sigsegv*/get sigsegv() {
      return dart.const(new io.ProcessSignal.__(11, "SIGSEGV"));
    },
    /*io.ProcessSignal.sigusr2*/get sigusr2() {
      return dart.const(new io.ProcessSignal.__(12, "SIGUSR2"));
    },
    /*io.ProcessSignal.sigpipe*/get sigpipe() {
      return dart.const(new io.ProcessSignal.__(13, "SIGPIPE"));
    },
    /*io.ProcessSignal.sigalrm*/get sigalrm() {
      return dart.const(new io.ProcessSignal.__(14, "SIGALRM"));
    },
    /*io.ProcessSignal.sigterm*/get sigterm() {
      return dart.const(new io.ProcessSignal.__(15, "SIGTERM"));
    },
    /*io.ProcessSignal.sigchld*/get sigchld() {
      return dart.const(new io.ProcessSignal.__(17, "SIGCHLD"));
    },
    /*io.ProcessSignal.sigcont*/get sigcont() {
      return dart.const(new io.ProcessSignal.__(18, "SIGCONT"));
    },
    /*io.ProcessSignal.sigstop*/get sigstop() {
      return dart.const(new io.ProcessSignal.__(19, "SIGSTOP"));
    },
    /*io.ProcessSignal.sigtstp*/get sigtstp() {
      return dart.const(new io.ProcessSignal.__(20, "SIGTSTP"));
    },
    /*io.ProcessSignal.sigttin*/get sigttin() {
      return dart.const(new io.ProcessSignal.__(21, "SIGTTIN"));
    },
    /*io.ProcessSignal.sigttou*/get sigttou() {
      return dart.const(new io.ProcessSignal.__(22, "SIGTTOU"));
    },
    /*io.ProcessSignal.sigurg*/get sigurg() {
      return dart.const(new io.ProcessSignal.__(23, "SIGURG"));
    },
    /*io.ProcessSignal.sigxcpu*/get sigxcpu() {
      return dart.const(new io.ProcessSignal.__(24, "SIGXCPU"));
    },
    /*io.ProcessSignal.sigxfsz*/get sigxfsz() {
      return dart.const(new io.ProcessSignal.__(25, "SIGXFSZ"));
    },
    /*io.ProcessSignal.sigvtalrm*/get sigvtalrm() {
      return dart.const(new io.ProcessSignal.__(26, "SIGVTALRM"));
    },
    /*io.ProcessSignal.sigprof*/get sigprof() {
      return dart.const(new io.ProcessSignal.__(27, "SIGPROF"));
    },
    /*io.ProcessSignal.sigwinch*/get sigwinch() {
      return dart.const(new io.ProcessSignal.__(28, "SIGWINCH"));
    },
    /*io.ProcessSignal.sigpoll*/get sigpoll() {
      return dart.const(new io.ProcessSignal.__(29, "SIGPOLL"));
    },
    /*io.ProcessSignal.sigsys*/get sigsys() {
      return dart.const(new io.ProcessSignal.__(31, "SIGSYS"));
    },
    /*io.ProcessSignal.SIGHUP*/get SIGHUP() {
      return io.ProcessSignal.sighup;
    },
    /*io.ProcessSignal.SIGINT*/get SIGINT() {
      return io.ProcessSignal.sigint;
    },
    /*io.ProcessSignal.SIGQUIT*/get SIGQUIT() {
      return io.ProcessSignal.sigquit;
    },
    /*io.ProcessSignal.SIGILL*/get SIGILL() {
      return io.ProcessSignal.sigill;
    },
    /*io.ProcessSignal.SIGTRAP*/get SIGTRAP() {
      return io.ProcessSignal.sigtrap;
    },
    /*io.ProcessSignal.SIGABRT*/get SIGABRT() {
      return io.ProcessSignal.sigabrt;
    },
    /*io.ProcessSignal.SIGBUS*/get SIGBUS() {
      return io.ProcessSignal.sigbus;
    },
    /*io.ProcessSignal.SIGFPE*/get SIGFPE() {
      return io.ProcessSignal.sigfpe;
    },
    /*io.ProcessSignal.SIGKILL*/get SIGKILL() {
      return io.ProcessSignal.sigkill;
    },
    /*io.ProcessSignal.SIGUSR1*/get SIGUSR1() {
      return io.ProcessSignal.sigusr1;
    },
    /*io.ProcessSignal.SIGSEGV*/get SIGSEGV() {
      return io.ProcessSignal.sigsegv;
    },
    /*io.ProcessSignal.SIGUSR2*/get SIGUSR2() {
      return io.ProcessSignal.sigusr2;
    },
    /*io.ProcessSignal.SIGPIPE*/get SIGPIPE() {
      return io.ProcessSignal.sigpipe;
    },
    /*io.ProcessSignal.SIGALRM*/get SIGALRM() {
      return io.ProcessSignal.sigalrm;
    },
    /*io.ProcessSignal.SIGTERM*/get SIGTERM() {
      return io.ProcessSignal.sigterm;
    },
    /*io.ProcessSignal.SIGCHLD*/get SIGCHLD() {
      return io.ProcessSignal.sigchld;
    },
    /*io.ProcessSignal.SIGCONT*/get SIGCONT() {
      return io.ProcessSignal.sigcont;
    },
    /*io.ProcessSignal.SIGSTOP*/get SIGSTOP() {
      return io.ProcessSignal.sigstop;
    },
    /*io.ProcessSignal.SIGTSTP*/get SIGTSTP() {
      return io.ProcessSignal.sigtstp;
    },
    /*io.ProcessSignal.SIGTTIN*/get SIGTTIN() {
      return io.ProcessSignal.sigttin;
    },
    /*io.ProcessSignal.SIGTTOU*/get SIGTTOU() {
      return io.ProcessSignal.sigttou;
    },
    /*io.ProcessSignal.SIGURG*/get SIGURG() {
      return io.ProcessSignal.sigurg;
    },
    /*io.ProcessSignal.SIGXCPU*/get SIGXCPU() {
      return io.ProcessSignal.sigxcpu;
    },
    /*io.ProcessSignal.SIGXFSZ*/get SIGXFSZ() {
      return io.ProcessSignal.sigxfsz;
    },
    /*io.ProcessSignal.SIGVTALRM*/get SIGVTALRM() {
      return io.ProcessSignal.sigvtalrm;
    },
    /*io.ProcessSignal.SIGPROF*/get SIGPROF() {
      return io.ProcessSignal.sigprof;
    },
    /*io.ProcessSignal.SIGWINCH*/get SIGWINCH() {
      return io.ProcessSignal.sigwinch;
    },
    /*io.ProcessSignal.SIGPOLL*/get SIGPOLL() {
      return io.ProcessSignal.sigpoll;
    },
    /*io.ProcessSignal.SIGSYS*/get SIGSYS() {
      return io.ProcessSignal.sigsys;
    }
  });
  io.SignalException = class SignalException extends core.Object {
    get message() {
      return this[message$9];
    }
    set message(value) {
      super.message = value;
    }
    get osError() {
      return this[osError$0];
    }
    set osError(value) {
      super.osError = value;
    }
    toString() {
      let msg = "";
      if (this.osError != null) {
        msg = ", osError: " + dart.str(this.osError);
      }
      return "SignalException: " + dart.str(this.message) + msg;
    }
  };
  (io.SignalException.new = function(message, osError) {
    if (osError === void 0) osError = null;
    this[message$9] = message;
    this[osError$0] = osError;
  }).prototype = io.SignalException.prototype;
  dart.addTypeTests(io.SignalException);
  const message$9 = Symbol("SignalException.message");
  const osError$0 = Symbol("SignalException.osError");
  io.SignalException[dart.implements] = () => [io.IOException];
  dart.setFieldSignature(io.SignalException, () => ({
    __proto__: dart.getFields(io.SignalException.__proto__),
    message: dart.finalFieldType(core.String),
    osError: dart.finalFieldType(dart.dynamic)
  }));
  dart.defineExtensionMethods(io.SignalException, ['toString']);
  io.ProcessException = class ProcessException extends core.Object {
    get executable() {
      return this[executable$];
    }
    set executable(value) {
      super.executable = value;
    }
    get arguments() {
      return this[arguments$];
    }
    set arguments(value) {
      super.arguments = value;
    }
    get message() {
      return this[message$10];
    }
    set message(value) {
      super.message = value;
    }
    get errorCode() {
      return this[errorCode$0];
    }
    set errorCode(value) {
      super.errorCode = value;
    }
    toString() {
      let msg = this.message == null ? "OS error code: " + dart.str(this.errorCode) : this.message;
      let args = this.arguments[$join](" ");
      return "ProcessException: " + dart.str(msg) + "\n  Command: " + dart.str(this.executable) + " " + dart.str(args);
    }
  };
  (io.ProcessException.new = function(executable, arguments$0, message, errorCode) {
    if (message === void 0) message = "";
    if (errorCode === void 0) errorCode = 0;
    this[executable$] = executable;
    this[arguments$] = arguments$0;
    this[message$10] = message;
    this[errorCode$0] = errorCode;
  }).prototype = io.ProcessException.prototype;
  dart.addTypeTests(io.ProcessException);
  const executable$ = Symbol("ProcessException.executable");
  const arguments$ = Symbol("ProcessException.arguments");
  const message$10 = Symbol("ProcessException.message");
  const errorCode$0 = Symbol("ProcessException.errorCode");
  io.ProcessException[dart.implements] = () => [io.IOException];
  dart.setFieldSignature(io.ProcessException, () => ({
    __proto__: dart.getFields(io.ProcessException.__proto__),
    executable: dart.finalFieldType(core.String),
    arguments: dart.finalFieldType(ListOfString()),
    message: dart.finalFieldType(core.String),
    errorCode: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionMethods(io.ProcessException, ['toString']);
  const _socket = Symbol('_socket');
  const _owner = Symbol('_owner');
  const _onCancel$ = Symbol('_onCancel');
  const _detachRaw = Symbol('_detachRaw');
  io.SecureSocket = class SecureSocket extends core.Object {
    static connect(host, port, opts) {
      let context = opts && 'context' in opts ? opts.context : null;
      let onBadCertificate = opts && 'onBadCertificate' in opts ? opts.onBadCertificate : null;
      let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
      let timeout = opts && 'timeout' in opts ? opts.timeout : null;
      return FutureOfSecureSocket()._check(io.RawSecureSocket.connect(host, port, {context: context, onBadCertificate: onBadCertificate, supportedProtocols: supportedProtocols, timeout: timeout}).then(io.SecureSocket, dart.fn(rawSocket => io.SecureSocket.__(rawSocket), RawSecureSocketToSecureSocket())));
    }
    static startConnect(host, port, opts) {
      let context = opts && 'context' in opts ? opts.context : null;
      let onBadCertificate = opts && 'onBadCertificate' in opts ? opts.onBadCertificate : null;
      let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
      return FutureOfConnectionTaskOfSecureSocket()._check(io.RawSecureSocket.startConnect(host, port, {context: context, onBadCertificate: onBadCertificate, supportedProtocols: supportedProtocols}).then(ConnectionTaskOfSecureSocket(), dart.fn(rawState => {
        let socket = FutureOfSecureSocket()._check(rawState.socket.then(io.SecureSocket, dart.fn(rawSocket => io.SecureSocket.__(rawSocket), RawSecureSocketToSecureSocket())));
        return new (ConnectionTaskOfSecureSocket()).__({socket: socket, onCancel: rawState[_onCancel$]});
      }, ConnectionTaskOfRawSecureSocketToConnectionTaskOfSecureSocket())));
    }
    static secure(socket, opts) {
      let host = opts && 'host' in opts ? opts.host : null;
      let context = opts && 'context' in opts ? opts.context : null;
      let onBadCertificate = opts && 'onBadCertificate' in opts ? opts.onBadCertificate : null;
      return FutureOfSecureSocket()._check(FutureOfRawSecureSocket()._check(async.Future.as(dart.dsend(socket, _detachRaw, [])).then(io.RawSecureSocket, dart.fn(detachedRaw => io.RawSecureSocket.secure(io.RawSocket.as(dart.dindex(detachedRaw, 0)), {subscription: StreamSubscriptionOfRawSocketEvent().as(dart.dindex(detachedRaw, 1)), host: host, context: context, onBadCertificate: onBadCertificate}), dynamicToFutureOfRawSecureSocket()))).then(io.SecureSocket, dart.fn(raw => io.SecureSocket.__(raw), RawSecureSocketToSecureSocket())));
    }
    static secureServer(socket, context, opts) {
      let bufferedData = opts && 'bufferedData' in opts ? opts.bufferedData : null;
      let requestClientCertificate = opts && 'requestClientCertificate' in opts ? opts.requestClientCertificate : false;
      let requireClientCertificate = opts && 'requireClientCertificate' in opts ? opts.requireClientCertificate : false;
      let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
      return FutureOfSecureSocket()._check(FutureOfRawSecureSocket()._check(async.Future.as(dart.dsend(socket, _detachRaw, [])).then(io.RawSecureSocket, dart.fn(detachedRaw => io.RawSecureSocket.secureServer(io.RawSocket.as(dart.dindex(detachedRaw, 0)), context, {subscription: StreamSubscriptionOfRawSocketEvent().as(dart.dindex(detachedRaw, 1)), bufferedData: bufferedData, requestClientCertificate: requestClientCertificate, requireClientCertificate: requireClientCertificate, supportedProtocols: supportedProtocols}), dynamicToFutureOfRawSecureSocket()))).then(io.SecureSocket, dart.fn(raw => io.SecureSocket.__(raw), RawSecureSocketToSecureSocket())));
    }
  };
  (io.SecureSocket[dart.mixinNew] = function() {
  }).prototype = io.SecureSocket.prototype;
  dart.addTypeTests(io.SecureSocket);
  io.SecureSocket[dart.implements] = () => [io.Socket];
  io.SecureServerSocket = class SecureServerSocket extends async.Stream$(io.SecureSocket) {
    static bind(address, port, context, opts) {
      let backlog = opts && 'backlog' in opts ? opts.backlog : 0;
      let v6Only = opts && 'v6Only' in opts ? opts.v6Only : false;
      let requestClientCertificate = opts && 'requestClientCertificate' in opts ? opts.requestClientCertificate : false;
      let requireClientCertificate = opts && 'requireClientCertificate' in opts ? opts.requireClientCertificate : false;
      let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
      let shared = opts && 'shared' in opts ? opts.shared : false;
      return FutureOfSecureServerSocket()._check(io.RawSecureServerSocket.bind(address, port, context, {backlog: backlog, v6Only: v6Only, requestClientCertificate: requestClientCertificate, requireClientCertificate: requireClientCertificate, supportedProtocols: supportedProtocols, shared: shared}).then(io.SecureServerSocket, dart.fn(serverSocket => new io.SecureServerSocket.__(serverSocket), RawSecureServerSocketToSecureServerSocket())));
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      return this[_socket].map(io.SecureSocket, dart.fn(rawSocket => io.SecureSocket.__(rawSocket), RawSecureSocketToSecureSocket())).listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
    get port() {
      return this[_socket].port;
    }
    get address() {
      return this[_socket].address;
    }
    close() {
      return FutureOfSecureServerSocket()._check(this[_socket].close().then(io.SecureServerSocket, dart.fn(_ => this, RawSecureServerSocketToSecureServerSocket())));
    }
    set [_owner](owner) {
      this[_socket][_owner] = owner;
    }
  };
  (io.SecureServerSocket.__ = function(socket) {
    this[_socket] = socket;
    io.SecureServerSocket.__proto__.new.call(this);
  }).prototype = io.SecureServerSocket.prototype;
  dart.addTypeTests(io.SecureServerSocket);
  dart.setMethodSignature(io.SecureServerSocket, () => ({
    __proto__: dart.getMethods(io.SecureServerSocket.__proto__),
    listen: dart.fnType(async.StreamSubscription$(io.SecureSocket), [dart.fnType(dart.void, [io.SecureSocket])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
    close: dart.fnType(async.Future$(io.SecureServerSocket), [])
  }));
  dart.setGetterSignature(io.SecureServerSocket, () => ({
    __proto__: dart.getGetters(io.SecureServerSocket.__proto__),
    port: core.int,
    address: io.InternetAddress
  }));
  dart.setSetterSignature(io.SecureServerSocket, () => ({
    __proto__: dart.getSetters(io.SecureServerSocket.__proto__),
    [_owner]: dart.dynamic
  }));
  dart.setFieldSignature(io.SecureServerSocket, () => ({
    __proto__: dart.getFields(io.SecureServerSocket.__proto__),
    [_socket]: dart.finalFieldType(io.RawSecureServerSocket)
  }));
  const _context = Symbol('_context');
  const _subscription$ = Symbol('_subscription');
  const _onSubscriptionStateChange = Symbol('_onSubscriptionStateChange');
  const _onPauseStateChange = Symbol('_onPauseStateChange');
  const _onData$0 = Symbol('_onData');
  io.RawSecureSocket = class RawSecureSocket extends core.Object {
    static connect(host, port, opts) {
      let context = opts && 'context' in opts ? opts.context : null;
      let onBadCertificate = opts && 'onBadCertificate' in opts ? opts.onBadCertificate : null;
      let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
      let timeout = opts && 'timeout' in opts ? opts.timeout : null;
      io._RawSecureSocket._verifyFields(host, port, false, false, false, onBadCertificate);
      return FutureOfRawSecureSocket()._check(io.RawSocket.connect(host, port, {timeout: timeout}).then(io.RawSecureSocket, dart.fn(socket => io.RawSecureSocket.secure(socket, {context: context, onBadCertificate: onBadCertificate, supportedProtocols: supportedProtocols}), RawSocketToFutureOfRawSecureSocket())));
    }
    static startConnect(host, port, opts) {
      let context = opts && 'context' in opts ? opts.context : null;
      let onBadCertificate = opts && 'onBadCertificate' in opts ? opts.onBadCertificate : null;
      let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
      return FutureOfConnectionTaskOfRawSecureSocket()._check(io.RawSocket.startConnect(host, port).then(ConnectionTaskOfRawSecureSocket(), dart.fn(rawState => {
        let socket = FutureOfRawSecureSocket()._check(rawState.socket.then(io.RawSecureSocket, dart.fn(rawSocket => io.RawSecureSocket.secure(rawSocket, {context: context, onBadCertificate: onBadCertificate, supportedProtocols: supportedProtocols}), RawSocketToFutureOfRawSecureSocket())));
        return new (ConnectionTaskOfRawSecureSocket()).__({socket: socket, onCancel: rawState[_onCancel$]});
      }, ConnectionTaskOfRawSocketToConnectionTaskOfRawSecureSocket())));
    }
    static secure(socket, opts) {
      let subscription = opts && 'subscription' in opts ? opts.subscription : null;
      let host = opts && 'host' in opts ? opts.host : null;
      let context = opts && 'context' in opts ? opts.context : null;
      let onBadCertificate = opts && 'onBadCertificate' in opts ? opts.onBadCertificate : null;
      let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
      socket.readEventsEnabled = false;
      socket.writeEventsEnabled = false;
      return io._RawSecureSocket.connect(host != null ? host : socket.address.host, socket.port, {is_server: false, socket: socket, subscription: subscription, context: context, onBadCertificate: onBadCertificate, supportedProtocols: supportedProtocols});
    }
    static secureServer(socket, context, opts) {
      let subscription = opts && 'subscription' in opts ? opts.subscription : null;
      let bufferedData = opts && 'bufferedData' in opts ? opts.bufferedData : null;
      let requestClientCertificate = opts && 'requestClientCertificate' in opts ? opts.requestClientCertificate : false;
      let requireClientCertificate = opts && 'requireClientCertificate' in opts ? opts.requireClientCertificate : false;
      let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
      socket.readEventsEnabled = false;
      socket.writeEventsEnabled = false;
      return io._RawSecureSocket.connect(socket.address, socket.remotePort, {context: context, is_server: true, socket: socket, subscription: subscription, bufferedData: bufferedData, requestClientCertificate: requestClientCertificate, requireClientCertificate: requireClientCertificate, supportedProtocols: supportedProtocols});
    }
  };
  (io.RawSecureSocket.new = function() {
  }).prototype = io.RawSecureSocket.prototype;
  dart.addTypeTests(io.RawSecureSocket);
  io.RawSecureSocket[dart.implements] = () => [io.RawSocket];
  io.RawSecureServerSocket = class RawSecureServerSocket extends async.Stream$(io.RawSecureSocket) {
    get requestClientCertificate() {
      return this[requestClientCertificate$];
    }
    set requestClientCertificate(value) {
      super.requestClientCertificate = value;
    }
    get requireClientCertificate() {
      return this[requireClientCertificate$];
    }
    set requireClientCertificate(value) {
      super.requireClientCertificate = value;
    }
    get supportedProtocols() {
      return this[supportedProtocols$];
    }
    set supportedProtocols(value) {
      super.supportedProtocols = value;
    }
    static bind(address, port, context, opts) {
      let backlog = opts && 'backlog' in opts ? opts.backlog : 0;
      let v6Only = opts && 'v6Only' in opts ? opts.v6Only : false;
      let requestClientCertificate = opts && 'requestClientCertificate' in opts ? opts.requestClientCertificate : false;
      let requireClientCertificate = opts && 'requireClientCertificate' in opts ? opts.requireClientCertificate : false;
      let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
      let shared = opts && 'shared' in opts ? opts.shared : false;
      return FutureOfRawSecureServerSocket()._check(io.RawServerSocket.bind(address, port, {backlog: backlog, v6Only: v6Only, shared: shared}).then(io.RawSecureServerSocket, dart.fn(serverSocket => new io.RawSecureServerSocket.__(serverSocket, context, requestClientCertificate, requireClientCertificate, supportedProtocols), RawServerSocketToRawSecureServerSocket())));
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      return this[_controller$].stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
    get port() {
      return this[_socket].port;
    }
    get address() {
      return this[_socket].address;
    }
    close() {
      this[_closed] = true;
      return FutureOfRawSecureServerSocket()._check(this[_socket].close().then(io.RawSecureServerSocket, dart.fn(_ => this, RawServerSocketToRawSecureServerSocket())));
    }
    [_onData$0](connection) {
      let remotePort = null;
      try {
        remotePort = connection.remotePort;
      } catch (e$) {
        let e = dart.getThrown(e$);
        return;
      }
      FutureOfNull()._check(io._RawSecureSocket.connect(connection.address, core.int._check(remotePort), {context: this[_context], is_server: true, socket: connection, requestClientCertificate: this.requestClientCertificate, requireClientCertificate: this.requireClientCertificate, supportedProtocols: this.supportedProtocols}).then(core.Null, dart.fn(secureConnection => {
        if (dart.test(this[_closed])) {
          secureConnection.close();
        } else {
          this[_controller$].add(secureConnection);
        }
      }, RawSecureSocketToNull()))).catchError(dart.fn((e, s) => {
        if (!dart.test(this[_closed])) {
          this[_controller$].addError(e, core.StackTrace._check(s));
        }
      }, dynamicAnddynamicToNull()));
    }
    [_onPauseStateChange]() {
      if (dart.test(this[_controller$].isPaused)) {
        this[_subscription$].pause();
      } else {
        this[_subscription$].resume();
      }
    }
    [_onSubscriptionStateChange]() {
      if (dart.test(this[_controller$].hasListener)) {
        this[_subscription$] = this[_socket].listen(dart.bind(this, _onData$0), {onError: dart.bind(this[_controller$], 'addError'), onDone: dart.bind(this[_controller$], 'close')});
      } else {
        this.close();
      }
    }
    set [_owner](owner) {
      dart.dput(this[_socket], _owner, owner);
    }
  };
  (io.RawSecureServerSocket.__ = function(socket, context, requestClientCertificate, requireClientCertificate, supportedProtocols) {
    this[_controller$] = null;
    this[_subscription$] = null;
    this[_closed] = false;
    this[_socket] = socket;
    this[_context] = context;
    this[requestClientCertificate$] = requestClientCertificate;
    this[requireClientCertificate$] = requireClientCertificate;
    this[supportedProtocols$] = supportedProtocols;
    io.RawSecureServerSocket.__proto__.new.call(this);
    this[_controller$] = StreamControllerOfRawSecureSocket().new({sync: true, onListen: dart.bind(this, _onSubscriptionStateChange), onPause: dart.bind(this, _onPauseStateChange), onResume: dart.bind(this, _onPauseStateChange), onCancel: dart.bind(this, _onSubscriptionStateChange)});
  }).prototype = io.RawSecureServerSocket.prototype;
  dart.addTypeTests(io.RawSecureServerSocket);
  const requestClientCertificate$ = Symbol("RawSecureServerSocket.requestClientCertificate");
  const requireClientCertificate$ = Symbol("RawSecureServerSocket.requireClientCertificate");
  const supportedProtocols$ = Symbol("RawSecureServerSocket.supportedProtocols");
  dart.setMethodSignature(io.RawSecureServerSocket, () => ({
    __proto__: dart.getMethods(io.RawSecureServerSocket.__proto__),
    listen: dart.fnType(async.StreamSubscription$(io.RawSecureSocket), [dart.fnType(dart.void, [io.RawSecureSocket])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
    close: dart.fnType(async.Future$(io.RawSecureServerSocket), []),
    [_onData$0]: dart.fnType(dart.void, [io.RawSocket]),
    [_onPauseStateChange]: dart.fnType(dart.void, []),
    [_onSubscriptionStateChange]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(io.RawSecureServerSocket, () => ({
    __proto__: dart.getGetters(io.RawSecureServerSocket.__proto__),
    port: core.int,
    address: io.InternetAddress
  }));
  dart.setSetterSignature(io.RawSecureServerSocket, () => ({
    __proto__: dart.getSetters(io.RawSecureServerSocket.__proto__),
    [_owner]: dart.dynamic
  }));
  dart.setFieldSignature(io.RawSecureServerSocket, () => ({
    __proto__: dart.getFields(io.RawSecureServerSocket.__proto__),
    [_socket]: dart.finalFieldType(io.RawServerSocket),
    [_controller$]: dart.fieldType(StreamControllerOfRawSecureSocket()),
    [_subscription$]: dart.fieldType(StreamSubscriptionOfRawSocket()),
    [_context]: dart.finalFieldType(io.SecurityContext),
    requestClientCertificate: dart.finalFieldType(core.bool),
    requireClientCertificate: dart.finalFieldType(core.bool),
    supportedProtocols: dart.finalFieldType(ListOfString()),
    [_closed]: dart.fieldType(core.bool)
  }));
  io.X509Certificate = class X509Certificate extends core.Object {};
  (io.X509Certificate[dart.mixinNew] = function() {
  }).prototype = io.X509Certificate.prototype;
  dart.addTypeTests(io.X509Certificate);
  io._FilterStatus = class _FilterStatus extends core.Object {};
  (io._FilterStatus.new = function() {
    this.progress = false;
    this.readEmpty = true;
    this.writeEmpty = true;
    this.readPlaintextNoLongerEmpty = false;
    this.writePlaintextNoLongerFull = false;
    this.readEncryptedNoLongerFull = false;
    this.writeEncryptedNoLongerEmpty = false;
  }).prototype = io._FilterStatus.prototype;
  dart.addTypeTests(io._FilterStatus);
  dart.setFieldSignature(io._FilterStatus, () => ({
    __proto__: dart.getFields(io._FilterStatus.__proto__),
    progress: dart.fieldType(core.bool),
    readEmpty: dart.fieldType(core.bool),
    writeEmpty: dart.fieldType(core.bool),
    readPlaintextNoLongerEmpty: dart.fieldType(core.bool),
    writePlaintextNoLongerFull: dart.fieldType(core.bool),
    readEncryptedNoLongerFull: dart.fieldType(core.bool),
    writeEncryptedNoLongerEmpty: dart.fieldType(core.bool)
  }));
  const _socketSubscription = Symbol('_socketSubscription');
  const _bufferedData = Symbol('_bufferedData');
  const _handshakeComplete = Symbol('_handshakeComplete');
  const _stream$ = Symbol('_stream');
  const _bufferedDataIndex = Symbol('_bufferedDataIndex');
  const _status = Symbol('_status');
  const _writeEventsEnabled = Symbol('_writeEventsEnabled');
  const _readEventsEnabled = Symbol('_readEventsEnabled');
  const _pauseCount = Symbol('_pauseCount');
  const _pendingReadEvent = Symbol('_pendingReadEvent');
  const _socketClosedRead = Symbol('_socketClosedRead');
  const _socketClosedWrite = Symbol('_socketClosedWrite');
  const _closedRead = Symbol('_closedRead');
  const _closedWrite = Symbol('_closedWrite');
  const _filterStatus = Symbol('_filterStatus');
  const _connectPending = Symbol('_connectPending');
  const _filterPending = Symbol('_filterPending');
  const _filterActive = Symbol('_filterActive');
  const _secureFilter = Symbol('_secureFilter');
  const _selectedProtocol = Symbol('_selectedProtocol');
  const _secureHandshakeCompleteHandler = Symbol('_secureHandshakeCompleteHandler');
  const _onBadCertificateWrapper = Symbol('_onBadCertificateWrapper');
  const _eventDispatcher = Symbol('_eventDispatcher');
  const _reportError = Symbol('_reportError');
  const _doneHandler = Symbol('_doneHandler');
  const _secureHandshake = Symbol('_secureHandshake');
  const _sendWriteEvent = Symbol('_sendWriteEvent');
  const _completeCloseCompleter = Symbol('_completeCloseCompleter');
  const _close$ = Symbol('_close');
  const _scheduleReadEvent = Symbol('_scheduleReadEvent');
  const _scheduleFilter = Symbol('_scheduleFilter');
  const _readHandler = Symbol('_readHandler');
  const _writeHandler = Symbol('_writeHandler');
  const _closeHandler = Symbol('_closeHandler');
  const _readSocket = Symbol('_readSocket');
  const _writeSocket = Symbol('_writeSocket');
  const _tryFilter = Symbol('_tryFilter');
  const _pushAllFilterStages = Symbol('_pushAllFilterStages');
  const _readSocketOrBufferedData = Symbol('_readSocketOrBufferedData');
  const _sendReadEvent = Symbol('_sendReadEvent');
  const _value$2 = Symbol('_value');
  let const$63;
  io.RawSocketEvent = class RawSocketEvent extends core.Object {
    toString() {
      return (const$63 || (const$63 = dart.constList(["RawSocketEvent.read", "RawSocketEvent.write", "RawSocketEvent.readClosed", "RawSocketEvent.closed"], core.String)))[$_get](this[_value$2]);
    }
  };
  (io.RawSocketEvent.__ = function(value) {
    this[_value$2] = value;
  }).prototype = io.RawSocketEvent.prototype;
  dart.addTypeTests(io.RawSocketEvent);
  dart.setFieldSignature(io.RawSocketEvent, () => ({
    __proto__: dart.getFields(io.RawSocketEvent.__proto__),
    [_value$2]: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionMethods(io.RawSocketEvent, ['toString']);
  dart.defineLazy(io.RawSocketEvent, {
    /*io.RawSocketEvent.read*/get read() {
      return dart.const(new io.RawSocketEvent.__(0));
    },
    /*io.RawSocketEvent.write*/get write() {
      return dart.const(new io.RawSocketEvent.__(1));
    },
    /*io.RawSocketEvent.readClosed*/get readClosed() {
      return dart.const(new io.RawSocketEvent.__(2));
    },
    /*io.RawSocketEvent.closed*/get closed() {
      return dart.const(new io.RawSocketEvent.__(3));
    },
    /*io.RawSocketEvent.READ*/get READ() {
      return io.RawSocketEvent.read;
    },
    /*io.RawSocketEvent.WRITE*/get WRITE() {
      return io.RawSocketEvent.write;
    },
    /*io.RawSocketEvent.READ_CLOSED*/get READ_CLOSED() {
      return io.RawSocketEvent.readClosed;
    },
    /*io.RawSocketEvent.CLOSED*/get CLOSED() {
      return io.RawSocketEvent.closed;
    }
  });
  io._RawSecureSocket = class _RawSecureSocket extends async.Stream$(io.RawSocketEvent) {
    static _isBufferEncrypted(identifier) {
      return dart.notNull(identifier) >= 2;
    }
    static connect(host, requestedPort, opts) {
      let is_server = opts && 'is_server' in opts ? opts.is_server : null;
      let context = opts && 'context' in opts ? opts.context : null;
      let socket = opts && 'socket' in opts ? opts.socket : null;
      let subscription = opts && 'subscription' in opts ? opts.subscription : null;
      let bufferedData = opts && 'bufferedData' in opts ? opts.bufferedData : null;
      let requestClientCertificate = opts && 'requestClientCertificate' in opts ? opts.requestClientCertificate : false;
      let requireClientCertificate = opts && 'requireClientCertificate' in opts ? opts.requireClientCertificate : false;
      let onBadCertificate = opts && 'onBadCertificate' in opts ? opts.onBadCertificate : null;
      let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
      io._RawSecureSocket._verifyFields(host, requestedPort, is_server, requestClientCertificate, requireClientCertificate, onBadCertificate);
      if (io.InternetAddress.is(host)) host = dart.dload(host, 'host');
      let address = socket.address;
      if (host != null) {
        address = io.InternetAddress._cloneWithNewHost(address, core.String._check(host));
      }
      return new io._RawSecureSocket.new(address, requestedPort, is_server, context, socket, subscription, bufferedData, requestClientCertificate, requireClientCertificate, onBadCertificate, supportedProtocols)[_handshakeComplete].future;
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      this[_sendWriteEvent]();
      return this[_stream$].listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
    static _verifyFields(host, requestedPort, is_server, requestClientCertificate, requireClientCertificate, onBadCertificate) {
      if (!(typeof host == 'string') && !io.InternetAddress.is(host)) {
        dart.throw(new core.ArgumentError.new("host is not a String or an InternetAddress"));
      }
      core.ArgumentError.checkNotNull(requestedPort, "requestedPort");
      if (dart.notNull(requestedPort) < 0 || dart.notNull(requestedPort) > 65535) {
        dart.throw(new core.ArgumentError.new("requestedPort is not in the range 0..65535"));
      }
      core.ArgumentError.checkNotNull(requestClientCertificate, "requestClientCertificate");
      core.ArgumentError.checkNotNull(requireClientCertificate, "requireClientCertificate");
    }
    get port() {
      return this[_socket].port;
    }
    get remoteAddress() {
      return this[_socket].remoteAddress;
    }
    get remotePort() {
      return this[_socket].remotePort;
    }
    set [_owner](owner) {
      dart.dput(this[_socket], _owner, owner);
    }
    available() {
      return this[_status] !== 202 ? 0 : this[_secureFilter].buffers[$_get](0).length;
    }
    close() {
      this.shutdown(io.SocketDirection.both);
      return this[_closeCompleter].future;
    }
    [_completeCloseCompleter](dummy) {
      if (dummy === void 0) dummy = null;
      if (!dart.test(this[_closeCompleter].isCompleted)) this[_closeCompleter].complete(this);
    }
    [_close$]() {
      this[_closedWrite] = true;
      this[_closedRead] = true;
      if (this[_socket] != null) {
        this[_socket].close().then(dart.void, dart.bind(this, _completeCloseCompleter));
      } else {
        this[_completeCloseCompleter]();
      }
      this[_socketClosedWrite] = true;
      this[_socketClosedRead] = true;
      if (!dart.test(this[_filterActive]) && this[_secureFilter] != null) {
        this[_secureFilter].destroy();
        this[_secureFilter] = null;
      }
      if (this[_socketSubscription] != null) {
        this[_socketSubscription].cancel();
      }
      this[_controller$].close();
      this[_status] = 203;
    }
    shutdown(direction) {
      if (dart.equals(direction, io.SocketDirection.send) || dart.equals(direction, io.SocketDirection.both)) {
        this[_closedWrite] = true;
        if (dart.test(this[_filterStatus].writeEmpty)) {
          this[_socket].shutdown(io.SocketDirection.send);
          this[_socketClosedWrite] = true;
          if (dart.test(this[_closedRead])) {
            this[_close$]();
          }
        }
      }
      if (dart.equals(direction, io.SocketDirection.receive) || dart.equals(direction, io.SocketDirection.both)) {
        this[_closedRead] = true;
        this[_socketClosedRead] = true;
        this[_socket].shutdown(io.SocketDirection.receive);
        if (dart.test(this[_socketClosedWrite])) {
          this[_close$]();
        }
      }
    }
    get writeEventsEnabled() {
      return this[_writeEventsEnabled];
    }
    set writeEventsEnabled(value) {
      this[_writeEventsEnabled] = value;
      if (dart.test(value)) {
        async.Timer.run(dart.fn(() => this[_sendWriteEvent](), VoidTodynamic()));
      }
    }
    get readEventsEnabled() {
      return this[_readEventsEnabled];
    }
    set readEventsEnabled(value) {
      this[_readEventsEnabled] = value;
      this[_scheduleReadEvent]();
    }
    read(length) {
      if (length === void 0) length = null;
      if (length != null && (!core.int.is(length) || dart.notNull(length) < 0)) {
        dart.throw(new core.ArgumentError.new("Invalid length parameter in SecureSocket.read (length: " + dart.str(length) + ")"));
      }
      if (dart.test(this[_closedRead])) {
        dart.throw(new io.SocketException.new("Reading from a closed socket"));
      }
      if (this[_status] !== 202) {
        return null;
      }
      let result = this[_secureFilter].buffers[$_get](0).read(length);
      this[_scheduleFilter]();
      return result;
    }
    write(data, offset, bytes) {
      if (offset === void 0) offset = null;
      if (bytes === void 0) bytes = null;
      if (bytes != null && (!core.int.is(bytes) || dart.notNull(bytes) < 0)) {
        dart.throw(new core.ArgumentError.new("Invalid bytes parameter in SecureSocket.read (bytes: " + dart.str(bytes) + ")"));
      }
      if (offset != null && (!core.int.is(offset) || dart.notNull(offset) < 0)) {
        dart.throw(new core.ArgumentError.new("Invalid offset parameter in SecureSocket.read (offset: " + dart.str(offset) + ")"));
      }
      if (dart.test(this[_closedWrite])) {
        this[_controller$].addError(new io.SocketException.new("Writing to a closed socket"));
        return 0;
      }
      if (this[_status] !== 202) return 0;
      let t = offset;
      t == null ? offset = 0 : t;
      let t$ = bytes;
      t$ == null ? bytes = dart.notNull(data[$length]) - dart.notNull(offset) : t$;
      let written = this[_secureFilter].buffers[$_get](1).write(data, offset, bytes);
      if (dart.notNull(written) > 0) {
        this[_filterStatus].writeEmpty = false;
      }
      this[_scheduleFilter]();
      return written;
    }
    get peerCertificate() {
      return this[_secureFilter].peerCertificate;
    }
    get selectedProtocol() {
      return this[_selectedProtocol];
    }
    [_onBadCertificateWrapper](certificate) {
      if (this.onBadCertificate == null) return false;
      let result = dart.dcall(this.onBadCertificate, [certificate]);
      if (typeof result == 'boolean') return result;
      dart.throw(new io.HandshakeException.new("onBadCertificate callback returned non-boolean " + dart.str(result)));
    }
    setOption(option, enabled) {
      if (this[_socket] == null) return false;
      return this[_socket].setOption(option, enabled);
    }
    [_eventDispatcher](event) {
      try {
        if (dart.equals(event, io.RawSocketEvent.read)) {
          this[_readHandler]();
        } else if (dart.equals(event, io.RawSocketEvent.write)) {
          this[_writeHandler]();
        } else if (dart.equals(event, io.RawSocketEvent.readClosed)) {
          this[_closeHandler]();
        }
      } catch (e$) {
        let e = dart.getThrown(e$);
        let stackTrace = dart.stackTrace(e$);
        this[_reportError](e, stackTrace);
      }
    }
    [_readHandler]() {
      this[_readSocket]();
      this[_scheduleFilter]();
    }
    [_writeHandler]() {
      this[_writeSocket]();
      this[_scheduleFilter]();
    }
    [_doneHandler]() {
      if (dart.test(this[_filterStatus].readEmpty)) {
        this[_close$]();
      }
    }
    [_reportError](e, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      if (this[_status] === 203) {
        return;
      } else if (dart.test(this[_connectPending])) {
        this[_handshakeComplete].completeError(e, stackTrace);
      } else {
        this[_controller$].addError(e, stackTrace);
      }
      this[_close$]();
    }
    [_closeHandler]() {
      if (this[_status] === 202) {
        if (dart.test(this[_closedRead])) return;
        this[_socketClosedRead] = true;
        if (dart.test(this[_filterStatus].readEmpty)) {
          this[_closedRead] = true;
          this[_controller$].add(io.RawSocketEvent.readClosed);
          if (dart.test(this[_socketClosedWrite])) {
            this[_close$]();
          }
        } else {
          this[_scheduleFilter]();
        }
      } else if (this[_status] === 201) {
        this[_socketClosedRead] = true;
        if (dart.test(this[_filterStatus].readEmpty)) {
          this[_reportError](new io.HandshakeException.new("Connection terminated during handshake"), null);
        } else {
          this[_secureHandshake]();
        }
      }
    }
    [_secureHandshake]() {
      try {
        this[_secureFilter].handshake();
        this[_filterStatus].writeEmpty = false;
        this[_readSocket]();
        this[_writeSocket]();
        this[_scheduleFilter]();
      } catch (e$) {
        let e = dart.getThrown(e$);
        let stackTrace = dart.stackTrace(e$);
        this[_reportError](e, stackTrace);
      }
    }
    renegotiate(opts) {
      let useSessionCache = opts && 'useSessionCache' in opts ? opts.useSessionCache : true;
      let requestClientCertificate = opts && 'requestClientCertificate' in opts ? opts.requestClientCertificate : false;
      let requireClientCertificate = opts && 'requireClientCertificate' in opts ? opts.requireClientCertificate : false;
      if (this[_status] !== 202) {
        dart.throw(new io.HandshakeException.new("Called renegotiate on a non-connected socket"));
      }
      this[_secureFilter].renegotiate(useSessionCache, requestClientCertificate, requireClientCertificate);
      this[_status] = 201;
      this[_filterStatus].writeEmpty = false;
      this[_scheduleFilter]();
    }
    [_secureHandshakeCompleteHandler]() {
      this[_status] = 202;
      if (dart.test(this[_connectPending])) {
        this[_connectPending] = false;
        try {
          this[_selectedProtocol] = this[_secureFilter].selectedProtocol();
          async.Timer.run(dart.fn(() => this[_handshakeComplete].complete(this), VoidTovoid()));
        } catch (e) {
          let error = dart.getThrown(e);
          let stack = dart.stackTrace(e);
          this[_handshakeComplete].completeError(error, stack);
        }
      }
    }
    [_onPauseStateChange]() {
      if (dart.test(this[_controller$].isPaused)) {
        this[_pauseCount] = dart.notNull(this[_pauseCount]) + 1;
      } else {
        this[_pauseCount] = dart.notNull(this[_pauseCount]) - 1;
        if (this[_pauseCount] === 0) {
          this[_scheduleReadEvent]();
          this[_sendWriteEvent]();
        }
      }
      if (!dart.test(this[_socketClosedRead]) || !dart.test(this[_socketClosedWrite])) {
        if (dart.test(this[_controller$].isPaused)) {
          this[_socketSubscription].pause();
        } else {
          this[_socketSubscription].resume();
        }
      }
    }
    [_onSubscriptionStateChange]() {
      if (dart.test(this[_controller$].hasListener)) {
      }
    }
    [_scheduleFilter]() {
      this[_filterPending] = true;
      this[_tryFilter]();
    }
    [_tryFilter]() {
      if (this[_status] === 203) {
        return;
      }
      if (dart.test(this[_filterPending]) && !dart.test(this[_filterActive])) {
        this[_filterActive] = true;
        this[_filterPending] = false;
        FutureOfNull()._check(this[_pushAllFilterStages]().then(core.Null, dart.fn(status => {
          this[_filterStatus] = status;
          this[_filterActive] = false;
          if (this[_status] === 203) {
            this[_secureFilter].destroy();
            this[_secureFilter] = null;
            return;
          }
          this[_socket].readEventsEnabled = true;
          if (dart.test(this[_filterStatus].writeEmpty) && dart.test(this[_closedWrite]) && !dart.test(this[_socketClosedWrite])) {
            this.shutdown(io.SocketDirection.send);
            if (this[_status] === 203) {
              return;
            }
          }
          if (dart.test(this[_filterStatus].readEmpty) && dart.test(this[_socketClosedRead]) && !dart.test(this[_closedRead])) {
            if (this[_status] === 201) {
              this[_secureFilter].handshake();
              if (this[_status] === 201) {
                dart.throw(new io.HandshakeException.new("Connection terminated during handshake"));
              }
            }
            this[_closeHandler]();
          }
          if (this[_status] === 203) {
            return;
          }
          if (dart.test(this[_filterStatus].progress)) {
            this[_filterPending] = true;
            if (dart.test(this[_filterStatus].writeEncryptedNoLongerEmpty)) {
              this[_writeSocket]();
            }
            if (dart.test(this[_filterStatus].writePlaintextNoLongerFull)) {
              this[_sendWriteEvent]();
            }
            if (dart.test(this[_filterStatus].readEncryptedNoLongerFull)) {
              this[_readSocket]();
            }
            if (dart.test(this[_filterStatus].readPlaintextNoLongerEmpty)) {
              this[_scheduleReadEvent]();
            }
            if (this[_status] === 201) {
              this[_secureHandshake]();
            }
          }
          this[_tryFilter]();
        }, _FilterStatusToNull()))).catchError(dart.bind(this, _reportError));
      }
    }
    [_readSocketOrBufferedData](bytes) {
      if (this[_bufferedData] != null) {
        if (dart.notNull(bytes) > dart.notNull(this[_bufferedData][$length]) - dart.notNull(this[_bufferedDataIndex])) {
          bytes = dart.notNull(this[_bufferedData][$length]) - dart.notNull(this[_bufferedDataIndex]);
        }
        let result = this[_bufferedData][$sublist](this[_bufferedDataIndex], dart.notNull(this[_bufferedDataIndex]) + dart.notNull(bytes));
        this[_bufferedDataIndex] = dart.notNull(this[_bufferedDataIndex]) + dart.notNull(bytes);
        if (this[_bufferedData][$length] == this[_bufferedDataIndex]) {
          this[_bufferedData] = null;
        }
        return result;
      } else if (!dart.test(this[_socketClosedRead])) {
        return this[_socket].read(bytes);
      } else {
        return null;
      }
    }
    [_readSocket]() {
      if (this[_status] === 203) return;
      let buffer = this[_secureFilter].buffers[$_get](2);
      if (dart.notNull(buffer.writeFromSource(dart.bind(this, _readSocketOrBufferedData))) > 0) {
        this[_filterStatus].readEmpty = false;
      } else {
        this[_socket].readEventsEnabled = false;
      }
    }
    [_writeSocket]() {
      if (dart.test(this[_socketClosedWrite])) return;
      let buffer = this[_secureFilter].buffers[$_get](3);
      if (dart.test(buffer.readToSocket(this[_socket]))) {
        this[_socket].writeEventsEnabled = true;
      }
    }
    [_scheduleReadEvent]() {
      if (!dart.test(this[_pendingReadEvent]) && dart.test(this[_readEventsEnabled]) && this[_pauseCount] === 0 && this[_secureFilter] != null && !dart.test(this[_secureFilter].buffers[$_get](0).isEmpty)) {
        this[_pendingReadEvent] = true;
        async.Timer.run(dart.bind(this, _sendReadEvent));
      }
    }
    [_sendReadEvent]() {
      this[_pendingReadEvent] = false;
      if (this[_status] !== 203 && dart.test(this[_readEventsEnabled]) && this[_pauseCount] === 0 && this[_secureFilter] != null && !dart.test(this[_secureFilter].buffers[$_get](0).isEmpty)) {
        this[_controller$].add(io.RawSocketEvent.read);
        this[_scheduleReadEvent]();
      }
    }
    [_sendWriteEvent]() {
      if (!dart.test(this[_closedWrite]) && dart.test(this[_writeEventsEnabled]) && this[_pauseCount] === 0 && this[_secureFilter] != null && dart.notNull(this[_secureFilter].buffers[$_get](1).free) > 0) {
        this[_writeEventsEnabled] = false;
        this[_controller$].add(io.RawSocketEvent.write);
      }
    }
    [_pushAllFilterStages]() {
      let wasInHandshake = this[_status] !== 202;
      let args = core.List.new(2 + 4 * 2);
      args[$_set](0, this[_secureFilter][_pointer]());
      args[$_set](1, wasInHandshake);
      let bufs = this[_secureFilter].buffers;
      for (let i = 0; i < 4; ++i) {
        args[$_set](2 * i + 2, bufs[$_get](i).start);
        args[$_set](2 * i + 3, bufs[$_get](i).end);
      }
      return FutureOf_FilterStatus()._check(io._IOService._dispatch(io._IOService.sslProcessFilter, args).then(io._FilterStatus, dart.fn(response => {
        if (dart.equals(dart.dload(response, 'length'), 2)) {
          if (wasInHandshake) {
            this[_reportError](new io.HandshakeException.new(dart.str(dart.dindex(response, 1)) + " error " + dart.str(dart.dindex(response, 0))), null);
          } else {
            this[_reportError](new io.TlsException.new(dart.str(dart.dindex(response, 1)) + " error " + dart.str(dart.dindex(response, 0))), null);
          }
        }
        function start(index) {
          return core.int._check(dart.dindex(response, 2 * dart.notNull(index)));
        }
        dart.fn(start, intToint());
        function end(index) {
          return core.int._check(dart.dindex(response, 2 * dart.notNull(index) + 1));
        }
        dart.fn(end, intToint());
        let status = new io._FilterStatus.new();
        status.writeEmpty = dart.test(bufs[$_get](1).isEmpty) && start(3) == end(3);
        if (wasInHandshake) status.writeEmpty = false;
        status.readEmpty = dart.test(bufs[$_get](2).isEmpty) && start(0) == end(0);
        let buffer = bufs[$_get](1);
        let new_start = start(1);
        if (new_start != buffer.start) {
          status.progress = true;
          if (buffer.free === 0) {
            status.writePlaintextNoLongerFull = true;
          }
          buffer.start = new_start;
        }
        buffer = bufs[$_get](2);
        new_start = start(2);
        if (new_start != buffer.start) {
          status.progress = true;
          if (buffer.free === 0) {
            status.readEncryptedNoLongerFull = true;
          }
          buffer.start = new_start;
        }
        buffer = bufs[$_get](3);
        let new_end = end(3);
        if (new_end != buffer.end) {
          status.progress = true;
          if (buffer.length === 0) {
            status.writeEncryptedNoLongerEmpty = true;
          }
          buffer.end = new_end;
        }
        buffer = bufs[$_get](0);
        new_end = end(0);
        if (new_end != buffer.end) {
          status.progress = true;
          if (buffer.length === 0) {
            status.readPlaintextNoLongerEmpty = true;
          }
          buffer.end = new_end;
        }
        return status;
      }, dynamicTo_FilterStatus())));
    }
  };
  (io._RawSecureSocket.new = function(address, requestedPort, is_server, context, socket, socketSubscription, bufferedData, requestClientCertificate, requireClientCertificate, onBadCertificate, supportedProtocols) {
    this[_handshakeComplete] = CompleterOf_RawSecureSocket().new();
    this[_controller$] = null;
    this[_stream$] = null;
    this[_bufferedDataIndex] = 0;
    this[_status] = 201;
    this[_writeEventsEnabled] = true;
    this[_readEventsEnabled] = true;
    this[_pauseCount] = 0;
    this[_pendingReadEvent] = false;
    this[_socketClosedRead] = false;
    this[_socketClosedWrite] = false;
    this[_closedRead] = false;
    this[_closedWrite] = false;
    this[_closeCompleter] = CompleterOfRawSecureSocket().new();
    this[_filterStatus] = new io._FilterStatus.new();
    this[_connectPending] = true;
    this[_filterPending] = false;
    this[_filterActive] = false;
    this[_secureFilter] = io._SecureFilter.new();
    this[_selectedProtocol] = null;
    this.address = address;
    this.is_server = is_server;
    this.context = context;
    this[_socket] = socket;
    this[_socketSubscription] = socketSubscription;
    this[_bufferedData] = bufferedData;
    this.requestClientCertificate = requestClientCertificate;
    this.requireClientCertificate = requireClientCertificate;
    this.onBadCertificate = onBadCertificate;
    io._RawSecureSocket.__proto__.new.call(this);
    let t = this.context;
    t == null ? this.context = io.SecurityContext.defaultContext : t;
    this[_controller$] = StreamControllerOfRawSocketEvent().new({sync: true, onListen: dart.bind(this, _onSubscriptionStateChange), onPause: dart.bind(this, _onPauseStateChange), onResume: dart.bind(this, _onPauseStateChange), onCancel: dart.bind(this, _onSubscriptionStateChange)});
    this[_stream$] = this[_controller$].stream;
    this[_secureFilter].init();
    this[_secureFilter].registerHandshakeCompleteCallback(dart.bind(this, _secureHandshakeCompleteHandler));
    if (this.onBadCertificate != null) {
      this[_secureFilter].registerBadCertificateCallback(dart.bind(this, _onBadCertificateWrapper));
    }
    this[_socket].readEventsEnabled = true;
    this[_socket].writeEventsEnabled = false;
    if (this[_socketSubscription] == null) {
      this[_socketSubscription] = this[_socket].listen(dart.bind(this, _eventDispatcher), {onError: dart.bind(this, _reportError), onDone: dart.bind(this, _doneHandler)});
    } else {
      if (dart.test(this[_socketSubscription].isPaused)) {
        this[_socket].close();
        dart.throw(new core.ArgumentError.new("Subscription passed to TLS upgrade is paused"));
      }
      let s = this[_socket];
      if (dart.dtest(dart.dload(dart.dload(s, _socket), 'closedReadEventSent'))) {
        this[_eventDispatcher](io.RawSocketEvent.readClosed);
      }
      let _ = this[_socketSubscription];
      _.onData(dart.bind(this, _eventDispatcher));
      _.onError(dart.bind(this, _reportError));
      _.onDone(dart.bind(this, _doneHandler));
    }
    try {
      let encodedProtocols = io.SecurityContext._protocolsToLengthEncoding(supportedProtocols);
      this[_secureFilter].connect(this.address.host, this.context, this.is_server, dart.test(this.requestClientCertificate) || dart.test(this.requireClientCertificate), this.requireClientCertificate, encodedProtocols);
      this[_secureHandshake]();
    } catch (e$) {
      let e = dart.getThrown(e$);
      let s = dart.stackTrace(e$);
      this[_reportError](e, s);
    }
  }).prototype = io._RawSecureSocket.prototype;
  dart.addTypeTests(io._RawSecureSocket);
  io._RawSecureSocket[dart.implements] = () => [io.RawSecureSocket];
  dart.setMethodSignature(io._RawSecureSocket, () => ({
    __proto__: dart.getMethods(io._RawSecureSocket.__proto__),
    listen: dart.fnType(async.StreamSubscription$(io.RawSocketEvent), [dart.fnType(dart.void, [io.RawSocketEvent])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
    available: dart.fnType(core.int, []),
    close: dart.fnType(async.Future$(io.RawSecureSocket), []),
    [_completeCloseCompleter]: dart.fnType(dart.void, [], [io.RawSocket]),
    [_close$]: dart.fnType(dart.void, []),
    shutdown: dart.fnType(dart.void, [io.SocketDirection]),
    read: dart.fnType(core.List$(core.int), [], [core.int]),
    write: dart.fnType(core.int, [core.List$(core.int)], [core.int, core.int]),
    [_onBadCertificateWrapper]: dart.fnType(core.bool, [io.X509Certificate]),
    setOption: dart.fnType(core.bool, [io.SocketOption, core.bool]),
    [_eventDispatcher]: dart.fnType(dart.void, [io.RawSocketEvent]),
    [_readHandler]: dart.fnType(dart.void, []),
    [_writeHandler]: dart.fnType(dart.void, []),
    [_doneHandler]: dart.fnType(dart.void, []),
    [_reportError]: dart.fnType(dart.void, [dart.dynamic], [core.StackTrace]),
    [_closeHandler]: dart.fnType(dart.void, []),
    [_secureHandshake]: dart.fnType(dart.void, []),
    renegotiate: dart.fnType(dart.void, [], {useSessionCache: core.bool, requestClientCertificate: core.bool, requireClientCertificate: core.bool}),
    [_secureHandshakeCompleteHandler]: dart.fnType(dart.void, []),
    [_onPauseStateChange]: dart.fnType(dart.void, []),
    [_onSubscriptionStateChange]: dart.fnType(dart.void, []),
    [_scheduleFilter]: dart.fnType(dart.void, []),
    [_tryFilter]: dart.fnType(dart.void, []),
    [_readSocketOrBufferedData]: dart.fnType(core.List$(core.int), [core.int]),
    [_readSocket]: dart.fnType(dart.void, []),
    [_writeSocket]: dart.fnType(dart.void, []),
    [_scheduleReadEvent]: dart.fnType(dart.dynamic, []),
    [_sendReadEvent]: dart.fnType(dart.dynamic, []),
    [_sendWriteEvent]: dart.fnType(dart.dynamic, []),
    [_pushAllFilterStages]: dart.fnType(async.Future$(io._FilterStatus), [])
  }));
  dart.setGetterSignature(io._RawSecureSocket, () => ({
    __proto__: dart.getGetters(io._RawSecureSocket.__proto__),
    port: core.int,
    remoteAddress: io.InternetAddress,
    remotePort: core.int,
    writeEventsEnabled: core.bool,
    readEventsEnabled: core.bool,
    peerCertificate: io.X509Certificate,
    selectedProtocol: core.String
  }));
  dart.setSetterSignature(io._RawSecureSocket, () => ({
    __proto__: dart.getSetters(io._RawSecureSocket.__proto__),
    [_owner]: dart.dynamic,
    writeEventsEnabled: core.bool,
    readEventsEnabled: core.bool
  }));
  dart.setFieldSignature(io._RawSecureSocket, () => ({
    __proto__: dart.getFields(io._RawSecureSocket.__proto__),
    [_socket]: dart.fieldType(io.RawSocket),
    [_handshakeComplete]: dart.finalFieldType(CompleterOf_RawSecureSocket()),
    [_controller$]: dart.fieldType(StreamControllerOfRawSocketEvent()),
    [_stream$]: dart.fieldType(StreamOfRawSocketEvent()),
    [_socketSubscription]: dart.fieldType(StreamSubscriptionOfRawSocketEvent()),
    [_bufferedData]: dart.fieldType(ListOfint()),
    [_bufferedDataIndex]: dart.fieldType(core.int),
    address: dart.finalFieldType(io.InternetAddress),
    is_server: dart.finalFieldType(core.bool),
    context: dart.fieldType(io.SecurityContext),
    requestClientCertificate: dart.finalFieldType(core.bool),
    requireClientCertificate: dart.finalFieldType(core.bool),
    onBadCertificate: dart.finalFieldType(core.Function),
    [_status]: dart.fieldType(core.int),
    [_writeEventsEnabled]: dart.fieldType(core.bool),
    [_readEventsEnabled]: dart.fieldType(core.bool),
    [_pauseCount]: dart.fieldType(core.int),
    [_pendingReadEvent]: dart.fieldType(core.bool),
    [_socketClosedRead]: dart.fieldType(core.bool),
    [_socketClosedWrite]: dart.fieldType(core.bool),
    [_closedRead]: dart.fieldType(core.bool),
    [_closedWrite]: dart.fieldType(core.bool),
    [_closeCompleter]: dart.fieldType(CompleterOfRawSecureSocket()),
    [_filterStatus]: dart.fieldType(io._FilterStatus),
    [_connectPending]: dart.fieldType(core.bool),
    [_filterPending]: dart.fieldType(core.bool),
    [_filterActive]: dart.fieldType(core.bool),
    [_secureFilter]: dart.fieldType(io._SecureFilter),
    [_selectedProtocol]: dart.fieldType(core.String)
  }));
  dart.defineLazy(io._RawSecureSocket, {
    /*io._RawSecureSocket.handshakeStatus*/get handshakeStatus() {
      return 201;
    },
    /*io._RawSecureSocket.connectedStatus*/get connectedStatus() {
      return 202;
    },
    /*io._RawSecureSocket.closedStatus*/get closedStatus() {
      return 203;
    },
    /*io._RawSecureSocket.readPlaintextId*/get readPlaintextId() {
      return 0;
    },
    /*io._RawSecureSocket.writePlaintextId*/get writePlaintextId() {
      return 1;
    },
    /*io._RawSecureSocket.readEncryptedId*/get readEncryptedId() {
      return 2;
    },
    /*io._RawSecureSocket.writeEncryptedId*/get writeEncryptedId() {
      return 3;
    },
    /*io._RawSecureSocket.bufferCount*/get bufferCount() {
      return 4;
    }
  });
  io._ExternalBuffer = class _ExternalBuffer extends core.Object {
    advanceStart(bytes) {
      if (!(dart.notNull(this.start) > dart.notNull(this.end) || dart.notNull(this.start) + dart.notNull(bytes) <= dart.notNull(this.end))) dart.assertFailed();
      this.start = dart.notNull(this.start) + dart.notNull(bytes);
      if (dart.notNull(this.start) >= dart.notNull(core.num._check(this.size))) {
        this.start = dart.notNull(this.start) - dart.notNull(core.num._check(this.size));
        if (!(dart.notNull(this.start) <= dart.notNull(this.end))) dart.assertFailed();
        if (!(dart.notNull(this.start) < dart.notNull(core.num._check(this.size)))) dart.assertFailed();
      }
    }
    advanceEnd(bytes) {
      if (!(dart.notNull(this.start) <= dart.notNull(this.end) || dart.notNull(this.start) > dart.notNull(this.end) + dart.notNull(bytes))) dart.assertFailed();
      this.end = dart.notNull(this.end) + dart.notNull(bytes);
      if (dart.notNull(this.end) >= dart.notNull(core.num._check(this.size))) {
        this.end = dart.notNull(this.end) - dart.notNull(core.num._check(this.size));
        if (!(dart.notNull(this.end) < dart.notNull(this.start))) dart.assertFailed();
        if (!(dart.notNull(this.end) < dart.notNull(core.num._check(this.size)))) dart.assertFailed();
      }
    }
    get isEmpty() {
      return this.end == this.start;
    }
    get length() {
      return core.int._check(dart.notNull(this.start) > dart.notNull(this.end) ? dart.dsend(dart.dsend(this.size, '+', [this.end]), '-', [this.start]) : dart.notNull(this.end) - dart.notNull(this.start));
    }
    get linearLength() {
      return core.int._check(dart.notNull(this.start) > dart.notNull(this.end) ? dart.dsend(this.size, '-', [this.start]) : dart.notNull(this.end) - dart.notNull(this.start));
    }
    get free() {
      return core.int._check(dart.notNull(this.start) > dart.notNull(this.end) ? dart.notNull(this.start) - dart.notNull(this.end) - 1 : dart.dsend(dart.dsend(dart.dsend(this.size, '+', [this.start]), '-', [this.end]), '-', [1]));
    }
    get linearFree() {
      if (dart.notNull(this.start) > dart.notNull(this.end)) return dart.notNull(this.start) - dart.notNull(this.end) - 1;
      if (this.start === 0) return core.int._check(dart.dsend(dart.dsend(this.size, '-', [this.end]), '-', [1]));
      return core.int._check(dart.dsend(this.size, '-', [this.end]));
    }
    read(bytes) {
      if (bytes == null) {
        bytes = this.length;
      } else {
        bytes = math.min(core.int, bytes, this.length);
      }
      if (bytes === 0) return null;
      let result = typed_data.Uint8List.new(bytes);
      let bytesRead = 0;
      while (bytesRead < dart.notNull(bytes)) {
        let toRead = math.min(core.int, dart.notNull(bytes) - bytesRead, this.linearLength);
        result[$setRange](bytesRead, bytesRead + toRead, this.data, this.start);
        this.advanceStart(toRead);
        bytesRead = bytesRead + toRead;
      }
      return result;
    }
    write(inputData, offset, bytes) {
      if (dart.notNull(bytes) > dart.notNull(this.free)) {
        bytes = this.free;
      }
      let written = 0;
      let toWrite = math.min(core.int, bytes, this.linearFree);
      while (toWrite > 0) {
        this.data[$setRange](this.end, dart.notNull(this.end) + toWrite, inputData, offset);
        this.advanceEnd(toWrite);
        offset = dart.notNull(offset) + toWrite;
        written = written + toWrite;
        toWrite = math.min(core.int, dart.notNull(bytes) - written, this.linearFree);
      }
      return written;
    }
    writeFromSource(getData) {
      let written = 0;
      let toWrite = this.linearFree;
      while (dart.notNull(toWrite) > 0) {
        let inputData = getData(toWrite);
        if (inputData == null || inputData[$length] === 0) break;
        let len = inputData[$length];
        this.data[$setRange](this.end, dart.notNull(this.end) + dart.notNull(len), inputData);
        this.advanceEnd(len);
        written = written + dart.notNull(len);
        toWrite = this.linearFree;
      }
      return written;
    }
    readToSocket(socket) {
      while (true) {
        let toWrite = this.linearLength;
        if (toWrite === 0) return false;
        let bytes = socket.write(this.data, this.start, toWrite);
        this.advanceStart(bytes);
        if (dart.notNull(bytes) < dart.notNull(toWrite)) {
          return true;
        }
      }
    }
  };
  (io._ExternalBuffer.new = function(size) {
    this.data = null;
    this.start = null;
    this.end = null;
    this.size = size;
    this.start = core.int._check(this.end = core.int._check(dart.dsend(this.size, '~/', [2])));
  }).prototype = io._ExternalBuffer.prototype;
  dart.addTypeTests(io._ExternalBuffer);
  dart.setMethodSignature(io._ExternalBuffer, () => ({
    __proto__: dart.getMethods(io._ExternalBuffer.__proto__),
    advanceStart: dart.fnType(dart.void, [core.int]),
    advanceEnd: dart.fnType(dart.void, [core.int]),
    read: dart.fnType(core.List$(core.int), [core.int]),
    write: dart.fnType(core.int, [core.List$(core.int), core.int, core.int]),
    writeFromSource: dart.fnType(core.int, [dart.fnType(core.List$(core.int), [core.int])]),
    readToSocket: dart.fnType(core.bool, [io.RawSocket])
  }));
  dart.setGetterSignature(io._ExternalBuffer, () => ({
    __proto__: dart.getGetters(io._ExternalBuffer.__proto__),
    isEmpty: core.bool,
    length: core.int,
    linearLength: core.int,
    free: core.int,
    linearFree: core.int
  }));
  dart.setFieldSignature(io._ExternalBuffer, () => ({
    __proto__: dart.getFields(io._ExternalBuffer.__proto__),
    data: dart.fieldType(ListOfint()),
    start: dart.fieldType(core.int),
    end: dart.fieldType(core.int),
    size: dart.finalFieldType(dart.dynamic)
  }));
  io._SecureFilter = class _SecureFilter extends core.Object {
    static new() {
      dart.throw(new core.UnsupportedError.new("_SecureFilter._SecureFilter"));
    }
  };
  (io._SecureFilter[dart.mixinNew] = function() {
  }).prototype = io._SecureFilter.prototype;
  dart.addTypeTests(io._SecureFilter);
  io.TlsException = class TlsException extends core.Object {
    get type() {
      return this[type$1];
    }
    set type(value) {
      super.type = value;
    }
    get message() {
      return this[message$11];
    }
    set message(value) {
      super.message = value;
    }
    get osError() {
      return this[osError$1];
    }
    set osError(value) {
      super.osError = value;
    }
    toString() {
      let sb = new core.StringBuffer.new();
      sb.write(this.type);
      if (this.message[$isNotEmpty]) {
        sb.write(": " + dart.str(this.message));
        if (this.osError != null) {
          sb.write(" (" + dart.str(this.osError) + ")");
        }
      } else if (this.osError != null) {
        sb.write(": " + dart.str(this.osError));
      }
      return sb.toString();
    }
  };
  (io.TlsException.new = function(message, osError) {
    if (message === void 0) message = "";
    if (osError === void 0) osError = null;
    io.TlsException.__.call(this, "TlsException", message, osError);
  }).prototype = io.TlsException.prototype;
  (io.TlsException.__ = function(type, message, osError) {
    this[type$1] = type;
    this[message$11] = message;
    this[osError$1] = osError;
  }).prototype = io.TlsException.prototype;
  dart.addTypeTests(io.TlsException);
  const type$1 = Symbol("TlsException.type");
  const message$11 = Symbol("TlsException.message");
  const osError$1 = Symbol("TlsException.osError");
  io.TlsException[dart.implements] = () => [io.IOException];
  dart.setFieldSignature(io.TlsException, () => ({
    __proto__: dart.getFields(io.TlsException.__proto__),
    type: dart.finalFieldType(core.String),
    message: dart.finalFieldType(core.String),
    osError: dart.finalFieldType(io.OSError)
  }));
  dart.defineExtensionMethods(io.TlsException, ['toString']);
  io.HandshakeException = class HandshakeException extends io.TlsException {};
  (io.HandshakeException.new = function(message, osError) {
    if (message === void 0) message = "";
    if (osError === void 0) osError = null;
    io.HandshakeException.__proto__.__.call(this, "HandshakeException", message, osError);
  }).prototype = io.HandshakeException.prototype;
  dart.addTypeTests(io.HandshakeException);
  io.CertificateException = class CertificateException extends io.TlsException {};
  (io.CertificateException.new = function(message, osError) {
    if (message === void 0) message = "";
    if (osError === void 0) osError = null;
    io.CertificateException.__proto__.__.call(this, "CertificateException", message, osError);
  }).prototype = io.CertificateException.prototype;
  dart.addTypeTests(io.CertificateException);
  io.SecurityContext = class SecurityContext extends core.Object {
    static new(opts) {
      let withTrustedRoots = opts && 'withTrustedRoots' in opts ? opts.withTrustedRoots : false;
      dart.throw(new core.UnsupportedError.new("SecurityContext constructor"));
    }
    static get defaultContext() {
      dart.throw(new core.UnsupportedError.new("default SecurityContext getter"));
    }
    static get alpnSupported() {
      dart.throw(new core.UnsupportedError.new("SecurityContext alpnSupported getter"));
    }
    static _protocolsToLengthEncoding(protocols) {
      if (protocols == null || protocols[$length] === 0) {
        return typed_data.Uint8List.new(0);
      }
      let protocolsLength = protocols[$length];
      let expectedLength = protocolsLength;
      for (let i = 0; i < dart.notNull(protocolsLength); i++) {
        let length = protocols[$_get](i).length;
        if (length > 0 && length <= 255) {
          expectedLength = dart.notNull(expectedLength) + length;
        } else {
          dart.throw(new core.ArgumentError.new("Length of protocol must be between 1 and 255 (was: " + dart.str(length) + ")."));
        }
      }
      if (dart.notNull(expectedLength) >= 1 << 13) {
        dart.throw(new core.ArgumentError.new("The maximum message length supported is 2^13-1."));
      }
      let bytes = typed_data.Uint8List.new(expectedLength);
      let bytesOffset = 0;
      for (let i = 0; i < dart.notNull(protocolsLength); i++) {
        let proto = protocols[$_get](i);
        bytes[$_set](bytesOffset++, proto.length);
        let bits = 0;
        for (let j = 0; j < proto.length; j++) {
          let char = proto[$codeUnitAt](j);
          bits = (bits | char) >>> 0;
          bytes[$_set](bytesOffset++, char & 255);
        }
        if (bits > 127) {
          return io.SecurityContext._protocolsToLengthEncodingNonAsciiBailout(protocols);
        }
      }
      return bytes;
    }
    static _protocolsToLengthEncodingNonAsciiBailout(protocols) {
      function addProtocol(outBytes, protocol) {
        let protocolBytes = convert.utf8.encode(protocol);
        let len = protocolBytes[$length];
        if (dart.notNull(len) > 255) {
          dart.throw(new core.ArgumentError.new("Length of protocol must be between 1 and 255 (was: " + dart.str(len) + ")"));
        }
        outBytes[$add](len);
        outBytes[$addAll](protocolBytes);
      }
      dart.fn(addProtocol, ListOfintAndStringTovoid());
      let bytes = JSArrayOfint().of([]);
      for (let i = 0; i < dart.notNull(protocols[$length]); i++) {
        addProtocol(bytes, protocols[$_get](i));
      }
      if (dart.notNull(bytes[$length]) >= 1 << 13) {
        dart.throw(new core.ArgumentError.new("The maximum message length supported is 2^13-1."));
      }
      return typed_data.Uint8List.fromList(bytes);
    }
  };
  (io.SecurityContext[dart.mixinNew] = function() {
  }).prototype = io.SecurityContext.prototype;
  dart.addTypeTests(io.SecurityContext);
  dart.defineLazy(io, {
    /*io._nextServiceId*/get _nextServiceId() {
      return 1;
    },
    set _nextServiceId(_) {}
  });
  const __serviceId = Symbol('__serviceId');
  const _serviceId = Symbol('_serviceId');
  const _serviceTypePath = Symbol('_serviceTypePath');
  const _servicePath = Symbol('_servicePath');
  const _serviceTypeName = Symbol('_serviceTypeName');
  const _serviceType = Symbol('_serviceType');
  io._ServiceObject = class _ServiceObject extends core.Object {
    get [_serviceId]() {
      if (this[__serviceId] === 0) {
        let x = io._nextServiceId;
        io._nextServiceId = dart.notNull(x) + 1;
        this[__serviceId] = x;
      }
      return this[__serviceId];
    }
    get [_servicePath]() {
      return dart.str(this[_serviceTypePath]) + "/" + dart.str(this[_serviceId]);
    }
    [_serviceType](ref) {
      if (dart.test(ref)) return "@" + dart.str(this[_serviceTypeName]);
      return this[_serviceTypeName];
    }
  };
  (io._ServiceObject.new = function() {
    this[__serviceId] = 0;
  }).prototype = io._ServiceObject.prototype;
  dart.addTypeTests(io._ServiceObject);
  dart.setMethodSignature(io._ServiceObject, () => ({
    __proto__: dart.getMethods(io._ServiceObject.__proto__),
    [_serviceType]: dart.fnType(core.String, [core.bool])
  }));
  dart.setGetterSignature(io._ServiceObject, () => ({
    __proto__: dart.getGetters(io._ServiceObject.__proto__),
    [_serviceId]: core.int,
    [_servicePath]: core.String
  }));
  dart.setFieldSignature(io._ServiceObject, () => ({
    __proto__: dart.getFields(io._ServiceObject.__proto__),
    [__serviceId]: dart.fieldType(core.int)
  }));
  io.InternetAddressType = class InternetAddressType extends core.Object {
    static _from(value) {
      if (value === 0) return io.InternetAddressType.IPv4;
      if (value === 1) return io.InternetAddressType.IPv6;
      dart.throw(new core.ArgumentError.new("Invalid type: " + dart.str(value)));
    }
    get name() {
      switch (this[_value$2]) {
        case -1:
        {
          return "ANY";
        }
        case 0:
        {
          return "IPv4";
        }
        case 1:
        {
          return "IPv6";
        }
        default:
        {
          dart.throw(new core.ArgumentError.new("Invalid InternetAddress"));
        }
      }
    }
    toString() {
      return "InternetAddressType: " + dart.str(this.name);
    }
  };
  (io.InternetAddressType.__ = function(value) {
    this[_value$2] = value;
  }).prototype = io.InternetAddressType.prototype;
  dart.addTypeTests(io.InternetAddressType);
  dart.setGetterSignature(io.InternetAddressType, () => ({
    __proto__: dart.getGetters(io.InternetAddressType.__proto__),
    name: core.String
  }));
  dart.setFieldSignature(io.InternetAddressType, () => ({
    __proto__: dart.getFields(io.InternetAddressType.__proto__),
    [_value$2]: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionMethods(io.InternetAddressType, ['toString']);
  dart.defineLazy(io.InternetAddressType, {
    /*io.InternetAddressType.IPv4*/get IPv4() {
      return dart.const(new io.InternetAddressType.__(0));
    },
    /*io.InternetAddressType.IPv6*/get IPv6() {
      return dart.const(new io.InternetAddressType.__(1));
    },
    /*io.InternetAddressType.any*/get any() {
      return dart.const(new io.InternetAddressType.__(-1));
    },
    /*io.InternetAddressType.IP_V4*/get IP_V4() {
      return io.InternetAddressType.IPv4;
    },
    /*io.InternetAddressType.IP_V6*/get IP_V6() {
      return io.InternetAddressType.IPv6;
    },
    /*io.InternetAddressType.ANY*/get ANY() {
      return io.InternetAddressType.any;
    }
  });
  io.InternetAddress = class InternetAddress extends core.Object {
    static get loopbackIPv4() {
      return io.InternetAddress.LOOPBACK_IP_V4;
    }
    static get LOOPBACK_IP_V4() {
      dart.throw(new core.UnsupportedError.new("InternetAddress.LOOPBACK_IP_V4"));
    }
    static get loopbackIPv6() {
      return io.InternetAddress.LOOPBACK_IP_V6;
    }
    static get LOOPBACK_IP_V6() {
      dart.throw(new core.UnsupportedError.new("InternetAddress.LOOPBACK_IP_V6"));
    }
    static get anyIPv4() {
      return io.InternetAddress.ANY_IP_V4;
    }
    static get ANY_IP_V4() {
      dart.throw(new core.UnsupportedError.new("InternetAddress.ANY_IP_V4"));
    }
    static get anyIPv6() {
      return io.InternetAddress.ANY_IP_V6;
    }
    static get ANY_IP_V6() {
      dart.throw(new core.UnsupportedError.new("InternetAddress.ANY_IP_V6"));
    }
    static new(address) {
      dart.throw(new core.UnsupportedError.new("InternetAddress"));
    }
    static lookup(host, opts) {
      let type = opts && 'type' in opts ? opts.type : io.InternetAddressType.any;
      dart.throw(new core.UnsupportedError.new("InternetAddress.lookup"));
    }
    static _cloneWithNewHost(address, host) {
      dart.throw(new core.UnsupportedError.new("InternetAddress._cloneWithNewHost"));
    }
  };
  (io.InternetAddress[dart.mixinNew] = function() {
  }).prototype = io.InternetAddress.prototype;
  dart.addTypeTests(io.InternetAddress);
  io.NetworkInterface = class NetworkInterface extends core.Object {
    static get listSupported() {
      dart.throw(new core.UnsupportedError.new("NetworkInterface.listSupported"));
    }
    static list(opts) {
      let includeLoopback = opts && 'includeLoopback' in opts ? opts.includeLoopback : false;
      let includeLinkLocal = opts && 'includeLinkLocal' in opts ? opts.includeLinkLocal : false;
      let type = opts && 'type' in opts ? opts.type : io.InternetAddressType.any;
      dart.throw(new core.UnsupportedError.new("NetworkInterface.list"));
    }
  };
  (io.NetworkInterface.new = function() {
  }).prototype = io.NetworkInterface.prototype;
  dart.addTypeTests(io.NetworkInterface);
  io.RawServerSocket = class RawServerSocket extends core.Object {
    static bind(address, port, opts) {
      let backlog = opts && 'backlog' in opts ? opts.backlog : 0;
      let v6Only = opts && 'v6Only' in opts ? opts.v6Only : false;
      let shared = opts && 'shared' in opts ? opts.shared : false;
      dart.throw(new core.UnsupportedError.new("RawServerSocket.bind"));
    }
  };
  (io.RawServerSocket.new = function() {
  }).prototype = io.RawServerSocket.prototype;
  io.RawServerSocket.prototype[dart.isStream] = true;
  dart.addTypeTests(io.RawServerSocket);
  io.RawServerSocket[dart.implements] = () => [StreamOfRawSocket()];
  io.ServerSocket = class ServerSocket extends core.Object {
    static bind(address, port, opts) {
      let backlog = opts && 'backlog' in opts ? opts.backlog : 0;
      let v6Only = opts && 'v6Only' in opts ? opts.v6Only : false;
      let shared = opts && 'shared' in opts ? opts.shared : false;
      dart.throw(new core.UnsupportedError.new("ServerSocket.bind"));
    }
  };
  (io.ServerSocket.new = function() {
  }).prototype = io.ServerSocket.prototype;
  io.ServerSocket.prototype[dart.isStream] = true;
  dart.addTypeTests(io.ServerSocket);
  io.ServerSocket[dart.implements] = () => [StreamOfSocket()];
  io.SocketDirection = class SocketDirection extends core.Object {};
  (io.SocketDirection.__ = function(value) {
    this[_value$2] = value;
  }).prototype = io.SocketDirection.prototype;
  dart.addTypeTests(io.SocketDirection);
  dart.setFieldSignature(io.SocketDirection, () => ({
    __proto__: dart.getFields(io.SocketDirection.__proto__),
    [_value$2]: dart.finalFieldType(dart.dynamic)
  }));
  dart.defineLazy(io.SocketDirection, {
    /*io.SocketDirection.receive*/get receive() {
      return dart.const(new io.SocketDirection.__(0));
    },
    /*io.SocketDirection.send*/get send() {
      return dart.const(new io.SocketDirection.__(1));
    },
    /*io.SocketDirection.both*/get both() {
      return dart.const(new io.SocketDirection.__(2));
    },
    /*io.SocketDirection.RECEIVE*/get RECEIVE() {
      return io.SocketDirection.receive;
    },
    /*io.SocketDirection.SEND*/get SEND() {
      return io.SocketDirection.send;
    },
    /*io.SocketDirection.BOTH*/get BOTH() {
      return io.SocketDirection.both;
    }
  });
  io.SocketOption = class SocketOption extends core.Object {};
  (io.SocketOption.__ = function(value) {
    this[_value$2] = value;
  }).prototype = io.SocketOption.prototype;
  dart.addTypeTests(io.SocketOption);
  dart.setFieldSignature(io.SocketOption, () => ({
    __proto__: dart.getFields(io.SocketOption.__proto__),
    [_value$2]: dart.finalFieldType(dart.dynamic)
  }));
  dart.defineLazy(io.SocketOption, {
    /*io.SocketOption.tcpNoDelay*/get tcpNoDelay() {
      return dart.const(new io.SocketOption.__(0));
    },
    /*io.SocketOption.TCP_NODELAY*/get TCP_NODELAY() {
      return io.SocketOption.tcpNoDelay;
    },
    /*io.SocketOption._ipMulticastLoop*/get _ipMulticastLoop() {
      return dart.const(new io.SocketOption.__(1));
    },
    /*io.SocketOption._ipMulticastHops*/get _ipMulticastHops() {
      return dart.const(new io.SocketOption.__(2));
    },
    /*io.SocketOption._ipMulticastIf*/get _ipMulticastIf() {
      return dart.const(new io.SocketOption.__(3));
    },
    /*io.SocketOption._ipBroadcast*/get _ipBroadcast() {
      return dart.const(new io.SocketOption.__(4));
    }
  });
  const _is_ConnectionTask_default = Symbol('_is_ConnectionTask_default');
  io.ConnectionTask$ = dart.generic(S => {
    let FutureOfS = () => (FutureOfS = dart.constFn(async.Future$(S)))();
    class ConnectionTask extends core.Object {
      get socket() {
        return this[socket$];
      }
      set socket(value) {
        super.socket = value;
      }
      cancel() {
        this[_onCancel$]();
      }
    }
    (ConnectionTask.__ = function(opts) {
      let socket = opts && 'socket' in opts ? opts.socket : null;
      let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
      if (!(socket != null)) dart.assertFailed();
      if (!(onCancel != null)) dart.assertFailed();
      this[socket$] = socket;
      this[_onCancel$] = onCancel;
    }).prototype = ConnectionTask.prototype;
    dart.addTypeTests(ConnectionTask);
    ConnectionTask.prototype[_is_ConnectionTask_default] = true;
    const socket$ = Symbol("ConnectionTask.socket");
    dart.setMethodSignature(ConnectionTask, () => ({
      __proto__: dart.getMethods(ConnectionTask.__proto__),
      cancel: dart.fnType(dart.void, [])
    }));
    dart.setFieldSignature(ConnectionTask, () => ({
      __proto__: dart.getFields(ConnectionTask.__proto__),
      socket: dart.finalFieldType(FutureOfS()),
      [_onCancel$]: dart.finalFieldType(VoidTovoid())
    }));
    return ConnectionTask;
  });
  io.ConnectionTask = io.ConnectionTask$();
  dart.addTypeTests(io.ConnectionTask, _is_ConnectionTask_default);
  io.RawSocket = class RawSocket extends core.Object {
    get readEventsEnabled() {
      return this[readEventsEnabled];
    }
    set readEventsEnabled(value) {
      this[readEventsEnabled] = value;
    }
    get writeEventsEnabled() {
      return this[writeEventsEnabled];
    }
    set writeEventsEnabled(value) {
      this[writeEventsEnabled] = value;
    }
    static connect(host, port, opts) {
      let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
      let timeout = opts && 'timeout' in opts ? opts.timeout : null;
      dart.throw(new core.UnsupportedError.new("RawSocket constructor"));
    }
    static startConnect(host, port, opts) {
      let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
      dart.throw(new core.UnsupportedError.new("RawSocket constructor"));
    }
  };
  (io.RawSocket.new = function() {
    this[readEventsEnabled] = null;
    this[writeEventsEnabled] = null;
  }).prototype = io.RawSocket.prototype;
  io.RawSocket.prototype[dart.isStream] = true;
  dart.addTypeTests(io.RawSocket);
  const readEventsEnabled = Symbol("RawSocket.readEventsEnabled");
  const writeEventsEnabled = Symbol("RawSocket.writeEventsEnabled");
  io.RawSocket[dart.implements] = () => [StreamOfRawSocketEvent()];
  dart.setFieldSignature(io.RawSocket, () => ({
    __proto__: dart.getFields(io.RawSocket.__proto__),
    readEventsEnabled: dart.fieldType(core.bool),
    writeEventsEnabled: dart.fieldType(core.bool)
  }));
  io.Socket = class Socket extends core.Object {
    static connect(host, port, opts) {
      let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
      let timeout = opts && 'timeout' in opts ? opts.timeout : null;
      let overrides = io.IOOverrides.current;
      if (overrides == null) {
        return io.Socket._connect(host, port, {sourceAddress: sourceAddress, timeout: timeout});
      }
      return overrides.socketConnect(host, port, {sourceAddress: sourceAddress, timeout: timeout});
    }
    static startConnect(host, port, opts) {
      let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
      let overrides = io.IOOverrides.current;
      if (overrides == null) {
        return io.Socket._startConnect(host, port, {sourceAddress: sourceAddress});
      }
      return overrides.socketStartConnect(host, port, {sourceAddress: sourceAddress});
    }
    static _connect(host, port, opts) {
      let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
      let timeout = opts && 'timeout' in opts ? opts.timeout : null;
      dart.throw(new core.UnsupportedError.new("Socket constructor"));
    }
    static _startConnect(host, port, opts) {
      let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
      dart.throw(new core.UnsupportedError.new("Socket constructor"));
    }
  };
  (io.Socket.new = function() {
  }).prototype = io.Socket.prototype;
  io.Socket.prototype[dart.isStream] = true;
  dart.addTypeTests(io.Socket);
  io.Socket[dart.implements] = () => [StreamOfListOfint(), io.IOSink];
  io.Datagram = class Datagram extends core.Object {
    get data() {
      return this[data$];
    }
    set data(value) {
      this[data$] = value;
    }
    get address() {
      return this[address$];
    }
    set address(value) {
      this[address$] = value;
    }
    get port() {
      return this[port$];
    }
    set port(value) {
      this[port$] = value;
    }
  };
  (io.Datagram.new = function(data, address, port) {
    this[data$] = data;
    this[address$] = address;
    this[port$] = port;
  }).prototype = io.Datagram.prototype;
  dart.addTypeTests(io.Datagram);
  const data$ = Symbol("Datagram.data");
  const address$ = Symbol("Datagram.address");
  const port$ = Symbol("Datagram.port");
  dart.setFieldSignature(io.Datagram, () => ({
    __proto__: dart.getFields(io.Datagram.__proto__),
    data: dart.fieldType(ListOfint()),
    address: dart.fieldType(io.InternetAddress),
    port: dart.fieldType(core.int)
  }));
  io.RawDatagramSocket = class RawDatagramSocket extends async.Stream$(io.RawSocketEvent) {
    get readEventsEnabled() {
      return this[readEventsEnabled$];
    }
    set readEventsEnabled(value) {
      this[readEventsEnabled$] = value;
    }
    get writeEventsEnabled() {
      return this[writeEventsEnabled$];
    }
    set writeEventsEnabled(value) {
      this[writeEventsEnabled$] = value;
    }
    get multicastLoopback() {
      return this[multicastLoopback];
    }
    set multicastLoopback(value) {
      this[multicastLoopback] = value;
    }
    get multicastHops() {
      return this[multicastHops];
    }
    set multicastHops(value) {
      this[multicastHops] = value;
    }
    get multicastInterface() {
      return this[multicastInterface];
    }
    set multicastInterface(value) {
      this[multicastInterface] = value;
    }
    get broadcastEnabled() {
      return this[broadcastEnabled];
    }
    set broadcastEnabled(value) {
      this[broadcastEnabled] = value;
    }
    static bind(host, port, opts) {
      let reuseAddress = opts && 'reuseAddress' in opts ? opts.reuseAddress : true;
      let reusePort = opts && 'reusePort' in opts ? opts.reusePort : false;
      let ttl = opts && 'ttl' in opts ? opts.ttl : 1;
      dart.throw(new core.UnsupportedError.new("RawDatagramSocket.bind"));
    }
  };
  (io.RawDatagramSocket.new = function() {
    this[readEventsEnabled$] = null;
    this[writeEventsEnabled$] = null;
    this[multicastLoopback] = null;
    this[multicastHops] = null;
    this[multicastInterface] = null;
    this[broadcastEnabled] = null;
    io.RawDatagramSocket.__proto__.new.call(this);
  }).prototype = io.RawDatagramSocket.prototype;
  dart.addTypeTests(io.RawDatagramSocket);
  const readEventsEnabled$ = Symbol("RawDatagramSocket.readEventsEnabled");
  const writeEventsEnabled$ = Symbol("RawDatagramSocket.writeEventsEnabled");
  const multicastLoopback = Symbol("RawDatagramSocket.multicastLoopback");
  const multicastHops = Symbol("RawDatagramSocket.multicastHops");
  const multicastInterface = Symbol("RawDatagramSocket.multicastInterface");
  const broadcastEnabled = Symbol("RawDatagramSocket.broadcastEnabled");
  dart.setFieldSignature(io.RawDatagramSocket, () => ({
    __proto__: dart.getFields(io.RawDatagramSocket.__proto__),
    readEventsEnabled: dart.fieldType(core.bool),
    writeEventsEnabled: dart.fieldType(core.bool),
    multicastLoopback: dart.fieldType(core.bool),
    multicastHops: dart.fieldType(core.int),
    multicastInterface: dart.fieldType(io.NetworkInterface),
    broadcastEnabled: dart.fieldType(core.bool)
  }));
  io.SocketException = class SocketException extends core.Object {
    get message() {
      return this[message$12];
    }
    set message(value) {
      super.message = value;
    }
    get osError() {
      return this[osError$2];
    }
    set osError(value) {
      super.osError = value;
    }
    get address() {
      return this[address$0];
    }
    set address(value) {
      super.address = value;
    }
    get port() {
      return this[port$0];
    }
    set port(value) {
      super.port = value;
    }
    toString() {
      let sb = new core.StringBuffer.new();
      sb.write("SocketException");
      if (this.message[$isNotEmpty]) {
        sb.write(": " + dart.str(this.message));
        if (this.osError != null) {
          sb.write(" (" + dart.str(this.osError) + ")");
        }
      } else if (this.osError != null) {
        sb.write(": " + dart.str(this.osError));
      }
      if (this.address != null) {
        sb.write(", address = " + dart.str(this.address.host));
      }
      if (this.port != null) {
        sb.write(", port = " + dart.str(this.port));
      }
      return sb.toString();
    }
  };
  (io.SocketException.new = function(message, opts) {
    let osError = opts && 'osError' in opts ? opts.osError : null;
    let address = opts && 'address' in opts ? opts.address : null;
    let port = opts && 'port' in opts ? opts.port : null;
    this[message$12] = message;
    this[osError$2] = osError;
    this[address$0] = address;
    this[port$0] = port;
  }).prototype = io.SocketException.prototype;
  (io.SocketException.closed = function() {
    this[message$12] = "Socket has been closed";
    this[osError$2] = null;
    this[address$0] = null;
    this[port$0] = null;
  }).prototype = io.SocketException.prototype;
  dart.addTypeTests(io.SocketException);
  const message$12 = Symbol("SocketException.message");
  const osError$2 = Symbol("SocketException.osError");
  const address$0 = Symbol("SocketException.address");
  const port$0 = Symbol("SocketException.port");
  io.SocketException[dart.implements] = () => [io.IOException];
  dart.setFieldSignature(io.SocketException, () => ({
    __proto__: dart.getFields(io.SocketException.__proto__),
    message: dart.finalFieldType(core.String),
    osError: dart.finalFieldType(io.OSError),
    address: dart.finalFieldType(io.InternetAddress),
    port: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionMethods(io.SocketException, ['toString']);
  dart.defineLazy(io, {
    /*io._stdioHandleTypeTerminal*/get _stdioHandleTypeTerminal() {
      return 0;
    },
    /*io._stdioHandleTypePipe*/get _stdioHandleTypePipe() {
      return 1;
    },
    /*io._stdioHandleTypeFile*/get _stdioHandleTypeFile() {
      return 2;
    },
    /*io._stdioHandleTypeSocket*/get _stdioHandleTypeSocket() {
      return 3;
    },
    /*io._stdioHandleTypeOther*/get _stdioHandleTypeOther() {
      return 4;
    }
  });
  io._StdStream = class _StdStream extends async.Stream$(core.List$(core.int)) {
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      return this[_stream$].listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
  };
  (io._StdStream.new = function(stream) {
    this[_stream$] = stream;
    io._StdStream.__proto__.new.call(this);
  }).prototype = io._StdStream.prototype;
  dart.addTypeTests(io._StdStream);
  dart.setMethodSignature(io._StdStream, () => ({
    __proto__: dart.getMethods(io._StdStream.__proto__),
    listen: dart.fnType(async.StreamSubscription$(core.List$(core.int)), [dart.fnType(dart.void, [core.List$(core.int)])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool})
  }));
  dart.setFieldSignature(io._StdStream, () => ({
    __proto__: dart.getFields(io._StdStream.__proto__),
    [_stream$]: dart.finalFieldType(StreamOfListOfint())
  }));
  const _fd = Symbol('_fd');
  io.Stdin = class Stdin extends io._StdStream {
    readLineSync(opts) {
      let encoding = opts && 'encoding' in opts ? opts.encoding : io.systemEncoding;
      let retainNewlines = opts && 'retainNewlines' in opts ? opts.retainNewlines : false;
      let CR = 13;
      let LF = 10;
      let line = JSArrayOfint().of([]);
      let crIsNewline = dart.test(io.Platform.isWindows) && dart.equals(io.stdioType(io.stdin), io.StdioType.terminal) && !dart.test(this.lineMode);
      if (dart.test(retainNewlines)) {
        let byte = null;
        do {
          byte = this.readByteSync();
          if (dart.notNull(byte) < 0) {
            break;
          }
          line[$add](byte);
        } while (byte !== LF && !(byte === CR && crIsNewline));
        if (dart.test(line[$isEmpty])) {
          return null;
        }
      } else if (crIsNewline) {
        while (true) {
          let byte = this.readByteSync();
          if (dart.notNull(byte) < 0) {
            if (dart.test(line[$isEmpty])) return null;
            break;
          }
          if (byte === LF || byte === CR) break;
          line[$add](byte);
        }
      } else {
        outer:
          while (true) {
            let byte = this.readByteSync();
            if (byte === LF) break;
            if (byte === CR) {
              do {
                byte = this.readByteSync();
                if (byte === LF) break outer;
                line[$add](CR);
              } while (byte === CR);
            }
            if (dart.notNull(byte) < 0) {
              if (dart.test(line[$isEmpty])) return null;
              break;
            }
            line[$add](byte);
          }
      }
      return encoding.decode(line);
    }
    get echoMode() {
      dart.throw(new core.UnsupportedError.new("Stdin.echoMode"));
    }
    set echoMode(enabled) {
      dart.throw(new core.UnsupportedError.new("Stdin.echoMode"));
    }
    get lineMode() {
      dart.throw(new core.UnsupportedError.new("Stdin.lineMode"));
    }
    set lineMode(enabled) {
      dart.throw(new core.UnsupportedError.new("Stdin.lineMode"));
    }
    get supportsAnsiEscapes() {
      dart.throw(new core.UnsupportedError.new("Stdin.supportsAnsiEscapes"));
    }
    readByteSync() {
      dart.throw(new core.UnsupportedError.new("Stdin.readByteSync"));
    }
    get hasTerminal() {
      try {
        return dart.equals(io.stdioType(this), io.StdioType.terminal);
      } catch (e) {
        let _ = dart.getThrown(e);
        if (io.FileSystemException.is(_)) {
          return false;
        } else
          throw e;
      }
    }
  };
  (io.Stdin.__ = function(stream, fd) {
    this[_fd] = fd;
    io.Stdin.__proto__.new.call(this, stream);
  }).prototype = io.Stdin.prototype;
  io.Stdin.prototype[dart.isStream] = true;
  dart.addTypeTests(io.Stdin);
  io.Stdin[dart.implements] = () => [StreamOfListOfint()];
  dart.setMethodSignature(io.Stdin, () => ({
    __proto__: dart.getMethods(io.Stdin.__proto__),
    readLineSync: dart.fnType(core.String, [], {encoding: convert.Encoding, retainNewlines: core.bool}),
    readByteSync: dart.fnType(core.int, [])
  }));
  dart.setGetterSignature(io.Stdin, () => ({
    __proto__: dart.getGetters(io.Stdin.__proto__),
    echoMode: core.bool,
    lineMode: core.bool,
    supportsAnsiEscapes: core.bool,
    hasTerminal: core.bool
  }));
  dart.setSetterSignature(io.Stdin, () => ({
    __proto__: dart.getSetters(io.Stdin.__proto__),
    echoMode: core.bool,
    lineMode: core.bool
  }));
  dart.setFieldSignature(io.Stdin, () => ({
    __proto__: dart.getFields(io.Stdin.__proto__),
    [_fd]: dart.fieldType(core.int)
  }));
  const _nonBlocking = Symbol('_nonBlocking');
  const _hasTerminal = Symbol('_hasTerminal');
  const _terminalColumns = Symbol('_terminalColumns');
  const _terminalLines = Symbol('_terminalLines');
  io._StdSink = class _StdSink extends core.Object {
    get encoding() {
      return this[_sink$0].encoding;
    }
    set encoding(encoding) {
      this[_sink$0].encoding = encoding;
    }
    write(object) {
      this[_sink$0].write(object);
    }
    writeln(object) {
      if (object === void 0) object = "";
      this[_sink$0].writeln(object);
    }
    writeAll(objects, sep) {
      if (sep === void 0) sep = "";
      this[_sink$0].writeAll(objects, sep);
    }
    add(data) {
      ListOfint()._check(data);
      this[_sink$0].add(data);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      this[_sink$0].addError(error, stackTrace);
    }
    writeCharCode(charCode) {
      this[_sink$0].writeCharCode(charCode);
    }
    addStream(stream) {
      StreamOfListOfint()._check(stream);
      return this[_sink$0].addStream(stream);
    }
    flush() {
      return this[_sink$0].flush();
    }
    close() {
      return this[_sink$0].close();
    }
    get done() {
      return this[_sink$0].done;
    }
  };
  (io._StdSink.new = function(sink) {
    this[_sink$0] = sink;
  }).prototype = io._StdSink.prototype;
  dart.addTypeTests(io._StdSink);
  io._StdSink[dart.implements] = () => [io.IOSink];
  dart.setMethodSignature(io._StdSink, () => ({
    __proto__: dart.getMethods(io._StdSink.__proto__),
    write: dart.fnType(dart.void, [core.Object]),
    writeln: dart.fnType(dart.void, [], [core.Object]),
    writeAll: dart.fnType(dart.void, [core.Iterable], [core.String]),
    add: dart.fnType(dart.void, [core.Object]),
    addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
    writeCharCode: dart.fnType(dart.void, [core.int]),
    addStream: dart.fnType(async.Future, [core.Object]),
    flush: dart.fnType(async.Future, []),
    close: dart.fnType(async.Future, [])
  }));
  dart.setGetterSignature(io._StdSink, () => ({
    __proto__: dart.getGetters(io._StdSink.__proto__),
    encoding: convert.Encoding,
    done: async.Future
  }));
  dart.setSetterSignature(io._StdSink, () => ({
    __proto__: dart.getSetters(io._StdSink.__proto__),
    encoding: convert.Encoding
  }));
  dart.setFieldSignature(io._StdSink, () => ({
    __proto__: dart.getFields(io._StdSink.__proto__),
    [_sink$0]: dart.finalFieldType(io.IOSink)
  }));
  io.Stdout = class Stdout extends io._StdSink {
    get hasTerminal() {
      return this[_hasTerminal](this[_fd]);
    }
    get terminalColumns() {
      return this[_terminalColumns](this[_fd]);
    }
    get terminalLines() {
      return this[_terminalLines](this[_fd]);
    }
    get supportsAnsiEscapes() {
      return io.Stdout._supportsAnsiEscapes(this[_fd]);
    }
    [_hasTerminal](fd) {
      dart.throw(new core.UnsupportedError.new("Stdout.hasTerminal"));
    }
    [_terminalColumns](fd) {
      dart.throw(new core.UnsupportedError.new("Stdout.terminalColumns"));
    }
    [_terminalLines](fd) {
      dart.throw(new core.UnsupportedError.new("Stdout.terminalLines"));
    }
    static _supportsAnsiEscapes(fd) {
      dart.throw(new core.UnsupportedError.new("Stdout.supportsAnsiEscapes"));
    }
    get nonBlocking() {
      let t = this[_nonBlocking];
      t == null ? this[_nonBlocking] = io.IOSink.new(new io._FileStreamConsumer.fromStdio(this[_fd])) : t;
      return this[_nonBlocking];
    }
  };
  (io.Stdout.__ = function(sink, fd) {
    this[_nonBlocking] = null;
    this[_fd] = fd;
    io.Stdout.__proto__.new.call(this, sink);
  }).prototype = io.Stdout.prototype;
  dart.addTypeTests(io.Stdout);
  io.Stdout[dart.implements] = () => [io.IOSink];
  dart.setMethodSignature(io.Stdout, () => ({
    __proto__: dart.getMethods(io.Stdout.__proto__),
    [_hasTerminal]: dart.fnType(core.bool, [core.int]),
    [_terminalColumns]: dart.fnType(core.int, [core.int]),
    [_terminalLines]: dart.fnType(core.int, [core.int])
  }));
  dart.setGetterSignature(io.Stdout, () => ({
    __proto__: dart.getGetters(io.Stdout.__proto__),
    hasTerminal: core.bool,
    terminalColumns: core.int,
    terminalLines: core.int,
    supportsAnsiEscapes: core.bool,
    nonBlocking: io.IOSink
  }));
  dart.setFieldSignature(io.Stdout, () => ({
    __proto__: dart.getFields(io.Stdout.__proto__),
    [_fd]: dart.finalFieldType(core.int),
    [_nonBlocking]: dart.fieldType(io.IOSink)
  }));
  io.StdoutException = class StdoutException extends core.Object {
    get message() {
      return this[message$13];
    }
    set message(value) {
      super.message = value;
    }
    get osError() {
      return this[osError$3];
    }
    set osError(value) {
      super.osError = value;
    }
    toString() {
      return "StdoutException: " + dart.str(this.message) + (this.osError == null ? "" : ", " + dart.str(this.osError));
    }
  };
  (io.StdoutException.new = function(message, osError) {
    if (osError === void 0) osError = null;
    this[message$13] = message;
    this[osError$3] = osError;
  }).prototype = io.StdoutException.prototype;
  dart.addTypeTests(io.StdoutException);
  const message$13 = Symbol("StdoutException.message");
  const osError$3 = Symbol("StdoutException.osError");
  io.StdoutException[dart.implements] = () => [io.IOException];
  dart.setFieldSignature(io.StdoutException, () => ({
    __proto__: dart.getFields(io.StdoutException.__proto__),
    message: dart.finalFieldType(core.String),
    osError: dart.finalFieldType(io.OSError)
  }));
  dart.defineExtensionMethods(io.StdoutException, ['toString']);
  io.StdinException = class StdinException extends core.Object {
    get message() {
      return this[message$14];
    }
    set message(value) {
      super.message = value;
    }
    get osError() {
      return this[osError$4];
    }
    set osError(value) {
      super.osError = value;
    }
    toString() {
      return "StdinException: " + dart.str(this.message) + (this.osError == null ? "" : ", " + dart.str(this.osError));
    }
  };
  (io.StdinException.new = function(message, osError) {
    if (osError === void 0) osError = null;
    this[message$14] = message;
    this[osError$4] = osError;
  }).prototype = io.StdinException.prototype;
  dart.addTypeTests(io.StdinException);
  const message$14 = Symbol("StdinException.message");
  const osError$4 = Symbol("StdinException.osError");
  io.StdinException[dart.implements] = () => [io.IOException];
  dart.setFieldSignature(io.StdinException, () => ({
    __proto__: dart.getFields(io.StdinException.__proto__),
    message: dart.finalFieldType(core.String),
    osError: dart.finalFieldType(io.OSError)
  }));
  dart.defineExtensionMethods(io.StdinException, ['toString']);
  io._StdConsumer = class _StdConsumer extends core.Object {
    addStream(stream) {
      StreamOfListOfint()._check(stream);
      let completer = async.Completer.new();
      let sub = null;
      sub = stream.listen(dart.fn(data => {
        try {
          dart.dsend(this[_file], 'writeFromSync', [data]);
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          dart.dsend(sub, 'cancel', []);
          completer.completeError(e, s);
        }
      }, ListOfintToNull()), {onError: dart.bind(completer, 'completeError'), onDone: dart.bind(completer, 'complete'), cancelOnError: true});
      return completer.future;
    }
    close() {
      dart.dsend(this[_file], 'closeSync', []);
      return async.Future.value();
    }
  };
  (io._StdConsumer.new = function(fd) {
    this[_file] = io._File._openStdioSync(fd);
  }).prototype = io._StdConsumer.prototype;
  dart.addTypeTests(io._StdConsumer);
  io._StdConsumer[dart.implements] = () => [StreamConsumerOfListOfint()];
  dart.setMethodSignature(io._StdConsumer, () => ({
    __proto__: dart.getMethods(io._StdConsumer.__proto__),
    addStream: dart.fnType(async.Future, [core.Object]),
    close: dart.fnType(async.Future, [])
  }));
  dart.setFieldSignature(io._StdConsumer, () => ({
    __proto__: dart.getFields(io._StdConsumer.__proto__),
    [_file]: dart.finalFieldType(dart.dynamic)
  }));
  io.StdioType = class StdioType extends core.Object {
    get name() {
      return this[name$3];
    }
    set name(value) {
      super.name = value;
    }
    toString() {
      return "StdioType: " + dart.str(this.name);
    }
  };
  (io.StdioType.__ = function(name) {
    this[name$3] = name;
  }).prototype = io.StdioType.prototype;
  dart.addTypeTests(io.StdioType);
  const name$3 = Symbol("StdioType.name");
  dart.setFieldSignature(io.StdioType, () => ({
    __proto__: dart.getFields(io.StdioType.__proto__),
    name: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(io.StdioType, ['toString']);
  dart.defineLazy(io.StdioType, {
    /*io.StdioType.terminal*/get terminal() {
      return dart.const(new io.StdioType.__("terminal"));
    },
    /*io.StdioType.pipe*/get pipe() {
      return dart.const(new io.StdioType.__("pipe"));
    },
    /*io.StdioType.file*/get file() {
      return dart.const(new io.StdioType.__("file"));
    },
    /*io.StdioType.other*/get other() {
      return dart.const(new io.StdioType.__("other"));
    },
    /*io.StdioType.TERMINAL*/get TERMINAL() {
      return io.StdioType.terminal;
    },
    /*io.StdioType.PIPE*/get PIPE() {
      return io.StdioType.pipe;
    },
    /*io.StdioType.FILE*/get FILE() {
      return io.StdioType.file;
    },
    /*io.StdioType.OTHER*/get OTHER() {
      return io.StdioType.other;
    }
  });
  dart.defineLazy(io, {
    /*io._stdin*/get _stdin() {
      return null;
    },
    set _stdin(_) {},
    /*io._stdout*/get _stdout() {
      return null;
    },
    set _stdout(_) {},
    /*io._stderr*/get _stderr() {
      return null;
    },
    set _stderr(_) {},
    /*io._stdinFD*/get _stdinFD() {
      return 0;
    },
    set _stdinFD(_) {},
    /*io._stdoutFD*/get _stdoutFD() {
      return 1;
    },
    set _stdoutFD(_) {},
    /*io._stderrFD*/get _stderrFD() {
      return 2;
    },
    set _stderrFD(_) {}
  });
  io._setStdioFDs = function(stdin, stdout, stderr) {
    io._stdinFD = stdin;
    io._stdoutFD = stdout;
    io._stderrFD = stderr;
  };
  dart.copyProperties(io, {
    get stdin() {
      let t = io._stdin;
      t == null ? io._stdin = io._StdIOUtils._getStdioInputStream(io._stdinFD) : t;
      return io._stdin;
    }
  });
  dart.copyProperties(io, {
    get stdout() {
      let t = io._stdout;
      t == null ? io._stdout = io.Stdout._check(io._StdIOUtils._getStdioOutputStream(io._stdoutFD)) : t;
      return io._stdout;
    }
  });
  dart.copyProperties(io, {
    get stderr() {
      let t = io._stderr;
      t == null ? io._stderr = io.Stdout._check(io._StdIOUtils._getStdioOutputStream(io._stderrFD)) : t;
      return io._stderr;
    }
  });
  io.stdioType = function(object) {
    if (io._StdStream.is(object)) {
      object = dart.dload(object, _stream$);
    } else if (dart.equals(object, io.stdout) || dart.equals(object, io.stderr)) {
      let stdiofd = dart.equals(object, io.stdout) ? io._stdoutFD : io._stderrFD;
      switch (io._StdIOUtils._getStdioHandleType(stdiofd)) {
        case 0:
        {
          return io.StdioType.terminal;
        }
        case 1:
        {
          return io.StdioType.pipe;
        }
        case 2:
        {
          return io.StdioType.file;
        }
      }
    }
    if (io._FileStream.is(object)) {
      return io.StdioType.file;
    }
    if (io.Socket.is(object)) {
      let socketType = io._StdIOUtils._socketType(object);
      if (socketType == null) return io.StdioType.other;
      switch (socketType) {
        case 0:
        {
          return io.StdioType.terminal;
        }
        case 1:
        {
          return io.StdioType.pipe;
        }
        case 2:
        {
          return io.StdioType.file;
        }
      }
    }
    if (io._IOSinkImpl.is(object)) {
      try {
        if (io._FileStreamConsumer.is(object[_target$])) {
          return io.StdioType.file;
        }
      } catch (e$) {
        let e = dart.getThrown(e$);
      }
    }
    return io.StdioType.other;
  };
  io._StdIOUtils = class _StdIOUtils extends core.Object {
    static _getStdioOutputStream(fd) {
      dart.throw(new core.UnsupportedError.new("StdIOUtils._getStdioOutputStream"));
    }
    static _getStdioInputStream(fd) {
      dart.throw(new core.UnsupportedError.new("StdIOUtils._getStdioInputStream"));
    }
    static _socketType(socket) {
      dart.throw(new core.UnsupportedError.new("StdIOUtils._socketType"));
    }
    static _getStdioHandleType(fd) {
      dart.throw(new core.UnsupportedError.new("StdIOUtils._getStdioHandleType"));
    }
  };
  (io._StdIOUtils.new = function() {
  }).prototype = io._StdIOUtils.prototype;
  dart.addTypeTests(io._StdIOUtils);
  dart.defineLazy(io, {
    /*io.systemEncoding*/get systemEncoding() {
      return dart.const(new io.SystemEncoding.new());
    },
    /*io.SYSTEM_ENCODING*/get SYSTEM_ENCODING() {
      return dart.const(new io.SystemEncoding.new());
    }
  });
  let const$64;
  let const$65;
  let const$66;
  let const$67;
  io.SystemEncoding = class SystemEncoding extends convert.Encoding {
    get name() {
      return "system";
    }
    encode(input) {
      core.String._check(input);
      return this.encoder.convert(input);
    }
    decode(encoded) {
      ListOfint()._check(encoded);
      return this.decoder.convert(encoded);
    }
    get encoder() {
      if (io.Platform.operatingSystem === "windows") {
        return const$64 || (const$64 = dart.const(new io._WindowsCodePageEncoder.new()));
      } else {
        return const$65 || (const$65 = dart.const(new convert.Utf8Encoder.new()));
      }
    }
    get decoder() {
      if (io.Platform.operatingSystem === "windows") {
        return const$66 || (const$66 = dart.const(new io._WindowsCodePageDecoder.new()));
      } else {
        return const$67 || (const$67 = dart.const(new convert.Utf8Decoder.new()));
      }
    }
  };
  (io.SystemEncoding.new = function() {
    io.SystemEncoding.__proto__.new.call(this);
  }).prototype = io.SystemEncoding.prototype;
  dart.addTypeTests(io.SystemEncoding);
  dart.setMethodSignature(io.SystemEncoding, () => ({
    __proto__: dart.getMethods(io.SystemEncoding.__proto__),
    encode: dart.fnType(core.List$(core.int), [core.Object]),
    decode: dart.fnType(core.String, [core.Object])
  }));
  dart.setGetterSignature(io.SystemEncoding, () => ({
    __proto__: dart.getGetters(io.SystemEncoding.__proto__),
    name: core.String,
    encoder: convert.Converter$(core.String, core.List$(core.int)),
    decoder: convert.Converter$(core.List$(core.int), core.String)
  }));
  io._WindowsCodePageEncoder = class _WindowsCodePageEncoder extends convert.Converter$(core.String, core.List$(core.int)) {
    convert(input) {
      core.String._check(input);
      let encoded = io._WindowsCodePageEncoder._encodeString(input);
      if (encoded == null) {
        dart.throw(new core.FormatException.new("Invalid character for encoding"));
      }
      return encoded;
    }
    startChunkedConversion(sink) {
      SinkOfListOfint()._check(sink);
      return new io._WindowsCodePageEncoderSink.new(sink);
    }
    static _encodeString(string) {
      dart.throw(new core.UnsupportedError.new("_WindowsCodePageEncoder._encodeString"));
    }
  };
  (io._WindowsCodePageEncoder.new = function() {
    io._WindowsCodePageEncoder.__proto__.new.call(this);
  }).prototype = io._WindowsCodePageEncoder.prototype;
  dart.addTypeTests(io._WindowsCodePageEncoder);
  dart.setMethodSignature(io._WindowsCodePageEncoder, () => ({
    __proto__: dart.getMethods(io._WindowsCodePageEncoder.__proto__),
    convert: dart.fnType(core.List$(core.int), [core.Object]),
    startChunkedConversion: dart.fnType(convert.StringConversionSink, [core.Object])
  }));
  io._WindowsCodePageEncoderSink = class _WindowsCodePageEncoderSink extends convert.StringConversionSinkBase {
    close() {
      this[_sink$0].close();
    }
    add(string) {
      core.String._check(string);
      let encoded = io._WindowsCodePageEncoder._encodeString(string);
      if (encoded == null) {
        dart.throw(new core.FormatException.new("Invalid character for encoding"));
      }
      this[_sink$0].add(encoded);
    }
    addSlice(source, start, end, isLast) {
      if (start !== 0 || end !== source.length) {
        source = source[$substring](start, end);
      }
      this.add(source);
      if (dart.test(isLast)) this.close();
    }
  };
  (io._WindowsCodePageEncoderSink.new = function(sink) {
    this[_sink$0] = sink;
  }).prototype = io._WindowsCodePageEncoderSink.prototype;
  dart.addTypeTests(io._WindowsCodePageEncoderSink);
  dart.setMethodSignature(io._WindowsCodePageEncoderSink, () => ({
    __proto__: dart.getMethods(io._WindowsCodePageEncoderSink.__proto__),
    close: dart.fnType(dart.void, []),
    add: dart.fnType(dart.void, [core.Object]),
    addSlice: dart.fnType(dart.void, [core.String, core.int, core.int, core.bool])
  }));
  dart.setFieldSignature(io._WindowsCodePageEncoderSink, () => ({
    __proto__: dart.getFields(io._WindowsCodePageEncoderSink.__proto__),
    [_sink$0]: dart.finalFieldType(SinkOfListOfint())
  }));
  io._WindowsCodePageDecoder = class _WindowsCodePageDecoder extends convert.Converter$(core.List$(core.int), core.String) {
    convert(input) {
      ListOfint()._check(input);
      return io._WindowsCodePageDecoder._decodeBytes(input);
    }
    startChunkedConversion(sink) {
      SinkOfString()._check(sink);
      return new io._WindowsCodePageDecoderSink.new(sink);
    }
    static _decodeBytes(bytes) {
      dart.throw(new core.UnsupportedError.new("_WindowsCodePageDecoder._decodeBytes"));
    }
  };
  (io._WindowsCodePageDecoder.new = function() {
    io._WindowsCodePageDecoder.__proto__.new.call(this);
  }).prototype = io._WindowsCodePageDecoder.prototype;
  dart.addTypeTests(io._WindowsCodePageDecoder);
  dart.setMethodSignature(io._WindowsCodePageDecoder, () => ({
    __proto__: dart.getMethods(io._WindowsCodePageDecoder.__proto__),
    convert: dart.fnType(core.String, [core.Object]),
    startChunkedConversion: dart.fnType(convert.ByteConversionSink, [core.Object])
  }));
  io._WindowsCodePageDecoderSink = class _WindowsCodePageDecoderSink extends convert.ByteConversionSinkBase {
    close() {
      this[_sink$0].close();
    }
    add(bytes) {
      ListOfint()._check(bytes);
      this[_sink$0].add(io._WindowsCodePageDecoder._decodeBytes(bytes));
    }
  };
  (io._WindowsCodePageDecoderSink.new = function(sink) {
    this[_sink$0] = sink;
    io._WindowsCodePageDecoderSink.__proto__.new.call(this);
  }).prototype = io._WindowsCodePageDecoderSink.prototype;
  dart.addTypeTests(io._WindowsCodePageDecoderSink);
  dart.setMethodSignature(io._WindowsCodePageDecoderSink, () => ({
    __proto__: dart.getMethods(io._WindowsCodePageDecoderSink.__proto__),
    close: dart.fnType(dart.void, []),
    add: dart.fnType(dart.void, [core.Object])
  }));
  dart.setFieldSignature(io._WindowsCodePageDecoderSink, () => ({
    __proto__: dart.getFields(io._WindowsCodePageDecoderSink.__proto__),
    [_sink$0]: dart.finalFieldType(SinkOfString())
  }));
  io.RawSynchronousSocket = class RawSynchronousSocket extends core.Object {
    static connectSync(host, port) {
      dart.throw(new core.UnsupportedError.new("RawSynchronousSocket.connectSync"));
    }
  };
  (io.RawSynchronousSocket.new = function() {
  }).prototype = io.RawSynchronousSocket.prototype;
  dart.addTypeTests(io.RawSynchronousSocket);
  isolate.IsolateSpawnException = class IsolateSpawnException extends core.Object {
    get message() {
      return this[message$15];
    }
    set message(value) {
      super.message = value;
    }
    toString() {
      return "IsolateSpawnException: " + dart.str(this.message);
    }
  };
  (isolate.IsolateSpawnException.new = function(message) {
    this[message$15] = message;
  }).prototype = isolate.IsolateSpawnException.prototype;
  dart.addTypeTests(isolate.IsolateSpawnException);
  const message$15 = Symbol("IsolateSpawnException.message");
  isolate.IsolateSpawnException[dart.implements] = () => [core.Exception];
  dart.setFieldSignature(isolate.IsolateSpawnException, () => ({
    __proto__: dart.getFields(isolate.IsolateSpawnException.__proto__),
    message: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(isolate.IsolateSpawnException, ['toString']);
  const _pause = Symbol('_pause');
  isolate.Isolate = class Isolate extends core.Object {
    get controlPort() {
      return this[controlPort$];
    }
    set controlPort(value) {
      super.controlPort = value;
    }
    get pauseCapability() {
      return this[pauseCapability$];
    }
    set pauseCapability(value) {
      super.pauseCapability = value;
    }
    get terminateCapability() {
      return this[terminateCapability$];
    }
    set terminateCapability(value) {
      super.terminateCapability = value;
    }
    static get current() {
      return isolate._unsupported();
    }
    static get packageRoot() {
      return isolate._unsupported();
    }
    static get packageConfig() {
      return isolate._unsupported();
    }
    static resolvePackageUri(packageUri) {
      return async.async(core.Uri, function* resolvePackageUri() {
        if (packageUri.scheme !== "package") return packageUri;
        return isolate.Isolate._packageBase.resolveUri(packageUri.replace({scheme: ""}));
      });
    }
    static spawn(T, entryPoint, message, opts) {
      let paused = opts && 'paused' in opts ? opts.paused : false;
      let errorsAreFatal = opts && 'errorsAreFatal' in opts ? opts.errorsAreFatal : null;
      let onExit = opts && 'onExit' in opts ? opts.onExit : null;
      let onError = opts && 'onError' in opts ? opts.onError : null;
      return isolate._unsupported();
    }
    static spawnUri(uri, args, message, opts) {
      let paused = opts && 'paused' in opts ? opts.paused : false;
      let onExit = opts && 'onExit' in opts ? opts.onExit : null;
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let errorsAreFatal = opts && 'errorsAreFatal' in opts ? opts.errorsAreFatal : null;
      let checked = opts && 'checked' in opts ? opts.checked : null;
      let environment = opts && 'environment' in opts ? opts.environment : null;
      let packageRoot = opts && 'packageRoot' in opts ? opts.packageRoot : null;
      let packageConfig = opts && 'packageConfig' in opts ? opts.packageConfig : null;
      let automaticPackageResolution = opts && 'automaticPackageResolution' in opts ? opts.automaticPackageResolution : false;
      return isolate._unsupported();
    }
    pause(resumeCapability) {
      if (resumeCapability === void 0) resumeCapability = null;
      let t = resumeCapability;
      t == null ? resumeCapability = isolate.Capability.new() : t;
      this[_pause](resumeCapability);
      return resumeCapability;
    }
    [_pause](resumeCapability) {
      return isolate._unsupported();
    }
    resume(resumeCapability) {
      return isolate._unsupported();
    }
    addOnExitListener(responsePort, opts) {
      let response = opts && 'response' in opts ? opts.response : null;
      return isolate._unsupported();
    }
    removeOnExitListener(responsePort) {
      return isolate._unsupported();
    }
    setErrorsFatal(errorsAreFatal) {
      return isolate._unsupported();
    }
    kill(opts) {
      let priority = opts && 'priority' in opts ? opts.priority : 1;
      return isolate._unsupported();
    }
    ping(responsePort, opts) {
      let response = opts && 'response' in opts ? opts.response : null;
      let priority = opts && 'priority' in opts ? opts.priority : 0;
      return isolate._unsupported();
    }
    addErrorListener(port) {
      return isolate._unsupported();
    }
    removeErrorListener(port) {
      return isolate._unsupported();
    }
    get errors() {
      let controller = null;
      let port = null;
      function handleError(message) {
        let listMessage = core.List._check(message);
        let errorDescription = core.String._check(listMessage[$_get](0));
        let stackDescription = core.String._check(listMessage[$_get](1));
        let error = new isolate.RemoteError.new(errorDescription, stackDescription);
        controller.addError(error, error.stackTrace);
      }
      dart.fn(handleError, dynamicTovoid());
      controller = async.StreamController.broadcast({sync: true, onListen: dart.fn(() => {
          port = isolate.RawReceivePort.new(handleError);
          this.addErrorListener(port.sendPort);
        }, VoidToNull()), onCancel: dart.fn(() => {
          this.removeErrorListener(port.sendPort);
          port.close();
          port = null;
        }, VoidToNull())});
      return controller.stream;
    }
  };
  (isolate.Isolate.new = function(controlPort, opts) {
    let pauseCapability = opts && 'pauseCapability' in opts ? opts.pauseCapability : null;
    let terminateCapability = opts && 'terminateCapability' in opts ? opts.terminateCapability : null;
    this[controlPort$] = controlPort;
    this[pauseCapability$] = pauseCapability;
    this[terminateCapability$] = terminateCapability;
  }).prototype = isolate.Isolate.prototype;
  dart.addTypeTests(isolate.Isolate);
  const controlPort$ = Symbol("Isolate.controlPort");
  const pauseCapability$ = Symbol("Isolate.pauseCapability");
  const terminateCapability$ = Symbol("Isolate.terminateCapability");
  dart.setMethodSignature(isolate.Isolate, () => ({
    __proto__: dart.getMethods(isolate.Isolate.__proto__),
    pause: dart.fnType(isolate.Capability, [], [isolate.Capability]),
    [_pause]: dart.fnType(dart.void, [isolate.Capability]),
    resume: dart.fnType(dart.void, [isolate.Capability]),
    addOnExitListener: dart.fnType(dart.void, [isolate.SendPort], {response: core.Object}),
    removeOnExitListener: dart.fnType(dart.void, [isolate.SendPort]),
    setErrorsFatal: dart.fnType(dart.void, [core.bool]),
    kill: dart.fnType(dart.void, [], {priority: core.int}),
    ping: dart.fnType(dart.void, [isolate.SendPort], {response: core.Object, priority: core.int}),
    addErrorListener: dart.fnType(dart.void, [isolate.SendPort]),
    removeErrorListener: dart.fnType(dart.void, [isolate.SendPort])
  }));
  dart.setGetterSignature(isolate.Isolate, () => ({
    __proto__: dart.getGetters(isolate.Isolate.__proto__),
    errors: async.Stream
  }));
  dart.setFieldSignature(isolate.Isolate, () => ({
    __proto__: dart.getFields(isolate.Isolate.__proto__),
    controlPort: dart.finalFieldType(isolate.SendPort),
    pauseCapability: dart.finalFieldType(isolate.Capability),
    terminateCapability: dart.finalFieldType(isolate.Capability)
  }));
  dart.defineLazy(isolate.Isolate, {
    /*isolate.Isolate.immediate*/get immediate() {
      return 0;
    },
    /*isolate.Isolate.beforeNextEvent*/get beforeNextEvent() {
      return 1;
    },
    /*isolate.Isolate._packageBase*/get _packageBase() {
      return core.Uri.base.resolve("packages/");
    },
    set _packageBase(_) {}
  });
  isolate.SendPort = class SendPort extends core.Object {};
  (isolate.SendPort.new = function() {
  }).prototype = isolate.SendPort.prototype;
  dart.addTypeTests(isolate.SendPort);
  isolate.SendPort[dart.implements] = () => [isolate.Capability];
  isolate.ReceivePort = class ReceivePort extends core.Object {
    static new() {
      return new isolate._ReceivePort.new();
    }
    static fromRawReceivePort(rawPort) {
      return isolate._unsupported();
    }
  };
  (isolate.ReceivePort[dart.mixinNew] = function() {
  }).prototype = isolate.ReceivePort.prototype;
  isolate.ReceivePort.prototype[dart.isStream] = true;
  dart.addTypeTests(isolate.ReceivePort);
  isolate.ReceivePort[dart.implements] = () => [async.Stream];
  isolate.RawReceivePort = class RawReceivePort extends core.Object {
    static new(handler) {
      if (handler === void 0) handler = null;
      return isolate._unsupported();
    }
  };
  (isolate.RawReceivePort[dart.mixinNew] = function() {
  }).prototype = isolate.RawReceivePort.prototype;
  dart.addTypeTests(isolate.RawReceivePort);
  const _description = Symbol('_description');
  isolate.RemoteError = class RemoteError extends core.Object {
    get stackTrace() {
      return this[stackTrace];
    }
    set stackTrace(value) {
      super.stackTrace = value;
    }
    toString() {
      return this[_description];
    }
  };
  (isolate.RemoteError.new = function(description, stackDescription) {
    this[_description] = description;
    this[stackTrace] = core.StackTrace.fromString(stackDescription);
  }).prototype = isolate.RemoteError.prototype;
  dart.addTypeTests(isolate.RemoteError);
  const stackTrace = Symbol("RemoteError.stackTrace");
  isolate.RemoteError[dart.implements] = () => [core.Error];
  dart.setFieldSignature(isolate.RemoteError, () => ({
    __proto__: dart.getFields(isolate.RemoteError.__proto__),
    [_description]: dart.finalFieldType(core.String),
    stackTrace: dart.finalFieldType(core.StackTrace)
  }));
  dart.defineExtensionMethods(isolate.RemoteError, ['toString']);
  dart.defineExtensionAccessors(isolate.RemoteError, ['stackTrace']);
  isolate._ReceivePort = class _ReceivePort extends async.Stream {
    close() {}
    get sendPort() {
      return isolate._unsupported();
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      return isolate._unsupported();
    }
  };
  (isolate._ReceivePort.new = function() {
    isolate._ReceivePort.__proto__.new.call(this);
  }).prototype = isolate._ReceivePort.prototype;
  dart.addTypeTests(isolate._ReceivePort);
  isolate._ReceivePort[dart.implements] = () => [isolate.ReceivePort];
  dart.setMethodSignature(isolate._ReceivePort, () => ({
    __proto__: dart.getMethods(isolate._ReceivePort.__proto__),
    close: dart.fnType(dart.void, []),
    listen: dart.fnType(async.StreamSubscription, [dart.dynamic], {onError: core.Function, onDone: dart.dynamic, cancelOnError: core.bool})
  }));
  dart.setGetterSignature(isolate._ReceivePort, () => ({
    __proto__: dart.getGetters(isolate._ReceivePort.__proto__),
    sendPort: isolate.SendPort
  }));
  isolate._unsupported = function() {
    dart.throw(new core.UnsupportedError.new("dart:isolate is not supported on dart4web"));
  };
  isolate.Capability = class Capability extends core.Object {
    static new() {
      return isolate._unsupported();
    }
  };
  (isolate.Capability[dart.mixinNew] = function() {
  }).prototype = isolate.Capability.prototype;
  dart.addTypeTests(isolate.Capability);
  dart.defineLazy(js, {
    /*js.context*/get context() {
      return js.JsObject._check(js._wrapToDart(dart.global));
    }
  });
  const _jsObject = Symbol('_jsObject');
  js.JsObject = class JsObject extends core.Object {
    static new(constructor, arguments$0) {
      if (arguments$0 === void 0) arguments$0 = null;
      let ctor = constructor[_jsObject];
      if (arguments$0 == null) {
        return js.JsObject._check(js._wrapToDart(new ctor()));
      }
      let unwrapped = core.List.from(arguments$0[$map](dart.dynamic, dart.fn(js._convertToJS, dynamicTodynamic())));
      return js.JsObject._check(js._wrapToDart(new ctor(...unwrapped)));
    }
    static fromBrowserObject(object) {
      if (typeof object == 'number' || typeof object == 'string' || typeof object == 'boolean' || object == null) {
        dart.throw(new core.ArgumentError.new("object cannot be a num, string, bool, or null"));
      }
      return js.JsObject._check(js._wrapToDart(js._convertToJS(object)));
    }
    static jsify(object) {
      if (!core.Map.is(object) && !core.Iterable.is(object)) {
        dart.throw(new core.ArgumentError.new("object must be a Map or Iterable"));
      }
      return js.JsObject._check(js._wrapToDart(js.JsObject._convertDataTree(object)));
    }
    static _convertDataTree(data) {
      let _convertedObjects = new _js_helper.IdentityMap.new();
      function _convert(o) {
        if (dart.test(_convertedObjects.containsKey(o))) {
          return _convertedObjects._get(o);
        }
        if (core.Map.is(o)) {
          let convertedMap = {};
          _convertedObjects._set(o, convertedMap);
          for (let key of o[$keys]) {
            convertedMap[key] = _convert(o[$_get](key));
          }
          return convertedMap;
        } else if (core.Iterable.is(o)) {
          let convertedList = [];
          _convertedObjects._set(o, convertedList);
          convertedList[$addAll](o[$map](dart.dynamic, _convert));
          return convertedList;
        } else {
          return js._convertToJS(o);
        }
      }
      dart.fn(_convert, dynamicTodynamic());
      return _convert(data);
    }
    _get(property) {
      if (!(typeof property == 'string') && !(typeof property == 'number')) {
        dart.throw(new core.ArgumentError.new("property is not a String or num"));
      }
      return js._convertToDart(this[_jsObject][property]);
    }
    _set(property, value) {
      if (!(typeof property == 'string') && !(typeof property == 'number')) {
        dart.throw(new core.ArgumentError.new("property is not a String or num"));
      }
      this[_jsObject][property] = js._convertToJS(value);
      return value;
    }
    get hashCode() {
      return 0;
    }
    _equals(other) {
      return js.JsObject.is(other) && this[_jsObject] === other[_jsObject];
    }
    hasProperty(property) {
      if (!(typeof property == 'string') && !(typeof property == 'number')) {
        dart.throw(new core.ArgumentError.new("property is not a String or num"));
      }
      return property in this[_jsObject];
    }
    deleteProperty(property) {
      if (!(typeof property == 'string') && !(typeof property == 'number')) {
        dart.throw(new core.ArgumentError.new("property is not a String or num"));
      }
      delete this[_jsObject][property];
    }
    instanceof(type) {
      return this[_jsObject] instanceof js._convertToJS(type);
    }
    toString() {
      try {
        return String(this[_jsObject]);
      } catch (e$) {
        let e = dart.getThrown(e$);
        return super.toString();
      }
    }
    callMethod(method, args) {
      if (args === void 0) args = null;
      if (!(typeof method == 'string') && !(typeof method == 'number')) {
        dart.throw(new core.ArgumentError.new("method is not a String or num"));
      }
      if (args != null) args = core.List.from(args[$map](dart.dynamic, dart.fn(js._convertToJS, dynamicTodynamic())));
      let fn = this[_jsObject][method];
      if (typeof fn !== "function") {
        dart.throw(new core.NoSuchMethodError.new(this[_jsObject], core.Symbol.new(core.String._check(method)), args, new (LinkedMapOfSymbol$dynamic()).new()));
      }
      return js._convertToDart(fn.apply(this[_jsObject], args));
    }
  };
  (js.JsObject._fromJs = function(jsObject) {
    this[_jsObject] = jsObject;
    if (!(this[_jsObject] != null)) dart.assertFailed();
  }).prototype = js.JsObject.prototype;
  dart.addTypeTests(js.JsObject);
  dart.setMethodSignature(js.JsObject, () => ({
    __proto__: dart.getMethods(js.JsObject.__proto__),
    _get: dart.fnType(dart.dynamic, [core.Object]),
    _set: dart.fnType(dart.void, [core.Object, dart.dynamic]),
    hasProperty: dart.fnType(core.bool, [dart.dynamic]),
    deleteProperty: dart.fnType(dart.void, [dart.dynamic]),
    instanceof: dart.fnType(core.bool, [js.JsFunction]),
    callMethod: dart.fnType(dart.dynamic, [dart.dynamic], [core.List])
  }));
  dart.setFieldSignature(js.JsObject, () => ({
    __proto__: dart.getFields(js.JsObject.__proto__),
    [_jsObject]: dart.finalFieldType(dart.dynamic)
  }));
  dart.defineExtensionMethods(js.JsObject, ['_equals', 'toString']);
  dart.defineExtensionAccessors(js.JsObject, ['hashCode']);
  js.JsFunction = class JsFunction extends js.JsObject {
    static withThis(f) {
      return new js.JsFunction._fromJs(function() {
        let args = [js._convertToDart(this)];
        for (let arg of arguments) {
          args.push(js._convertToDart(arg));
        }
        return js._convertToJS(f(...args));
      });
    }
    apply(args, opts) {
      let thisArg = opts && 'thisArg' in opts ? opts.thisArg : null;
      return js._convertToDart(this[_jsObject].apply(js._convertToJS(thisArg), args == null ? null : core.List.from(args[$map](dart.dynamic, js._convertToJS))));
    }
  };
  (js.JsFunction._fromJs = function(jsObject) {
    js.JsFunction.__proto__._fromJs.call(this, jsObject);
  }).prototype = js.JsFunction.prototype;
  dart.addTypeTests(js.JsFunction);
  dart.setMethodSignature(js.JsFunction, () => ({
    __proto__: dart.getMethods(js.JsFunction.__proto__),
    apply: dart.fnType(dart.dynamic, [core.List], {thisArg: dart.dynamic})
  }));
  const _checkIndex = Symbol('_checkIndex');
  const _checkInsertIndex = Symbol('_checkInsertIndex');
  const _is_JsArray_default = Symbol('_is_JsArray_default');
  js.JsArray$ = dart.generic(E => {
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    const JsObject_ListMixin$ = class JsObject_ListMixin extends js.JsObject {};
    (JsObject_ListMixin$._fromJs = function(_jsObject) {
      JsObject_ListMixin$.__proto__._fromJs.call(this, _jsObject);
    }).prototype = JsObject_ListMixin$.prototype;
    (JsObject_ListMixin$.new = function(constructor, arguments$0) {
      JsObject_ListMixin$.__proto__.new.call(this, constructor, arguments$0);
    }).prototype = JsObject_ListMixin$.prototype;
    (JsObject_ListMixin$.fromBrowserObject = function(object) {
      JsObject_ListMixin$.__proto__.fromBrowserObject.call(this, object);
    }).prototype = JsObject_ListMixin$.prototype;
    (JsObject_ListMixin$.jsify = function(object) {
      JsObject_ListMixin$.__proto__.jsify.call(this, object);
    }).prototype = JsObject_ListMixin$.prototype;
    dart.applyMixin(JsObject_ListMixin$, collection.ListMixin$(E));
    class JsArray extends JsObject_ListMixin$ {
      [_checkIndex](index) {
        if (core.int.is(index) && (dart.notNull(index) < 0 || dart.notNull(index) >= dart.notNull(this.length))) {
          dart.throw(new core.RangeError.range(index, 0, this.length));
        }
      }
      [_checkInsertIndex](index) {
        if (core.int.is(index) && (dart.notNull(index) < 0 || dart.notNull(index) >= dart.notNull(this.length) + 1)) {
          dart.throw(new core.RangeError.range(index, 0, this.length));
        }
      }
      static _checkRange(start, end, length) {
        if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(length)) {
          dart.throw(new core.RangeError.range(start, 0, length));
        }
        if (dart.notNull(end) < dart.notNull(start) || dart.notNull(end) > dart.notNull(length)) {
          dart.throw(new core.RangeError.range(end, start, length));
        }
      }
      _get(index) {
        if (typeof index == 'number' && index === index[$toInt]()) {
          this[_checkIndex](dart.asInt(index));
        }
        return E.as(super._get(index));
      }
      _set(index, value) {
        if (typeof index == 'number' && index === index[$toInt]()) {
          this[_checkIndex](dart.asInt(index));
        }
        super._set(index, value);
        return value;
      }
      get length() {
        let len = this[_jsObject].length;
        if (typeof len === "number" && len >>> 0 === len) {
          return len;
        }
        dart.throw(new core.StateError.new("Bad JsArray length"));
      }
      set length(length) {
        super._set("length", length);
      }
      add(value) {
        E._check(value);
        this.callMethod("push", [value]);
      }
      addAll(iterable) {
        IterableOfE()._check(iterable);
        let list = iterable instanceof Array ? iterable : core.List.from(iterable);
        this.callMethod("push", core.List._check(list));
      }
      insert(index, element) {
        E._check(element);
        this[_checkInsertIndex](index);
        this.callMethod("splice", [index, 0, element]);
      }
      removeAt(index) {
        this[_checkIndex](index);
        return E.as(dart.dindex(this.callMethod("splice", [index, 1]), 0));
      }
      removeLast() {
        if (this.length === 0) dart.throw(new core.RangeError.new(-1));
        return E.as(this.callMethod("pop"));
      }
      removeRange(start, end) {
        js.JsArray._checkRange(start, end, this.length);
        this.callMethod("splice", [start, dart.notNull(end) - dart.notNull(start)]);
      }
      setRange(start, end, iterable, skipCount) {
        IterableOfE()._check(iterable);
        if (skipCount === void 0) skipCount = 0;
        js.JsArray._checkRange(start, end, this.length);
        let length = dart.notNull(end) - dart.notNull(start);
        if (length === 0) return;
        if (dart.notNull(skipCount) < 0) dart.throw(new core.ArgumentError.new(skipCount));
        let args = JSArrayOfObject().of([start, length]);
        args[$addAll](iterable[$skip](skipCount)[$take](length));
        this.callMethod("splice", args);
      }
      sort(compare) {
        if (compare === void 0) compare = null;
        this.callMethod("sort", compare == null ? [] : [compare]);
      }
    }
    (JsArray.new = function() {
      JsArray.__proto__._fromJs.call(this, []);
    }).prototype = JsArray.prototype;
    (JsArray.from = function(other) {
      JsArray.__proto__._fromJs.call(this, (() => {
        let _ = [];
        _[$addAll](other[$map](dart.dynamic, dart.fn(js._convertToJS, dynamicTodynamic())));
        return _;
      })());
    }).prototype = JsArray.prototype;
    (JsArray._fromJs = function(jsObject) {
      JsArray.__proto__._fromJs.call(this, jsObject);
    }).prototype = JsArray.prototype;
    dart.addTypeTests(JsArray);
    JsArray.prototype[_is_JsArray_default] = true;
    dart.setMethodSignature(JsArray, () => ({
      __proto__: dart.getMethods(JsArray.__proto__),
      [_checkIndex]: dart.fnType(dart.dynamic, [core.int]),
      [_checkInsertIndex]: dart.fnType(dart.dynamic, [core.int]),
      _get: dart.fnType(E, [core.Object]),
      [$_get]: dart.fnType(E, [core.Object]),
      _set: dart.fnType(dart.void, [core.Object, dart.dynamic]),
      [$_set]: dart.fnType(dart.void, [core.Object, dart.dynamic]),
      add: dart.fnType(dart.void, [core.Object]),
      [$add]: dart.fnType(dart.void, [core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      [$addAll]: dart.fnType(dart.void, [core.Object]),
      insert: dart.fnType(dart.void, [core.int, core.Object]),
      [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
      setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
      [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int])
    }));
    dart.setGetterSignature(JsArray, () => ({
      __proto__: dart.getGetters(JsArray.__proto__),
      length: core.int,
      [$length]: core.int
    }));
    dart.setSetterSignature(JsArray, () => ({
      __proto__: dart.getSetters(JsArray.__proto__),
      length: core.int,
      [$length]: core.int
    }));
    dart.defineExtensionMethods(JsArray, [
      '_get',
      '_set',
      'add',
      'addAll',
      'insert',
      'removeAt',
      'removeLast',
      'removeRange',
      'setRange',
      'sort'
    ]);
    dart.defineExtensionAccessors(JsArray, ['length']);
    return JsArray;
  });
  js.JsArray = js.JsArray$();
  dart.addTypeTests(js.JsArray, _is_JsArray_default);
  js._isBrowserType = function(o) {
    return o instanceof Object && (o instanceof Blob || o instanceof Event || window.KeyRange && o instanceof KeyRange || window.IDBKeyRange && o instanceof IDBKeyRange || o instanceof ImageData || o instanceof Node || window.Int8Array && o instanceof Int8Array.__proto__ || o instanceof Window);
  };
  const _dartObj = Symbol('_dartObj');
  js._DartObject = class _DartObject extends core.Object {};
  (js._DartObject.new = function(dartObj) {
    this[_dartObj] = dartObj;
  }).prototype = js._DartObject.prototype;
  dart.addTypeTests(js._DartObject);
  dart.setFieldSignature(js._DartObject, () => ({
    __proto__: dart.getFields(js._DartObject.__proto__),
    [_dartObj]: dart.finalFieldType(dart.dynamic)
  }));
  js._convertToJS = function(o) {
    if (o == null || typeof o == 'string' || typeof o == 'number' || typeof o == 'boolean' || dart.test(js._isBrowserType(o))) {
      return o;
    } else if (core.DateTime.is(o)) {
      return _js_helper.Primitives.lazyAsJsDate(o);
    } else if (js.JsObject.is(o)) {
      return o[_jsObject];
    } else if (core.Function.is(o)) {
      return js._putIfAbsent(js._jsProxies, o, dart.fn(js._wrapDartFunction, dynamicTodynamic()));
    } else {
      return js._putIfAbsent(js._jsProxies, o, dart.fn(o => new js._DartObject.new(o), dynamicTo_DartObject()));
    }
  };
  js._wrapDartFunction = function(f) {
    let wrapper = function() {
      let args = Array.prototype.map.call(arguments, js._convertToDart);
      return js._convertToJS(f(...args));
    };
    js._dartProxies.set(wrapper, f);
    return wrapper;
  };
  js._convertToDart = function(o) {
    if (o == null || typeof o == 'string' || typeof o == 'number' || typeof o == 'boolean' || dart.test(js._isBrowserType(o))) {
      return o;
    } else if (o instanceof Date) {
      let ms = o.getTime();
      return new core.DateTime.fromMillisecondsSinceEpoch(dart.asInt(ms));
    } else if (js._DartObject.is(o) && !core.identical(dart.getReifiedType(o), dart.jsobject)) {
      return o[_dartObj];
    } else {
      return js._wrapToDart(o);
    }
  };
  js._wrapToDart = function(o) {
    return js._putIfAbsent(js._dartProxies, o, dart.fn(js._wrapToDartHelper, dynamicToObject()));
  };
  js._wrapToDartHelper = function(o) {
    if (typeof o == "function") {
      return new js.JsFunction._fromJs(o);
    }
    if (o instanceof Array) {
      return new js.JsArray._fromJs(o);
    }
    return new js.JsObject._fromJs(o);
  };
  dart.defineLazy(js, {
    /*js._dartProxies*/get _dartProxies() {
      return new WeakMap();
    },
    /*js._jsProxies*/get _jsProxies() {
      return new WeakMap();
    }
  });
  js._putIfAbsent = function(weakMap, o, getValue) {
    let value = weakMap.get(o);
    if (value == null) {
      value = getValue(o);
      weakMap.set(o, value);
    }
    return value;
  };
  js.allowInterop = function(F, f) {
    return f;
  };
  dart.defineLazy(js, {
    /*js._interopCaptureThisExpando*/get _interopCaptureThisExpando() {
      return new (ExpandoOfFunction()).new();
    },
    set _interopCaptureThisExpando(_) {}
  });
  js.allowInteropCaptureThis = function(f) {
    let ret = js._interopCaptureThisExpando._get(f);
    if (ret == null) {
      ret = function() {
        let args = [this];
        for (let arg of arguments) {
          args.push(arg);
        }
        return f(...args);
      };
      js._interopCaptureThisExpando._set(f, ret);
    }
    return ret;
  };
  js_util.jsify = function(object) {
    if (!core.Map.is(object) && !core.Iterable.is(object)) {
      dart.throw(new core.ArgumentError.new("object must be a Map or Iterable"));
    }
    return js_util._convertDataTree(object);
  };
  js_util._convertDataTree = function(data) {
    let _convertedObjects = new _js_helper.IdentityMap.new();
    function _convert(o) {
      if (dart.test(_convertedObjects.containsKey(o))) {
        return _convertedObjects._get(o);
      }
      if (core.Map.is(o)) {
        let convertedMap = {};
        _convertedObjects._set(o, convertedMap);
        for (let key of o[$keys]) {
          convertedMap[key] = _convert(o[$_get](key));
        }
        return convertedMap;
      } else if (core.Iterable.is(o)) {
        let convertedList = [];
        _convertedObjects._set(o, convertedList);
        convertedList[$addAll](o[$map](dart.dynamic, _convert));
        return convertedList;
      } else {
        return o;
      }
    }
    dart.fn(_convert, dynamicTodynamic());
    return _convert(data);
  };
  js_util.newObject = function() {
    return {};
  };
  js_util.hasProperty = function(o, name) {
    return name in o;
  };
  js_util.getProperty = function(o, name) {
    return o[name];
  };
  js_util.setProperty = function(o, name, value) {
    return o[name] = value;
  };
  js_util.callMethod = function(o, method, args) {
    return o[method].apply(o, args);
  };
  js_util.instanceof = function(o, type) {
    return o instanceof type;
  };
  js_util.callConstructor = function(constr, arguments$0) {
    if (arguments$0 == null) {
      return new constr();
    }
    if (arguments$0 instanceof Array) {
      let argumentCount = arguments$0.length;
      switch (argumentCount) {
        case 0:
        {
          return new constr();
        }
        case 1:
        {
          let arg0 = arguments$0[0];
          return new constr(arg0);
        }
        case 2:
        {
          let arg0 = arguments$0[0];
          let arg1 = arguments$0[1];
          return new constr(arg0, arg1);
        }
        case 3:
        {
          let arg0 = arguments$0[0];
          let arg1 = arguments$0[1];
          let arg2 = arguments$0[2];
          return new constr(arg0, arg1, arg2);
        }
        case 4:
        {
          let arg0 = arguments$0[0];
          let arg1 = arguments$0[1];
          let arg2 = arguments$0[2];
          let arg3 = arguments$0[3];
          return new constr(arg0, arg1, arg2, arg3);
        }
      }
    }
    let args = [null];
    args[$addAll](arguments$0);
    let factoryFunction = constr.bind.apply(constr, args);
    String(factoryFunction);
    return new factoryFunction();
  };
  dart.defineLazy(math, {
    /*math.e*/get e() {
      return 2.718281828459045;
    },
    /*math.ln10*/get ln10() {
      return 2.302585092994046;
    },
    /*math.ln2*/get ln2() {
      return 0.6931471805599453;
    },
    /*math.log2e*/get log2e() {
      return 1.4426950408889634;
    },
    /*math.log10e*/get log10e() {
      return 0.4342944819032518;
    },
    /*math.pi*/get pi() {
      return 3.141592653589793;
    },
    /*math.sqrt1_2*/get sqrt1_2() {
      return 0.7071067811865476;
    },
    /*math.sqrt2*/get sqrt2() {
      return 1.4142135623730951;
    }
  });
  math.min = function(T, a, b) {
    if (a == null) dart.argumentError(a);
    if (b == null) dart.argumentError(b);
    return Math.min(a, b);
  };
  math.max = function(T, a, b) {
    if (a == null) dart.argumentError(a);
    if (b == null) dart.argumentError(b);
    return Math.max(a, b);
  };
  math.atan2 = function(a, b) {
    if (a == null) dart.argumentError(a);
    if (b == null) dart.argumentError(b);
    return Math.atan2(a, b);
  };
  math.pow = function(x, exponent) {
    if (x == null) dart.argumentError(x);
    if (exponent == null) dart.argumentError(exponent);
    return Math.pow(x, exponent);
  };
  math.sin = function(radians) {
    if (radians == null) dart.argumentError(radians);
    return Math.sin(radians);
  };
  math.cos = function(radians) {
    if (radians == null) dart.argumentError(radians);
    return Math.cos(radians);
  };
  math.tan = function(radians) {
    if (radians == null) dart.argumentError(radians);
    return Math.tan(radians);
  };
  math.acos = function(x) {
    if (x == null) dart.argumentError(x);
    return Math.acos(x);
  };
  math.asin = function(x) {
    if (x == null) dart.argumentError(x);
    return Math.asin(x);
  };
  math.atan = function(x) {
    if (x == null) dart.argumentError(x);
    return Math.atan(x);
  };
  math.sqrt = function(x) {
    if (x == null) dart.argumentError(x);
    return Math.sqrt(x);
  };
  math.exp = function(x) {
    if (x == null) dart.argumentError(x);
    return Math.exp(x);
  };
  math.log = function(x) {
    if (x == null) dart.argumentError(x);
    return Math.log(x);
  };
  dart.defineLazy(math, {
    /*math._POW2_32*/get _POW2_32() {
      return 4294967296;
    }
  });
  math._JSRandom = class _JSRandom extends core.Object {
    nextInt(max) {
      if (dart.notNull(max) <= 0 || dart.notNull(max) > 4294967296) {
        dart.throw(new core.RangeError.new("max must be in range 0 < max ≤ 2^32, was " + dart.str(max)));
      }
      return Math.random() * max >>> 0;
    }
    nextDouble() {
      return Math.random();
    }
    nextBool() {
      return Math.random() < 0.5;
    }
  };
  (math._JSRandom.new = function() {
  }).prototype = math._JSRandom.prototype;
  dart.addTypeTests(math._JSRandom);
  math._JSRandom[dart.implements] = () => [math.Random];
  dart.setMethodSignature(math._JSRandom, () => ({
    __proto__: dart.getMethods(math._JSRandom.__proto__),
    nextInt: dart.fnType(core.int, [core.int]),
    nextDouble: dart.fnType(core.double, []),
    nextBool: dart.fnType(core.bool, [])
  }));
  const _lo = Symbol('_lo');
  const _hi = Symbol('_hi');
  const _nextState = Symbol('_nextState');
  math._Random = class _Random extends core.Object {
    [_nextState]() {
      let tmpHi = 4294901760 * this[_lo];
      let tmpHiLo = (tmpHi & 4294967295) >>> 0;
      let tmpHiHi = tmpHi - tmpHiLo;
      let tmpLo = 55905 * this[_lo];
      let tmpLoLo = (tmpLo & 4294967295) >>> 0;
      let tmpLoHi = tmpLo - tmpLoLo;
      let newLo = tmpLoLo + tmpHiLo + this[_hi];
      this[_lo] = (newLo & 4294967295) >>> 0;
      let newLoHi = newLo - this[_lo];
      this[_hi] = (((tmpLoHi + tmpHiHi + newLoHi) / 4294967296)[$truncate]() & 4294967295) >>> 0;
      if (!(this[_lo] < 4294967296)) dart.assertFailed();
      if (!(this[_hi] < 4294967296)) dart.assertFailed();
    }
    nextInt(max) {
      if (max == null) dart.argumentError(max);
      if (max <= 0 || max > 4294967296) {
        dart.throw(new core.RangeError.new("max must be in range 0 < max ≤ 2^32, was " + dart.str(max)));
      }
      if ((max & max - 1) === 0) {
        this[_nextState]();
        return (this[_lo] & max - 1) >>> 0;
      }
      let rnd32 = null;
      let result = null;
      do {
        this[_nextState]();
        rnd32 = this[_lo];
        result = dart.asInt(rnd32[$remainder](max));
      } while (dart.notNull(rnd32) - dart.notNull(result) + max >= 4294967296);
      return result;
    }
    nextDouble() {
      this[_nextState]();
      let bits26 = (this[_lo] & (1 << 26) - 1) >>> 0;
      this[_nextState]();
      let bits27 = (this[_lo] & (1 << 27) - 1) >>> 0;
      return (bits26 * 134217728.0 + bits27) / 9007199254740992.0;
    }
    nextBool() {
      this[_nextState]();
      return (this[_lo] & 1) === 0;
    }
  };
  (math._Random.new = function(seed) {
    this[_lo] = 0;
    this[_hi] = 0;
    let empty_seed = 0;
    if (dart.notNull(seed) < 0) {
      empty_seed = -1;
    }
    do {
      let low = (dart.notNull(seed) & 4294967295) >>> 0;
      seed = ((dart.notNull(seed) - low) / 4294967296)[$truncate]();
      let high = (dart.notNull(seed) & 4294967295) >>> 0;
      seed = ((dart.notNull(seed) - high) / 4294967296)[$truncate]();
      let tmplow = low << 21 >>> 0;
      let tmphigh = (high << 21 | low[$rightShift](11)) >>> 0;
      tmplow = ((~low & 4294967295) >>> 0) + tmplow;
      low = (tmplow & 4294967295) >>> 0;
      high = ((~high >>> 0) + tmphigh + ((tmplow - low) / 4294967296)[$truncate]() & 4294967295) >>> 0;
      tmphigh = high[$rightShift](24);
      tmplow = (low[$rightShift](24) | high << 8) >>> 0;
      low = (low ^ tmplow) >>> 0;
      high = (high ^ tmphigh) >>> 0;
      tmplow = low * 265;
      low = (tmplow & 4294967295) >>> 0;
      high = (high * 265 + ((tmplow - low) / 4294967296)[$truncate]() & 4294967295) >>> 0;
      tmphigh = high[$rightShift](14);
      tmplow = (low[$rightShift](14) | high << 18) >>> 0;
      low = (low ^ tmplow) >>> 0;
      high = (high ^ tmphigh) >>> 0;
      tmplow = low * 21;
      low = (tmplow & 4294967295) >>> 0;
      high = (high * 21 + ((tmplow - low) / 4294967296)[$truncate]() & 4294967295) >>> 0;
      tmphigh = high[$rightShift](28);
      tmplow = (low[$rightShift](28) | high << 4) >>> 0;
      low = (low ^ tmplow) >>> 0;
      high = (high ^ tmphigh) >>> 0;
      tmplow = low << 31 >>> 0;
      tmphigh = (high << 31 | low[$rightShift](1)) >>> 0;
      tmplow = tmplow + low;
      low = (tmplow & 4294967295) >>> 0;
      high = (high + tmphigh + ((tmplow - low) / 4294967296)[$truncate]() & 4294967295) >>> 0;
      tmplow = this[_lo] * 1037;
      this[_lo] = (tmplow & 4294967295) >>> 0;
      this[_hi] = (this[_hi] * 1037 + ((tmplow - this[_lo]) / 4294967296)[$truncate]() & 4294967295) >>> 0;
      this[_lo] = (this[_lo] ^ low) >>> 0;
      this[_hi] = (this[_hi] ^ high) >>> 0;
    } while (seed !== empty_seed);
    if (this[_hi] === 0 && this[_lo] === 0) {
      this[_lo] = 23063;
    }
    this[_nextState]();
    this[_nextState]();
    this[_nextState]();
    this[_nextState]();
  }).prototype = math._Random.prototype;
  dart.addTypeTests(math._Random);
  math._Random[dart.implements] = () => [math.Random];
  dart.setMethodSignature(math._Random, () => ({
    __proto__: dart.getMethods(math._Random.__proto__),
    [_nextState]: dart.fnType(dart.void, []),
    nextInt: dart.fnType(core.int, [core.int]),
    nextDouble: dart.fnType(core.double, []),
    nextBool: dart.fnType(core.bool, [])
  }));
  dart.setFieldSignature(math._Random, () => ({
    __proto__: dart.getFields(math._Random.__proto__),
    [_lo]: dart.fieldType(core.int),
    [_hi]: dart.fieldType(core.int)
  }));
  dart.defineLazy(math._Random, {
    /*math._Random._POW2_53_D*/get _POW2_53_D() {
      return 1.0 * 9007199254740992;
    },
    /*math._Random._POW2_27_D*/get _POW2_27_D() {
      return 1.0 * (1 << 27);
    },
    /*math._Random._MASK32*/get _MASK32() {
      return 4294967295;
    }
  });
  const _buffer$0 = Symbol('_buffer');
  const _getRandomBytes = Symbol('_getRandomBytes');
  math._JSSecureRandom = class _JSSecureRandom extends core.Object {
    [_getRandomBytes](start, length) {
      crypto.getRandomValues(this[_buffer$0][$buffer][$asUint8List](start, length));
    }
    nextBool() {
      this[_getRandomBytes](0, 1);
      return this[_buffer$0][$getUint8](0)[$isOdd];
    }
    nextDouble() {
      this[_getRandomBytes](1, 7);
      this[_buffer$0][$setUint8](0, 63);
      let highByte = this[_buffer$0][$getUint8](1);
      this[_buffer$0][$setUint8](1, (dart.notNull(highByte) | 240) >>> 0);
      let result = dart.notNull(this[_buffer$0][$getFloat64](0)) - 1.0;
      if ((dart.notNull(highByte) & 16) !== 0) {
        result = result + 1.1102230246251565e-16;
      }
      return result;
    }
    nextInt(max) {
      if (max == null) dart.argumentError(max);
      if (max <= 0 || max > 4294967296) {
        dart.throw(new core.RangeError.new("max must be in range 0 < max ≤ 2^32, was " + dart.str(max)));
      }
      let byteCount = 1;
      if (max > 255) {
        byteCount++;
        if (max > 65535) {
          byteCount++;
          if (max > 16777215) {
            byteCount++;
          }
        }
      }
      this[_buffer$0][$setUint32](0, 0);
      let start = 4 - byteCount;
      let randomLimit = dart.asInt(math.pow(256, byteCount));
      while (true) {
        this[_getRandomBytes](start, byteCount);
        let random = this[_buffer$0][$getUint32](0);
        if ((max & max - 1) === 0) {
          return (dart.notNull(random) & max - 1) >>> 0;
        }
        let result = dart.asInt(random[$remainder](max));
        if (dart.notNull(random) - dart.notNull(result) + max < dart.notNull(randomLimit)) {
          return result;
        }
      }
    }
  };
  (math._JSSecureRandom.new = function() {
    this[_buffer$0] = typed_data.ByteData.new(8);
    let crypto = self.crypto;
    if (crypto != null) {
      let getRandomValues = crypto.getRandomValues;
      if (getRandomValues != null) {
        return;
      }
    }
    dart.throw(new core.UnsupportedError.new("No source of cryptographically secure random numbers available."));
  }).prototype = math._JSSecureRandom.prototype;
  dart.addTypeTests(math._JSSecureRandom);
  math._JSSecureRandom[dart.implements] = () => [math.Random];
  dart.setMethodSignature(math._JSSecureRandom, () => ({
    __proto__: dart.getMethods(math._JSSecureRandom.__proto__),
    [_getRandomBytes]: dart.fnType(dart.void, [core.int, core.int]),
    nextBool: dart.fnType(core.bool, []),
    nextDouble: dart.fnType(core.double, []),
    nextInt: dart.fnType(core.int, [core.int])
  }));
  dart.setFieldSignature(math._JSSecureRandom, () => ({
    __proto__: dart.getFields(math._JSSecureRandom.__proto__),
    [_buffer$0]: dart.finalFieldType(typed_data.ByteData)
  }));
  math._JenkinsSmiHash = class _JenkinsSmiHash extends core.Object {
    static combine(hash, value) {
      hash = 536870911 & dart.notNull(hash) + dart.notNull(value);
      hash = 536870911 & dart.notNull(hash) + ((524287 & dart.notNull(hash)) << 10);
      return (dart.notNull(hash) ^ hash[$rightShift](6)) >>> 0;
    }
    static finish(hash) {
      hash = 536870911 & dart.notNull(hash) + ((67108863 & dart.notNull(hash)) << 3);
      hash = (dart.notNull(hash) ^ hash[$rightShift](11)) >>> 0;
      return 536870911 & dart.notNull(hash) + ((16383 & dart.notNull(hash)) << 15);
    }
    static hash2(a, b) {
      return math._JenkinsSmiHash.finish(math._JenkinsSmiHash.combine(math._JenkinsSmiHash.combine(0, core.int._check(a)), core.int._check(b)));
    }
    static hash4(a, b, c, d) {
      return math._JenkinsSmiHash.finish(math._JenkinsSmiHash.combine(math._JenkinsSmiHash.combine(math._JenkinsSmiHash.combine(math._JenkinsSmiHash.combine(0, core.int._check(a)), core.int._check(b)), core.int._check(c)), core.int._check(d)));
    }
  };
  (math._JenkinsSmiHash.new = function() {
  }).prototype = math._JenkinsSmiHash.prototype;
  dart.addTypeTests(math._JenkinsSmiHash);
  const _is_Point_default = Symbol('_is_Point_default');
  math.Point$ = dart.generic(T => {
    let PointOfT = () => (PointOfT = dart.constFn(math.Point$(T)))();
    class Point extends core.Object {
      get x() {
        return this[x$];
      }
      set x(value) {
        super.x = value;
      }
      get y() {
        return this[y$];
      }
      set y(value) {
        super.y = value;
      }
      toString() {
        return "Point(" + dart.str(this.x) + ", " + dart.str(this.y) + ")";
      }
      _equals(other) {
        return PointOfnum().is(other) && this.x == other.x && this.y == other.y;
      }
      get hashCode() {
        return math._JenkinsSmiHash.hash2(dart.hashCode(this.x), dart.hashCode(this.y));
      }
      ['+'](other) {
        PointOfT()._check(other);
        return new (PointOfT()).new(dart.notNull(this.x) + dart.notNull(other.x), dart.notNull(this.y) + dart.notNull(other.y));
      }
      ['-'](other) {
        PointOfT()._check(other);
        return new (PointOfT()).new(dart.notNull(this.x) - dart.notNull(other.x), dart.notNull(this.y) - dart.notNull(other.y));
      }
      ['*'](factor) {
        return new (PointOfT()).new(dart.notNull(this.x) * dart.notNull(factor), dart.notNull(this.y) * dart.notNull(factor));
      }
      get magnitude() {
        return math.sqrt(dart.notNull(this.x) * dart.notNull(this.x) + dart.notNull(this.y) * dart.notNull(this.y));
      }
      distanceTo(other) {
        PointOfT()._check(other);
        let dx = dart.notNull(this.x) - dart.notNull(other.x);
        let dy = dart.notNull(this.y) - dart.notNull(other.y);
        return math.sqrt(dx * dx + dy * dy);
      }
      squaredDistanceTo(other) {
        PointOfT()._check(other);
        let dx = dart.notNull(this.x) - dart.notNull(other.x);
        let dy = dart.notNull(this.y) - dart.notNull(other.y);
        return dx * dx + dy * dy;
      }
    }
    (Point.new = function(x, y) {
      this[x$] = x;
      this[y$] = y;
    }).prototype = Point.prototype;
    dart.addTypeTests(Point);
    Point.prototype[_is_Point_default] = true;
    const x$ = Symbol("Point.x");
    const y$ = Symbol("Point.y");
    dart.setMethodSignature(Point, () => ({
      __proto__: dart.getMethods(Point.__proto__),
      toString: dart.fnType(core.String, []),
      [$toString]: dart.fnType(core.String, []),
      _equals: dart.fnType(core.bool, [dart.dynamic]),
      [$_equals]: dart.fnType(core.bool, [dart.dynamic]),
      '+': dart.fnType(math.Point$(T), [core.Object]),
      '-': dart.fnType(math.Point$(T), [core.Object]),
      '*': dart.fnType(math.Point$(T), [core.num]),
      distanceTo: dart.fnType(core.double, [core.Object]),
      squaredDistanceTo: dart.fnType(T, [core.Object])
    }));
    dart.setGetterSignature(Point, () => ({
      __proto__: dart.getGetters(Point.__proto__),
      hashCode: core.int,
      [$hashCode]: core.int,
      magnitude: core.double
    }));
    dart.setFieldSignature(Point, () => ({
      __proto__: dart.getFields(Point.__proto__),
      x: dart.finalFieldType(T),
      y: dart.finalFieldType(T)
    }));
    dart.defineExtensionMethods(Point, ['toString', '_equals']);
    dart.defineExtensionAccessors(Point, ['hashCode']);
    return Point;
  });
  math.Point = math.Point$();
  dart.addTypeTests(math.Point, _is_Point_default);
  let const$68;
  math.Random = class Random extends core.Object {
    static new(seed) {
      if (seed === void 0) seed = null;
      return seed == null ? const$68 || (const$68 = dart.const(new math._JSRandom.new())) : new math._Random.new(seed);
    }
    static secure() {
      return math.Random._secureRandom;
    }
  };
  (math.Random[dart.mixinNew] = function() {
  }).prototype = math.Random.prototype;
  dart.addTypeTests(math.Random);
  dart.defineLazy(math.Random, {
    /*math.Random._secureRandom*/get _secureRandom() {
      return new math._JSSecureRandom.new();
    }
  });
  const _is__RectangleBase_default = Symbol('_is__RectangleBase_default');
  math._RectangleBase$ = dart.generic(T => {
    let RectangleOfT = () => (RectangleOfT = dart.constFn(math.Rectangle$(T)))();
    let PointOfT = () => (PointOfT = dart.constFn(math.Point$(T)))();
    class _RectangleBase extends core.Object {
      get right() {
        return dart.notNull(this[$left]) + dart.notNull(this[$width]);
      }
      get bottom() {
        return dart.notNull(this[$top]) + dart.notNull(this[$height]);
      }
      toString() {
        return "Rectangle (" + dart.str(this[$left]) + ", " + dart.str(this[$top]) + ") " + dart.str(this[$width]) + " x " + dart.str(this[$height]);
      }
      _equals(other) {
        return RectangleOfnum().is(other) && this[$left] == other[$left] && this[$top] == other[$top] && this[$right] == other[$right] && this[$bottom] == other[$bottom];
      }
      get hashCode() {
        return math._JenkinsSmiHash.hash4(dart.hashCode(this[$left]), dart.hashCode(this[$top]), dart.hashCode(this[$right]), dart.hashCode(this[$bottom]));
      }
      intersection(other) {
        RectangleOfT()._check(other);
        let x0 = math.max(T, this[$left], other[$left]);
        let x1 = math.min(T, dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(other[$left]) + dart.notNull(other[$width]));
        if (x0 <= x1) {
          let y0 = math.max(T, this[$top], other[$top]);
          let y1 = math.min(T, dart.notNull(this[$top]) + dart.notNull(this[$height]), dart.notNull(other[$top]) + dart.notNull(other[$height]));
          if (y0 <= y1) {
            return new (RectangleOfT()).new(x0, y0, x1 - x0, y1 - y0);
          }
        }
        return null;
      }
      intersects(other) {
        return dart.notNull(this[$left]) <= dart.notNull(other[$left]) + dart.notNull(other[$width]) && dart.notNull(other[$left]) <= dart.notNull(this[$left]) + dart.notNull(this[$width]) && dart.notNull(this[$top]) <= dart.notNull(other[$top]) + dart.notNull(other[$height]) && dart.notNull(other[$top]) <= dart.notNull(this[$top]) + dart.notNull(this[$height]);
      }
      boundingBox(other) {
        RectangleOfT()._check(other);
        let right = math.max(T, dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(other[$left]) + dart.notNull(other[$width]));
        let bottom = math.max(T, dart.notNull(this[$top]) + dart.notNull(this[$height]), dart.notNull(other[$top]) + dart.notNull(other[$height]));
        let left = math.min(T, this[$left], other[$left]);
        let top = math.min(T, this[$top], other[$top]);
        return new (RectangleOfT()).new(left, top, right - left, bottom - top);
      }
      containsRectangle(another) {
        return dart.notNull(this[$left]) <= dart.notNull(another[$left]) && dart.notNull(this[$left]) + dart.notNull(this[$width]) >= dart.notNull(another[$left]) + dart.notNull(another[$width]) && dart.notNull(this[$top]) <= dart.notNull(another[$top]) && dart.notNull(this[$top]) + dart.notNull(this[$height]) >= dart.notNull(another[$top]) + dart.notNull(another[$height]);
      }
      containsPoint(another) {
        return dart.notNull(another.x) >= dart.notNull(this[$left]) && dart.notNull(another.x) <= dart.notNull(this[$left]) + dart.notNull(this[$width]) && dart.notNull(another.y) >= dart.notNull(this[$top]) && dart.notNull(another.y) <= dart.notNull(this[$top]) + dart.notNull(this[$height]);
      }
      get topLeft() {
        return new (PointOfT()).new(this[$left], this[$top]);
      }
      get topRight() {
        return new (PointOfT()).new(dart.notNull(this[$left]) + dart.notNull(this[$width]), this[$top]);
      }
      get bottomRight() {
        return new (PointOfT()).new(dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(this[$top]) + dart.notNull(this[$height]));
      }
      get bottomLeft() {
        return new (PointOfT()).new(this[$left], dart.notNull(this[$top]) + dart.notNull(this[$height]));
      }
    }
    (_RectangleBase.new = function() {
    }).prototype = _RectangleBase.prototype;
    dart.addTypeTests(_RectangleBase);
    _RectangleBase.prototype[_is__RectangleBase_default] = true;
    dart.setMethodSignature(_RectangleBase, () => ({
      __proto__: dart.getMethods(_RectangleBase.__proto__),
      toString: dart.fnType(core.String, []),
      [$toString]: dart.fnType(core.String, []),
      _equals: dart.fnType(core.bool, [dart.dynamic]),
      [$_equals]: dart.fnType(core.bool, [dart.dynamic]),
      intersection: dart.fnType(math.Rectangle$(T), [core.Object]),
      [$intersection]: dart.fnType(math.Rectangle$(T), [core.Object]),
      intersects: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
      [$intersects]: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
      boundingBox: dart.fnType(math.Rectangle$(T), [core.Object]),
      [$boundingBox]: dart.fnType(math.Rectangle$(T), [core.Object]),
      containsRectangle: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
      [$containsRectangle]: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
      containsPoint: dart.fnType(core.bool, [math.Point$(core.num)]),
      [$containsPoint]: dart.fnType(core.bool, [math.Point$(core.num)])
    }));
    dart.setGetterSignature(_RectangleBase, () => ({
      __proto__: dart.getGetters(_RectangleBase.__proto__),
      right: T,
      [$right]: T,
      bottom: T,
      [$bottom]: T,
      hashCode: core.int,
      [$hashCode]: core.int,
      topLeft: math.Point$(T),
      [$topLeft]: math.Point$(T),
      topRight: math.Point$(T),
      [$topRight]: math.Point$(T),
      bottomRight: math.Point$(T),
      [$bottomRight]: math.Point$(T),
      bottomLeft: math.Point$(T),
      [$bottomLeft]: math.Point$(T)
    }));
    dart.defineExtensionMethods(_RectangleBase, [
      'toString',
      '_equals',
      'intersection',
      'intersects',
      'boundingBox',
      'containsRectangle',
      'containsPoint'
    ]);
    dart.defineExtensionAccessors(_RectangleBase, [
      'right',
      'bottom',
      'hashCode',
      'topLeft',
      'topRight',
      'bottomRight',
      'bottomLeft'
    ]);
    return _RectangleBase;
  });
  math._RectangleBase = math._RectangleBase$();
  dart.addTypeTests(math._RectangleBase, _is__RectangleBase_default);
  const _is_Rectangle_default = Symbol('_is_Rectangle_default');
  math.Rectangle$ = dart.generic(T => {
    let RectangleOfT = () => (RectangleOfT = dart.constFn(math.Rectangle$(T)))();
    class Rectangle extends math._RectangleBase$(T) {
      get left() {
        return this[left$];
      }
      set left(value) {
        super.left = value;
      }
      get top() {
        return this[top$];
      }
      set top(value) {
        super.top = value;
      }
      get width() {
        return this[width$];
      }
      set width(value) {
        super.width = value;
      }
      get height() {
        return this[height$];
      }
      set height(value) {
        super.height = value;
      }
      static fromPoints(a, b) {
        let left = math.min(T, a.x, b.x);
        let width = math.max(T, a.x, b.x) - left;
        let top = math.min(T, a.y, b.y);
        let height = math.max(T, a.y, b.y) - top;
        return new (RectangleOfT()).new(left, top, width, height);
      }
    }
    (Rectangle.new = function(left, top, width, height) {
      this[left$] = left;
      this[top$] = top;
      this[width$] = dart.notNull(width) < 0 ? -dart.notNull(width) * 0 : width;
      this[height$] = dart.notNull(height) < 0 ? -dart.notNull(height) * 0 : height;
      Rectangle.__proto__.new.call(this);
    }).prototype = Rectangle.prototype;
    dart.addTypeTests(Rectangle);
    Rectangle.prototype[_is_Rectangle_default] = true;
    const left$ = Symbol("Rectangle.left");
    const top$ = Symbol("Rectangle.top");
    const width$ = Symbol("Rectangle.width");
    const height$ = Symbol("Rectangle.height");
    dart.setFieldSignature(Rectangle, () => ({
      __proto__: dart.getFields(Rectangle.__proto__),
      left: dart.finalFieldType(T),
      top: dart.finalFieldType(T),
      width: dart.finalFieldType(T),
      height: dart.finalFieldType(T)
    }));
    dart.defineExtensionAccessors(Rectangle, ['left', 'top', 'width', 'height']);
    return Rectangle;
  });
  math.Rectangle = math.Rectangle$();
  dart.addTypeTests(math.Rectangle, _is_Rectangle_default);
  const _width = Symbol('_width');
  const _height = Symbol('_height');
  const _is_MutableRectangle_default = Symbol('_is_MutableRectangle_default');
  math.MutableRectangle$ = dart.generic(T => {
    let MutableRectangleOfT = () => (MutableRectangleOfT = dart.constFn(math.MutableRectangle$(T)))();
    let RectangleOfT = () => (RectangleOfT = dart.constFn(math.Rectangle$(T)))();
    class MutableRectangle extends math._RectangleBase$(T) {
      get left() {
        return this[left$];
      }
      set left(value) {
        this[left$] = T._check(value);
      }
      get top() {
        return this[top$];
      }
      set top(value) {
        this[top$] = T._check(value);
      }
      static fromPoints(a, b) {
        let left = math.min(T, a.x, b.x);
        let width = math.max(T, a.x, b.x) - left;
        let top = math.min(T, a.y, b.y);
        let height = math.max(T, a.y, b.y) - top;
        return new (MutableRectangleOfT()).new(left, top, width, height);
      }
      get width() {
        return this[_width];
      }
      set width(width) {
        T._check(width);
        if (dart.notNull(width) < 0) width = math._clampToZero(T, width);
        this[_width] = width;
      }
      get height() {
        return this[_height];
      }
      set height(height) {
        T._check(height);
        if (dart.notNull(height) < 0) height = math._clampToZero(T, height);
        this[_height] = height;
      }
    }
    (MutableRectangle.new = function(left, top, width, height) {
      this[left$] = left;
      this[top$] = top;
      this[_width] = dart.notNull(width) < 0 ? math._clampToZero(T, width) : width;
      this[_height] = dart.notNull(height) < 0 ? math._clampToZero(T, height) : height;
      MutableRectangle.__proto__.new.call(this);
    }).prototype = MutableRectangle.prototype;
    dart.addTypeTests(MutableRectangle);
    MutableRectangle.prototype[_is_MutableRectangle_default] = true;
    const left$ = Symbol("MutableRectangle.left");
    const top$ = Symbol("MutableRectangle.top");
    MutableRectangle[dart.implements] = () => [RectangleOfT()];
    dart.setGetterSignature(MutableRectangle, () => ({
      __proto__: dart.getGetters(MutableRectangle.__proto__),
      width: T,
      [$width]: T,
      height: T,
      [$height]: T
    }));
    dart.setSetterSignature(MutableRectangle, () => ({
      __proto__: dart.getSetters(MutableRectangle.__proto__),
      width: T,
      [$width]: T,
      height: T,
      [$height]: T
    }));
    dart.setFieldSignature(MutableRectangle, () => ({
      __proto__: dart.getFields(MutableRectangle.__proto__),
      left: dart.fieldType(T),
      top: dart.fieldType(T),
      [_width]: dart.fieldType(T),
      [_height]: dart.fieldType(T)
    }));
    dart.defineExtensionAccessors(MutableRectangle, ['width', 'height', 'left', 'top']);
    return MutableRectangle;
  });
  math.MutableRectangle = math.MutableRectangle$();
  dart.addTypeTests(math.MutableRectangle, _is_MutableRectangle_default);
  math._clampToZero = function(T, value) {
    if (!(dart.notNull(value) < 0)) dart.assertFailed();
    return -dart.notNull(value) * 0;
  };
  mirrors.MirrorSystem = class MirrorSystem extends core.Object {
    findLibrary(libraryName) {
      return this.libraries[$values][$singleWhere](dart.fn(library => dart.equals(library.simpleName, libraryName), LibraryMirrorTobool()));
    }
    static getName(symbol) {
      return _js_mirrors.getName(symbol);
    }
    static getSymbol(name, library) {
      if (library === void 0) library = null;
      return _js_mirrors.getSymbol(name, library);
    }
  };
  (mirrors.MirrorSystem.new = function() {
  }).prototype = mirrors.MirrorSystem.prototype;
  dart.addTypeTests(mirrors.MirrorSystem);
  dart.setMethodSignature(mirrors.MirrorSystem, () => ({
    __proto__: dart.getMethods(mirrors.MirrorSystem.__proto__),
    findLibrary: dart.fnType(mirrors.LibraryMirror, [core.Symbol])
  }));
  mirrors.currentMirrorSystem = function() {
    return _js_mirrors.currentJsMirrorSystem;
  };
  mirrors.reflect = function(reflectee) {
    return _js_mirrors.reflect(reflectee);
  };
  mirrors.reflectClass = function(key) {
    if (!core.Type.is(key) || dart.equals(key, dart.wrapType(dart.dynamic))) {
      dart.throw(new core.ArgumentError.new(dart.str(key) + " does not denote a class"));
    }
    let tm = mirrors.reflectType(key);
    if (!mirrors.ClassMirror.is(tm)) {
      dart.throw(new core.ArgumentError.new(dart.str(key) + " does not denote a class"));
    }
    return mirrors.ClassMirror._check(mirrors.ClassMirror.as(tm).originalDeclaration);
  };
  mirrors.reflectType = function(type, typeArguments) {
    if (typeArguments === void 0) typeArguments = null;
    if (typeArguments != null) {
      type = mirrors._instantiateClass(type, typeArguments);
    }
    return _js_mirrors.reflectType(type);
  };
  mirrors.Mirror = class Mirror extends core.Object {};
  (mirrors.Mirror.new = function() {
  }).prototype = mirrors.Mirror.prototype;
  dart.addTypeTests(mirrors.Mirror);
  mirrors.IsolateMirror = class IsolateMirror extends core.Object {};
  (mirrors.IsolateMirror.new = function() {
  }).prototype = mirrors.IsolateMirror.prototype;
  dart.addTypeTests(mirrors.IsolateMirror);
  mirrors.IsolateMirror[dart.implements] = () => [mirrors.Mirror];
  mirrors.DeclarationMirror = class DeclarationMirror extends core.Object {};
  (mirrors.DeclarationMirror.new = function() {
  }).prototype = mirrors.DeclarationMirror.prototype;
  dart.addTypeTests(mirrors.DeclarationMirror);
  mirrors.DeclarationMirror[dart.implements] = () => [mirrors.Mirror];
  mirrors.ObjectMirror = class ObjectMirror extends core.Object {};
  (mirrors.ObjectMirror.new = function() {
  }).prototype = mirrors.ObjectMirror.prototype;
  dart.addTypeTests(mirrors.ObjectMirror);
  mirrors.ObjectMirror[dart.implements] = () => [mirrors.Mirror];
  mirrors.InstanceMirror = class InstanceMirror extends core.Object {};
  (mirrors.InstanceMirror.new = function() {
  }).prototype = mirrors.InstanceMirror.prototype;
  dart.addTypeTests(mirrors.InstanceMirror);
  mirrors.InstanceMirror[dart.implements] = () => [mirrors.ObjectMirror];
  mirrors.ClosureMirror = class ClosureMirror extends core.Object {};
  (mirrors.ClosureMirror.new = function() {
  }).prototype = mirrors.ClosureMirror.prototype;
  dart.addTypeTests(mirrors.ClosureMirror);
  mirrors.ClosureMirror[dart.implements] = () => [mirrors.InstanceMirror];
  mirrors.LibraryMirror = class LibraryMirror extends core.Object {};
  (mirrors.LibraryMirror.new = function() {
  }).prototype = mirrors.LibraryMirror.prototype;
  dart.addTypeTests(mirrors.LibraryMirror);
  mirrors.LibraryMirror[dart.implements] = () => [mirrors.DeclarationMirror, mirrors.ObjectMirror];
  mirrors.LibraryDependencyMirror = class LibraryDependencyMirror extends core.Object {};
  (mirrors.LibraryDependencyMirror.new = function() {
  }).prototype = mirrors.LibraryDependencyMirror.prototype;
  dart.addTypeTests(mirrors.LibraryDependencyMirror);
  mirrors.LibraryDependencyMirror[dart.implements] = () => [mirrors.Mirror];
  mirrors.CombinatorMirror = class CombinatorMirror extends core.Object {};
  (mirrors.CombinatorMirror.new = function() {
  }).prototype = mirrors.CombinatorMirror.prototype;
  dart.addTypeTests(mirrors.CombinatorMirror);
  mirrors.CombinatorMirror[dart.implements] = () => [mirrors.Mirror];
  mirrors.TypeMirror = class TypeMirror extends core.Object {};
  (mirrors.TypeMirror.new = function() {
  }).prototype = mirrors.TypeMirror.prototype;
  dart.addTypeTests(mirrors.TypeMirror);
  mirrors.TypeMirror[dart.implements] = () => [mirrors.DeclarationMirror];
  mirrors.ClassMirror = class ClassMirror extends core.Object {};
  (mirrors.ClassMirror.new = function() {
  }).prototype = mirrors.ClassMirror.prototype;
  dart.addTypeTests(mirrors.ClassMirror);
  mirrors.ClassMirror[dart.implements] = () => [mirrors.TypeMirror, mirrors.ObjectMirror];
  mirrors.FunctionTypeMirror = class FunctionTypeMirror extends core.Object {};
  (mirrors.FunctionTypeMirror.new = function() {
  }).prototype = mirrors.FunctionTypeMirror.prototype;
  dart.addTypeTests(mirrors.FunctionTypeMirror);
  mirrors.FunctionTypeMirror[dart.implements] = () => [mirrors.ClassMirror];
  mirrors.TypeVariableMirror = class TypeVariableMirror extends mirrors.TypeMirror {};
  (mirrors.TypeVariableMirror.new = function() {
  }).prototype = mirrors.TypeVariableMirror.prototype;
  dart.addTypeTests(mirrors.TypeVariableMirror);
  mirrors.TypedefMirror = class TypedefMirror extends core.Object {};
  (mirrors.TypedefMirror.new = function() {
  }).prototype = mirrors.TypedefMirror.prototype;
  dart.addTypeTests(mirrors.TypedefMirror);
  mirrors.TypedefMirror[dart.implements] = () => [mirrors.TypeMirror];
  mirrors.MethodMirror = class MethodMirror extends core.Object {};
  (mirrors.MethodMirror.new = function() {
  }).prototype = mirrors.MethodMirror.prototype;
  dart.addTypeTests(mirrors.MethodMirror);
  mirrors.MethodMirror[dart.implements] = () => [mirrors.DeclarationMirror];
  mirrors.VariableMirror = class VariableMirror extends core.Object {};
  (mirrors.VariableMirror.new = function() {
  }).prototype = mirrors.VariableMirror.prototype;
  dart.addTypeTests(mirrors.VariableMirror);
  mirrors.VariableMirror[dart.implements] = () => [mirrors.DeclarationMirror];
  mirrors.ParameterMirror = class ParameterMirror extends core.Object {};
  (mirrors.ParameterMirror.new = function() {
  }).prototype = mirrors.ParameterMirror.prototype;
  dart.addTypeTests(mirrors.ParameterMirror);
  mirrors.ParameterMirror[dart.implements] = () => [mirrors.VariableMirror];
  mirrors.SourceLocation = class SourceLocation extends core.Object {};
  (mirrors.SourceLocation.new = function() {
  }).prototype = mirrors.SourceLocation.prototype;
  dart.addTypeTests(mirrors.SourceLocation);
  mirrors.Comment = class Comment extends core.Object {
    get text() {
      return this[text$];
    }
    set text(value) {
      super.text = value;
    }
    get trimmedText() {
      return this[trimmedText$];
    }
    set trimmedText(value) {
      super.trimmedText = value;
    }
    get isDocComment() {
      return this[isDocComment$];
    }
    set isDocComment(value) {
      super.isDocComment = value;
    }
  };
  (mirrors.Comment.new = function(text, trimmedText, isDocComment) {
    this[text$] = text;
    this[trimmedText$] = trimmedText;
    this[isDocComment$] = isDocComment;
  }).prototype = mirrors.Comment.prototype;
  dart.addTypeTests(mirrors.Comment);
  const text$ = Symbol("Comment.text");
  const trimmedText$ = Symbol("Comment.trimmedText");
  const isDocComment$ = Symbol("Comment.isDocComment");
  dart.setFieldSignature(mirrors.Comment, () => ({
    __proto__: dart.getFields(mirrors.Comment.__proto__),
    text: dart.finalFieldType(core.String),
    trimmedText: dart.finalFieldType(core.String),
    isDocComment: dart.finalFieldType(core.bool)
  }));
  mirrors.MirrorsUsed = class MirrorsUsed extends core.Object {
    get symbols() {
      return this[symbols$];
    }
    set symbols(value) {
      super.symbols = value;
    }
    get targets() {
      return this[targets$];
    }
    set targets(value) {
      super.targets = value;
    }
    get metaTargets() {
      return this[metaTargets$];
    }
    set metaTargets(value) {
      super.metaTargets = value;
    }
    get override() {
      return this[override$];
    }
    set override(value) {
      super.override = value;
    }
  };
  (mirrors.MirrorsUsed.new = function(opts) {
    let symbols = opts && 'symbols' in opts ? opts.symbols : null;
    let targets = opts && 'targets' in opts ? opts.targets : null;
    let metaTargets = opts && 'metaTargets' in opts ? opts.metaTargets : null;
    let override = opts && 'override' in opts ? opts.override : null;
    this[symbols$] = symbols;
    this[targets$] = targets;
    this[metaTargets$] = metaTargets;
    this[override$] = override;
  }).prototype = mirrors.MirrorsUsed.prototype;
  dart.addTypeTests(mirrors.MirrorsUsed);
  const symbols$ = Symbol("MirrorsUsed.symbols");
  const targets$ = Symbol("MirrorsUsed.targets");
  const metaTargets$ = Symbol("MirrorsUsed.metaTargets");
  const override$ = Symbol("MirrorsUsed.override");
  dart.setFieldSignature(mirrors.MirrorsUsed, () => ({
    __proto__: dart.getFields(mirrors.MirrorsUsed.__proto__),
    symbols: dart.finalFieldType(dart.dynamic),
    targets: dart.finalFieldType(dart.dynamic),
    metaTargets: dart.finalFieldType(dart.dynamic),
    override: dart.finalFieldType(dart.dynamic)
  }));
  mirrors._instantiateClass = function(type, typeArguments) {
    let unwrapped = dart.unwrapType(type);
    let genericClass = dart.getGenericClass(unwrapped);
    if (genericClass == null) {
      dart.throw(new core.ArgumentError.new("Type `" + dart.str(type) + "` must be generic to apply " + ("type arguments: `" + dart.str(typeArguments) + "`.")));
    }
    let typeArgsLenth = typeArguments[$length];
    let unwrappedArgs = core.List.new(typeArgsLenth);
    for (let i = 0; i < dart.notNull(typeArgsLenth); i++) {
      unwrappedArgs[$_set](i, dart.unwrapType(typeArguments[$_get](i)));
    }
    let typeFormals = dart.getGenericTypeFormals(genericClass);
    if (typeFormals[$length] != typeArgsLenth) {
      dart.throw(new core.ArgumentError.new("Type `" + dart.str(type) + "` has " + dart.str(typeFormals[$length]) + " type " + ("parameters, but " + dart.str(typeArgsLenth) + " type arguments were ") + ("passed: `" + dart.str(typeArguments) + "`.")));
    }
    return dart.wrapType(dart.instantiateClass(genericClass, unwrappedArgs));
  };
  typed_data.ByteBuffer = class ByteBuffer extends core.Object {};
  (typed_data.ByteBuffer.new = function() {
  }).prototype = typed_data.ByteBuffer.prototype;
  dart.addTypeTests(typed_data.ByteBuffer);
  typed_data.TypedData = class TypedData extends core.Object {};
  (typed_data.TypedData.new = function() {
  }).prototype = typed_data.TypedData.prototype;
  dart.addTypeTests(typed_data.TypedData);
  typed_data._TypedIntList = class _TypedIntList extends typed_data.TypedData {};
  (typed_data._TypedIntList.new = function() {
  }).prototype = typed_data._TypedIntList.prototype;
  dart.addTypeTests(typed_data._TypedIntList);
  typed_data._TypedFloatList = class _TypedFloatList extends typed_data.TypedData {};
  (typed_data._TypedFloatList.new = function() {
  }).prototype = typed_data._TypedFloatList.prototype;
  dart.addTypeTests(typed_data._TypedFloatList);
  const _littleEndian = Symbol('_littleEndian');
  typed_data.Endian = class Endian extends core.Object {};
  (typed_data.Endian.__ = function(littleEndian) {
    this[_littleEndian] = littleEndian;
  }).prototype = typed_data.Endian.prototype;
  dart.addTypeTests(typed_data.Endian);
  dart.setFieldSignature(typed_data.Endian, () => ({
    __proto__: dart.getFields(typed_data.Endian.__proto__),
    [_littleEndian]: dart.finalFieldType(core.bool)
  }));
  dart.defineLazy(typed_data.Endian, {
    /*typed_data.Endian.big*/get big() {
      return dart.const(new typed_data.Endian.__(false));
    },
    /*typed_data.Endian.little*/get little() {
      return dart.const(new typed_data.Endian.__(true));
    },
    /*typed_data.Endian.host*/get host() {
      return typed_data.ByteData.view(typed_data.Uint16List.fromList(JSArrayOfint().of([1]))[$buffer])[$getInt8](0) === 1 ? typed_data.Endian.little : typed_data.Endian.big;
    }
  });
  typed_data.ByteData = class ByteData extends core.Object {
    static new(length) {
      return _native_typed_data.NativeByteData.new(length);
    }
    static view(buffer, offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return buffer[$asByteData](offsetInBytes, length);
    }
  };
  (typed_data.ByteData[dart.mixinNew] = function() {
  }).prototype = typed_data.ByteData.prototype;
  dart.addTypeTests(typed_data.ByteData);
  typed_data.ByteData[dart.implements] = () => [typed_data.TypedData];
  typed_data.Int8List = class Int8List extends core.Object {
    static new(length) {
      return _native_typed_data.NativeInt8List.new(length);
    }
    static fromList(elements) {
      return _native_typed_data.NativeInt8List.fromList(elements);
    }
    static view(buffer, offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return buffer[$asInt8List](offsetInBytes, length);
    }
  };
  (typed_data.Int8List[dart.mixinNew] = function() {
  }).prototype = typed_data.Int8List.prototype;
  typed_data.Int8List.prototype[dart.isList] = true;
  dart.addTypeTests(typed_data.Int8List);
  typed_data.Int8List[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
  dart.defineLazy(typed_data.Int8List, {
    /*typed_data.Int8List.bytesPerElement*/get bytesPerElement() {
      return 1;
    }
  });
  typed_data.Uint8List = class Uint8List extends core.Object {
    static new(length) {
      return _native_typed_data.NativeUint8List.new(length);
    }
    static fromList(elements) {
      return _native_typed_data.NativeUint8List.fromList(elements);
    }
    static view(buffer, offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return buffer[$asUint8List](offsetInBytes, length);
    }
  };
  (typed_data.Uint8List[dart.mixinNew] = function() {
  }).prototype = typed_data.Uint8List.prototype;
  typed_data.Uint8List.prototype[dart.isList] = true;
  dart.addTypeTests(typed_data.Uint8List);
  typed_data.Uint8List[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
  dart.defineLazy(typed_data.Uint8List, {
    /*typed_data.Uint8List.bytesPerElement*/get bytesPerElement() {
      return 1;
    }
  });
  typed_data.Uint8ClampedList = class Uint8ClampedList extends core.Object {
    static new(length) {
      return _native_typed_data.NativeUint8ClampedList.new(length);
    }
    static fromList(elements) {
      return _native_typed_data.NativeUint8ClampedList.fromList(elements);
    }
    static view(buffer, offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return buffer[$asUint8ClampedList](offsetInBytes, length);
    }
  };
  (typed_data.Uint8ClampedList[dart.mixinNew] = function() {
  }).prototype = typed_data.Uint8ClampedList.prototype;
  typed_data.Uint8ClampedList.prototype[dart.isList] = true;
  dart.addTypeTests(typed_data.Uint8ClampedList);
  typed_data.Uint8ClampedList[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
  dart.defineLazy(typed_data.Uint8ClampedList, {
    /*typed_data.Uint8ClampedList.bytesPerElement*/get bytesPerElement() {
      return 1;
    }
  });
  typed_data.Int16List = class Int16List extends core.Object {
    static new(length) {
      return _native_typed_data.NativeInt16List.new(length);
    }
    static fromList(elements) {
      return _native_typed_data.NativeInt16List.fromList(elements);
    }
    static view(buffer, offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return buffer[$asInt16List](offsetInBytes, length);
    }
  };
  (typed_data.Int16List[dart.mixinNew] = function() {
  }).prototype = typed_data.Int16List.prototype;
  typed_data.Int16List.prototype[dart.isList] = true;
  dart.addTypeTests(typed_data.Int16List);
  typed_data.Int16List[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
  dart.defineLazy(typed_data.Int16List, {
    /*typed_data.Int16List.bytesPerElement*/get bytesPerElement() {
      return 2;
    }
  });
  typed_data.Uint16List = class Uint16List extends core.Object {
    static new(length) {
      return _native_typed_data.NativeUint16List.new(length);
    }
    static fromList(elements) {
      return _native_typed_data.NativeUint16List.fromList(elements);
    }
    static view(buffer, offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return buffer[$asUint16List](offsetInBytes, length);
    }
  };
  (typed_data.Uint16List[dart.mixinNew] = function() {
  }).prototype = typed_data.Uint16List.prototype;
  typed_data.Uint16List.prototype[dart.isList] = true;
  dart.addTypeTests(typed_data.Uint16List);
  typed_data.Uint16List[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
  dart.defineLazy(typed_data.Uint16List, {
    /*typed_data.Uint16List.bytesPerElement*/get bytesPerElement() {
      return 2;
    }
  });
  typed_data.Int32List = class Int32List extends core.Object {
    static new(length) {
      return _native_typed_data.NativeInt32List.new(length);
    }
    static fromList(elements) {
      return _native_typed_data.NativeInt32List.fromList(elements);
    }
    static view(buffer, offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return buffer[$asInt32List](offsetInBytes, length);
    }
  };
  (typed_data.Int32List[dart.mixinNew] = function() {
  }).prototype = typed_data.Int32List.prototype;
  typed_data.Int32List.prototype[dart.isList] = true;
  dart.addTypeTests(typed_data.Int32List);
  typed_data.Int32List[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
  dart.defineLazy(typed_data.Int32List, {
    /*typed_data.Int32List.bytesPerElement*/get bytesPerElement() {
      return 4;
    }
  });
  typed_data.Uint32List = class Uint32List extends core.Object {
    static new(length) {
      return _native_typed_data.NativeUint32List.new(length);
    }
    static fromList(elements) {
      return _native_typed_data.NativeUint32List.fromList(elements);
    }
    static view(buffer, offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return buffer[$asUint32List](offsetInBytes, length);
    }
  };
  (typed_data.Uint32List[dart.mixinNew] = function() {
  }).prototype = typed_data.Uint32List.prototype;
  typed_data.Uint32List.prototype[dart.isList] = true;
  dart.addTypeTests(typed_data.Uint32List);
  typed_data.Uint32List[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
  dart.defineLazy(typed_data.Uint32List, {
    /*typed_data.Uint32List.bytesPerElement*/get bytesPerElement() {
      return 4;
    }
  });
  typed_data.Int64List = class Int64List extends core.Object {
    static new(length) {
      dart.throw(new core.UnsupportedError.new("Int64List not supported by dart2js."));
    }
    static fromList(elements) {
      dart.throw(new core.UnsupportedError.new("Int64List not supported by dart2js."));
    }
    static view(buffer, offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return buffer[$asInt64List](offsetInBytes, length);
    }
  };
  (typed_data.Int64List[dart.mixinNew] = function() {
  }).prototype = typed_data.Int64List.prototype;
  typed_data.Int64List.prototype[dart.isList] = true;
  dart.addTypeTests(typed_data.Int64List);
  typed_data.Int64List[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
  dart.defineLazy(typed_data.Int64List, {
    /*typed_data.Int64List.bytesPerElement*/get bytesPerElement() {
      return 8;
    }
  });
  typed_data.Uint64List = class Uint64List extends core.Object {
    static new(length) {
      dart.throw(new core.UnsupportedError.new("Uint64List not supported by dart2js."));
    }
    static fromList(elements) {
      dart.throw(new core.UnsupportedError.new("Uint64List not supported by dart2js."));
    }
    static view(buffer, offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return buffer[$asUint64List](offsetInBytes, length);
    }
  };
  (typed_data.Uint64List[dart.mixinNew] = function() {
  }).prototype = typed_data.Uint64List.prototype;
  typed_data.Uint64List.prototype[dart.isList] = true;
  dart.addTypeTests(typed_data.Uint64List);
  typed_data.Uint64List[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
  dart.defineLazy(typed_data.Uint64List, {
    /*typed_data.Uint64List.bytesPerElement*/get bytesPerElement() {
      return 8;
    }
  });
  typed_data.Float32List = class Float32List extends core.Object {
    static new(length) {
      return _native_typed_data.NativeFloat32List.new(length);
    }
    static fromList(elements) {
      return _native_typed_data.NativeFloat32List.fromList(elements);
    }
    static view(buffer, offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return buffer[$asFloat32List](offsetInBytes, length);
    }
  };
  (typed_data.Float32List[dart.mixinNew] = function() {
  }).prototype = typed_data.Float32List.prototype;
  typed_data.Float32List.prototype[dart.isList] = true;
  dart.addTypeTests(typed_data.Float32List);
  typed_data.Float32List[dart.implements] = () => [ListOfdouble(), typed_data._TypedFloatList];
  dart.defineLazy(typed_data.Float32List, {
    /*typed_data.Float32List.bytesPerElement*/get bytesPerElement() {
      return 4;
    }
  });
  typed_data.Float64List = class Float64List extends core.Object {
    static new(length) {
      return _native_typed_data.NativeFloat64List.new(length);
    }
    static fromList(elements) {
      return _native_typed_data.NativeFloat64List.fromList(elements);
    }
    static view(buffer, offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return buffer[$asFloat64List](offsetInBytes, length);
    }
  };
  (typed_data.Float64List[dart.mixinNew] = function() {
  }).prototype = typed_data.Float64List.prototype;
  typed_data.Float64List.prototype[dart.isList] = true;
  dart.addTypeTests(typed_data.Float64List);
  typed_data.Float64List[dart.implements] = () => [ListOfdouble(), typed_data._TypedFloatList];
  dart.defineLazy(typed_data.Float64List, {
    /*typed_data.Float64List.bytesPerElement*/get bytesPerElement() {
      return 8;
    }
  });
  typed_data.Float32x4List = class Float32x4List extends core.Object {
    static new(length) {
      return new _native_typed_data.NativeFloat32x4List.new(length);
    }
    static fromList(elements) {
      return _native_typed_data.NativeFloat32x4List.fromList(elements);
    }
    static view(buffer, offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return buffer[$asFloat32x4List](offsetInBytes, length);
    }
  };
  (typed_data.Float32x4List[dart.mixinNew] = function() {
  }).prototype = typed_data.Float32x4List.prototype;
  typed_data.Float32x4List.prototype[dart.isList] = true;
  dart.addTypeTests(typed_data.Float32x4List);
  typed_data.Float32x4List[dart.implements] = () => [ListOfFloat32x4(), typed_data.TypedData];
  dart.defineLazy(typed_data.Float32x4List, {
    /*typed_data.Float32x4List.bytesPerElement*/get bytesPerElement() {
      return 16;
    }
  });
  typed_data.Int32x4List = class Int32x4List extends core.Object {
    static new(length) {
      return new _native_typed_data.NativeInt32x4List.new(length);
    }
    static fromList(elements) {
      return _native_typed_data.NativeInt32x4List.fromList(elements);
    }
    static view(buffer, offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return buffer[$asInt32x4List](offsetInBytes, length);
    }
  };
  (typed_data.Int32x4List[dart.mixinNew] = function() {
  }).prototype = typed_data.Int32x4List.prototype;
  typed_data.Int32x4List.prototype[dart.isList] = true;
  dart.addTypeTests(typed_data.Int32x4List);
  typed_data.Int32x4List[dart.implements] = () => [ListOfInt32x4(), typed_data.TypedData];
  dart.defineLazy(typed_data.Int32x4List, {
    /*typed_data.Int32x4List.bytesPerElement*/get bytesPerElement() {
      return 16;
    }
  });
  typed_data.Float64x2List = class Float64x2List extends core.Object {
    static new(length) {
      return new _native_typed_data.NativeFloat64x2List.new(length);
    }
    static fromList(elements) {
      return _native_typed_data.NativeFloat64x2List.fromList(elements);
    }
    static view(buffer, offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return buffer[$asFloat64x2List](offsetInBytes, length);
    }
  };
  (typed_data.Float64x2List[dart.mixinNew] = function() {
  }).prototype = typed_data.Float64x2List.prototype;
  typed_data.Float64x2List.prototype[dart.isList] = true;
  dart.addTypeTests(typed_data.Float64x2List);
  typed_data.Float64x2List[dart.implements] = () => [ListOfFloat64x2(), typed_data.TypedData];
  dart.defineLazy(typed_data.Float64x2List, {
    /*typed_data.Float64x2List.bytesPerElement*/get bytesPerElement() {
      return 16;
    }
  });
  const _data$0 = Symbol('_data');
  typed_data.UnmodifiableByteBufferView = class UnmodifiableByteBufferView extends core.Object {
    get lengthInBytes() {
      return this[_data$0][$lengthInBytes];
    }
    asUint8List(offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return new typed_data.UnmodifiableUint8ListView.new(this[_data$0][$asUint8List](offsetInBytes, length));
    }
    asInt8List(offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return new typed_data.UnmodifiableInt8ListView.new(this[_data$0][$asInt8List](offsetInBytes, length));
    }
    asUint8ClampedList(offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return new typed_data.UnmodifiableUint8ClampedListView.new(this[_data$0][$asUint8ClampedList](offsetInBytes, length));
    }
    asUint16List(offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return new typed_data.UnmodifiableUint16ListView.new(this[_data$0][$asUint16List](offsetInBytes, length));
    }
    asInt16List(offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return new typed_data.UnmodifiableInt16ListView.new(this[_data$0][$asInt16List](offsetInBytes, length));
    }
    asUint32List(offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return new typed_data.UnmodifiableUint32ListView.new(this[_data$0][$asUint32List](offsetInBytes, length));
    }
    asInt32List(offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return new typed_data.UnmodifiableInt32ListView.new(this[_data$0][$asInt32List](offsetInBytes, length));
    }
    asUint64List(offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return new typed_data.UnmodifiableUint64ListView.new(this[_data$0][$asUint64List](offsetInBytes, length));
    }
    asInt64List(offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return new typed_data.UnmodifiableInt64ListView.new(this[_data$0][$asInt64List](offsetInBytes, length));
    }
    asInt32x4List(offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return new typed_data.UnmodifiableInt32x4ListView.new(this[_data$0][$asInt32x4List](offsetInBytes, length));
    }
    asFloat32List(offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return new typed_data.UnmodifiableFloat32ListView.new(this[_data$0][$asFloat32List](offsetInBytes, length));
    }
    asFloat64List(offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return new typed_data.UnmodifiableFloat64ListView.new(this[_data$0][$asFloat64List](offsetInBytes, length));
    }
    asFloat32x4List(offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return new typed_data.UnmodifiableFloat32x4ListView.new(this[_data$0][$asFloat32x4List](offsetInBytes, length));
    }
    asFloat64x2List(offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return new typed_data.UnmodifiableFloat64x2ListView.new(this[_data$0][$asFloat64x2List](offsetInBytes, length));
    }
    asByteData(offsetInBytes, length) {
      if (offsetInBytes === void 0) offsetInBytes = 0;
      if (length === void 0) length = null;
      return new typed_data.UnmodifiableByteDataView.new(this[_data$0][$asByteData](offsetInBytes, length));
    }
  };
  (typed_data.UnmodifiableByteBufferView.new = function(data) {
    this[_data$0] = data;
  }).prototype = typed_data.UnmodifiableByteBufferView.prototype;
  dart.addTypeTests(typed_data.UnmodifiableByteBufferView);
  typed_data.UnmodifiableByteBufferView[dart.implements] = () => [typed_data.ByteBuffer];
  dart.setMethodSignature(typed_data.UnmodifiableByteBufferView, () => ({
    __proto__: dart.getMethods(typed_data.UnmodifiableByteBufferView.__proto__),
    asUint8List: dart.fnType(typed_data.Uint8List, [], [core.int, core.int]),
    [$asUint8List]: dart.fnType(typed_data.Uint8List, [], [core.int, core.int]),
    asInt8List: dart.fnType(typed_data.Int8List, [], [core.int, core.int]),
    [$asInt8List]: dart.fnType(typed_data.Int8List, [], [core.int, core.int]),
    asUint8ClampedList: dart.fnType(typed_data.Uint8ClampedList, [], [core.int, core.int]),
    [$asUint8ClampedList]: dart.fnType(typed_data.Uint8ClampedList, [], [core.int, core.int]),
    asUint16List: dart.fnType(typed_data.Uint16List, [], [core.int, core.int]),
    [$asUint16List]: dart.fnType(typed_data.Uint16List, [], [core.int, core.int]),
    asInt16List: dart.fnType(typed_data.Int16List, [], [core.int, core.int]),
    [$asInt16List]: dart.fnType(typed_data.Int16List, [], [core.int, core.int]),
    asUint32List: dart.fnType(typed_data.Uint32List, [], [core.int, core.int]),
    [$asUint32List]: dart.fnType(typed_data.Uint32List, [], [core.int, core.int]),
    asInt32List: dart.fnType(typed_data.Int32List, [], [core.int, core.int]),
    [$asInt32List]: dart.fnType(typed_data.Int32List, [], [core.int, core.int]),
    asUint64List: dart.fnType(typed_data.Uint64List, [], [core.int, core.int]),
    [$asUint64List]: dart.fnType(typed_data.Uint64List, [], [core.int, core.int]),
    asInt64List: dart.fnType(typed_data.Int64List, [], [core.int, core.int]),
    [$asInt64List]: dart.fnType(typed_data.Int64List, [], [core.int, core.int]),
    asInt32x4List: dart.fnType(typed_data.Int32x4List, [], [core.int, core.int]),
    [$asInt32x4List]: dart.fnType(typed_data.Int32x4List, [], [core.int, core.int]),
    asFloat32List: dart.fnType(typed_data.Float32List, [], [core.int, core.int]),
    [$asFloat32List]: dart.fnType(typed_data.Float32List, [], [core.int, core.int]),
    asFloat64List: dart.fnType(typed_data.Float64List, [], [core.int, core.int]),
    [$asFloat64List]: dart.fnType(typed_data.Float64List, [], [core.int, core.int]),
    asFloat32x4List: dart.fnType(typed_data.Float32x4List, [], [core.int, core.int]),
    [$asFloat32x4List]: dart.fnType(typed_data.Float32x4List, [], [core.int, core.int]),
    asFloat64x2List: dart.fnType(typed_data.Float64x2List, [], [core.int, core.int]),
    [$asFloat64x2List]: dart.fnType(typed_data.Float64x2List, [], [core.int, core.int]),
    asByteData: dart.fnType(typed_data.ByteData, [], [core.int, core.int]),
    [$asByteData]: dart.fnType(typed_data.ByteData, [], [core.int, core.int])
  }));
  dart.setGetterSignature(typed_data.UnmodifiableByteBufferView, () => ({
    __proto__: dart.getGetters(typed_data.UnmodifiableByteBufferView.__proto__),
    lengthInBytes: core.int,
    [$lengthInBytes]: core.int
  }));
  dart.setFieldSignature(typed_data.UnmodifiableByteBufferView, () => ({
    __proto__: dart.getFields(typed_data.UnmodifiableByteBufferView.__proto__),
    [_data$0]: dart.finalFieldType(typed_data.ByteBuffer)
  }));
  dart.defineExtensionMethods(typed_data.UnmodifiableByteBufferView, [
    'asUint8List',
    'asInt8List',
    'asUint8ClampedList',
    'asUint16List',
    'asInt16List',
    'asUint32List',
    'asInt32List',
    'asUint64List',
    'asInt64List',
    'asInt32x4List',
    'asFloat32List',
    'asFloat64List',
    'asFloat32x4List',
    'asFloat64x2List',
    'asByteData'
  ]);
  dart.defineExtensionAccessors(typed_data.UnmodifiableByteBufferView, ['lengthInBytes']);
  const _unsupported = Symbol('_unsupported');
  typed_data.UnmodifiableByteDataView = class UnmodifiableByteDataView extends core.Object {
    getInt8(byteOffset) {
      return this[_data$0][$getInt8](byteOffset);
    }
    setInt8(byteOffset, value) {
      return this[_unsupported]();
    }
    getUint8(byteOffset) {
      return this[_data$0][$getUint8](byteOffset);
    }
    setUint8(byteOffset, value) {
      return this[_unsupported]();
    }
    getInt16(byteOffset, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_data$0][$getInt16](byteOffset, endian);
    }
    setInt16(byteOffset, value, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_unsupported]();
    }
    getUint16(byteOffset, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_data$0][$getUint16](byteOffset, endian);
    }
    setUint16(byteOffset, value, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_unsupported]();
    }
    getInt32(byteOffset, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_data$0][$getInt32](byteOffset, endian);
    }
    setInt32(byteOffset, value, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_unsupported]();
    }
    getUint32(byteOffset, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_data$0][$getUint32](byteOffset, endian);
    }
    setUint32(byteOffset, value, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_unsupported]();
    }
    getInt64(byteOffset, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_data$0][$getInt64](byteOffset, endian);
    }
    setInt64(byteOffset, value, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_unsupported]();
    }
    getUint64(byteOffset, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_data$0][$getUint64](byteOffset, endian);
    }
    setUint64(byteOffset, value, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_unsupported]();
    }
    getFloat32(byteOffset, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_data$0][$getFloat32](byteOffset, endian);
    }
    setFloat32(byteOffset, value, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_unsupported]();
    }
    getFloat64(byteOffset, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_data$0][$getFloat64](byteOffset, endian);
    }
    setFloat64(byteOffset, value, endian) {
      if (endian === void 0) endian = typed_data.Endian.big;
      return this[_unsupported]();
    }
    get elementSizeInBytes() {
      return this[_data$0][$elementSizeInBytes];
    }
    get offsetInBytes() {
      return this[_data$0][$offsetInBytes];
    }
    get lengthInBytes() {
      return this[_data$0][$lengthInBytes];
    }
    get buffer() {
      return new typed_data.UnmodifiableByteBufferView.new(this[_data$0][$buffer]);
    }
    [_unsupported]() {
      dart.throw(new core.UnsupportedError.new("An UnmodifiableByteDataView may not be modified"));
    }
  };
  (typed_data.UnmodifiableByteDataView.new = function(data) {
    this[_data$0] = data;
  }).prototype = typed_data.UnmodifiableByteDataView.prototype;
  dart.addTypeTests(typed_data.UnmodifiableByteDataView);
  typed_data.UnmodifiableByteDataView[dart.implements] = () => [typed_data.ByteData];
  dart.setMethodSignature(typed_data.UnmodifiableByteDataView, () => ({
    __proto__: dart.getMethods(typed_data.UnmodifiableByteDataView.__proto__),
    getInt8: dart.fnType(core.int, [core.int]),
    [$getInt8]: dart.fnType(core.int, [core.int]),
    setInt8: dart.fnType(dart.void, [core.int, core.int]),
    [$setInt8]: dart.fnType(dart.void, [core.int, core.int]),
    getUint8: dart.fnType(core.int, [core.int]),
    [$getUint8]: dart.fnType(core.int, [core.int]),
    setUint8: dart.fnType(dart.void, [core.int, core.int]),
    [$setUint8]: dart.fnType(dart.void, [core.int, core.int]),
    getInt16: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    [$getInt16]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    setInt16: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    [$setInt16]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    getUint16: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    [$getUint16]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    setUint16: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    [$setUint16]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    getInt32: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    [$getInt32]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    setInt32: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    [$setInt32]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    getUint32: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    [$getUint32]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    setUint32: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    [$setUint32]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    getInt64: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    [$getInt64]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    setInt64: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    [$setInt64]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    getUint64: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    [$getUint64]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
    setUint64: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    [$setUint64]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
    getFloat32: dart.fnType(core.double, [core.int], [typed_data.Endian]),
    [$getFloat32]: dart.fnType(core.double, [core.int], [typed_data.Endian]),
    setFloat32: dart.fnType(dart.void, [core.int, core.double], [typed_data.Endian]),
    [$setFloat32]: dart.fnType(dart.void, [core.int, core.double], [typed_data.Endian]),
    getFloat64: dart.fnType(core.double, [core.int], [typed_data.Endian]),
    [$getFloat64]: dart.fnType(core.double, [core.int], [typed_data.Endian]),
    setFloat64: dart.fnType(dart.void, [core.int, core.double], [typed_data.Endian]),
    [$setFloat64]: dart.fnType(dart.void, [core.int, core.double], [typed_data.Endian]),
    [_unsupported]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(typed_data.UnmodifiableByteDataView, () => ({
    __proto__: dart.getGetters(typed_data.UnmodifiableByteDataView.__proto__),
    elementSizeInBytes: core.int,
    [$elementSizeInBytes]: core.int,
    offsetInBytes: core.int,
    [$offsetInBytes]: core.int,
    lengthInBytes: core.int,
    [$lengthInBytes]: core.int,
    buffer: typed_data.ByteBuffer,
    [$buffer]: typed_data.ByteBuffer
  }));
  dart.setFieldSignature(typed_data.UnmodifiableByteDataView, () => ({
    __proto__: dart.getFields(typed_data.UnmodifiableByteDataView.__proto__),
    [_data$0]: dart.finalFieldType(typed_data.ByteData)
  }));
  dart.defineExtensionMethods(typed_data.UnmodifiableByteDataView, [
    'getInt8',
    'setInt8',
    'getUint8',
    'setUint8',
    'getInt16',
    'setInt16',
    'getUint16',
    'setUint16',
    'getInt32',
    'setInt32',
    'getUint32',
    'setUint32',
    'getInt64',
    'setInt64',
    'getUint64',
    'setUint64',
    'getFloat32',
    'setFloat32',
    'getFloat64',
    'setFloat64'
  ]);
  dart.defineExtensionAccessors(typed_data.UnmodifiableByteDataView, ['elementSizeInBytes', 'offsetInBytes', 'lengthInBytes', 'buffer']);
  const _list$0 = Symbol('_list');
  const _is__UnmodifiableListMixin_default = Symbol('_is__UnmodifiableListMixin_default');
  typed_data._UnmodifiableListMixin$ = dart.generic((N, L, TD) => {
    class _UnmodifiableListMixin extends core.Object {
      get [_data$0]() {
        return TD.as(this[_list$0]);
      }
      get length() {
        return this[_list$0][$length];
      }
      _get(index) {
        return this[_list$0][$_get](index);
      }
      get elementSizeInBytes() {
        return this[_data$0][$elementSizeInBytes];
      }
      get offsetInBytes() {
        return this[_data$0][$offsetInBytes];
      }
      get lengthInBytes() {
        return this[_data$0][$lengthInBytes];
      }
      get buffer() {
        return new typed_data.UnmodifiableByteBufferView.new(this[_data$0][$buffer]);
      }
    }
    (_UnmodifiableListMixin.new = function() {
    }).prototype = _UnmodifiableListMixin.prototype;
    dart.addTypeTests(_UnmodifiableListMixin);
    _UnmodifiableListMixin.prototype[_is__UnmodifiableListMixin_default] = true;
    dart.setMethodSignature(_UnmodifiableListMixin, () => ({
      __proto__: dart.getMethods(_UnmodifiableListMixin.__proto__),
      _get: dart.fnType(N, [core.int])
    }));
    dart.setGetterSignature(_UnmodifiableListMixin, () => ({
      __proto__: dart.getGetters(_UnmodifiableListMixin.__proto__),
      [_data$0]: TD,
      length: core.int,
      elementSizeInBytes: core.int,
      offsetInBytes: core.int,
      lengthInBytes: core.int,
      buffer: typed_data.ByteBuffer
    }));
    return _UnmodifiableListMixin;
  });
  typed_data._UnmodifiableListMixin = typed_data._UnmodifiableListMixin$();
  dart.addTypeTests(typed_data._UnmodifiableListMixin, _is__UnmodifiableListMixin_default);
  const UnmodifiableListBase__UnmodifiableListMixin$ = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
  (UnmodifiableListBase__UnmodifiableListMixin$.new = function() {
  }).prototype = UnmodifiableListBase__UnmodifiableListMixin$.prototype;
  dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$, typed_data._UnmodifiableListMixin$(core.int, typed_data.Uint8List, typed_data.Uint8List));
  typed_data.UnmodifiableUint8ListView = class UnmodifiableUint8ListView extends UnmodifiableListBase__UnmodifiableListMixin$ {};
  (typed_data.UnmodifiableUint8ListView.new = function(list) {
    this[_list$0] = list;
  }).prototype = typed_data.UnmodifiableUint8ListView.prototype;
  dart.addTypeTests(typed_data.UnmodifiableUint8ListView);
  typed_data.UnmodifiableUint8ListView[dart.implements] = () => [typed_data.Uint8List];
  dart.setFieldSignature(typed_data.UnmodifiableUint8ListView, () => ({
    __proto__: dart.getFields(typed_data.UnmodifiableUint8ListView.__proto__),
    [_list$0]: dart.finalFieldType(typed_data.Uint8List)
  }));
  dart.defineExtensionMethods(typed_data.UnmodifiableUint8ListView, ['_get']);
  dart.defineExtensionAccessors(typed_data.UnmodifiableUint8ListView, [
    'length',
    'elementSizeInBytes',
    'offsetInBytes',
    'lengthInBytes',
    'buffer'
  ]);
  const UnmodifiableListBase__UnmodifiableListMixin$$ = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
  (UnmodifiableListBase__UnmodifiableListMixin$$.new = function() {
  }).prototype = UnmodifiableListBase__UnmodifiableListMixin$$.prototype;
  dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$, typed_data._UnmodifiableListMixin$(core.int, typed_data.Int8List, typed_data.Int8List));
  typed_data.UnmodifiableInt8ListView = class UnmodifiableInt8ListView extends UnmodifiableListBase__UnmodifiableListMixin$$ {};
  (typed_data.UnmodifiableInt8ListView.new = function(list) {
    this[_list$0] = list;
  }).prototype = typed_data.UnmodifiableInt8ListView.prototype;
  dart.addTypeTests(typed_data.UnmodifiableInt8ListView);
  typed_data.UnmodifiableInt8ListView[dart.implements] = () => [typed_data.Int8List];
  dart.setFieldSignature(typed_data.UnmodifiableInt8ListView, () => ({
    __proto__: dart.getFields(typed_data.UnmodifiableInt8ListView.__proto__),
    [_list$0]: dart.finalFieldType(typed_data.Int8List)
  }));
  dart.defineExtensionMethods(typed_data.UnmodifiableInt8ListView, ['_get']);
  dart.defineExtensionAccessors(typed_data.UnmodifiableInt8ListView, [
    'length',
    'elementSizeInBytes',
    'offsetInBytes',
    'lengthInBytes',
    'buffer'
  ]);
  const UnmodifiableListBase__UnmodifiableListMixin$$0 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
  (UnmodifiableListBase__UnmodifiableListMixin$$0.new = function() {
  }).prototype = UnmodifiableListBase__UnmodifiableListMixin$$0.prototype;
  dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$0, typed_data._UnmodifiableListMixin$(core.int, typed_data.Uint8ClampedList, typed_data.Uint8ClampedList));
  typed_data.UnmodifiableUint8ClampedListView = class UnmodifiableUint8ClampedListView extends UnmodifiableListBase__UnmodifiableListMixin$$0 {};
  (typed_data.UnmodifiableUint8ClampedListView.new = function(list) {
    this[_list$0] = list;
  }).prototype = typed_data.UnmodifiableUint8ClampedListView.prototype;
  dart.addTypeTests(typed_data.UnmodifiableUint8ClampedListView);
  typed_data.UnmodifiableUint8ClampedListView[dart.implements] = () => [typed_data.Uint8ClampedList];
  dart.setFieldSignature(typed_data.UnmodifiableUint8ClampedListView, () => ({
    __proto__: dart.getFields(typed_data.UnmodifiableUint8ClampedListView.__proto__),
    [_list$0]: dart.finalFieldType(typed_data.Uint8ClampedList)
  }));
  dart.defineExtensionMethods(typed_data.UnmodifiableUint8ClampedListView, ['_get']);
  dart.defineExtensionAccessors(typed_data.UnmodifiableUint8ClampedListView, [
    'length',
    'elementSizeInBytes',
    'offsetInBytes',
    'lengthInBytes',
    'buffer'
  ]);
  const UnmodifiableListBase__UnmodifiableListMixin$$1 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
  (UnmodifiableListBase__UnmodifiableListMixin$$1.new = function() {
  }).prototype = UnmodifiableListBase__UnmodifiableListMixin$$1.prototype;
  dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$1, typed_data._UnmodifiableListMixin$(core.int, typed_data.Uint16List, typed_data.Uint16List));
  typed_data.UnmodifiableUint16ListView = class UnmodifiableUint16ListView extends UnmodifiableListBase__UnmodifiableListMixin$$1 {};
  (typed_data.UnmodifiableUint16ListView.new = function(list) {
    this[_list$0] = list;
  }).prototype = typed_data.UnmodifiableUint16ListView.prototype;
  dart.addTypeTests(typed_data.UnmodifiableUint16ListView);
  typed_data.UnmodifiableUint16ListView[dart.implements] = () => [typed_data.Uint16List];
  dart.setFieldSignature(typed_data.UnmodifiableUint16ListView, () => ({
    __proto__: dart.getFields(typed_data.UnmodifiableUint16ListView.__proto__),
    [_list$0]: dart.finalFieldType(typed_data.Uint16List)
  }));
  dart.defineExtensionMethods(typed_data.UnmodifiableUint16ListView, ['_get']);
  dart.defineExtensionAccessors(typed_data.UnmodifiableUint16ListView, [
    'length',
    'elementSizeInBytes',
    'offsetInBytes',
    'lengthInBytes',
    'buffer'
  ]);
  const UnmodifiableListBase__UnmodifiableListMixin$$2 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
  (UnmodifiableListBase__UnmodifiableListMixin$$2.new = function() {
  }).prototype = UnmodifiableListBase__UnmodifiableListMixin$$2.prototype;
  dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$2, typed_data._UnmodifiableListMixin$(core.int, typed_data.Int16List, typed_data.Int16List));
  typed_data.UnmodifiableInt16ListView = class UnmodifiableInt16ListView extends UnmodifiableListBase__UnmodifiableListMixin$$2 {};
  (typed_data.UnmodifiableInt16ListView.new = function(list) {
    this[_list$0] = list;
  }).prototype = typed_data.UnmodifiableInt16ListView.prototype;
  dart.addTypeTests(typed_data.UnmodifiableInt16ListView);
  typed_data.UnmodifiableInt16ListView[dart.implements] = () => [typed_data.Int16List];
  dart.setFieldSignature(typed_data.UnmodifiableInt16ListView, () => ({
    __proto__: dart.getFields(typed_data.UnmodifiableInt16ListView.__proto__),
    [_list$0]: dart.finalFieldType(typed_data.Int16List)
  }));
  dart.defineExtensionMethods(typed_data.UnmodifiableInt16ListView, ['_get']);
  dart.defineExtensionAccessors(typed_data.UnmodifiableInt16ListView, [
    'length',
    'elementSizeInBytes',
    'offsetInBytes',
    'lengthInBytes',
    'buffer'
  ]);
  const UnmodifiableListBase__UnmodifiableListMixin$$3 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
  (UnmodifiableListBase__UnmodifiableListMixin$$3.new = function() {
  }).prototype = UnmodifiableListBase__UnmodifiableListMixin$$3.prototype;
  dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$3, typed_data._UnmodifiableListMixin$(core.int, typed_data.Uint32List, typed_data.Uint32List));
  typed_data.UnmodifiableUint32ListView = class UnmodifiableUint32ListView extends UnmodifiableListBase__UnmodifiableListMixin$$3 {};
  (typed_data.UnmodifiableUint32ListView.new = function(list) {
    this[_list$0] = list;
  }).prototype = typed_data.UnmodifiableUint32ListView.prototype;
  dart.addTypeTests(typed_data.UnmodifiableUint32ListView);
  typed_data.UnmodifiableUint32ListView[dart.implements] = () => [typed_data.Uint32List];
  dart.setFieldSignature(typed_data.UnmodifiableUint32ListView, () => ({
    __proto__: dart.getFields(typed_data.UnmodifiableUint32ListView.__proto__),
    [_list$0]: dart.finalFieldType(typed_data.Uint32List)
  }));
  dart.defineExtensionMethods(typed_data.UnmodifiableUint32ListView, ['_get']);
  dart.defineExtensionAccessors(typed_data.UnmodifiableUint32ListView, [
    'length',
    'elementSizeInBytes',
    'offsetInBytes',
    'lengthInBytes',
    'buffer'
  ]);
  const UnmodifiableListBase__UnmodifiableListMixin$$4 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
  (UnmodifiableListBase__UnmodifiableListMixin$$4.new = function() {
  }).prototype = UnmodifiableListBase__UnmodifiableListMixin$$4.prototype;
  dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$4, typed_data._UnmodifiableListMixin$(core.int, typed_data.Int32List, typed_data.Int32List));
  typed_data.UnmodifiableInt32ListView = class UnmodifiableInt32ListView extends UnmodifiableListBase__UnmodifiableListMixin$$4 {};
  (typed_data.UnmodifiableInt32ListView.new = function(list) {
    this[_list$0] = list;
  }).prototype = typed_data.UnmodifiableInt32ListView.prototype;
  dart.addTypeTests(typed_data.UnmodifiableInt32ListView);
  typed_data.UnmodifiableInt32ListView[dart.implements] = () => [typed_data.Int32List];
  dart.setFieldSignature(typed_data.UnmodifiableInt32ListView, () => ({
    __proto__: dart.getFields(typed_data.UnmodifiableInt32ListView.__proto__),
    [_list$0]: dart.finalFieldType(typed_data.Int32List)
  }));
  dart.defineExtensionMethods(typed_data.UnmodifiableInt32ListView, ['_get']);
  dart.defineExtensionAccessors(typed_data.UnmodifiableInt32ListView, [
    'length',
    'elementSizeInBytes',
    'offsetInBytes',
    'lengthInBytes',
    'buffer'
  ]);
  const UnmodifiableListBase__UnmodifiableListMixin$$5 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
  (UnmodifiableListBase__UnmodifiableListMixin$$5.new = function() {
  }).prototype = UnmodifiableListBase__UnmodifiableListMixin$$5.prototype;
  dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$5, typed_data._UnmodifiableListMixin$(core.int, typed_data.Uint64List, typed_data.Uint64List));
  typed_data.UnmodifiableUint64ListView = class UnmodifiableUint64ListView extends UnmodifiableListBase__UnmodifiableListMixin$$5 {};
  (typed_data.UnmodifiableUint64ListView.new = function(list) {
    this[_list$0] = list;
  }).prototype = typed_data.UnmodifiableUint64ListView.prototype;
  dart.addTypeTests(typed_data.UnmodifiableUint64ListView);
  typed_data.UnmodifiableUint64ListView[dart.implements] = () => [typed_data.Uint64List];
  dart.setFieldSignature(typed_data.UnmodifiableUint64ListView, () => ({
    __proto__: dart.getFields(typed_data.UnmodifiableUint64ListView.__proto__),
    [_list$0]: dart.finalFieldType(typed_data.Uint64List)
  }));
  dart.defineExtensionMethods(typed_data.UnmodifiableUint64ListView, ['_get']);
  dart.defineExtensionAccessors(typed_data.UnmodifiableUint64ListView, [
    'length',
    'elementSizeInBytes',
    'offsetInBytes',
    'lengthInBytes',
    'buffer'
  ]);
  const UnmodifiableListBase__UnmodifiableListMixin$$6 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
  (UnmodifiableListBase__UnmodifiableListMixin$$6.new = function() {
  }).prototype = UnmodifiableListBase__UnmodifiableListMixin$$6.prototype;
  dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$6, typed_data._UnmodifiableListMixin$(core.int, typed_data.Int64List, typed_data.Int64List));
  typed_data.UnmodifiableInt64ListView = class UnmodifiableInt64ListView extends UnmodifiableListBase__UnmodifiableListMixin$$6 {};
  (typed_data.UnmodifiableInt64ListView.new = function(list) {
    this[_list$0] = list;
  }).prototype = typed_data.UnmodifiableInt64ListView.prototype;
  dart.addTypeTests(typed_data.UnmodifiableInt64ListView);
  typed_data.UnmodifiableInt64ListView[dart.implements] = () => [typed_data.Int64List];
  dart.setFieldSignature(typed_data.UnmodifiableInt64ListView, () => ({
    __proto__: dart.getFields(typed_data.UnmodifiableInt64ListView.__proto__),
    [_list$0]: dart.finalFieldType(typed_data.Int64List)
  }));
  dart.defineExtensionMethods(typed_data.UnmodifiableInt64ListView, ['_get']);
  dart.defineExtensionAccessors(typed_data.UnmodifiableInt64ListView, [
    'length',
    'elementSizeInBytes',
    'offsetInBytes',
    'lengthInBytes',
    'buffer'
  ]);
  const UnmodifiableListBase__UnmodifiableListMixin$$7 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(typed_data.Int32x4) {};
  (UnmodifiableListBase__UnmodifiableListMixin$$7.new = function() {
  }).prototype = UnmodifiableListBase__UnmodifiableListMixin$$7.prototype;
  dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$7, typed_data._UnmodifiableListMixin$(typed_data.Int32x4, typed_data.Int32x4List, typed_data.Int32x4List));
  typed_data.UnmodifiableInt32x4ListView = class UnmodifiableInt32x4ListView extends UnmodifiableListBase__UnmodifiableListMixin$$7 {};
  (typed_data.UnmodifiableInt32x4ListView.new = function(list) {
    this[_list$0] = list;
  }).prototype = typed_data.UnmodifiableInt32x4ListView.prototype;
  dart.addTypeTests(typed_data.UnmodifiableInt32x4ListView);
  typed_data.UnmodifiableInt32x4ListView[dart.implements] = () => [typed_data.Int32x4List];
  dart.setFieldSignature(typed_data.UnmodifiableInt32x4ListView, () => ({
    __proto__: dart.getFields(typed_data.UnmodifiableInt32x4ListView.__proto__),
    [_list$0]: dart.finalFieldType(typed_data.Int32x4List)
  }));
  dart.defineExtensionMethods(typed_data.UnmodifiableInt32x4ListView, ['_get']);
  dart.defineExtensionAccessors(typed_data.UnmodifiableInt32x4ListView, [
    'length',
    'elementSizeInBytes',
    'offsetInBytes',
    'lengthInBytes',
    'buffer'
  ]);
  const UnmodifiableListBase__UnmodifiableListMixin$$8 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(typed_data.Float32x4) {};
  (UnmodifiableListBase__UnmodifiableListMixin$$8.new = function() {
  }).prototype = UnmodifiableListBase__UnmodifiableListMixin$$8.prototype;
  dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$8, typed_data._UnmodifiableListMixin$(typed_data.Float32x4, typed_data.Float32x4List, typed_data.Float32x4List));
  typed_data.UnmodifiableFloat32x4ListView = class UnmodifiableFloat32x4ListView extends UnmodifiableListBase__UnmodifiableListMixin$$8 {};
  (typed_data.UnmodifiableFloat32x4ListView.new = function(list) {
    this[_list$0] = list;
  }).prototype = typed_data.UnmodifiableFloat32x4ListView.prototype;
  dart.addTypeTests(typed_data.UnmodifiableFloat32x4ListView);
  typed_data.UnmodifiableFloat32x4ListView[dart.implements] = () => [typed_data.Float32x4List];
  dart.setFieldSignature(typed_data.UnmodifiableFloat32x4ListView, () => ({
    __proto__: dart.getFields(typed_data.UnmodifiableFloat32x4ListView.__proto__),
    [_list$0]: dart.finalFieldType(typed_data.Float32x4List)
  }));
  dart.defineExtensionMethods(typed_data.UnmodifiableFloat32x4ListView, ['_get']);
  dart.defineExtensionAccessors(typed_data.UnmodifiableFloat32x4ListView, [
    'length',
    'elementSizeInBytes',
    'offsetInBytes',
    'lengthInBytes',
    'buffer'
  ]);
  const UnmodifiableListBase__UnmodifiableListMixin$$9 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(typed_data.Float64x2) {};
  (UnmodifiableListBase__UnmodifiableListMixin$$9.new = function() {
  }).prototype = UnmodifiableListBase__UnmodifiableListMixin$$9.prototype;
  dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$9, typed_data._UnmodifiableListMixin$(typed_data.Float64x2, typed_data.Float64x2List, typed_data.Float64x2List));
  typed_data.UnmodifiableFloat64x2ListView = class UnmodifiableFloat64x2ListView extends UnmodifiableListBase__UnmodifiableListMixin$$9 {};
  (typed_data.UnmodifiableFloat64x2ListView.new = function(list) {
    this[_list$0] = list;
  }).prototype = typed_data.UnmodifiableFloat64x2ListView.prototype;
  dart.addTypeTests(typed_data.UnmodifiableFloat64x2ListView);
  typed_data.UnmodifiableFloat64x2ListView[dart.implements] = () => [typed_data.Float64x2List];
  dart.setFieldSignature(typed_data.UnmodifiableFloat64x2ListView, () => ({
    __proto__: dart.getFields(typed_data.UnmodifiableFloat64x2ListView.__proto__),
    [_list$0]: dart.finalFieldType(typed_data.Float64x2List)
  }));
  dart.defineExtensionMethods(typed_data.UnmodifiableFloat64x2ListView, ['_get']);
  dart.defineExtensionAccessors(typed_data.UnmodifiableFloat64x2ListView, [
    'length',
    'elementSizeInBytes',
    'offsetInBytes',
    'lengthInBytes',
    'buffer'
  ]);
  const UnmodifiableListBase__UnmodifiableListMixin$$10 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.double) {};
  (UnmodifiableListBase__UnmodifiableListMixin$$10.new = function() {
  }).prototype = UnmodifiableListBase__UnmodifiableListMixin$$10.prototype;
  dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$10, typed_data._UnmodifiableListMixin$(core.double, typed_data.Float32List, typed_data.Float32List));
  typed_data.UnmodifiableFloat32ListView = class UnmodifiableFloat32ListView extends UnmodifiableListBase__UnmodifiableListMixin$$10 {};
  (typed_data.UnmodifiableFloat32ListView.new = function(list) {
    this[_list$0] = list;
  }).prototype = typed_data.UnmodifiableFloat32ListView.prototype;
  dart.addTypeTests(typed_data.UnmodifiableFloat32ListView);
  typed_data.UnmodifiableFloat32ListView[dart.implements] = () => [typed_data.Float32List];
  dart.setFieldSignature(typed_data.UnmodifiableFloat32ListView, () => ({
    __proto__: dart.getFields(typed_data.UnmodifiableFloat32ListView.__proto__),
    [_list$0]: dart.finalFieldType(typed_data.Float32List)
  }));
  dart.defineExtensionMethods(typed_data.UnmodifiableFloat32ListView, ['_get']);
  dart.defineExtensionAccessors(typed_data.UnmodifiableFloat32ListView, [
    'length',
    'elementSizeInBytes',
    'offsetInBytes',
    'lengthInBytes',
    'buffer'
  ]);
  const UnmodifiableListBase__UnmodifiableListMixin$$11 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.double) {};
  (UnmodifiableListBase__UnmodifiableListMixin$$11.new = function() {
  }).prototype = UnmodifiableListBase__UnmodifiableListMixin$$11.prototype;
  dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$11, typed_data._UnmodifiableListMixin$(core.double, typed_data.Float64List, typed_data.Float64List));
  typed_data.UnmodifiableFloat64ListView = class UnmodifiableFloat64ListView extends UnmodifiableListBase__UnmodifiableListMixin$$11 {};
  (typed_data.UnmodifiableFloat64ListView.new = function(list) {
    this[_list$0] = list;
  }).prototype = typed_data.UnmodifiableFloat64ListView.prototype;
  dart.addTypeTests(typed_data.UnmodifiableFloat64ListView);
  typed_data.UnmodifiableFloat64ListView[dart.implements] = () => [typed_data.Float64List];
  dart.setFieldSignature(typed_data.UnmodifiableFloat64ListView, () => ({
    __proto__: dart.getFields(typed_data.UnmodifiableFloat64ListView.__proto__),
    [_list$0]: dart.finalFieldType(typed_data.Float64List)
  }));
  dart.defineExtensionMethods(typed_data.UnmodifiableFloat64ListView, ['_get']);
  dart.defineExtensionAccessors(typed_data.UnmodifiableFloat64ListView, [
    'length',
    'elementSizeInBytes',
    'offsetInBytes',
    'lengthInBytes',
    'buffer'
  ]);
  indexed_db._KeyRangeFactoryProvider = class _KeyRangeFactoryProvider extends core.Object {
    static createKeyRange_only(value) {
      return indexed_db._KeyRangeFactoryProvider._only(indexed_db._KeyRangeFactoryProvider._class(), indexed_db._KeyRangeFactoryProvider._translateKey(value));
    }
    static createKeyRange_lowerBound(bound, open) {
      if (open === void 0) open = false;
      return indexed_db._KeyRangeFactoryProvider._lowerBound(indexed_db._KeyRangeFactoryProvider._class(), indexed_db._KeyRangeFactoryProvider._translateKey(bound), open);
    }
    static createKeyRange_upperBound(bound, open) {
      if (open === void 0) open = false;
      return indexed_db._KeyRangeFactoryProvider._upperBound(indexed_db._KeyRangeFactoryProvider._class(), indexed_db._KeyRangeFactoryProvider._translateKey(bound), open);
    }
    static createKeyRange_bound(lower, upper, lowerOpen, upperOpen) {
      if (lowerOpen === void 0) lowerOpen = false;
      if (upperOpen === void 0) upperOpen = false;
      return indexed_db._KeyRangeFactoryProvider._bound(indexed_db._KeyRangeFactoryProvider._class(), indexed_db._KeyRangeFactoryProvider._translateKey(lower), indexed_db._KeyRangeFactoryProvider._translateKey(upper), lowerOpen, upperOpen);
    }
    static _class() {
      if (indexed_db._KeyRangeFactoryProvider._cachedClass != null) return indexed_db._KeyRangeFactoryProvider._cachedClass;
      return indexed_db._KeyRangeFactoryProvider._cachedClass = indexed_db._KeyRangeFactoryProvider._uncachedClass();
    }
    static _uncachedClass() {
      return window.webkitIDBKeyRange || window.mozIDBKeyRange || window.msIDBKeyRange || window.IDBKeyRange;
    }
    static _translateKey(idbkey) {
      return idbkey;
    }
    static _only(cls, value) {
      return cls.only(value);
    }
    static _lowerBound(cls, bound, open) {
      return cls.lowerBound(bound, open);
    }
    static _upperBound(cls, bound, open) {
      return cls.upperBound(bound, open);
    }
    static _bound(cls, lower, upper, lowerOpen, upperOpen) {
      return cls.bound(lower, upper, lowerOpen, upperOpen);
    }
  };
  (indexed_db._KeyRangeFactoryProvider.new = function() {
  }).prototype = indexed_db._KeyRangeFactoryProvider.prototype;
  dart.addTypeTests(indexed_db._KeyRangeFactoryProvider);
  dart.defineLazy(indexed_db._KeyRangeFactoryProvider, {
    /*indexed_db._KeyRangeFactoryProvider._cachedClass*/get _cachedClass() {
      return null;
    },
    set _cachedClass(_) {}
  });
  indexed_db._convertNativeToDart_IDBKey = function(nativeKey) {
    function containsDate(object) {
      if (dart.test(html_common.isJavaScriptDate(object))) return true;
      if (core.List.is(object)) {
        for (let i = 0; i < dart.notNull(object[$length]); i++) {
          if (dart.dtest(containsDate(object[$_get](i)))) return true;
        }
      }
      return false;
    }
    dart.fn(containsDate, dynamicTobool());
    if (dart.test(containsDate(nativeKey))) {
      dart.throw(new core.UnimplementedError.new("Key containing DateTime"));
    }
    return nativeKey;
  };
  indexed_db._convertDartToNative_IDBKey = function(dartKey) {
    return dartKey;
  };
  indexed_db._convertNativeToDart_IDBAny = function(object) {
    return html_common.convertNativeToDart_AcceptStructuredClone(object, {mustCopy: false});
  };
  dart.defineLazy(indexed_db, {
    /*indexed_db._idbKey*/get _idbKey() {
      return "JSExtendableArray|=Object|num|String";
    },
    /*indexed_db._annotation_Creates_IDBKey*/get _annotation_Creates_IDBKey() {
      return dart.const(new _js_helper.Creates.new("JSExtendableArray|=Object|num|String"));
    },
    /*indexed_db._annotation_Returns_IDBKey*/get _annotation_Returns_IDBKey() {
      return dart.const(new _js_helper.Returns.new("JSExtendableArray|=Object|num|String"));
    }
  });
  const _delete$ = Symbol('_delete');
  const _update = Symbol('_update');
  const _update_1 = Symbol('_update_1');
  indexed_db.Cursor = class Cursor extends _interceptors.Interceptor {
    [$delete]() {
      try {
        return indexed_db._completeRequest(dart.dynamic, this[_delete$]());
      } catch (e$) {
        let e = dart.getThrown(e$);
        let stacktrace = dart.stackTrace(e$);
        return async.Future.error(e, stacktrace);
      }
    }
    [$update](value) {
      try {
        return indexed_db._completeRequest(dart.dynamic, this[_update](value));
      } catch (e$) {
        let e = dart.getThrown(e$);
        let stacktrace = dart.stackTrace(e$);
        return async.Future.error(e, stacktrace);
      }
    }
    [$next](key) {
      if (key === void 0) key = null;
      if (key == null) {
        this.continue();
      } else {
        this.continue(key);
      }
    }
    get [$direction]() {
      return this.direction;
    }
    get [$key]() {
      return this.key;
    }
    get [$primaryKey]() {
      return this.primaryKey;
    }
    get [$source]() {
      return this.source;
    }
    [$advance](...args) {
      return this.advance.apply(this, args);
    }
    [$continuePrimaryKey](...args) {
      return this.continuePrimaryKey.apply(this, args);
    }
    [_delete$](...args) {
      return this.delete.apply(this, args);
    }
    [_update](value) {
      let value_1 = html_common.convertDartToNative_SerializedScriptValue(value);
      return this[_update_1](value_1);
    }
    [_update_1](...args) {
      return this.update.apply(this, args);
    }
  };
  dart.addTypeTests(indexed_db.Cursor);
  const direction = Symbol("Cursor.direction");
  const key = Symbol("Cursor.key");
  const primaryKey = Symbol("Cursor.primaryKey");
  const source = Symbol("Cursor.source");
  dart.setMethodSignature(indexed_db.Cursor, () => ({
    __proto__: dart.getMethods(indexed_db.Cursor.__proto__),
    [$delete]: dart.fnType(async.Future, []),
    [$update]: dart.fnType(async.Future, [dart.dynamic]),
    [$next]: dart.fnType(dart.void, [], [core.Object]),
    [$advance]: dart.fnType(dart.void, [core.int]),
    [$continuePrimaryKey]: dart.fnType(dart.void, [core.Object, core.Object]),
    [_delete$]: dart.fnType(indexed_db.Request, []),
    [_update]: dart.fnType(indexed_db.Request, [dart.dynamic]),
    [_update_1]: dart.fnType(indexed_db.Request, [dart.dynamic])
  }));
  dart.setFieldSignature(indexed_db.Cursor, () => ({
    __proto__: dart.getFields(indexed_db.Cursor.__proto__),
    [$direction]: dart.finalFieldType(core.String),
    [$key]: dart.finalFieldType(core.Object),
    [$primaryKey]: dart.finalFieldType(core.Object),
    [$source]: dart.finalFieldType(core.Object)
  }));
  dart.registerExtension("IDBCursor", indexed_db.Cursor);
  const _get_value = Symbol('_get_value');
  indexed_db.CursorWithValue = class CursorWithValue extends indexed_db.Cursor {
    get [$value]() {
      return indexed_db._convertNativeToDart_IDBAny(this[_get_value]);
    }
    get [_get_value]() {
      return this.value;
    }
  };
  dart.addTypeTests(indexed_db.CursorWithValue);
  dart.setGetterSignature(indexed_db.CursorWithValue, () => ({
    __proto__: dart.getGetters(indexed_db.CursorWithValue.__proto__),
    [$value]: dart.dynamic
  }));
  dart.setFieldSignature(indexed_db.CursorWithValue, () => ({
    __proto__: dart.getFields(indexed_db.CursorWithValue.__proto__),
    [_get_value]: dart.finalFieldType(dart.dynamic)
  }));
  dart.registerExtension("IDBCursorWithValue", indexed_db.CursorWithValue);
  const _createObjectStore = Symbol('_createObjectStore');
  const _transaction = Symbol('_transaction');
  const _createObjectStore_1 = Symbol('_createObjectStore_1');
  const _createObjectStore_2 = Symbol('_createObjectStore_2');
  const _addEventListener = Symbol('_addEventListener');
  const _removeEventListener = Symbol('_removeEventListener');
  html$.EventTarget = class EventTarget extends _interceptors.Interceptor {
    get [$on]() {
      return new html$.Events.new(this);
    }
    [$addEventListener](type, listener, useCapture) {
      if (useCapture === void 0) useCapture = null;
      if (listener != null) {
        this[_addEventListener](type, listener, useCapture);
      }
    }
    [$removeEventListener](type, listener, useCapture) {
      if (useCapture === void 0) useCapture = null;
      if (listener != null) {
        this[_removeEventListener](type, listener, useCapture);
      }
    }
    [_addEventListener](...args) {
      return this.addEventListener.apply(this, args);
    }
    [$dispatchEvent](...args) {
      return this.dispatchEvent.apply(this, args);
    }
    [_removeEventListener](...args) {
      return this.removeEventListener.apply(this, args);
    }
  };
  (html$.EventTarget._created = function() {
    html$.EventTarget.__proto__.new.call(this);
  }).prototype = html$.EventTarget.prototype;
  dart.addTypeTests(html$.EventTarget);
  dart.setMethodSignature(html$.EventTarget, () => ({
    __proto__: dart.getMethods(html$.EventTarget.__proto__),
    [$addEventListener]: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool]),
    [$removeEventListener]: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool]),
    [_addEventListener]: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool]),
    [$dispatchEvent]: dart.fnType(core.bool, [html$.Event]),
    [_removeEventListener]: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool])
  }));
  dart.setGetterSignature(html$.EventTarget, () => ({
    __proto__: dart.getGetters(html$.EventTarget.__proto__),
    [$on]: html$.Events
  }));
  dart.registerExtension("EventTarget", html$.EventTarget);
  indexed_db.Database = class Database extends html$.EventTarget {
    [$createObjectStore](name, opts) {
      let keyPath = opts && 'keyPath' in opts ? opts.keyPath : null;
      let autoIncrement = opts && 'autoIncrement' in opts ? opts.autoIncrement : null;
      let options = new _js_helper.LinkedMap.new();
      if (keyPath != null) {
        options[$_set]("keyPath", keyPath);
      }
      if (autoIncrement != null) {
        options[$_set]("autoIncrement", autoIncrement);
      }
      return this[_createObjectStore](name, options);
    }
    [$transaction](storeName_OR_storeNames, mode) {
      if (mode !== "readonly" && mode !== "readwrite") {
        dart.throw(new core.ArgumentError.new(mode));
      }
      return this[_transaction](storeName_OR_storeNames, mode);
    }
    [$transactionStore](storeName, mode) {
      if (mode !== "readonly" && mode !== "readwrite") {
        dart.throw(new core.ArgumentError.new(mode));
      }
      return this[_transaction](storeName, mode);
    }
    [$transactionList](storeNames, mode) {
      if (mode !== "readonly" && mode !== "readwrite") {
        dart.throw(new core.ArgumentError.new(mode));
      }
      let storeNames_1 = html_common.convertDartToNative_StringArray(storeNames);
      return this[_transaction](storeNames_1, mode);
    }
    [$transactionStores](storeNames, mode) {
      if (mode !== "readonly" && mode !== "readwrite") {
        dart.throw(new core.ArgumentError.new(mode));
      }
      return this[_transaction](storeNames, mode);
    }
    [_transaction](...args) {
      return this.transaction.apply(this, args);
    }
    get [$name]() {
      return this.name;
    }
    get [$objectStoreNames]() {
      return this.objectStoreNames;
    }
    get [$version]() {
      return this.version;
    }
    [$close](...args) {
      return this.close.apply(this, args);
    }
    [_createObjectStore](name, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return this[_createObjectStore_1](name, options_1);
      }
      return this[_createObjectStore_2](name);
    }
    [_createObjectStore_1](...args) {
      return this.createObjectStore.apply(this, args);
    }
    [_createObjectStore_2](...args) {
      return this.createObjectStore.apply(this, args);
    }
    [$deleteObjectStore](...args) {
      return this.deleteObjectStore.apply(this, args);
    }
    get [$onAbort]() {
      return indexed_db.Database.abortEvent.forTarget(this);
    }
    get [$onClose]() {
      return indexed_db.Database.closeEvent.forTarget(this);
    }
    get [$onError]() {
      return indexed_db.Database.errorEvent.forTarget(this);
    }
    get [$onVersionChange]() {
      return indexed_db.Database.versionChangeEvent.forTarget(this);
    }
  };
  dart.addTypeTests(indexed_db.Database);
  const name = Symbol("Database.name");
  const objectStoreNames = Symbol("Database.objectStoreNames");
  const version$ = Symbol("Database.version");
  dart.setMethodSignature(indexed_db.Database, () => ({
    __proto__: dart.getMethods(indexed_db.Database.__proto__),
    [$createObjectStore]: dart.fnType(indexed_db.ObjectStore, [core.String], {keyPath: dart.dynamic, autoIncrement: core.bool}),
    [$transaction]: dart.fnType(indexed_db.Transaction, [dart.dynamic, core.String]),
    [$transactionStore]: dart.fnType(indexed_db.Transaction, [core.String, core.String]),
    [$transactionList]: dart.fnType(indexed_db.Transaction, [core.List$(core.String), core.String]),
    [$transactionStores]: dart.fnType(indexed_db.Transaction, [html$.DomStringList, core.String]),
    [_transaction]: dart.fnType(indexed_db.Transaction, [dart.dynamic, dart.dynamic]),
    [$close]: dart.fnType(dart.void, []),
    [_createObjectStore]: dart.fnType(indexed_db.ObjectStore, [core.String], [core.Map]),
    [_createObjectStore_1]: dart.fnType(indexed_db.ObjectStore, [dart.dynamic, dart.dynamic]),
    [_createObjectStore_2]: dart.fnType(indexed_db.ObjectStore, [dart.dynamic]),
    [$deleteObjectStore]: dart.fnType(dart.void, [core.String])
  }));
  dart.setGetterSignature(indexed_db.Database, () => ({
    __proto__: dart.getGetters(indexed_db.Database.__proto__),
    [$onAbort]: async.Stream$(html$.Event),
    [$onClose]: async.Stream$(html$.Event),
    [$onError]: async.Stream$(html$.Event),
    [$onVersionChange]: async.Stream$(indexed_db.VersionChangeEvent)
  }));
  dart.setFieldSignature(indexed_db.Database, () => ({
    __proto__: dart.getFields(indexed_db.Database.__proto__),
    [$name]: dart.finalFieldType(core.String),
    [$objectStoreNames]: dart.finalFieldType(ListOfString()),
    [$version]: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(indexed_db.Database, {
    /*indexed_db.Database.abortEvent*/get abortEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("abort"));
    },
    /*indexed_db.Database.closeEvent*/get closeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("close"));
    },
    /*indexed_db.Database.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    },
    /*indexed_db.Database.versionChangeEvent*/get versionChangeEvent() {
      return dart.const(new (EventStreamProviderOfVersionChangeEvent()).new("versionchange"));
    }
  });
  dart.registerExtension("IDBDatabase", indexed_db.Database);
  const _open = Symbol('_open');
  const _deleteDatabase = Symbol('_deleteDatabase');
  indexed_db.IdbFactory = class IdbFactory extends _interceptors.Interceptor {
    static get supported() {
      return !!(window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB);
    }
    [$open](name, opts) {
      let version = opts && 'version' in opts ? opts.version : null;
      let onUpgradeNeeded = opts && 'onUpgradeNeeded' in opts ? opts.onUpgradeNeeded : null;
      let onBlocked = opts && 'onBlocked' in opts ? opts.onBlocked : null;
      if (version == null !== (onUpgradeNeeded == null)) {
        return FutureOfDatabase().error(new core.ArgumentError.new("version and onUpgradeNeeded must be specified together"));
      }
      try {
        let request = null;
        if (version != null) {
          request = this[_open](name, version);
        } else {
          request = this[_open](name);
        }
        if (onUpgradeNeeded != null) {
          dart.dsend(dart.dload(request, 'onUpgradeNeeded'), 'listen', [onUpgradeNeeded]);
        }
        if (onBlocked != null) {
          dart.dsend(dart.dload(request, 'onBlocked'), 'listen', [onBlocked]);
        }
        return indexed_db._completeRequest(indexed_db.Database, indexed_db.Request._check(request));
      } catch (e$) {
        let e = dart.getThrown(e$);
        let stacktrace = dart.stackTrace(e$);
        return FutureOfDatabase().error(e, stacktrace);
      }
    }
    [$deleteDatabase](name, opts) {
      let onBlocked = opts && 'onBlocked' in opts ? opts.onBlocked : null;
      try {
        let request = this[_deleteDatabase](name);
        if (onBlocked != null) {
          request[$onBlocked].listen(onBlocked);
        }
        let completer = CompleterOfIdbFactory().sync();
        request[$onSuccess].listen(dart.fn(e => {
          completer.complete(this);
        }, EventToNull()));
        request[$onError].listen(dart.bind(completer, 'completeError'));
        return completer.future;
      } catch (e$) {
        let e = dart.getThrown(e$);
        let stacktrace = dart.stackTrace(e$);
        return FutureOfIdbFactory().error(e, stacktrace);
      }
    }
    get [$supportsDatabaseNames]() {
      return dart.test(indexed_db.IdbFactory.supported) && !!(this.getDatabaseNames || this.webkitGetDatabaseNames);
    }
    [$cmp](...args) {
      return this.cmp.apply(this, args);
    }
    [_deleteDatabase](...args) {
      return this.deleteDatabase.apply(this, args);
    }
    [_open](...args) {
      return this.open.apply(this, args);
    }
  };
  dart.addTypeTests(indexed_db.IdbFactory);
  dart.setMethodSignature(indexed_db.IdbFactory, () => ({
    __proto__: dart.getMethods(indexed_db.IdbFactory.__proto__),
    [$open]: dart.fnType(async.Future$(indexed_db.Database), [core.String], {version: core.int, onUpgradeNeeded: dart.fnType(dart.void, [indexed_db.VersionChangeEvent]), onBlocked: dart.fnType(dart.void, [html$.Event])}),
    [$deleteDatabase]: dart.fnType(async.Future$(indexed_db.IdbFactory), [core.String], {onBlocked: dart.fnType(dart.void, [html$.Event])}),
    [$cmp]: dart.fnType(core.int, [core.Object, core.Object]),
    [_deleteDatabase]: dart.fnType(indexed_db.OpenDBRequest, [core.String]),
    [_open]: dart.fnType(indexed_db.OpenDBRequest, [core.String], [core.int])
  }));
  dart.setGetterSignature(indexed_db.IdbFactory, () => ({
    __proto__: dart.getGetters(indexed_db.IdbFactory.__proto__),
    [$supportsDatabaseNames]: core.bool
  }));
  dart.registerExtension("IDBFactory", indexed_db.IdbFactory);
  indexed_db._completeRequest = function(T, request) {
    let completer = async.Completer$(T).sync();
    request[$onSuccess].listen(dart.fn(e => {
      let result = T._check(request[$result]);
      completer.complete(result);
    }, EventToNull()));
    request[$onError].listen(dart.bind(completer, 'completeError'));
    return completer.future;
  };
  const _count$0 = Symbol('_count');
  const _get = Symbol('_get');
  const _getKey$ = Symbol('_getKey');
  const _openCursor = Symbol('_openCursor');
  const _openKeyCursor = Symbol('_openKeyCursor');
  indexed_db.Index = class Index extends _interceptors.Interceptor {
    [$count](key_OR_range) {
      if (key_OR_range === void 0) key_OR_range = null;
      try {
        let request = this[_count$0](key_OR_range);
        return indexed_db._completeRequest(core.int, request);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let stacktrace = dart.stackTrace(e$);
        return FutureOfint().error(e, stacktrace);
      }
    }
    [$get](key) {
      try {
        let request = this[_get](key);
        return indexed_db._completeRequest(dart.dynamic, request);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let stacktrace = dart.stackTrace(e$);
        return async.Future.error(e, stacktrace);
      }
    }
    [$getKey](key) {
      try {
        let request = this[_getKey$](key);
        return indexed_db._completeRequest(dart.dynamic, request);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let stacktrace = dart.stackTrace(e$);
        return async.Future.error(e, stacktrace);
      }
    }
    [$openCursor](opts) {
      let key = opts && 'key' in opts ? opts.key : null;
      let range = opts && 'range' in opts ? opts.range : null;
      let direction = opts && 'direction' in opts ? opts.direction : null;
      let autoAdvance = opts && 'autoAdvance' in opts ? opts.autoAdvance : null;
      let key_OR_range = null;
      if (key != null) {
        if (range != null) {
          dart.throw(new core.ArgumentError.new("Cannot specify both key and range."));
        }
        key_OR_range = key;
      } else {
        key_OR_range = range;
      }
      let request = null;
      if (direction == null) {
        request = this[_openCursor](key_OR_range, "next");
      } else {
        request = this[_openCursor](key_OR_range, direction);
      }
      return indexed_db.ObjectStore._cursorStreamFromResult(indexed_db.CursorWithValue, indexed_db.Request._check(request), autoAdvance);
    }
    [$openKeyCursor](opts) {
      let key = opts && 'key' in opts ? opts.key : null;
      let range = opts && 'range' in opts ? opts.range : null;
      let direction = opts && 'direction' in opts ? opts.direction : null;
      let autoAdvance = opts && 'autoAdvance' in opts ? opts.autoAdvance : null;
      let key_OR_range = null;
      if (key != null) {
        if (range != null) {
          dart.throw(new core.ArgumentError.new("Cannot specify both key and range."));
        }
        key_OR_range = key;
      } else {
        key_OR_range = range;
      }
      let request = null;
      if (direction == null) {
        request = this[_openKeyCursor](key_OR_range, "next");
      } else {
        request = this[_openKeyCursor](key_OR_range, direction);
      }
      return indexed_db.ObjectStore._cursorStreamFromResult(indexed_db.Cursor, indexed_db.Request._check(request), autoAdvance);
    }
    get [$keyPath]() {
      return this.keyPath;
    }
    get [$multiEntry]() {
      return this.multiEntry;
    }
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
    get [$objectStore]() {
      return this.objectStore;
    }
    get [$unique]() {
      return this.unique;
    }
    [_count$0](...args) {
      return this.count.apply(this, args);
    }
    [_get](...args) {
      return this.get.apply(this, args);
    }
    [$getAll](...args) {
      return this.getAll.apply(this, args);
    }
    [$getAllKeys](...args) {
      return this.getAllKeys.apply(this, args);
    }
    [_getKey$](...args) {
      return this.getKey.apply(this, args);
    }
    [_openCursor](...args) {
      return this.openCursor.apply(this, args);
    }
    [_openKeyCursor](...args) {
      return this.openKeyCursor.apply(this, args);
    }
  };
  dart.addTypeTests(indexed_db.Index);
  const keyPath = Symbol("Index.keyPath");
  const multiEntry = Symbol("Index.multiEntry");
  const name$4 = Symbol("Index.name");
  const objectStore = Symbol("Index.objectStore");
  const unique = Symbol("Index.unique");
  dart.setMethodSignature(indexed_db.Index, () => ({
    __proto__: dart.getMethods(indexed_db.Index.__proto__),
    [$count]: dart.fnType(async.Future$(core.int), [], [dart.dynamic]),
    [$get]: dart.fnType(async.Future, [dart.dynamic]),
    [$getKey]: dart.fnType(async.Future, [dart.dynamic]),
    [$openCursor]: dart.fnType(async.Stream$(indexed_db.CursorWithValue), [], {key: dart.dynamic, range: indexed_db.KeyRange, direction: core.String, autoAdvance: core.bool}),
    [$openKeyCursor]: dart.fnType(async.Stream$(indexed_db.Cursor), [], {key: dart.dynamic, range: indexed_db.KeyRange, direction: core.String, autoAdvance: core.bool}),
    [_count$0]: dart.fnType(indexed_db.Request, [core.Object]),
    [_get]: dart.fnType(indexed_db.Request, [core.Object]),
    [$getAll]: dart.fnType(indexed_db.Request, [core.Object], [core.int]),
    [$getAllKeys]: dart.fnType(indexed_db.Request, [core.Object], [core.int]),
    [_getKey$]: dart.fnType(indexed_db.Request, [core.Object]),
    [_openCursor]: dart.fnType(indexed_db.Request, [core.Object], [core.String]),
    [_openKeyCursor]: dart.fnType(indexed_db.Request, [core.Object], [core.String])
  }));
  dart.setFieldSignature(indexed_db.Index, () => ({
    __proto__: dart.getFields(indexed_db.Index.__proto__),
    [$keyPath]: dart.finalFieldType(core.Object),
    [$multiEntry]: dart.finalFieldType(core.bool),
    [$name]: dart.fieldType(core.String),
    [$objectStore]: dart.finalFieldType(indexed_db.ObjectStore),
    [$unique]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("IDBIndex", indexed_db.Index);
  indexed_db.KeyRange = class KeyRange extends _interceptors.Interceptor {
    static only(value) {
      return indexed_db._KeyRangeFactoryProvider.createKeyRange_only(value);
    }
    static lowerBound(bound, open) {
      if (open === void 0) open = false;
      return indexed_db._KeyRangeFactoryProvider.createKeyRange_lowerBound(bound, open);
    }
    static upperBound(bound, open) {
      if (open === void 0) open = false;
      return indexed_db._KeyRangeFactoryProvider.createKeyRange_upperBound(bound, open);
    }
    static bound(lower, upper, lowerOpen, upperOpen) {
      if (lowerOpen === void 0) lowerOpen = false;
      if (upperOpen === void 0) upperOpen = false;
      return indexed_db._KeyRangeFactoryProvider.createKeyRange_bound(lower, upper, lowerOpen, upperOpen);
    }
    get [$lower]() {
      return this.lower;
    }
    get [$lowerOpen]() {
      return this.lowerOpen;
    }
    get [$upper]() {
      return this.upper;
    }
    get [$upperOpen]() {
      return this.upperOpen;
    }
    [$includes](...args) {
      return this.includes.apply(this, args);
    }
  };
  dart.addTypeTests(indexed_db.KeyRange);
  const lower = Symbol("KeyRange.lower");
  const lowerOpen = Symbol("KeyRange.lowerOpen");
  const upper = Symbol("KeyRange.upper");
  const upperOpen = Symbol("KeyRange.upperOpen");
  dart.setMethodSignature(indexed_db.KeyRange, () => ({
    __proto__: dart.getMethods(indexed_db.KeyRange.__proto__),
    [$includes]: dart.fnType(core.bool, [core.Object])
  }));
  dart.setFieldSignature(indexed_db.KeyRange, () => ({
    __proto__: dart.getFields(indexed_db.KeyRange.__proto__),
    [$lower]: dart.finalFieldType(core.Object),
    [$lowerOpen]: dart.finalFieldType(core.bool),
    [$upper]: dart.finalFieldType(core.Object),
    [$upperOpen]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("IDBKeyRange", indexed_db.KeyRange);
  const _add$1 = Symbol('_add');
  const _clear$ = Symbol('_clear');
  const _put = Symbol('_put');
  const _createIndex = Symbol('_createIndex');
  const _add_1 = Symbol('_add_1');
  const _add_2 = Symbol('_add_2');
  const _createIndex_1 = Symbol('_createIndex_1');
  const _createIndex_2 = Symbol('_createIndex_2');
  const _put_1 = Symbol('_put_1');
  const _put_2 = Symbol('_put_2');
  indexed_db.ObjectStore = class ObjectStore extends _interceptors.Interceptor {
    [$add](value, key) {
      if (key === void 0) key = null;
      try {
        let request = null;
        if (key != null) {
          request = this[_add$1](value, key);
        } else {
          request = this[_add$1](value);
        }
        return indexed_db._completeRequest(dart.dynamic, indexed_db.Request._check(request));
      } catch (e$) {
        let e = dart.getThrown(e$);
        let stacktrace = dart.stackTrace(e$);
        return async.Future.error(e, stacktrace);
      }
    }
    [$clear]() {
      try {
        return indexed_db._completeRequest(dart.dynamic, this[_clear$]());
      } catch (e$) {
        let e = dart.getThrown(e$);
        let stacktrace = dart.stackTrace(e$);
        return async.Future.error(e, stacktrace);
      }
    }
    [$delete](key_OR_keyRange) {
      try {
        return indexed_db._completeRequest(dart.dynamic, this[_delete$](key_OR_keyRange));
      } catch (e$) {
        let e = dart.getThrown(e$);
        let stacktrace = dart.stackTrace(e$);
        return async.Future.error(e, stacktrace);
      }
    }
    [$count](key_OR_range) {
      if (key_OR_range === void 0) key_OR_range = null;
      try {
        let request = this[_count$0](key_OR_range);
        return indexed_db._completeRequest(core.int, request);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let stacktrace = dart.stackTrace(e$);
        return FutureOfint().error(e, stacktrace);
      }
    }
    [$put](value, key) {
      if (key === void 0) key = null;
      try {
        let request = null;
        if (key != null) {
          request = this[_put](value, key);
        } else {
          request = this[_put](value);
        }
        return indexed_db._completeRequest(dart.dynamic, indexed_db.Request._check(request));
      } catch (e$) {
        let e = dart.getThrown(e$);
        let stacktrace = dart.stackTrace(e$);
        return async.Future.error(e, stacktrace);
      }
    }
    [$getObject](key) {
      try {
        let request = this[_get](key);
        return indexed_db._completeRequest(dart.dynamic, request);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let stacktrace = dart.stackTrace(e$);
        return async.Future.error(e, stacktrace);
      }
    }
    [$openCursor](opts) {
      let key = opts && 'key' in opts ? opts.key : null;
      let range = opts && 'range' in opts ? opts.range : null;
      let direction = opts && 'direction' in opts ? opts.direction : null;
      let autoAdvance = opts && 'autoAdvance' in opts ? opts.autoAdvance : null;
      let key_OR_range = null;
      if (key != null) {
        if (range != null) {
          dart.throw(new core.ArgumentError.new("Cannot specify both key and range."));
        }
        key_OR_range = key;
      } else {
        key_OR_range = range;
      }
      let request = null;
      if (direction == null) {
        request = this[_openCursor](key_OR_range);
      } else {
        request = this[_openCursor](key_OR_range, direction);
      }
      return indexed_db.ObjectStore._cursorStreamFromResult(indexed_db.CursorWithValue, indexed_db.Request._check(request), autoAdvance);
    }
    [$createIndex](name, keyPath, opts) {
      let unique = opts && 'unique' in opts ? opts.unique : null;
      let multiEntry = opts && 'multiEntry' in opts ? opts.multiEntry : null;
      let options = new _js_helper.LinkedMap.new();
      if (unique != null) {
        options[$_set]("unique", unique);
      }
      if (multiEntry != null) {
        options[$_set]("multiEntry", multiEntry);
      }
      return this[_createIndex](name, keyPath, options);
    }
    get [$autoIncrement]() {
      return this.autoIncrement;
    }
    get [$indexNames]() {
      return this.indexNames;
    }
    get [$keyPath]() {
      return this.keyPath;
    }
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
    get [$transaction]() {
      return this.transaction;
    }
    [_add$1](value, key) {
      if (key === void 0) key = null;
      if (key != null) {
        let value_1 = html_common.convertDartToNative_SerializedScriptValue(value);
        let key_2 = html_common.convertDartToNative_SerializedScriptValue(key);
        return this[_add_1](value_1, key_2);
      }
      let value_1 = html_common.convertDartToNative_SerializedScriptValue(value);
      return this[_add_2](value_1);
    }
    [_add_1](...args) {
      return this.add.apply(this, args);
    }
    [_add_2](...args) {
      return this.add.apply(this, args);
    }
    [_clear$](...args) {
      return this.clear.apply(this, args);
    }
    [_count$0](...args) {
      return this.count.apply(this, args);
    }
    [_createIndex](name, keyPath, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return this[_createIndex_1](name, keyPath, options_1);
      }
      return this[_createIndex_2](name, keyPath);
    }
    [_createIndex_1](...args) {
      return this.createIndex.apply(this, args);
    }
    [_createIndex_2](...args) {
      return this.createIndex.apply(this, args);
    }
    [_delete$](...args) {
      return this.delete.apply(this, args);
    }
    [$deleteIndex](...args) {
      return this.deleteIndex.apply(this, args);
    }
    [_get](...args) {
      return this.get.apply(this, args);
    }
    [$getAll](...args) {
      return this.getAll.apply(this, args);
    }
    [$getAllKeys](...args) {
      return this.getAllKeys.apply(this, args);
    }
    [$getKey](...args) {
      return this.getKey.apply(this, args);
    }
    [$index](...args) {
      return this.index.apply(this, args);
    }
    [_openCursor](...args) {
      return this.openCursor.apply(this, args);
    }
    [$openKeyCursor](...args) {
      return this.openKeyCursor.apply(this, args);
    }
    [_put](value, key) {
      if (key === void 0) key = null;
      if (key != null) {
        let value_1 = html_common.convertDartToNative_SerializedScriptValue(value);
        let key_2 = html_common.convertDartToNative_SerializedScriptValue(key);
        return this[_put_1](value_1, key_2);
      }
      let value_1 = html_common.convertDartToNative_SerializedScriptValue(value);
      return this[_put_2](value_1);
    }
    [_put_1](...args) {
      return this.put.apply(this, args);
    }
    [_put_2](...args) {
      return this.put.apply(this, args);
    }
    static _cursorStreamFromResult(T, request, autoAdvance) {
      let controller = async.StreamController$(T).new({sync: true});
      request[$onError].listen(dart.bind(controller, 'addError'));
      request[$onSuccess].listen(dart.fn(e => {
        let cursor = T._check(request[$result]);
        if (cursor == null) {
          controller.close();
        } else {
          controller.add(cursor);
          if (autoAdvance === true && dart.test(controller.hasListener)) {
            cursor[$next]();
          }
        }
      }, EventToNull()));
      return controller.stream;
    }
  };
  dart.addTypeTests(indexed_db.ObjectStore);
  const autoIncrement = Symbol("ObjectStore.autoIncrement");
  const indexNames = Symbol("ObjectStore.indexNames");
  const keyPath$ = Symbol("ObjectStore.keyPath");
  const name$5 = Symbol("ObjectStore.name");
  const transaction = Symbol("ObjectStore.transaction");
  dart.setMethodSignature(indexed_db.ObjectStore, () => ({
    __proto__: dart.getMethods(indexed_db.ObjectStore.__proto__),
    [$add]: dart.fnType(async.Future, [dart.dynamic], [dart.dynamic]),
    [$clear]: dart.fnType(async.Future, []),
    [$delete]: dart.fnType(async.Future, [dart.dynamic]),
    [$count]: dart.fnType(async.Future$(core.int), [], [dart.dynamic]),
    [$put]: dart.fnType(async.Future, [dart.dynamic], [dart.dynamic]),
    [$getObject]: dart.fnType(async.Future, [dart.dynamic]),
    [$openCursor]: dart.fnType(async.Stream$(indexed_db.CursorWithValue), [], {key: dart.dynamic, range: indexed_db.KeyRange, direction: core.String, autoAdvance: core.bool}),
    [$createIndex]: dart.fnType(indexed_db.Index, [core.String, dart.dynamic], {unique: core.bool, multiEntry: core.bool}),
    [_add$1]: dart.fnType(indexed_db.Request, [dart.dynamic], [dart.dynamic]),
    [_add_1]: dart.fnType(indexed_db.Request, [dart.dynamic, dart.dynamic]),
    [_add_2]: dart.fnType(indexed_db.Request, [dart.dynamic]),
    [_clear$]: dart.fnType(indexed_db.Request, []),
    [_count$0]: dart.fnType(indexed_db.Request, [core.Object]),
    [_createIndex]: dart.fnType(indexed_db.Index, [core.String, core.Object], [core.Map]),
    [_createIndex_1]: dart.fnType(indexed_db.Index, [dart.dynamic, dart.dynamic, dart.dynamic]),
    [_createIndex_2]: dart.fnType(indexed_db.Index, [dart.dynamic, dart.dynamic]),
    [_delete$]: dart.fnType(indexed_db.Request, [core.Object]),
    [$deleteIndex]: dart.fnType(dart.void, [core.String]),
    [_get]: dart.fnType(indexed_db.Request, [core.Object]),
    [$getAll]: dart.fnType(indexed_db.Request, [core.Object], [core.int]),
    [$getAllKeys]: dart.fnType(indexed_db.Request, [core.Object], [core.int]),
    [$getKey]: dart.fnType(indexed_db.Request, [core.Object]),
    [$index]: dart.fnType(indexed_db.Index, [core.String]),
    [_openCursor]: dart.fnType(indexed_db.Request, [core.Object], [core.String]),
    [$openKeyCursor]: dart.fnType(indexed_db.Request, [core.Object], [core.String]),
    [_put]: dart.fnType(indexed_db.Request, [dart.dynamic], [dart.dynamic]),
    [_put_1]: dart.fnType(indexed_db.Request, [dart.dynamic, dart.dynamic]),
    [_put_2]: dart.fnType(indexed_db.Request, [dart.dynamic])
  }));
  dart.setFieldSignature(indexed_db.ObjectStore, () => ({
    __proto__: dart.getFields(indexed_db.ObjectStore.__proto__),
    [$autoIncrement]: dart.finalFieldType(core.bool),
    [$indexNames]: dart.finalFieldType(ListOfString()),
    [$keyPath]: dart.finalFieldType(core.Object),
    [$name]: dart.fieldType(core.String),
    [$transaction]: dart.finalFieldType(indexed_db.Transaction)
  }));
  dart.registerExtension("IDBObjectStore", indexed_db.ObjectStore);
  indexed_db.Observation = class Observation extends _interceptors.Interceptor {
    get [$key]() {
      return this.key;
    }
    get [$type]() {
      return this.type;
    }
    get [$value]() {
      return this.value;
    }
  };
  dart.addTypeTests(indexed_db.Observation);
  const key$ = Symbol("Observation.key");
  const type = Symbol("Observation.type");
  const value = Symbol("Observation.value");
  dart.setFieldSignature(indexed_db.Observation, () => ({
    __proto__: dart.getFields(indexed_db.Observation.__proto__),
    [$key]: dart.finalFieldType(core.Object),
    [$type]: dart.finalFieldType(core.String),
    [$value]: dart.finalFieldType(core.Object)
  }));
  dart.registerExtension("IDBObservation", indexed_db.Observation);
  const _observe_1 = Symbol('_observe_1');
  indexed_db.Observer = class Observer extends _interceptors.Interceptor {
    static new(callback) {
      return indexed_db.Observer._create_1(callback);
    }
    static _create_1(callback) {
      return new IDBObserver(callback);
    }
    [$observe](db, tx, options) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[_observe_1](db, tx, options_1);
      return;
    }
    [_observe_1](...args) {
      return this.observe.apply(this, args);
    }
    [$unobserve](...args) {
      return this.unobserve.apply(this, args);
    }
  };
  dart.addTypeTests(indexed_db.Observer);
  dart.setMethodSignature(indexed_db.Observer, () => ({
    __proto__: dart.getMethods(indexed_db.Observer.__proto__),
    [$observe]: dart.fnType(dart.void, [indexed_db.Database, indexed_db.Transaction, core.Map]),
    [_observe_1]: dart.fnType(dart.void, [indexed_db.Database, indexed_db.Transaction, dart.dynamic]),
    [$unobserve]: dart.fnType(dart.void, [indexed_db.Database])
  }));
  dart.registerExtension("IDBObserver", indexed_db.Observer);
  indexed_db.ObserverChanges = class ObserverChanges extends _interceptors.Interceptor {
    get [$database]() {
      return this.database;
    }
    get [$records]() {
      return this.records;
    }
    get [$transaction]() {
      return this.transaction;
    }
  };
  dart.addTypeTests(indexed_db.ObserverChanges);
  const database = Symbol("ObserverChanges.database");
  const records = Symbol("ObserverChanges.records");
  const transaction$ = Symbol("ObserverChanges.transaction");
  dart.setFieldSignature(indexed_db.ObserverChanges, () => ({
    __proto__: dart.getFields(indexed_db.ObserverChanges.__proto__),
    [$database]: dart.finalFieldType(indexed_db.Database),
    [$records]: dart.finalFieldType(core.Object),
    [$transaction]: dart.finalFieldType(indexed_db.Transaction)
  }));
  dart.registerExtension("IDBObserverChanges", indexed_db.ObserverChanges);
  const _get_result = Symbol('_get_result');
  indexed_db.Request = class Request extends html$.EventTarget {
    get [$error]() {
      return this.error;
    }
    get [$readyState]() {
      return this.readyState;
    }
    get [$result]() {
      return indexed_db._convertNativeToDart_IDBAny(this[_get_result]);
    }
    get [_get_result]() {
      return this.result;
    }
    get [$source]() {
      return this.source;
    }
    get [$transaction]() {
      return this.transaction;
    }
    get [$onError]() {
      return indexed_db.Request.errorEvent.forTarget(this);
    }
    get [$onSuccess]() {
      return indexed_db.Request.successEvent.forTarget(this);
    }
  };
  dart.addTypeTests(indexed_db.Request);
  const error = Symbol("Request.error");
  const readyState = Symbol("Request.readyState");
  const source$0 = Symbol("Request.source");
  const transaction$0 = Symbol("Request.transaction");
  dart.setGetterSignature(indexed_db.Request, () => ({
    __proto__: dart.getGetters(indexed_db.Request.__proto__),
    [$result]: dart.dynamic,
    [$onError]: async.Stream$(html$.Event),
    [$onSuccess]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(indexed_db.Request, () => ({
    __proto__: dart.getFields(indexed_db.Request.__proto__),
    [$error]: dart.finalFieldType(html$.DomException),
    [$readyState]: dart.finalFieldType(core.String),
    [_get_result]: dart.finalFieldType(dart.dynamic),
    [$source]: dart.finalFieldType(core.Object),
    [$transaction]: dart.finalFieldType(indexed_db.Transaction)
  }));
  dart.defineLazy(indexed_db.Request, {
    /*indexed_db.Request.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    },
    /*indexed_db.Request.successEvent*/get successEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("success"));
    }
  });
  dart.registerExtension("IDBRequest", indexed_db.Request);
  indexed_db.OpenDBRequest = class OpenDBRequest extends indexed_db.Request {
    get [$onBlocked]() {
      return indexed_db.OpenDBRequest.blockedEvent.forTarget(this);
    }
    get [$onUpgradeNeeded]() {
      return indexed_db.OpenDBRequest.upgradeNeededEvent.forTarget(this);
    }
  };
  dart.addTypeTests(indexed_db.OpenDBRequest);
  dart.setGetterSignature(indexed_db.OpenDBRequest, () => ({
    __proto__: dart.getGetters(indexed_db.OpenDBRequest.__proto__),
    [$onBlocked]: async.Stream$(html$.Event),
    [$onUpgradeNeeded]: async.Stream$(indexed_db.VersionChangeEvent)
  }));
  dart.defineLazy(indexed_db.OpenDBRequest, {
    /*indexed_db.OpenDBRequest.blockedEvent*/get blockedEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("blocked"));
    },
    /*indexed_db.OpenDBRequest.upgradeNeededEvent*/get upgradeNeededEvent() {
      return dart.const(new (EventStreamProviderOfVersionChangeEvent()).new("upgradeneeded"));
    }
  });
  dart.registerExtension("IDBOpenDBRequest", indexed_db.OpenDBRequest);
  dart.registerExtension("IDBVersionChangeRequest", indexed_db.OpenDBRequest);
  indexed_db.Transaction = class Transaction extends html$.EventTarget {
    get [$completed]() {
      let completer = CompleterOfDatabase().new();
      FutureOfNull()._check(this[$onComplete].first.then(core.Null, dart.fn(_ => {
        completer.complete(this.db);
      }, EventToNull())));
      FutureOfNull()._check(this[$onError].first.then(core.Null, dart.fn(e => {
        completer.completeError(e);
      }, EventToNull())));
      FutureOfNull()._check(this[$onAbort].first.then(core.Null, dart.fn(e => {
        if (!dart.test(completer.isCompleted)) {
          completer.completeError(e);
        }
      }, EventToNull())));
      return completer.future;
    }
    get [$db]() {
      return this.db;
    }
    get [$error]() {
      return this.error;
    }
    get [$mode]() {
      return this.mode;
    }
    get [$objectStoreNames]() {
      return this.objectStoreNames;
    }
    [$abort](...args) {
      return this.abort.apply(this, args);
    }
    [$objectStore](...args) {
      return this.objectStore.apply(this, args);
    }
    get [$onAbort]() {
      return indexed_db.Transaction.abortEvent.forTarget(this);
    }
    get [$onComplete]() {
      return indexed_db.Transaction.completeEvent.forTarget(this);
    }
    get [$onError]() {
      return indexed_db.Transaction.errorEvent.forTarget(this);
    }
  };
  dart.addTypeTests(indexed_db.Transaction);
  const db = Symbol("Transaction.db");
  const error$0 = Symbol("Transaction.error");
  const mode = Symbol("Transaction.mode");
  const objectStoreNames$ = Symbol("Transaction.objectStoreNames");
  dart.setMethodSignature(indexed_db.Transaction, () => ({
    __proto__: dart.getMethods(indexed_db.Transaction.__proto__),
    [$abort]: dart.fnType(dart.void, []),
    [$objectStore]: dart.fnType(indexed_db.ObjectStore, [core.String])
  }));
  dart.setGetterSignature(indexed_db.Transaction, () => ({
    __proto__: dart.getGetters(indexed_db.Transaction.__proto__),
    [$completed]: async.Future$(indexed_db.Database),
    [$onAbort]: async.Stream$(html$.Event),
    [$onComplete]: async.Stream$(html$.Event),
    [$onError]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(indexed_db.Transaction, () => ({
    __proto__: dart.getFields(indexed_db.Transaction.__proto__),
    [$db]: dart.finalFieldType(indexed_db.Database),
    [$error]: dart.finalFieldType(html$.DomException),
    [$mode]: dart.finalFieldType(core.String),
    [$objectStoreNames]: dart.finalFieldType(ListOfString())
  }));
  dart.defineLazy(indexed_db.Transaction, {
    /*indexed_db.Transaction.abortEvent*/get abortEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("abort"));
    },
    /*indexed_db.Transaction.completeEvent*/get completeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("complete"));
    },
    /*indexed_db.Transaction.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    }
  });
  dart.registerExtension("IDBTransaction", indexed_db.Transaction);
  const _createEvent = Symbol('_createEvent');
  const _initEvent = Symbol('_initEvent');
  const _selector = Symbol('_selector');
  const _get_currentTarget = Symbol('_get_currentTarget');
  const _get_target = Symbol('_get_target');
  html$.Event = class Event$ extends _interceptors.Interceptor {
    static new(type, opts) {
      let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
      let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
      return html$.Event.eventType("Event", type, {canBubble: canBubble, cancelable: cancelable});
    }
    static eventType(type, name, opts) {
      let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
      let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
      let e = html$.document[_createEvent](type);
      e[_initEvent](name, canBubble, cancelable);
      return e;
    }
    get [_selector]() {
      return this._selector;
    }
    set [_selector](value) {
      this._selector = value;
    }
    get [$matchingTarget]() {
      if (this[_selector] == null) {
        dart.throw(new core.UnsupportedError.new("Cannot call matchingTarget if this Event did" + " not arise as a result of event delegation."));
      }
      let currentTarget = html$.Element._check(this[$currentTarget]);
      let target = html$.Element._check(this[$target]);
      let matchedTarget = null;
      do {
        if (dart.test(target[$matches](this[_selector]))) return target;
        target = target[$parent];
      } while (target != null && !dart.equals(target, currentTarget[$parent]));
      dart.throw(new core.StateError.new("No selector matched for populating matchedTarget."));
    }
    get [$path]() {
      return !!this.composedPath ? this.composedPath() : JSArrayOfEventTarget().of([]);
    }
    static __(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.Event._create_1(type, eventInitDict_1);
      }
      return html$.Event._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new Event(type, eventInitDict);
    }
    static _create_2(type) {
      return new Event(type);
    }
    get [$bubbles]() {
      return this.bubbles;
    }
    get [$cancelable]() {
      return this.cancelable;
    }
    get [$composed]() {
      return this.composed;
    }
    get [$currentTarget]() {
      return html$._convertNativeToDart_EventTarget(this[_get_currentTarget]);
    }
    get [_get_currentTarget]() {
      return this.currentTarget;
    }
    get [$defaultPrevented]() {
      return this.defaultPrevented;
    }
    get [$eventPhase]() {
      return this.eventPhase;
    }
    get [$isTrusted]() {
      return this.isTrusted;
    }
    get [$target]() {
      return html$._convertNativeToDart_EventTarget(this[_get_target]);
    }
    get [_get_target]() {
      return this.target;
    }
    get [$timeStamp]() {
      return this.timeStamp;
    }
    get [$type]() {
      return this.type;
    }
    [$composedPath](...args) {
      return this.composedPath.apply(this, args);
    }
    [_initEvent](...args) {
      return this.initEvent.apply(this, args);
    }
    [$preventDefault](...args) {
      return this.preventDefault.apply(this, args);
    }
    [$stopImmediatePropagation](...args) {
      return this.stopImmediatePropagation.apply(this, args);
    }
    [$stopPropagation](...args) {
      return this.stopPropagation.apply(this, args);
    }
  };
  dart.addTypeTests(html$.Event);
  const bubbles = Symbol("Event.bubbles");
  const cancelable = Symbol("Event.cancelable");
  const composed = Symbol("Event.composed");
  const defaultPrevented = Symbol("Event.defaultPrevented");
  const eventPhase = Symbol("Event.eventPhase");
  const isTrusted = Symbol("Event.isTrusted");
  const timeStamp = Symbol("Event.timeStamp");
  const type$2 = Symbol("Event.type");
  dart.setMethodSignature(html$.Event, () => ({
    __proto__: dart.getMethods(html$.Event.__proto__),
    [$composedPath]: dart.fnType(core.List$(html$.EventTarget), []),
    [_initEvent]: dart.fnType(dart.void, [core.String], [core.bool, core.bool]),
    [$preventDefault]: dart.fnType(dart.void, []),
    [$stopImmediatePropagation]: dart.fnType(dart.void, []),
    [$stopPropagation]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(html$.Event, () => ({
    __proto__: dart.getGetters(html$.Event.__proto__),
    [$matchingTarget]: html$.Element,
    [$path]: core.List$(html$.EventTarget),
    [$currentTarget]: html$.EventTarget,
    [$target]: html$.EventTarget
  }));
  dart.setFieldSignature(html$.Event, () => ({
    __proto__: dart.getFields(html$.Event.__proto__),
    [_selector]: dart.fieldType(core.String),
    [$bubbles]: dart.finalFieldType(core.bool),
    [$cancelable]: dart.finalFieldType(core.bool),
    [$composed]: dart.finalFieldType(core.bool),
    [_get_currentTarget]: dart.finalFieldType(dart.dynamic),
    [$defaultPrevented]: dart.finalFieldType(core.bool),
    [$eventPhase]: dart.finalFieldType(core.int),
    [$isTrusted]: dart.finalFieldType(core.bool),
    [_get_target]: dart.finalFieldType(dart.dynamic),
    [$timeStamp]: dart.finalFieldType(core.num),
    [$type]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.Event, {
    /*html$.Event.AT_TARGET*/get AT_TARGET() {
      return 2;
    },
    /*html$.Event.BUBBLING_PHASE*/get BUBBLING_PHASE() {
      return 3;
    },
    /*html$.Event.CAPTURING_PHASE*/get CAPTURING_PHASE() {
      return 1;
    }
  });
  dart.registerExtension("Event", html$.Event);
  dart.registerExtension("InputEvent", html$.Event);
  indexed_db.VersionChangeEvent = class VersionChangeEvent extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return indexed_db.VersionChangeEvent._create_1(type, eventInitDict_1);
      }
      return indexed_db.VersionChangeEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new IDBVersionChangeEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new IDBVersionChangeEvent(type);
    }
    get [$dataLoss]() {
      return this.dataLoss;
    }
    get [$dataLossMessage]() {
      return this.dataLossMessage;
    }
    get [$newVersion]() {
      return this.newVersion;
    }
    get [$oldVersion]() {
      return this.oldVersion;
    }
    get [$target]() {
      return this.target;
    }
  };
  dart.addTypeTests(indexed_db.VersionChangeEvent);
  const dataLoss = Symbol("VersionChangeEvent.dataLoss");
  const dataLossMessage = Symbol("VersionChangeEvent.dataLossMessage");
  const newVersion = Symbol("VersionChangeEvent.newVersion");
  const oldVersion = Symbol("VersionChangeEvent.oldVersion");
  const target = Symbol("VersionChangeEvent.target");
  dart.setFieldSignature(indexed_db.VersionChangeEvent, () => ({
    __proto__: dart.getFields(indexed_db.VersionChangeEvent.__proto__),
    [$dataLoss]: dart.finalFieldType(core.String),
    [$dataLossMessage]: dart.finalFieldType(core.String),
    [$newVersion]: dart.finalFieldType(core.int),
    [$oldVersion]: dart.finalFieldType(core.int),
    [$target]: dart.finalFieldType(indexed_db.OpenDBRequest)
  }));
  dart.registerExtension("IDBVersionChangeEvent", indexed_db.VersionChangeEvent);
  dart.copyProperties(html$, {
    get window() {
      return window;
    }
  });
  dart.copyProperties(html$, {
    get document() {
      return document;
    }
  });
  html$.promiseToFuture = function(T, jsPromise) {
    let completer = async.Completer$(T).new();
    let thenSuccessCode = promiseValue => completer.complete(async.FutureOr$(T)._check(promiseValue));
    dart.fn(thenSuccessCode, dynamicTovoid());
    let thenErrorCode = promiseError => completer.completeError(promiseError);
    dart.fn(thenErrorCode, dynamicTovoid());
    jsPromise.then(_js_helper.convertDartClosureToJS(dynamicTovoid(), thenSuccessCode, 1), _js_helper.convertDartClosureToJS(dynamicTovoid(), thenErrorCode, 1));
    return completer.future;
  };
  html$.promiseToFutureAsMap = function(jsPromise) {
    let completer = CompleterOfMapOfString$dynamic().new();
    let thenSuccessCode = promiseValue => completer.complete(html_common.convertNativeToDart_Dictionary(promiseValue));
    dart.fn(thenSuccessCode, dynamicTovoid());
    let thenErrorCode = promiseError => completer.completeError(promiseError);
    dart.fn(thenErrorCode, dynamicTovoid());
    jsPromise.then(_js_helper.convertDartClosureToJS(dynamicTovoid(), thenSuccessCode, 1), _js_helper.convertDartClosureToJS(dynamicTovoid(), thenErrorCode, 1));
    return completer.future;
  };
  const _attributes$ = Symbol('_attributes');
  const _innerHtml = Symbol('_innerHtml');
  const _localName = Symbol('_localName');
  const _namespaceUri = Symbol('_namespaceUri');
  const _scrollHeight = Symbol('_scrollHeight');
  const _scrollLeft = Symbol('_scrollLeft');
  const _scrollTop = Symbol('_scrollTop');
  const _scrollWidth = Symbol('_scrollWidth');
  const _childElementCount = Symbol('_childElementCount');
  const _children = Symbol('_children');
  const _firstElementChild = Symbol('_firstElementChild');
  const _lastElementChild = Symbol('_lastElementChild');
  const _querySelectorAll = Symbol('_querySelectorAll');
  const _getComputedStyle = Symbol('_getComputedStyle');
  const _getClientRects = Symbol('_getClientRects');
  const _animate = Symbol('_animate');
  const _scrollIntoView = Symbol('_scrollIntoView');
  const _scrollIntoViewIfNeeded = Symbol('_scrollIntoViewIfNeeded');
  const _insertAdjacentText = Symbol('_insertAdjacentText');
  const _insertAdjacentNode = Symbol('_insertAdjacentNode');
  const _insertAdjacentHtml = Symbol('_insertAdjacentHtml');
  const _insertAdjacentElement = Symbol('_insertAdjacentElement');
  const _canBeUsedToCreateContextualFragment = Symbol('_canBeUsedToCreateContextualFragment');
  const _cannotBeUsedToCreateContextualFragment = Symbol('_cannotBeUsedToCreateContextualFragment');
  const _attachShadow_1 = Symbol('_attachShadow_1');
  const _getElementsByTagName = Symbol('_getElementsByTagName');
  const _hasAttribute = Symbol('_hasAttribute');
  const _hasAttributeNS = Symbol('_hasAttributeNS');
  const _removeAttribute = Symbol('_removeAttribute');
  const _removeAttributeNS = Symbol('_removeAttributeNS');
  const _scroll_1 = Symbol('_scroll_1');
  const _scroll_2 = Symbol('_scroll_2');
  const _scroll_3 = Symbol('_scroll_3');
  const _scrollBy_1 = Symbol('_scrollBy_1');
  const _scrollBy_2 = Symbol('_scrollBy_2');
  const _scrollBy_3 = Symbol('_scrollBy_3');
  const _scrollTo_1 = Symbol('_scrollTo_1');
  const _scrollTo_2 = Symbol('_scrollTo_2');
  const _scrollTo_3 = Symbol('_scrollTo_3');
  const _removeChild = Symbol('_removeChild');
  const _replaceChild = Symbol('_replaceChild');
  const _this = Symbol('_this');
  const _clearChildren = Symbol('_clearChildren');
  const _getRootNode_1 = Symbol('_getRootNode_1');
  const _getRootNode_2 = Symbol('_getRootNode_2');
  html$.Node = class Node extends html$.EventTarget {
    get [$nodes]() {
      return new html$._ChildNodeListLazy.new(this);
    }
    set [$nodes](value) {
      let copy = value[$toList]();
      this[$text] = "";
      for (let node of copy) {
        this[$append](node);
      }
    }
    [$remove]() {
      if (this.parentNode != null) {
        let parent = this.parentNode;
        this.parentNode[_removeChild](this);
      }
    }
    [$replaceWith](otherNode) {
      try {
        let parent = this.parentNode;
        parent[_replaceChild](otherNode, this);
      } catch (e$) {
        let e = dart.getThrown(e$);
      }
      ;
      return this;
    }
    [$insertAllBefore](newNodes, refChild) {
      if (html$._ChildNodeListLazy.is(newNodes)) {
        let otherList = newNodes;
        if (otherList[_this] === this) {
          dart.throw(new core.ArgumentError.new(newNodes));
        }
        for (let i = 0, len = otherList.length; i < dart.notNull(len); ++i) {
          this.insertBefore(otherList[_this].firstChild, refChild);
        }
      } else {
        for (let node of newNodes) {
          this.insertBefore(node, refChild);
        }
      }
    }
    [_clearChildren]() {
      while (this.firstChild != null) {
        this[_removeChild](this.firstChild);
      }
    }
    [$toString]() {
      let value = this.nodeValue;
      return value == null ? super[$toString]() : value;
    }
    get [$childNodes]() {
      return this.childNodes;
    }
    get [$baseUri]() {
      return this.baseURI;
    }
    get [$firstChild]() {
      return this.firstChild;
    }
    get [$isConnected]() {
      return this.isConnected;
    }
    get [$lastChild]() {
      return this.lastChild;
    }
    get [$nextNode]() {
      return this.nextSibling;
    }
    get [$nodeName]() {
      return this.nodeName;
    }
    get [$nodeType]() {
      return this.nodeType;
    }
    get [$nodeValue]() {
      return this.nodeValue;
    }
    get [$ownerDocument]() {
      return this.ownerDocument;
    }
    get [$parent]() {
      return this.parentElement;
    }
    get [$parentNode]() {
      return this.parentNode;
    }
    get [$previousNode]() {
      return this.previousSibling;
    }
    get [$text]() {
      return this.textContent;
    }
    set [$text](value) {
      this.textContent = value;
    }
    [$append](...args) {
      return this.appendChild.apply(this, args);
    }
    [$clone](...args) {
      return this.cloneNode.apply(this, args);
    }
    [$contains](...args) {
      return this.contains.apply(this, args);
    }
    [$getRootNode](options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return this[_getRootNode_1](options_1);
      }
      return this[_getRootNode_2]();
    }
    [_getRootNode_1](...args) {
      return this.getRootNode.apply(this, args);
    }
    [_getRootNode_2](...args) {
      return this.getRootNode.apply(this, args);
    }
    [$hasChildNodes](...args) {
      return this.hasChildNodes.apply(this, args);
    }
    [$insertBefore](...args) {
      return this.insertBefore.apply(this, args);
    }
    [_removeChild](...args) {
      return this.removeChild.apply(this, args);
    }
    [_replaceChild](...args) {
      return this.replaceChild.apply(this, args);
    }
  };
  (html$.Node._created = function() {
    this[childNodes] = null;
    this[baseUri] = null;
    this[firstChild] = null;
    this[isConnected] = null;
    this[lastChild] = null;
    this[nextNode] = null;
    this[nodeName] = null;
    this[nodeType] = null;
    this[nodeValue] = null;
    this[ownerDocument] = null;
    this[parent] = null;
    this[parentNode] = null;
    this[previousNode] = null;
    this[text] = null;
    html$.Node.__proto__._created.call(this);
  }).prototype = html$.Node.prototype;
  dart.addTypeTests(html$.Node);
  const childNodes = Symbol("Node.childNodes");
  const baseUri = Symbol("Node.baseUri");
  const firstChild = Symbol("Node.firstChild");
  const isConnected = Symbol("Node.isConnected");
  const lastChild = Symbol("Node.lastChild");
  const nextNode = Symbol("Node.nextNode");
  const nodeName = Symbol("Node.nodeName");
  const nodeType = Symbol("Node.nodeType");
  const nodeValue = Symbol("Node.nodeValue");
  const ownerDocument = Symbol("Node.ownerDocument");
  const parent = Symbol("Node.parent");
  const parentNode = Symbol("Node.parentNode");
  const previousNode = Symbol("Node.previousNode");
  const text = Symbol("Node.text");
  dart.setMethodSignature(html$.Node, () => ({
    __proto__: dart.getMethods(html$.Node.__proto__),
    [$remove]: dart.fnType(dart.void, []),
    [$replaceWith]: dart.fnType(html$.Node, [html$.Node]),
    [$insertAllBefore]: dart.fnType(html$.Node, [core.Iterable$(html$.Node), html$.Node]),
    [_clearChildren]: dart.fnType(dart.void, []),
    [$append]: dart.fnType(html$.Node, [html$.Node]),
    [$clone]: dart.fnType(html$.Node, [core.bool]),
    [$contains]: dart.fnType(core.bool, [html$.Node]),
    [$getRootNode]: dart.fnType(html$.Node, [], [core.Map]),
    [_getRootNode_1]: dart.fnType(html$.Node, [dart.dynamic]),
    [_getRootNode_2]: dart.fnType(html$.Node, []),
    [$hasChildNodes]: dart.fnType(core.bool, []),
    [$insertBefore]: dart.fnType(html$.Node, [html$.Node, html$.Node]),
    [_removeChild]: dart.fnType(html$.Node, [html$.Node]),
    [_replaceChild]: dart.fnType(html$.Node, [html$.Node, html$.Node])
  }));
  dart.setGetterSignature(html$.Node, () => ({
    __proto__: dart.getGetters(html$.Node.__proto__),
    [$nodes]: core.List$(html$.Node)
  }));
  dart.setSetterSignature(html$.Node, () => ({
    __proto__: dart.getSetters(html$.Node.__proto__),
    [$nodes]: core.Iterable$(html$.Node)
  }));
  dart.setFieldSignature(html$.Node, () => ({
    __proto__: dart.getFields(html$.Node.__proto__),
    [$childNodes]: dart.finalFieldType(ListOfNode()),
    [$baseUri]: dart.finalFieldType(core.String),
    [$firstChild]: dart.finalFieldType(html$.Node),
    [$isConnected]: dart.finalFieldType(core.bool),
    [$lastChild]: dart.finalFieldType(html$.Node),
    [$nextNode]: dart.finalFieldType(html$.Node),
    [$nodeName]: dart.finalFieldType(core.String),
    [$nodeType]: dart.finalFieldType(core.int),
    [$nodeValue]: dart.finalFieldType(core.String),
    [$ownerDocument]: dart.finalFieldType(html$.Document),
    [$parent]: dart.finalFieldType(html$.Element),
    [$parentNode]: dart.finalFieldType(html$.Node),
    [$previousNode]: dart.finalFieldType(html$.Node),
    [$text]: dart.fieldType(core.String)
  }));
  dart.defineLazy(html$.Node, {
    /*html$.Node.ATTRIBUTE_NODE*/get ATTRIBUTE_NODE() {
      return 2;
    },
    /*html$.Node.CDATA_SECTION_NODE*/get CDATA_SECTION_NODE() {
      return 4;
    },
    /*html$.Node.COMMENT_NODE*/get COMMENT_NODE() {
      return 8;
    },
    /*html$.Node.DOCUMENT_FRAGMENT_NODE*/get DOCUMENT_FRAGMENT_NODE() {
      return 11;
    },
    /*html$.Node.DOCUMENT_NODE*/get DOCUMENT_NODE() {
      return 9;
    },
    /*html$.Node.DOCUMENT_TYPE_NODE*/get DOCUMENT_TYPE_NODE() {
      return 10;
    },
    /*html$.Node.ELEMENT_NODE*/get ELEMENT_NODE() {
      return 1;
    },
    /*html$.Node.ENTITY_NODE*/get ENTITY_NODE() {
      return 6;
    },
    /*html$.Node.ENTITY_REFERENCE_NODE*/get ENTITY_REFERENCE_NODE() {
      return 5;
    },
    /*html$.Node.NOTATION_NODE*/get NOTATION_NODE() {
      return 12;
    },
    /*html$.Node.PROCESSING_INSTRUCTION_NODE*/get PROCESSING_INSTRUCTION_NODE() {
      return 7;
    },
    /*html$.Node.TEXT_NODE*/get TEXT_NODE() {
      return 3;
    }
  });
  dart.registerExtension("Node", html$.Node);
  html$.Element = class Element extends html$.Node {
    static html(html, opts) {
      let validator = opts && 'validator' in opts ? opts.validator : null;
      let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
      let fragment = html$.document.body[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
      return html$.Element._check(fragment[$nodes][$where](dart.fn(e => html$.Element.is(e), NodeTobool()))[$single]);
    }
    static tag(tag, typeExtention) {
      if (typeExtention === void 0) typeExtention = null;
      return html$.Element._check(html$._ElementFactoryProvider.createElement_tag(tag, typeExtention));
    }
    static a() {
      return html$.AnchorElement.new();
    }
    static article() {
      return html$.Element.tag("article");
    }
    static aside() {
      return html$.Element.tag("aside");
    }
    static audio() {
      return html$.Element.tag("audio");
    }
    static br() {
      return html$.BRElement.new();
    }
    static canvas() {
      return html$.CanvasElement.new();
    }
    static div() {
      return html$.DivElement.new();
    }
    static footer() {
      return html$.Element.tag("footer");
    }
    static header() {
      return html$.Element.tag("header");
    }
    static hr() {
      return html$.Element.tag("hr");
    }
    static iframe() {
      return html$.Element.tag("iframe");
    }
    static img() {
      return html$.Element.tag("img");
    }
    static li() {
      return html$.Element.tag("li");
    }
    static nav() {
      return html$.Element.tag("nav");
    }
    static ol() {
      return html$.Element.tag("ol");
    }
    static option() {
      return html$.Element.tag("option");
    }
    static p() {
      return html$.Element.tag("p");
    }
    static pre() {
      return html$.Element.tag("pre");
    }
    static section() {
      return html$.Element.tag("section");
    }
    static select() {
      return html$.Element.tag("select");
    }
    static span() {
      return html$.Element.tag("span");
    }
    static svg() {
      return html$.Element.tag("svg");
    }
    static table() {
      return html$.Element.tag("table");
    }
    static td() {
      return html$.Element.tag("td");
    }
    static textarea() {
      return html$.Element.tag("textarea");
    }
    static th() {
      return html$.Element.tag("th");
    }
    static tr() {
      return html$.Element.tag("tr");
    }
    static ul() {
      return html$.Element.tag("ul");
    }
    static video() {
      return html$.Element.tag("video");
    }
    get [$attributes]() {
      return new html$._ElementAttributeMap.new(this);
    }
    set [$attributes](value) {
      let attributes = this[$attributes];
      attributes[$clear]();
      for (let key of value[$keys]) {
        attributes[$_set](key, value[$_get](key));
      }
    }
    get [$children]() {
      return new html$._ChildrenElementList._wrap(this);
    }
    set [$children](value) {
      let copy = value[$toList]();
      let children = this[$children];
      children[$clear]();
      children[$addAll](copy);
    }
    [$querySelectorAll](T, selectors) {
      return new (html$._FrozenElementList$(T))._wrap(this[_querySelectorAll](selectors));
    }
    get [$classes]() {
      return new html$._ElementCssClassSet.new(this);
    }
    set [$classes](value) {
      let classSet = this[$classes];
      classSet.clear();
      classSet.addAll(value);
    }
    get [$dataset]() {
      return new html$._DataAttributeMap.new(this[$attributes]);
    }
    set [$dataset](value) {
      let data = this[$dataset];
      data[$clear]();
      for (let key of value[$keys]) {
        data[$_set](key, value[$_get](key));
      }
    }
    [$getNamespacedAttributes](namespace) {
      return new html$._NamespacedAttributeMap.new(this, namespace);
    }
    [$getComputedStyle](pseudoElement) {
      if (pseudoElement === void 0) pseudoElement = null;
      if (pseudoElement == null) {
        pseudoElement = "";
      }
      return html$.window[_getComputedStyle](this, pseudoElement);
    }
    get [$client]() {
      return new (RectangleOfnum()).new(this.clientLeft, this.clientTop, this.clientWidth, this.clientHeight);
    }
    get [$offset]() {
      return new (RectangleOfnum()).new(this[$offsetLeft], this[$offsetTop], this[$offsetWidth], this[$offsetHeight]);
    }
    [$appendText](text) {
      this[$append](html$.Text.new(text));
    }
    [$appendHtml](text, opts) {
      let validator = opts && 'validator' in opts ? opts.validator : null;
      let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
      this[$insertAdjacentHtml]("beforeend", text, {validator: validator, treeSanitizer: treeSanitizer});
    }
    static isTagSupported(tag) {
      let e = html$._ElementFactoryProvider.createElement_tag(tag, null);
      return html$.Element.is(e) && !html$.UnknownElement.is(e);
    }
    [$attached]() {
      this[$enteredView]();
    }
    [$detached]() {
      this[$leftView]();
    }
    [$enteredView]() {}
    [$getClientRects]() {
      let value = this[_getClientRects]();
      let jsProto = value.prototype;
      if (jsProto == null) {
        value.prototype = Object.create(null);
      }
      _js_helper.applyExtension("DOMRectList", value);
      return value;
    }
    [$leftView]() {}
    [$animate](frames, timing) {
      if (timing === void 0) timing = null;
      if (!core.Iterable.is(frames) || !dart.test(frames[$every](dart.fn(x => core.Map.is(x), MapOfString$dynamicTobool())))) {
        dart.throw(new core.ArgumentError.new("The frames parameter should be a List of Maps " + "with frame information"));
      }
      let convertedFrames = null;
      if (core.Iterable.is(frames)) {
        convertedFrames = frames[$map](dart.dynamic, dart.fn(html_common.convertDartToNative_Dictionary, Map__Todynamic()))[$toList]();
      } else {
        convertedFrames = frames;
      }
      let convertedTiming = core.Map.is(timing) ? html_common.convertDartToNative_Dictionary(timing) : timing;
      return convertedTiming == null ? this[_animate](convertedFrames) : this[_animate](convertedFrames, convertedTiming);
    }
    [_animate](...args) {
      return this.animate.apply(this, args);
    }
    [$attributeChanged](name, oldValue, newValue) {}
    get [$localName]() {
      return this[_localName];
    }
    get [$namespaceUri]() {
      return this[_namespaceUri];
    }
    [$toString]() {
      return this[$localName];
    }
    [$scrollIntoView](alignment) {
      if (alignment === void 0) alignment = null;
      let hasScrollIntoViewIfNeeded = true;
      hasScrollIntoViewIfNeeded = !!this.scrollIntoViewIfNeeded;
      if (dart.equals(alignment, html$.ScrollAlignment.TOP)) {
        this[_scrollIntoView](true);
      } else if (dart.equals(alignment, html$.ScrollAlignment.BOTTOM)) {
        this[_scrollIntoView](false);
      } else if (hasScrollIntoViewIfNeeded) {
        if (dart.equals(alignment, html$.ScrollAlignment.CENTER)) {
          this[_scrollIntoViewIfNeeded](true);
        } else {
          this[_scrollIntoViewIfNeeded]();
        }
      } else {
        this[_scrollIntoView]();
      }
    }
    static _determineMouseWheelEventType(e) {
      return "wheel";
    }
    static _determineTransitionEventType(e) {
      if (dart.test(html_common.Device.isWebKit)) {
        return "webkitTransitionEnd";
      } else if (dart.test(html_common.Device.isOpera)) {
        return "oTransitionEnd";
      }
      return "transitionend";
    }
    [$insertAdjacentText](where, text) {
      if (!!this.insertAdjacentText) {
        this[_insertAdjacentText](where, text);
      } else {
        this[_insertAdjacentNode](where, html$.Text.new(text));
      }
    }
    [_insertAdjacentText](...args) {
      return this.insertAdjacentText.apply(this, args);
    }
    [$insertAdjacentHtml](where, html, opts) {
      let validator = opts && 'validator' in opts ? opts.validator : null;
      let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
      if (html$._TrustedHtmlTreeSanitizer.is(treeSanitizer)) {
        this[_insertAdjacentHtml](where, html);
      } else {
        this[_insertAdjacentNode](where, this[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer}));
      }
    }
    [_insertAdjacentHtml](...args) {
      return this.insertAdjacentHTML.apply(this, args);
    }
    [$insertAdjacentElement](where, element) {
      if (!!this.insertAdjacentElement) {
        this[_insertAdjacentElement](where, element);
      } else {
        this[_insertAdjacentNode](where, element);
      }
      return element;
    }
    [_insertAdjacentElement](...args) {
      return this.insertAdjacentElement.apply(this, args);
    }
    [_insertAdjacentNode](where, node) {
      switch (where[$toLowerCase]()) {
        case "beforebegin":
        {
          this.parentNode.insertBefore(node, this);
          break;
        }
        case "afterbegin":
        {
          let first = dart.notNull(this[$nodes][$length]) > 0 ? this[$nodes][$_get](0) : null;
          this.insertBefore(node, first);
          break;
        }
        case "beforeend":
        {
          this[$append](node);
          break;
        }
        case "afterend":
        {
          this.parentNode.insertBefore(node, this[$nextNode]);
          break;
        }
        default:
        {
          dart.throw(new core.ArgumentError.new("Invalid position " + dart.str(where)));
        }
      }
    }
    [$matches](selectors) {
      if (!!this.matches) {
        return this.matches(selectors);
      } else if (!!this.webkitMatchesSelector) {
        return this.webkitMatchesSelector(selectors);
      } else if (!!this.mozMatchesSelector) {
        return this.mozMatchesSelector(selectors);
      } else if (!!this.msMatchesSelector) {
        return this.msMatchesSelector(selectors);
      } else if (!!this.oMatchesSelector) {
        return this.oMatchesSelector(selectors);
      } else {
        dart.throw(new core.UnsupportedError.new("Not supported on this platform"));
      }
    }
    [$matchesWithAncestors](selectors) {
      let elem = this;
      do {
        if (dart.test(elem[$matches](selectors))) return true;
        elem = elem[$parent];
      } while (elem != null);
      return false;
    }
    [$createShadowRoot]() {
      return (this.createShadowRoot || this.webkitCreateShadowRoot).call(this);
    }
    get [$shadowRoot]() {
      return this.shadowRoot || this.webkitShadowRoot;
    }
    get [$contentEdge]() {
      return new html$._ContentCssRect.new(this);
    }
    get [$paddingEdge]() {
      return new html$._PaddingCssRect.new(this);
    }
    get [$borderEdge]() {
      return new html$._BorderCssRect.new(this);
    }
    get [$marginEdge]() {
      return new html$._MarginCssRect.new(this);
    }
    get [$documentOffset]() {
      return this[$offsetTo](html$.document.documentElement);
    }
    [$offsetTo](parent) {
      return html$.Element._offsetToHelper(this, parent);
    }
    static _offsetToHelper(current, parent) {
      let sameAsParent = current == parent;
      let foundAsParent = sameAsParent || parent.tagName === "HTML";
      if (current == null || sameAsParent) {
        if (foundAsParent) return new (PointOfnum()).new(0, 0);
        dart.throw(new core.ArgumentError.new("Specified element is not a transitive offset " + "parent of this element."));
      }
      let parentOffset = current.offsetParent;
      let p = html$.Element._offsetToHelper(parentOffset, parent);
      return new (PointOfnum()).new(dart.notNull(p.x) + dart.notNull(current[$offsetLeft]), dart.notNull(p.y) + dart.notNull(current[$offsetTop]));
    }
    [$createFragment](html, opts) {
      let validator = opts && 'validator' in opts ? opts.validator : null;
      let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
      if (treeSanitizer == null) {
        if (validator == null) {
          if (html$.Element._defaultValidator == null) {
            html$.Element._defaultValidator = new html$.NodeValidatorBuilder.common();
          }
          validator = html$.Element._defaultValidator;
        }
        if (html$.Element._defaultSanitizer == null) {
          html$.Element._defaultSanitizer = new html$._ValidatingTreeSanitizer.new(validator);
        } else {
          html$.Element._defaultSanitizer.validator = validator;
        }
        treeSanitizer = html$.Element._defaultSanitizer;
      } else if (validator != null) {
        dart.throw(new core.ArgumentError.new("validator can only be passed if treeSanitizer is null"));
      }
      if (html$.Element._parseDocument == null) {
        html$.Element._parseDocument = html$.document.implementation[$createHtmlDocument]("");
        html$.Element._parseRange = html$.Element._parseDocument.createRange();
        let base = html$.BaseElement._check(html$.Element._parseDocument[$createElement]("base"));
        base.href = html$.document[$baseUri];
        html$.Element._parseDocument[$head][$append](base);
      }
      if (html$.Element._parseDocument.body == null) {
        html$.Element._parseDocument.body = html$.BodyElement._check(html$.Element._parseDocument[$createElement]("body"));
      }
      let contextElement = null;
      if (html$.BodyElement.is(this)) {
        contextElement = html$.Element._parseDocument.body;
      } else {
        contextElement = html$.Element._parseDocument[$createElement](this.tagName);
        html$.Element._parseDocument.body[$append](html$.Node._check(contextElement));
      }
      let fragment = null;
      if (dart.test(html$.Range.supportsCreateContextualFragment) && dart.test(this[_canBeUsedToCreateContextualFragment])) {
        html$.Element._parseRange.selectNodeContents(html$.Node._check(contextElement));
        fragment = html$.Element._parseRange.createContextualFragment(html);
      } else {
        dart.dput(contextElement, _innerHtml, html);
        fragment = html$.Element._parseDocument.createDocumentFragment();
        while (dart.dload(contextElement, 'firstChild') != null) {
          dart.dsend(fragment, 'append', [dart.dload(contextElement, 'firstChild')]);
        }
      }
      if (!dart.equals(contextElement, html$.Element._parseDocument.body)) {
        dart.dsend(contextElement, 'remove', []);
      }
      treeSanitizer.sanitizeTree(html$.Node._check(fragment));
      html$.document.adoptNode(html$.Node._check(fragment));
      return html$.DocumentFragment._check(fragment);
    }
    get [_canBeUsedToCreateContextualFragment]() {
      return !dart.test(this[_cannotBeUsedToCreateContextualFragment]);
    }
    get [_cannotBeUsedToCreateContextualFragment]() {
      return html$.Element._tagsForWhichCreateContextualFragmentIsNotSupported[$contains](this.tagName);
    }
    set [$innerHtml](html) {
      this[$setInnerHtml](html);
    }
    [$setInnerHtml](html, opts) {
      let validator = opts && 'validator' in opts ? opts.validator : null;
      let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
      this[$text] = null;
      if (html$._TrustedHtmlTreeSanitizer.is(treeSanitizer)) {
        this[_innerHtml] = html;
      } else {
        this[$append](this[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer}));
      }
    }
    get [$innerHtml]() {
      return this[_innerHtml];
    }
    get [$on]() {
      return new html$.ElementEvents.new(this);
    }
    static _hasCorruptedAttributes(element) {
      return (function(element) {
        if (!(element.attributes instanceof NamedNodeMap)) {
          return true;
        }
        var childNodes = element.childNodes;
        if (element.lastChild && element.lastChild !== childNodes[childNodes.length - 1]) {
          return true;
        }
        if (element.children) {
          if (!(element.children instanceof HTMLCollection || element.children instanceof NodeList)) {
            return true;
          }
        }
        var length = 0;
        if (element.children) {
          length = element.children.length;
        }
        for (var i = 0; i < length; i++) {
          var child = element.children[i];
          if (child.id == 'attributes' || child.name == 'attributes' || child.id == 'lastChild' || child.name == 'lastChild' || child.id == 'children' || child.name == 'children') {
            return true;
          }
        }
        return false;
      })(element);
    }
    static _hasCorruptedAttributesAdditionalCheck(element) {
      return !(element.attributes instanceof NamedNodeMap);
    }
    static _safeTagName(element) {
      let result = "element tag unavailable";
      try {
        if (typeof dart.dload(element, 'tagName') == 'string') {
          result = core.String._check(dart.dload(element, 'tagName'));
        }
      } catch (e$) {
        let e = dart.getThrown(e$);
      }
      return result;
    }
    get [$offsetParent]() {
      return this.offsetParent;
    }
    get [$offsetHeight]() {
      return this.offsetHeight[$round]();
    }
    get [$offsetLeft]() {
      return this.offsetLeft[$round]();
    }
    get [$offsetTop]() {
      return this.offsetTop[$round]();
    }
    get [$offsetWidth]() {
      return this.offsetWidth[$round]();
    }
    get [$scrollHeight]() {
      return this.scrollHeight[$round]();
    }
    get [$scrollLeft]() {
      return this.scrollLeft[$round]();
    }
    set [$scrollLeft](value) {
      this.scrollLeft = value[$round]();
    }
    get [$scrollTop]() {
      return this.scrollTop[$round]();
    }
    set [$scrollTop](value) {
      this.scrollTop = value[$round]();
    }
    get [$scrollWidth]() {
      return this.scrollWidth[$round]();
    }
    get [$contentEditable]() {
      return this.contentEditable;
    }
    set [$contentEditable](value) {
      this.contentEditable = value;
    }
    get [$dir]() {
      return this.dir;
    }
    set [$dir](value) {
      this.dir = value;
    }
    get [$draggable]() {
      return this.draggable;
    }
    set [$draggable](value) {
      this.draggable = value;
    }
    get [$hidden]() {
      return this.hidden;
    }
    set [$hidden](value) {
      this.hidden = value;
    }
    get [$inert]() {
      return this.inert;
    }
    set [$inert](value) {
      this.inert = value;
    }
    get [$inputMode]() {
      return this.inputMode;
    }
    set [$inputMode](value) {
      this.inputMode = value;
    }
    get [$isContentEditable]() {
      return this.isContentEditable;
    }
    get [$lang]() {
      return this.lang;
    }
    set [$lang](value) {
      this.lang = value;
    }
    get [$spellcheck]() {
      return this.spellcheck;
    }
    set [$spellcheck](value) {
      this.spellcheck = value;
    }
    get [$style]() {
      return this.style;
    }
    get [$tabIndex]() {
      return this.tabIndex;
    }
    set [$tabIndex](value) {
      this.tabIndex = value;
    }
    get [$title]() {
      return this.title;
    }
    set [$title](value) {
      this.title = value;
    }
    get [$translate]() {
      return this.translate;
    }
    set [$translate](value) {
      this.translate = value;
    }
    [$blur](...args) {
      return this.blur.apply(this, args);
    }
    [$click](...args) {
      return this.click.apply(this, args);
    }
    [$focus](...args) {
      return this.focus.apply(this, args);
    }
    get [$accessibleNode]() {
      return this.accessibleNode;
    }
    get [$assignedSlot]() {
      return this.assignedSlot;
    }
    get [_attributes$]() {
      return this.attributes;
    }
    get [$className]() {
      return this.className;
    }
    set [$className](value) {
      this.className = value;
    }
    get [$clientHeight]() {
      return this.clientHeight;
    }
    get [$clientLeft]() {
      return this.clientLeft;
    }
    get [$clientTop]() {
      return this.clientTop;
    }
    get [$clientWidth]() {
      return this.clientWidth;
    }
    get [$computedName]() {
      return this.computedName;
    }
    get [$computedRole]() {
      return this.computedRole;
    }
    get [$id]() {
      return this.id;
    }
    set [$id](value) {
      this.id = value;
    }
    get [_innerHtml]() {
      return this.innerHTML;
    }
    set [_innerHtml](value) {
      this.innerHTML = value;
    }
    get [_localName]() {
      return this.localName;
    }
    get [_namespaceUri]() {
      return this.namespaceURI;
    }
    get [$outerHtml]() {
      return this.outerHTML;
    }
    get [_scrollHeight]() {
      return this.scrollHeight;
    }
    get [_scrollLeft]() {
      return this.scrollLeft;
    }
    set [_scrollLeft](value) {
      this.scrollLeft = value;
    }
    get [_scrollTop]() {
      return this.scrollTop;
    }
    set [_scrollTop](value) {
      this.scrollTop = value;
    }
    get [_scrollWidth]() {
      return this.scrollWidth;
    }
    get [$slot]() {
      return this.slot;
    }
    set [$slot](value) {
      this.slot = value;
    }
    get [$styleMap]() {
      return this.styleMap;
    }
    get [$tagName]() {
      return this.tagName;
    }
    [$attachShadow](shadowRootInitDict) {
      let shadowRootInitDict_1 = html_common.convertDartToNative_Dictionary(shadowRootInitDict);
      return this[_attachShadow_1](shadowRootInitDict_1);
    }
    [_attachShadow_1](...args) {
      return this.attachShadow.apply(this, args);
    }
    [$closest](...args) {
      return this.closest.apply(this, args);
    }
    [$getAnimations](...args) {
      return this.getAnimations.apply(this, args);
    }
    [$getAttribute](...args) {
      return this.getAttribute.apply(this, args);
    }
    [$getAttributeNS](...args) {
      return this.getAttributeNS.apply(this, args);
    }
    [$getAttributeNames](...args) {
      return this.getAttributeNames.apply(this, args);
    }
    [$getBoundingClientRect](...args) {
      return this.getBoundingClientRect.apply(this, args);
    }
    [_getClientRects](...args) {
      return this.getClientRects.apply(this, args);
    }
    [$getDestinationInsertionPoints](...args) {
      return this.getDestinationInsertionPoints.apply(this, args);
    }
    [$getElementsByClassName](...args) {
      return this.getElementsByClassName.apply(this, args);
    }
    [_getElementsByTagName](...args) {
      return this.getElementsByTagName.apply(this, args);
    }
    [_hasAttribute](...args) {
      return this.hasAttribute.apply(this, args);
    }
    [_hasAttributeNS](...args) {
      return this.hasAttributeNS.apply(this, args);
    }
    [$hasPointerCapture](...args) {
      return this.hasPointerCapture.apply(this, args);
    }
    [$releasePointerCapture](...args) {
      return this.releasePointerCapture.apply(this, args);
    }
    [_removeAttribute](...args) {
      return this.removeAttribute.apply(this, args);
    }
    [_removeAttributeNS](...args) {
      return this.removeAttributeNS.apply(this, args);
    }
    [$requestPointerLock](...args) {
      return this.requestPointerLock.apply(this, args);
    }
    [$scroll](options_OR_x, y) {
      if (options_OR_x === void 0) options_OR_x = null;
      if (y === void 0) y = null;
      if (options_OR_x == null && y == null) {
        this[_scroll_1]();
        return;
      }
      if (core.Map.is(options_OR_x) && y == null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
        this[_scroll_2](options_1);
        return;
      }
      if (y != null && typeof options_OR_x == 'number') {
        this[_scroll_3](options_OR_x, y);
        return;
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_scroll_1](...args) {
      return this.scroll.apply(this, args);
    }
    [_scroll_2](...args) {
      return this.scroll.apply(this, args);
    }
    [_scroll_3](...args) {
      return this.scroll.apply(this, args);
    }
    [$scrollBy](options_OR_x, y) {
      if (options_OR_x === void 0) options_OR_x = null;
      if (y === void 0) y = null;
      if (options_OR_x == null && y == null) {
        this[_scrollBy_1]();
        return;
      }
      if (core.Map.is(options_OR_x) && y == null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
        this[_scrollBy_2](options_1);
        return;
      }
      if (y != null && typeof options_OR_x == 'number') {
        this[_scrollBy_3](options_OR_x, y);
        return;
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_scrollBy_1](...args) {
      return this.scrollBy.apply(this, args);
    }
    [_scrollBy_2](...args) {
      return this.scrollBy.apply(this, args);
    }
    [_scrollBy_3](...args) {
      return this.scrollBy.apply(this, args);
    }
    [_scrollIntoView](...args) {
      return this.scrollIntoView.apply(this, args);
    }
    [_scrollIntoViewIfNeeded](...args) {
      return this.scrollIntoViewIfNeeded.apply(this, args);
    }
    [$scrollTo](options_OR_x, y) {
      if (options_OR_x === void 0) options_OR_x = null;
      if (y === void 0) y = null;
      if (options_OR_x == null && y == null) {
        this[_scrollTo_1]();
        return;
      }
      if (core.Map.is(options_OR_x) && y == null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
        this[_scrollTo_2](options_1);
        return;
      }
      if (y != null && typeof options_OR_x == 'number') {
        this[_scrollTo_3](options_OR_x, y);
        return;
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_scrollTo_1](...args) {
      return this.scrollTo.apply(this, args);
    }
    [_scrollTo_2](...args) {
      return this.scrollTo.apply(this, args);
    }
    [_scrollTo_3](...args) {
      return this.scrollTo.apply(this, args);
    }
    [$setApplyScroll](...args) {
      return this.setApplyScroll.apply(this, args);
    }
    [$setAttribute](...args) {
      return this.setAttribute.apply(this, args);
    }
    [$setAttributeNS](...args) {
      return this.setAttributeNS.apply(this, args);
    }
    [$setDistributeScroll](...args) {
      return this.setDistributeScroll.apply(this, args);
    }
    [$setPointerCapture](...args) {
      return this.setPointerCapture.apply(this, args);
    }
    [$requestFullscreen](...args) {
      return this.webkitRequestFullscreen.apply(this, args);
    }
    [$after](...args) {
      return this.after.apply(this, args);
    }
    [$before](...args) {
      return this.before.apply(this, args);
    }
    get [$nextElementSibling]() {
      return this.nextElementSibling;
    }
    get [$previousElementSibling]() {
      return this.previousElementSibling;
    }
    get [_childElementCount]() {
      return this.childElementCount;
    }
    get [_children]() {
      return this.children;
    }
    get [_firstElementChild]() {
      return this.firstElementChild;
    }
    get [_lastElementChild]() {
      return this.lastElementChild;
    }
    [$querySelector](...args) {
      return this.querySelector.apply(this, args);
    }
    [_querySelectorAll](...args) {
      return this.querySelectorAll.apply(this, args);
    }
    get [$onAbort]() {
      return html$.Element.abortEvent.forElement(this);
    }
    get [$onBeforeCopy]() {
      return html$.Element.beforeCopyEvent.forElement(this);
    }
    get [$onBeforeCut]() {
      return html$.Element.beforeCutEvent.forElement(this);
    }
    get [$onBeforePaste]() {
      return html$.Element.beforePasteEvent.forElement(this);
    }
    get [$onBlur]() {
      return html$.Element.blurEvent.forElement(this);
    }
    get [$onCanPlay]() {
      return html$.Element.canPlayEvent.forElement(this);
    }
    get [$onCanPlayThrough]() {
      return html$.Element.canPlayThroughEvent.forElement(this);
    }
    get [$onChange]() {
      return html$.Element.changeEvent.forElement(this);
    }
    get [$onClick]() {
      return html$.Element.clickEvent.forElement(this);
    }
    get [$onContextMenu]() {
      return html$.Element.contextMenuEvent.forElement(this);
    }
    get [$onCopy]() {
      return html$.Element.copyEvent.forElement(this);
    }
    get [$onCut]() {
      return html$.Element.cutEvent.forElement(this);
    }
    get [$onDoubleClick]() {
      return html$.Element.doubleClickEvent.forElement(this);
    }
    get [$onDrag]() {
      return html$.Element.dragEvent.forElement(this);
    }
    get [$onDragEnd]() {
      return html$.Element.dragEndEvent.forElement(this);
    }
    get [$onDragEnter]() {
      return html$.Element.dragEnterEvent.forElement(this);
    }
    get [$onDragLeave]() {
      return html$.Element.dragLeaveEvent.forElement(this);
    }
    get [$onDragOver]() {
      return html$.Element.dragOverEvent.forElement(this);
    }
    get [$onDragStart]() {
      return html$.Element.dragStartEvent.forElement(this);
    }
    get [$onDrop]() {
      return html$.Element.dropEvent.forElement(this);
    }
    get [$onDurationChange]() {
      return html$.Element.durationChangeEvent.forElement(this);
    }
    get [$onEmptied]() {
      return html$.Element.emptiedEvent.forElement(this);
    }
    get [$onEnded]() {
      return html$.Element.endedEvent.forElement(this);
    }
    get [$onError]() {
      return html$.Element.errorEvent.forElement(this);
    }
    get [$onFocus]() {
      return html$.Element.focusEvent.forElement(this);
    }
    get [$onInput]() {
      return html$.Element.inputEvent.forElement(this);
    }
    get [$onInvalid]() {
      return html$.Element.invalidEvent.forElement(this);
    }
    get [$onKeyDown]() {
      return html$.Element.keyDownEvent.forElement(this);
    }
    get [$onKeyPress]() {
      return html$.Element.keyPressEvent.forElement(this);
    }
    get [$onKeyUp]() {
      return html$.Element.keyUpEvent.forElement(this);
    }
    get [$onLoad]() {
      return html$.Element.loadEvent.forElement(this);
    }
    get [$onLoadedData]() {
      return html$.Element.loadedDataEvent.forElement(this);
    }
    get [$onLoadedMetadata]() {
      return html$.Element.loadedMetadataEvent.forElement(this);
    }
    get [$onMouseDown]() {
      return html$.Element.mouseDownEvent.forElement(this);
    }
    get [$onMouseEnter]() {
      return html$.Element.mouseEnterEvent.forElement(this);
    }
    get [$onMouseLeave]() {
      return html$.Element.mouseLeaveEvent.forElement(this);
    }
    get [$onMouseMove]() {
      return html$.Element.mouseMoveEvent.forElement(this);
    }
    get [$onMouseOut]() {
      return html$.Element.mouseOutEvent.forElement(this);
    }
    get [$onMouseOver]() {
      return html$.Element.mouseOverEvent.forElement(this);
    }
    get [$onMouseUp]() {
      return html$.Element.mouseUpEvent.forElement(this);
    }
    get [$onMouseWheel]() {
      return html$.Element.mouseWheelEvent.forElement(this);
    }
    get [$onPaste]() {
      return html$.Element.pasteEvent.forElement(this);
    }
    get [$onPause]() {
      return html$.Element.pauseEvent.forElement(this);
    }
    get [$onPlay]() {
      return html$.Element.playEvent.forElement(this);
    }
    get [$onPlaying]() {
      return html$.Element.playingEvent.forElement(this);
    }
    get [$onRateChange]() {
      return html$.Element.rateChangeEvent.forElement(this);
    }
    get [$onReset]() {
      return html$.Element.resetEvent.forElement(this);
    }
    get [$onResize]() {
      return html$.Element.resizeEvent.forElement(this);
    }
    get [$onScroll]() {
      return html$.Element.scrollEvent.forElement(this);
    }
    get [$onSearch]() {
      return html$.Element.searchEvent.forElement(this);
    }
    get [$onSeeked]() {
      return html$.Element.seekedEvent.forElement(this);
    }
    get [$onSeeking]() {
      return html$.Element.seekingEvent.forElement(this);
    }
    get [$onSelect]() {
      return html$.Element.selectEvent.forElement(this);
    }
    get [$onSelectStart]() {
      return html$.Element.selectStartEvent.forElement(this);
    }
    get [$onStalled]() {
      return html$.Element.stalledEvent.forElement(this);
    }
    get [$onSubmit]() {
      return html$.Element.submitEvent.forElement(this);
    }
    get [$onSuspend]() {
      return html$.Element.suspendEvent.forElement(this);
    }
    get [$onTimeUpdate]() {
      return html$.Element.timeUpdateEvent.forElement(this);
    }
    get [$onTouchCancel]() {
      return html$.Element.touchCancelEvent.forElement(this);
    }
    get [$onTouchEnd]() {
      return html$.Element.touchEndEvent.forElement(this);
    }
    get [$onTouchEnter]() {
      return html$.Element.touchEnterEvent.forElement(this);
    }
    get [$onTouchLeave]() {
      return html$.Element.touchLeaveEvent.forElement(this);
    }
    get [$onTouchMove]() {
      return html$.Element.touchMoveEvent.forElement(this);
    }
    get [$onTouchStart]() {
      return html$.Element.touchStartEvent.forElement(this);
    }
    get [$onTransitionEnd]() {
      return html$.Element.transitionEndEvent.forElement(this);
    }
    get [$onVolumeChange]() {
      return html$.Element.volumeChangeEvent.forElement(this);
    }
    get [$onWaiting]() {
      return html$.Element.waitingEvent.forElement(this);
    }
    get [$onFullscreenChange]() {
      return html$.Element.fullscreenChangeEvent.forElement(this);
    }
    get [$onFullscreenError]() {
      return html$.Element.fullscreenErrorEvent.forElement(this);
    }
    get [$onWheel]() {
      return html$.Element.wheelEvent.forElement(this);
    }
  };
  (html$.Element.created = function() {
    this[offsetParent] = null;
    this[contentEditable] = null;
    this[dir] = null;
    this[draggable] = null;
    this[hidden] = null;
    this[inert] = null;
    this[inputMode] = null;
    this[lang] = null;
    this[spellcheck] = null;
    this[style] = null;
    this[tabIndex] = null;
    this[title] = null;
    this[translate] = null;
    this[accessibleNode] = null;
    this[assignedSlot] = null;
    this[_attributes$] = null;
    this[className] = null;
    this[clientHeight] = null;
    this[clientLeft] = null;
    this[clientTop] = null;
    this[clientWidth] = null;
    this[computedName] = null;
    this[computedRole] = null;
    this[id] = null;
    this[_innerHtml] = null;
    this[_localName] = null;
    this[_namespaceUri] = null;
    this[_scrollHeight] = null;
    this[_scrollLeft] = null;
    this[_scrollTop] = null;
    this[_scrollWidth] = null;
    this[slot] = null;
    this[styleMap] = null;
    this[tagName] = null;
    this[nextElementSibling] = null;
    this[previousElementSibling] = null;
    this[_childElementCount] = null;
    this[_children] = null;
    this[_firstElementChild] = null;
    this[_lastElementChild] = null;
    html$.Element.__proto__._created.call(this);
  }).prototype = html$.Element.prototype;
  dart.addTypeTests(html$.Element);
  const offsetParent = Symbol("Element.offsetParent");
  const contentEditable = Symbol("Element.contentEditable");
  const dir = Symbol("Element.dir");
  const draggable = Symbol("Element.draggable");
  const hidden = Symbol("Element.hidden");
  const inert = Symbol("Element.inert");
  const inputMode = Symbol("Element.inputMode");
  const lang = Symbol("Element.lang");
  const spellcheck = Symbol("Element.spellcheck");
  const style = Symbol("Element.style");
  const tabIndex = Symbol("Element.tabIndex");
  const title = Symbol("Element.title");
  const translate = Symbol("Element.translate");
  const accessibleNode = Symbol("Element.accessibleNode");
  const assignedSlot = Symbol("Element.assignedSlot");
  const className = Symbol("Element.className");
  const clientHeight = Symbol("Element.clientHeight");
  const clientLeft = Symbol("Element.clientLeft");
  const clientTop = Symbol("Element.clientTop");
  const clientWidth = Symbol("Element.clientWidth");
  const computedName = Symbol("Element.computedName");
  const computedRole = Symbol("Element.computedRole");
  const id = Symbol("Element.id");
  const slot = Symbol("Element.slot");
  const styleMap = Symbol("Element.styleMap");
  const tagName = Symbol("Element.tagName");
  const nextElementSibling = Symbol("Element.nextElementSibling");
  const previousElementSibling = Symbol("Element.previousElementSibling");
  html$.Element[dart.implements] = () => [html$.NonDocumentTypeChildNode, html$.GlobalEventHandlers, html$.ParentNode, html$.ChildNode];
  dart.setMethodSignature(html$.Element, () => ({
    __proto__: dart.getMethods(html$.Element.__proto__),
    [$querySelectorAll]: dart.gFnType(T => [html$.ElementList$(T), [core.String]], T => [html$.Element]),
    [$getNamespacedAttributes]: dart.fnType(core.Map$(core.String, core.String), [core.String]),
    [$getComputedStyle]: dart.fnType(html$.CssStyleDeclaration, [], [core.String]),
    [$appendText]: dart.fnType(dart.void, [core.String]),
    [$appendHtml]: dart.fnType(dart.void, [core.String], {validator: html$.NodeValidator, treeSanitizer: html$.NodeTreeSanitizer}),
    [$attached]: dart.fnType(dart.void, []),
    [$detached]: dart.fnType(dart.void, []),
    [$enteredView]: dart.fnType(dart.void, []),
    [$getClientRects]: dart.fnType(core.List$(math.Rectangle$(core.num)), []),
    [$leftView]: dart.fnType(dart.void, []),
    [$animate]: dart.fnType(html$.Animation, [core.Iterable$(core.Map$(core.String, dart.dynamic))], [dart.dynamic]),
    [_animate]: dart.fnType(html$.Animation, [core.Object], [dart.dynamic]),
    [$attributeChanged]: dart.fnType(dart.void, [core.String, core.String, core.String]),
    [$scrollIntoView]: dart.fnType(dart.void, [], [html$.ScrollAlignment]),
    [$insertAdjacentText]: dart.fnType(dart.void, [core.String, core.String]),
    [_insertAdjacentText]: dart.fnType(dart.void, [core.String, core.String]),
    [$insertAdjacentHtml]: dart.fnType(dart.void, [core.String, core.String], {validator: html$.NodeValidator, treeSanitizer: html$.NodeTreeSanitizer}),
    [_insertAdjacentHtml]: dart.fnType(dart.void, [core.String, core.String]),
    [$insertAdjacentElement]: dart.fnType(html$.Element, [core.String, html$.Element]),
    [_insertAdjacentElement]: dart.fnType(dart.void, [core.String, html$.Element]),
    [_insertAdjacentNode]: dart.fnType(dart.void, [core.String, html$.Node]),
    [$matches]: dart.fnType(core.bool, [core.String]),
    [$matchesWithAncestors]: dart.fnType(core.bool, [core.String]),
    [$createShadowRoot]: dart.fnType(html$.ShadowRoot, []),
    [$offsetTo]: dart.fnType(math.Point$(core.num), [html$.Element]),
    [$createFragment]: dart.fnType(html$.DocumentFragment, [core.String], {validator: html$.NodeValidator, treeSanitizer: html$.NodeTreeSanitizer}),
    [$setInnerHtml]: dart.fnType(dart.void, [core.String], {validator: html$.NodeValidator, treeSanitizer: html$.NodeTreeSanitizer}),
    [$blur]: dart.fnType(dart.void, []),
    [$click]: dart.fnType(dart.void, []),
    [$focus]: dart.fnType(dart.void, []),
    [$attachShadow]: dart.fnType(html$.ShadowRoot, [core.Map]),
    [_attachShadow_1]: dart.fnType(html$.ShadowRoot, [dart.dynamic]),
    [$closest]: dart.fnType(html$.Element, [core.String]),
    [$getAnimations]: dart.fnType(core.List$(html$.Animation), []),
    [$getAttribute]: dart.fnType(core.String, [core.String]),
    [$getAttributeNS]: dart.fnType(core.String, [core.String, core.String]),
    [$getAttributeNames]: dart.fnType(core.List$(core.String), []),
    [$getBoundingClientRect]: dart.fnType(math.Rectangle$(core.num), []),
    [_getClientRects]: dart.fnType(core.List$(math.Rectangle$(core.num)), []),
    [$getDestinationInsertionPoints]: dart.fnType(core.List$(html$.Node), []),
    [$getElementsByClassName]: dart.fnType(core.List$(html$.Node), [core.String]),
    [_getElementsByTagName]: dart.fnType(core.List$(html$.Node), [core.String]),
    [_hasAttribute]: dart.fnType(core.bool, [core.String]),
    [_hasAttributeNS]: dart.fnType(core.bool, [core.String, core.String]),
    [$hasPointerCapture]: dart.fnType(core.bool, [core.int]),
    [$releasePointerCapture]: dart.fnType(dart.void, [core.int]),
    [_removeAttribute]: dart.fnType(dart.void, [core.String]),
    [_removeAttributeNS]: dart.fnType(dart.void, [core.String, core.String]),
    [$requestPointerLock]: dart.fnType(dart.void, []),
    [$scroll]: dart.fnType(dart.void, [], [dart.dynamic, core.num]),
    [_scroll_1]: dart.fnType(dart.void, []),
    [_scroll_2]: dart.fnType(dart.void, [dart.dynamic]),
    [_scroll_3]: dart.fnType(dart.void, [core.num, dart.dynamic]),
    [$scrollBy]: dart.fnType(dart.void, [], [dart.dynamic, core.num]),
    [_scrollBy_1]: dart.fnType(dart.void, []),
    [_scrollBy_2]: dart.fnType(dart.void, [dart.dynamic]),
    [_scrollBy_3]: dart.fnType(dart.void, [core.num, dart.dynamic]),
    [_scrollIntoView]: dart.fnType(dart.void, [], [core.Object]),
    [_scrollIntoViewIfNeeded]: dart.fnType(dart.void, [], [core.bool]),
    [$scrollTo]: dart.fnType(dart.void, [], [dart.dynamic, core.num]),
    [_scrollTo_1]: dart.fnType(dart.void, []),
    [_scrollTo_2]: dart.fnType(dart.void, [dart.dynamic]),
    [_scrollTo_3]: dart.fnType(dart.void, [core.num, dart.dynamic]),
    [$setApplyScroll]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.ScrollState]), core.String]),
    [$setAttribute]: dart.fnType(dart.void, [core.String, core.String]),
    [$setAttributeNS]: dart.fnType(dart.void, [core.String, core.String, core.String]),
    [$setDistributeScroll]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.ScrollState]), core.String]),
    [$setPointerCapture]: dart.fnType(dart.void, [core.int]),
    [$requestFullscreen]: dart.fnType(dart.void, []),
    [$after]: dart.fnType(dart.void, [core.Object]),
    [$before]: dart.fnType(dart.void, [core.Object]),
    [$querySelector]: dart.fnType(html$.Element, [core.String]),
    [_querySelectorAll]: dart.fnType(core.List$(html$.Node), [core.String])
  }));
  dart.setGetterSignature(html$.Element, () => ({
    __proto__: dart.getGetters(html$.Element.__proto__),
    [$attributes]: core.Map$(core.String, core.String),
    [$children]: core.List$(html$.Element),
    [$classes]: html$.CssClassSet,
    [$dataset]: core.Map$(core.String, core.String),
    [$client]: math.Rectangle$(core.num),
    [$offset]: math.Rectangle$(core.num),
    [$localName]: core.String,
    [$namespaceUri]: core.String,
    [$shadowRoot]: html$.ShadowRoot,
    [$contentEdge]: html$.CssRect,
    [$paddingEdge]: html$.CssRect,
    [$borderEdge]: html$.CssRect,
    [$marginEdge]: html$.CssRect,
    [$documentOffset]: math.Point$(core.num),
    [_canBeUsedToCreateContextualFragment]: core.bool,
    [_cannotBeUsedToCreateContextualFragment]: core.bool,
    [$innerHtml]: core.String,
    [$on]: html$.ElementEvents,
    [$offsetHeight]: core.int,
    [$offsetLeft]: core.int,
    [$offsetTop]: core.int,
    [$offsetWidth]: core.int,
    [$scrollHeight]: core.int,
    [$scrollLeft]: core.int,
    [$scrollTop]: core.int,
    [$scrollWidth]: core.int,
    [$isContentEditable]: core.bool,
    [$outerHtml]: core.String,
    [$onAbort]: html$.ElementStream$(html$.Event),
    [$onBeforeCopy]: html$.ElementStream$(html$.Event),
    [$onBeforeCut]: html$.ElementStream$(html$.Event),
    [$onBeforePaste]: html$.ElementStream$(html$.Event),
    [$onBlur]: html$.ElementStream$(html$.Event),
    [$onCanPlay]: html$.ElementStream$(html$.Event),
    [$onCanPlayThrough]: html$.ElementStream$(html$.Event),
    [$onChange]: html$.ElementStream$(html$.Event),
    [$onClick]: html$.ElementStream$(html$.MouseEvent),
    [$onContextMenu]: html$.ElementStream$(html$.MouseEvent),
    [$onCopy]: html$.ElementStream$(html$.ClipboardEvent),
    [$onCut]: html$.ElementStream$(html$.ClipboardEvent),
    [$onDoubleClick]: html$.ElementStream$(html$.Event),
    [$onDrag]: html$.ElementStream$(html$.MouseEvent),
    [$onDragEnd]: html$.ElementStream$(html$.MouseEvent),
    [$onDragEnter]: html$.ElementStream$(html$.MouseEvent),
    [$onDragLeave]: html$.ElementStream$(html$.MouseEvent),
    [$onDragOver]: html$.ElementStream$(html$.MouseEvent),
    [$onDragStart]: html$.ElementStream$(html$.MouseEvent),
    [$onDrop]: html$.ElementStream$(html$.MouseEvent),
    [$onDurationChange]: html$.ElementStream$(html$.Event),
    [$onEmptied]: html$.ElementStream$(html$.Event),
    [$onEnded]: html$.ElementStream$(html$.Event),
    [$onError]: html$.ElementStream$(html$.Event),
    [$onFocus]: html$.ElementStream$(html$.Event),
    [$onInput]: html$.ElementStream$(html$.Event),
    [$onInvalid]: html$.ElementStream$(html$.Event),
    [$onKeyDown]: html$.ElementStream$(html$.KeyboardEvent),
    [$onKeyPress]: html$.ElementStream$(html$.KeyboardEvent),
    [$onKeyUp]: html$.ElementStream$(html$.KeyboardEvent),
    [$onLoad]: html$.ElementStream$(html$.Event),
    [$onLoadedData]: html$.ElementStream$(html$.Event),
    [$onLoadedMetadata]: html$.ElementStream$(html$.Event),
    [$onMouseDown]: html$.ElementStream$(html$.MouseEvent),
    [$onMouseEnter]: html$.ElementStream$(html$.MouseEvent),
    [$onMouseLeave]: html$.ElementStream$(html$.MouseEvent),
    [$onMouseMove]: html$.ElementStream$(html$.MouseEvent),
    [$onMouseOut]: html$.ElementStream$(html$.MouseEvent),
    [$onMouseOver]: html$.ElementStream$(html$.MouseEvent),
    [$onMouseUp]: html$.ElementStream$(html$.MouseEvent),
    [$onMouseWheel]: html$.ElementStream$(html$.WheelEvent),
    [$onPaste]: html$.ElementStream$(html$.ClipboardEvent),
    [$onPause]: html$.ElementStream$(html$.Event),
    [$onPlay]: html$.ElementStream$(html$.Event),
    [$onPlaying]: html$.ElementStream$(html$.Event),
    [$onRateChange]: html$.ElementStream$(html$.Event),
    [$onReset]: html$.ElementStream$(html$.Event),
    [$onResize]: html$.ElementStream$(html$.Event),
    [$onScroll]: html$.ElementStream$(html$.Event),
    [$onSearch]: html$.ElementStream$(html$.Event),
    [$onSeeked]: html$.ElementStream$(html$.Event),
    [$onSeeking]: html$.ElementStream$(html$.Event),
    [$onSelect]: html$.ElementStream$(html$.Event),
    [$onSelectStart]: html$.ElementStream$(html$.Event),
    [$onStalled]: html$.ElementStream$(html$.Event),
    [$onSubmit]: html$.ElementStream$(html$.Event),
    [$onSuspend]: html$.ElementStream$(html$.Event),
    [$onTimeUpdate]: html$.ElementStream$(html$.Event),
    [$onTouchCancel]: html$.ElementStream$(html$.TouchEvent),
    [$onTouchEnd]: html$.ElementStream$(html$.TouchEvent),
    [$onTouchEnter]: html$.ElementStream$(html$.TouchEvent),
    [$onTouchLeave]: html$.ElementStream$(html$.TouchEvent),
    [$onTouchMove]: html$.ElementStream$(html$.TouchEvent),
    [$onTouchStart]: html$.ElementStream$(html$.TouchEvent),
    [$onTransitionEnd]: html$.ElementStream$(html$.TransitionEvent),
    [$onVolumeChange]: html$.ElementStream$(html$.Event),
    [$onWaiting]: html$.ElementStream$(html$.Event),
    [$onFullscreenChange]: html$.ElementStream$(html$.Event),
    [$onFullscreenError]: html$.ElementStream$(html$.Event),
    [$onWheel]: html$.ElementStream$(html$.WheelEvent)
  }));
  dart.setSetterSignature(html$.Element, () => ({
    __proto__: dart.getSetters(html$.Element.__proto__),
    [$attributes]: core.Map$(core.String, core.String),
    [$children]: core.List$(html$.Element),
    [$classes]: core.Iterable$(core.String),
    [$dataset]: core.Map$(core.String, core.String),
    [$innerHtml]: core.String,
    [$scrollLeft]: core.int,
    [$scrollTop]: core.int
  }));
  dart.setFieldSignature(html$.Element, () => ({
    __proto__: dart.getFields(html$.Element.__proto__),
    [$offsetParent]: dart.finalFieldType(html$.Element),
    [$contentEditable]: dart.fieldType(core.String),
    [$dir]: dart.fieldType(core.String),
    [$draggable]: dart.fieldType(core.bool),
    [$hidden]: dart.fieldType(core.bool),
    [$inert]: dart.fieldType(core.bool),
    [$inputMode]: dart.fieldType(core.String),
    [$lang]: dart.fieldType(core.String),
    [$spellcheck]: dart.fieldType(core.bool),
    [$style]: dart.finalFieldType(html$.CssStyleDeclaration),
    [$tabIndex]: dart.fieldType(core.int),
    [$title]: dart.fieldType(core.String),
    [$translate]: dart.fieldType(core.bool),
    [$accessibleNode]: dart.finalFieldType(html$.AccessibleNode),
    [$assignedSlot]: dart.finalFieldType(html$.SlotElement),
    [_attributes$]: dart.finalFieldType(html$._NamedNodeMap),
    [$className]: dart.fieldType(core.String),
    [$clientHeight]: dart.finalFieldType(core.int),
    [$clientLeft]: dart.finalFieldType(core.int),
    [$clientTop]: dart.finalFieldType(core.int),
    [$clientWidth]: dart.finalFieldType(core.int),
    [$computedName]: dart.finalFieldType(core.String),
    [$computedRole]: dart.finalFieldType(core.String),
    [$id]: dart.fieldType(core.String),
    [_innerHtml]: dart.fieldType(core.String),
    [_localName]: dart.finalFieldType(core.String),
    [_namespaceUri]: dart.finalFieldType(core.String),
    [_scrollHeight]: dart.finalFieldType(core.int),
    [_scrollLeft]: dart.fieldType(core.num),
    [_scrollTop]: dart.fieldType(core.num),
    [_scrollWidth]: dart.finalFieldType(core.int),
    [$slot]: dart.fieldType(core.String),
    [$styleMap]: dart.finalFieldType(html$.StylePropertyMap),
    [$tagName]: dart.finalFieldType(core.String),
    [$nextElementSibling]: dart.finalFieldType(html$.Element),
    [$previousElementSibling]: dart.finalFieldType(html$.Element),
    [_childElementCount]: dart.finalFieldType(core.int),
    [_children]: dart.finalFieldType(ListOfNode()),
    [_firstElementChild]: dart.finalFieldType(html$.Element),
    [_lastElementChild]: dart.finalFieldType(html$.Element)
  }));
  dart.defineLazy(html$.Element, {
    /*html$.Element.mouseWheelEvent*/get mouseWheelEvent() {
      return dart.const(new (_CustomEventStreamProviderOfWheelEvent()).new(dart.fn(html$.Element._determineMouseWheelEventType, EventTargetToString())));
    },
    /*html$.Element.transitionEndEvent*/get transitionEndEvent() {
      return dart.const(new (_CustomEventStreamProviderOfTransitionEvent()).new(dart.fn(html$.Element._determineTransitionEventType, EventTargetToString())));
    },
    /*html$.Element._parseDocument*/get _parseDocument() {
      return null;
    },
    set _parseDocument(_) {},
    /*html$.Element._parseRange*/get _parseRange() {
      return null;
    },
    set _parseRange(_) {},
    /*html$.Element._defaultValidator*/get _defaultValidator() {
      return null;
    },
    set _defaultValidator(_) {},
    /*html$.Element._defaultSanitizer*/get _defaultSanitizer() {
      return null;
    },
    set _defaultSanitizer(_) {},
    /*html$.Element._tagsForWhichCreateContextualFragmentIsNotSupported*/get _tagsForWhichCreateContextualFragmentIsNotSupported() {
      return dart.constList(["HEAD", "AREA", "BASE", "BASEFONT", "BR", "COL", "COLGROUP", "EMBED", "FRAME", "FRAMESET", "HR", "IMAGE", "IMG", "INPUT", "ISINDEX", "LINK", "META", "PARAM", "SOURCE", "STYLE", "TITLE", "WBR"], core.String);
    },
    /*html$.Element.abortEvent*/get abortEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("abort"));
    },
    /*html$.Element.beforeCopyEvent*/get beforeCopyEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("beforecopy"));
    },
    /*html$.Element.beforeCutEvent*/get beforeCutEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("beforecut"));
    },
    /*html$.Element.beforePasteEvent*/get beforePasteEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("beforepaste"));
    },
    /*html$.Element.blurEvent*/get blurEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("blur"));
    },
    /*html$.Element.canPlayEvent*/get canPlayEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("canplay"));
    },
    /*html$.Element.canPlayThroughEvent*/get canPlayThroughEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("canplaythrough"));
    },
    /*html$.Element.changeEvent*/get changeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("change"));
    },
    /*html$.Element.clickEvent*/get clickEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("click"));
    },
    /*html$.Element.contextMenuEvent*/get contextMenuEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("contextmenu"));
    },
    /*html$.Element.copyEvent*/get copyEvent() {
      return dart.const(new (EventStreamProviderOfClipboardEvent()).new("copy"));
    },
    /*html$.Element.cutEvent*/get cutEvent() {
      return dart.const(new (EventStreamProviderOfClipboardEvent()).new("cut"));
    },
    /*html$.Element.doubleClickEvent*/get doubleClickEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("dblclick"));
    },
    /*html$.Element.dragEvent*/get dragEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("drag"));
    },
    /*html$.Element.dragEndEvent*/get dragEndEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragend"));
    },
    /*html$.Element.dragEnterEvent*/get dragEnterEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragenter"));
    },
    /*html$.Element.dragLeaveEvent*/get dragLeaveEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragleave"));
    },
    /*html$.Element.dragOverEvent*/get dragOverEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragover"));
    },
    /*html$.Element.dragStartEvent*/get dragStartEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragstart"));
    },
    /*html$.Element.dropEvent*/get dropEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("drop"));
    },
    /*html$.Element.durationChangeEvent*/get durationChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("durationchange"));
    },
    /*html$.Element.emptiedEvent*/get emptiedEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("emptied"));
    },
    /*html$.Element.endedEvent*/get endedEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("ended"));
    },
    /*html$.Element.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    },
    /*html$.Element.focusEvent*/get focusEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("focus"));
    },
    /*html$.Element.inputEvent*/get inputEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("input"));
    },
    /*html$.Element.invalidEvent*/get invalidEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("invalid"));
    },
    /*html$.Element.keyDownEvent*/get keyDownEvent() {
      return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keydown"));
    },
    /*html$.Element.keyPressEvent*/get keyPressEvent() {
      return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keypress"));
    },
    /*html$.Element.keyUpEvent*/get keyUpEvent() {
      return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keyup"));
    },
    /*html$.Element.loadEvent*/get loadEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("load"));
    },
    /*html$.Element.loadedDataEvent*/get loadedDataEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("loadeddata"));
    },
    /*html$.Element.loadedMetadataEvent*/get loadedMetadataEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("loadedmetadata"));
    },
    /*html$.Element.mouseDownEvent*/get mouseDownEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mousedown"));
    },
    /*html$.Element.mouseEnterEvent*/get mouseEnterEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseenter"));
    },
    /*html$.Element.mouseLeaveEvent*/get mouseLeaveEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseleave"));
    },
    /*html$.Element.mouseMoveEvent*/get mouseMoveEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mousemove"));
    },
    /*html$.Element.mouseOutEvent*/get mouseOutEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseout"));
    },
    /*html$.Element.mouseOverEvent*/get mouseOverEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseover"));
    },
    /*html$.Element.mouseUpEvent*/get mouseUpEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseup"));
    },
    /*html$.Element.pasteEvent*/get pasteEvent() {
      return dart.const(new (EventStreamProviderOfClipboardEvent()).new("paste"));
    },
    /*html$.Element.pauseEvent*/get pauseEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("pause"));
    },
    /*html$.Element.playEvent*/get playEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("play"));
    },
    /*html$.Element.playingEvent*/get playingEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("playing"));
    },
    /*html$.Element.rateChangeEvent*/get rateChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("ratechange"));
    },
    /*html$.Element.resetEvent*/get resetEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("reset"));
    },
    /*html$.Element.resizeEvent*/get resizeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("resize"));
    },
    /*html$.Element.scrollEvent*/get scrollEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("scroll"));
    },
    /*html$.Element.searchEvent*/get searchEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("search"));
    },
    /*html$.Element.seekedEvent*/get seekedEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("seeked"));
    },
    /*html$.Element.seekingEvent*/get seekingEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("seeking"));
    },
    /*html$.Element.selectEvent*/get selectEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("select"));
    },
    /*html$.Element.selectStartEvent*/get selectStartEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("selectstart"));
    },
    /*html$.Element.stalledEvent*/get stalledEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("stalled"));
    },
    /*html$.Element.submitEvent*/get submitEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("submit"));
    },
    /*html$.Element.suspendEvent*/get suspendEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("suspend"));
    },
    /*html$.Element.timeUpdateEvent*/get timeUpdateEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("timeupdate"));
    },
    /*html$.Element.touchCancelEvent*/get touchCancelEvent() {
      return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchcancel"));
    },
    /*html$.Element.touchEndEvent*/get touchEndEvent() {
      return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchend"));
    },
    /*html$.Element.touchEnterEvent*/get touchEnterEvent() {
      return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchenter"));
    },
    /*html$.Element.touchLeaveEvent*/get touchLeaveEvent() {
      return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchleave"));
    },
    /*html$.Element.touchMoveEvent*/get touchMoveEvent() {
      return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchmove"));
    },
    /*html$.Element.touchStartEvent*/get touchStartEvent() {
      return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchstart"));
    },
    /*html$.Element.volumeChangeEvent*/get volumeChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("volumechange"));
    },
    /*html$.Element.waitingEvent*/get waitingEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("waiting"));
    },
    /*html$.Element.fullscreenChangeEvent*/get fullscreenChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("webkitfullscreenchange"));
    },
    /*html$.Element.fullscreenErrorEvent*/get fullscreenErrorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("webkitfullscreenerror"));
    },
    /*html$.Element.wheelEvent*/get wheelEvent() {
      return dart.const(new (EventStreamProviderOfWheelEvent()).new("wheel"));
    }
  });
  dart.registerExtension("Element", html$.Element);
  html$.HtmlElement = class HtmlElement extends html$.Element {
    static new() {
      dart.throw(new core.UnsupportedError.new("Not supported"));
    }
    get [$nonce]() {
      return this.nonce;
    }
    set [$nonce](value) {
      this.nonce = value;
    }
  };
  (html$.HtmlElement.created = function() {
    this[nonce] = null;
    html$.HtmlElement.__proto__.created.call(this);
  }).prototype = html$.HtmlElement.prototype;
  dart.addTypeTests(html$.HtmlElement);
  const nonce = Symbol("HtmlElement.nonce");
  html$.HtmlElement[dart.implements] = () => [html$.NoncedElement];
  dart.setFieldSignature(html$.HtmlElement, () => ({
    __proto__: dart.getFields(html$.HtmlElement.__proto__),
    [$nonce]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLElement", html$.HtmlElement);
  dart.copyProperties(html$, {
    get _workerSelf() {
      return self;
    }
  });
  html$.ExtendableEvent = class ExtendableEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.ExtendableEvent._create_1(type, eventInitDict_1);
      }
      return html$.ExtendableEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new ExtendableEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new ExtendableEvent(type);
    }
    [$waitUntil](...args) {
      return this.waitUntil.apply(this, args);
    }
  };
  dart.addTypeTests(html$.ExtendableEvent);
  dart.setMethodSignature(html$.ExtendableEvent, () => ({
    __proto__: dart.getMethods(html$.ExtendableEvent.__proto__),
    [$waitUntil]: dart.fnType(dart.void, [async.Future])
  }));
  dart.registerExtension("ExtendableEvent", html$.ExtendableEvent);
  html$.AbortPaymentEvent = class AbortPaymentEvent$ extends html$.ExtendableEvent {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.AbortPaymentEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new AbortPaymentEvent(type, eventInitDict);
    }
    [$respondWith](...args) {
      return this.respondWith.apply(this, args);
    }
  };
  dart.addTypeTests(html$.AbortPaymentEvent);
  dart.setMethodSignature(html$.AbortPaymentEvent, () => ({
    __proto__: dart.getMethods(html$.AbortPaymentEvent.__proto__),
    [$respondWith]: dart.fnType(dart.void, [async.Future])
  }));
  dart.registerExtension("AbortPaymentEvent", html$.AbortPaymentEvent);
  html$.Sensor = class Sensor extends html$.EventTarget {
    get [$activated]() {
      return this.activated;
    }
    get [$hasReading]() {
      return this.hasReading;
    }
    get [$timestamp]() {
      return this.timestamp;
    }
    [$start](...args) {
      return this.start.apply(this, args);
    }
    [$stop](...args) {
      return this.stop.apply(this, args);
    }
    get [$onError]() {
      return html$.Sensor.errorEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.Sensor);
  const activated = Symbol("Sensor.activated");
  const hasReading = Symbol("Sensor.hasReading");
  const timestamp = Symbol("Sensor.timestamp");
  dart.setMethodSignature(html$.Sensor, () => ({
    __proto__: dart.getMethods(html$.Sensor.__proto__),
    [$start]: dart.fnType(dart.void, []),
    [$stop]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(html$.Sensor, () => ({
    __proto__: dart.getGetters(html$.Sensor.__proto__),
    [$onError]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.Sensor, () => ({
    __proto__: dart.getFields(html$.Sensor.__proto__),
    [$activated]: dart.finalFieldType(core.bool),
    [$hasReading]: dart.finalFieldType(core.bool),
    [$timestamp]: dart.finalFieldType(core.num)
  }));
  dart.defineLazy(html$.Sensor, {
    /*html$.Sensor.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    }
  });
  dart.registerExtension("Sensor", html$.Sensor);
  html$.OrientationSensor = class OrientationSensor extends html$.Sensor {
    get [$quaternion]() {
      return this.quaternion;
    }
    [$populateMatrix](...args) {
      return this.populateMatrix.apply(this, args);
    }
  };
  dart.addTypeTests(html$.OrientationSensor);
  const quaternion = Symbol("OrientationSensor.quaternion");
  dart.setMethodSignature(html$.OrientationSensor, () => ({
    __proto__: dart.getMethods(html$.OrientationSensor.__proto__),
    [$populateMatrix]: dart.fnType(dart.void, [core.Object])
  }));
  dart.setFieldSignature(html$.OrientationSensor, () => ({
    __proto__: dart.getFields(html$.OrientationSensor.__proto__),
    [$quaternion]: dart.finalFieldType(ListOfnum())
  }));
  dart.registerExtension("OrientationSensor", html$.OrientationSensor);
  html$.AbsoluteOrientationSensor = class AbsoluteOrientationSensor$ extends html$.OrientationSensor {
    static new(sensorOptions) {
      if (sensorOptions === void 0) sensorOptions = null;
      if (sensorOptions != null) {
        let sensorOptions_1 = html_common.convertDartToNative_Dictionary(sensorOptions);
        return html$.AbsoluteOrientationSensor._create_1(sensorOptions_1);
      }
      return html$.AbsoluteOrientationSensor._create_2();
    }
    static _create_1(sensorOptions) {
      return new AbsoluteOrientationSensor(sensorOptions);
    }
    static _create_2() {
      return new AbsoluteOrientationSensor();
    }
  };
  dart.addTypeTests(html$.AbsoluteOrientationSensor);
  dart.registerExtension("AbsoluteOrientationSensor", html$.AbsoluteOrientationSensor);
  html$.AbstractWorker = class AbstractWorker extends _interceptors.Interceptor {
    get onError() {
      return html$.AbstractWorker.errorEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.AbstractWorker);
  html$.AbstractWorker[dart.implements] = () => [html$.EventTarget];
  dart.setGetterSignature(html$.AbstractWorker, () => ({
    __proto__: dart.getGetters(html$.AbstractWorker.__proto__),
    onError: async.Stream$(html$.Event),
    [$onError]: async.Stream$(html$.Event)
  }));
  dart.defineExtensionAccessors(html$.AbstractWorker, ['onError']);
  dart.defineLazy(html$.AbstractWorker, {
    /*html$.AbstractWorker.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    }
  });
  html$.Accelerometer = class Accelerometer$ extends html$.Sensor {
    static new(sensorOptions) {
      if (sensorOptions === void 0) sensorOptions = null;
      if (sensorOptions != null) {
        let sensorOptions_1 = html_common.convertDartToNative_Dictionary(sensorOptions);
        return html$.Accelerometer._create_1(sensorOptions_1);
      }
      return html$.Accelerometer._create_2();
    }
    static _create_1(sensorOptions) {
      return new Accelerometer(sensorOptions);
    }
    static _create_2() {
      return new Accelerometer();
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
    get [$z]() {
      return this.z;
    }
  };
  dart.addTypeTests(html$.Accelerometer);
  const x = Symbol("Accelerometer.x");
  const y = Symbol("Accelerometer.y");
  const z = Symbol("Accelerometer.z");
  dart.setFieldSignature(html$.Accelerometer, () => ({
    __proto__: dart.getFields(html$.Accelerometer.__proto__),
    [$x]: dart.finalFieldType(core.num),
    [$y]: dart.finalFieldType(core.num),
    [$z]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("Accelerometer", html$.Accelerometer);
  html$.AccessibleNode = class AccessibleNode$ extends html$.EventTarget {
    static new() {
      return html$.AccessibleNode._create_1();
    }
    static _create_1() {
      return new AccessibleNode();
    }
    get [$activeDescendant]() {
      return this.activeDescendant;
    }
    set [$activeDescendant](value) {
      this.activeDescendant = value;
    }
    get [$atomic]() {
      return this.atomic;
    }
    set [$atomic](value) {
      this.atomic = value;
    }
    get [$autocomplete]() {
      return this.autocomplete;
    }
    set [$autocomplete](value) {
      this.autocomplete = value;
    }
    get [$busy]() {
      return this.busy;
    }
    set [$busy](value) {
      this.busy = value;
    }
    get [$checked]() {
      return this.checked;
    }
    set [$checked](value) {
      this.checked = value;
    }
    get [$colCount]() {
      return this.colCount;
    }
    set [$colCount](value) {
      this.colCount = value;
    }
    get [$colIndex]() {
      return this.colIndex;
    }
    set [$colIndex](value) {
      this.colIndex = value;
    }
    get [$colSpan]() {
      return this.colSpan;
    }
    set [$colSpan](value) {
      this.colSpan = value;
    }
    get [$controls]() {
      return this.controls;
    }
    set [$controls](value) {
      this.controls = value;
    }
    get [$current]() {
      return this.current;
    }
    set [$current](value) {
      this.current = value;
    }
    get [$describedBy]() {
      return this.describedBy;
    }
    set [$describedBy](value) {
      this.describedBy = value;
    }
    get [$details]() {
      return this.details;
    }
    set [$details](value) {
      this.details = value;
    }
    get [$disabled]() {
      return this.disabled;
    }
    set [$disabled](value) {
      this.disabled = value;
    }
    get [$errorMessage]() {
      return this.errorMessage;
    }
    set [$errorMessage](value) {
      this.errorMessage = value;
    }
    get [$expanded]() {
      return this.expanded;
    }
    set [$expanded](value) {
      this.expanded = value;
    }
    get [$flowTo]() {
      return this.flowTo;
    }
    set [$flowTo](value) {
      this.flowTo = value;
    }
    get [$hasPopUp]() {
      return this.hasPopUp;
    }
    set [$hasPopUp](value) {
      this.hasPopUp = value;
    }
    get [$hidden]() {
      return this.hidden;
    }
    set [$hidden](value) {
      this.hidden = value;
    }
    get [$invalid]() {
      return this.invalid;
    }
    set [$invalid](value) {
      this.invalid = value;
    }
    get [$keyShortcuts]() {
      return this.keyShortcuts;
    }
    set [$keyShortcuts](value) {
      this.keyShortcuts = value;
    }
    get [$label]() {
      return this.label;
    }
    set [$label](value) {
      this.label = value;
    }
    get [$labeledBy]() {
      return this.labeledBy;
    }
    set [$labeledBy](value) {
      this.labeledBy = value;
    }
    get [$level]() {
      return this.level;
    }
    set [$level](value) {
      this.level = value;
    }
    get [$live]() {
      return this.live;
    }
    set [$live](value) {
      this.live = value;
    }
    get [$modal]() {
      return this.modal;
    }
    set [$modal](value) {
      this.modal = value;
    }
    get [$multiline]() {
      return this.multiline;
    }
    set [$multiline](value) {
      this.multiline = value;
    }
    get [$multiselectable]() {
      return this.multiselectable;
    }
    set [$multiselectable](value) {
      this.multiselectable = value;
    }
    get [$orientation]() {
      return this.orientation;
    }
    set [$orientation](value) {
      this.orientation = value;
    }
    get [$owns]() {
      return this.owns;
    }
    set [$owns](value) {
      this.owns = value;
    }
    get [$placeholder]() {
      return this.placeholder;
    }
    set [$placeholder](value) {
      this.placeholder = value;
    }
    get [$posInSet]() {
      return this.posInSet;
    }
    set [$posInSet](value) {
      this.posInSet = value;
    }
    get [$pressed]() {
      return this.pressed;
    }
    set [$pressed](value) {
      this.pressed = value;
    }
    get [$readOnly]() {
      return this.readOnly;
    }
    set [$readOnly](value) {
      this.readOnly = value;
    }
    get [$relevant]() {
      return this.relevant;
    }
    set [$relevant](value) {
      this.relevant = value;
    }
    get [$required]() {
      return this.required;
    }
    set [$required](value) {
      this.required = value;
    }
    get [$role]() {
      return this.role;
    }
    set [$role](value) {
      this.role = value;
    }
    get [$roleDescription]() {
      return this.roleDescription;
    }
    set [$roleDescription](value) {
      this.roleDescription = value;
    }
    get [$rowCount]() {
      return this.rowCount;
    }
    set [$rowCount](value) {
      this.rowCount = value;
    }
    get [$rowIndex]() {
      return this.rowIndex;
    }
    set [$rowIndex](value) {
      this.rowIndex = value;
    }
    get [$rowSpan]() {
      return this.rowSpan;
    }
    set [$rowSpan](value) {
      this.rowSpan = value;
    }
    get [$selected]() {
      return this.selected;
    }
    set [$selected](value) {
      this.selected = value;
    }
    get [$setSize]() {
      return this.setSize;
    }
    set [$setSize](value) {
      this.setSize = value;
    }
    get [$sort]() {
      return this.sort;
    }
    set [$sort](value) {
      this.sort = value;
    }
    get [$valueMax]() {
      return this.valueMax;
    }
    set [$valueMax](value) {
      this.valueMax = value;
    }
    get [$valueMin]() {
      return this.valueMin;
    }
    set [$valueMin](value) {
      this.valueMin = value;
    }
    get [$valueNow]() {
      return this.valueNow;
    }
    set [$valueNow](value) {
      this.valueNow = value;
    }
    get [$valueText]() {
      return this.valueText;
    }
    set [$valueText](value) {
      this.valueText = value;
    }
    [$appendChild](...args) {
      return this.appendChild.apply(this, args);
    }
    get [$onAccessibleClick]() {
      return html$.AccessibleNode.accessibleClickEvent.forTarget(this);
    }
    get [$onAccessibleContextMenu]() {
      return html$.AccessibleNode.accessibleContextMenuEvent.forTarget(this);
    }
    get [$onAccessibleDecrement]() {
      return html$.AccessibleNode.accessibleDecrementEvent.forTarget(this);
    }
    get [$onAccessibleFocus]() {
      return html$.AccessibleNode.accessibleFocusEvent.forTarget(this);
    }
    get [$onAccessibleIncrement]() {
      return html$.AccessibleNode.accessibleIncrementEvent.forTarget(this);
    }
    get [$onAccessibleScrollIntoView]() {
      return html$.AccessibleNode.accessibleScrollIntoViewEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.AccessibleNode);
  const activeDescendant = Symbol("AccessibleNode.activeDescendant");
  const atomic = Symbol("AccessibleNode.atomic");
  const autocomplete = Symbol("AccessibleNode.autocomplete");
  const busy = Symbol("AccessibleNode.busy");
  const checked = Symbol("AccessibleNode.checked");
  const colCount = Symbol("AccessibleNode.colCount");
  const colIndex = Symbol("AccessibleNode.colIndex");
  const colSpan = Symbol("AccessibleNode.colSpan");
  const controls = Symbol("AccessibleNode.controls");
  const current = Symbol("AccessibleNode.current");
  const describedBy = Symbol("AccessibleNode.describedBy");
  const details = Symbol("AccessibleNode.details");
  const disabled = Symbol("AccessibleNode.disabled");
  const errorMessage = Symbol("AccessibleNode.errorMessage");
  const expanded = Symbol("AccessibleNode.expanded");
  const flowTo = Symbol("AccessibleNode.flowTo");
  const hasPopUp = Symbol("AccessibleNode.hasPopUp");
  const hidden$ = Symbol("AccessibleNode.hidden");
  const invalid = Symbol("AccessibleNode.invalid");
  const keyShortcuts = Symbol("AccessibleNode.keyShortcuts");
  const label = Symbol("AccessibleNode.label");
  const labeledBy = Symbol("AccessibleNode.labeledBy");
  const level = Symbol("AccessibleNode.level");
  const live = Symbol("AccessibleNode.live");
  const modal = Symbol("AccessibleNode.modal");
  const multiline = Symbol("AccessibleNode.multiline");
  const multiselectable = Symbol("AccessibleNode.multiselectable");
  const orientation = Symbol("AccessibleNode.orientation");
  const owns = Symbol("AccessibleNode.owns");
  const placeholder = Symbol("AccessibleNode.placeholder");
  const posInSet = Symbol("AccessibleNode.posInSet");
  const pressed = Symbol("AccessibleNode.pressed");
  const readOnly = Symbol("AccessibleNode.readOnly");
  const relevant = Symbol("AccessibleNode.relevant");
  const required = Symbol("AccessibleNode.required");
  const role = Symbol("AccessibleNode.role");
  const roleDescription = Symbol("AccessibleNode.roleDescription");
  const rowCount = Symbol("AccessibleNode.rowCount");
  const rowIndex = Symbol("AccessibleNode.rowIndex");
  const rowSpan = Symbol("AccessibleNode.rowSpan");
  const selected = Symbol("AccessibleNode.selected");
  const setSize = Symbol("AccessibleNode.setSize");
  const sort = Symbol("AccessibleNode.sort");
  const valueMax = Symbol("AccessibleNode.valueMax");
  const valueMin = Symbol("AccessibleNode.valueMin");
  const valueNow = Symbol("AccessibleNode.valueNow");
  const valueText = Symbol("AccessibleNode.valueText");
  dart.setMethodSignature(html$.AccessibleNode, () => ({
    __proto__: dart.getMethods(html$.AccessibleNode.__proto__),
    [$appendChild]: dart.fnType(dart.void, [html$.AccessibleNode])
  }));
  dart.setGetterSignature(html$.AccessibleNode, () => ({
    __proto__: dart.getGetters(html$.AccessibleNode.__proto__),
    [$onAccessibleClick]: async.Stream$(html$.Event),
    [$onAccessibleContextMenu]: async.Stream$(html$.Event),
    [$onAccessibleDecrement]: async.Stream$(html$.Event),
    [$onAccessibleFocus]: async.Stream$(html$.Event),
    [$onAccessibleIncrement]: async.Stream$(html$.Event),
    [$onAccessibleScrollIntoView]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.AccessibleNode, () => ({
    __proto__: dart.getFields(html$.AccessibleNode.__proto__),
    [$activeDescendant]: dart.fieldType(html$.AccessibleNode),
    [$atomic]: dart.fieldType(core.bool),
    [$autocomplete]: dart.fieldType(core.String),
    [$busy]: dart.fieldType(core.bool),
    [$checked]: dart.fieldType(core.String),
    [$colCount]: dart.fieldType(core.int),
    [$colIndex]: dart.fieldType(core.int),
    [$colSpan]: dart.fieldType(core.int),
    [$controls]: dart.fieldType(html$.AccessibleNodeList),
    [$current]: dart.fieldType(core.String),
    [$describedBy]: dart.fieldType(html$.AccessibleNodeList),
    [$details]: dart.fieldType(html$.AccessibleNode),
    [$disabled]: dart.fieldType(core.bool),
    [$errorMessage]: dart.fieldType(html$.AccessibleNode),
    [$expanded]: dart.fieldType(core.bool),
    [$flowTo]: dart.fieldType(html$.AccessibleNodeList),
    [$hasPopUp]: dart.fieldType(core.String),
    [$hidden]: dart.fieldType(core.bool),
    [$invalid]: dart.fieldType(core.String),
    [$keyShortcuts]: dart.fieldType(core.String),
    [$label]: dart.fieldType(core.String),
    [$labeledBy]: dart.fieldType(html$.AccessibleNodeList),
    [$level]: dart.fieldType(core.int),
    [$live]: dart.fieldType(core.String),
    [$modal]: dart.fieldType(core.bool),
    [$multiline]: dart.fieldType(core.bool),
    [$multiselectable]: dart.fieldType(core.bool),
    [$orientation]: dart.fieldType(core.String),
    [$owns]: dart.fieldType(html$.AccessibleNodeList),
    [$placeholder]: dart.fieldType(core.String),
    [$posInSet]: dart.fieldType(core.int),
    [$pressed]: dart.fieldType(core.String),
    [$readOnly]: dart.fieldType(core.bool),
    [$relevant]: dart.fieldType(core.String),
    [$required]: dart.fieldType(core.bool),
    [$role]: dart.fieldType(core.String),
    [$roleDescription]: dart.fieldType(core.String),
    [$rowCount]: dart.fieldType(core.int),
    [$rowIndex]: dart.fieldType(core.int),
    [$rowSpan]: dart.fieldType(core.int),
    [$selected]: dart.fieldType(core.bool),
    [$setSize]: dart.fieldType(core.int),
    [$sort]: dart.fieldType(core.String),
    [$valueMax]: dart.fieldType(core.num),
    [$valueMin]: dart.fieldType(core.num),
    [$valueNow]: dart.fieldType(core.num),
    [$valueText]: dart.fieldType(core.String)
  }));
  dart.defineLazy(html$.AccessibleNode, {
    /*html$.AccessibleNode.accessibleClickEvent*/get accessibleClickEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("accessibleclick"));
    },
    /*html$.AccessibleNode.accessibleContextMenuEvent*/get accessibleContextMenuEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("accessiblecontextmenu"));
    },
    /*html$.AccessibleNode.accessibleDecrementEvent*/get accessibleDecrementEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("accessibledecrement"));
    },
    /*html$.AccessibleNode.accessibleFocusEvent*/get accessibleFocusEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("accessiblefocus"));
    },
    /*html$.AccessibleNode.accessibleIncrementEvent*/get accessibleIncrementEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("accessibleincrement"));
    },
    /*html$.AccessibleNode.accessibleScrollIntoViewEvent*/get accessibleScrollIntoViewEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("accessiblescrollintoview"));
    }
  });
  dart.registerExtension("AccessibleNode", html$.AccessibleNode);
  const __setter__ = Symbol('__setter__');
  html$.AccessibleNodeList = class AccessibleNodeList$ extends _interceptors.Interceptor {
    static new(nodes) {
      if (nodes === void 0) nodes = null;
      if (nodes != null) {
        return html$.AccessibleNodeList._create_1(nodes);
      }
      return html$.AccessibleNodeList._create_2();
    }
    static _create_1(nodes) {
      return new AccessibleNodeList(nodes);
    }
    static _create_2() {
      return new AccessibleNodeList();
    }
    get [$length]() {
      return this.length;
    }
    set [$length](value) {
      this.length = value;
    }
    [__setter__](...args) {
      return this.__setter__.apply(this, args);
    }
    [$add](...args) {
      return this.add.apply(this, args);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
    [$remove](...args) {
      return this.remove.apply(this, args);
    }
  };
  dart.addTypeTests(html$.AccessibleNodeList);
  const length = Symbol("AccessibleNodeList.length");
  dart.setMethodSignature(html$.AccessibleNodeList, () => ({
    __proto__: dart.getMethods(html$.AccessibleNodeList.__proto__),
    [__setter__]: dart.fnType(dart.void, [core.int, html$.AccessibleNode]),
    [$add]: dart.fnType(dart.void, [html$.AccessibleNode, html$.AccessibleNode]),
    [$item]: dart.fnType(html$.AccessibleNode, [core.int]),
    [$remove]: dart.fnType(dart.void, [core.int])
  }));
  dart.setFieldSignature(html$.AccessibleNodeList, () => ({
    __proto__: dart.getFields(html$.AccessibleNodeList.__proto__),
    [$length]: dart.fieldType(core.int)
  }));
  dart.registerExtension("AccessibleNodeList", html$.AccessibleNodeList);
  html$.AmbientLightSensor = class AmbientLightSensor$ extends html$.Sensor {
    static new(sensorOptions) {
      if (sensorOptions === void 0) sensorOptions = null;
      if (sensorOptions != null) {
        let sensorOptions_1 = html_common.convertDartToNative_Dictionary(sensorOptions);
        return html$.AmbientLightSensor._create_1(sensorOptions_1);
      }
      return html$.AmbientLightSensor._create_2();
    }
    static _create_1(sensorOptions) {
      return new AmbientLightSensor(sensorOptions);
    }
    static _create_2() {
      return new AmbientLightSensor();
    }
    get [$illuminance]() {
      return this.illuminance;
    }
  };
  dart.addTypeTests(html$.AmbientLightSensor);
  const illuminance = Symbol("AmbientLightSensor.illuminance");
  dart.setFieldSignature(html$.AmbientLightSensor, () => ({
    __proto__: dart.getFields(html$.AmbientLightSensor.__proto__),
    [$illuminance]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("AmbientLightSensor", html$.AmbientLightSensor);
  html$.AnchorElement = class AnchorElement extends html$.HtmlElement {
    static new(opts) {
      let href = opts && 'href' in opts ? opts.href : null;
      let e = html$.document.createElement("a");
      if (href != null) e.href = href;
      return e;
    }
    get [$download]() {
      return this.download;
    }
    set [$download](value) {
      this.download = value;
    }
    get [$hreflang]() {
      return this.hreflang;
    }
    set [$hreflang](value) {
      this.hreflang = value;
    }
    get [$referrerPolicy]() {
      return this.referrerPolicy;
    }
    set [$referrerPolicy](value) {
      this.referrerPolicy = value;
    }
    get [$rel]() {
      return this.rel;
    }
    set [$rel](value) {
      this.rel = value;
    }
    get [$target]() {
      return this.target;
    }
    set [$target](value) {
      this.target = value;
    }
    get [$type]() {
      return this.type;
    }
    set [$type](value) {
      this.type = value;
    }
    get [$hash]() {
      return this.hash;
    }
    set [$hash](value) {
      this.hash = value;
    }
    get [$host]() {
      return this.host;
    }
    set [$host](value) {
      this.host = value;
    }
    get [$hostname]() {
      return this.hostname;
    }
    set [$hostname](value) {
      this.hostname = value;
    }
    get [$href]() {
      return this.href;
    }
    set [$href](value) {
      this.href = value;
    }
    get [$origin]() {
      return this.origin;
    }
    get [$password]() {
      return this.password;
    }
    set [$password](value) {
      this.password = value;
    }
    get [$pathname]() {
      return this.pathname;
    }
    set [$pathname](value) {
      this.pathname = value;
    }
    get [$port]() {
      return this.port;
    }
    set [$port](value) {
      this.port = value;
    }
    get [$protocol]() {
      return this.protocol;
    }
    set [$protocol](value) {
      this.protocol = value;
    }
    get [$search]() {
      return this.search;
    }
    set [$search](value) {
      this.search = value;
    }
    get [$username]() {
      return this.username;
    }
    set [$username](value) {
      this.username = value;
    }
    [$toString]() {
      return String(this);
    }
  };
  (html$.AnchorElement.created = function() {
    this[download] = null;
    this[hreflang] = null;
    this[referrerPolicy] = null;
    this[rel] = null;
    this[target$] = null;
    this[type$3] = null;
    this[hash] = null;
    this[host] = null;
    this[hostname] = null;
    this[href] = null;
    this[origin] = null;
    this[password] = null;
    this[pathname] = null;
    this[port] = null;
    this[protocol] = null;
    this[search] = null;
    this[username] = null;
    html$.AnchorElement.__proto__.created.call(this);
  }).prototype = html$.AnchorElement.prototype;
  dart.addTypeTests(html$.AnchorElement);
  const download = Symbol("AnchorElement.download");
  const hreflang = Symbol("AnchorElement.hreflang");
  const referrerPolicy = Symbol("AnchorElement.referrerPolicy");
  const rel = Symbol("AnchorElement.rel");
  const target$ = Symbol("AnchorElement.target");
  const type$3 = Symbol("AnchorElement.type");
  const hash = Symbol("AnchorElement.hash");
  const host = Symbol("AnchorElement.host");
  const hostname = Symbol("AnchorElement.hostname");
  const href = Symbol("AnchorElement.href");
  const origin = Symbol("AnchorElement.origin");
  const password = Symbol("AnchorElement.password");
  const pathname = Symbol("AnchorElement.pathname");
  const port = Symbol("AnchorElement.port");
  const protocol = Symbol("AnchorElement.protocol");
  const search = Symbol("AnchorElement.search");
  const username = Symbol("AnchorElement.username");
  html$.AnchorElement[dart.implements] = () => [html$.HtmlHyperlinkElementUtils];
  dart.setFieldSignature(html$.AnchorElement, () => ({
    __proto__: dart.getFields(html$.AnchorElement.__proto__),
    [$download]: dart.fieldType(core.String),
    [$hreflang]: dart.fieldType(core.String),
    [$referrerPolicy]: dart.fieldType(core.String),
    [$rel]: dart.fieldType(core.String),
    [$target]: dart.fieldType(core.String),
    [$type]: dart.fieldType(core.String),
    [$hash]: dart.fieldType(core.String),
    [$host]: dart.fieldType(core.String),
    [$hostname]: dart.fieldType(core.String),
    [$href]: dart.fieldType(core.String),
    [$origin]: dart.finalFieldType(core.String),
    [$password]: dart.fieldType(core.String),
    [$pathname]: dart.fieldType(core.String),
    [$port]: dart.fieldType(core.String),
    [$protocol]: dart.fieldType(core.String),
    [$search]: dart.fieldType(core.String),
    [$username]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLAnchorElement", html$.AnchorElement);
  html$.Animation = class Animation$ extends html$.EventTarget {
    static new(effect, timeline) {
      if (effect === void 0) effect = null;
      if (timeline === void 0) timeline = null;
      if (timeline != null) {
        return html$.Animation._create_1(effect, timeline);
      }
      if (effect != null) {
        return html$.Animation._create_2(effect);
      }
      return html$.Animation._create_3();
    }
    static _create_1(effect, timeline) {
      return new Animation(effect, timeline);
    }
    static _create_2(effect) {
      return new Animation(effect);
    }
    static _create_3() {
      return new Animation();
    }
    static get supported() {
      return !!document.body.animate;
    }
    get [$currentTime]() {
      return this.currentTime;
    }
    set [$currentTime](value) {
      this.currentTime = value;
    }
    get [$effect]() {
      return this.effect;
    }
    set [$effect](value) {
      this.effect = value;
    }
    get [$finished]() {
      return html$.promiseToFuture(html$.Animation, this.finished);
    }
    get [$id]() {
      return this.id;
    }
    set [$id](value) {
      this.id = value;
    }
    get [$playState]() {
      return this.playState;
    }
    get [$playbackRate]() {
      return this.playbackRate;
    }
    set [$playbackRate](value) {
      this.playbackRate = value;
    }
    get [$ready]() {
      return html$.promiseToFuture(html$.Animation, this.ready);
    }
    get [$startTime]() {
      return this.startTime;
    }
    set [$startTime](value) {
      this.startTime = value;
    }
    get [$timeline]() {
      return this.timeline;
    }
    [$cancel](...args) {
      return this.cancel.apply(this, args);
    }
    [$finish](...args) {
      return this.finish.apply(this, args);
    }
    [$pause](...args) {
      return this.pause.apply(this, args);
    }
    [$play](...args) {
      return this.play.apply(this, args);
    }
    [$reverse](...args) {
      return this.reverse.apply(this, args);
    }
    get [$onCancel]() {
      return html$.Animation.cancelEvent.forTarget(this);
    }
    get [$onFinish]() {
      return html$.Animation.finishEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.Animation);
  const currentTime = Symbol("Animation.currentTime");
  const effect = Symbol("Animation.effect");
  const id$0 = Symbol("Animation.id");
  const playState = Symbol("Animation.playState");
  const playbackRate = Symbol("Animation.playbackRate");
  const startTime = Symbol("Animation.startTime");
  const timeline = Symbol("Animation.timeline");
  dart.setMethodSignature(html$.Animation, () => ({
    __proto__: dart.getMethods(html$.Animation.__proto__),
    [$cancel]: dart.fnType(dart.void, []),
    [$finish]: dart.fnType(dart.void, []),
    [$pause]: dart.fnType(dart.void, []),
    [$play]: dart.fnType(dart.void, []),
    [$reverse]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(html$.Animation, () => ({
    __proto__: dart.getGetters(html$.Animation.__proto__),
    [$finished]: async.Future$(html$.Animation),
    [$ready]: async.Future$(html$.Animation),
    [$onCancel]: async.Stream$(html$.Event),
    [$onFinish]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.Animation, () => ({
    __proto__: dart.getFields(html$.Animation.__proto__),
    [$currentTime]: dart.fieldType(core.num),
    [$effect]: dart.fieldType(html$.AnimationEffectReadOnly),
    [$id]: dart.fieldType(core.String),
    [$playState]: dart.finalFieldType(core.String),
    [$playbackRate]: dart.fieldType(core.num),
    [$startTime]: dart.fieldType(core.num),
    [$timeline]: dart.finalFieldType(html$.AnimationTimeline)
  }));
  dart.defineLazy(html$.Animation, {
    /*html$.Animation.cancelEvent*/get cancelEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("cancel"));
    },
    /*html$.Animation.finishEvent*/get finishEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("finish"));
    }
  });
  dart.registerExtension("Animation", html$.Animation);
  const _getComputedTiming_1 = Symbol('_getComputedTiming_1');
  html$.AnimationEffectReadOnly = class AnimationEffectReadOnly extends _interceptors.Interceptor {
    get [$timing]() {
      return this.timing;
    }
    [$getComputedTiming]() {
      return html_common.convertNativeToDart_Dictionary(this[_getComputedTiming_1]());
    }
    [_getComputedTiming_1](...args) {
      return this.getComputedTiming.apply(this, args);
    }
  };
  dart.addTypeTests(html$.AnimationEffectReadOnly);
  const timing = Symbol("AnimationEffectReadOnly.timing");
  dart.setMethodSignature(html$.AnimationEffectReadOnly, () => ({
    __proto__: dart.getMethods(html$.AnimationEffectReadOnly.__proto__),
    [$getComputedTiming]: dart.fnType(core.Map, []),
    [_getComputedTiming_1]: dart.fnType(dart.dynamic, [])
  }));
  dart.setFieldSignature(html$.AnimationEffectReadOnly, () => ({
    __proto__: dart.getFields(html$.AnimationEffectReadOnly.__proto__),
    [$timing]: dart.finalFieldType(html$.AnimationEffectTimingReadOnly)
  }));
  dart.registerExtension("AnimationEffectReadOnly", html$.AnimationEffectReadOnly);
  html$.AnimationEffectTimingReadOnly = class AnimationEffectTimingReadOnly extends _interceptors.Interceptor {
    get [$delay]() {
      return this.delay;
    }
    get [$direction]() {
      return this.direction;
    }
    get [$duration]() {
      return this.duration;
    }
    get [$easing]() {
      return this.easing;
    }
    get [$endDelay]() {
      return this.endDelay;
    }
    get [$fill]() {
      return this.fill;
    }
    get [$iterationStart]() {
      return this.iterationStart;
    }
    get [$iterations]() {
      return this.iterations;
    }
  };
  dart.addTypeTests(html$.AnimationEffectTimingReadOnly);
  const delay = Symbol("AnimationEffectTimingReadOnly.delay");
  const direction$ = Symbol("AnimationEffectTimingReadOnly.direction");
  const duration = Symbol("AnimationEffectTimingReadOnly.duration");
  const easing = Symbol("AnimationEffectTimingReadOnly.easing");
  const endDelay = Symbol("AnimationEffectTimingReadOnly.endDelay");
  const fill = Symbol("AnimationEffectTimingReadOnly.fill");
  const iterationStart = Symbol("AnimationEffectTimingReadOnly.iterationStart");
  const iterations = Symbol("AnimationEffectTimingReadOnly.iterations");
  dart.setFieldSignature(html$.AnimationEffectTimingReadOnly, () => ({
    __proto__: dart.getFields(html$.AnimationEffectTimingReadOnly.__proto__),
    [$delay]: dart.finalFieldType(core.num),
    [$direction]: dart.finalFieldType(core.String),
    [$duration]: dart.finalFieldType(core.Object),
    [$easing]: dart.finalFieldType(core.String),
    [$endDelay]: dart.finalFieldType(core.num),
    [$fill]: dart.finalFieldType(core.String),
    [$iterationStart]: dart.finalFieldType(core.num),
    [$iterations]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("AnimationEffectTimingReadOnly", html$.AnimationEffectTimingReadOnly);
  html$.AnimationEffectTiming = class AnimationEffectTiming extends html$.AnimationEffectTimingReadOnly {
    get [$delay]() {
      return this.delay;
    }
    set [$delay](value) {
      this.delay = value;
    }
    get [$direction]() {
      return this.direction;
    }
    set [$direction](value) {
      this.direction = value;
    }
    get [$duration]() {
      return this.duration;
    }
    set [$duration](value) {
      this.duration = value;
    }
    get [$easing]() {
      return this.easing;
    }
    set [$easing](value) {
      this.easing = value;
    }
    get [$endDelay]() {
      return this.endDelay;
    }
    set [$endDelay](value) {
      this.endDelay = value;
    }
    get [$fill]() {
      return this.fill;
    }
    set [$fill](value) {
      this.fill = value;
    }
    get [$iterationStart]() {
      return this.iterationStart;
    }
    set [$iterationStart](value) {
      this.iterationStart = value;
    }
    get [$iterations]() {
      return this.iterations;
    }
    set [$iterations](value) {
      this.iterations = value;
    }
  };
  dart.addTypeTests(html$.AnimationEffectTiming);
  dart.setSetterSignature(html$.AnimationEffectTiming, () => ({
    __proto__: dart.getSetters(html$.AnimationEffectTiming.__proto__),
    [$delay]: core.num,
    [$direction]: core.String,
    [$duration]: core.Object,
    [$easing]: core.String,
    [$endDelay]: core.num,
    [$fill]: core.String,
    [$iterationStart]: core.num,
    [$iterations]: core.num
  }));
  dart.registerExtension("AnimationEffectTiming", html$.AnimationEffectTiming);
  html$.AnimationEvent = class AnimationEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.AnimationEvent._create_1(type, eventInitDict_1);
      }
      return html$.AnimationEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new AnimationEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new AnimationEvent(type);
    }
    get [$animationName]() {
      return this.animationName;
    }
    get [$elapsedTime]() {
      return this.elapsedTime;
    }
  };
  dart.addTypeTests(html$.AnimationEvent);
  const animationName = Symbol("AnimationEvent.animationName");
  const elapsedTime = Symbol("AnimationEvent.elapsedTime");
  dart.setFieldSignature(html$.AnimationEvent, () => ({
    __proto__: dart.getFields(html$.AnimationEvent.__proto__),
    [$animationName]: dart.finalFieldType(core.String),
    [$elapsedTime]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("AnimationEvent", html$.AnimationEvent);
  html$.AnimationPlaybackEvent = class AnimationPlaybackEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.AnimationPlaybackEvent._create_1(type, eventInitDict_1);
      }
      return html$.AnimationPlaybackEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new AnimationPlaybackEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new AnimationPlaybackEvent(type);
    }
    get [$currentTime]() {
      return this.currentTime;
    }
    get [$timelineTime]() {
      return this.timelineTime;
    }
  };
  dart.addTypeTests(html$.AnimationPlaybackEvent);
  const currentTime$ = Symbol("AnimationPlaybackEvent.currentTime");
  const timelineTime = Symbol("AnimationPlaybackEvent.timelineTime");
  dart.setFieldSignature(html$.AnimationPlaybackEvent, () => ({
    __proto__: dart.getFields(html$.AnimationPlaybackEvent.__proto__),
    [$currentTime]: dart.finalFieldType(core.num),
    [$timelineTime]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("AnimationPlaybackEvent", html$.AnimationPlaybackEvent);
  html$.AnimationTimeline = class AnimationTimeline extends _interceptors.Interceptor {
    get [$currentTime]() {
      return this.currentTime;
    }
  };
  dart.addTypeTests(html$.AnimationTimeline);
  const currentTime$0 = Symbol("AnimationTimeline.currentTime");
  dart.setFieldSignature(html$.AnimationTimeline, () => ({
    __proto__: dart.getFields(html$.AnimationTimeline.__proto__),
    [$currentTime]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("AnimationTimeline", html$.AnimationTimeline);
  html$.WorkletGlobalScope = class WorkletGlobalScope extends _interceptors.Interceptor {};
  dart.addTypeTests(html$.WorkletGlobalScope);
  dart.registerExtension("WorkletGlobalScope", html$.WorkletGlobalScope);
  html$.AnimationWorkletGlobalScope = class AnimationWorkletGlobalScope extends html$.WorkletGlobalScope {
    [$registerAnimator](...args) {
      return this.registerAnimator.apply(this, args);
    }
  };
  dart.addTypeTests(html$.AnimationWorkletGlobalScope);
  dart.setMethodSignature(html$.AnimationWorkletGlobalScope, () => ({
    __proto__: dart.getMethods(html$.AnimationWorkletGlobalScope.__proto__),
    [$registerAnimator]: dart.fnType(dart.void, [core.String, core.Object])
  }));
  dart.registerExtension("AnimationWorkletGlobalScope", html$.AnimationWorkletGlobalScope);
  html$.ApplicationCache = class ApplicationCache extends html$.EventTarget {
    static get supported() {
      return !!window.applicationCache;
    }
    get [$status]() {
      return this.status;
    }
    [$abort](...args) {
      return this.abort.apply(this, args);
    }
    [$swapCache](...args) {
      return this.swapCache.apply(this, args);
    }
    [$update](...args) {
      return this.update.apply(this, args);
    }
    get [$onCached]() {
      return html$.ApplicationCache.cachedEvent.forTarget(this);
    }
    get [$onChecking]() {
      return html$.ApplicationCache.checkingEvent.forTarget(this);
    }
    get [$onDownloading]() {
      return html$.ApplicationCache.downloadingEvent.forTarget(this);
    }
    get [$onError]() {
      return html$.ApplicationCache.errorEvent.forTarget(this);
    }
    get [$onNoUpdate]() {
      return html$.ApplicationCache.noUpdateEvent.forTarget(this);
    }
    get [$onObsolete]() {
      return html$.ApplicationCache.obsoleteEvent.forTarget(this);
    }
    get [$onProgress]() {
      return html$.ApplicationCache.progressEvent.forTarget(this);
    }
    get [$onUpdateReady]() {
      return html$.ApplicationCache.updateReadyEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.ApplicationCache);
  const status = Symbol("ApplicationCache.status");
  dart.setMethodSignature(html$.ApplicationCache, () => ({
    __proto__: dart.getMethods(html$.ApplicationCache.__proto__),
    [$abort]: dart.fnType(dart.void, []),
    [$swapCache]: dart.fnType(dart.void, []),
    [$update]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(html$.ApplicationCache, () => ({
    __proto__: dart.getGetters(html$.ApplicationCache.__proto__),
    [$onCached]: async.Stream$(html$.Event),
    [$onChecking]: async.Stream$(html$.Event),
    [$onDownloading]: async.Stream$(html$.Event),
    [$onError]: async.Stream$(html$.Event),
    [$onNoUpdate]: async.Stream$(html$.Event),
    [$onObsolete]: async.Stream$(html$.Event),
    [$onProgress]: async.Stream$(html$.ProgressEvent),
    [$onUpdateReady]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.ApplicationCache, () => ({
    __proto__: dart.getFields(html$.ApplicationCache.__proto__),
    [$status]: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(html$.ApplicationCache, {
    /*html$.ApplicationCache.cachedEvent*/get cachedEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("cached"));
    },
    /*html$.ApplicationCache.checkingEvent*/get checkingEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("checking"));
    },
    /*html$.ApplicationCache.downloadingEvent*/get downloadingEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("downloading"));
    },
    /*html$.ApplicationCache.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    },
    /*html$.ApplicationCache.noUpdateEvent*/get noUpdateEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("noupdate"));
    },
    /*html$.ApplicationCache.obsoleteEvent*/get obsoleteEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("obsolete"));
    },
    /*html$.ApplicationCache.progressEvent*/get progressEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("progress"));
    },
    /*html$.ApplicationCache.updateReadyEvent*/get updateReadyEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("updateready"));
    },
    /*html$.ApplicationCache.CHECKING*/get CHECKING() {
      return 2;
    },
    /*html$.ApplicationCache.DOWNLOADING*/get DOWNLOADING() {
      return 3;
    },
    /*html$.ApplicationCache.IDLE*/get IDLE() {
      return 1;
    },
    /*html$.ApplicationCache.OBSOLETE*/get OBSOLETE() {
      return 5;
    },
    /*html$.ApplicationCache.UNCACHED*/get UNCACHED() {
      return 0;
    },
    /*html$.ApplicationCache.UPDATEREADY*/get UPDATEREADY() {
      return 4;
    }
  });
  dart.registerExtension("ApplicationCache", html$.ApplicationCache);
  dart.registerExtension("DOMApplicationCache", html$.ApplicationCache);
  dart.registerExtension("OfflineResourceList", html$.ApplicationCache);
  html$.ApplicationCacheErrorEvent = class ApplicationCacheErrorEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.ApplicationCacheErrorEvent._create_1(type, eventInitDict_1);
      }
      return html$.ApplicationCacheErrorEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new ApplicationCacheErrorEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new ApplicationCacheErrorEvent(type);
    }
    get [$message]() {
      return this.message;
    }
    get [$reason]() {
      return this.reason;
    }
    get [$status]() {
      return this.status;
    }
    get [$url]() {
      return this.url;
    }
  };
  dart.addTypeTests(html$.ApplicationCacheErrorEvent);
  const message = Symbol("ApplicationCacheErrorEvent.message");
  const reason = Symbol("ApplicationCacheErrorEvent.reason");
  const status$ = Symbol("ApplicationCacheErrorEvent.status");
  const url = Symbol("ApplicationCacheErrorEvent.url");
  dart.setFieldSignature(html$.ApplicationCacheErrorEvent, () => ({
    __proto__: dart.getFields(html$.ApplicationCacheErrorEvent.__proto__),
    [$message]: dart.finalFieldType(core.String),
    [$reason]: dart.finalFieldType(core.String),
    [$status]: dart.finalFieldType(core.int),
    [$url]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("ApplicationCacheErrorEvent", html$.ApplicationCacheErrorEvent);
  html$.AreaElement = class AreaElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("area");
    }
    get [$alt]() {
      return this.alt;
    }
    set [$alt](value) {
      this.alt = value;
    }
    get [$coords]() {
      return this.coords;
    }
    set [$coords](value) {
      this.coords = value;
    }
    get [$download]() {
      return this.download;
    }
    set [$download](value) {
      this.download = value;
    }
    get [$referrerPolicy]() {
      return this.referrerPolicy;
    }
    set [$referrerPolicy](value) {
      this.referrerPolicy = value;
    }
    get [$rel]() {
      return this.rel;
    }
    set [$rel](value) {
      this.rel = value;
    }
    get [$shape]() {
      return this.shape;
    }
    set [$shape](value) {
      this.shape = value;
    }
    get [$target]() {
      return this.target;
    }
    set [$target](value) {
      this.target = value;
    }
    get [$hash]() {
      return this.hash;
    }
    set [$hash](value) {
      this.hash = value;
    }
    get [$host]() {
      return this.host;
    }
    set [$host](value) {
      this.host = value;
    }
    get [$hostname]() {
      return this.hostname;
    }
    set [$hostname](value) {
      this.hostname = value;
    }
    get [$href]() {
      return this.href;
    }
    set [$href](value) {
      this.href = value;
    }
    get [$origin]() {
      return this.origin;
    }
    get [$password]() {
      return this.password;
    }
    set [$password](value) {
      this.password = value;
    }
    get [$pathname]() {
      return this.pathname;
    }
    set [$pathname](value) {
      this.pathname = value;
    }
    get [$port]() {
      return this.port;
    }
    set [$port](value) {
      this.port = value;
    }
    get [$protocol]() {
      return this.protocol;
    }
    set [$protocol](value) {
      this.protocol = value;
    }
    get [$search]() {
      return this.search;
    }
    set [$search](value) {
      this.search = value;
    }
    get [$username]() {
      return this.username;
    }
    set [$username](value) {
      this.username = value;
    }
    [$toString]() {
      return String(this);
    }
  };
  (html$.AreaElement.created = function() {
    this[alt] = null;
    this[coords] = null;
    this[download$] = null;
    this[referrerPolicy$] = null;
    this[rel$] = null;
    this[shape] = null;
    this[target$0] = null;
    this[hash$] = null;
    this[host$] = null;
    this[hostname$] = null;
    this[href$] = null;
    this[origin$] = null;
    this[password$] = null;
    this[pathname$] = null;
    this[port$1] = null;
    this[protocol$] = null;
    this[search$] = null;
    this[username$] = null;
    html$.AreaElement.__proto__.created.call(this);
  }).prototype = html$.AreaElement.prototype;
  dart.addTypeTests(html$.AreaElement);
  const alt = Symbol("AreaElement.alt");
  const coords = Symbol("AreaElement.coords");
  const download$ = Symbol("AreaElement.download");
  const referrerPolicy$ = Symbol("AreaElement.referrerPolicy");
  const rel$ = Symbol("AreaElement.rel");
  const shape = Symbol("AreaElement.shape");
  const target$0 = Symbol("AreaElement.target");
  const hash$ = Symbol("AreaElement.hash");
  const host$ = Symbol("AreaElement.host");
  const hostname$ = Symbol("AreaElement.hostname");
  const href$ = Symbol("AreaElement.href");
  const origin$ = Symbol("AreaElement.origin");
  const password$ = Symbol("AreaElement.password");
  const pathname$ = Symbol("AreaElement.pathname");
  const port$1 = Symbol("AreaElement.port");
  const protocol$ = Symbol("AreaElement.protocol");
  const search$ = Symbol("AreaElement.search");
  const username$ = Symbol("AreaElement.username");
  html$.AreaElement[dart.implements] = () => [html$.HtmlHyperlinkElementUtils];
  dart.setFieldSignature(html$.AreaElement, () => ({
    __proto__: dart.getFields(html$.AreaElement.__proto__),
    [$alt]: dart.fieldType(core.String),
    [$coords]: dart.fieldType(core.String),
    [$download]: dart.fieldType(core.String),
    [$referrerPolicy]: dart.fieldType(core.String),
    [$rel]: dart.fieldType(core.String),
    [$shape]: dart.fieldType(core.String),
    [$target]: dart.fieldType(core.String),
    [$hash]: dart.fieldType(core.String),
    [$host]: dart.fieldType(core.String),
    [$hostname]: dart.fieldType(core.String),
    [$href]: dart.fieldType(core.String),
    [$origin]: dart.finalFieldType(core.String),
    [$password]: dart.fieldType(core.String),
    [$pathname]: dart.fieldType(core.String),
    [$port]: dart.fieldType(core.String),
    [$protocol]: dart.fieldType(core.String),
    [$search]: dart.fieldType(core.String),
    [$username]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLAreaElement", html$.AreaElement);
  html$.MediaElement = class MediaElement extends html$.HtmlElement {
    get [$audioTracks]() {
      return this.audioTracks;
    }
    get [$autoplay]() {
      return this.autoplay;
    }
    set [$autoplay](value) {
      this.autoplay = value;
    }
    get [$buffered]() {
      return this.buffered;
    }
    get [$controls]() {
      return this.controls;
    }
    set [$controls](value) {
      this.controls = value;
    }
    get [$controlsList]() {
      return this.controlsList;
    }
    get [$crossOrigin]() {
      return this.crossOrigin;
    }
    set [$crossOrigin](value) {
      this.crossOrigin = value;
    }
    get [$currentSrc]() {
      return this.currentSrc;
    }
    get [$currentTime]() {
      return this.currentTime;
    }
    set [$currentTime](value) {
      this.currentTime = value;
    }
    get [$defaultMuted]() {
      return this.defaultMuted;
    }
    set [$defaultMuted](value) {
      this.defaultMuted = value;
    }
    get [$defaultPlaybackRate]() {
      return this.defaultPlaybackRate;
    }
    set [$defaultPlaybackRate](value) {
      this.defaultPlaybackRate = value;
    }
    get [$disableRemotePlayback]() {
      return this.disableRemotePlayback;
    }
    set [$disableRemotePlayback](value) {
      this.disableRemotePlayback = value;
    }
    get [$duration]() {
      return this.duration;
    }
    get [$ended]() {
      return this.ended;
    }
    get [$error]() {
      return this.error;
    }
    get [$loop]() {
      return this.loop;
    }
    set [$loop](value) {
      this.loop = value;
    }
    get [$mediaKeys]() {
      return this.mediaKeys;
    }
    get [$muted]() {
      return this.muted;
    }
    set [$muted](value) {
      this.muted = value;
    }
    get [$networkState]() {
      return this.networkState;
    }
    get [$paused]() {
      return this.paused;
    }
    get [$playbackRate]() {
      return this.playbackRate;
    }
    set [$playbackRate](value) {
      this.playbackRate = value;
    }
    get [$played]() {
      return this.played;
    }
    get [$preload]() {
      return this.preload;
    }
    set [$preload](value) {
      this.preload = value;
    }
    get [$readyState]() {
      return this.readyState;
    }
    get [$remote]() {
      return this.remote;
    }
    get [$seekable]() {
      return this.seekable;
    }
    get [$seeking]() {
      return this.seeking;
    }
    get [$sinkId]() {
      return this.sinkId;
    }
    get [$src]() {
      return this.src;
    }
    set [$src](value) {
      this.src = value;
    }
    get [$srcObject]() {
      return this.srcObject;
    }
    set [$srcObject](value) {
      this.srcObject = value;
    }
    get [$textTracks]() {
      return this.textTracks;
    }
    get [$videoTracks]() {
      return this.videoTracks;
    }
    get [$volume]() {
      return this.volume;
    }
    set [$volume](value) {
      this.volume = value;
    }
    get [$audioDecodedByteCount]() {
      return this.webkitAudioDecodedByteCount;
    }
    get [$videoDecodedByteCount]() {
      return this.webkitVideoDecodedByteCount;
    }
    [$addTextTrack](...args) {
      return this.addTextTrack.apply(this, args);
    }
    [$canPlayType](...args) {
      return this.canPlayType.apply(this, args);
    }
    [$captureStream](...args) {
      return this.captureStream.apply(this, args);
    }
    [$load](...args) {
      return this.load.apply(this, args);
    }
    [$pause](...args) {
      return this.pause.apply(this, args);
    }
    [$play]() {
      return html$.promiseToFuture(dart.dynamic, this.play());
    }
    [$setMediaKeys](mediaKeys) {
      return html$.promiseToFuture(dart.dynamic, this.setMediaKeys(mediaKeys));
    }
    [$setSinkId](sinkId) {
      return html$.promiseToFuture(dart.dynamic, this.setSinkId(sinkId));
    }
  };
  (html$.MediaElement.created = function() {
    this[audioTracks] = null;
    this[autoplay] = null;
    this[buffered] = null;
    this[controls$] = null;
    this[controlsList] = null;
    this[crossOrigin] = null;
    this[currentSrc] = null;
    this[currentTime$1] = null;
    this[defaultMuted] = null;
    this[defaultPlaybackRate] = null;
    this[disableRemotePlayback] = null;
    this[duration$0] = null;
    this[ended] = null;
    this[error$1] = null;
    this[loop] = null;
    this[mediaKeys] = null;
    this[muted] = null;
    this[networkState] = null;
    this[paused] = null;
    this[playbackRate$] = null;
    this[played] = null;
    this[preload] = null;
    this[readyState$] = null;
    this[remote] = null;
    this[seekable] = null;
    this[seeking] = null;
    this[sinkId] = null;
    this[src] = null;
    this[srcObject] = null;
    this[textTracks] = null;
    this[videoTracks] = null;
    this[volume] = null;
    this[audioDecodedByteCount] = null;
    this[videoDecodedByteCount] = null;
    html$.MediaElement.__proto__.created.call(this);
  }).prototype = html$.MediaElement.prototype;
  dart.addTypeTests(html$.MediaElement);
  const audioTracks = Symbol("MediaElement.audioTracks");
  const autoplay = Symbol("MediaElement.autoplay");
  const buffered = Symbol("MediaElement.buffered");
  const controls$ = Symbol("MediaElement.controls");
  const controlsList = Symbol("MediaElement.controlsList");
  const crossOrigin = Symbol("MediaElement.crossOrigin");
  const currentSrc = Symbol("MediaElement.currentSrc");
  const currentTime$1 = Symbol("MediaElement.currentTime");
  const defaultMuted = Symbol("MediaElement.defaultMuted");
  const defaultPlaybackRate = Symbol("MediaElement.defaultPlaybackRate");
  const disableRemotePlayback = Symbol("MediaElement.disableRemotePlayback");
  const duration$0 = Symbol("MediaElement.duration");
  const ended = Symbol("MediaElement.ended");
  const error$1 = Symbol("MediaElement.error");
  const loop = Symbol("MediaElement.loop");
  const mediaKeys = Symbol("MediaElement.mediaKeys");
  const muted = Symbol("MediaElement.muted");
  const networkState = Symbol("MediaElement.networkState");
  const paused = Symbol("MediaElement.paused");
  const playbackRate$ = Symbol("MediaElement.playbackRate");
  const played = Symbol("MediaElement.played");
  const preload = Symbol("MediaElement.preload");
  const readyState$ = Symbol("MediaElement.readyState");
  const remote = Symbol("MediaElement.remote");
  const seekable = Symbol("MediaElement.seekable");
  const seeking = Symbol("MediaElement.seeking");
  const sinkId = Symbol("MediaElement.sinkId");
  const src = Symbol("MediaElement.src");
  const srcObject = Symbol("MediaElement.srcObject");
  const textTracks = Symbol("MediaElement.textTracks");
  const videoTracks = Symbol("MediaElement.videoTracks");
  const volume = Symbol("MediaElement.volume");
  const audioDecodedByteCount = Symbol("MediaElement.audioDecodedByteCount");
  const videoDecodedByteCount = Symbol("MediaElement.videoDecodedByteCount");
  dart.setMethodSignature(html$.MediaElement, () => ({
    __proto__: dart.getMethods(html$.MediaElement.__proto__),
    [$addTextTrack]: dart.fnType(html$.TextTrack, [core.String], [core.String, core.String]),
    [$canPlayType]: dart.fnType(core.String, [core.String], [core.String]),
    [$captureStream]: dart.fnType(html$.MediaStream, []),
    [$load]: dart.fnType(dart.void, []),
    [$pause]: dart.fnType(dart.void, []),
    [$play]: dart.fnType(async.Future, []),
    [$setMediaKeys]: dart.fnType(async.Future, [html$.MediaKeys]),
    [$setSinkId]: dart.fnType(async.Future, [core.String])
  }));
  dart.setFieldSignature(html$.MediaElement, () => ({
    __proto__: dart.getFields(html$.MediaElement.__proto__),
    [$audioTracks]: dart.finalFieldType(web_audio.AudioTrackList),
    [$autoplay]: dart.fieldType(core.bool),
    [$buffered]: dart.finalFieldType(html$.TimeRanges),
    [$controls]: dart.fieldType(core.bool),
    [$controlsList]: dart.finalFieldType(html$.DomTokenList),
    [$crossOrigin]: dart.fieldType(core.String),
    [$currentSrc]: dart.finalFieldType(core.String),
    [$currentTime]: dart.fieldType(core.num),
    [$defaultMuted]: dart.fieldType(core.bool),
    [$defaultPlaybackRate]: dart.fieldType(core.num),
    [$disableRemotePlayback]: dart.fieldType(core.bool),
    [$duration]: dart.finalFieldType(core.num),
    [$ended]: dart.finalFieldType(core.bool),
    [$error]: dart.finalFieldType(html$.MediaError),
    [$loop]: dart.fieldType(core.bool),
    [$mediaKeys]: dart.finalFieldType(html$.MediaKeys),
    [$muted]: dart.fieldType(core.bool),
    [$networkState]: dart.finalFieldType(core.int),
    [$paused]: dart.finalFieldType(core.bool),
    [$playbackRate]: dart.fieldType(core.num),
    [$played]: dart.finalFieldType(html$.TimeRanges),
    [$preload]: dart.fieldType(core.String),
    [$readyState]: dart.finalFieldType(core.int),
    [$remote]: dart.finalFieldType(html$.RemotePlayback),
    [$seekable]: dart.finalFieldType(html$.TimeRanges),
    [$seeking]: dart.finalFieldType(core.bool),
    [$sinkId]: dart.finalFieldType(core.String),
    [$src]: dart.fieldType(core.String),
    [$srcObject]: dart.fieldType(html$.MediaStream),
    [$textTracks]: dart.finalFieldType(html$.TextTrackList),
    [$videoTracks]: dart.finalFieldType(html$.VideoTrackList),
    [$volume]: dart.fieldType(core.num),
    [$audioDecodedByteCount]: dart.finalFieldType(core.int),
    [$videoDecodedByteCount]: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(html$.MediaElement, {
    /*html$.MediaElement.HAVE_CURRENT_DATA*/get HAVE_CURRENT_DATA() {
      return 2;
    },
    /*html$.MediaElement.HAVE_ENOUGH_DATA*/get HAVE_ENOUGH_DATA() {
      return 4;
    },
    /*html$.MediaElement.HAVE_FUTURE_DATA*/get HAVE_FUTURE_DATA() {
      return 3;
    },
    /*html$.MediaElement.HAVE_METADATA*/get HAVE_METADATA() {
      return 1;
    },
    /*html$.MediaElement.HAVE_NOTHING*/get HAVE_NOTHING() {
      return 0;
    },
    /*html$.MediaElement.NETWORK_EMPTY*/get NETWORK_EMPTY() {
      return 0;
    },
    /*html$.MediaElement.NETWORK_IDLE*/get NETWORK_IDLE() {
      return 1;
    },
    /*html$.MediaElement.NETWORK_LOADING*/get NETWORK_LOADING() {
      return 2;
    },
    /*html$.MediaElement.NETWORK_NO_SOURCE*/get NETWORK_NO_SOURCE() {
      return 3;
    }
  });
  dart.registerExtension("HTMLMediaElement", html$.MediaElement);
  html$.AudioElement = class AudioElement extends html$.MediaElement {
    static __(src) {
      if (src === void 0) src = null;
      if (src != null) {
        return html$.AudioElement._create_1(src);
      }
      return html$.AudioElement._create_2();
    }
    static _create_1(src) {
      return new Audio(src);
    }
    static _create_2() {
      return new Audio();
    }
    static new(src) {
      if (src === void 0) src = null;
      return html$.AudioElement.__(src);
    }
  };
  (html$.AudioElement.created = function() {
    html$.AudioElement.__proto__.created.call(this);
  }).prototype = html$.AudioElement.prototype;
  dart.addTypeTests(html$.AudioElement);
  dart.registerExtension("HTMLAudioElement", html$.AudioElement);
  html$.AuthenticatorResponse = class AuthenticatorResponse extends _interceptors.Interceptor {
    get [$clientDataJson]() {
      return this.clientDataJSON;
    }
  };
  dart.addTypeTests(html$.AuthenticatorResponse);
  const clientDataJson = Symbol("AuthenticatorResponse.clientDataJson");
  dart.setFieldSignature(html$.AuthenticatorResponse, () => ({
    __proto__: dart.getFields(html$.AuthenticatorResponse.__proto__),
    [$clientDataJson]: dart.finalFieldType(typed_data.ByteBuffer)
  }));
  dart.registerExtension("AuthenticatorResponse", html$.AuthenticatorResponse);
  html$.AuthenticatorAssertionResponse = class AuthenticatorAssertionResponse extends html$.AuthenticatorResponse {
    get [$authenticatorData]() {
      return this.authenticatorData;
    }
    get [$signature]() {
      return this.signature;
    }
  };
  dart.addTypeTests(html$.AuthenticatorAssertionResponse);
  const authenticatorData = Symbol("AuthenticatorAssertionResponse.authenticatorData");
  const signature = Symbol("AuthenticatorAssertionResponse.signature");
  dart.setFieldSignature(html$.AuthenticatorAssertionResponse, () => ({
    __proto__: dart.getFields(html$.AuthenticatorAssertionResponse.__proto__),
    [$authenticatorData]: dart.finalFieldType(typed_data.ByteBuffer),
    [$signature]: dart.finalFieldType(typed_data.ByteBuffer)
  }));
  dart.registerExtension("AuthenticatorAssertionResponse", html$.AuthenticatorAssertionResponse);
  html$.AuthenticatorAttestationResponse = class AuthenticatorAttestationResponse extends html$.AuthenticatorResponse {
    get [$attestationObject]() {
      return this.attestationObject;
    }
  };
  dart.addTypeTests(html$.AuthenticatorAttestationResponse);
  const attestationObject = Symbol("AuthenticatorAttestationResponse.attestationObject");
  dart.setFieldSignature(html$.AuthenticatorAttestationResponse, () => ({
    __proto__: dart.getFields(html$.AuthenticatorAttestationResponse.__proto__),
    [$attestationObject]: dart.finalFieldType(typed_data.ByteBuffer)
  }));
  dart.registerExtension("AuthenticatorAttestationResponse", html$.AuthenticatorAttestationResponse);
  html$.BRElement = class BRElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("br");
    }
  };
  (html$.BRElement.created = function() {
    html$.BRElement.__proto__.created.call(this);
  }).prototype = html$.BRElement.prototype;
  dart.addTypeTests(html$.BRElement);
  dart.registerExtension("HTMLBRElement", html$.BRElement);
  html$.BackgroundFetchEvent = class BackgroundFetchEvent$ extends html$.ExtendableEvent {
    static new(type, init) {
      let init_1 = html_common.convertDartToNative_Dictionary(init);
      return html$.BackgroundFetchEvent._create_1(type, init_1);
    }
    static _create_1(type, init) {
      return new BackgroundFetchEvent(type, init);
    }
    get [$id]() {
      return this.id;
    }
  };
  dart.addTypeTests(html$.BackgroundFetchEvent);
  const id$1 = Symbol("BackgroundFetchEvent.id");
  dart.setFieldSignature(html$.BackgroundFetchEvent, () => ({
    __proto__: dart.getFields(html$.BackgroundFetchEvent.__proto__),
    [$id]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("BackgroundFetchEvent", html$.BackgroundFetchEvent);
  html$.BackgroundFetchClickEvent = class BackgroundFetchClickEvent$ extends html$.BackgroundFetchEvent {
    static new(type, init) {
      let init_1 = html_common.convertDartToNative_Dictionary(init);
      return html$.BackgroundFetchClickEvent._create_1(type, init_1);
    }
    static _create_1(type, init) {
      return new BackgroundFetchClickEvent(type, init);
    }
    get [$state]() {
      return this.state;
    }
  };
  dart.addTypeTests(html$.BackgroundFetchClickEvent);
  const state = Symbol("BackgroundFetchClickEvent.state");
  dart.setFieldSignature(html$.BackgroundFetchClickEvent, () => ({
    __proto__: dart.getFields(html$.BackgroundFetchClickEvent.__proto__),
    [$state]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("BackgroundFetchClickEvent", html$.BackgroundFetchClickEvent);
  html$.BackgroundFetchFailEvent = class BackgroundFetchFailEvent$ extends html$.BackgroundFetchEvent {
    static new(type, init) {
      let init_1 = html_common.convertDartToNative_Dictionary(init);
      return html$.BackgroundFetchFailEvent._create_1(type, init_1);
    }
    static _create_1(type, init) {
      return new BackgroundFetchFailEvent(type, init);
    }
    get [$fetches]() {
      return this.fetches;
    }
  };
  dart.addTypeTests(html$.BackgroundFetchFailEvent);
  const fetches = Symbol("BackgroundFetchFailEvent.fetches");
  dart.setFieldSignature(html$.BackgroundFetchFailEvent, () => ({
    __proto__: dart.getFields(html$.BackgroundFetchFailEvent.__proto__),
    [$fetches]: dart.finalFieldType(ListOfBackgroundFetchSettledFetch())
  }));
  dart.registerExtension("BackgroundFetchFailEvent", html$.BackgroundFetchFailEvent);
  html$.BackgroundFetchFetch = class BackgroundFetchFetch extends _interceptors.Interceptor {
    get [$request]() {
      return this.request;
    }
  };
  dart.addTypeTests(html$.BackgroundFetchFetch);
  const request = Symbol("BackgroundFetchFetch.request");
  dart.setFieldSignature(html$.BackgroundFetchFetch, () => ({
    __proto__: dart.getFields(html$.BackgroundFetchFetch.__proto__),
    [$request]: dart.finalFieldType(html$._Request)
  }));
  dart.registerExtension("BackgroundFetchFetch", html$.BackgroundFetchFetch);
  html$.BackgroundFetchManager = class BackgroundFetchManager extends _interceptors.Interceptor {
    [$fetch](id, requests, options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(html$.BackgroundFetchRegistration, this.fetch(id, requests, options_dict));
    }
    [$get](id) {
      return html$.promiseToFuture(html$.BackgroundFetchRegistration, this.get(id));
    }
    [$getIds]() {
      return html$.promiseToFuture(ListOfString(), this.getIds());
    }
  };
  dart.addTypeTests(html$.BackgroundFetchManager);
  dart.setMethodSignature(html$.BackgroundFetchManager, () => ({
    __proto__: dart.getMethods(html$.BackgroundFetchManager.__proto__),
    [$fetch]: dart.fnType(async.Future$(html$.BackgroundFetchRegistration), [core.String, core.Object], [core.Map]),
    [$get]: dart.fnType(async.Future$(html$.BackgroundFetchRegistration), [core.String]),
    [$getIds]: dart.fnType(async.Future$(core.List$(core.String)), [])
  }));
  dart.registerExtension("BackgroundFetchManager", html$.BackgroundFetchManager);
  html$.BackgroundFetchRegistration = class BackgroundFetchRegistration extends html$.EventTarget {
    get [$downloadTotal]() {
      return this.downloadTotal;
    }
    get [$downloaded]() {
      return this.downloaded;
    }
    get [$id]() {
      return this.id;
    }
    get [$title]() {
      return this.title;
    }
    get [$totalDownloadSize]() {
      return this.totalDownloadSize;
    }
    get [$uploadTotal]() {
      return this.uploadTotal;
    }
    get [$uploaded]() {
      return this.uploaded;
    }
    [$abort]() {
      return html$.promiseToFuture(core.bool, this.abort());
    }
  };
  dart.addTypeTests(html$.BackgroundFetchRegistration);
  const downloadTotal = Symbol("BackgroundFetchRegistration.downloadTotal");
  const downloaded = Symbol("BackgroundFetchRegistration.downloaded");
  const id$2 = Symbol("BackgroundFetchRegistration.id");
  const title$ = Symbol("BackgroundFetchRegistration.title");
  const totalDownloadSize = Symbol("BackgroundFetchRegistration.totalDownloadSize");
  const uploadTotal = Symbol("BackgroundFetchRegistration.uploadTotal");
  const uploaded = Symbol("BackgroundFetchRegistration.uploaded");
  dart.setMethodSignature(html$.BackgroundFetchRegistration, () => ({
    __proto__: dart.getMethods(html$.BackgroundFetchRegistration.__proto__),
    [$abort]: dart.fnType(async.Future$(core.bool), [])
  }));
  dart.setFieldSignature(html$.BackgroundFetchRegistration, () => ({
    __proto__: dart.getFields(html$.BackgroundFetchRegistration.__proto__),
    [$downloadTotal]: dart.finalFieldType(core.int),
    [$downloaded]: dart.finalFieldType(core.int),
    [$id]: dart.finalFieldType(core.String),
    [$title]: dart.finalFieldType(core.String),
    [$totalDownloadSize]: dart.finalFieldType(core.int),
    [$uploadTotal]: dart.finalFieldType(core.int),
    [$uploaded]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("BackgroundFetchRegistration", html$.BackgroundFetchRegistration);
  html$.BackgroundFetchSettledFetch = class BackgroundFetchSettledFetch$ extends html$.BackgroundFetchFetch {
    static new(request, response) {
      return html$.BackgroundFetchSettledFetch._create_1(request, response);
    }
    static _create_1(request, response) {
      return new BackgroundFetchSettledFetch(request, response);
    }
    get [$response]() {
      return this.response;
    }
  };
  dart.addTypeTests(html$.BackgroundFetchSettledFetch);
  const response = Symbol("BackgroundFetchSettledFetch.response");
  dart.setFieldSignature(html$.BackgroundFetchSettledFetch, () => ({
    __proto__: dart.getFields(html$.BackgroundFetchSettledFetch.__proto__),
    [$response]: dart.finalFieldType(html$._Response)
  }));
  dart.registerExtension("BackgroundFetchSettledFetch", html$.BackgroundFetchSettledFetch);
  html$.BackgroundFetchedEvent = class BackgroundFetchedEvent$ extends html$.BackgroundFetchEvent {
    static new(type, init) {
      let init_1 = html_common.convertDartToNative_Dictionary(init);
      return html$.BackgroundFetchedEvent._create_1(type, init_1);
    }
    static _create_1(type, init) {
      return new BackgroundFetchedEvent(type, init);
    }
    get [$fetches]() {
      return this.fetches;
    }
    [$updateUI](title) {
      return html$.promiseToFuture(dart.dynamic, this.updateUI(title));
    }
  };
  dart.addTypeTests(html$.BackgroundFetchedEvent);
  const fetches$ = Symbol("BackgroundFetchedEvent.fetches");
  dart.setMethodSignature(html$.BackgroundFetchedEvent, () => ({
    __proto__: dart.getMethods(html$.BackgroundFetchedEvent.__proto__),
    [$updateUI]: dart.fnType(async.Future, [core.String])
  }));
  dart.setFieldSignature(html$.BackgroundFetchedEvent, () => ({
    __proto__: dart.getFields(html$.BackgroundFetchedEvent.__proto__),
    [$fetches]: dart.finalFieldType(ListOfBackgroundFetchSettledFetch())
  }));
  dart.registerExtension("BackgroundFetchedEvent", html$.BackgroundFetchedEvent);
  html$.BarProp = class BarProp extends _interceptors.Interceptor {
    get [$visible]() {
      return this.visible;
    }
  };
  dart.addTypeTests(html$.BarProp);
  const visible = Symbol("BarProp.visible");
  dart.setFieldSignature(html$.BarProp, () => ({
    __proto__: dart.getFields(html$.BarProp.__proto__),
    [$visible]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("BarProp", html$.BarProp);
  html$.BarcodeDetector = class BarcodeDetector$ extends _interceptors.Interceptor {
    static new() {
      return html$.BarcodeDetector._create_1();
    }
    static _create_1() {
      return new BarcodeDetector();
    }
    [$detect](image) {
      return html$.promiseToFuture(ListOfDetectedBarcode(), this.detect(image));
    }
  };
  dart.addTypeTests(html$.BarcodeDetector);
  dart.setMethodSignature(html$.BarcodeDetector, () => ({
    __proto__: dart.getMethods(html$.BarcodeDetector.__proto__),
    [$detect]: dart.fnType(async.Future$(core.List$(html$.DetectedBarcode)), [dart.dynamic])
  }));
  dart.registerExtension("BarcodeDetector", html$.BarcodeDetector);
  html$.BaseElement = class BaseElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("base");
    }
    get [$href]() {
      return this.href;
    }
    set [$href](value) {
      this.href = value;
    }
    get [$target]() {
      return this.target;
    }
    set [$target](value) {
      this.target = value;
    }
  };
  (html$.BaseElement.created = function() {
    this[href$0] = null;
    this[target$1] = null;
    html$.BaseElement.__proto__.created.call(this);
  }).prototype = html$.BaseElement.prototype;
  dart.addTypeTests(html$.BaseElement);
  const href$0 = Symbol("BaseElement.href");
  const target$1 = Symbol("BaseElement.target");
  dart.setFieldSignature(html$.BaseElement, () => ({
    __proto__: dart.getFields(html$.BaseElement.__proto__),
    [$href]: dart.fieldType(core.String),
    [$target]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLBaseElement", html$.BaseElement);
  html$.BatteryManager = class BatteryManager extends html$.EventTarget {
    get [$charging]() {
      return this.charging;
    }
    get [$chargingTime]() {
      return this.chargingTime;
    }
    get [$dischargingTime]() {
      return this.dischargingTime;
    }
    get [$level]() {
      return this.level;
    }
  };
  dart.addTypeTests(html$.BatteryManager);
  const charging = Symbol("BatteryManager.charging");
  const chargingTime = Symbol("BatteryManager.chargingTime");
  const dischargingTime = Symbol("BatteryManager.dischargingTime");
  const level$2 = Symbol("BatteryManager.level");
  dart.setFieldSignature(html$.BatteryManager, () => ({
    __proto__: dart.getFields(html$.BatteryManager.__proto__),
    [$charging]: dart.finalFieldType(core.bool),
    [$chargingTime]: dart.finalFieldType(core.num),
    [$dischargingTime]: dart.finalFieldType(core.num),
    [$level]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("BatteryManager", html$.BatteryManager);
  html$.BeforeInstallPromptEvent = class BeforeInstallPromptEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.BeforeInstallPromptEvent._create_1(type, eventInitDict_1);
      }
      return html$.BeforeInstallPromptEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new BeforeInstallPromptEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new BeforeInstallPromptEvent(type);
    }
    get [$platforms]() {
      return this.platforms;
    }
    get [$userChoice]() {
      return html$.promiseToFutureAsMap(this.userChoice);
    }
    [$prompt]() {
      return html$.promiseToFuture(dart.dynamic, this.prompt());
    }
  };
  dart.addTypeTests(html$.BeforeInstallPromptEvent);
  const platforms = Symbol("BeforeInstallPromptEvent.platforms");
  dart.setMethodSignature(html$.BeforeInstallPromptEvent, () => ({
    __proto__: dart.getMethods(html$.BeforeInstallPromptEvent.__proto__),
    [$prompt]: dart.fnType(async.Future, [])
  }));
  dart.setGetterSignature(html$.BeforeInstallPromptEvent, () => ({
    __proto__: dart.getGetters(html$.BeforeInstallPromptEvent.__proto__),
    [$userChoice]: async.Future$(core.Map$(core.String, dart.dynamic))
  }));
  dart.setFieldSignature(html$.BeforeInstallPromptEvent, () => ({
    __proto__: dart.getFields(html$.BeforeInstallPromptEvent.__proto__),
    [$platforms]: dart.finalFieldType(ListOfString())
  }));
  dart.registerExtension("BeforeInstallPromptEvent", html$.BeforeInstallPromptEvent);
  html$.BeforeUnloadEvent = class BeforeUnloadEvent extends html$.Event {
    get [$returnValue]() {
      return this.returnValue;
    }
    set [$returnValue](value) {
      this.returnValue = value;
    }
  };
  dart.addTypeTests(html$.BeforeUnloadEvent);
  dart.setGetterSignature(html$.BeforeUnloadEvent, () => ({
    __proto__: dart.getGetters(html$.BeforeUnloadEvent.__proto__),
    [$returnValue]: core.String
  }));
  dart.setSetterSignature(html$.BeforeUnloadEvent, () => ({
    __proto__: dart.getSetters(html$.BeforeUnloadEvent.__proto__),
    [$returnValue]: core.String
  }));
  dart.registerExtension("BeforeUnloadEvent", html$.BeforeUnloadEvent);
  html$.Blob = class Blob extends _interceptors.Interceptor {
    get [$size]() {
      return this.size;
    }
    get [$type]() {
      return this.type;
    }
    [$slice](...args) {
      return this.slice.apply(this, args);
    }
    static new(blobParts, type, endings) {
      if (type === void 0) type = null;
      if (endings === void 0) endings = null;
      if (type == null && endings == null) {
        return html$.Blob._check(html$.Blob._create_1(blobParts));
      }
      let bag = html$.Blob._create_bag();
      if (type != null) html$.Blob._bag_set(bag, "type", type);
      if (endings != null) html$.Blob._bag_set(bag, "endings", endings);
      return html$.Blob._check(html$.Blob._create_2(blobParts, bag));
    }
    static _create_1(parts) {
      return new self.Blob(parts);
    }
    static _create_2(parts, bag) {
      return new self.Blob(parts, bag);
    }
    static _create_bag() {
      return {};
    }
    static _bag_set(bag, key, value) {
      bag[key] = value;
    }
  };
  dart.addTypeTests(html$.Blob);
  const size = Symbol("Blob.size");
  const type$4 = Symbol("Blob.type");
  dart.setMethodSignature(html$.Blob, () => ({
    __proto__: dart.getMethods(html$.Blob.__proto__),
    [$slice]: dart.fnType(html$.Blob, [], [core.int, core.int, core.String])
  }));
  dart.setFieldSignature(html$.Blob, () => ({
    __proto__: dart.getFields(html$.Blob.__proto__),
    [$size]: dart.finalFieldType(core.int),
    [$type]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("Blob", html$.Blob);
  html$.BlobEvent = class BlobEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.BlobEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new BlobEvent(type, eventInitDict);
    }
    get [$data]() {
      return this.data;
    }
    get [$timecode]() {
      return this.timecode;
    }
  };
  dart.addTypeTests(html$.BlobEvent);
  const data = Symbol("BlobEvent.data");
  const timecode = Symbol("BlobEvent.timecode");
  dart.setFieldSignature(html$.BlobEvent, () => ({
    __proto__: dart.getFields(html$.BlobEvent.__proto__),
    [$data]: dart.finalFieldType(html$.Blob),
    [$timecode]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("BlobEvent", html$.BlobEvent);
  html$.BluetoothRemoteGattDescriptor = class BluetoothRemoteGattDescriptor extends _interceptors.Interceptor {
    get [$characteristic]() {
      return this.characteristic;
    }
    get [$uuid]() {
      return this.uuid;
    }
    get [$value]() {
      return this.value;
    }
    [$readValue]() {
      return html$.promiseToFuture(dart.dynamic, this.readValue());
    }
    [$writeValue](value) {
      return html$.promiseToFuture(dart.dynamic, this.writeValue(value));
    }
  };
  dart.addTypeTests(html$.BluetoothRemoteGattDescriptor);
  const characteristic = Symbol("BluetoothRemoteGattDescriptor.characteristic");
  const uuid = Symbol("BluetoothRemoteGattDescriptor.uuid");
  const value$ = Symbol("BluetoothRemoteGattDescriptor.value");
  dart.setMethodSignature(html$.BluetoothRemoteGattDescriptor, () => ({
    __proto__: dart.getMethods(html$.BluetoothRemoteGattDescriptor.__proto__),
    [$readValue]: dart.fnType(async.Future, []),
    [$writeValue]: dart.fnType(async.Future, [dart.dynamic])
  }));
  dart.setFieldSignature(html$.BluetoothRemoteGattDescriptor, () => ({
    __proto__: dart.getFields(html$.BluetoothRemoteGattDescriptor.__proto__),
    [$characteristic]: dart.finalFieldType(html$._BluetoothRemoteGATTCharacteristic),
    [$uuid]: dart.finalFieldType(core.String),
    [$value]: dart.finalFieldType(typed_data.ByteData)
  }));
  dart.registerExtension("BluetoothRemoteGATTDescriptor", html$.BluetoothRemoteGattDescriptor);
  html$.Body = class Body extends _interceptors.Interceptor {
    get [$bodyUsed]() {
      return this.bodyUsed;
    }
    [$arrayBuffer]() {
      return html$.promiseToFuture(dart.dynamic, this.arrayBuffer());
    }
    [$blob]() {
      return html$.promiseToFuture(html$.Blob, this.blob());
    }
    [$formData]() {
      return html$.promiseToFuture(html$.FormData, this.formData());
    }
    [$json]() {
      return html$.promiseToFuture(dart.dynamic, this.json());
    }
    [$text]() {
      return html$.promiseToFuture(core.String, this.text());
    }
  };
  dart.addTypeTests(html$.Body);
  const bodyUsed = Symbol("Body.bodyUsed");
  dart.setMethodSignature(html$.Body, () => ({
    __proto__: dart.getMethods(html$.Body.__proto__),
    [$arrayBuffer]: dart.fnType(async.Future, []),
    [$blob]: dart.fnType(async.Future$(html$.Blob), []),
    [$formData]: dart.fnType(async.Future$(html$.FormData), []),
    [$json]: dart.fnType(async.Future, []),
    [$text]: dart.fnType(async.Future$(core.String), [])
  }));
  dart.setFieldSignature(html$.Body, () => ({
    __proto__: dart.getFields(html$.Body.__proto__),
    [$bodyUsed]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("Body", html$.Body);
  html$.BodyElement = class BodyElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("body");
    }
    get [$onBlur]() {
      return html$.BodyElement.blurEvent.forElement(this);
    }
    get [$onError]() {
      return html$.BodyElement.errorEvent.forElement(this);
    }
    get [$onFocus]() {
      return html$.BodyElement.focusEvent.forElement(this);
    }
    get [$onHashChange]() {
      return html$.BodyElement.hashChangeEvent.forElement(this);
    }
    get [$onLoad]() {
      return html$.BodyElement.loadEvent.forElement(this);
    }
    get [$onMessage]() {
      return html$.BodyElement.messageEvent.forElement(this);
    }
    get [$onOffline]() {
      return html$.BodyElement.offlineEvent.forElement(this);
    }
    get [$onOnline]() {
      return html$.BodyElement.onlineEvent.forElement(this);
    }
    get [$onPopState]() {
      return html$.BodyElement.popStateEvent.forElement(this);
    }
    get [$onResize]() {
      return html$.BodyElement.resizeEvent.forElement(this);
    }
    get [$onScroll]() {
      return html$.BodyElement.scrollEvent.forElement(this);
    }
    get [$onStorage]() {
      return html$.BodyElement.storageEvent.forElement(this);
    }
    get [$onUnload]() {
      return html$.BodyElement.unloadEvent.forElement(this);
    }
  };
  (html$.BodyElement.created = function() {
    html$.BodyElement.__proto__.created.call(this);
  }).prototype = html$.BodyElement.prototype;
  dart.addTypeTests(html$.BodyElement);
  html$.BodyElement[dart.implements] = () => [html$.WindowEventHandlers];
  dart.setGetterSignature(html$.BodyElement, () => ({
    __proto__: dart.getGetters(html$.BodyElement.__proto__),
    [$onHashChange]: html$.ElementStream$(html$.Event),
    [$onMessage]: html$.ElementStream$(html$.MessageEvent),
    [$onOffline]: html$.ElementStream$(html$.Event),
    [$onOnline]: html$.ElementStream$(html$.Event),
    [$onPopState]: html$.ElementStream$(html$.PopStateEvent),
    [$onStorage]: html$.ElementStream$(html$.StorageEvent),
    [$onUnload]: html$.ElementStream$(html$.Event)
  }));
  dart.defineLazy(html$.BodyElement, {
    /*html$.BodyElement.blurEvent*/get blurEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("blur"));
    },
    /*html$.BodyElement.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    },
    /*html$.BodyElement.focusEvent*/get focusEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("focus"));
    },
    /*html$.BodyElement.hashChangeEvent*/get hashChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("hashchange"));
    },
    /*html$.BodyElement.loadEvent*/get loadEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("load"));
    },
    /*html$.BodyElement.messageEvent*/get messageEvent() {
      return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
    },
    /*html$.BodyElement.offlineEvent*/get offlineEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("offline"));
    },
    /*html$.BodyElement.onlineEvent*/get onlineEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("online"));
    },
    /*html$.BodyElement.popStateEvent*/get popStateEvent() {
      return dart.const(new (EventStreamProviderOfPopStateEvent()).new("popstate"));
    },
    /*html$.BodyElement.resizeEvent*/get resizeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("resize"));
    },
    /*html$.BodyElement.scrollEvent*/get scrollEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("scroll"));
    },
    /*html$.BodyElement.storageEvent*/get storageEvent() {
      return dart.const(new (EventStreamProviderOfStorageEvent()).new("storage"));
    },
    /*html$.BodyElement.unloadEvent*/get unloadEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("unload"));
    }
  });
  dart.registerExtension("HTMLBodyElement", html$.BodyElement);
  html$.BroadcastChannel = class BroadcastChannel$ extends html$.EventTarget {
    static new(name) {
      return html$.BroadcastChannel._create_1(name);
    }
    static _create_1(name) {
      return new BroadcastChannel(name);
    }
    get [$name]() {
      return this.name;
    }
    [$close](...args) {
      return this.close.apply(this, args);
    }
    [$postMessage](...args) {
      return this.postMessage.apply(this, args);
    }
    get [$onMessage]() {
      return html$.BroadcastChannel.messageEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.BroadcastChannel);
  const name$6 = Symbol("BroadcastChannel.name");
  dart.setMethodSignature(html$.BroadcastChannel, () => ({
    __proto__: dart.getMethods(html$.BroadcastChannel.__proto__),
    [$close]: dart.fnType(dart.void, []),
    [$postMessage]: dart.fnType(dart.void, [core.Object])
  }));
  dart.setGetterSignature(html$.BroadcastChannel, () => ({
    __proto__: dart.getGetters(html$.BroadcastChannel.__proto__),
    [$onMessage]: async.Stream$(html$.MessageEvent)
  }));
  dart.setFieldSignature(html$.BroadcastChannel, () => ({
    __proto__: dart.getFields(html$.BroadcastChannel.__proto__),
    [$name]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.BroadcastChannel, {
    /*html$.BroadcastChannel.messageEvent*/get messageEvent() {
      return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
    }
  });
  dart.registerExtension("BroadcastChannel", html$.BroadcastChannel);
  html$.BudgetState = class BudgetState extends _interceptors.Interceptor {
    get [$budgetAt]() {
      return this.budgetAt;
    }
    get [$time]() {
      return this.time;
    }
  };
  dart.addTypeTests(html$.BudgetState);
  const budgetAt = Symbol("BudgetState.budgetAt");
  const time = Symbol("BudgetState.time");
  dart.setFieldSignature(html$.BudgetState, () => ({
    __proto__: dart.getFields(html$.BudgetState.__proto__),
    [$budgetAt]: dart.finalFieldType(core.num),
    [$time]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("BudgetState", html$.BudgetState);
  html$.ButtonElement = class ButtonElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("button");
    }
    get [$autofocus]() {
      return this.autofocus;
    }
    set [$autofocus](value) {
      this.autofocus = value;
    }
    get [$disabled]() {
      return this.disabled;
    }
    set [$disabled](value) {
      this.disabled = value;
    }
    get [$form]() {
      return this.form;
    }
    get [$formAction]() {
      return this.formAction;
    }
    set [$formAction](value) {
      this.formAction = value;
    }
    get [$formEnctype]() {
      return this.formEnctype;
    }
    set [$formEnctype](value) {
      this.formEnctype = value;
    }
    get [$formMethod]() {
      return this.formMethod;
    }
    set [$formMethod](value) {
      this.formMethod = value;
    }
    get [$formNoValidate]() {
      return this.formNoValidate;
    }
    set [$formNoValidate](value) {
      this.formNoValidate = value;
    }
    get [$formTarget]() {
      return this.formTarget;
    }
    set [$formTarget](value) {
      this.formTarget = value;
    }
    get [$labels]() {
      return this.labels;
    }
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
    get [$type]() {
      return this.type;
    }
    set [$type](value) {
      this.type = value;
    }
    get [$validationMessage]() {
      return this.validationMessage;
    }
    get [$validity]() {
      return this.validity;
    }
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
    get [$willValidate]() {
      return this.willValidate;
    }
    [$checkValidity](...args) {
      return this.checkValidity.apply(this, args);
    }
    [$reportValidity](...args) {
      return this.reportValidity.apply(this, args);
    }
    [$setCustomValidity](...args) {
      return this.setCustomValidity.apply(this, args);
    }
  };
  (html$.ButtonElement.created = function() {
    this[autofocus] = null;
    this[disabled$] = null;
    this[form] = null;
    this[formAction] = null;
    this[formEnctype] = null;
    this[formMethod] = null;
    this[formNoValidate] = null;
    this[formTarget] = null;
    this[labels] = null;
    this[name$7] = null;
    this[type$5] = null;
    this[validationMessage] = null;
    this[validity] = null;
    this[value$0] = null;
    this[willValidate] = null;
    html$.ButtonElement.__proto__.created.call(this);
  }).prototype = html$.ButtonElement.prototype;
  dart.addTypeTests(html$.ButtonElement);
  const autofocus = Symbol("ButtonElement.autofocus");
  const disabled$ = Symbol("ButtonElement.disabled");
  const form = Symbol("ButtonElement.form");
  const formAction = Symbol("ButtonElement.formAction");
  const formEnctype = Symbol("ButtonElement.formEnctype");
  const formMethod = Symbol("ButtonElement.formMethod");
  const formNoValidate = Symbol("ButtonElement.formNoValidate");
  const formTarget = Symbol("ButtonElement.formTarget");
  const labels = Symbol("ButtonElement.labels");
  const name$7 = Symbol("ButtonElement.name");
  const type$5 = Symbol("ButtonElement.type");
  const validationMessage = Symbol("ButtonElement.validationMessage");
  const validity = Symbol("ButtonElement.validity");
  const value$0 = Symbol("ButtonElement.value");
  const willValidate = Symbol("ButtonElement.willValidate");
  dart.setMethodSignature(html$.ButtonElement, () => ({
    __proto__: dart.getMethods(html$.ButtonElement.__proto__),
    [$checkValidity]: dart.fnType(core.bool, []),
    [$reportValidity]: dart.fnType(core.bool, []),
    [$setCustomValidity]: dart.fnType(dart.void, [core.String])
  }));
  dart.setFieldSignature(html$.ButtonElement, () => ({
    __proto__: dart.getFields(html$.ButtonElement.__proto__),
    [$autofocus]: dart.fieldType(core.bool),
    [$disabled]: dart.fieldType(core.bool),
    [$form]: dart.finalFieldType(html$.FormElement),
    [$formAction]: dart.fieldType(core.String),
    [$formEnctype]: dart.fieldType(core.String),
    [$formMethod]: dart.fieldType(core.String),
    [$formNoValidate]: dart.fieldType(core.bool),
    [$formTarget]: dart.fieldType(core.String),
    [$labels]: dart.finalFieldType(ListOfNode()),
    [$name]: dart.fieldType(core.String),
    [$type]: dart.fieldType(core.String),
    [$validationMessage]: dart.finalFieldType(core.String),
    [$validity]: dart.finalFieldType(html$.ValidityState),
    [$value]: dart.fieldType(core.String),
    [$willValidate]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("HTMLButtonElement", html$.ButtonElement);
  html$.CharacterData = class CharacterData extends html$.Node {
    get [$data]() {
      return this.data;
    }
    set [$data](value) {
      this.data = value;
    }
    get [$length]() {
      return this.length;
    }
    [$appendData](...args) {
      return this.appendData.apply(this, args);
    }
    [$deleteData](...args) {
      return this.deleteData.apply(this, args);
    }
    [$insertData](...args) {
      return this.insertData.apply(this, args);
    }
    [$replaceData](...args) {
      return this.replaceData.apply(this, args);
    }
    [$substringData](...args) {
      return this.substringData.apply(this, args);
    }
    [$after](...args) {
      return this.after.apply(this, args);
    }
    [$before](...args) {
      return this.before.apply(this, args);
    }
    get [$nextElementSibling]() {
      return this.nextElementSibling;
    }
    get [$previousElementSibling]() {
      return this.previousElementSibling;
    }
  };
  dart.addTypeTests(html$.CharacterData);
  const data$0 = Symbol("CharacterData.data");
  const length$0 = Symbol("CharacterData.length");
  const nextElementSibling$ = Symbol("CharacterData.nextElementSibling");
  const previousElementSibling$ = Symbol("CharacterData.previousElementSibling");
  html$.CharacterData[dart.implements] = () => [html$.NonDocumentTypeChildNode, html$.ChildNode];
  dart.setMethodSignature(html$.CharacterData, () => ({
    __proto__: dart.getMethods(html$.CharacterData.__proto__),
    [$appendData]: dart.fnType(dart.void, [core.String]),
    [$deleteData]: dart.fnType(dart.void, [core.int, core.int]),
    [$insertData]: dart.fnType(dart.void, [core.int, core.String]),
    [$replaceData]: dart.fnType(dart.void, [core.int, core.int, core.String]),
    [$substringData]: dart.fnType(core.String, [core.int, core.int]),
    [$after]: dart.fnType(dart.void, [core.Object]),
    [$before]: dart.fnType(dart.void, [core.Object])
  }));
  dart.setFieldSignature(html$.CharacterData, () => ({
    __proto__: dart.getFields(html$.CharacterData.__proto__),
    [$data]: dart.fieldType(core.String),
    [$length]: dart.finalFieldType(core.int),
    [$nextElementSibling]: dart.finalFieldType(html$.Element),
    [$previousElementSibling]: dart.finalFieldType(html$.Element)
  }));
  dart.registerExtension("CharacterData", html$.CharacterData);
  html$.Text = class Text extends html$.CharacterData {
    static new(data) {
      return html$.document.createTextNode(data);
    }
    get [$assignedSlot]() {
      return this.assignedSlot;
    }
    get [$wholeText]() {
      return this.wholeText;
    }
    [$getDestinationInsertionPoints](...args) {
      return this.getDestinationInsertionPoints.apply(this, args);
    }
    [$splitText](...args) {
      return this.splitText.apply(this, args);
    }
  };
  dart.addTypeTests(html$.Text);
  const assignedSlot$ = Symbol("Text.assignedSlot");
  const wholeText = Symbol("Text.wholeText");
  dart.setMethodSignature(html$.Text, () => ({
    __proto__: dart.getMethods(html$.Text.__proto__),
    [$getDestinationInsertionPoints]: dart.fnType(core.List$(html$.Node), []),
    [$splitText]: dart.fnType(html$.Text, [core.int])
  }));
  dart.setFieldSignature(html$.Text, () => ({
    __proto__: dart.getFields(html$.Text.__proto__),
    [$assignedSlot]: dart.finalFieldType(html$.SlotElement),
    [$wholeText]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("Text", html$.Text);
  html$.CDataSection = class CDataSection extends html$.Text {};
  dart.addTypeTests(html$.CDataSection);
  dart.registerExtension("CDATASection", html$.CDataSection);
  html$.CacheStorage = class CacheStorage extends _interceptors.Interceptor {
    [$delete](cacheName) {
      return html$.promiseToFuture(dart.dynamic, this.delete(cacheName));
    }
    [$has](cacheName) {
      return html$.promiseToFuture(dart.dynamic, this.has(cacheName));
    }
    [$keys]() {
      return html$.promiseToFuture(dart.dynamic, this.keys());
    }
    [$match](request, options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(dart.dynamic, this.match(request, options_dict));
    }
    [$open](cacheName) {
      return html$.promiseToFuture(dart.dynamic, this.open(cacheName));
    }
  };
  dart.addTypeTests(html$.CacheStorage);
  dart.setMethodSignature(html$.CacheStorage, () => ({
    __proto__: dart.getMethods(html$.CacheStorage.__proto__),
    [$delete]: dart.fnType(async.Future, [core.String]),
    [$has]: dart.fnType(async.Future, [core.String]),
    [$keys]: dart.fnType(async.Future, []),
    [$match]: dart.fnType(async.Future, [dart.dynamic], [core.Map]),
    [$open]: dart.fnType(async.Future, [core.String])
  }));
  dart.registerExtension("CacheStorage", html$.CacheStorage);
  html$.CanMakePaymentEvent = class CanMakePaymentEvent$ extends html$.ExtendableEvent {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.CanMakePaymentEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new CanMakePaymentEvent(type, eventInitDict);
    }
    get [$methodData]() {
      return this.methodData;
    }
    get [$modifiers]() {
      return this.modifiers;
    }
    get [$paymentRequestOrigin]() {
      return this.paymentRequestOrigin;
    }
    get [$topLevelOrigin]() {
      return this.topLevelOrigin;
    }
    [$respondWith](...args) {
      return this.respondWith.apply(this, args);
    }
  };
  dart.addTypeTests(html$.CanMakePaymentEvent);
  const methodData = Symbol("CanMakePaymentEvent.methodData");
  const modifiers = Symbol("CanMakePaymentEvent.modifiers");
  const paymentRequestOrigin = Symbol("CanMakePaymentEvent.paymentRequestOrigin");
  const topLevelOrigin = Symbol("CanMakePaymentEvent.topLevelOrigin");
  dart.setMethodSignature(html$.CanMakePaymentEvent, () => ({
    __proto__: dart.getMethods(html$.CanMakePaymentEvent.__proto__),
    [$respondWith]: dart.fnType(dart.void, [async.Future])
  }));
  dart.setFieldSignature(html$.CanMakePaymentEvent, () => ({
    __proto__: dart.getFields(html$.CanMakePaymentEvent.__proto__),
    [$methodData]: dart.finalFieldType(core.List),
    [$modifiers]: dart.finalFieldType(core.List),
    [$paymentRequestOrigin]: dart.finalFieldType(core.String),
    [$topLevelOrigin]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("CanMakePaymentEvent", html$.CanMakePaymentEvent);
  const _getCapabilities_1 = Symbol('_getCapabilities_1');
  const _getConstraints_1 = Symbol('_getConstraints_1');
  const _getSettings_1 = Symbol('_getSettings_1');
  html$.MediaStreamTrack = class MediaStreamTrack extends html$.EventTarget {
    get [$contentHint]() {
      return this.contentHint;
    }
    set [$contentHint](value) {
      this.contentHint = value;
    }
    get [$enabled]() {
      return this.enabled;
    }
    set [$enabled](value) {
      this.enabled = value;
    }
    get [$id]() {
      return this.id;
    }
    get [$kind]() {
      return this.kind;
    }
    get [$label]() {
      return this.label;
    }
    get [$muted]() {
      return this.muted;
    }
    get [$readyState]() {
      return this.readyState;
    }
    [$applyConstraints](constraints) {
      if (constraints === void 0) constraints = null;
      let constraints_dict = null;
      if (constraints != null) {
        constraints_dict = html_common.convertDartToNative_Dictionary(constraints);
      }
      return html$.promiseToFuture(dart.dynamic, this.applyConstraints(constraints_dict));
    }
    [$clone](...args) {
      return this.clone.apply(this, args);
    }
    [$getCapabilities]() {
      return html_common.convertNativeToDart_Dictionary(this[_getCapabilities_1]());
    }
    [_getCapabilities_1](...args) {
      return this.getCapabilities.apply(this, args);
    }
    [$getConstraints]() {
      return html_common.convertNativeToDart_Dictionary(this[_getConstraints_1]());
    }
    [_getConstraints_1](...args) {
      return this.getConstraints.apply(this, args);
    }
    [$getSettings]() {
      return html_common.convertNativeToDart_Dictionary(this[_getSettings_1]());
    }
    [_getSettings_1](...args) {
      return this.getSettings.apply(this, args);
    }
    [$stop](...args) {
      return this.stop.apply(this, args);
    }
    get [$onEnded]() {
      return html$.MediaStreamTrack.endedEvent.forTarget(this);
    }
    get [$onMute]() {
      return html$.MediaStreamTrack.muteEvent.forTarget(this);
    }
    get [$onUnmute]() {
      return html$.MediaStreamTrack.unmuteEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.MediaStreamTrack);
  const contentHint = Symbol("MediaStreamTrack.contentHint");
  const enabled = Symbol("MediaStreamTrack.enabled");
  const id$3 = Symbol("MediaStreamTrack.id");
  const kind = Symbol("MediaStreamTrack.kind");
  const label$ = Symbol("MediaStreamTrack.label");
  const muted$ = Symbol("MediaStreamTrack.muted");
  const readyState$0 = Symbol("MediaStreamTrack.readyState");
  dart.setMethodSignature(html$.MediaStreamTrack, () => ({
    __proto__: dart.getMethods(html$.MediaStreamTrack.__proto__),
    [$applyConstraints]: dart.fnType(async.Future, [], [core.Map]),
    [$clone]: dart.fnType(html$.MediaStreamTrack, []),
    [$getCapabilities]: dart.fnType(core.Map, []),
    [_getCapabilities_1]: dart.fnType(dart.dynamic, []),
    [$getConstraints]: dart.fnType(core.Map, []),
    [_getConstraints_1]: dart.fnType(dart.dynamic, []),
    [$getSettings]: dart.fnType(core.Map, []),
    [_getSettings_1]: dart.fnType(dart.dynamic, []),
    [$stop]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(html$.MediaStreamTrack, () => ({
    __proto__: dart.getGetters(html$.MediaStreamTrack.__proto__),
    [$onEnded]: async.Stream$(html$.Event),
    [$onMute]: async.Stream$(html$.Event),
    [$onUnmute]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.MediaStreamTrack, () => ({
    __proto__: dart.getFields(html$.MediaStreamTrack.__proto__),
    [$contentHint]: dart.fieldType(core.String),
    [$enabled]: dart.fieldType(core.bool),
    [$id]: dart.finalFieldType(core.String),
    [$kind]: dart.finalFieldType(core.String),
    [$label]: dart.finalFieldType(core.String),
    [$muted]: dart.finalFieldType(core.bool),
    [$readyState]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.MediaStreamTrack, {
    /*html$.MediaStreamTrack.endedEvent*/get endedEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("ended"));
    },
    /*html$.MediaStreamTrack.muteEvent*/get muteEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("mute"));
    },
    /*html$.MediaStreamTrack.unmuteEvent*/get unmuteEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("unmute"));
    }
  });
  dart.registerExtension("MediaStreamTrack", html$.MediaStreamTrack);
  html$.CanvasCaptureMediaStreamTrack = class CanvasCaptureMediaStreamTrack extends html$.MediaStreamTrack {
    get [$canvas]() {
      return this.canvas;
    }
    [$requestFrame](...args) {
      return this.requestFrame.apply(this, args);
    }
  };
  dart.addTypeTests(html$.CanvasCaptureMediaStreamTrack);
  const canvas = Symbol("CanvasCaptureMediaStreamTrack.canvas");
  dart.setMethodSignature(html$.CanvasCaptureMediaStreamTrack, () => ({
    __proto__: dart.getMethods(html$.CanvasCaptureMediaStreamTrack.__proto__),
    [$requestFrame]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(html$.CanvasCaptureMediaStreamTrack, () => ({
    __proto__: dart.getFields(html$.CanvasCaptureMediaStreamTrack.__proto__),
    [$canvas]: dart.finalFieldType(html$.CanvasElement)
  }));
  dart.registerExtension("CanvasCaptureMediaStreamTrack", html$.CanvasCaptureMediaStreamTrack);
  const _getContext_1 = Symbol('_getContext_1');
  const _getContext_2 = Symbol('_getContext_2');
  const _toDataUrl = Symbol('_toDataUrl');
  html$.CanvasElement = class CanvasElement extends html$.HtmlElement {
    static new(opts) {
      let width = opts && 'width' in opts ? opts.width : null;
      let height = opts && 'height' in opts ? opts.height : null;
      let e = html$.document.createElement("canvas");
      if (width != null) e.width = width;
      if (height != null) e.height = height;
      return e;
    }
    get [$height]() {
      return this.height;
    }
    set [$height](value) {
      this.height = value;
    }
    get [$width]() {
      return this.width;
    }
    set [$width](value) {
      this.width = value;
    }
    [$captureStream](...args) {
      return this.captureStream.apply(this, args);
    }
    [$getContext](contextId, attributes) {
      if (attributes === void 0) attributes = null;
      if (attributes != null) {
        let attributes_1 = html_common.convertDartToNative_Dictionary(attributes);
        return this[_getContext_1](contextId, attributes_1);
      }
      return this[_getContext_2](contextId);
    }
    [_getContext_1](...args) {
      return this.getContext.apply(this, args);
    }
    [_getContext_2](...args) {
      return this.getContext.apply(this, args);
    }
    [$toBlob](...args) {
      return this.toBlob.apply(this, args);
    }
    [_toDataUrl](...args) {
      return this.toDataURL.apply(this, args);
    }
    [$transferControlToOffscreen](...args) {
      return this.transferControlToOffscreen.apply(this, args);
    }
    get [$onWebGlContextLost]() {
      return html$.CanvasElement.webGlContextLostEvent.forElement(this);
    }
    get [$onWebGlContextRestored]() {
      return html$.CanvasElement.webGlContextRestoredEvent.forElement(this);
    }
    get [$context2D]() {
      return this.getContext("2d");
    }
    [$getContext3d](opts) {
      let alpha = opts && 'alpha' in opts ? opts.alpha : true;
      let depth = opts && 'depth' in opts ? opts.depth : true;
      let stencil = opts && 'stencil' in opts ? opts.stencil : false;
      let antialias = opts && 'antialias' in opts ? opts.antialias : true;
      let premultipliedAlpha = opts && 'premultipliedAlpha' in opts ? opts.premultipliedAlpha : true;
      let preserveDrawingBuffer = opts && 'preserveDrawingBuffer' in opts ? opts.preserveDrawingBuffer : false;
      let options = new (IdentityMapOfString$dynamic()).from(["alpha", alpha, "depth", depth, "stencil", stencil, "antialias", antialias, "premultipliedAlpha", premultipliedAlpha, "preserveDrawingBuffer", preserveDrawingBuffer]);
      let context = this[$getContext]("webgl", options);
      if (context == null) {
        context = this[$getContext]("experimental-webgl", options);
      }
      return web_gl.RenderingContext._check(context);
    }
    [$toDataUrl](type, quality) {
      if (type === void 0) type = "image/png";
      if (quality === void 0) quality = null;
      return this[_toDataUrl](type, quality);
    }
  };
  (html$.CanvasElement.created = function() {
    this[height] = null;
    this[width] = null;
    html$.CanvasElement.__proto__.created.call(this);
  }).prototype = html$.CanvasElement.prototype;
  dart.addTypeTests(html$.CanvasElement);
  const height = Symbol("CanvasElement.height");
  const width = Symbol("CanvasElement.width");
  html$.CanvasElement[dart.implements] = () => [html$.CanvasImageSource];
  dart.setMethodSignature(html$.CanvasElement, () => ({
    __proto__: dart.getMethods(html$.CanvasElement.__proto__),
    [$captureStream]: dart.fnType(html$.MediaStream, [], [core.num]),
    [$getContext]: dart.fnType(core.Object, [core.String], [core.Map]),
    [_getContext_1]: dart.fnType(core.Object, [dart.dynamic, dart.dynamic]),
    [_getContext_2]: dart.fnType(core.Object, [dart.dynamic]),
    [$toBlob]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.Blob]), core.String], [core.Object]),
    [_toDataUrl]: dart.fnType(core.String, [core.String], [dart.dynamic]),
    [$transferControlToOffscreen]: dart.fnType(html$.OffscreenCanvas, []),
    [$getContext3d]: dart.fnType(web_gl.RenderingContext, [], {alpha: dart.dynamic, depth: dart.dynamic, stencil: dart.dynamic, antialias: dart.dynamic, premultipliedAlpha: dart.dynamic, preserveDrawingBuffer: dart.dynamic}),
    [$toDataUrl]: dart.fnType(core.String, [], [core.String, core.num])
  }));
  dart.setGetterSignature(html$.CanvasElement, () => ({
    __proto__: dart.getGetters(html$.CanvasElement.__proto__),
    [$onWebGlContextLost]: html$.ElementStream$(web_gl.ContextEvent),
    [$onWebGlContextRestored]: html$.ElementStream$(web_gl.ContextEvent),
    [$context2D]: html$.CanvasRenderingContext2D
  }));
  dart.setFieldSignature(html$.CanvasElement, () => ({
    __proto__: dart.getFields(html$.CanvasElement.__proto__),
    [$height]: dart.fieldType(core.int),
    [$width]: dart.fieldType(core.int)
  }));
  dart.defineLazy(html$.CanvasElement, {
    /*html$.CanvasElement.webGlContextLostEvent*/get webGlContextLostEvent() {
      return dart.const(new (EventStreamProviderOfContextEvent()).new("webglcontextlost"));
    },
    /*html$.CanvasElement.webGlContextRestoredEvent*/get webGlContextRestoredEvent() {
      return dart.const(new (EventStreamProviderOfContextEvent()).new("webglcontextrestored"));
    }
  });
  dart.registerExtension("HTMLCanvasElement", html$.CanvasElement);
  html$.CanvasGradient = class CanvasGradient extends _interceptors.Interceptor {
    [$addColorStop](...args) {
      return this.addColorStop.apply(this, args);
    }
  };
  dart.addTypeTests(html$.CanvasGradient);
  dart.setMethodSignature(html$.CanvasGradient, () => ({
    __proto__: dart.getMethods(html$.CanvasGradient.__proto__),
    [$addColorStop]: dart.fnType(dart.void, [core.num, core.String])
  }));
  dart.registerExtension("CanvasGradient", html$.CanvasGradient);
  html$.CanvasPattern = class CanvasPattern extends _interceptors.Interceptor {
    [$setTransform](...args) {
      return this.setTransform.apply(this, args);
    }
  };
  dart.addTypeTests(html$.CanvasPattern);
  dart.setMethodSignature(html$.CanvasPattern, () => ({
    __proto__: dart.getMethods(html$.CanvasPattern.__proto__),
    [$setTransform]: dart.fnType(dart.void, [svg$.Matrix])
  }));
  dart.registerExtension("CanvasPattern", html$.CanvasPattern);
  html$.CanvasRenderingContext = class CanvasRenderingContext extends core.Object {};
  (html$.CanvasRenderingContext.new = function() {
  }).prototype = html$.CanvasRenderingContext.prototype;
  dart.addTypeTests(html$.CanvasRenderingContext);
  const _addHitRegion_1 = Symbol('_addHitRegion_1');
  const _addHitRegion_2 = Symbol('_addHitRegion_2');
  const _createImageData_1 = Symbol('_createImageData_1');
  const _createImageData_2 = Symbol('_createImageData_2');
  const _createImageData_3 = Symbol('_createImageData_3');
  const _createImageData_4 = Symbol('_createImageData_4');
  const _createImageData_5 = Symbol('_createImageData_5');
  const _getContextAttributes_1 = Symbol('_getContextAttributes_1');
  const _getImageData_1 = Symbol('_getImageData_1');
  const _getLineDash = Symbol('_getLineDash');
  const _putImageData_1 = Symbol('_putImageData_1');
  const _putImageData_2 = Symbol('_putImageData_2');
  const _arc = Symbol('_arc');
  html$.CanvasRenderingContext2D = class CanvasRenderingContext2D extends _interceptors.Interceptor {
    get [$canvas]() {
      return this.canvas;
    }
    get [$currentTransform]() {
      return this.currentTransform;
    }
    set [$currentTransform](value) {
      this.currentTransform = value;
    }
    get [$direction]() {
      return this.direction;
    }
    set [$direction](value) {
      this.direction = value;
    }
    get [$fillStyle]() {
      return this.fillStyle;
    }
    set [$fillStyle](value) {
      this.fillStyle = value;
    }
    get [$filter]() {
      return this.filter;
    }
    set [$filter](value) {
      this.filter = value;
    }
    get [$font]() {
      return this.font;
    }
    set [$font](value) {
      this.font = value;
    }
    get [$globalAlpha]() {
      return this.globalAlpha;
    }
    set [$globalAlpha](value) {
      this.globalAlpha = value;
    }
    get [$globalCompositeOperation]() {
      return this.globalCompositeOperation;
    }
    set [$globalCompositeOperation](value) {
      this.globalCompositeOperation = value;
    }
    get [$imageSmoothingEnabled]() {
      return this.imageSmoothingEnabled;
    }
    set [$imageSmoothingEnabled](value) {
      this.imageSmoothingEnabled = value;
    }
    get [$imageSmoothingQuality]() {
      return this.imageSmoothingQuality;
    }
    set [$imageSmoothingQuality](value) {
      this.imageSmoothingQuality = value;
    }
    get [$lineCap]() {
      return this.lineCap;
    }
    set [$lineCap](value) {
      this.lineCap = value;
    }
    get [$lineJoin]() {
      return this.lineJoin;
    }
    set [$lineJoin](value) {
      this.lineJoin = value;
    }
    get [$lineWidth]() {
      return this.lineWidth;
    }
    set [$lineWidth](value) {
      this.lineWidth = value;
    }
    get [$miterLimit]() {
      return this.miterLimit;
    }
    set [$miterLimit](value) {
      this.miterLimit = value;
    }
    get [$shadowBlur]() {
      return this.shadowBlur;
    }
    set [$shadowBlur](value) {
      this.shadowBlur = value;
    }
    get [$shadowColor]() {
      return this.shadowColor;
    }
    set [$shadowColor](value) {
      this.shadowColor = value;
    }
    get [$shadowOffsetX]() {
      return this.shadowOffsetX;
    }
    set [$shadowOffsetX](value) {
      this.shadowOffsetX = value;
    }
    get [$shadowOffsetY]() {
      return this.shadowOffsetY;
    }
    set [$shadowOffsetY](value) {
      this.shadowOffsetY = value;
    }
    get [$strokeStyle]() {
      return this.strokeStyle;
    }
    set [$strokeStyle](value) {
      this.strokeStyle = value;
    }
    get [$textAlign]() {
      return this.textAlign;
    }
    set [$textAlign](value) {
      this.textAlign = value;
    }
    get [$textBaseline]() {
      return this.textBaseline;
    }
    set [$textBaseline](value) {
      this.textBaseline = value;
    }
    [$addHitRegion](options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        this[_addHitRegion_1](options_1);
        return;
      }
      this[_addHitRegion_2]();
      return;
    }
    [_addHitRegion_1](...args) {
      return this.addHitRegion.apply(this, args);
    }
    [_addHitRegion_2](...args) {
      return this.addHitRegion.apply(this, args);
    }
    [$beginPath](...args) {
      return this.beginPath.apply(this, args);
    }
    [$clearHitRegions](...args) {
      return this.clearHitRegions.apply(this, args);
    }
    [$clearRect](...args) {
      return this.clearRect.apply(this, args);
    }
    [$clip](...args) {
      return this.clip.apply(this, args);
    }
    [$createImageData](data_OR_imagedata_OR_sw, sh_OR_sw, imageDataColorSettings_OR_sh, imageDataColorSettings) {
      if (sh_OR_sw === void 0) sh_OR_sw = null;
      if (imageDataColorSettings_OR_sh === void 0) imageDataColorSettings_OR_sh = null;
      if (imageDataColorSettings === void 0) imageDataColorSettings = null;
      if (html$.ImageData.is(data_OR_imagedata_OR_sw) && sh_OR_sw == null && imageDataColorSettings_OR_sh == null && imageDataColorSettings == null) {
        let imagedata_1 = html_common.convertDartToNative_ImageData(data_OR_imagedata_OR_sw);
        return html_common.convertNativeToDart_ImageData(this[_createImageData_1](imagedata_1));
      }
      if (sh_OR_sw != null && core.int.is(data_OR_imagedata_OR_sw) && imageDataColorSettings_OR_sh == null && imageDataColorSettings == null) {
        return html_common.convertNativeToDart_ImageData(this[_createImageData_2](data_OR_imagedata_OR_sw, sh_OR_sw));
      }
      if (core.Map.is(imageDataColorSettings_OR_sh) && sh_OR_sw != null && core.int.is(data_OR_imagedata_OR_sw) && imageDataColorSettings == null) {
        let imageDataColorSettings_1 = html_common.convertDartToNative_Dictionary(imageDataColorSettings_OR_sh);
        return html_common.convertNativeToDart_ImageData(this[_createImageData_3](data_OR_imagedata_OR_sw, sh_OR_sw, imageDataColorSettings_1));
      }
      if (core.int.is(imageDataColorSettings_OR_sh) && sh_OR_sw != null && data_OR_imagedata_OR_sw != null && imageDataColorSettings == null) {
        return html_common.convertNativeToDart_ImageData(this[_createImageData_4](data_OR_imagedata_OR_sw, sh_OR_sw, imageDataColorSettings_OR_sh));
      }
      if (imageDataColorSettings != null && core.int.is(imageDataColorSettings_OR_sh) && sh_OR_sw != null && data_OR_imagedata_OR_sw != null) {
        let imageDataColorSettings_1 = html_common.convertDartToNative_Dictionary(imageDataColorSettings);
        return html_common.convertNativeToDart_ImageData(this[_createImageData_5](data_OR_imagedata_OR_sw, sh_OR_sw, imageDataColorSettings_OR_sh, imageDataColorSettings_1));
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_createImageData_1](...args) {
      return this.createImageData.apply(this, args);
    }
    [_createImageData_2](...args) {
      return this.createImageData.apply(this, args);
    }
    [_createImageData_3](...args) {
      return this.createImageData.apply(this, args);
    }
    [_createImageData_4](...args) {
      return this.createImageData.apply(this, args);
    }
    [_createImageData_5](...args) {
      return this.createImageData.apply(this, args);
    }
    [$createLinearGradient](...args) {
      return this.createLinearGradient.apply(this, args);
    }
    [$createPattern](...args) {
      return this.createPattern.apply(this, args);
    }
    [$createRadialGradient](...args) {
      return this.createRadialGradient.apply(this, args);
    }
    [$drawFocusIfNeeded](...args) {
      return this.drawFocusIfNeeded.apply(this, args);
    }
    [$fill](...args) {
      return this.fill.apply(this, args);
    }
    [$fillRect](...args) {
      return this.fillRect.apply(this, args);
    }
    [$getContextAttributes]() {
      return html_common.convertNativeToDart_Dictionary(this[_getContextAttributes_1]());
    }
    [_getContextAttributes_1](...args) {
      return this.getContextAttributes.apply(this, args);
    }
    [$getImageData](sx, sy, sw, sh) {
      return html_common.convertNativeToDart_ImageData(this[_getImageData_1](sx, sy, sw, sh));
    }
    [_getImageData_1](...args) {
      return this.getImageData.apply(this, args);
    }
    [_getLineDash](...args) {
      return this.getLineDash.apply(this, args);
    }
    [$isContextLost](...args) {
      return this.isContextLost.apply(this, args);
    }
    [$isPointInPath](...args) {
      return this.isPointInPath.apply(this, args);
    }
    [$isPointInStroke](...args) {
      return this.isPointInStroke.apply(this, args);
    }
    [$measureText](...args) {
      return this.measureText.apply(this, args);
    }
    [$putImageData](imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) {
      if (dirtyX === void 0) dirtyX = null;
      if (dirtyY === void 0) dirtyY = null;
      if (dirtyWidth === void 0) dirtyWidth = null;
      if (dirtyHeight === void 0) dirtyHeight = null;
      if (dirtyX == null && dirtyY == null && dirtyWidth == null && dirtyHeight == null) {
        let imagedata_1 = html_common.convertDartToNative_ImageData(imagedata);
        this[_putImageData_1](imagedata_1, dx, dy);
        return;
      }
      if (dirtyHeight != null && dirtyWidth != null && dirtyY != null && dirtyX != null) {
        let imagedata_1 = html_common.convertDartToNative_ImageData(imagedata);
        this[_putImageData_2](imagedata_1, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
        return;
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_putImageData_1](...args) {
      return this.putImageData.apply(this, args);
    }
    [_putImageData_2](...args) {
      return this.putImageData.apply(this, args);
    }
    [$removeHitRegion](...args) {
      return this.removeHitRegion.apply(this, args);
    }
    [$resetTransform](...args) {
      return this.resetTransform.apply(this, args);
    }
    [$restore](...args) {
      return this.restore.apply(this, args);
    }
    [$rotate](...args) {
      return this.rotate.apply(this, args);
    }
    [$save](...args) {
      return this.save.apply(this, args);
    }
    [$scale](...args) {
      return this.scale.apply(this, args);
    }
    [$scrollPathIntoView](...args) {
      return this.scrollPathIntoView.apply(this, args);
    }
    [$setTransform](...args) {
      return this.setTransform.apply(this, args);
    }
    [$stroke](...args) {
      return this.stroke.apply(this, args);
    }
    [$strokeRect](...args) {
      return this.strokeRect.apply(this, args);
    }
    [$strokeText](...args) {
      return this.strokeText.apply(this, args);
    }
    [$transform](...args) {
      return this.transform.apply(this, args);
    }
    [$translate](...args) {
      return this.translate.apply(this, args);
    }
    [_arc](...args) {
      return this.arc.apply(this, args);
    }
    [$arcTo](...args) {
      return this.arcTo.apply(this, args);
    }
    [$bezierCurveTo](...args) {
      return this.bezierCurveTo.apply(this, args);
    }
    [$closePath](...args) {
      return this.closePath.apply(this, args);
    }
    [$ellipse](...args) {
      return this.ellipse.apply(this, args);
    }
    [$lineTo](...args) {
      return this.lineTo.apply(this, args);
    }
    [$moveTo](...args) {
      return this.moveTo.apply(this, args);
    }
    [$quadraticCurveTo](...args) {
      return this.quadraticCurveTo.apply(this, args);
    }
    [$rect](...args) {
      return this.rect.apply(this, args);
    }
    [$createImageDataFromImageData](imagedata) {
      return this.createImageData(imagedata);
    }
    [$setFillColorRgb](r, g, b, a) {
      if (a === void 0) a = 1;
      this.fillStyle = "rgba(" + dart.str(r) + ", " + dart.str(g) + ", " + dart.str(b) + ", " + dart.str(a) + ")";
    }
    [$setFillColorHsl](h, s, l, a) {
      if (a === void 0) a = 1;
      this.fillStyle = "hsla(" + dart.str(h) + ", " + dart.str(s) + "%, " + dart.str(l) + "%, " + dart.str(a) + ")";
    }
    [$setStrokeColorRgb](r, g, b, a) {
      if (a === void 0) a = 1;
      this.strokeStyle = "rgba(" + dart.str(r) + ", " + dart.str(g) + ", " + dart.str(b) + ", " + dart.str(a) + ")";
    }
    [$setStrokeColorHsl](h, s, l, a) {
      if (a === void 0) a = 1;
      this.strokeStyle = "hsla(" + dart.str(h) + ", " + dart.str(s) + "%, " + dart.str(l) + "%, " + dart.str(a) + ")";
    }
    [$arc](x, y, radius, startAngle, endAngle, anticlockwise) {
      if (anticlockwise === void 0) anticlockwise = false;
      this.arc(x, y, radius, startAngle, endAngle, anticlockwise);
    }
    [$createPatternFromImage](image, repetitionType) {
      return this.createPattern(image, repetitionType);
    }
    [$drawImageToRect](source, destRect, opts) {
      let sourceRect = opts && 'sourceRect' in opts ? opts.sourceRect : null;
      if (sourceRect == null) {
        this[$drawImageScaled](source, destRect[$left], destRect[$top], destRect[$width], destRect[$height]);
      } else {
        this[$drawImageScaledFromSource](source, sourceRect[$left], sourceRect[$top], sourceRect[$width], sourceRect[$height], destRect[$left], destRect[$top], destRect[$width], destRect[$height]);
      }
    }
    [$drawImage](...args) {
      return this.drawImage.apply(this, args);
    }
    [$drawImageScaled](...args) {
      return this.drawImage.apply(this, args);
    }
    [$drawImageScaledFromSource](...args) {
      return this.drawImage.apply(this, args);
    }
    get [$lineDashOffset]() {
      return this.lineDashOffset || this.webkitLineDashOffset;
    }
    set [$lineDashOffset](value) {
      typeof this.lineDashOffset != "undefined" ? this.lineDashOffset = value : this.webkitLineDashOffset = value;
    }
    [$getLineDash]() {
      if (!!this.getLineDash) {
        return this.getLineDash();
      } else if (!!this.webkitLineDash) {
        return this.webkitLineDash;
      }
    }
    [$setLineDash](dash) {
      if (!!this.setLineDash) {
        this.setLineDash(dash);
      } else if (!!this.webkitLineDash) {
        this.webkitLineDash = dash;
      }
    }
    [$fillText](text, x, y, maxWidth) {
      if (maxWidth === void 0) maxWidth = null;
      if (maxWidth != null) {
        this.fillText(text, x, y, maxWidth);
      } else {
        this.fillText(text, x, y);
      }
    }
    get [$backingStorePixelRatio]() {
      return 1.0;
    }
  };
  dart.addTypeTests(html$.CanvasRenderingContext2D);
  const canvas$ = Symbol("CanvasRenderingContext2D.canvas");
  const currentTransform = Symbol("CanvasRenderingContext2D.currentTransform");
  const direction$0 = Symbol("CanvasRenderingContext2D.direction");
  const fillStyle = Symbol("CanvasRenderingContext2D.fillStyle");
  const filter = Symbol("CanvasRenderingContext2D.filter");
  const font = Symbol("CanvasRenderingContext2D.font");
  const globalAlpha = Symbol("CanvasRenderingContext2D.globalAlpha");
  const globalCompositeOperation = Symbol("CanvasRenderingContext2D.globalCompositeOperation");
  const imageSmoothingEnabled = Symbol("CanvasRenderingContext2D.imageSmoothingEnabled");
  const imageSmoothingQuality = Symbol("CanvasRenderingContext2D.imageSmoothingQuality");
  const lineCap = Symbol("CanvasRenderingContext2D.lineCap");
  const lineJoin = Symbol("CanvasRenderingContext2D.lineJoin");
  const lineWidth = Symbol("CanvasRenderingContext2D.lineWidth");
  const miterLimit = Symbol("CanvasRenderingContext2D.miterLimit");
  const shadowBlur = Symbol("CanvasRenderingContext2D.shadowBlur");
  const shadowColor = Symbol("CanvasRenderingContext2D.shadowColor");
  const shadowOffsetX = Symbol("CanvasRenderingContext2D.shadowOffsetX");
  const shadowOffsetY = Symbol("CanvasRenderingContext2D.shadowOffsetY");
  const strokeStyle = Symbol("CanvasRenderingContext2D.strokeStyle");
  const textAlign = Symbol("CanvasRenderingContext2D.textAlign");
  const textBaseline = Symbol("CanvasRenderingContext2D.textBaseline");
  html$.CanvasRenderingContext2D[dart.implements] = () => [html$.CanvasRenderingContext];
  dart.setMethodSignature(html$.CanvasRenderingContext2D, () => ({
    __proto__: dart.getMethods(html$.CanvasRenderingContext2D.__proto__),
    [$addHitRegion]: dart.fnType(dart.void, [], [core.Map]),
    [_addHitRegion_1]: dart.fnType(dart.void, [dart.dynamic]),
    [_addHitRegion_2]: dart.fnType(dart.void, []),
    [$beginPath]: dart.fnType(dart.void, []),
    [$clearHitRegions]: dart.fnType(dart.void, []),
    [$clearRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$clip]: dart.fnType(dart.void, [], [dart.dynamic, core.String]),
    [$createImageData]: dart.fnType(html$.ImageData, [dart.dynamic], [core.int, dart.dynamic, core.Map]),
    [_createImageData_1]: dart.fnType(dart.dynamic, [dart.dynamic]),
    [_createImageData_2]: dart.fnType(dart.dynamic, [core.int, dart.dynamic]),
    [_createImageData_3]: dart.fnType(dart.dynamic, [core.int, dart.dynamic, dart.dynamic]),
    [_createImageData_4]: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic, core.int]),
    [_createImageData_5]: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic, core.int, dart.dynamic]),
    [$createLinearGradient]: dart.fnType(html$.CanvasGradient, [core.num, core.num, core.num, core.num]),
    [$createPattern]: dart.fnType(html$.CanvasPattern, [core.Object, core.String]),
    [$createRadialGradient]: dart.fnType(html$.CanvasGradient, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$drawFocusIfNeeded]: dart.fnType(dart.void, [dart.dynamic], [html$.Element]),
    [$fill]: dart.fnType(dart.void, [], [dart.dynamic, core.String]),
    [$fillRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$getContextAttributes]: dart.fnType(core.Map, []),
    [_getContextAttributes_1]: dart.fnType(dart.dynamic, []),
    [$getImageData]: dart.fnType(html$.ImageData, [core.int, core.int, core.int, core.int]),
    [_getImageData_1]: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_getLineDash]: dart.fnType(core.List$(core.num), []),
    [$isContextLost]: dart.fnType(core.bool, []),
    [$isPointInPath]: dart.fnType(core.bool, [dart.dynamic, core.num], [dart.dynamic, core.String]),
    [$isPointInStroke]: dart.fnType(core.bool, [dart.dynamic, core.num], [core.num]),
    [$measureText]: dart.fnType(html$.TextMetrics, [core.String]),
    [$putImageData]: dart.fnType(dart.void, [html$.ImageData, core.int, core.int], [core.int, core.int, core.int, core.int]),
    [_putImageData_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
    [_putImageData_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [$removeHitRegion]: dart.fnType(dart.void, [core.String]),
    [$resetTransform]: dart.fnType(dart.void, []),
    [$restore]: dart.fnType(dart.void, []),
    [$rotate]: dart.fnType(dart.void, [core.num]),
    [$save]: dart.fnType(dart.void, []),
    [$scale]: dart.fnType(dart.void, [core.num, core.num]),
    [$scrollPathIntoView]: dart.fnType(dart.void, [], [html$.Path2D]),
    [$setTransform]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$stroke]: dart.fnType(dart.void, [], [html$.Path2D]),
    [$strokeRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$strokeText]: dart.fnType(dart.void, [core.String, core.num, core.num], [core.num]),
    [$transform]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$translate]: dart.fnType(dart.void, [core.num, core.num]),
    [_arc]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.bool]),
    [$arcTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num]),
    [$bezierCurveTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$closePath]: dart.fnType(dart.void, []),
    [$ellipse]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num, core.num, core.bool]),
    [$lineTo]: dart.fnType(dart.void, [core.num, core.num]),
    [$moveTo]: dart.fnType(dart.void, [core.num, core.num]),
    [$quadraticCurveTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$rect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$createImageDataFromImageData]: dart.fnType(html$.ImageData, [html$.ImageData]),
    [$setFillColorRgb]: dart.fnType(dart.void, [core.int, core.int, core.int], [core.num]),
    [$setFillColorHsl]: dart.fnType(dart.void, [core.int, core.num, core.num], [core.num]),
    [$setStrokeColorRgb]: dart.fnType(dart.void, [core.int, core.int, core.int], [core.num]),
    [$setStrokeColorHsl]: dart.fnType(dart.void, [core.int, core.num, core.num], [core.num]),
    [$arc]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num], [core.bool]),
    [$createPatternFromImage]: dart.fnType(html$.CanvasPattern, [html$.ImageElement, core.String]),
    [$drawImageToRect]: dart.fnType(dart.void, [html$.CanvasImageSource, math.Rectangle$(core.num)], {sourceRect: math.Rectangle$(core.num)}),
    [$drawImage]: dart.fnType(dart.void, [html$.CanvasImageSource, core.num, core.num]),
    [$drawImageScaled]: dart.fnType(dart.void, [html$.CanvasImageSource, core.num, core.num, core.num, core.num]),
    [$drawImageScaledFromSource]: dart.fnType(dart.void, [html$.CanvasImageSource, core.num, core.num, core.num, core.num, core.num, core.num, core.num, core.num]),
    [$getLineDash]: dart.fnType(core.List$(core.num), []),
    [$setLineDash]: dart.fnType(dart.void, [core.List$(core.num)]),
    [$fillText]: dart.fnType(dart.void, [core.String, core.num, core.num], [core.num])
  }));
  dart.setGetterSignature(html$.CanvasRenderingContext2D, () => ({
    __proto__: dart.getGetters(html$.CanvasRenderingContext2D.__proto__),
    [$lineDashOffset]: core.num,
    [$backingStorePixelRatio]: core.double
  }));
  dart.setSetterSignature(html$.CanvasRenderingContext2D, () => ({
    __proto__: dart.getSetters(html$.CanvasRenderingContext2D.__proto__),
    [$lineDashOffset]: core.num
  }));
  dart.setFieldSignature(html$.CanvasRenderingContext2D, () => ({
    __proto__: dart.getFields(html$.CanvasRenderingContext2D.__proto__),
    [$canvas]: dart.finalFieldType(html$.CanvasElement),
    [$currentTransform]: dart.fieldType(svg$.Matrix),
    [$direction]: dart.fieldType(core.String),
    [$fillStyle]: dart.fieldType(core.Object),
    [$filter]: dart.fieldType(core.String),
    [$font]: dart.fieldType(core.String),
    [$globalAlpha]: dart.fieldType(core.num),
    [$globalCompositeOperation]: dart.fieldType(core.String),
    [$imageSmoothingEnabled]: dart.fieldType(core.bool),
    [$imageSmoothingQuality]: dart.fieldType(core.String),
    [$lineCap]: dart.fieldType(core.String),
    [$lineJoin]: dart.fieldType(core.String),
    [$lineWidth]: dart.fieldType(core.num),
    [$miterLimit]: dart.fieldType(core.num),
    [$shadowBlur]: dart.fieldType(core.num),
    [$shadowColor]: dart.fieldType(core.String),
    [$shadowOffsetX]: dart.fieldType(core.num),
    [$shadowOffsetY]: dart.fieldType(core.num),
    [$strokeStyle]: dart.fieldType(core.Object),
    [$textAlign]: dart.fieldType(core.String),
    [$textBaseline]: dart.fieldType(core.String)
  }));
  dart.registerExtension("CanvasRenderingContext2D", html$.CanvasRenderingContext2D);
  html$.ChildNode = class ChildNode extends _interceptors.Interceptor {};
  dart.addTypeTests(html$.ChildNode);
  html$.Client = class Client extends _interceptors.Interceptor {
    get [$frameType]() {
      return this.frameType;
    }
    get [$id]() {
      return this.id;
    }
    get [$type]() {
      return this.type;
    }
    get [$url]() {
      return this.url;
    }
    [$postMessage](...args) {
      return this.postMessage.apply(this, args);
    }
  };
  dart.addTypeTests(html$.Client);
  const frameType = Symbol("Client.frameType");
  const id$4 = Symbol("Client.id");
  const type$6 = Symbol("Client.type");
  const url$ = Symbol("Client.url");
  dart.setMethodSignature(html$.Client, () => ({
    __proto__: dart.getMethods(html$.Client.__proto__),
    [$postMessage]: dart.fnType(dart.void, [core.Object], [core.List$(core.Object)])
  }));
  dart.setFieldSignature(html$.Client, () => ({
    __proto__: dart.getFields(html$.Client.__proto__),
    [$frameType]: dart.finalFieldType(core.String),
    [$id]: dart.finalFieldType(core.String),
    [$type]: dart.finalFieldType(core.String),
    [$url]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("Client", html$.Client);
  html$.Clients = class Clients extends _interceptors.Interceptor {
    [$claim]() {
      return html$.promiseToFuture(dart.dynamic, this.claim());
    }
    [$get](id) {
      return html$.promiseToFuture(dart.dynamic, this.get(id));
    }
    [$matchAll](options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(ListOfClient(), this.matchAll(options_dict));
    }
    [$openWindow](url) {
      return html$.promiseToFuture(html$.WindowClient, this.openWindow(url));
    }
  };
  dart.addTypeTests(html$.Clients);
  dart.setMethodSignature(html$.Clients, () => ({
    __proto__: dart.getMethods(html$.Clients.__proto__),
    [$claim]: dart.fnType(async.Future, []),
    [$get]: dart.fnType(async.Future, [core.String]),
    [$matchAll]: dart.fnType(async.Future$(core.List$(html$.Client)), [], [core.Map]),
    [$openWindow]: dart.fnType(async.Future$(html$.WindowClient), [core.String])
  }));
  dart.registerExtension("Clients", html$.Clients);
  html$.ClipboardEvent = class ClipboardEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.ClipboardEvent._create_1(type, eventInitDict_1);
      }
      return html$.ClipboardEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new ClipboardEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new ClipboardEvent(type);
    }
    get [$clipboardData]() {
      return this.clipboardData;
    }
  };
  dart.addTypeTests(html$.ClipboardEvent);
  const clipboardData = Symbol("ClipboardEvent.clipboardData");
  dart.setFieldSignature(html$.ClipboardEvent, () => ({
    __proto__: dart.getFields(html$.ClipboardEvent.__proto__),
    [$clipboardData]: dart.finalFieldType(html$.DataTransfer)
  }));
  dart.registerExtension("ClipboardEvent", html$.ClipboardEvent);
  html$.CloseEvent = class CloseEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.CloseEvent._create_1(type, eventInitDict_1);
      }
      return html$.CloseEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new CloseEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new CloseEvent(type);
    }
    get [$code]() {
      return this.code;
    }
    get [$reason]() {
      return this.reason;
    }
    get [$wasClean]() {
      return this.wasClean;
    }
  };
  dart.addTypeTests(html$.CloseEvent);
  const code = Symbol("CloseEvent.code");
  const reason$ = Symbol("CloseEvent.reason");
  const wasClean = Symbol("CloseEvent.wasClean");
  dart.setFieldSignature(html$.CloseEvent, () => ({
    __proto__: dart.getFields(html$.CloseEvent.__proto__),
    [$code]: dart.finalFieldType(core.int),
    [$reason]: dart.finalFieldType(core.String),
    [$wasClean]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("CloseEvent", html$.CloseEvent);
  html$.Comment = class Comment extends html$.CharacterData {
    static new(data) {
      if (data === void 0) data = null;
      return html$.document.createComment(data == null ? "" : data);
    }
  };
  dart.addTypeTests(html$.Comment);
  dart.registerExtension("Comment", html$.Comment);
  const _initCompositionEvent = Symbol('_initCompositionEvent');
  const _initUIEvent = Symbol('_initUIEvent');
  const _get_view = Symbol('_get_view');
  const _which = Symbol('_which');
  html$.UIEvent = class UIEvent$ extends html$.Event {
    static new(type, opts) {
      let view = opts && 'view' in opts ? opts.view : null;
      let detail = opts && 'detail' in opts ? opts.detail : 0;
      let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
      let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
      if (view == null) {
        view = html$.window;
      }
      let e = html$.UIEvent._check(html$.document[_createEvent]("UIEvent"));
      e[_initUIEvent](type, canBubble, cancelable, view, detail);
      return e;
    }
    static __(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.UIEvent._create_1(type, eventInitDict_1);
      }
      return html$.UIEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new UIEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new UIEvent(type);
    }
    get [$detail]() {
      return this.detail;
    }
    get [$sourceCapabilities]() {
      return this.sourceCapabilities;
    }
    get [$view]() {
      return html$._convertNativeToDart_Window(this[_get_view]);
    }
    get [_get_view]() {
      return this.view;
    }
    get [_which]() {
      return this.which;
    }
    [_initUIEvent](...args) {
      return this.initUIEvent.apply(this, args);
    }
  };
  dart.addTypeTests(html$.UIEvent);
  const detail = Symbol("UIEvent.detail");
  const sourceCapabilities = Symbol("UIEvent.sourceCapabilities");
  dart.setMethodSignature(html$.UIEvent, () => ({
    __proto__: dart.getMethods(html$.UIEvent.__proto__),
    [_initUIEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.int])
  }));
  dart.setGetterSignature(html$.UIEvent, () => ({
    __proto__: dart.getGetters(html$.UIEvent.__proto__),
    [$view]: html$.WindowBase
  }));
  dart.setFieldSignature(html$.UIEvent, () => ({
    __proto__: dart.getFields(html$.UIEvent.__proto__),
    [$detail]: dart.finalFieldType(core.int),
    [$sourceCapabilities]: dart.finalFieldType(html$.InputDeviceCapabilities),
    [_get_view]: dart.finalFieldType(dart.dynamic),
    [_which]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("UIEvent", html$.UIEvent);
  html$.CompositionEvent = class CompositionEvent$ extends html$.UIEvent {
    static new(type, opts) {
      let canBubble = opts && 'canBubble' in opts ? opts.canBubble : false;
      let cancelable = opts && 'cancelable' in opts ? opts.cancelable : false;
      let view = opts && 'view' in opts ? opts.view : null;
      let data = opts && 'data' in opts ? opts.data : null;
      let locale = opts && 'locale' in opts ? opts.locale : null;
      if (view == null) {
        view = html$.window;
      }
      let e = html$.CompositionEvent._check(html$.document[_createEvent]("CompositionEvent"));
      if (dart.test(html_common.Device.isFirefox)) {
        e.initCompositionEvent(type, canBubble, cancelable, view, data, locale);
      } else {
        e[_initCompositionEvent](type, canBubble, cancelable, view, data);
      }
      return e;
    }
    static __(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.CompositionEvent._create_1(type, eventInitDict_1);
      }
      return html$.CompositionEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new CompositionEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new CompositionEvent(type);
    }
    get [$data]() {
      return this.data;
    }
    [_initCompositionEvent](...args) {
      return this.initCompositionEvent.apply(this, args);
    }
  };
  dart.addTypeTests(html$.CompositionEvent);
  const data$1 = Symbol("CompositionEvent.data");
  dart.setMethodSignature(html$.CompositionEvent, () => ({
    __proto__: dart.getMethods(html$.CompositionEvent.__proto__),
    [_initCompositionEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.String])
  }));
  dart.setFieldSignature(html$.CompositionEvent, () => ({
    __proto__: dart.getFields(html$.CompositionEvent.__proto__),
    [$data]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("CompositionEvent", html$.CompositionEvent);
  html$.ContentElement = class ContentElement extends html$.HtmlElement {
    static new() {
      return html$.ContentElement._check(html$.document[$createElement]("content"));
    }
    static get supported() {
      return html$.Element.isTagSupported("content");
    }
    get [$select]() {
      return this.select;
    }
    set [$select](value) {
      this.select = value;
    }
    [$getDistributedNodes](...args) {
      return this.getDistributedNodes.apply(this, args);
    }
  };
  (html$.ContentElement.created = function() {
    this[select] = null;
    html$.ContentElement.__proto__.created.call(this);
  }).prototype = html$.ContentElement.prototype;
  dart.addTypeTests(html$.ContentElement);
  const select = Symbol("ContentElement.select");
  dart.setMethodSignature(html$.ContentElement, () => ({
    __proto__: dart.getMethods(html$.ContentElement.__proto__),
    [$getDistributedNodes]: dart.fnType(core.List$(html$.Node), [])
  }));
  dart.setFieldSignature(html$.ContentElement, () => ({
    __proto__: dart.getFields(html$.ContentElement.__proto__),
    [$select]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLContentElement", html$.ContentElement);
  html$.CookieStore = class CookieStore extends _interceptors.Interceptor {
    [$getAll](options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(dart.dynamic, this.getAll(options_dict));
    }
    [$set](name, value, options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(dart.dynamic, this.set(name, value, options_dict));
    }
  };
  dart.addTypeTests(html$.CookieStore);
  dart.setMethodSignature(html$.CookieStore, () => ({
    __proto__: dart.getMethods(html$.CookieStore.__proto__),
    [$getAll]: dart.fnType(async.Future, [], [core.Map]),
    [$set]: dart.fnType(async.Future, [core.String, core.String], [core.Map])
  }));
  dart.registerExtension("CookieStore", html$.CookieStore);
  html$.Coordinates = class Coordinates extends _interceptors.Interceptor {
    get [$accuracy]() {
      return this.accuracy;
    }
    get [$altitude]() {
      return this.altitude;
    }
    get [$altitudeAccuracy]() {
      return this.altitudeAccuracy;
    }
    get [$heading]() {
      return this.heading;
    }
    get [$latitude]() {
      return this.latitude;
    }
    get [$longitude]() {
      return this.longitude;
    }
    get [$speed]() {
      return this.speed;
    }
  };
  dart.addTypeTests(html$.Coordinates);
  const accuracy = Symbol("Coordinates.accuracy");
  const altitude = Symbol("Coordinates.altitude");
  const altitudeAccuracy = Symbol("Coordinates.altitudeAccuracy");
  const heading = Symbol("Coordinates.heading");
  const latitude = Symbol("Coordinates.latitude");
  const longitude = Symbol("Coordinates.longitude");
  const speed = Symbol("Coordinates.speed");
  dart.setFieldSignature(html$.Coordinates, () => ({
    __proto__: dart.getFields(html$.Coordinates.__proto__),
    [$accuracy]: dart.finalFieldType(core.num),
    [$altitude]: dart.finalFieldType(core.num),
    [$altitudeAccuracy]: dart.finalFieldType(core.num),
    [$heading]: dart.finalFieldType(core.num),
    [$latitude]: dart.finalFieldType(core.num),
    [$longitude]: dart.finalFieldType(core.num),
    [$speed]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("Coordinates", html$.Coordinates);
  html$.Credential = class Credential extends _interceptors.Interceptor {
    get [$id]() {
      return this.id;
    }
    get [$type]() {
      return this.type;
    }
  };
  dart.addTypeTests(html$.Credential);
  const id$5 = Symbol("Credential.id");
  const type$7 = Symbol("Credential.type");
  dart.setFieldSignature(html$.Credential, () => ({
    __proto__: dart.getFields(html$.Credential.__proto__),
    [$id]: dart.finalFieldType(core.String),
    [$type]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("Credential", html$.Credential);
  html$.CredentialUserData = class CredentialUserData extends _interceptors.Interceptor {
    get [$iconUrl]() {
      return this.iconURL;
    }
    get [$name]() {
      return this.name;
    }
  };
  dart.addTypeTests(html$.CredentialUserData);
  const iconUrl = Symbol("CredentialUserData.iconUrl");
  const name$8 = Symbol("CredentialUserData.name");
  dart.setFieldSignature(html$.CredentialUserData, () => ({
    __proto__: dart.getFields(html$.CredentialUserData.__proto__),
    [$iconUrl]: dart.finalFieldType(core.String),
    [$name]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("CredentialUserData", html$.CredentialUserData);
  html$.CredentialsContainer = class CredentialsContainer extends _interceptors.Interceptor {
    [$create](options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(dart.dynamic, this.create(options_dict));
    }
    [$get](options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(dart.dynamic, this.get(options_dict));
    }
    [$preventSilentAccess]() {
      return html$.promiseToFuture(dart.dynamic, this.preventSilentAccess());
    }
    [$requireUserMediation]() {
      return html$.promiseToFuture(dart.dynamic, this.requireUserMediation());
    }
    [$store](credential) {
      return html$.promiseToFuture(dart.dynamic, this.store(credential));
    }
  };
  dart.addTypeTests(html$.CredentialsContainer);
  dart.setMethodSignature(html$.CredentialsContainer, () => ({
    __proto__: dart.getMethods(html$.CredentialsContainer.__proto__),
    [$create]: dart.fnType(async.Future, [], [core.Map]),
    [$get]: dart.fnType(async.Future, [], [core.Map]),
    [$preventSilentAccess]: dart.fnType(async.Future, []),
    [$requireUserMediation]: dart.fnType(async.Future, []),
    [$store]: dart.fnType(async.Future, [html$.Credential])
  }));
  dart.registerExtension("CredentialsContainer", html$.CredentialsContainer);
  const _getRandomValues = Symbol('_getRandomValues');
  html$.Crypto = class Crypto extends _interceptors.Interceptor {
    [$getRandomValues](array) {
      return this[_getRandomValues](array);
    }
    static get supported() {
      return !!(window.crypto && window.crypto.getRandomValues);
    }
    get [$subtle]() {
      return this.subtle;
    }
    [_getRandomValues](...args) {
      return this.getRandomValues.apply(this, args);
    }
  };
  dart.addTypeTests(html$.Crypto);
  const subtle = Symbol("Crypto.subtle");
  dart.setMethodSignature(html$.Crypto, () => ({
    __proto__: dart.getMethods(html$.Crypto.__proto__),
    [$getRandomValues]: dart.fnType(typed_data.TypedData, [typed_data.TypedData]),
    [_getRandomValues]: dart.fnType(typed_data.TypedData, [typed_data.TypedData])
  }));
  dart.setFieldSignature(html$.Crypto, () => ({
    __proto__: dart.getFields(html$.Crypto.__proto__),
    [$subtle]: dart.finalFieldType(html$._SubtleCrypto)
  }));
  dart.registerExtension("Crypto", html$.Crypto);
  html$.CryptoKey = class CryptoKey extends _interceptors.Interceptor {
    get [$algorithm]() {
      return this.algorithm;
    }
    get [$extractable]() {
      return this.extractable;
    }
    get [$type]() {
      return this.type;
    }
    get [$usages]() {
      return this.usages;
    }
  };
  dart.addTypeTests(html$.CryptoKey);
  const algorithm = Symbol("CryptoKey.algorithm");
  const extractable = Symbol("CryptoKey.extractable");
  const type$8 = Symbol("CryptoKey.type");
  const usages = Symbol("CryptoKey.usages");
  dart.setFieldSignature(html$.CryptoKey, () => ({
    __proto__: dart.getFields(html$.CryptoKey.__proto__),
    [$algorithm]: dart.finalFieldType(core.Object),
    [$extractable]: dart.finalFieldType(core.bool),
    [$type]: dart.finalFieldType(core.String),
    [$usages]: dart.finalFieldType(core.Object)
  }));
  dart.registerExtension("CryptoKey", html$.CryptoKey);
  html$.Css = class Css extends _interceptors.Interceptor {
    static registerProperty(descriptor) {
      let descriptor_1 = html_common.convertDartToNative_Dictionary(descriptor);
      dart.global.CSS.registerProperty(descriptor_1);
      return;
    }
  };
  dart.addTypeTests(html$.Css);
  dart.defineLazy(html$.Css, {
    /*html$.Css.paintWorklet*/get paintWorklet() {
      return null;
    }
  });
  dart.registerExtension("CSS", html$.Css);
  html$.CssRule = class CssRule extends _interceptors.Interceptor {
    get [$cssText]() {
      return this.cssText;
    }
    set [$cssText](value) {
      this.cssText = value;
    }
    get [$parentRule]() {
      return this.parentRule;
    }
    get [$parentStyleSheet]() {
      return this.parentStyleSheet;
    }
    get [$type]() {
      return this.type;
    }
  };
  dart.addTypeTests(html$.CssRule);
  const cssText = Symbol("CssRule.cssText");
  const parentRule = Symbol("CssRule.parentRule");
  const parentStyleSheet = Symbol("CssRule.parentStyleSheet");
  const type$9 = Symbol("CssRule.type");
  dart.setFieldSignature(html$.CssRule, () => ({
    __proto__: dart.getFields(html$.CssRule.__proto__),
    [$cssText]: dart.fieldType(core.String),
    [$parentRule]: dart.finalFieldType(html$.CssRule),
    [$parentStyleSheet]: dart.finalFieldType(html$.CssStyleSheet),
    [$type]: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(html$.CssRule, {
    /*html$.CssRule.CHARSET_RULE*/get CHARSET_RULE() {
      return 2;
    },
    /*html$.CssRule.FONT_FACE_RULE*/get FONT_FACE_RULE() {
      return 5;
    },
    /*html$.CssRule.IMPORT_RULE*/get IMPORT_RULE() {
      return 3;
    },
    /*html$.CssRule.KEYFRAMES_RULE*/get KEYFRAMES_RULE() {
      return 7;
    },
    /*html$.CssRule.KEYFRAME_RULE*/get KEYFRAME_RULE() {
      return 8;
    },
    /*html$.CssRule.MEDIA_RULE*/get MEDIA_RULE() {
      return 4;
    },
    /*html$.CssRule.NAMESPACE_RULE*/get NAMESPACE_RULE() {
      return 10;
    },
    /*html$.CssRule.PAGE_RULE*/get PAGE_RULE() {
      return 6;
    },
    /*html$.CssRule.STYLE_RULE*/get STYLE_RULE() {
      return 1;
    },
    /*html$.CssRule.SUPPORTS_RULE*/get SUPPORTS_RULE() {
      return 12;
    },
    /*html$.CssRule.VIEWPORT_RULE*/get VIEWPORT_RULE() {
      return 15;
    }
  });
  dart.registerExtension("CSSRule", html$.CssRule);
  html$.CssCharsetRule = class CssCharsetRule extends html$.CssRule {
    get [$encoding]() {
      return this.encoding;
    }
    set [$encoding](value) {
      this.encoding = value;
    }
  };
  dart.addTypeTests(html$.CssCharsetRule);
  const encoding$ = Symbol("CssCharsetRule.encoding");
  dart.setFieldSignature(html$.CssCharsetRule, () => ({
    __proto__: dart.getFields(html$.CssCharsetRule.__proto__),
    [$encoding]: dart.fieldType(core.String)
  }));
  dart.registerExtension("CSSCharsetRule", html$.CssCharsetRule);
  html$.CssGroupingRule = class CssGroupingRule extends html$.CssRule {
    get [$cssRules]() {
      return this.cssRules;
    }
    [$deleteRule](...args) {
      return this.deleteRule.apply(this, args);
    }
    [$insertRule](...args) {
      return this.insertRule.apply(this, args);
    }
  };
  dart.addTypeTests(html$.CssGroupingRule);
  const cssRules = Symbol("CssGroupingRule.cssRules");
  dart.setMethodSignature(html$.CssGroupingRule, () => ({
    __proto__: dart.getMethods(html$.CssGroupingRule.__proto__),
    [$deleteRule]: dart.fnType(dart.void, [core.int]),
    [$insertRule]: dart.fnType(core.int, [core.String, core.int])
  }));
  dart.setFieldSignature(html$.CssGroupingRule, () => ({
    __proto__: dart.getFields(html$.CssGroupingRule.__proto__),
    [$cssRules]: dart.finalFieldType(ListOfCssRule())
  }));
  dart.registerExtension("CSSGroupingRule", html$.CssGroupingRule);
  html$.CssConditionRule = class CssConditionRule extends html$.CssGroupingRule {
    get [$conditionText]() {
      return this.conditionText;
    }
  };
  dart.addTypeTests(html$.CssConditionRule);
  const conditionText = Symbol("CssConditionRule.conditionText");
  dart.setFieldSignature(html$.CssConditionRule, () => ({
    __proto__: dart.getFields(html$.CssConditionRule.__proto__),
    [$conditionText]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("CSSConditionRule", html$.CssConditionRule);
  html$.CssFontFaceRule = class CssFontFaceRule extends html$.CssRule {
    get [$style]() {
      return this.style;
    }
  };
  dart.addTypeTests(html$.CssFontFaceRule);
  const style$ = Symbol("CssFontFaceRule.style");
  dart.setFieldSignature(html$.CssFontFaceRule, () => ({
    __proto__: dart.getFields(html$.CssFontFaceRule.__proto__),
    [$style]: dart.finalFieldType(html$.CssStyleDeclaration)
  }));
  dart.registerExtension("CSSFontFaceRule", html$.CssFontFaceRule);
  html$.CssStyleValue = class CssStyleValue extends _interceptors.Interceptor {};
  dart.addTypeTests(html$.CssStyleValue);
  dart.registerExtension("CSSStyleValue", html$.CssStyleValue);
  html$.CssResourceValue = class CssResourceValue extends html$.CssStyleValue {
    get [$state]() {
      return this.state;
    }
  };
  dart.addTypeTests(html$.CssResourceValue);
  const state$ = Symbol("CssResourceValue.state");
  dart.setFieldSignature(html$.CssResourceValue, () => ({
    __proto__: dart.getFields(html$.CssResourceValue.__proto__),
    [$state]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("CSSResourceValue", html$.CssResourceValue);
  html$.CssImageValue = class CssImageValue extends html$.CssResourceValue {
    get [$intrinsicHeight]() {
      return this.intrinsicHeight;
    }
    get [$intrinsicRatio]() {
      return this.intrinsicRatio;
    }
    get [$intrinsicWidth]() {
      return this.intrinsicWidth;
    }
  };
  dart.addTypeTests(html$.CssImageValue);
  const intrinsicHeight = Symbol("CssImageValue.intrinsicHeight");
  const intrinsicRatio = Symbol("CssImageValue.intrinsicRatio");
  const intrinsicWidth = Symbol("CssImageValue.intrinsicWidth");
  dart.setFieldSignature(html$.CssImageValue, () => ({
    __proto__: dart.getFields(html$.CssImageValue.__proto__),
    [$intrinsicHeight]: dart.finalFieldType(core.num),
    [$intrinsicRatio]: dart.finalFieldType(core.num),
    [$intrinsicWidth]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("CSSImageValue", html$.CssImageValue);
  html$.CssImportRule = class CssImportRule extends html$.CssRule {
    get [$href]() {
      return this.href;
    }
    get [$media]() {
      return this.media;
    }
    get [$styleSheet]() {
      return this.styleSheet;
    }
  };
  dart.addTypeTests(html$.CssImportRule);
  const href$1 = Symbol("CssImportRule.href");
  const media = Symbol("CssImportRule.media");
  const styleSheet = Symbol("CssImportRule.styleSheet");
  dart.setFieldSignature(html$.CssImportRule, () => ({
    __proto__: dart.getFields(html$.CssImportRule.__proto__),
    [$href]: dart.finalFieldType(core.String),
    [$media]: dart.finalFieldType(html$.MediaList),
    [$styleSheet]: dart.finalFieldType(html$.CssStyleSheet)
  }));
  dart.registerExtension("CSSImportRule", html$.CssImportRule);
  html$.CssKeyframeRule = class CssKeyframeRule extends html$.CssRule {
    get [$keyText]() {
      return this.keyText;
    }
    set [$keyText](value) {
      this.keyText = value;
    }
    get [$style]() {
      return this.style;
    }
  };
  dart.addTypeTests(html$.CssKeyframeRule);
  const keyText = Symbol("CssKeyframeRule.keyText");
  const style$0 = Symbol("CssKeyframeRule.style");
  dart.setFieldSignature(html$.CssKeyframeRule, () => ({
    __proto__: dart.getFields(html$.CssKeyframeRule.__proto__),
    [$keyText]: dart.fieldType(core.String),
    [$style]: dart.finalFieldType(html$.CssStyleDeclaration)
  }));
  dart.registerExtension("CSSKeyframeRule", html$.CssKeyframeRule);
  dart.registerExtension("MozCSSKeyframeRule", html$.CssKeyframeRule);
  dart.registerExtension("WebKitCSSKeyframeRule", html$.CssKeyframeRule);
  const __getter__ = Symbol('__getter__');
  html$.CssKeyframesRule = class CssKeyframesRule extends html$.CssRule {
    get [$cssRules]() {
      return this.cssRules;
    }
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
    [__getter__](...args) {
      return this.__getter__.apply(this, args);
    }
    [$appendRule](...args) {
      return this.appendRule.apply(this, args);
    }
    [$deleteRule](...args) {
      return this.deleteRule.apply(this, args);
    }
    [$findRule](...args) {
      return this.findRule.apply(this, args);
    }
  };
  dart.addTypeTests(html$.CssKeyframesRule);
  const cssRules$ = Symbol("CssKeyframesRule.cssRules");
  const name$9 = Symbol("CssKeyframesRule.name");
  dart.setMethodSignature(html$.CssKeyframesRule, () => ({
    __proto__: dart.getMethods(html$.CssKeyframesRule.__proto__),
    [__getter__]: dart.fnType(html$.CssKeyframeRule, [core.int]),
    [$appendRule]: dart.fnType(dart.void, [core.String]),
    [$deleteRule]: dart.fnType(dart.void, [core.String]),
    [$findRule]: dart.fnType(html$.CssKeyframeRule, [core.String])
  }));
  dart.setFieldSignature(html$.CssKeyframesRule, () => ({
    __proto__: dart.getFields(html$.CssKeyframesRule.__proto__),
    [$cssRules]: dart.finalFieldType(ListOfCssRule()),
    [$name]: dart.fieldType(core.String)
  }));
  dart.registerExtension("CSSKeyframesRule", html$.CssKeyframesRule);
  dart.registerExtension("MozCSSKeyframesRule", html$.CssKeyframesRule);
  dart.registerExtension("WebKitCSSKeyframesRule", html$.CssKeyframesRule);
  html$.CssKeywordValue = class CssKeywordValue extends html$.CssStyleValue {
    static new(keyword) {
      return html$.CssKeywordValue._create_1(keyword);
    }
    static _create_1(keyword) {
      return new CSSKeywordValue(keyword);
    }
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
  };
  dart.addTypeTests(html$.CssKeywordValue);
  const value$1 = Symbol("CssKeywordValue.value");
  dart.setFieldSignature(html$.CssKeywordValue, () => ({
    __proto__: dart.getFields(html$.CssKeywordValue.__proto__),
    [$value]: dart.fieldType(core.String)
  }));
  dart.registerExtension("CSSKeywordValue", html$.CssKeywordValue);
  html$.CssTransformComponent = class CssTransformComponent extends _interceptors.Interceptor {
    get [$is2D]() {
      return this.is2D;
    }
    set [$is2D](value) {
      this.is2D = value;
    }
  };
  dart.addTypeTests(html$.CssTransformComponent);
  const is2D = Symbol("CssTransformComponent.is2D");
  dart.setFieldSignature(html$.CssTransformComponent, () => ({
    __proto__: dart.getFields(html$.CssTransformComponent.__proto__),
    [$is2D]: dart.fieldType(core.bool)
  }));
  dart.registerExtension("CSSTransformComponent", html$.CssTransformComponent);
  html$.CssMatrixComponent = class CssMatrixComponent extends html$.CssTransformComponent {
    static new(matrix, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return html$.CssMatrixComponent._create_1(matrix, options_1);
      }
      return html$.CssMatrixComponent._create_2(matrix);
    }
    static _create_1(matrix, options) {
      return new CSSMatrixComponent(matrix, options);
    }
    static _create_2(matrix) {
      return new CSSMatrixComponent(matrix);
    }
    get [$matrix]() {
      return this.matrix;
    }
    set [$matrix](value) {
      this.matrix = value;
    }
  };
  dart.addTypeTests(html$.CssMatrixComponent);
  const matrix = Symbol("CssMatrixComponent.matrix");
  dart.setFieldSignature(html$.CssMatrixComponent, () => ({
    __proto__: dart.getFields(html$.CssMatrixComponent.__proto__),
    [$matrix]: dart.fieldType(html$.DomMatrix)
  }));
  dart.registerExtension("CSSMatrixComponent", html$.CssMatrixComponent);
  html$.CssMediaRule = class CssMediaRule extends html$.CssConditionRule {
    get [$media]() {
      return this.media;
    }
  };
  dart.addTypeTests(html$.CssMediaRule);
  const media$ = Symbol("CssMediaRule.media");
  dart.setFieldSignature(html$.CssMediaRule, () => ({
    __proto__: dart.getFields(html$.CssMediaRule.__proto__),
    [$media]: dart.finalFieldType(html$.MediaList)
  }));
  dart.registerExtension("CSSMediaRule", html$.CssMediaRule);
  html$.CssNamespaceRule = class CssNamespaceRule extends html$.CssRule {
    get [$namespaceUri]() {
      return this.namespaceURI;
    }
    get [$prefix]() {
      return this.prefix;
    }
  };
  dart.addTypeTests(html$.CssNamespaceRule);
  const namespaceUri = Symbol("CssNamespaceRule.namespaceUri");
  const prefix = Symbol("CssNamespaceRule.prefix");
  dart.setFieldSignature(html$.CssNamespaceRule, () => ({
    __proto__: dart.getFields(html$.CssNamespaceRule.__proto__),
    [$namespaceUri]: dart.finalFieldType(core.String),
    [$prefix]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("CSSNamespaceRule", html$.CssNamespaceRule);
  html$.CssNumericValue = class CssNumericValue extends html$.CssStyleValue {
    [$add](...args) {
      return this.add.apply(this, args);
    }
    [$div](...args) {
      return this.div.apply(this, args);
    }
    [$mul](...args) {
      return this.mul.apply(this, args);
    }
    [$sub](...args) {
      return this.sub.apply(this, args);
    }
    [$to](...args) {
      return this.to.apply(this, args);
    }
  };
  dart.addTypeTests(html$.CssNumericValue);
  dart.setMethodSignature(html$.CssNumericValue, () => ({
    __proto__: dart.getMethods(html$.CssNumericValue.__proto__),
    [$add]: dart.fnType(html$.CssNumericValue, [html$.CssNumericValue]),
    [$div]: dart.fnType(html$.CssNumericValue, [core.num]),
    [$mul]: dart.fnType(html$.CssNumericValue, [core.num]),
    [$sub]: dart.fnType(html$.CssNumericValue, [html$.CssNumericValue]),
    [$to]: dart.fnType(html$.CssNumericValue, [core.String])
  }));
  dart.registerExtension("CSSNumericValue", html$.CssNumericValue);
  html$.CssPageRule = class CssPageRule extends html$.CssRule {
    get [$selectorText]() {
      return this.selectorText;
    }
    set [$selectorText](value) {
      this.selectorText = value;
    }
    get [$style]() {
      return this.style;
    }
  };
  dart.addTypeTests(html$.CssPageRule);
  const selectorText = Symbol("CssPageRule.selectorText");
  const style$1 = Symbol("CssPageRule.style");
  dart.setFieldSignature(html$.CssPageRule, () => ({
    __proto__: dart.getFields(html$.CssPageRule.__proto__),
    [$selectorText]: dart.fieldType(core.String),
    [$style]: dart.finalFieldType(html$.CssStyleDeclaration)
  }));
  dart.registerExtension("CSSPageRule", html$.CssPageRule);
  html$.CssPerspective = class CssPerspective extends html$.CssTransformComponent {
    static new(length) {
      return html$.CssPerspective._create_1(length);
    }
    static _create_1(length) {
      return new CSSPerspective(length);
    }
    get [$length]() {
      return this.length;
    }
    set [$length](value) {
      this.length = value;
    }
  };
  dart.addTypeTests(html$.CssPerspective);
  const length$1 = Symbol("CssPerspective.length");
  dart.setFieldSignature(html$.CssPerspective, () => ({
    __proto__: dart.getFields(html$.CssPerspective.__proto__),
    [$length]: dart.fieldType(html$.CssNumericValue)
  }));
  dart.registerExtension("CSSPerspective", html$.CssPerspective);
  html$.CssPositionValue = class CssPositionValue extends html$.CssStyleValue {
    static new(x, y) {
      return html$.CssPositionValue._create_1(x, y);
    }
    static _create_1(x, y) {
      return new CSSPositionValue(x, y);
    }
    get [$x]() {
      return this.x;
    }
    set [$x](value) {
      this.x = value;
    }
    get [$y]() {
      return this.y;
    }
    set [$y](value) {
      this.y = value;
    }
  };
  dart.addTypeTests(html$.CssPositionValue);
  const x$ = Symbol("CssPositionValue.x");
  const y$ = Symbol("CssPositionValue.y");
  dart.setFieldSignature(html$.CssPositionValue, () => ({
    __proto__: dart.getFields(html$.CssPositionValue.__proto__),
    [$x]: dart.fieldType(html$.CssNumericValue),
    [$y]: dart.fieldType(html$.CssNumericValue)
  }));
  dart.registerExtension("CSSPositionValue", html$.CssPositionValue);
  html$.CssRotation = class CssRotation extends html$.CssTransformComponent {
    static new(angleValue_OR_x, y, z, angle) {
      if (y === void 0) y = null;
      if (z === void 0) z = null;
      if (angle === void 0) angle = null;
      if (html$.CssNumericValue.is(angleValue_OR_x) && y == null && z == null && angle == null) {
        return html$.CssRotation._create_1(angleValue_OR_x);
      }
      if (html$.CssNumericValue.is(angle) && typeof z == 'number' && typeof y == 'number' && typeof angleValue_OR_x == 'number') {
        return html$.CssRotation._create_2(angleValue_OR_x, y, z, angle);
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    static _create_1(angleValue_OR_x) {
      return new CSSRotation(angleValue_OR_x);
    }
    static _create_2(angleValue_OR_x, y, z, angle) {
      return new CSSRotation(angleValue_OR_x, y, z, angle);
    }
    get [$angle]() {
      return this.angle;
    }
    set [$angle](value) {
      this.angle = value;
    }
    get [$x]() {
      return this.x;
    }
    set [$x](value) {
      this.x = value;
    }
    get [$y]() {
      return this.y;
    }
    set [$y](value) {
      this.y = value;
    }
    get [$z]() {
      return this.z;
    }
    set [$z](value) {
      this.z = value;
    }
  };
  dart.addTypeTests(html$.CssRotation);
  const angle = Symbol("CssRotation.angle");
  const x$0 = Symbol("CssRotation.x");
  const y$0 = Symbol("CssRotation.y");
  const z$ = Symbol("CssRotation.z");
  dart.setFieldSignature(html$.CssRotation, () => ({
    __proto__: dart.getFields(html$.CssRotation.__proto__),
    [$angle]: dart.fieldType(html$.CssNumericValue),
    [$x]: dart.fieldType(core.num),
    [$y]: dart.fieldType(core.num),
    [$z]: dart.fieldType(core.num)
  }));
  dart.registerExtension("CSSRotation", html$.CssRotation);
  html$.CssScale = class CssScale extends html$.CssTransformComponent {
    static new(x, y, z) {
      if (z === void 0) z = null;
      if (typeof y == 'number' && typeof x == 'number' && z == null) {
        return html$.CssScale._create_1(x, y);
      }
      if (typeof z == 'number' && typeof y == 'number' && typeof x == 'number') {
        return html$.CssScale._create_2(x, y, z);
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    static _create_1(x, y) {
      return new CSSScale(x, y);
    }
    static _create_2(x, y, z) {
      return new CSSScale(x, y, z);
    }
    get [$x]() {
      return this.x;
    }
    set [$x](value) {
      this.x = value;
    }
    get [$y]() {
      return this.y;
    }
    set [$y](value) {
      this.y = value;
    }
    get [$z]() {
      return this.z;
    }
    set [$z](value) {
      this.z = value;
    }
  };
  dart.addTypeTests(html$.CssScale);
  const x$1 = Symbol("CssScale.x");
  const y$1 = Symbol("CssScale.y");
  const z$0 = Symbol("CssScale.z");
  dart.setFieldSignature(html$.CssScale, () => ({
    __proto__: dart.getFields(html$.CssScale.__proto__),
    [$x]: dart.fieldType(core.num),
    [$y]: dart.fieldType(core.num),
    [$z]: dart.fieldType(core.num)
  }));
  dart.registerExtension("CSSScale", html$.CssScale);
  html$.CssSkew = class CssSkew extends html$.CssTransformComponent {
    static new(ax, ay) {
      return html$.CssSkew._create_1(ax, ay);
    }
    static _create_1(ax, ay) {
      return new CSSSkew(ax, ay);
    }
    get [$ax]() {
      return this.ax;
    }
    set [$ax](value) {
      this.ax = value;
    }
    get [$ay]() {
      return this.ay;
    }
    set [$ay](value) {
      this.ay = value;
    }
  };
  dart.addTypeTests(html$.CssSkew);
  const ax = Symbol("CssSkew.ax");
  const ay = Symbol("CssSkew.ay");
  dart.setFieldSignature(html$.CssSkew, () => ({
    __proto__: dart.getFields(html$.CssSkew.__proto__),
    [$ax]: dart.fieldType(html$.CssNumericValue),
    [$ay]: dart.fieldType(html$.CssNumericValue)
  }));
  dart.registerExtension("CSSSkew", html$.CssSkew);
  const _getPropertyValueHelper = Symbol('_getPropertyValueHelper');
  const _browserPropertyName = Symbol('_browserPropertyName');
  const _getPropertyValue = Symbol('_getPropertyValue');
  const _supportsProperty = Symbol('_supportsProperty');
  const _setPropertyHelper = Symbol('_setPropertyHelper');
  const _supportedBrowserPropertyName = Symbol('_supportedBrowserPropertyName');
  const _background = Symbol('_background');
  const _backgroundAttachment = Symbol('_backgroundAttachment');
  const _backgroundColor = Symbol('_backgroundColor');
  const _backgroundImage = Symbol('_backgroundImage');
  const _backgroundPosition = Symbol('_backgroundPosition');
  const _backgroundRepeat = Symbol('_backgroundRepeat');
  const _border = Symbol('_border');
  const _borderBottom = Symbol('_borderBottom');
  const _borderBottomColor = Symbol('_borderBottomColor');
  const _borderBottomStyle = Symbol('_borderBottomStyle');
  const _borderBottomWidth = Symbol('_borderBottomWidth');
  const _borderCollapse = Symbol('_borderCollapse');
  const _borderColor = Symbol('_borderColor');
  const _borderLeft = Symbol('_borderLeft');
  const _borderLeftColor = Symbol('_borderLeftColor');
  const _borderLeftStyle = Symbol('_borderLeftStyle');
  const _borderLeftWidth = Symbol('_borderLeftWidth');
  const _borderRight = Symbol('_borderRight');
  const _borderRightColor = Symbol('_borderRightColor');
  const _borderRightStyle = Symbol('_borderRightStyle');
  const _borderRightWidth = Symbol('_borderRightWidth');
  const _borderSpacing = Symbol('_borderSpacing');
  const _borderStyle = Symbol('_borderStyle');
  const _borderTop = Symbol('_borderTop');
  const _borderTopColor = Symbol('_borderTopColor');
  const _borderTopStyle = Symbol('_borderTopStyle');
  const _borderTopWidth = Symbol('_borderTopWidth');
  const _borderWidth = Symbol('_borderWidth');
  const _bottom = Symbol('_bottom');
  const _captionSide = Symbol('_captionSide');
  const _clear$0 = Symbol('_clear');
  const _clip = Symbol('_clip');
  const _color = Symbol('_color');
  const _content = Symbol('_content');
  const _cursor = Symbol('_cursor');
  const _direction = Symbol('_direction');
  const _display = Symbol('_display');
  const _emptyCells = Symbol('_emptyCells');
  const _font = Symbol('_font');
  const _fontFamily = Symbol('_fontFamily');
  const _fontSize = Symbol('_fontSize');
  const _fontStyle = Symbol('_fontStyle');
  const _fontVariant = Symbol('_fontVariant');
  const _fontWeight = Symbol('_fontWeight');
  const _height$ = Symbol('_height');
  const _left = Symbol('_left');
  const _letterSpacing = Symbol('_letterSpacing');
  const _lineHeight = Symbol('_lineHeight');
  const _listStyle = Symbol('_listStyle');
  const _listStyleImage = Symbol('_listStyleImage');
  const _listStylePosition = Symbol('_listStylePosition');
  const _listStyleType = Symbol('_listStyleType');
  const _margin = Symbol('_margin');
  const _marginBottom = Symbol('_marginBottom');
  const _marginLeft = Symbol('_marginLeft');
  const _marginRight = Symbol('_marginRight');
  const _marginTop = Symbol('_marginTop');
  const _maxHeight = Symbol('_maxHeight');
  const _maxWidth = Symbol('_maxWidth');
  const _minHeight = Symbol('_minHeight');
  const _minWidth = Symbol('_minWidth');
  const _outline = Symbol('_outline');
  const _outlineColor = Symbol('_outlineColor');
  const _outlineStyle = Symbol('_outlineStyle');
  const _outlineWidth = Symbol('_outlineWidth');
  const _overflow = Symbol('_overflow');
  const _padding = Symbol('_padding');
  const _paddingBottom = Symbol('_paddingBottom');
  const _paddingLeft = Symbol('_paddingLeft');
  const _paddingRight = Symbol('_paddingRight');
  const _paddingTop = Symbol('_paddingTop');
  const _pageBreakAfter = Symbol('_pageBreakAfter');
  const _pageBreakBefore = Symbol('_pageBreakBefore');
  const _pageBreakInside = Symbol('_pageBreakInside');
  const _position$1 = Symbol('_position');
  const _quotes = Symbol('_quotes');
  const _right = Symbol('_right');
  const _tableLayout = Symbol('_tableLayout');
  const _textAlign = Symbol('_textAlign');
  const _textDecoration = Symbol('_textDecoration');
  const _textIndent = Symbol('_textIndent');
  const _textTransform = Symbol('_textTransform');
  const _top = Symbol('_top');
  const _unicodeBidi = Symbol('_unicodeBidi');
  const _verticalAlign = Symbol('_verticalAlign');
  const _visibility = Symbol('_visibility');
  const _whiteSpace = Symbol('_whiteSpace');
  const _width$ = Symbol('_width');
  const _wordSpacing = Symbol('_wordSpacing');
  const _zIndex = Symbol('_zIndex');
  html$.CssStyleDeclarationBase = class CssStyleDeclarationBase extends core.Object {
    get alignContent() {
      return this[$getPropertyValue]("align-content");
    }
    set alignContent(value) {
      this[$setProperty]("align-content", value, "");
    }
    get alignItems() {
      return this[$getPropertyValue]("align-items");
    }
    set alignItems(value) {
      this[$setProperty]("align-items", value, "");
    }
    get alignSelf() {
      return this[$getPropertyValue]("align-self");
    }
    set alignSelf(value) {
      this[$setProperty]("align-self", value, "");
    }
    get animation() {
      return this[$getPropertyValue]("animation");
    }
    set animation(value) {
      this[$setProperty]("animation", value, "");
    }
    get animationDelay() {
      return this[$getPropertyValue]("animation-delay");
    }
    set animationDelay(value) {
      this[$setProperty]("animation-delay", value, "");
    }
    get animationDirection() {
      return this[$getPropertyValue]("animation-direction");
    }
    set animationDirection(value) {
      this[$setProperty]("animation-direction", value, "");
    }
    get animationDuration() {
      return this[$getPropertyValue]("animation-duration");
    }
    set animationDuration(value) {
      this[$setProperty]("animation-duration", value, "");
    }
    get animationFillMode() {
      return this[$getPropertyValue]("animation-fill-mode");
    }
    set animationFillMode(value) {
      this[$setProperty]("animation-fill-mode", value, "");
    }
    get animationIterationCount() {
      return this[$getPropertyValue]("animation-iteration-count");
    }
    set animationIterationCount(value) {
      this[$setProperty]("animation-iteration-count", value, "");
    }
    get animationName() {
      return this[$getPropertyValue]("animation-name");
    }
    set animationName(value) {
      this[$setProperty]("animation-name", value, "");
    }
    get animationPlayState() {
      return this[$getPropertyValue]("animation-play-state");
    }
    set animationPlayState(value) {
      this[$setProperty]("animation-play-state", value, "");
    }
    get animationTimingFunction() {
      return this[$getPropertyValue]("animation-timing-function");
    }
    set animationTimingFunction(value) {
      this[$setProperty]("animation-timing-function", value, "");
    }
    get appRegion() {
      return this[$getPropertyValue]("app-region");
    }
    set appRegion(value) {
      this[$setProperty]("app-region", value, "");
    }
    get appearance() {
      return this[$getPropertyValue]("appearance");
    }
    set appearance(value) {
      this[$setProperty]("appearance", value, "");
    }
    get aspectRatio() {
      return this[$getPropertyValue]("aspect-ratio");
    }
    set aspectRatio(value) {
      this[$setProperty]("aspect-ratio", value, "");
    }
    get backfaceVisibility() {
      return this[$getPropertyValue]("backface-visibility");
    }
    set backfaceVisibility(value) {
      this[$setProperty]("backface-visibility", value, "");
    }
    get background() {
      return this[$getPropertyValue]("background");
    }
    set background(value) {
      this[$setProperty]("background", value, "");
    }
    get backgroundAttachment() {
      return this[$getPropertyValue]("background-attachment");
    }
    set backgroundAttachment(value) {
      this[$setProperty]("background-attachment", value, "");
    }
    get backgroundBlendMode() {
      return this[$getPropertyValue]("background-blend-mode");
    }
    set backgroundBlendMode(value) {
      this[$setProperty]("background-blend-mode", value, "");
    }
    get backgroundClip() {
      return this[$getPropertyValue]("background-clip");
    }
    set backgroundClip(value) {
      this[$setProperty]("background-clip", value, "");
    }
    get backgroundColor() {
      return this[$getPropertyValue]("background-color");
    }
    set backgroundColor(value) {
      this[$setProperty]("background-color", value, "");
    }
    get backgroundComposite() {
      return this[$getPropertyValue]("background-composite");
    }
    set backgroundComposite(value) {
      this[$setProperty]("background-composite", value, "");
    }
    get backgroundImage() {
      return this[$getPropertyValue]("background-image");
    }
    set backgroundImage(value) {
      this[$setProperty]("background-image", value, "");
    }
    get backgroundOrigin() {
      return this[$getPropertyValue]("background-origin");
    }
    set backgroundOrigin(value) {
      this[$setProperty]("background-origin", value, "");
    }
    get backgroundPosition() {
      return this[$getPropertyValue]("background-position");
    }
    set backgroundPosition(value) {
      this[$setProperty]("background-position", value, "");
    }
    get backgroundPositionX() {
      return this[$getPropertyValue]("background-position-x");
    }
    set backgroundPositionX(value) {
      this[$setProperty]("background-position-x", value, "");
    }
    get backgroundPositionY() {
      return this[$getPropertyValue]("background-position-y");
    }
    set backgroundPositionY(value) {
      this[$setProperty]("background-position-y", value, "");
    }
    get backgroundRepeat() {
      return this[$getPropertyValue]("background-repeat");
    }
    set backgroundRepeat(value) {
      this[$setProperty]("background-repeat", value, "");
    }
    get backgroundRepeatX() {
      return this[$getPropertyValue]("background-repeat-x");
    }
    set backgroundRepeatX(value) {
      this[$setProperty]("background-repeat-x", value, "");
    }
    get backgroundRepeatY() {
      return this[$getPropertyValue]("background-repeat-y");
    }
    set backgroundRepeatY(value) {
      this[$setProperty]("background-repeat-y", value, "");
    }
    get backgroundSize() {
      return this[$getPropertyValue]("background-size");
    }
    set backgroundSize(value) {
      this[$setProperty]("background-size", value, "");
    }
    get border() {
      return this[$getPropertyValue]("border");
    }
    set border(value) {
      this[$setProperty]("border", value, "");
    }
    get borderAfter() {
      return this[$getPropertyValue]("border-after");
    }
    set borderAfter(value) {
      this[$setProperty]("border-after", value, "");
    }
    get borderAfterColor() {
      return this[$getPropertyValue]("border-after-color");
    }
    set borderAfterColor(value) {
      this[$setProperty]("border-after-color", value, "");
    }
    get borderAfterStyle() {
      return this[$getPropertyValue]("border-after-style");
    }
    set borderAfterStyle(value) {
      this[$setProperty]("border-after-style", value, "");
    }
    get borderAfterWidth() {
      return this[$getPropertyValue]("border-after-width");
    }
    set borderAfterWidth(value) {
      this[$setProperty]("border-after-width", value, "");
    }
    get borderBefore() {
      return this[$getPropertyValue]("border-before");
    }
    set borderBefore(value) {
      this[$setProperty]("border-before", value, "");
    }
    get borderBeforeColor() {
      return this[$getPropertyValue]("border-before-color");
    }
    set borderBeforeColor(value) {
      this[$setProperty]("border-before-color", value, "");
    }
    get borderBeforeStyle() {
      return this[$getPropertyValue]("border-before-style");
    }
    set borderBeforeStyle(value) {
      this[$setProperty]("border-before-style", value, "");
    }
    get borderBeforeWidth() {
      return this[$getPropertyValue]("border-before-width");
    }
    set borderBeforeWidth(value) {
      this[$setProperty]("border-before-width", value, "");
    }
    get borderBottom() {
      return this[$getPropertyValue]("border-bottom");
    }
    set borderBottom(value) {
      this[$setProperty]("border-bottom", value, "");
    }
    get borderBottomColor() {
      return this[$getPropertyValue]("border-bottom-color");
    }
    set borderBottomColor(value) {
      this[$setProperty]("border-bottom-color", value, "");
    }
    get borderBottomLeftRadius() {
      return this[$getPropertyValue]("border-bottom-left-radius");
    }
    set borderBottomLeftRadius(value) {
      this[$setProperty]("border-bottom-left-radius", value, "");
    }
    get borderBottomRightRadius() {
      return this[$getPropertyValue]("border-bottom-right-radius");
    }
    set borderBottomRightRadius(value) {
      this[$setProperty]("border-bottom-right-radius", value, "");
    }
    get borderBottomStyle() {
      return this[$getPropertyValue]("border-bottom-style");
    }
    set borderBottomStyle(value) {
      this[$setProperty]("border-bottom-style", value, "");
    }
    get borderBottomWidth() {
      return this[$getPropertyValue]("border-bottom-width");
    }
    set borderBottomWidth(value) {
      this[$setProperty]("border-bottom-width", value, "");
    }
    get borderCollapse() {
      return this[$getPropertyValue]("border-collapse");
    }
    set borderCollapse(value) {
      this[$setProperty]("border-collapse", value, "");
    }
    get borderColor() {
      return this[$getPropertyValue]("border-color");
    }
    set borderColor(value) {
      this[$setProperty]("border-color", value, "");
    }
    get borderEnd() {
      return this[$getPropertyValue]("border-end");
    }
    set borderEnd(value) {
      this[$setProperty]("border-end", value, "");
    }
    get borderEndColor() {
      return this[$getPropertyValue]("border-end-color");
    }
    set borderEndColor(value) {
      this[$setProperty]("border-end-color", value, "");
    }
    get borderEndStyle() {
      return this[$getPropertyValue]("border-end-style");
    }
    set borderEndStyle(value) {
      this[$setProperty]("border-end-style", value, "");
    }
    get borderEndWidth() {
      return this[$getPropertyValue]("border-end-width");
    }
    set borderEndWidth(value) {
      this[$setProperty]("border-end-width", value, "");
    }
    get borderFit() {
      return this[$getPropertyValue]("border-fit");
    }
    set borderFit(value) {
      this[$setProperty]("border-fit", value, "");
    }
    get borderHorizontalSpacing() {
      return this[$getPropertyValue]("border-horizontal-spacing");
    }
    set borderHorizontalSpacing(value) {
      this[$setProperty]("border-horizontal-spacing", value, "");
    }
    get borderImage() {
      return this[$getPropertyValue]("border-image");
    }
    set borderImage(value) {
      this[$setProperty]("border-image", value, "");
    }
    get borderImageOutset() {
      return this[$getPropertyValue]("border-image-outset");
    }
    set borderImageOutset(value) {
      this[$setProperty]("border-image-outset", value, "");
    }
    get borderImageRepeat() {
      return this[$getPropertyValue]("border-image-repeat");
    }
    set borderImageRepeat(value) {
      this[$setProperty]("border-image-repeat", value, "");
    }
    get borderImageSlice() {
      return this[$getPropertyValue]("border-image-slice");
    }
    set borderImageSlice(value) {
      this[$setProperty]("border-image-slice", value, "");
    }
    get borderImageSource() {
      return this[$getPropertyValue]("border-image-source");
    }
    set borderImageSource(value) {
      this[$setProperty]("border-image-source", value, "");
    }
    get borderImageWidth() {
      return this[$getPropertyValue]("border-image-width");
    }
    set borderImageWidth(value) {
      this[$setProperty]("border-image-width", value, "");
    }
    get borderLeft() {
      return this[$getPropertyValue]("border-left");
    }
    set borderLeft(value) {
      this[$setProperty]("border-left", value, "");
    }
    get borderLeftColor() {
      return this[$getPropertyValue]("border-left-color");
    }
    set borderLeftColor(value) {
      this[$setProperty]("border-left-color", value, "");
    }
    get borderLeftStyle() {
      return this[$getPropertyValue]("border-left-style");
    }
    set borderLeftStyle(value) {
      this[$setProperty]("border-left-style", value, "");
    }
    get borderLeftWidth() {
      return this[$getPropertyValue]("border-left-width");
    }
    set borderLeftWidth(value) {
      this[$setProperty]("border-left-width", value, "");
    }
    get borderRadius() {
      return this[$getPropertyValue]("border-radius");
    }
    set borderRadius(value) {
      this[$setProperty]("border-radius", value, "");
    }
    get borderRight() {
      return this[$getPropertyValue]("border-right");
    }
    set borderRight(value) {
      this[$setProperty]("border-right", value, "");
    }
    get borderRightColor() {
      return this[$getPropertyValue]("border-right-color");
    }
    set borderRightColor(value) {
      this[$setProperty]("border-right-color", value, "");
    }
    get borderRightStyle() {
      return this[$getPropertyValue]("border-right-style");
    }
    set borderRightStyle(value) {
      this[$setProperty]("border-right-style", value, "");
    }
    get borderRightWidth() {
      return this[$getPropertyValue]("border-right-width");
    }
    set borderRightWidth(value) {
      this[$setProperty]("border-right-width", value, "");
    }
    get borderSpacing() {
      return this[$getPropertyValue]("border-spacing");
    }
    set borderSpacing(value) {
      this[$setProperty]("border-spacing", value, "");
    }
    get borderStart() {
      return this[$getPropertyValue]("border-start");
    }
    set borderStart(value) {
      this[$setProperty]("border-start", value, "");
    }
    get borderStartColor() {
      return this[$getPropertyValue]("border-start-color");
    }
    set borderStartColor(value) {
      this[$setProperty]("border-start-color", value, "");
    }
    get borderStartStyle() {
      return this[$getPropertyValue]("border-start-style");
    }
    set borderStartStyle(value) {
      this[$setProperty]("border-start-style", value, "");
    }
    get borderStartWidth() {
      return this[$getPropertyValue]("border-start-width");
    }
    set borderStartWidth(value) {
      this[$setProperty]("border-start-width", value, "");
    }
    get borderStyle() {
      return this[$getPropertyValue]("border-style");
    }
    set borderStyle(value) {
      this[$setProperty]("border-style", value, "");
    }
    get borderTop() {
      return this[$getPropertyValue]("border-top");
    }
    set borderTop(value) {
      this[$setProperty]("border-top", value, "");
    }
    get borderTopColor() {
      return this[$getPropertyValue]("border-top-color");
    }
    set borderTopColor(value) {
      this[$setProperty]("border-top-color", value, "");
    }
    get borderTopLeftRadius() {
      return this[$getPropertyValue]("border-top-left-radius");
    }
    set borderTopLeftRadius(value) {
      this[$setProperty]("border-top-left-radius", value, "");
    }
    get borderTopRightRadius() {
      return this[$getPropertyValue]("border-top-right-radius");
    }
    set borderTopRightRadius(value) {
      this[$setProperty]("border-top-right-radius", value, "");
    }
    get borderTopStyle() {
      return this[$getPropertyValue]("border-top-style");
    }
    set borderTopStyle(value) {
      this[$setProperty]("border-top-style", value, "");
    }
    get borderTopWidth() {
      return this[$getPropertyValue]("border-top-width");
    }
    set borderTopWidth(value) {
      this[$setProperty]("border-top-width", value, "");
    }
    get borderVerticalSpacing() {
      return this[$getPropertyValue]("border-vertical-spacing");
    }
    set borderVerticalSpacing(value) {
      this[$setProperty]("border-vertical-spacing", value, "");
    }
    get borderWidth() {
      return this[$getPropertyValue]("border-width");
    }
    set borderWidth(value) {
      this[$setProperty]("border-width", value, "");
    }
    get bottom() {
      return this[$getPropertyValue]("bottom");
    }
    set bottom(value) {
      this[$setProperty]("bottom", value, "");
    }
    get boxAlign() {
      return this[$getPropertyValue]("box-align");
    }
    set boxAlign(value) {
      this[$setProperty]("box-align", value, "");
    }
    get boxDecorationBreak() {
      return this[$getPropertyValue]("box-decoration-break");
    }
    set boxDecorationBreak(value) {
      this[$setProperty]("box-decoration-break", value, "");
    }
    get boxDirection() {
      return this[$getPropertyValue]("box-direction");
    }
    set boxDirection(value) {
      this[$setProperty]("box-direction", value, "");
    }
    get boxFlex() {
      return this[$getPropertyValue]("box-flex");
    }
    set boxFlex(value) {
      this[$setProperty]("box-flex", value, "");
    }
    get boxFlexGroup() {
      return this[$getPropertyValue]("box-flex-group");
    }
    set boxFlexGroup(value) {
      this[$setProperty]("box-flex-group", value, "");
    }
    get boxLines() {
      return this[$getPropertyValue]("box-lines");
    }
    set boxLines(value) {
      this[$setProperty]("box-lines", value, "");
    }
    get boxOrdinalGroup() {
      return this[$getPropertyValue]("box-ordinal-group");
    }
    set boxOrdinalGroup(value) {
      this[$setProperty]("box-ordinal-group", value, "");
    }
    get boxOrient() {
      return this[$getPropertyValue]("box-orient");
    }
    set boxOrient(value) {
      this[$setProperty]("box-orient", value, "");
    }
    get boxPack() {
      return this[$getPropertyValue]("box-pack");
    }
    set boxPack(value) {
      this[$setProperty]("box-pack", value, "");
    }
    get boxReflect() {
      return this[$getPropertyValue]("box-reflect");
    }
    set boxReflect(value) {
      this[$setProperty]("box-reflect", value, "");
    }
    get boxShadow() {
      return this[$getPropertyValue]("box-shadow");
    }
    set boxShadow(value) {
      this[$setProperty]("box-shadow", value, "");
    }
    get boxSizing() {
      return this[$getPropertyValue]("box-sizing");
    }
    set boxSizing(value) {
      this[$setProperty]("box-sizing", value, "");
    }
    get captionSide() {
      return this[$getPropertyValue]("caption-side");
    }
    set captionSide(value) {
      this[$setProperty]("caption-side", value, "");
    }
    get clear() {
      return this[$getPropertyValue]("clear");
    }
    set clear(value) {
      this[$setProperty]("clear", value, "");
    }
    get clip() {
      return this[$getPropertyValue]("clip");
    }
    set clip(value) {
      this[$setProperty]("clip", value, "");
    }
    get clipPath() {
      return this[$getPropertyValue]("clip-path");
    }
    set clipPath(value) {
      this[$setProperty]("clip-path", value, "");
    }
    get color() {
      return this[$getPropertyValue]("color");
    }
    set color(value) {
      this[$setProperty]("color", value, "");
    }
    get columnBreakAfter() {
      return this[$getPropertyValue]("column-break-after");
    }
    set columnBreakAfter(value) {
      this[$setProperty]("column-break-after", value, "");
    }
    get columnBreakBefore() {
      return this[$getPropertyValue]("column-break-before");
    }
    set columnBreakBefore(value) {
      this[$setProperty]("column-break-before", value, "");
    }
    get columnBreakInside() {
      return this[$getPropertyValue]("column-break-inside");
    }
    set columnBreakInside(value) {
      this[$setProperty]("column-break-inside", value, "");
    }
    get columnCount() {
      return this[$getPropertyValue]("column-count");
    }
    set columnCount(value) {
      this[$setProperty]("column-count", value, "");
    }
    get columnFill() {
      return this[$getPropertyValue]("column-fill");
    }
    set columnFill(value) {
      this[$setProperty]("column-fill", value, "");
    }
    get columnGap() {
      return this[$getPropertyValue]("column-gap");
    }
    set columnGap(value) {
      this[$setProperty]("column-gap", value, "");
    }
    get columnRule() {
      return this[$getPropertyValue]("column-rule");
    }
    set columnRule(value) {
      this[$setProperty]("column-rule", value, "");
    }
    get columnRuleColor() {
      return this[$getPropertyValue]("column-rule-color");
    }
    set columnRuleColor(value) {
      this[$setProperty]("column-rule-color", value, "");
    }
    get columnRuleStyle() {
      return this[$getPropertyValue]("column-rule-style");
    }
    set columnRuleStyle(value) {
      this[$setProperty]("column-rule-style", value, "");
    }
    get columnRuleWidth() {
      return this[$getPropertyValue]("column-rule-width");
    }
    set columnRuleWidth(value) {
      this[$setProperty]("column-rule-width", value, "");
    }
    get columnSpan() {
      return this[$getPropertyValue]("column-span");
    }
    set columnSpan(value) {
      this[$setProperty]("column-span", value, "");
    }
    get columnWidth() {
      return this[$getPropertyValue]("column-width");
    }
    set columnWidth(value) {
      this[$setProperty]("column-width", value, "");
    }
    get columns() {
      return this[$getPropertyValue]("columns");
    }
    set columns(value) {
      this[$setProperty]("columns", value, "");
    }
    get content() {
      return this[$getPropertyValue]("content");
    }
    set content(value) {
      this[$setProperty]("content", value, "");
    }
    get counterIncrement() {
      return this[$getPropertyValue]("counter-increment");
    }
    set counterIncrement(value) {
      this[$setProperty]("counter-increment", value, "");
    }
    get counterReset() {
      return this[$getPropertyValue]("counter-reset");
    }
    set counterReset(value) {
      this[$setProperty]("counter-reset", value, "");
    }
    get cursor() {
      return this[$getPropertyValue]("cursor");
    }
    set cursor(value) {
      this[$setProperty]("cursor", value, "");
    }
    get direction() {
      return this[$getPropertyValue]("direction");
    }
    set direction(value) {
      this[$setProperty]("direction", value, "");
    }
    get display() {
      return this[$getPropertyValue]("display");
    }
    set display(value) {
      this[$setProperty]("display", value, "");
    }
    get emptyCells() {
      return this[$getPropertyValue]("empty-cells");
    }
    set emptyCells(value) {
      this[$setProperty]("empty-cells", value, "");
    }
    get filter() {
      return this[$getPropertyValue]("filter");
    }
    set filter(value) {
      this[$setProperty]("filter", value, "");
    }
    get flex() {
      return this[$getPropertyValue]("flex");
    }
    set flex(value) {
      this[$setProperty]("flex", value, "");
    }
    get flexBasis() {
      return this[$getPropertyValue]("flex-basis");
    }
    set flexBasis(value) {
      this[$setProperty]("flex-basis", value, "");
    }
    get flexDirection() {
      return this[$getPropertyValue]("flex-direction");
    }
    set flexDirection(value) {
      this[$setProperty]("flex-direction", value, "");
    }
    get flexFlow() {
      return this[$getPropertyValue]("flex-flow");
    }
    set flexFlow(value) {
      this[$setProperty]("flex-flow", value, "");
    }
    get flexGrow() {
      return this[$getPropertyValue]("flex-grow");
    }
    set flexGrow(value) {
      this[$setProperty]("flex-grow", value, "");
    }
    get flexShrink() {
      return this[$getPropertyValue]("flex-shrink");
    }
    set flexShrink(value) {
      this[$setProperty]("flex-shrink", value, "");
    }
    get flexWrap() {
      return this[$getPropertyValue]("flex-wrap");
    }
    set flexWrap(value) {
      this[$setProperty]("flex-wrap", value, "");
    }
    get float() {
      return this[$getPropertyValue]("float");
    }
    set float(value) {
      this[$setProperty]("float", value, "");
    }
    get font() {
      return this[$getPropertyValue]("font");
    }
    set font(value) {
      this[$setProperty]("font", value, "");
    }
    get fontFamily() {
      return this[$getPropertyValue]("font-family");
    }
    set fontFamily(value) {
      this[$setProperty]("font-family", value, "");
    }
    get fontFeatureSettings() {
      return this[$getPropertyValue]("font-feature-settings");
    }
    set fontFeatureSettings(value) {
      this[$setProperty]("font-feature-settings", value, "");
    }
    get fontKerning() {
      return this[$getPropertyValue]("font-kerning");
    }
    set fontKerning(value) {
      this[$setProperty]("font-kerning", value, "");
    }
    get fontSize() {
      return this[$getPropertyValue]("font-size");
    }
    set fontSize(value) {
      this[$setProperty]("font-size", value, "");
    }
    get fontSizeDelta() {
      return this[$getPropertyValue]("font-size-delta");
    }
    set fontSizeDelta(value) {
      this[$setProperty]("font-size-delta", value, "");
    }
    get fontSmoothing() {
      return this[$getPropertyValue]("font-smoothing");
    }
    set fontSmoothing(value) {
      this[$setProperty]("font-smoothing", value, "");
    }
    get fontStretch() {
      return this[$getPropertyValue]("font-stretch");
    }
    set fontStretch(value) {
      this[$setProperty]("font-stretch", value, "");
    }
    get fontStyle() {
      return this[$getPropertyValue]("font-style");
    }
    set fontStyle(value) {
      this[$setProperty]("font-style", value, "");
    }
    get fontVariant() {
      return this[$getPropertyValue]("font-variant");
    }
    set fontVariant(value) {
      this[$setProperty]("font-variant", value, "");
    }
    get fontVariantLigatures() {
      return this[$getPropertyValue]("font-variant-ligatures");
    }
    set fontVariantLigatures(value) {
      this[$setProperty]("font-variant-ligatures", value, "");
    }
    get fontWeight() {
      return this[$getPropertyValue]("font-weight");
    }
    set fontWeight(value) {
      this[$setProperty]("font-weight", value, "");
    }
    get grid() {
      return this[$getPropertyValue]("grid");
    }
    set grid(value) {
      this[$setProperty]("grid", value, "");
    }
    get gridArea() {
      return this[$getPropertyValue]("grid-area");
    }
    set gridArea(value) {
      this[$setProperty]("grid-area", value, "");
    }
    get gridAutoColumns() {
      return this[$getPropertyValue]("grid-auto-columns");
    }
    set gridAutoColumns(value) {
      this[$setProperty]("grid-auto-columns", value, "");
    }
    get gridAutoFlow() {
      return this[$getPropertyValue]("grid-auto-flow");
    }
    set gridAutoFlow(value) {
      this[$setProperty]("grid-auto-flow", value, "");
    }
    get gridAutoRows() {
      return this[$getPropertyValue]("grid-auto-rows");
    }
    set gridAutoRows(value) {
      this[$setProperty]("grid-auto-rows", value, "");
    }
    get gridColumn() {
      return this[$getPropertyValue]("grid-column");
    }
    set gridColumn(value) {
      this[$setProperty]("grid-column", value, "");
    }
    get gridColumnEnd() {
      return this[$getPropertyValue]("grid-column-end");
    }
    set gridColumnEnd(value) {
      this[$setProperty]("grid-column-end", value, "");
    }
    get gridColumnStart() {
      return this[$getPropertyValue]("grid-column-start");
    }
    set gridColumnStart(value) {
      this[$setProperty]("grid-column-start", value, "");
    }
    get gridRow() {
      return this[$getPropertyValue]("grid-row");
    }
    set gridRow(value) {
      this[$setProperty]("grid-row", value, "");
    }
    get gridRowEnd() {
      return this[$getPropertyValue]("grid-row-end");
    }
    set gridRowEnd(value) {
      this[$setProperty]("grid-row-end", value, "");
    }
    get gridRowStart() {
      return this[$getPropertyValue]("grid-row-start");
    }
    set gridRowStart(value) {
      this[$setProperty]("grid-row-start", value, "");
    }
    get gridTemplate() {
      return this[$getPropertyValue]("grid-template");
    }
    set gridTemplate(value) {
      this[$setProperty]("grid-template", value, "");
    }
    get gridTemplateAreas() {
      return this[$getPropertyValue]("grid-template-areas");
    }
    set gridTemplateAreas(value) {
      this[$setProperty]("grid-template-areas", value, "");
    }
    get gridTemplateColumns() {
      return this[$getPropertyValue]("grid-template-columns");
    }
    set gridTemplateColumns(value) {
      this[$setProperty]("grid-template-columns", value, "");
    }
    get gridTemplateRows() {
      return this[$getPropertyValue]("grid-template-rows");
    }
    set gridTemplateRows(value) {
      this[$setProperty]("grid-template-rows", value, "");
    }
    get height() {
      return this[$getPropertyValue]("height");
    }
    set height(value) {
      this[$setProperty]("height", value, "");
    }
    get highlight() {
      return this[$getPropertyValue]("highlight");
    }
    set highlight(value) {
      this[$setProperty]("highlight", value, "");
    }
    get hyphenateCharacter() {
      return this[$getPropertyValue]("hyphenate-character");
    }
    set hyphenateCharacter(value) {
      this[$setProperty]("hyphenate-character", value, "");
    }
    get imageRendering() {
      return this[$getPropertyValue]("image-rendering");
    }
    set imageRendering(value) {
      this[$setProperty]("image-rendering", value, "");
    }
    get isolation() {
      return this[$getPropertyValue]("isolation");
    }
    set isolation(value) {
      this[$setProperty]("isolation", value, "");
    }
    get justifyContent() {
      return this[$getPropertyValue]("justify-content");
    }
    set justifyContent(value) {
      this[$setProperty]("justify-content", value, "");
    }
    get justifySelf() {
      return this[$getPropertyValue]("justify-self");
    }
    set justifySelf(value) {
      this[$setProperty]("justify-self", value, "");
    }
    get left() {
      return this[$getPropertyValue]("left");
    }
    set left(value) {
      this[$setProperty]("left", value, "");
    }
    get letterSpacing() {
      return this[$getPropertyValue]("letter-spacing");
    }
    set letterSpacing(value) {
      this[$setProperty]("letter-spacing", value, "");
    }
    get lineBoxContain() {
      return this[$getPropertyValue]("line-box-contain");
    }
    set lineBoxContain(value) {
      this[$setProperty]("line-box-contain", value, "");
    }
    get lineBreak() {
      return this[$getPropertyValue]("line-break");
    }
    set lineBreak(value) {
      this[$setProperty]("line-break", value, "");
    }
    get lineClamp() {
      return this[$getPropertyValue]("line-clamp");
    }
    set lineClamp(value) {
      this[$setProperty]("line-clamp", value, "");
    }
    get lineHeight() {
      return this[$getPropertyValue]("line-height");
    }
    set lineHeight(value) {
      this[$setProperty]("line-height", value, "");
    }
    get listStyle() {
      return this[$getPropertyValue]("list-style");
    }
    set listStyle(value) {
      this[$setProperty]("list-style", value, "");
    }
    get listStyleImage() {
      return this[$getPropertyValue]("list-style-image");
    }
    set listStyleImage(value) {
      this[$setProperty]("list-style-image", value, "");
    }
    get listStylePosition() {
      return this[$getPropertyValue]("list-style-position");
    }
    set listStylePosition(value) {
      this[$setProperty]("list-style-position", value, "");
    }
    get listStyleType() {
      return this[$getPropertyValue]("list-style-type");
    }
    set listStyleType(value) {
      this[$setProperty]("list-style-type", value, "");
    }
    get locale() {
      return this[$getPropertyValue]("locale");
    }
    set locale(value) {
      this[$setProperty]("locale", value, "");
    }
    get logicalHeight() {
      return this[$getPropertyValue]("logical-height");
    }
    set logicalHeight(value) {
      this[$setProperty]("logical-height", value, "");
    }
    get logicalWidth() {
      return this[$getPropertyValue]("logical-width");
    }
    set logicalWidth(value) {
      this[$setProperty]("logical-width", value, "");
    }
    get margin() {
      return this[$getPropertyValue]("margin");
    }
    set margin(value) {
      this[$setProperty]("margin", value, "");
    }
    get marginAfter() {
      return this[$getPropertyValue]("margin-after");
    }
    set marginAfter(value) {
      this[$setProperty]("margin-after", value, "");
    }
    get marginAfterCollapse() {
      return this[$getPropertyValue]("margin-after-collapse");
    }
    set marginAfterCollapse(value) {
      this[$setProperty]("margin-after-collapse", value, "");
    }
    get marginBefore() {
      return this[$getPropertyValue]("margin-before");
    }
    set marginBefore(value) {
      this[$setProperty]("margin-before", value, "");
    }
    get marginBeforeCollapse() {
      return this[$getPropertyValue]("margin-before-collapse");
    }
    set marginBeforeCollapse(value) {
      this[$setProperty]("margin-before-collapse", value, "");
    }
    get marginBottom() {
      return this[$getPropertyValue]("margin-bottom");
    }
    set marginBottom(value) {
      this[$setProperty]("margin-bottom", value, "");
    }
    get marginBottomCollapse() {
      return this[$getPropertyValue]("margin-bottom-collapse");
    }
    set marginBottomCollapse(value) {
      this[$setProperty]("margin-bottom-collapse", value, "");
    }
    get marginCollapse() {
      return this[$getPropertyValue]("margin-collapse");
    }
    set marginCollapse(value) {
      this[$setProperty]("margin-collapse", value, "");
    }
    get marginEnd() {
      return this[$getPropertyValue]("margin-end");
    }
    set marginEnd(value) {
      this[$setProperty]("margin-end", value, "");
    }
    get marginLeft() {
      return this[$getPropertyValue]("margin-left");
    }
    set marginLeft(value) {
      this[$setProperty]("margin-left", value, "");
    }
    get marginRight() {
      return this[$getPropertyValue]("margin-right");
    }
    set marginRight(value) {
      this[$setProperty]("margin-right", value, "");
    }
    get marginStart() {
      return this[$getPropertyValue]("margin-start");
    }
    set marginStart(value) {
      this[$setProperty]("margin-start", value, "");
    }
    get marginTop() {
      return this[$getPropertyValue]("margin-top");
    }
    set marginTop(value) {
      this[$setProperty]("margin-top", value, "");
    }
    get marginTopCollapse() {
      return this[$getPropertyValue]("margin-top-collapse");
    }
    set marginTopCollapse(value) {
      this[$setProperty]("margin-top-collapse", value, "");
    }
    get mask() {
      return this[$getPropertyValue]("mask");
    }
    set mask(value) {
      this[$setProperty]("mask", value, "");
    }
    get maskBoxImage() {
      return this[$getPropertyValue]("mask-box-image");
    }
    set maskBoxImage(value) {
      this[$setProperty]("mask-box-image", value, "");
    }
    get maskBoxImageOutset() {
      return this[$getPropertyValue]("mask-box-image-outset");
    }
    set maskBoxImageOutset(value) {
      this[$setProperty]("mask-box-image-outset", value, "");
    }
    get maskBoxImageRepeat() {
      return this[$getPropertyValue]("mask-box-image-repeat");
    }
    set maskBoxImageRepeat(value) {
      this[$setProperty]("mask-box-image-repeat", value, "");
    }
    get maskBoxImageSlice() {
      return this[$getPropertyValue]("mask-box-image-slice");
    }
    set maskBoxImageSlice(value) {
      this[$setProperty]("mask-box-image-slice", value, "");
    }
    get maskBoxImageSource() {
      return this[$getPropertyValue]("mask-box-image-source");
    }
    set maskBoxImageSource(value) {
      this[$setProperty]("mask-box-image-source", value, "");
    }
    get maskBoxImageWidth() {
      return this[$getPropertyValue]("mask-box-image-width");
    }
    set maskBoxImageWidth(value) {
      this[$setProperty]("mask-box-image-width", value, "");
    }
    get maskClip() {
      return this[$getPropertyValue]("mask-clip");
    }
    set maskClip(value) {
      this[$setProperty]("mask-clip", value, "");
    }
    get maskComposite() {
      return this[$getPropertyValue]("mask-composite");
    }
    set maskComposite(value) {
      this[$setProperty]("mask-composite", value, "");
    }
    get maskImage() {
      return this[$getPropertyValue]("mask-image");
    }
    set maskImage(value) {
      this[$setProperty]("mask-image", value, "");
    }
    get maskOrigin() {
      return this[$getPropertyValue]("mask-origin");
    }
    set maskOrigin(value) {
      this[$setProperty]("mask-origin", value, "");
    }
    get maskPosition() {
      return this[$getPropertyValue]("mask-position");
    }
    set maskPosition(value) {
      this[$setProperty]("mask-position", value, "");
    }
    get maskPositionX() {
      return this[$getPropertyValue]("mask-position-x");
    }
    set maskPositionX(value) {
      this[$setProperty]("mask-position-x", value, "");
    }
    get maskPositionY() {
      return this[$getPropertyValue]("mask-position-y");
    }
    set maskPositionY(value) {
      this[$setProperty]("mask-position-y", value, "");
    }
    get maskRepeat() {
      return this[$getPropertyValue]("mask-repeat");
    }
    set maskRepeat(value) {
      this[$setProperty]("mask-repeat", value, "");
    }
    get maskRepeatX() {
      return this[$getPropertyValue]("mask-repeat-x");
    }
    set maskRepeatX(value) {
      this[$setProperty]("mask-repeat-x", value, "");
    }
    get maskRepeatY() {
      return this[$getPropertyValue]("mask-repeat-y");
    }
    set maskRepeatY(value) {
      this[$setProperty]("mask-repeat-y", value, "");
    }
    get maskSize() {
      return this[$getPropertyValue]("mask-size");
    }
    set maskSize(value) {
      this[$setProperty]("mask-size", value, "");
    }
    get maskSourceType() {
      return this[$getPropertyValue]("mask-source-type");
    }
    set maskSourceType(value) {
      this[$setProperty]("mask-source-type", value, "");
    }
    get maxHeight() {
      return this[$getPropertyValue]("max-height");
    }
    set maxHeight(value) {
      this[$setProperty]("max-height", value, "");
    }
    get maxLogicalHeight() {
      return this[$getPropertyValue]("max-logical-height");
    }
    set maxLogicalHeight(value) {
      this[$setProperty]("max-logical-height", value, "");
    }
    get maxLogicalWidth() {
      return this[$getPropertyValue]("max-logical-width");
    }
    set maxLogicalWidth(value) {
      this[$setProperty]("max-logical-width", value, "");
    }
    get maxWidth() {
      return this[$getPropertyValue]("max-width");
    }
    set maxWidth(value) {
      this[$setProperty]("max-width", value, "");
    }
    get maxZoom() {
      return this[$getPropertyValue]("max-zoom");
    }
    set maxZoom(value) {
      this[$setProperty]("max-zoom", value, "");
    }
    get minHeight() {
      return this[$getPropertyValue]("min-height");
    }
    set minHeight(value) {
      this[$setProperty]("min-height", value, "");
    }
    get minLogicalHeight() {
      return this[$getPropertyValue]("min-logical-height");
    }
    set minLogicalHeight(value) {
      this[$setProperty]("min-logical-height", value, "");
    }
    get minLogicalWidth() {
      return this[$getPropertyValue]("min-logical-width");
    }
    set minLogicalWidth(value) {
      this[$setProperty]("min-logical-width", value, "");
    }
    get minWidth() {
      return this[$getPropertyValue]("min-width");
    }
    set minWidth(value) {
      this[$setProperty]("min-width", value, "");
    }
    get minZoom() {
      return this[$getPropertyValue]("min-zoom");
    }
    set minZoom(value) {
      this[$setProperty]("min-zoom", value, "");
    }
    get mixBlendMode() {
      return this[$getPropertyValue]("mix-blend-mode");
    }
    set mixBlendMode(value) {
      this[$setProperty]("mix-blend-mode", value, "");
    }
    get objectFit() {
      return this[$getPropertyValue]("object-fit");
    }
    set objectFit(value) {
      this[$setProperty]("object-fit", value, "");
    }
    get objectPosition() {
      return this[$getPropertyValue]("object-position");
    }
    set objectPosition(value) {
      this[$setProperty]("object-position", value, "");
    }
    get opacity() {
      return this[$getPropertyValue]("opacity");
    }
    set opacity(value) {
      this[$setProperty]("opacity", value, "");
    }
    get order() {
      return this[$getPropertyValue]("order");
    }
    set order(value) {
      this[$setProperty]("order", value, "");
    }
    get orientation() {
      return this[$getPropertyValue]("orientation");
    }
    set orientation(value) {
      this[$setProperty]("orientation", value, "");
    }
    get orphans() {
      return this[$getPropertyValue]("orphans");
    }
    set orphans(value) {
      this[$setProperty]("orphans", value, "");
    }
    get outline() {
      return this[$getPropertyValue]("outline");
    }
    set outline(value) {
      this[$setProperty]("outline", value, "");
    }
    get outlineColor() {
      return this[$getPropertyValue]("outline-color");
    }
    set outlineColor(value) {
      this[$setProperty]("outline-color", value, "");
    }
    get outlineOffset() {
      return this[$getPropertyValue]("outline-offset");
    }
    set outlineOffset(value) {
      this[$setProperty]("outline-offset", value, "");
    }
    get outlineStyle() {
      return this[$getPropertyValue]("outline-style");
    }
    set outlineStyle(value) {
      this[$setProperty]("outline-style", value, "");
    }
    get outlineWidth() {
      return this[$getPropertyValue]("outline-width");
    }
    set outlineWidth(value) {
      this[$setProperty]("outline-width", value, "");
    }
    get overflow() {
      return this[$getPropertyValue]("overflow");
    }
    set overflow(value) {
      this[$setProperty]("overflow", value, "");
    }
    get overflowWrap() {
      return this[$getPropertyValue]("overflow-wrap");
    }
    set overflowWrap(value) {
      this[$setProperty]("overflow-wrap", value, "");
    }
    get overflowX() {
      return this[$getPropertyValue]("overflow-x");
    }
    set overflowX(value) {
      this[$setProperty]("overflow-x", value, "");
    }
    get overflowY() {
      return this[$getPropertyValue]("overflow-y");
    }
    set overflowY(value) {
      this[$setProperty]("overflow-y", value, "");
    }
    get padding() {
      return this[$getPropertyValue]("padding");
    }
    set padding(value) {
      this[$setProperty]("padding", value, "");
    }
    get paddingAfter() {
      return this[$getPropertyValue]("padding-after");
    }
    set paddingAfter(value) {
      this[$setProperty]("padding-after", value, "");
    }
    get paddingBefore() {
      return this[$getPropertyValue]("padding-before");
    }
    set paddingBefore(value) {
      this[$setProperty]("padding-before", value, "");
    }
    get paddingBottom() {
      return this[$getPropertyValue]("padding-bottom");
    }
    set paddingBottom(value) {
      this[$setProperty]("padding-bottom", value, "");
    }
    get paddingEnd() {
      return this[$getPropertyValue]("padding-end");
    }
    set paddingEnd(value) {
      this[$setProperty]("padding-end", value, "");
    }
    get paddingLeft() {
      return this[$getPropertyValue]("padding-left");
    }
    set paddingLeft(value) {
      this[$setProperty]("padding-left", value, "");
    }
    get paddingRight() {
      return this[$getPropertyValue]("padding-right");
    }
    set paddingRight(value) {
      this[$setProperty]("padding-right", value, "");
    }
    get paddingStart() {
      return this[$getPropertyValue]("padding-start");
    }
    set paddingStart(value) {
      this[$setProperty]("padding-start", value, "");
    }
    get paddingTop() {
      return this[$getPropertyValue]("padding-top");
    }
    set paddingTop(value) {
      this[$setProperty]("padding-top", value, "");
    }
    get page() {
      return this[$getPropertyValue]("page");
    }
    set page(value) {
      this[$setProperty]("page", value, "");
    }
    get pageBreakAfter() {
      return this[$getPropertyValue]("page-break-after");
    }
    set pageBreakAfter(value) {
      this[$setProperty]("page-break-after", value, "");
    }
    get pageBreakBefore() {
      return this[$getPropertyValue]("page-break-before");
    }
    set pageBreakBefore(value) {
      this[$setProperty]("page-break-before", value, "");
    }
    get pageBreakInside() {
      return this[$getPropertyValue]("page-break-inside");
    }
    set pageBreakInside(value) {
      this[$setProperty]("page-break-inside", value, "");
    }
    get perspective() {
      return this[$getPropertyValue]("perspective");
    }
    set perspective(value) {
      this[$setProperty]("perspective", value, "");
    }
    get perspectiveOrigin() {
      return this[$getPropertyValue]("perspective-origin");
    }
    set perspectiveOrigin(value) {
      this[$setProperty]("perspective-origin", value, "");
    }
    get perspectiveOriginX() {
      return this[$getPropertyValue]("perspective-origin-x");
    }
    set perspectiveOriginX(value) {
      this[$setProperty]("perspective-origin-x", value, "");
    }
    get perspectiveOriginY() {
      return this[$getPropertyValue]("perspective-origin-y");
    }
    set perspectiveOriginY(value) {
      this[$setProperty]("perspective-origin-y", value, "");
    }
    get pointerEvents() {
      return this[$getPropertyValue]("pointer-events");
    }
    set pointerEvents(value) {
      this[$setProperty]("pointer-events", value, "");
    }
    get position() {
      return this[$getPropertyValue]("position");
    }
    set position(value) {
      this[$setProperty]("position", value, "");
    }
    get printColorAdjust() {
      return this[$getPropertyValue]("print-color-adjust");
    }
    set printColorAdjust(value) {
      this[$setProperty]("print-color-adjust", value, "");
    }
    get quotes() {
      return this[$getPropertyValue]("quotes");
    }
    set quotes(value) {
      this[$setProperty]("quotes", value, "");
    }
    get resize() {
      return this[$getPropertyValue]("resize");
    }
    set resize(value) {
      this[$setProperty]("resize", value, "");
    }
    get right() {
      return this[$getPropertyValue]("right");
    }
    set right(value) {
      this[$setProperty]("right", value, "");
    }
    get rtlOrdering() {
      return this[$getPropertyValue]("rtl-ordering");
    }
    set rtlOrdering(value) {
      this[$setProperty]("rtl-ordering", value, "");
    }
    get rubyPosition() {
      return this[$getPropertyValue]("ruby-position");
    }
    set rubyPosition(value) {
      this[$setProperty]("ruby-position", value, "");
    }
    get scrollBehavior() {
      return this[$getPropertyValue]("scroll-behavior");
    }
    set scrollBehavior(value) {
      this[$setProperty]("scroll-behavior", value, "");
    }
    get shapeImageThreshold() {
      return this[$getPropertyValue]("shape-image-threshold");
    }
    set shapeImageThreshold(value) {
      this[$setProperty]("shape-image-threshold", value, "");
    }
    get shapeMargin() {
      return this[$getPropertyValue]("shape-margin");
    }
    set shapeMargin(value) {
      this[$setProperty]("shape-margin", value, "");
    }
    get shapeOutside() {
      return this[$getPropertyValue]("shape-outside");
    }
    set shapeOutside(value) {
      this[$setProperty]("shape-outside", value, "");
    }
    get size() {
      return this[$getPropertyValue]("size");
    }
    set size(value) {
      this[$setProperty]("size", value, "");
    }
    get speak() {
      return this[$getPropertyValue]("speak");
    }
    set speak(value) {
      this[$setProperty]("speak", value, "");
    }
    get src() {
      return this[$getPropertyValue]("src");
    }
    set src(value) {
      this[$setProperty]("src", value, "");
    }
    get tabSize() {
      return this[$getPropertyValue]("tab-size");
    }
    set tabSize(value) {
      this[$setProperty]("tab-size", value, "");
    }
    get tableLayout() {
      return this[$getPropertyValue]("table-layout");
    }
    set tableLayout(value) {
      this[$setProperty]("table-layout", value, "");
    }
    get tapHighlightColor() {
      return this[$getPropertyValue]("tap-highlight-color");
    }
    set tapHighlightColor(value) {
      this[$setProperty]("tap-highlight-color", value, "");
    }
    get textAlign() {
      return this[$getPropertyValue]("text-align");
    }
    set textAlign(value) {
      this[$setProperty]("text-align", value, "");
    }
    get textAlignLast() {
      return this[$getPropertyValue]("text-align-last");
    }
    set textAlignLast(value) {
      this[$setProperty]("text-align-last", value, "");
    }
    get textCombine() {
      return this[$getPropertyValue]("text-combine");
    }
    set textCombine(value) {
      this[$setProperty]("text-combine", value, "");
    }
    get textDecoration() {
      return this[$getPropertyValue]("text-decoration");
    }
    set textDecoration(value) {
      this[$setProperty]("text-decoration", value, "");
    }
    get textDecorationColor() {
      return this[$getPropertyValue]("text-decoration-color");
    }
    set textDecorationColor(value) {
      this[$setProperty]("text-decoration-color", value, "");
    }
    get textDecorationLine() {
      return this[$getPropertyValue]("text-decoration-line");
    }
    set textDecorationLine(value) {
      this[$setProperty]("text-decoration-line", value, "");
    }
    get textDecorationStyle() {
      return this[$getPropertyValue]("text-decoration-style");
    }
    set textDecorationStyle(value) {
      this[$setProperty]("text-decoration-style", value, "");
    }
    get textDecorationsInEffect() {
      return this[$getPropertyValue]("text-decorations-in-effect");
    }
    set textDecorationsInEffect(value) {
      this[$setProperty]("text-decorations-in-effect", value, "");
    }
    get textEmphasis() {
      return this[$getPropertyValue]("text-emphasis");
    }
    set textEmphasis(value) {
      this[$setProperty]("text-emphasis", value, "");
    }
    get textEmphasisColor() {
      return this[$getPropertyValue]("text-emphasis-color");
    }
    set textEmphasisColor(value) {
      this[$setProperty]("text-emphasis-color", value, "");
    }
    get textEmphasisPosition() {
      return this[$getPropertyValue]("text-emphasis-position");
    }
    set textEmphasisPosition(value) {
      this[$setProperty]("text-emphasis-position", value, "");
    }
    get textEmphasisStyle() {
      return this[$getPropertyValue]("text-emphasis-style");
    }
    set textEmphasisStyle(value) {
      this[$setProperty]("text-emphasis-style", value, "");
    }
    get textFillColor() {
      return this[$getPropertyValue]("text-fill-color");
    }
    set textFillColor(value) {
      this[$setProperty]("text-fill-color", value, "");
    }
    get textIndent() {
      return this[$getPropertyValue]("text-indent");
    }
    set textIndent(value) {
      this[$setProperty]("text-indent", value, "");
    }
    get textJustify() {
      return this[$getPropertyValue]("text-justify");
    }
    set textJustify(value) {
      this[$setProperty]("text-justify", value, "");
    }
    get textLineThroughColor() {
      return this[$getPropertyValue]("text-line-through-color");
    }
    set textLineThroughColor(value) {
      this[$setProperty]("text-line-through-color", value, "");
    }
    get textLineThroughMode() {
      return this[$getPropertyValue]("text-line-through-mode");
    }
    set textLineThroughMode(value) {
      this[$setProperty]("text-line-through-mode", value, "");
    }
    get textLineThroughStyle() {
      return this[$getPropertyValue]("text-line-through-style");
    }
    set textLineThroughStyle(value) {
      this[$setProperty]("text-line-through-style", value, "");
    }
    get textLineThroughWidth() {
      return this[$getPropertyValue]("text-line-through-width");
    }
    set textLineThroughWidth(value) {
      this[$setProperty]("text-line-through-width", value, "");
    }
    get textOrientation() {
      return this[$getPropertyValue]("text-orientation");
    }
    set textOrientation(value) {
      this[$setProperty]("text-orientation", value, "");
    }
    get textOverflow() {
      return this[$getPropertyValue]("text-overflow");
    }
    set textOverflow(value) {
      this[$setProperty]("text-overflow", value, "");
    }
    get textOverlineColor() {
      return this[$getPropertyValue]("text-overline-color");
    }
    set textOverlineColor(value) {
      this[$setProperty]("text-overline-color", value, "");
    }
    get textOverlineMode() {
      return this[$getPropertyValue]("text-overline-mode");
    }
    set textOverlineMode(value) {
      this[$setProperty]("text-overline-mode", value, "");
    }
    get textOverlineStyle() {
      return this[$getPropertyValue]("text-overline-style");
    }
    set textOverlineStyle(value) {
      this[$setProperty]("text-overline-style", value, "");
    }
    get textOverlineWidth() {
      return this[$getPropertyValue]("text-overline-width");
    }
    set textOverlineWidth(value) {
      this[$setProperty]("text-overline-width", value, "");
    }
    get textRendering() {
      return this[$getPropertyValue]("text-rendering");
    }
    set textRendering(value) {
      this[$setProperty]("text-rendering", value, "");
    }
    get textSecurity() {
      return this[$getPropertyValue]("text-security");
    }
    set textSecurity(value) {
      this[$setProperty]("text-security", value, "");
    }
    get textShadow() {
      return this[$getPropertyValue]("text-shadow");
    }
    set textShadow(value) {
      this[$setProperty]("text-shadow", value, "");
    }
    get textStroke() {
      return this[$getPropertyValue]("text-stroke");
    }
    set textStroke(value) {
      this[$setProperty]("text-stroke", value, "");
    }
    get textStrokeColor() {
      return this[$getPropertyValue]("text-stroke-color");
    }
    set textStrokeColor(value) {
      this[$setProperty]("text-stroke-color", value, "");
    }
    get textStrokeWidth() {
      return this[$getPropertyValue]("text-stroke-width");
    }
    set textStrokeWidth(value) {
      this[$setProperty]("text-stroke-width", value, "");
    }
    get textTransform() {
      return this[$getPropertyValue]("text-transform");
    }
    set textTransform(value) {
      this[$setProperty]("text-transform", value, "");
    }
    get textUnderlineColor() {
      return this[$getPropertyValue]("text-underline-color");
    }
    set textUnderlineColor(value) {
      this[$setProperty]("text-underline-color", value, "");
    }
    get textUnderlineMode() {
      return this[$getPropertyValue]("text-underline-mode");
    }
    set textUnderlineMode(value) {
      this[$setProperty]("text-underline-mode", value, "");
    }
    get textUnderlinePosition() {
      return this[$getPropertyValue]("text-underline-position");
    }
    set textUnderlinePosition(value) {
      this[$setProperty]("text-underline-position", value, "");
    }
    get textUnderlineStyle() {
      return this[$getPropertyValue]("text-underline-style");
    }
    set textUnderlineStyle(value) {
      this[$setProperty]("text-underline-style", value, "");
    }
    get textUnderlineWidth() {
      return this[$getPropertyValue]("text-underline-width");
    }
    set textUnderlineWidth(value) {
      this[$setProperty]("text-underline-width", value, "");
    }
    get top() {
      return this[$getPropertyValue]("top");
    }
    set top(value) {
      this[$setProperty]("top", value, "");
    }
    get touchAction() {
      return this[$getPropertyValue]("touch-action");
    }
    set touchAction(value) {
      this[$setProperty]("touch-action", value, "");
    }
    get touchActionDelay() {
      return this[$getPropertyValue]("touch-action-delay");
    }
    set touchActionDelay(value) {
      this[$setProperty]("touch-action-delay", value, "");
    }
    get transform() {
      return this[$getPropertyValue]("transform");
    }
    set transform(value) {
      this[$setProperty]("transform", value, "");
    }
    get transformOrigin() {
      return this[$getPropertyValue]("transform-origin");
    }
    set transformOrigin(value) {
      this[$setProperty]("transform-origin", value, "");
    }
    get transformOriginX() {
      return this[$getPropertyValue]("transform-origin-x");
    }
    set transformOriginX(value) {
      this[$setProperty]("transform-origin-x", value, "");
    }
    get transformOriginY() {
      return this[$getPropertyValue]("transform-origin-y");
    }
    set transformOriginY(value) {
      this[$setProperty]("transform-origin-y", value, "");
    }
    get transformOriginZ() {
      return this[$getPropertyValue]("transform-origin-z");
    }
    set transformOriginZ(value) {
      this[$setProperty]("transform-origin-z", value, "");
    }
    get transformStyle() {
      return this[$getPropertyValue]("transform-style");
    }
    set transformStyle(value) {
      this[$setProperty]("transform-style", value, "");
    }
    get transition() {
      return this[$getPropertyValue]("transition");
    }
    set transition(value) {
      this[$setProperty]("transition", value, "");
    }
    get transitionDelay() {
      return this[$getPropertyValue]("transition-delay");
    }
    set transitionDelay(value) {
      this[$setProperty]("transition-delay", value, "");
    }
    get transitionDuration() {
      return this[$getPropertyValue]("transition-duration");
    }
    set transitionDuration(value) {
      this[$setProperty]("transition-duration", value, "");
    }
    get transitionProperty() {
      return this[$getPropertyValue]("transition-property");
    }
    set transitionProperty(value) {
      this[$setProperty]("transition-property", value, "");
    }
    get transitionTimingFunction() {
      return this[$getPropertyValue]("transition-timing-function");
    }
    set transitionTimingFunction(value) {
      this[$setProperty]("transition-timing-function", value, "");
    }
    get unicodeBidi() {
      return this[$getPropertyValue]("unicode-bidi");
    }
    set unicodeBidi(value) {
      this[$setProperty]("unicode-bidi", value, "");
    }
    get unicodeRange() {
      return this[$getPropertyValue]("unicode-range");
    }
    set unicodeRange(value) {
      this[$setProperty]("unicode-range", value, "");
    }
    get userDrag() {
      return this[$getPropertyValue]("user-drag");
    }
    set userDrag(value) {
      this[$setProperty]("user-drag", value, "");
    }
    get userModify() {
      return this[$getPropertyValue]("user-modify");
    }
    set userModify(value) {
      this[$setProperty]("user-modify", value, "");
    }
    get userSelect() {
      return this[$getPropertyValue]("user-select");
    }
    set userSelect(value) {
      this[$setProperty]("user-select", value, "");
    }
    get userZoom() {
      return this[$getPropertyValue]("user-zoom");
    }
    set userZoom(value) {
      this[$setProperty]("user-zoom", value, "");
    }
    get verticalAlign() {
      return this[$getPropertyValue]("vertical-align");
    }
    set verticalAlign(value) {
      this[$setProperty]("vertical-align", value, "");
    }
    get visibility() {
      return this[$getPropertyValue]("visibility");
    }
    set visibility(value) {
      this[$setProperty]("visibility", value, "");
    }
    get whiteSpace() {
      return this[$getPropertyValue]("white-space");
    }
    set whiteSpace(value) {
      this[$setProperty]("white-space", value, "");
    }
    get widows() {
      return this[$getPropertyValue]("widows");
    }
    set widows(value) {
      this[$setProperty]("widows", value, "");
    }
    get width() {
      return this[$getPropertyValue]("width");
    }
    set width(value) {
      this[$setProperty]("width", value, "");
    }
    get willChange() {
      return this[$getPropertyValue]("will-change");
    }
    set willChange(value) {
      this[$setProperty]("will-change", value, "");
    }
    get wordBreak() {
      return this[$getPropertyValue]("word-break");
    }
    set wordBreak(value) {
      this[$setProperty]("word-break", value, "");
    }
    get wordSpacing() {
      return this[$getPropertyValue]("word-spacing");
    }
    set wordSpacing(value) {
      this[$setProperty]("word-spacing", value, "");
    }
    get wordWrap() {
      return this[$getPropertyValue]("word-wrap");
    }
    set wordWrap(value) {
      this[$setProperty]("word-wrap", value, "");
    }
    get wrapFlow() {
      return this[$getPropertyValue]("wrap-flow");
    }
    set wrapFlow(value) {
      this[$setProperty]("wrap-flow", value, "");
    }
    get wrapThrough() {
      return this[$getPropertyValue]("wrap-through");
    }
    set wrapThrough(value) {
      this[$setProperty]("wrap-through", value, "");
    }
    get writingMode() {
      return this[$getPropertyValue]("writing-mode");
    }
    set writingMode(value) {
      this[$setProperty]("writing-mode", value, "");
    }
    get zIndex() {
      return this[$getPropertyValue]("z-index");
    }
    set zIndex(value) {
      this[$setProperty]("z-index", value, "");
    }
    get zoom() {
      return this[$getPropertyValue]("zoom");
    }
    set zoom(value) {
      this[$setProperty]("zoom", value, "");
    }
  };
  (html$.CssStyleDeclarationBase.new = function() {
  }).prototype = html$.CssStyleDeclarationBase.prototype;
  dart.addTypeTests(html$.CssStyleDeclarationBase);
  dart.setGetterSignature(html$.CssStyleDeclarationBase, () => ({
    __proto__: dart.getGetters(html$.CssStyleDeclarationBase.__proto__),
    alignContent: core.String,
    [$alignContent]: core.String,
    alignItems: core.String,
    [$alignItems]: core.String,
    alignSelf: core.String,
    [$alignSelf]: core.String,
    animation: core.String,
    [$animation]: core.String,
    animationDelay: core.String,
    [$animationDelay]: core.String,
    animationDirection: core.String,
    [$animationDirection]: core.String,
    animationDuration: core.String,
    [$animationDuration]: core.String,
    animationFillMode: core.String,
    [$animationFillMode]: core.String,
    animationIterationCount: core.String,
    [$animationIterationCount]: core.String,
    animationName: core.String,
    [$animationName]: core.String,
    animationPlayState: core.String,
    [$animationPlayState]: core.String,
    animationTimingFunction: core.String,
    [$animationTimingFunction]: core.String,
    appRegion: core.String,
    [$appRegion]: core.String,
    appearance: core.String,
    [$appearance]: core.String,
    aspectRatio: core.String,
    [$aspectRatio]: core.String,
    backfaceVisibility: core.String,
    [$backfaceVisibility]: core.String,
    background: core.String,
    [$background]: core.String,
    backgroundAttachment: core.String,
    [$backgroundAttachment]: core.String,
    backgroundBlendMode: core.String,
    [$backgroundBlendMode]: core.String,
    backgroundClip: core.String,
    [$backgroundClip]: core.String,
    backgroundColor: core.String,
    [$backgroundColor]: core.String,
    backgroundComposite: core.String,
    [$backgroundComposite]: core.String,
    backgroundImage: core.String,
    [$backgroundImage]: core.String,
    backgroundOrigin: core.String,
    [$backgroundOrigin]: core.String,
    backgroundPosition: core.String,
    [$backgroundPosition]: core.String,
    backgroundPositionX: core.String,
    [$backgroundPositionX]: core.String,
    backgroundPositionY: core.String,
    [$backgroundPositionY]: core.String,
    backgroundRepeat: core.String,
    [$backgroundRepeat]: core.String,
    backgroundRepeatX: core.String,
    [$backgroundRepeatX]: core.String,
    backgroundRepeatY: core.String,
    [$backgroundRepeatY]: core.String,
    backgroundSize: core.String,
    [$backgroundSize]: core.String,
    border: core.String,
    [$border]: core.String,
    borderAfter: core.String,
    [$borderAfter]: core.String,
    borderAfterColor: core.String,
    [$borderAfterColor]: core.String,
    borderAfterStyle: core.String,
    [$borderAfterStyle]: core.String,
    borderAfterWidth: core.String,
    [$borderAfterWidth]: core.String,
    borderBefore: core.String,
    [$borderBefore]: core.String,
    borderBeforeColor: core.String,
    [$borderBeforeColor]: core.String,
    borderBeforeStyle: core.String,
    [$borderBeforeStyle]: core.String,
    borderBeforeWidth: core.String,
    [$borderBeforeWidth]: core.String,
    borderBottom: core.String,
    [$borderBottom]: core.String,
    borderBottomColor: core.String,
    [$borderBottomColor]: core.String,
    borderBottomLeftRadius: core.String,
    [$borderBottomLeftRadius]: core.String,
    borderBottomRightRadius: core.String,
    [$borderBottomRightRadius]: core.String,
    borderBottomStyle: core.String,
    [$borderBottomStyle]: core.String,
    borderBottomWidth: core.String,
    [$borderBottomWidth]: core.String,
    borderCollapse: core.String,
    [$borderCollapse]: core.String,
    borderColor: core.String,
    [$borderColor]: core.String,
    borderEnd: core.String,
    [$borderEnd]: core.String,
    borderEndColor: core.String,
    [$borderEndColor]: core.String,
    borderEndStyle: core.String,
    [$borderEndStyle]: core.String,
    borderEndWidth: core.String,
    [$borderEndWidth]: core.String,
    borderFit: core.String,
    [$borderFit]: core.String,
    borderHorizontalSpacing: core.String,
    [$borderHorizontalSpacing]: core.String,
    borderImage: core.String,
    [$borderImage]: core.String,
    borderImageOutset: core.String,
    [$borderImageOutset]: core.String,
    borderImageRepeat: core.String,
    [$borderImageRepeat]: core.String,
    borderImageSlice: core.String,
    [$borderImageSlice]: core.String,
    borderImageSource: core.String,
    [$borderImageSource]: core.String,
    borderImageWidth: core.String,
    [$borderImageWidth]: core.String,
    borderLeft: core.String,
    [$borderLeft]: core.String,
    borderLeftColor: core.String,
    [$borderLeftColor]: core.String,
    borderLeftStyle: core.String,
    [$borderLeftStyle]: core.String,
    borderLeftWidth: core.String,
    [$borderLeftWidth]: core.String,
    borderRadius: core.String,
    [$borderRadius]: core.String,
    borderRight: core.String,
    [$borderRight]: core.String,
    borderRightColor: core.String,
    [$borderRightColor]: core.String,
    borderRightStyle: core.String,
    [$borderRightStyle]: core.String,
    borderRightWidth: core.String,
    [$borderRightWidth]: core.String,
    borderSpacing: core.String,
    [$borderSpacing]: core.String,
    borderStart: core.String,
    [$borderStart]: core.String,
    borderStartColor: core.String,
    [$borderStartColor]: core.String,
    borderStartStyle: core.String,
    [$borderStartStyle]: core.String,
    borderStartWidth: core.String,
    [$borderStartWidth]: core.String,
    borderStyle: core.String,
    [$borderStyle]: core.String,
    borderTop: core.String,
    [$borderTop]: core.String,
    borderTopColor: core.String,
    [$borderTopColor]: core.String,
    borderTopLeftRadius: core.String,
    [$borderTopLeftRadius]: core.String,
    borderTopRightRadius: core.String,
    [$borderTopRightRadius]: core.String,
    borderTopStyle: core.String,
    [$borderTopStyle]: core.String,
    borderTopWidth: core.String,
    [$borderTopWidth]: core.String,
    borderVerticalSpacing: core.String,
    [$borderVerticalSpacing]: core.String,
    borderWidth: core.String,
    [$borderWidth]: core.String,
    bottom: core.String,
    [$bottom]: core.String,
    boxAlign: core.String,
    [$boxAlign]: core.String,
    boxDecorationBreak: core.String,
    [$boxDecorationBreak]: core.String,
    boxDirection: core.String,
    [$boxDirection]: core.String,
    boxFlex: core.String,
    [$boxFlex]: core.String,
    boxFlexGroup: core.String,
    [$boxFlexGroup]: core.String,
    boxLines: core.String,
    [$boxLines]: core.String,
    boxOrdinalGroup: core.String,
    [$boxOrdinalGroup]: core.String,
    boxOrient: core.String,
    [$boxOrient]: core.String,
    boxPack: core.String,
    [$boxPack]: core.String,
    boxReflect: core.String,
    [$boxReflect]: core.String,
    boxShadow: core.String,
    [$boxShadow]: core.String,
    boxSizing: core.String,
    [$boxSizing]: core.String,
    captionSide: core.String,
    [$captionSide]: core.String,
    clear: core.String,
    [$clear]: core.String,
    clip: core.String,
    [$clip]: core.String,
    clipPath: core.String,
    [$clipPath]: core.String,
    color: core.String,
    [$color]: core.String,
    columnBreakAfter: core.String,
    [$columnBreakAfter]: core.String,
    columnBreakBefore: core.String,
    [$columnBreakBefore]: core.String,
    columnBreakInside: core.String,
    [$columnBreakInside]: core.String,
    columnCount: core.String,
    [$columnCount]: core.String,
    columnFill: core.String,
    [$columnFill]: core.String,
    columnGap: core.String,
    [$columnGap]: core.String,
    columnRule: core.String,
    [$columnRule]: core.String,
    columnRuleColor: core.String,
    [$columnRuleColor]: core.String,
    columnRuleStyle: core.String,
    [$columnRuleStyle]: core.String,
    columnRuleWidth: core.String,
    [$columnRuleWidth]: core.String,
    columnSpan: core.String,
    [$columnSpan]: core.String,
    columnWidth: core.String,
    [$columnWidth]: core.String,
    columns: core.String,
    [$columns]: core.String,
    content: core.String,
    [$content]: core.String,
    counterIncrement: core.String,
    [$counterIncrement]: core.String,
    counterReset: core.String,
    [$counterReset]: core.String,
    cursor: core.String,
    [$cursor]: core.String,
    direction: core.String,
    [$direction]: core.String,
    display: core.String,
    [$display]: core.String,
    emptyCells: core.String,
    [$emptyCells]: core.String,
    filter: core.String,
    [$filter]: core.String,
    flex: core.String,
    [$flex]: core.String,
    flexBasis: core.String,
    [$flexBasis]: core.String,
    flexDirection: core.String,
    [$flexDirection]: core.String,
    flexFlow: core.String,
    [$flexFlow]: core.String,
    flexGrow: core.String,
    [$flexGrow]: core.String,
    flexShrink: core.String,
    [$flexShrink]: core.String,
    flexWrap: core.String,
    [$flexWrap]: core.String,
    float: core.String,
    [$float]: core.String,
    font: core.String,
    [$font]: core.String,
    fontFamily: core.String,
    [$fontFamily]: core.String,
    fontFeatureSettings: core.String,
    [$fontFeatureSettings]: core.String,
    fontKerning: core.String,
    [$fontKerning]: core.String,
    fontSize: core.String,
    [$fontSize]: core.String,
    fontSizeDelta: core.String,
    [$fontSizeDelta]: core.String,
    fontSmoothing: core.String,
    [$fontSmoothing]: core.String,
    fontStretch: core.String,
    [$fontStretch]: core.String,
    fontStyle: core.String,
    [$fontStyle]: core.String,
    fontVariant: core.String,
    [$fontVariant]: core.String,
    fontVariantLigatures: core.String,
    [$fontVariantLigatures]: core.String,
    fontWeight: core.String,
    [$fontWeight]: core.String,
    grid: core.String,
    [$grid]: core.String,
    gridArea: core.String,
    [$gridArea]: core.String,
    gridAutoColumns: core.String,
    [$gridAutoColumns]: core.String,
    gridAutoFlow: core.String,
    [$gridAutoFlow]: core.String,
    gridAutoRows: core.String,
    [$gridAutoRows]: core.String,
    gridColumn: core.String,
    [$gridColumn]: core.String,
    gridColumnEnd: core.String,
    [$gridColumnEnd]: core.String,
    gridColumnStart: core.String,
    [$gridColumnStart]: core.String,
    gridRow: core.String,
    [$gridRow]: core.String,
    gridRowEnd: core.String,
    [$gridRowEnd]: core.String,
    gridRowStart: core.String,
    [$gridRowStart]: core.String,
    gridTemplate: core.String,
    [$gridTemplate]: core.String,
    gridTemplateAreas: core.String,
    [$gridTemplateAreas]: core.String,
    gridTemplateColumns: core.String,
    [$gridTemplateColumns]: core.String,
    gridTemplateRows: core.String,
    [$gridTemplateRows]: core.String,
    height: core.String,
    [$height]: core.String,
    highlight: core.String,
    [$highlight]: core.String,
    hyphenateCharacter: core.String,
    [$hyphenateCharacter]: core.String,
    imageRendering: core.String,
    [$imageRendering]: core.String,
    isolation: core.String,
    [$isolation]: core.String,
    justifyContent: core.String,
    [$justifyContent]: core.String,
    justifySelf: core.String,
    [$justifySelf]: core.String,
    left: core.String,
    [$left]: core.String,
    letterSpacing: core.String,
    [$letterSpacing]: core.String,
    lineBoxContain: core.String,
    [$lineBoxContain]: core.String,
    lineBreak: core.String,
    [$lineBreak]: core.String,
    lineClamp: core.String,
    [$lineClamp]: core.String,
    lineHeight: core.String,
    [$lineHeight]: core.String,
    listStyle: core.String,
    [$listStyle]: core.String,
    listStyleImage: core.String,
    [$listStyleImage]: core.String,
    listStylePosition: core.String,
    [$listStylePosition]: core.String,
    listStyleType: core.String,
    [$listStyleType]: core.String,
    locale: core.String,
    [$locale]: core.String,
    logicalHeight: core.String,
    [$logicalHeight]: core.String,
    logicalWidth: core.String,
    [$logicalWidth]: core.String,
    margin: core.String,
    [$margin]: core.String,
    marginAfter: core.String,
    [$marginAfter]: core.String,
    marginAfterCollapse: core.String,
    [$marginAfterCollapse]: core.String,
    marginBefore: core.String,
    [$marginBefore]: core.String,
    marginBeforeCollapse: core.String,
    [$marginBeforeCollapse]: core.String,
    marginBottom: core.String,
    [$marginBottom]: core.String,
    marginBottomCollapse: core.String,
    [$marginBottomCollapse]: core.String,
    marginCollapse: core.String,
    [$marginCollapse]: core.String,
    marginEnd: core.String,
    [$marginEnd]: core.String,
    marginLeft: core.String,
    [$marginLeft]: core.String,
    marginRight: core.String,
    [$marginRight]: core.String,
    marginStart: core.String,
    [$marginStart]: core.String,
    marginTop: core.String,
    [$marginTop]: core.String,
    marginTopCollapse: core.String,
    [$marginTopCollapse]: core.String,
    mask: core.String,
    [$mask]: core.String,
    maskBoxImage: core.String,
    [$maskBoxImage]: core.String,
    maskBoxImageOutset: core.String,
    [$maskBoxImageOutset]: core.String,
    maskBoxImageRepeat: core.String,
    [$maskBoxImageRepeat]: core.String,
    maskBoxImageSlice: core.String,
    [$maskBoxImageSlice]: core.String,
    maskBoxImageSource: core.String,
    [$maskBoxImageSource]: core.String,
    maskBoxImageWidth: core.String,
    [$maskBoxImageWidth]: core.String,
    maskClip: core.String,
    [$maskClip]: core.String,
    maskComposite: core.String,
    [$maskComposite]: core.String,
    maskImage: core.String,
    [$maskImage]: core.String,
    maskOrigin: core.String,
    [$maskOrigin]: core.String,
    maskPosition: core.String,
    [$maskPosition]: core.String,
    maskPositionX: core.String,
    [$maskPositionX]: core.String,
    maskPositionY: core.String,
    [$maskPositionY]: core.String,
    maskRepeat: core.String,
    [$maskRepeat]: core.String,
    maskRepeatX: core.String,
    [$maskRepeatX]: core.String,
    maskRepeatY: core.String,
    [$maskRepeatY]: core.String,
    maskSize: core.String,
    [$maskSize]: core.String,
    maskSourceType: core.String,
    [$maskSourceType]: core.String,
    maxHeight: core.String,
    [$maxHeight]: core.String,
    maxLogicalHeight: core.String,
    [$maxLogicalHeight]: core.String,
    maxLogicalWidth: core.String,
    [$maxLogicalWidth]: core.String,
    maxWidth: core.String,
    [$maxWidth]: core.String,
    maxZoom: core.String,
    [$maxZoom]: core.String,
    minHeight: core.String,
    [$minHeight]: core.String,
    minLogicalHeight: core.String,
    [$minLogicalHeight]: core.String,
    minLogicalWidth: core.String,
    [$minLogicalWidth]: core.String,
    minWidth: core.String,
    [$minWidth]: core.String,
    minZoom: core.String,
    [$minZoom]: core.String,
    mixBlendMode: core.String,
    [$mixBlendMode]: core.String,
    objectFit: core.String,
    [$objectFit]: core.String,
    objectPosition: core.String,
    [$objectPosition]: core.String,
    opacity: core.String,
    [$opacity]: core.String,
    order: core.String,
    [$order]: core.String,
    orientation: core.String,
    [$orientation]: core.String,
    orphans: core.String,
    [$orphans]: core.String,
    outline: core.String,
    [$outline]: core.String,
    outlineColor: core.String,
    [$outlineColor]: core.String,
    outlineOffset: core.String,
    [$outlineOffset]: core.String,
    outlineStyle: core.String,
    [$outlineStyle]: core.String,
    outlineWidth: core.String,
    [$outlineWidth]: core.String,
    overflow: core.String,
    [$overflow]: core.String,
    overflowWrap: core.String,
    [$overflowWrap]: core.String,
    overflowX: core.String,
    [$overflowX]: core.String,
    overflowY: core.String,
    [$overflowY]: core.String,
    padding: core.String,
    [$padding]: core.String,
    paddingAfter: core.String,
    [$paddingAfter]: core.String,
    paddingBefore: core.String,
    [$paddingBefore]: core.String,
    paddingBottom: core.String,
    [$paddingBottom]: core.String,
    paddingEnd: core.String,
    [$paddingEnd]: core.String,
    paddingLeft: core.String,
    [$paddingLeft]: core.String,
    paddingRight: core.String,
    [$paddingRight]: core.String,
    paddingStart: core.String,
    [$paddingStart]: core.String,
    paddingTop: core.String,
    [$paddingTop]: core.String,
    page: core.String,
    [$page]: core.String,
    pageBreakAfter: core.String,
    [$pageBreakAfter]: core.String,
    pageBreakBefore: core.String,
    [$pageBreakBefore]: core.String,
    pageBreakInside: core.String,
    [$pageBreakInside]: core.String,
    perspective: core.String,
    [$perspective]: core.String,
    perspectiveOrigin: core.String,
    [$perspectiveOrigin]: core.String,
    perspectiveOriginX: core.String,
    [$perspectiveOriginX]: core.String,
    perspectiveOriginY: core.String,
    [$perspectiveOriginY]: core.String,
    pointerEvents: core.String,
    [$pointerEvents]: core.String,
    position: core.String,
    [$position]: core.String,
    printColorAdjust: core.String,
    [$printColorAdjust]: core.String,
    quotes: core.String,
    [$quotes]: core.String,
    resize: core.String,
    [$resize]: core.String,
    right: core.String,
    [$right]: core.String,
    rtlOrdering: core.String,
    [$rtlOrdering]: core.String,
    rubyPosition: core.String,
    [$rubyPosition]: core.String,
    scrollBehavior: core.String,
    [$scrollBehavior]: core.String,
    shapeImageThreshold: core.String,
    [$shapeImageThreshold]: core.String,
    shapeMargin: core.String,
    [$shapeMargin]: core.String,
    shapeOutside: core.String,
    [$shapeOutside]: core.String,
    size: core.String,
    [$size]: core.String,
    speak: core.String,
    [$speak]: core.String,
    src: core.String,
    [$src]: core.String,
    tabSize: core.String,
    [$tabSize]: core.String,
    tableLayout: core.String,
    [$tableLayout]: core.String,
    tapHighlightColor: core.String,
    [$tapHighlightColor]: core.String,
    textAlign: core.String,
    [$textAlign]: core.String,
    textAlignLast: core.String,
    [$textAlignLast]: core.String,
    textCombine: core.String,
    [$textCombine]: core.String,
    textDecoration: core.String,
    [$textDecoration]: core.String,
    textDecorationColor: core.String,
    [$textDecorationColor]: core.String,
    textDecorationLine: core.String,
    [$textDecorationLine]: core.String,
    textDecorationStyle: core.String,
    [$textDecorationStyle]: core.String,
    textDecorationsInEffect: core.String,
    [$textDecorationsInEffect]: core.String,
    textEmphasis: core.String,
    [$textEmphasis]: core.String,
    textEmphasisColor: core.String,
    [$textEmphasisColor]: core.String,
    textEmphasisPosition: core.String,
    [$textEmphasisPosition]: core.String,
    textEmphasisStyle: core.String,
    [$textEmphasisStyle]: core.String,
    textFillColor: core.String,
    [$textFillColor]: core.String,
    textIndent: core.String,
    [$textIndent]: core.String,
    textJustify: core.String,
    [$textJustify]: core.String,
    textLineThroughColor: core.String,
    [$textLineThroughColor]: core.String,
    textLineThroughMode: core.String,
    [$textLineThroughMode]: core.String,
    textLineThroughStyle: core.String,
    [$textLineThroughStyle]: core.String,
    textLineThroughWidth: core.String,
    [$textLineThroughWidth]: core.String,
    textOrientation: core.String,
    [$textOrientation]: core.String,
    textOverflow: core.String,
    [$textOverflow]: core.String,
    textOverlineColor: core.String,
    [$textOverlineColor]: core.String,
    textOverlineMode: core.String,
    [$textOverlineMode]: core.String,
    textOverlineStyle: core.String,
    [$textOverlineStyle]: core.String,
    textOverlineWidth: core.String,
    [$textOverlineWidth]: core.String,
    textRendering: core.String,
    [$textRendering]: core.String,
    textSecurity: core.String,
    [$textSecurity]: core.String,
    textShadow: core.String,
    [$textShadow]: core.String,
    textStroke: core.String,
    [$textStroke]: core.String,
    textStrokeColor: core.String,
    [$textStrokeColor]: core.String,
    textStrokeWidth: core.String,
    [$textStrokeWidth]: core.String,
    textTransform: core.String,
    [$textTransform]: core.String,
    textUnderlineColor: core.String,
    [$textUnderlineColor]: core.String,
    textUnderlineMode: core.String,
    [$textUnderlineMode]: core.String,
    textUnderlinePosition: core.String,
    [$textUnderlinePosition]: core.String,
    textUnderlineStyle: core.String,
    [$textUnderlineStyle]: core.String,
    textUnderlineWidth: core.String,
    [$textUnderlineWidth]: core.String,
    top: core.String,
    [$top]: core.String,
    touchAction: core.String,
    [$touchAction]: core.String,
    touchActionDelay: core.String,
    [$touchActionDelay]: core.String,
    transform: core.String,
    [$transform]: core.String,
    transformOrigin: core.String,
    [$transformOrigin]: core.String,
    transformOriginX: core.String,
    [$transformOriginX]: core.String,
    transformOriginY: core.String,
    [$transformOriginY]: core.String,
    transformOriginZ: core.String,
    [$transformOriginZ]: core.String,
    transformStyle: core.String,
    [$transformStyle]: core.String,
    transition: core.String,
    [$transition]: core.String,
    transitionDelay: core.String,
    [$transitionDelay]: core.String,
    transitionDuration: core.String,
    [$transitionDuration]: core.String,
    transitionProperty: core.String,
    [$transitionProperty]: core.String,
    transitionTimingFunction: core.String,
    [$transitionTimingFunction]: core.String,
    unicodeBidi: core.String,
    [$unicodeBidi]: core.String,
    unicodeRange: core.String,
    [$unicodeRange]: core.String,
    userDrag: core.String,
    [$userDrag]: core.String,
    userModify: core.String,
    [$userModify]: core.String,
    userSelect: core.String,
    [$userSelect]: core.String,
    userZoom: core.String,
    [$userZoom]: core.String,
    verticalAlign: core.String,
    [$verticalAlign]: core.String,
    visibility: core.String,
    [$visibility]: core.String,
    whiteSpace: core.String,
    [$whiteSpace]: core.String,
    widows: core.String,
    [$widows]: core.String,
    width: core.String,
    [$width]: core.String,
    willChange: core.String,
    [$willChange]: core.String,
    wordBreak: core.String,
    [$wordBreak]: core.String,
    wordSpacing: core.String,
    [$wordSpacing]: core.String,
    wordWrap: core.String,
    [$wordWrap]: core.String,
    wrapFlow: core.String,
    [$wrapFlow]: core.String,
    wrapThrough: core.String,
    [$wrapThrough]: core.String,
    writingMode: core.String,
    [$writingMode]: core.String,
    zIndex: core.String,
    [$zIndex]: core.String,
    zoom: core.String,
    [$zoom]: core.String
  }));
  dart.setSetterSignature(html$.CssStyleDeclarationBase, () => ({
    __proto__: dart.getSetters(html$.CssStyleDeclarationBase.__proto__),
    alignContent: core.String,
    [$alignContent]: core.String,
    alignItems: core.String,
    [$alignItems]: core.String,
    alignSelf: core.String,
    [$alignSelf]: core.String,
    animation: core.String,
    [$animation]: core.String,
    animationDelay: core.String,
    [$animationDelay]: core.String,
    animationDirection: core.String,
    [$animationDirection]: core.String,
    animationDuration: core.String,
    [$animationDuration]: core.String,
    animationFillMode: core.String,
    [$animationFillMode]: core.String,
    animationIterationCount: core.String,
    [$animationIterationCount]: core.String,
    animationName: core.String,
    [$animationName]: core.String,
    animationPlayState: core.String,
    [$animationPlayState]: core.String,
    animationTimingFunction: core.String,
    [$animationTimingFunction]: core.String,
    appRegion: core.String,
    [$appRegion]: core.String,
    appearance: core.String,
    [$appearance]: core.String,
    aspectRatio: core.String,
    [$aspectRatio]: core.String,
    backfaceVisibility: core.String,
    [$backfaceVisibility]: core.String,
    background: core.String,
    [$background]: core.String,
    backgroundAttachment: core.String,
    [$backgroundAttachment]: core.String,
    backgroundBlendMode: core.String,
    [$backgroundBlendMode]: core.String,
    backgroundClip: core.String,
    [$backgroundClip]: core.String,
    backgroundColor: core.String,
    [$backgroundColor]: core.String,
    backgroundComposite: core.String,
    [$backgroundComposite]: core.String,
    backgroundImage: core.String,
    [$backgroundImage]: core.String,
    backgroundOrigin: core.String,
    [$backgroundOrigin]: core.String,
    backgroundPosition: core.String,
    [$backgroundPosition]: core.String,
    backgroundPositionX: core.String,
    [$backgroundPositionX]: core.String,
    backgroundPositionY: core.String,
    [$backgroundPositionY]: core.String,
    backgroundRepeat: core.String,
    [$backgroundRepeat]: core.String,
    backgroundRepeatX: core.String,
    [$backgroundRepeatX]: core.String,
    backgroundRepeatY: core.String,
    [$backgroundRepeatY]: core.String,
    backgroundSize: core.String,
    [$backgroundSize]: core.String,
    border: core.String,
    [$border]: core.String,
    borderAfter: core.String,
    [$borderAfter]: core.String,
    borderAfterColor: core.String,
    [$borderAfterColor]: core.String,
    borderAfterStyle: core.String,
    [$borderAfterStyle]: core.String,
    borderAfterWidth: core.String,
    [$borderAfterWidth]: core.String,
    borderBefore: core.String,
    [$borderBefore]: core.String,
    borderBeforeColor: core.String,
    [$borderBeforeColor]: core.String,
    borderBeforeStyle: core.String,
    [$borderBeforeStyle]: core.String,
    borderBeforeWidth: core.String,
    [$borderBeforeWidth]: core.String,
    borderBottom: core.String,
    [$borderBottom]: core.String,
    borderBottomColor: core.String,
    [$borderBottomColor]: core.String,
    borderBottomLeftRadius: core.String,
    [$borderBottomLeftRadius]: core.String,
    borderBottomRightRadius: core.String,
    [$borderBottomRightRadius]: core.String,
    borderBottomStyle: core.String,
    [$borderBottomStyle]: core.String,
    borderBottomWidth: core.String,
    [$borderBottomWidth]: core.String,
    borderCollapse: core.String,
    [$borderCollapse]: core.String,
    borderColor: core.String,
    [$borderColor]: core.String,
    borderEnd: core.String,
    [$borderEnd]: core.String,
    borderEndColor: core.String,
    [$borderEndColor]: core.String,
    borderEndStyle: core.String,
    [$borderEndStyle]: core.String,
    borderEndWidth: core.String,
    [$borderEndWidth]: core.String,
    borderFit: core.String,
    [$borderFit]: core.String,
    borderHorizontalSpacing: core.String,
    [$borderHorizontalSpacing]: core.String,
    borderImage: core.String,
    [$borderImage]: core.String,
    borderImageOutset: core.String,
    [$borderImageOutset]: core.String,
    borderImageRepeat: core.String,
    [$borderImageRepeat]: core.String,
    borderImageSlice: core.String,
    [$borderImageSlice]: core.String,
    borderImageSource: core.String,
    [$borderImageSource]: core.String,
    borderImageWidth: core.String,
    [$borderImageWidth]: core.String,
    borderLeft: core.String,
    [$borderLeft]: core.String,
    borderLeftColor: core.String,
    [$borderLeftColor]: core.String,
    borderLeftStyle: core.String,
    [$borderLeftStyle]: core.String,
    borderLeftWidth: core.String,
    [$borderLeftWidth]: core.String,
    borderRadius: core.String,
    [$borderRadius]: core.String,
    borderRight: core.String,
    [$borderRight]: core.String,
    borderRightColor: core.String,
    [$borderRightColor]: core.String,
    borderRightStyle: core.String,
    [$borderRightStyle]: core.String,
    borderRightWidth: core.String,
    [$borderRightWidth]: core.String,
    borderSpacing: core.String,
    [$borderSpacing]: core.String,
    borderStart: core.String,
    [$borderStart]: core.String,
    borderStartColor: core.String,
    [$borderStartColor]: core.String,
    borderStartStyle: core.String,
    [$borderStartStyle]: core.String,
    borderStartWidth: core.String,
    [$borderStartWidth]: core.String,
    borderStyle: core.String,
    [$borderStyle]: core.String,
    borderTop: core.String,
    [$borderTop]: core.String,
    borderTopColor: core.String,
    [$borderTopColor]: core.String,
    borderTopLeftRadius: core.String,
    [$borderTopLeftRadius]: core.String,
    borderTopRightRadius: core.String,
    [$borderTopRightRadius]: core.String,
    borderTopStyle: core.String,
    [$borderTopStyle]: core.String,
    borderTopWidth: core.String,
    [$borderTopWidth]: core.String,
    borderVerticalSpacing: core.String,
    [$borderVerticalSpacing]: core.String,
    borderWidth: core.String,
    [$borderWidth]: core.String,
    bottom: core.String,
    [$bottom]: core.String,
    boxAlign: core.String,
    [$boxAlign]: core.String,
    boxDecorationBreak: core.String,
    [$boxDecorationBreak]: core.String,
    boxDirection: core.String,
    [$boxDirection]: core.String,
    boxFlex: core.String,
    [$boxFlex]: core.String,
    boxFlexGroup: core.String,
    [$boxFlexGroup]: core.String,
    boxLines: core.String,
    [$boxLines]: core.String,
    boxOrdinalGroup: core.String,
    [$boxOrdinalGroup]: core.String,
    boxOrient: core.String,
    [$boxOrient]: core.String,
    boxPack: core.String,
    [$boxPack]: core.String,
    boxReflect: core.String,
    [$boxReflect]: core.String,
    boxShadow: core.String,
    [$boxShadow]: core.String,
    boxSizing: core.String,
    [$boxSizing]: core.String,
    captionSide: core.String,
    [$captionSide]: core.String,
    clear: core.String,
    [$clear]: core.String,
    clip: core.String,
    [$clip]: core.String,
    clipPath: core.String,
    [$clipPath]: core.String,
    color: core.String,
    [$color]: core.String,
    columnBreakAfter: core.String,
    [$columnBreakAfter]: core.String,
    columnBreakBefore: core.String,
    [$columnBreakBefore]: core.String,
    columnBreakInside: core.String,
    [$columnBreakInside]: core.String,
    columnCount: core.String,
    [$columnCount]: core.String,
    columnFill: core.String,
    [$columnFill]: core.String,
    columnGap: core.String,
    [$columnGap]: core.String,
    columnRule: core.String,
    [$columnRule]: core.String,
    columnRuleColor: core.String,
    [$columnRuleColor]: core.String,
    columnRuleStyle: core.String,
    [$columnRuleStyle]: core.String,
    columnRuleWidth: core.String,
    [$columnRuleWidth]: core.String,
    columnSpan: core.String,
    [$columnSpan]: core.String,
    columnWidth: core.String,
    [$columnWidth]: core.String,
    columns: core.String,
    [$columns]: core.String,
    content: core.String,
    [$content]: core.String,
    counterIncrement: core.String,
    [$counterIncrement]: core.String,
    counterReset: core.String,
    [$counterReset]: core.String,
    cursor: core.String,
    [$cursor]: core.String,
    direction: core.String,
    [$direction]: core.String,
    display: core.String,
    [$display]: core.String,
    emptyCells: core.String,
    [$emptyCells]: core.String,
    filter: core.String,
    [$filter]: core.String,
    flex: core.String,
    [$flex]: core.String,
    flexBasis: core.String,
    [$flexBasis]: core.String,
    flexDirection: core.String,
    [$flexDirection]: core.String,
    flexFlow: core.String,
    [$flexFlow]: core.String,
    flexGrow: core.String,
    [$flexGrow]: core.String,
    flexShrink: core.String,
    [$flexShrink]: core.String,
    flexWrap: core.String,
    [$flexWrap]: core.String,
    float: core.String,
    [$float]: core.String,
    font: core.String,
    [$font]: core.String,
    fontFamily: core.String,
    [$fontFamily]: core.String,
    fontFeatureSettings: core.String,
    [$fontFeatureSettings]: core.String,
    fontKerning: core.String,
    [$fontKerning]: core.String,
    fontSize: core.String,
    [$fontSize]: core.String,
    fontSizeDelta: core.String,
    [$fontSizeDelta]: core.String,
    fontSmoothing: core.String,
    [$fontSmoothing]: core.String,
    fontStretch: core.String,
    [$fontStretch]: core.String,
    fontStyle: core.String,
    [$fontStyle]: core.String,
    fontVariant: core.String,
    [$fontVariant]: core.String,
    fontVariantLigatures: core.String,
    [$fontVariantLigatures]: core.String,
    fontWeight: core.String,
    [$fontWeight]: core.String,
    grid: core.String,
    [$grid]: core.String,
    gridArea: core.String,
    [$gridArea]: core.String,
    gridAutoColumns: core.String,
    [$gridAutoColumns]: core.String,
    gridAutoFlow: core.String,
    [$gridAutoFlow]: core.String,
    gridAutoRows: core.String,
    [$gridAutoRows]: core.String,
    gridColumn: core.String,
    [$gridColumn]: core.String,
    gridColumnEnd: core.String,
    [$gridColumnEnd]: core.String,
    gridColumnStart: core.String,
    [$gridColumnStart]: core.String,
    gridRow: core.String,
    [$gridRow]: core.String,
    gridRowEnd: core.String,
    [$gridRowEnd]: core.String,
    gridRowStart: core.String,
    [$gridRowStart]: core.String,
    gridTemplate: core.String,
    [$gridTemplate]: core.String,
    gridTemplateAreas: core.String,
    [$gridTemplateAreas]: core.String,
    gridTemplateColumns: core.String,
    [$gridTemplateColumns]: core.String,
    gridTemplateRows: core.String,
    [$gridTemplateRows]: core.String,
    height: core.String,
    [$height]: core.String,
    highlight: core.String,
    [$highlight]: core.String,
    hyphenateCharacter: core.String,
    [$hyphenateCharacter]: core.String,
    imageRendering: core.String,
    [$imageRendering]: core.String,
    isolation: core.String,
    [$isolation]: core.String,
    justifyContent: core.String,
    [$justifyContent]: core.String,
    justifySelf: core.String,
    [$justifySelf]: core.String,
    left: core.String,
    [$left]: core.String,
    letterSpacing: core.String,
    [$letterSpacing]: core.String,
    lineBoxContain: core.String,
    [$lineBoxContain]: core.String,
    lineBreak: core.String,
    [$lineBreak]: core.String,
    lineClamp: core.String,
    [$lineClamp]: core.String,
    lineHeight: core.String,
    [$lineHeight]: core.String,
    listStyle: core.String,
    [$listStyle]: core.String,
    listStyleImage: core.String,
    [$listStyleImage]: core.String,
    listStylePosition: core.String,
    [$listStylePosition]: core.String,
    listStyleType: core.String,
    [$listStyleType]: core.String,
    locale: core.String,
    [$locale]: core.String,
    logicalHeight: core.String,
    [$logicalHeight]: core.String,
    logicalWidth: core.String,
    [$logicalWidth]: core.String,
    margin: core.String,
    [$margin]: core.String,
    marginAfter: core.String,
    [$marginAfter]: core.String,
    marginAfterCollapse: core.String,
    [$marginAfterCollapse]: core.String,
    marginBefore: core.String,
    [$marginBefore]: core.String,
    marginBeforeCollapse: core.String,
    [$marginBeforeCollapse]: core.String,
    marginBottom: core.String,
    [$marginBottom]: core.String,
    marginBottomCollapse: core.String,
    [$marginBottomCollapse]: core.String,
    marginCollapse: core.String,
    [$marginCollapse]: core.String,
    marginEnd: core.String,
    [$marginEnd]: core.String,
    marginLeft: core.String,
    [$marginLeft]: core.String,
    marginRight: core.String,
    [$marginRight]: core.String,
    marginStart: core.String,
    [$marginStart]: core.String,
    marginTop: core.String,
    [$marginTop]: core.String,
    marginTopCollapse: core.String,
    [$marginTopCollapse]: core.String,
    mask: core.String,
    [$mask]: core.String,
    maskBoxImage: core.String,
    [$maskBoxImage]: core.String,
    maskBoxImageOutset: core.String,
    [$maskBoxImageOutset]: core.String,
    maskBoxImageRepeat: core.String,
    [$maskBoxImageRepeat]: core.String,
    maskBoxImageSlice: core.String,
    [$maskBoxImageSlice]: core.String,
    maskBoxImageSource: core.String,
    [$maskBoxImageSource]: core.String,
    maskBoxImageWidth: core.String,
    [$maskBoxImageWidth]: core.String,
    maskClip: core.String,
    [$maskClip]: core.String,
    maskComposite: core.String,
    [$maskComposite]: core.String,
    maskImage: core.String,
    [$maskImage]: core.String,
    maskOrigin: core.String,
    [$maskOrigin]: core.String,
    maskPosition: core.String,
    [$maskPosition]: core.String,
    maskPositionX: core.String,
    [$maskPositionX]: core.String,
    maskPositionY: core.String,
    [$maskPositionY]: core.String,
    maskRepeat: core.String,
    [$maskRepeat]: core.String,
    maskRepeatX: core.String,
    [$maskRepeatX]: core.String,
    maskRepeatY: core.String,
    [$maskRepeatY]: core.String,
    maskSize: core.String,
    [$maskSize]: core.String,
    maskSourceType: core.String,
    [$maskSourceType]: core.String,
    maxHeight: core.String,
    [$maxHeight]: core.String,
    maxLogicalHeight: core.String,
    [$maxLogicalHeight]: core.String,
    maxLogicalWidth: core.String,
    [$maxLogicalWidth]: core.String,
    maxWidth: core.String,
    [$maxWidth]: core.String,
    maxZoom: core.String,
    [$maxZoom]: core.String,
    minHeight: core.String,
    [$minHeight]: core.String,
    minLogicalHeight: core.String,
    [$minLogicalHeight]: core.String,
    minLogicalWidth: core.String,
    [$minLogicalWidth]: core.String,
    minWidth: core.String,
    [$minWidth]: core.String,
    minZoom: core.String,
    [$minZoom]: core.String,
    mixBlendMode: core.String,
    [$mixBlendMode]: core.String,
    objectFit: core.String,
    [$objectFit]: core.String,
    objectPosition: core.String,
    [$objectPosition]: core.String,
    opacity: core.String,
    [$opacity]: core.String,
    order: core.String,
    [$order]: core.String,
    orientation: core.String,
    [$orientation]: core.String,
    orphans: core.String,
    [$orphans]: core.String,
    outline: core.String,
    [$outline]: core.String,
    outlineColor: core.String,
    [$outlineColor]: core.String,
    outlineOffset: core.String,
    [$outlineOffset]: core.String,
    outlineStyle: core.String,
    [$outlineStyle]: core.String,
    outlineWidth: core.String,
    [$outlineWidth]: core.String,
    overflow: core.String,
    [$overflow]: core.String,
    overflowWrap: core.String,
    [$overflowWrap]: core.String,
    overflowX: core.String,
    [$overflowX]: core.String,
    overflowY: core.String,
    [$overflowY]: core.String,
    padding: core.String,
    [$padding]: core.String,
    paddingAfter: core.String,
    [$paddingAfter]: core.String,
    paddingBefore: core.String,
    [$paddingBefore]: core.String,
    paddingBottom: core.String,
    [$paddingBottom]: core.String,
    paddingEnd: core.String,
    [$paddingEnd]: core.String,
    paddingLeft: core.String,
    [$paddingLeft]: core.String,
    paddingRight: core.String,
    [$paddingRight]: core.String,
    paddingStart: core.String,
    [$paddingStart]: core.String,
    paddingTop: core.String,
    [$paddingTop]: core.String,
    page: core.String,
    [$page]: core.String,
    pageBreakAfter: core.String,
    [$pageBreakAfter]: core.String,
    pageBreakBefore: core.String,
    [$pageBreakBefore]: core.String,
    pageBreakInside: core.String,
    [$pageBreakInside]: core.String,
    perspective: core.String,
    [$perspective]: core.String,
    perspectiveOrigin: core.String,
    [$perspectiveOrigin]: core.String,
    perspectiveOriginX: core.String,
    [$perspectiveOriginX]: core.String,
    perspectiveOriginY: core.String,
    [$perspectiveOriginY]: core.String,
    pointerEvents: core.String,
    [$pointerEvents]: core.String,
    position: core.String,
    [$position]: core.String,
    printColorAdjust: core.String,
    [$printColorAdjust]: core.String,
    quotes: core.String,
    [$quotes]: core.String,
    resize: core.String,
    [$resize]: core.String,
    right: core.String,
    [$right]: core.String,
    rtlOrdering: core.String,
    [$rtlOrdering]: core.String,
    rubyPosition: core.String,
    [$rubyPosition]: core.String,
    scrollBehavior: core.String,
    [$scrollBehavior]: core.String,
    shapeImageThreshold: core.String,
    [$shapeImageThreshold]: core.String,
    shapeMargin: core.String,
    [$shapeMargin]: core.String,
    shapeOutside: core.String,
    [$shapeOutside]: core.String,
    size: core.String,
    [$size]: core.String,
    speak: core.String,
    [$speak]: core.String,
    src: core.String,
    [$src]: core.String,
    tabSize: core.String,
    [$tabSize]: core.String,
    tableLayout: core.String,
    [$tableLayout]: core.String,
    tapHighlightColor: core.String,
    [$tapHighlightColor]: core.String,
    textAlign: core.String,
    [$textAlign]: core.String,
    textAlignLast: core.String,
    [$textAlignLast]: core.String,
    textCombine: core.String,
    [$textCombine]: core.String,
    textDecoration: core.String,
    [$textDecoration]: core.String,
    textDecorationColor: core.String,
    [$textDecorationColor]: core.String,
    textDecorationLine: core.String,
    [$textDecorationLine]: core.String,
    textDecorationStyle: core.String,
    [$textDecorationStyle]: core.String,
    textDecorationsInEffect: core.String,
    [$textDecorationsInEffect]: core.String,
    textEmphasis: core.String,
    [$textEmphasis]: core.String,
    textEmphasisColor: core.String,
    [$textEmphasisColor]: core.String,
    textEmphasisPosition: core.String,
    [$textEmphasisPosition]: core.String,
    textEmphasisStyle: core.String,
    [$textEmphasisStyle]: core.String,
    textFillColor: core.String,
    [$textFillColor]: core.String,
    textIndent: core.String,
    [$textIndent]: core.String,
    textJustify: core.String,
    [$textJustify]: core.String,
    textLineThroughColor: core.String,
    [$textLineThroughColor]: core.String,
    textLineThroughMode: core.String,
    [$textLineThroughMode]: core.String,
    textLineThroughStyle: core.String,
    [$textLineThroughStyle]: core.String,
    textLineThroughWidth: core.String,
    [$textLineThroughWidth]: core.String,
    textOrientation: core.String,
    [$textOrientation]: core.String,
    textOverflow: core.String,
    [$textOverflow]: core.String,
    textOverlineColor: core.String,
    [$textOverlineColor]: core.String,
    textOverlineMode: core.String,
    [$textOverlineMode]: core.String,
    textOverlineStyle: core.String,
    [$textOverlineStyle]: core.String,
    textOverlineWidth: core.String,
    [$textOverlineWidth]: core.String,
    textRendering: core.String,
    [$textRendering]: core.String,
    textSecurity: core.String,
    [$textSecurity]: core.String,
    textShadow: core.String,
    [$textShadow]: core.String,
    textStroke: core.String,
    [$textStroke]: core.String,
    textStrokeColor: core.String,
    [$textStrokeColor]: core.String,
    textStrokeWidth: core.String,
    [$textStrokeWidth]: core.String,
    textTransform: core.String,
    [$textTransform]: core.String,
    textUnderlineColor: core.String,
    [$textUnderlineColor]: core.String,
    textUnderlineMode: core.String,
    [$textUnderlineMode]: core.String,
    textUnderlinePosition: core.String,
    [$textUnderlinePosition]: core.String,
    textUnderlineStyle: core.String,
    [$textUnderlineStyle]: core.String,
    textUnderlineWidth: core.String,
    [$textUnderlineWidth]: core.String,
    top: core.String,
    [$top]: core.String,
    touchAction: core.String,
    [$touchAction]: core.String,
    touchActionDelay: core.String,
    [$touchActionDelay]: core.String,
    transform: core.String,
    [$transform]: core.String,
    transformOrigin: core.String,
    [$transformOrigin]: core.String,
    transformOriginX: core.String,
    [$transformOriginX]: core.String,
    transformOriginY: core.String,
    [$transformOriginY]: core.String,
    transformOriginZ: core.String,
    [$transformOriginZ]: core.String,
    transformStyle: core.String,
    [$transformStyle]: core.String,
    transition: core.String,
    [$transition]: core.String,
    transitionDelay: core.String,
    [$transitionDelay]: core.String,
    transitionDuration: core.String,
    [$transitionDuration]: core.String,
    transitionProperty: core.String,
    [$transitionProperty]: core.String,
    transitionTimingFunction: core.String,
    [$transitionTimingFunction]: core.String,
    unicodeBidi: core.String,
    [$unicodeBidi]: core.String,
    unicodeRange: core.String,
    [$unicodeRange]: core.String,
    userDrag: core.String,
    [$userDrag]: core.String,
    userModify: core.String,
    [$userModify]: core.String,
    userSelect: core.String,
    [$userSelect]: core.String,
    userZoom: core.String,
    [$userZoom]: core.String,
    verticalAlign: core.String,
    [$verticalAlign]: core.String,
    visibility: core.String,
    [$visibility]: core.String,
    whiteSpace: core.String,
    [$whiteSpace]: core.String,
    widows: core.String,
    [$widows]: core.String,
    width: core.String,
    [$width]: core.String,
    willChange: core.String,
    [$willChange]: core.String,
    wordBreak: core.String,
    [$wordBreak]: core.String,
    wordSpacing: core.String,
    [$wordSpacing]: core.String,
    wordWrap: core.String,
    [$wordWrap]: core.String,
    wrapFlow: core.String,
    [$wrapFlow]: core.String,
    wrapThrough: core.String,
    [$wrapThrough]: core.String,
    writingMode: core.String,
    [$writingMode]: core.String,
    zIndex: core.String,
    [$zIndex]: core.String,
    zoom: core.String,
    [$zoom]: core.String
  }));
  dart.defineExtensionAccessors(html$.CssStyleDeclarationBase, [
    'alignContent',
    'alignItems',
    'alignSelf',
    'animation',
    'animationDelay',
    'animationDirection',
    'animationDuration',
    'animationFillMode',
    'animationIterationCount',
    'animationName',
    'animationPlayState',
    'animationTimingFunction',
    'appRegion',
    'appearance',
    'aspectRatio',
    'backfaceVisibility',
    'background',
    'backgroundAttachment',
    'backgroundBlendMode',
    'backgroundClip',
    'backgroundColor',
    'backgroundComposite',
    'backgroundImage',
    'backgroundOrigin',
    'backgroundPosition',
    'backgroundPositionX',
    'backgroundPositionY',
    'backgroundRepeat',
    'backgroundRepeatX',
    'backgroundRepeatY',
    'backgroundSize',
    'border',
    'borderAfter',
    'borderAfterColor',
    'borderAfterStyle',
    'borderAfterWidth',
    'borderBefore',
    'borderBeforeColor',
    'borderBeforeStyle',
    'borderBeforeWidth',
    'borderBottom',
    'borderBottomColor',
    'borderBottomLeftRadius',
    'borderBottomRightRadius',
    'borderBottomStyle',
    'borderBottomWidth',
    'borderCollapse',
    'borderColor',
    'borderEnd',
    'borderEndColor',
    'borderEndStyle',
    'borderEndWidth',
    'borderFit',
    'borderHorizontalSpacing',
    'borderImage',
    'borderImageOutset',
    'borderImageRepeat',
    'borderImageSlice',
    'borderImageSource',
    'borderImageWidth',
    'borderLeft',
    'borderLeftColor',
    'borderLeftStyle',
    'borderLeftWidth',
    'borderRadius',
    'borderRight',
    'borderRightColor',
    'borderRightStyle',
    'borderRightWidth',
    'borderSpacing',
    'borderStart',
    'borderStartColor',
    'borderStartStyle',
    'borderStartWidth',
    'borderStyle',
    'borderTop',
    'borderTopColor',
    'borderTopLeftRadius',
    'borderTopRightRadius',
    'borderTopStyle',
    'borderTopWidth',
    'borderVerticalSpacing',
    'borderWidth',
    'bottom',
    'boxAlign',
    'boxDecorationBreak',
    'boxDirection',
    'boxFlex',
    'boxFlexGroup',
    'boxLines',
    'boxOrdinalGroup',
    'boxOrient',
    'boxPack',
    'boxReflect',
    'boxShadow',
    'boxSizing',
    'captionSide',
    'clear',
    'clip',
    'clipPath',
    'color',
    'columnBreakAfter',
    'columnBreakBefore',
    'columnBreakInside',
    'columnCount',
    'columnFill',
    'columnGap',
    'columnRule',
    'columnRuleColor',
    'columnRuleStyle',
    'columnRuleWidth',
    'columnSpan',
    'columnWidth',
    'columns',
    'content',
    'counterIncrement',
    'counterReset',
    'cursor',
    'direction',
    'display',
    'emptyCells',
    'filter',
    'flex',
    'flexBasis',
    'flexDirection',
    'flexFlow',
    'flexGrow',
    'flexShrink',
    'flexWrap',
    'float',
    'font',
    'fontFamily',
    'fontFeatureSettings',
    'fontKerning',
    'fontSize',
    'fontSizeDelta',
    'fontSmoothing',
    'fontStretch',
    'fontStyle',
    'fontVariant',
    'fontVariantLigatures',
    'fontWeight',
    'grid',
    'gridArea',
    'gridAutoColumns',
    'gridAutoFlow',
    'gridAutoRows',
    'gridColumn',
    'gridColumnEnd',
    'gridColumnStart',
    'gridRow',
    'gridRowEnd',
    'gridRowStart',
    'gridTemplate',
    'gridTemplateAreas',
    'gridTemplateColumns',
    'gridTemplateRows',
    'height',
    'highlight',
    'hyphenateCharacter',
    'imageRendering',
    'isolation',
    'justifyContent',
    'justifySelf',
    'left',
    'letterSpacing',
    'lineBoxContain',
    'lineBreak',
    'lineClamp',
    'lineHeight',
    'listStyle',
    'listStyleImage',
    'listStylePosition',
    'listStyleType',
    'locale',
    'logicalHeight',
    'logicalWidth',
    'margin',
    'marginAfter',
    'marginAfterCollapse',
    'marginBefore',
    'marginBeforeCollapse',
    'marginBottom',
    'marginBottomCollapse',
    'marginCollapse',
    'marginEnd',
    'marginLeft',
    'marginRight',
    'marginStart',
    'marginTop',
    'marginTopCollapse',
    'mask',
    'maskBoxImage',
    'maskBoxImageOutset',
    'maskBoxImageRepeat',
    'maskBoxImageSlice',
    'maskBoxImageSource',
    'maskBoxImageWidth',
    'maskClip',
    'maskComposite',
    'maskImage',
    'maskOrigin',
    'maskPosition',
    'maskPositionX',
    'maskPositionY',
    'maskRepeat',
    'maskRepeatX',
    'maskRepeatY',
    'maskSize',
    'maskSourceType',
    'maxHeight',
    'maxLogicalHeight',
    'maxLogicalWidth',
    'maxWidth',
    'maxZoom',
    'minHeight',
    'minLogicalHeight',
    'minLogicalWidth',
    'minWidth',
    'minZoom',
    'mixBlendMode',
    'objectFit',
    'objectPosition',
    'opacity',
    'order',
    'orientation',
    'orphans',
    'outline',
    'outlineColor',
    'outlineOffset',
    'outlineStyle',
    'outlineWidth',
    'overflow',
    'overflowWrap',
    'overflowX',
    'overflowY',
    'padding',
    'paddingAfter',
    'paddingBefore',
    'paddingBottom',
    'paddingEnd',
    'paddingLeft',
    'paddingRight',
    'paddingStart',
    'paddingTop',
    'page',
    'pageBreakAfter',
    'pageBreakBefore',
    'pageBreakInside',
    'perspective',
    'perspectiveOrigin',
    'perspectiveOriginX',
    'perspectiveOriginY',
    'pointerEvents',
    'position',
    'printColorAdjust',
    'quotes',
    'resize',
    'right',
    'rtlOrdering',
    'rubyPosition',
    'scrollBehavior',
    'shapeImageThreshold',
    'shapeMargin',
    'shapeOutside',
    'size',
    'speak',
    'src',
    'tabSize',
    'tableLayout',
    'tapHighlightColor',
    'textAlign',
    'textAlignLast',
    'textCombine',
    'textDecoration',
    'textDecorationColor',
    'textDecorationLine',
    'textDecorationStyle',
    'textDecorationsInEffect',
    'textEmphasis',
    'textEmphasisColor',
    'textEmphasisPosition',
    'textEmphasisStyle',
    'textFillColor',
    'textIndent',
    'textJustify',
    'textLineThroughColor',
    'textLineThroughMode',
    'textLineThroughStyle',
    'textLineThroughWidth',
    'textOrientation',
    'textOverflow',
    'textOverlineColor',
    'textOverlineMode',
    'textOverlineStyle',
    'textOverlineWidth',
    'textRendering',
    'textSecurity',
    'textShadow',
    'textStroke',
    'textStrokeColor',
    'textStrokeWidth',
    'textTransform',
    'textUnderlineColor',
    'textUnderlineMode',
    'textUnderlinePosition',
    'textUnderlineStyle',
    'textUnderlineWidth',
    'top',
    'touchAction',
    'touchActionDelay',
    'transform',
    'transformOrigin',
    'transformOriginX',
    'transformOriginY',
    'transformOriginZ',
    'transformStyle',
    'transition',
    'transitionDelay',
    'transitionDuration',
    'transitionProperty',
    'transitionTimingFunction',
    'unicodeBidi',
    'unicodeRange',
    'userDrag',
    'userModify',
    'userSelect',
    'userZoom',
    'verticalAlign',
    'visibility',
    'whiteSpace',
    'widows',
    'width',
    'willChange',
    'wordBreak',
    'wordSpacing',
    'wordWrap',
    'wrapFlow',
    'wrapThrough',
    'writingMode',
    'zIndex',
    'zoom'
  ]);
  const Interceptor_CssStyleDeclarationBase$ = class Interceptor_CssStyleDeclarationBase extends _interceptors.Interceptor {};
  (Interceptor_CssStyleDeclarationBase$.new = function() {
    Interceptor_CssStyleDeclarationBase$.__proto__.new.call(this);
  }).prototype = Interceptor_CssStyleDeclarationBase$.prototype;
  dart.applyMixin(Interceptor_CssStyleDeclarationBase$, html$.CssStyleDeclarationBase);
  html$.CssStyleDeclaration = class CssStyleDeclaration extends Interceptor_CssStyleDeclarationBase$ {
    static new() {
      return html$.CssStyleDeclaration.css("");
    }
    static css(css) {
      let style = html$.DivElement.new().style;
      style.cssText = css;
      return style;
    }
    [$getPropertyValue](propertyName) {
      let propValue = this[_getPropertyValueHelper](propertyName);
      return propValue != null ? propValue : "";
    }
    [_getPropertyValueHelper](propertyName) {
      return this[_getPropertyValue](this[_browserPropertyName](propertyName));
    }
    [$supportsProperty](propertyName) {
      return dart.test(this[_supportsProperty](propertyName)) || dart.test(this[_supportsProperty](html$.CssStyleDeclaration._camelCase(dart.str(html_common.Device.cssPrefix) + dart.str(propertyName))));
    }
    [_supportsProperty](propertyName) {
      return propertyName in this;
    }
    [$setProperty](propertyName, value, priority) {
      if (priority === void 0) priority = null;
      return this[_setPropertyHelper](this[_browserPropertyName](propertyName), value, priority);
    }
    [_browserPropertyName](propertyName) {
      let name = html$.CssStyleDeclaration._readCache(propertyName);
      if (typeof name == 'string') return name;
      name = this[_supportedBrowserPropertyName](propertyName);
      html$.CssStyleDeclaration._writeCache(propertyName, name);
      return name;
    }
    [_supportedBrowserPropertyName](propertyName) {
      if (dart.test(this[_supportsProperty](html$.CssStyleDeclaration._camelCase(propertyName)))) {
        return propertyName;
      }
      let prefixed = dart.str(html_common.Device.cssPrefix) + dart.str(propertyName);
      if (dart.test(this[_supportsProperty](prefixed))) {
        return prefixed;
      }
      return propertyName;
    }
    static _readCache(key) {
      return html$.CssStyleDeclaration._propertyCache[key];
    }
    static _writeCache(key, value) {
      html$.CssStyleDeclaration._propertyCache[key] = value;
    }
    static _camelCase(hyphenated) {
      let replacedMs = hyphenated.replace(/^-ms-/, "ms-");
      return replacedMs.replace(/-([\da-z])/ig, function(_, letter) {
        return letter.toUpperCase();
      });
    }
    [_setPropertyHelper](propertyName, value, priority) {
      if (priority === void 0) priority = null;
      if (value == null) value = "";
      if (priority == null) priority = "";
      this.setProperty(propertyName, value, priority);
    }
    static get supportsTransitions() {
      return html$.document.body.style[$supportsProperty]("transition");
    }
    get [$cssFloat]() {
      return this.cssFloat;
    }
    set [$cssFloat](value) {
      this.cssFloat = value;
    }
    get [$cssText]() {
      return this.cssText;
    }
    set [$cssText](value) {
      this.cssText = value;
    }
    get [$length]() {
      return this.length;
    }
    get [$parentRule]() {
      return this.parentRule;
    }
    [$getPropertyPriority](...args) {
      return this.getPropertyPriority.apply(this, args);
    }
    [_getPropertyValue](...args) {
      return this.getPropertyValue.apply(this, args);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
    [$removeProperty](...args) {
      return this.removeProperty.apply(this, args);
    }
    get [$background]() {
      return this[_background];
    }
    set [$background](value) {
      this[_background] = value == null ? "" : value;
    }
    get [_background]() {
      return this.background;
    }
    set [_background](value) {
      this.background = value;
    }
    get [$backgroundAttachment]() {
      return this[_backgroundAttachment];
    }
    set [$backgroundAttachment](value) {
      this[_backgroundAttachment] = value == null ? "" : value;
    }
    get [_backgroundAttachment]() {
      return this.backgroundAttachment;
    }
    set [_backgroundAttachment](value) {
      this.backgroundAttachment = value;
    }
    get [$backgroundColor]() {
      return this[_backgroundColor];
    }
    set [$backgroundColor](value) {
      this[_backgroundColor] = value == null ? "" : value;
    }
    get [_backgroundColor]() {
      return this.backgroundColor;
    }
    set [_backgroundColor](value) {
      this.backgroundColor = value;
    }
    get [$backgroundImage]() {
      return this[_backgroundImage];
    }
    set [$backgroundImage](value) {
      this[_backgroundImage] = value == null ? "" : value;
    }
    get [_backgroundImage]() {
      return this.backgroundImage;
    }
    set [_backgroundImage](value) {
      this.backgroundImage = value;
    }
    get [$backgroundPosition]() {
      return this[_backgroundPosition];
    }
    set [$backgroundPosition](value) {
      this[_backgroundPosition] = value == null ? "" : value;
    }
    get [_backgroundPosition]() {
      return this.backgroundPosition;
    }
    set [_backgroundPosition](value) {
      this.backgroundPosition = value;
    }
    get [$backgroundRepeat]() {
      return this[_backgroundRepeat];
    }
    set [$backgroundRepeat](value) {
      this[_backgroundRepeat] = value == null ? "" : value;
    }
    get [_backgroundRepeat]() {
      return this.backgroundRepeat;
    }
    set [_backgroundRepeat](value) {
      this.backgroundRepeat = value;
    }
    get [$border]() {
      return this[_border];
    }
    set [$border](value) {
      this[_border] = value == null ? "" : value;
    }
    get [_border]() {
      return this.border;
    }
    set [_border](value) {
      this.border = value;
    }
    get [$borderBottom]() {
      return this[_borderBottom];
    }
    set [$borderBottom](value) {
      this[_borderBottom] = value == null ? "" : value;
    }
    get [_borderBottom]() {
      return this.borderBottom;
    }
    set [_borderBottom](value) {
      this.borderBottom = value;
    }
    get [$borderBottomColor]() {
      return this[_borderBottomColor];
    }
    set [$borderBottomColor](value) {
      this[_borderBottomColor] = value == null ? "" : value;
    }
    get [_borderBottomColor]() {
      return this.borderBottomColor;
    }
    set [_borderBottomColor](value) {
      this.borderBottomColor = value;
    }
    get [$borderBottomStyle]() {
      return this[_borderBottomStyle];
    }
    set [$borderBottomStyle](value) {
      this[_borderBottomStyle] = value == null ? "" : value;
    }
    get [_borderBottomStyle]() {
      return this.borderBottomStyle;
    }
    set [_borderBottomStyle](value) {
      this.borderBottomStyle = value;
    }
    get [$borderBottomWidth]() {
      return this[_borderBottomWidth];
    }
    set [$borderBottomWidth](value) {
      this[_borderBottomWidth] = value == null ? "" : value;
    }
    get [_borderBottomWidth]() {
      return this.borderBottomWidth;
    }
    set [_borderBottomWidth](value) {
      this.borderBottomWidth = value;
    }
    get [$borderCollapse]() {
      return this[_borderCollapse];
    }
    set [$borderCollapse](value) {
      this[_borderCollapse] = value == null ? "" : value;
    }
    get [_borderCollapse]() {
      return this.borderCollapse;
    }
    set [_borderCollapse](value) {
      this.borderCollapse = value;
    }
    get [$borderColor]() {
      return this[_borderColor];
    }
    set [$borderColor](value) {
      this[_borderColor] = value == null ? "" : value;
    }
    get [_borderColor]() {
      return this.borderColor;
    }
    set [_borderColor](value) {
      this.borderColor = value;
    }
    get [$borderLeft]() {
      return this[_borderLeft];
    }
    set [$borderLeft](value) {
      this[_borderLeft] = value == null ? "" : value;
    }
    get [_borderLeft]() {
      return this.borderLeft;
    }
    set [_borderLeft](value) {
      this.borderLeft = value;
    }
    get [$borderLeftColor]() {
      return this[_borderLeftColor];
    }
    set [$borderLeftColor](value) {
      this[_borderLeftColor] = value == null ? "" : value;
    }
    get [_borderLeftColor]() {
      return this.borderLeftColor;
    }
    set [_borderLeftColor](value) {
      this.borderLeftColor = value;
    }
    get [$borderLeftStyle]() {
      return this[_borderLeftStyle];
    }
    set [$borderLeftStyle](value) {
      this[_borderLeftStyle] = value == null ? "" : value;
    }
    get [_borderLeftStyle]() {
      return this.borderLeftStyle;
    }
    set [_borderLeftStyle](value) {
      this.borderLeftStyle = value;
    }
    get [$borderLeftWidth]() {
      return this[_borderLeftWidth];
    }
    set [$borderLeftWidth](value) {
      this[_borderLeftWidth] = value == null ? "" : value;
    }
    get [_borderLeftWidth]() {
      return this.borderLeftWidth;
    }
    set [_borderLeftWidth](value) {
      this.borderLeftWidth = value;
    }
    get [$borderRight]() {
      return this[_borderRight];
    }
    set [$borderRight](value) {
      this[_borderRight] = value == null ? "" : value;
    }
    get [_borderRight]() {
      return this.borderRight;
    }
    set [_borderRight](value) {
      this.borderRight = value;
    }
    get [$borderRightColor]() {
      return this[_borderRightColor];
    }
    set [$borderRightColor](value) {
      this[_borderRightColor] = value == null ? "" : value;
    }
    get [_borderRightColor]() {
      return this.borderRightColor;
    }
    set [_borderRightColor](value) {
      this.borderRightColor = value;
    }
    get [$borderRightStyle]() {
      return this[_borderRightStyle];
    }
    set [$borderRightStyle](value) {
      this[_borderRightStyle] = value == null ? "" : value;
    }
    get [_borderRightStyle]() {
      return this.borderRightStyle;
    }
    set [_borderRightStyle](value) {
      this.borderRightStyle = value;
    }
    get [$borderRightWidth]() {
      return this[_borderRightWidth];
    }
    set [$borderRightWidth](value) {
      this[_borderRightWidth] = value == null ? "" : value;
    }
    get [_borderRightWidth]() {
      return this.borderRightWidth;
    }
    set [_borderRightWidth](value) {
      this.borderRightWidth = value;
    }
    get [$borderSpacing]() {
      return this[_borderSpacing];
    }
    set [$borderSpacing](value) {
      this[_borderSpacing] = value == null ? "" : value;
    }
    get [_borderSpacing]() {
      return this.borderSpacing;
    }
    set [_borderSpacing](value) {
      this.borderSpacing = value;
    }
    get [$borderStyle]() {
      return this[_borderStyle];
    }
    set [$borderStyle](value) {
      this[_borderStyle] = value == null ? "" : value;
    }
    get [_borderStyle]() {
      return this.borderStyle;
    }
    set [_borderStyle](value) {
      this.borderStyle = value;
    }
    get [$borderTop]() {
      return this[_borderTop];
    }
    set [$borderTop](value) {
      this[_borderTop] = value == null ? "" : value;
    }
    get [_borderTop]() {
      return this.borderTop;
    }
    set [_borderTop](value) {
      this.borderTop = value;
    }
    get [$borderTopColor]() {
      return this[_borderTopColor];
    }
    set [$borderTopColor](value) {
      this[_borderTopColor] = value == null ? "" : value;
    }
    get [_borderTopColor]() {
      return this.borderTopColor;
    }
    set [_borderTopColor](value) {
      this.borderTopColor = value;
    }
    get [$borderTopStyle]() {
      return this[_borderTopStyle];
    }
    set [$borderTopStyle](value) {
      this[_borderTopStyle] = value == null ? "" : value;
    }
    get [_borderTopStyle]() {
      return this.borderTopStyle;
    }
    set [_borderTopStyle](value) {
      this.borderTopStyle = value;
    }
    get [$borderTopWidth]() {
      return this[_borderTopWidth];
    }
    set [$borderTopWidth](value) {
      this[_borderTopWidth] = value == null ? "" : value;
    }
    get [_borderTopWidth]() {
      return this.borderTopWidth;
    }
    set [_borderTopWidth](value) {
      this.borderTopWidth = value;
    }
    get [$borderWidth]() {
      return this[_borderWidth];
    }
    set [$borderWidth](value) {
      this[_borderWidth] = value == null ? "" : value;
    }
    get [_borderWidth]() {
      return this.borderWidth;
    }
    set [_borderWidth](value) {
      this.borderWidth = value;
    }
    get [$bottom]() {
      return this[_bottom];
    }
    set [$bottom](value) {
      this[_bottom] = value == null ? "" : value;
    }
    get [_bottom]() {
      return this.bottom;
    }
    set [_bottom](value) {
      this.bottom = value;
    }
    get [$captionSide]() {
      return this[_captionSide];
    }
    set [$captionSide](value) {
      this[_captionSide] = value == null ? "" : value;
    }
    get [_captionSide]() {
      return this.captionSide;
    }
    set [_captionSide](value) {
      this.captionSide = value;
    }
    get [$clear]() {
      return this[_clear$0];
    }
    set [$clear](value) {
      this[_clear$0] = value == null ? "" : value;
    }
    get [_clear$0]() {
      return this.clear;
    }
    set [_clear$0](value) {
      this.clear = value;
    }
    get [$clip]() {
      return this[_clip];
    }
    set [$clip](value) {
      this[_clip] = value == null ? "" : value;
    }
    get [_clip]() {
      return this.clip;
    }
    set [_clip](value) {
      this.clip = value;
    }
    get [$color]() {
      return this[_color];
    }
    set [$color](value) {
      this[_color] = value == null ? "" : value;
    }
    get [_color]() {
      return this.color;
    }
    set [_color](value) {
      this.color = value;
    }
    get [$content]() {
      return this[_content];
    }
    set [$content](value) {
      this[_content] = value == null ? "" : value;
    }
    get [_content]() {
      return this.content;
    }
    set [_content](value) {
      this.content = value;
    }
    get [$cursor]() {
      return this[_cursor];
    }
    set [$cursor](value) {
      this[_cursor] = value == null ? "" : value;
    }
    get [_cursor]() {
      return this.cursor;
    }
    set [_cursor](value) {
      this.cursor = value;
    }
    get [$direction]() {
      return this[_direction];
    }
    set [$direction](value) {
      this[_direction] = value == null ? "" : value;
    }
    get [_direction]() {
      return this.direction;
    }
    set [_direction](value) {
      this.direction = value;
    }
    get [$display]() {
      return this[_display];
    }
    set [$display](value) {
      this[_display] = value == null ? "" : value;
    }
    get [_display]() {
      return this.display;
    }
    set [_display](value) {
      this.display = value;
    }
    get [$emptyCells]() {
      return this[_emptyCells];
    }
    set [$emptyCells](value) {
      this[_emptyCells] = value == null ? "" : value;
    }
    get [_emptyCells]() {
      return this.emptyCells;
    }
    set [_emptyCells](value) {
      this.emptyCells = value;
    }
    get [$font]() {
      return this[_font];
    }
    set [$font](value) {
      this[_font] = value == null ? "" : value;
    }
    get [_font]() {
      return this.font;
    }
    set [_font](value) {
      this.font = value;
    }
    get [$fontFamily]() {
      return this[_fontFamily];
    }
    set [$fontFamily](value) {
      this[_fontFamily] = value == null ? "" : value;
    }
    get [_fontFamily]() {
      return this.fontFamily;
    }
    set [_fontFamily](value) {
      this.fontFamily = value;
    }
    get [$fontSize]() {
      return this[_fontSize];
    }
    set [$fontSize](value) {
      this[_fontSize] = value == null ? "" : value;
    }
    get [_fontSize]() {
      return this.fontSize;
    }
    set [_fontSize](value) {
      this.fontSize = value;
    }
    get [$fontStyle]() {
      return this[_fontStyle];
    }
    set [$fontStyle](value) {
      this[_fontStyle] = value == null ? "" : value;
    }
    get [_fontStyle]() {
      return this.fontStyle;
    }
    set [_fontStyle](value) {
      this.fontStyle = value;
    }
    get [$fontVariant]() {
      return this[_fontVariant];
    }
    set [$fontVariant](value) {
      this[_fontVariant] = value == null ? "" : value;
    }
    get [_fontVariant]() {
      return this.fontVariant;
    }
    set [_fontVariant](value) {
      this.fontVariant = value;
    }
    get [$fontWeight]() {
      return this[_fontWeight];
    }
    set [$fontWeight](value) {
      this[_fontWeight] = value == null ? "" : value;
    }
    get [_fontWeight]() {
      return this.fontWeight;
    }
    set [_fontWeight](value) {
      this.fontWeight = value;
    }
    get [$height]() {
      return this[_height$];
    }
    set [$height](value) {
      this[_height$] = value == null ? "" : value;
    }
    get [_height$]() {
      return this.height;
    }
    set [_height$](value) {
      this.height = value;
    }
    get [$left]() {
      return this[_left];
    }
    set [$left](value) {
      this[_left] = value == null ? "" : value;
    }
    get [_left]() {
      return this.left;
    }
    set [_left](value) {
      this.left = value;
    }
    get [$letterSpacing]() {
      return this[_letterSpacing];
    }
    set [$letterSpacing](value) {
      this[_letterSpacing] = value == null ? "" : value;
    }
    get [_letterSpacing]() {
      return this.letterSpacing;
    }
    set [_letterSpacing](value) {
      this.letterSpacing = value;
    }
    get [$lineHeight]() {
      return this[_lineHeight];
    }
    set [$lineHeight](value) {
      this[_lineHeight] = value == null ? "" : value;
    }
    get [_lineHeight]() {
      return this.lineHeight;
    }
    set [_lineHeight](value) {
      this.lineHeight = value;
    }
    get [$listStyle]() {
      return this[_listStyle];
    }
    set [$listStyle](value) {
      this[_listStyle] = value == null ? "" : value;
    }
    get [_listStyle]() {
      return this.listStyle;
    }
    set [_listStyle](value) {
      this.listStyle = value;
    }
    get [$listStyleImage]() {
      return this[_listStyleImage];
    }
    set [$listStyleImage](value) {
      this[_listStyleImage] = value == null ? "" : value;
    }
    get [_listStyleImage]() {
      return this.listStyleImage;
    }
    set [_listStyleImage](value) {
      this.listStyleImage = value;
    }
    get [$listStylePosition]() {
      return this[_listStylePosition];
    }
    set [$listStylePosition](value) {
      this[_listStylePosition] = value == null ? "" : value;
    }
    get [_listStylePosition]() {
      return this.listStylePosition;
    }
    set [_listStylePosition](value) {
      this.listStylePosition = value;
    }
    get [$listStyleType]() {
      return this[_listStyleType];
    }
    set [$listStyleType](value) {
      this[_listStyleType] = value == null ? "" : value;
    }
    get [_listStyleType]() {
      return this.listStyleType;
    }
    set [_listStyleType](value) {
      this.listStyleType = value;
    }
    get [$margin]() {
      return this[_margin];
    }
    set [$margin](value) {
      this[_margin] = value == null ? "" : value;
    }
    get [_margin]() {
      return this.margin;
    }
    set [_margin](value) {
      this.margin = value;
    }
    get [$marginBottom]() {
      return this[_marginBottom];
    }
    set [$marginBottom](value) {
      this[_marginBottom] = value == null ? "" : value;
    }
    get [_marginBottom]() {
      return this.marginBottom;
    }
    set [_marginBottom](value) {
      this.marginBottom = value;
    }
    get [$marginLeft]() {
      return this[_marginLeft];
    }
    set [$marginLeft](value) {
      this[_marginLeft] = value == null ? "" : value;
    }
    get [_marginLeft]() {
      return this.marginLeft;
    }
    set [_marginLeft](value) {
      this.marginLeft = value;
    }
    get [$marginRight]() {
      return this[_marginRight];
    }
    set [$marginRight](value) {
      this[_marginRight] = value == null ? "" : value;
    }
    get [_marginRight]() {
      return this.marginRight;
    }
    set [_marginRight](value) {
      this.marginRight = value;
    }
    get [$marginTop]() {
      return this[_marginTop];
    }
    set [$marginTop](value) {
      this[_marginTop] = value == null ? "" : value;
    }
    get [_marginTop]() {
      return this.marginTop;
    }
    set [_marginTop](value) {
      this.marginTop = value;
    }
    get [$maxHeight]() {
      return this[_maxHeight];
    }
    set [$maxHeight](value) {
      this[_maxHeight] = value == null ? "" : value;
    }
    get [_maxHeight]() {
      return this.maxHeight;
    }
    set [_maxHeight](value) {
      this.maxHeight = value;
    }
    get [$maxWidth]() {
      return this[_maxWidth];
    }
    set [$maxWidth](value) {
      this[_maxWidth] = value == null ? "" : value;
    }
    get [_maxWidth]() {
      return this.maxWidth;
    }
    set [_maxWidth](value) {
      this.maxWidth = value;
    }
    get [$minHeight]() {
      return this[_minHeight];
    }
    set [$minHeight](value) {
      this[_minHeight] = value == null ? "" : value;
    }
    get [_minHeight]() {
      return this.minHeight;
    }
    set [_minHeight](value) {
      this.minHeight = value;
    }
    get [$minWidth]() {
      return this[_minWidth];
    }
    set [$minWidth](value) {
      this[_minWidth] = value == null ? "" : value;
    }
    get [_minWidth]() {
      return this.minWidth;
    }
    set [_minWidth](value) {
      this.minWidth = value;
    }
    get [$outline]() {
      return this[_outline];
    }
    set [$outline](value) {
      this[_outline] = value == null ? "" : value;
    }
    get [_outline]() {
      return this.outline;
    }
    set [_outline](value) {
      this.outline = value;
    }
    get [$outlineColor]() {
      return this[_outlineColor];
    }
    set [$outlineColor](value) {
      this[_outlineColor] = value == null ? "" : value;
    }
    get [_outlineColor]() {
      return this.outlineColor;
    }
    set [_outlineColor](value) {
      this.outlineColor = value;
    }
    get [$outlineStyle]() {
      return this[_outlineStyle];
    }
    set [$outlineStyle](value) {
      this[_outlineStyle] = value == null ? "" : value;
    }
    get [_outlineStyle]() {
      return this.outlineStyle;
    }
    set [_outlineStyle](value) {
      this.outlineStyle = value;
    }
    get [$outlineWidth]() {
      return this[_outlineWidth];
    }
    set [$outlineWidth](value) {
      this[_outlineWidth] = value == null ? "" : value;
    }
    get [_outlineWidth]() {
      return this.outlineWidth;
    }
    set [_outlineWidth](value) {
      this.outlineWidth = value;
    }
    get [$overflow]() {
      return this[_overflow];
    }
    set [$overflow](value) {
      this[_overflow] = value == null ? "" : value;
    }
    get [_overflow]() {
      return this.overflow;
    }
    set [_overflow](value) {
      this.overflow = value;
    }
    get [$padding]() {
      return this[_padding];
    }
    set [$padding](value) {
      this[_padding] = value == null ? "" : value;
    }
    get [_padding]() {
      return this.padding;
    }
    set [_padding](value) {
      this.padding = value;
    }
    get [$paddingBottom]() {
      return this[_paddingBottom];
    }
    set [$paddingBottom](value) {
      this[_paddingBottom] = value == null ? "" : value;
    }
    get [_paddingBottom]() {
      return this.paddingBottom;
    }
    set [_paddingBottom](value) {
      this.paddingBottom = value;
    }
    get [$paddingLeft]() {
      return this[_paddingLeft];
    }
    set [$paddingLeft](value) {
      this[_paddingLeft] = value == null ? "" : value;
    }
    get [_paddingLeft]() {
      return this.paddingLeft;
    }
    set [_paddingLeft](value) {
      this.paddingLeft = value;
    }
    get [$paddingRight]() {
      return this[_paddingRight];
    }
    set [$paddingRight](value) {
      this[_paddingRight] = value == null ? "" : value;
    }
    get [_paddingRight]() {
      return this.paddingRight;
    }
    set [_paddingRight](value) {
      this.paddingRight = value;
    }
    get [$paddingTop]() {
      return this[_paddingTop];
    }
    set [$paddingTop](value) {
      this[_paddingTop] = value == null ? "" : value;
    }
    get [_paddingTop]() {
      return this.paddingTop;
    }
    set [_paddingTop](value) {
      this.paddingTop = value;
    }
    get [$pageBreakAfter]() {
      return this[_pageBreakAfter];
    }
    set [$pageBreakAfter](value) {
      this[_pageBreakAfter] = value == null ? "" : value;
    }
    get [_pageBreakAfter]() {
      return this.pageBreakAfter;
    }
    set [_pageBreakAfter](value) {
      this.pageBreakAfter = value;
    }
    get [$pageBreakBefore]() {
      return this[_pageBreakBefore];
    }
    set [$pageBreakBefore](value) {
      this[_pageBreakBefore] = value == null ? "" : value;
    }
    get [_pageBreakBefore]() {
      return this.pageBreakBefore;
    }
    set [_pageBreakBefore](value) {
      this.pageBreakBefore = value;
    }
    get [$pageBreakInside]() {
      return this[_pageBreakInside];
    }
    set [$pageBreakInside](value) {
      this[_pageBreakInside] = value == null ? "" : value;
    }
    get [_pageBreakInside]() {
      return this.pageBreakInside;
    }
    set [_pageBreakInside](value) {
      this.pageBreakInside = value;
    }
    get [$position]() {
      return this[_position$1];
    }
    set [$position](value) {
      this[_position$1] = value == null ? "" : value;
    }
    get [_position$1]() {
      return this.position;
    }
    set [_position$1](value) {
      this.position = value;
    }
    get [$quotes]() {
      return this[_quotes];
    }
    set [$quotes](value) {
      this[_quotes] = value == null ? "" : value;
    }
    get [_quotes]() {
      return this.quotes;
    }
    set [_quotes](value) {
      this.quotes = value;
    }
    get [$right]() {
      return this[_right];
    }
    set [$right](value) {
      this[_right] = value == null ? "" : value;
    }
    get [_right]() {
      return this.right;
    }
    set [_right](value) {
      this.right = value;
    }
    get [$tableLayout]() {
      return this[_tableLayout];
    }
    set [$tableLayout](value) {
      this[_tableLayout] = value == null ? "" : value;
    }
    get [_tableLayout]() {
      return this.tableLayout;
    }
    set [_tableLayout](value) {
      this.tableLayout = value;
    }
    get [$textAlign]() {
      return this[_textAlign];
    }
    set [$textAlign](value) {
      this[_textAlign] = value == null ? "" : value;
    }
    get [_textAlign]() {
      return this.textAlign;
    }
    set [_textAlign](value) {
      this.textAlign = value;
    }
    get [$textDecoration]() {
      return this[_textDecoration];
    }
    set [$textDecoration](value) {
      this[_textDecoration] = value == null ? "" : value;
    }
    get [_textDecoration]() {
      return this.textDecoration;
    }
    set [_textDecoration](value) {
      this.textDecoration = value;
    }
    get [$textIndent]() {
      return this[_textIndent];
    }
    set [$textIndent](value) {
      this[_textIndent] = value == null ? "" : value;
    }
    get [_textIndent]() {
      return this.textIndent;
    }
    set [_textIndent](value) {
      this.textIndent = value;
    }
    get [$textTransform]() {
      return this[_textTransform];
    }
    set [$textTransform](value) {
      this[_textTransform] = value == null ? "" : value;
    }
    get [_textTransform]() {
      return this.textTransform;
    }
    set [_textTransform](value) {
      this.textTransform = value;
    }
    get [$top]() {
      return this[_top];
    }
    set [$top](value) {
      this[_top] = value == null ? "" : value;
    }
    get [_top]() {
      return this.top;
    }
    set [_top](value) {
      this.top = value;
    }
    get [$unicodeBidi]() {
      return this[_unicodeBidi];
    }
    set [$unicodeBidi](value) {
      this[_unicodeBidi] = value == null ? "" : value;
    }
    get [_unicodeBidi]() {
      return this.unicodeBidi;
    }
    set [_unicodeBidi](value) {
      this.unicodeBidi = value;
    }
    get [$verticalAlign]() {
      return this[_verticalAlign];
    }
    set [$verticalAlign](value) {
      this[_verticalAlign] = value == null ? "" : value;
    }
    get [_verticalAlign]() {
      return this.verticalAlign;
    }
    set [_verticalAlign](value) {
      this.verticalAlign = value;
    }
    get [$visibility]() {
      return this[_visibility];
    }
    set [$visibility](value) {
      this[_visibility] = value == null ? "" : value;
    }
    get [_visibility]() {
      return this.visibility;
    }
    set [_visibility](value) {
      this.visibility = value;
    }
    get [$whiteSpace]() {
      return this[_whiteSpace];
    }
    set [$whiteSpace](value) {
      this[_whiteSpace] = value == null ? "" : value;
    }
    get [_whiteSpace]() {
      return this.whiteSpace;
    }
    set [_whiteSpace](value) {
      this.whiteSpace = value;
    }
    get [$width]() {
      return this[_width$];
    }
    set [$width](value) {
      this[_width$] = value == null ? "" : value;
    }
    get [_width$]() {
      return this.width;
    }
    set [_width$](value) {
      this.width = value;
    }
    get [$wordSpacing]() {
      return this[_wordSpacing];
    }
    set [$wordSpacing](value) {
      this[_wordSpacing] = value == null ? "" : value;
    }
    get [_wordSpacing]() {
      return this.wordSpacing;
    }
    set [_wordSpacing](value) {
      this.wordSpacing = value;
    }
    get [$zIndex]() {
      return this[_zIndex];
    }
    set [$zIndex](value) {
      this[_zIndex] = value == null ? "" : value;
    }
    get [_zIndex]() {
      return this.zIndex;
    }
    set [_zIndex](value) {
      this.zIndex = value;
    }
  };
  dart.addTypeTests(html$.CssStyleDeclaration);
  const cssFloat = Symbol("CssStyleDeclaration.cssFloat");
  const cssText$ = Symbol("CssStyleDeclaration.cssText");
  const length$2 = Symbol("CssStyleDeclaration.length");
  const parentRule$ = Symbol("CssStyleDeclaration.parentRule");
  dart.setMethodSignature(html$.CssStyleDeclaration, () => ({
    __proto__: dart.getMethods(html$.CssStyleDeclaration.__proto__),
    [$getPropertyValue]: dart.fnType(core.String, [core.String]),
    [_getPropertyValueHelper]: dart.fnType(core.String, [core.String]),
    [$supportsProperty]: dart.fnType(core.bool, [core.String]),
    [_supportsProperty]: dart.fnType(core.bool, [core.String]),
    [$setProperty]: dart.fnType(dart.void, [core.String, core.String], [core.String]),
    [_browserPropertyName]: dart.fnType(core.String, [core.String]),
    [_supportedBrowserPropertyName]: dart.fnType(core.String, [core.String]),
    [_setPropertyHelper]: dart.fnType(dart.void, [core.String, core.String], [core.String]),
    [$getPropertyPriority]: dart.fnType(core.String, [core.String]),
    [_getPropertyValue]: dart.fnType(core.String, [core.String]),
    [$item]: dart.fnType(core.String, [core.int]),
    [$removeProperty]: dart.fnType(core.String, [core.String])
  }));
  dart.setFieldSignature(html$.CssStyleDeclaration, () => ({
    __proto__: dart.getFields(html$.CssStyleDeclaration.__proto__),
    [$cssFloat]: dart.fieldType(core.String),
    [$cssText]: dart.fieldType(core.String),
    [$length]: dart.finalFieldType(core.int),
    [$parentRule]: dart.finalFieldType(html$.CssRule),
    [_background]: dart.fieldType(core.String),
    [_backgroundAttachment]: dart.fieldType(core.String),
    [_backgroundColor]: dart.fieldType(core.String),
    [_backgroundImage]: dart.fieldType(core.String),
    [_backgroundPosition]: dart.fieldType(core.String),
    [_backgroundRepeat]: dart.fieldType(core.String),
    [_border]: dart.fieldType(core.String),
    [_borderBottom]: dart.fieldType(core.String),
    [_borderBottomColor]: dart.fieldType(core.String),
    [_borderBottomStyle]: dart.fieldType(core.String),
    [_borderBottomWidth]: dart.fieldType(core.String),
    [_borderCollapse]: dart.fieldType(core.String),
    [_borderColor]: dart.fieldType(core.String),
    [_borderLeft]: dart.fieldType(core.String),
    [_borderLeftColor]: dart.fieldType(core.String),
    [_borderLeftStyle]: dart.fieldType(core.String),
    [_borderLeftWidth]: dart.fieldType(core.String),
    [_borderRight]: dart.fieldType(core.String),
    [_borderRightColor]: dart.fieldType(core.String),
    [_borderRightStyle]: dart.fieldType(core.String),
    [_borderRightWidth]: dart.fieldType(core.String),
    [_borderSpacing]: dart.fieldType(core.String),
    [_borderStyle]: dart.fieldType(core.String),
    [_borderTop]: dart.fieldType(core.String),
    [_borderTopColor]: dart.fieldType(core.String),
    [_borderTopStyle]: dart.fieldType(core.String),
    [_borderTopWidth]: dart.fieldType(core.String),
    [_borderWidth]: dart.fieldType(core.String),
    [_bottom]: dart.fieldType(core.String),
    [_captionSide]: dart.fieldType(core.String),
    [_clear$0]: dart.fieldType(core.String),
    [_clip]: dart.fieldType(core.String),
    [_color]: dart.fieldType(core.String),
    [_content]: dart.fieldType(core.String),
    [_cursor]: dart.fieldType(core.String),
    [_direction]: dart.fieldType(core.String),
    [_display]: dart.fieldType(core.String),
    [_emptyCells]: dart.fieldType(core.String),
    [_font]: dart.fieldType(core.String),
    [_fontFamily]: dart.fieldType(core.String),
    [_fontSize]: dart.fieldType(core.String),
    [_fontStyle]: dart.fieldType(core.String),
    [_fontVariant]: dart.fieldType(core.String),
    [_fontWeight]: dart.fieldType(core.String),
    [_height$]: dart.fieldType(core.String),
    [_left]: dart.fieldType(core.String),
    [_letterSpacing]: dart.fieldType(core.String),
    [_lineHeight]: dart.fieldType(core.String),
    [_listStyle]: dart.fieldType(core.String),
    [_listStyleImage]: dart.fieldType(core.String),
    [_listStylePosition]: dart.fieldType(core.String),
    [_listStyleType]: dart.fieldType(core.String),
    [_margin]: dart.fieldType(core.String),
    [_marginBottom]: dart.fieldType(core.String),
    [_marginLeft]: dart.fieldType(core.String),
    [_marginRight]: dart.fieldType(core.String),
    [_marginTop]: dart.fieldType(core.String),
    [_maxHeight]: dart.fieldType(core.String),
    [_maxWidth]: dart.fieldType(core.String),
    [_minHeight]: dart.fieldType(core.String),
    [_minWidth]: dart.fieldType(core.String),
    [_outline]: dart.fieldType(core.String),
    [_outlineColor]: dart.fieldType(core.String),
    [_outlineStyle]: dart.fieldType(core.String),
    [_outlineWidth]: dart.fieldType(core.String),
    [_overflow]: dart.fieldType(core.String),
    [_padding]: dart.fieldType(core.String),
    [_paddingBottom]: dart.fieldType(core.String),
    [_paddingLeft]: dart.fieldType(core.String),
    [_paddingRight]: dart.fieldType(core.String),
    [_paddingTop]: dart.fieldType(core.String),
    [_pageBreakAfter]: dart.fieldType(core.String),
    [_pageBreakBefore]: dart.fieldType(core.String),
    [_pageBreakInside]: dart.fieldType(core.String),
    [_position$1]: dart.fieldType(core.String),
    [_quotes]: dart.fieldType(core.String),
    [_right]: dart.fieldType(core.String),
    [_tableLayout]: dart.fieldType(core.String),
    [_textAlign]: dart.fieldType(core.String),
    [_textDecoration]: dart.fieldType(core.String),
    [_textIndent]: dart.fieldType(core.String),
    [_textTransform]: dart.fieldType(core.String),
    [_top]: dart.fieldType(core.String),
    [_unicodeBidi]: dart.fieldType(core.String),
    [_verticalAlign]: dart.fieldType(core.String),
    [_visibility]: dart.fieldType(core.String),
    [_whiteSpace]: dart.fieldType(core.String),
    [_width$]: dart.fieldType(core.String),
    [_wordSpacing]: dart.fieldType(core.String),
    [_zIndex]: dart.fieldType(core.String)
  }));
  dart.defineLazy(html$.CssStyleDeclaration, {
    /*html$.CssStyleDeclaration._propertyCache*/get _propertyCache() {
      return {};
    }
  });
  dart.registerExtension("CSSStyleDeclaration", html$.CssStyleDeclaration);
  dart.registerExtension("MSStyleCSSProperties", html$.CssStyleDeclaration);
  dart.registerExtension("CSS2Properties", html$.CssStyleDeclaration);
  const _elementIterable = Symbol('_elementIterable');
  const _elementCssStyleDeclarationSetIterable = Symbol('_elementCssStyleDeclarationSetIterable');
  const _setAll = Symbol('_setAll');
  const Object_CssStyleDeclarationBase$ = class Object_CssStyleDeclarationBase extends core.Object {};
  (Object_CssStyleDeclarationBase$.new = function() {
  }).prototype = Object_CssStyleDeclarationBase$.prototype;
  dart.applyMixin(Object_CssStyleDeclarationBase$, html$.CssStyleDeclarationBase);
  html$._CssStyleDeclarationSet = class _CssStyleDeclarationSet extends Object_CssStyleDeclarationBase$ {
    getPropertyValue(propertyName) {
      return this[_elementCssStyleDeclarationSetIterable][$first][$getPropertyValue](propertyName);
    }
    setProperty(propertyName, value, priority) {
      if (priority === void 0) priority = null;
      this[_elementCssStyleDeclarationSetIterable][$forEach](dart.fn(e => e[$setProperty](propertyName, value, priority), CssStyleDeclarationTovoid()));
    }
    [_setAll](propertyName, value) {
      value = value == null ? "" : value;
      for (let element of this[_elementIterable]) {
        element.style[propertyName] = value;
      }
    }
    set background(value) {
      this[_setAll]("background", value);
    }
    get background() {
      return super.background;
    }
    set backgroundAttachment(value) {
      this[_setAll]("backgroundAttachment", value);
    }
    get backgroundAttachment() {
      return super.backgroundAttachment;
    }
    set backgroundColor(value) {
      this[_setAll]("backgroundColor", value);
    }
    get backgroundColor() {
      return super.backgroundColor;
    }
    set backgroundImage(value) {
      this[_setAll]("backgroundImage", value);
    }
    get backgroundImage() {
      return super.backgroundImage;
    }
    set backgroundPosition(value) {
      this[_setAll]("backgroundPosition", value);
    }
    get backgroundPosition() {
      return super.backgroundPosition;
    }
    set backgroundRepeat(value) {
      this[_setAll]("backgroundRepeat", value);
    }
    get backgroundRepeat() {
      return super.backgroundRepeat;
    }
    set border(value) {
      this[_setAll]("border", value);
    }
    get border() {
      return super.border;
    }
    set borderBottom(value) {
      this[_setAll]("borderBottom", value);
    }
    get borderBottom() {
      return super.borderBottom;
    }
    set borderBottomColor(value) {
      this[_setAll]("borderBottomColor", value);
    }
    get borderBottomColor() {
      return super.borderBottomColor;
    }
    set borderBottomStyle(value) {
      this[_setAll]("borderBottomStyle", value);
    }
    get borderBottomStyle() {
      return super.borderBottomStyle;
    }
    set borderBottomWidth(value) {
      this[_setAll]("borderBottomWidth", value);
    }
    get borderBottomWidth() {
      return super.borderBottomWidth;
    }
    set borderCollapse(value) {
      this[_setAll]("borderCollapse", value);
    }
    get borderCollapse() {
      return super.borderCollapse;
    }
    set borderColor(value) {
      this[_setAll]("borderColor", value);
    }
    get borderColor() {
      return super.borderColor;
    }
    set borderLeft(value) {
      this[_setAll]("borderLeft", value);
    }
    get borderLeft() {
      return super.borderLeft;
    }
    set borderLeftColor(value) {
      this[_setAll]("borderLeftColor", value);
    }
    get borderLeftColor() {
      return super.borderLeftColor;
    }
    set borderLeftStyle(value) {
      this[_setAll]("borderLeftStyle", value);
    }
    get borderLeftStyle() {
      return super.borderLeftStyle;
    }
    set borderLeftWidth(value) {
      this[_setAll]("borderLeftWidth", value);
    }
    get borderLeftWidth() {
      return super.borderLeftWidth;
    }
    set borderRight(value) {
      this[_setAll]("borderRight", value);
    }
    get borderRight() {
      return super.borderRight;
    }
    set borderRightColor(value) {
      this[_setAll]("borderRightColor", value);
    }
    get borderRightColor() {
      return super.borderRightColor;
    }
    set borderRightStyle(value) {
      this[_setAll]("borderRightStyle", value);
    }
    get borderRightStyle() {
      return super.borderRightStyle;
    }
    set borderRightWidth(value) {
      this[_setAll]("borderRightWidth", value);
    }
    get borderRightWidth() {
      return super.borderRightWidth;
    }
    set borderSpacing(value) {
      this[_setAll]("borderSpacing", value);
    }
    get borderSpacing() {
      return super.borderSpacing;
    }
    set borderStyle(value) {
      this[_setAll]("borderStyle", value);
    }
    get borderStyle() {
      return super.borderStyle;
    }
    set borderTop(value) {
      this[_setAll]("borderTop", value);
    }
    get borderTop() {
      return super.borderTop;
    }
    set borderTopColor(value) {
      this[_setAll]("borderTopColor", value);
    }
    get borderTopColor() {
      return super.borderTopColor;
    }
    set borderTopStyle(value) {
      this[_setAll]("borderTopStyle", value);
    }
    get borderTopStyle() {
      return super.borderTopStyle;
    }
    set borderTopWidth(value) {
      this[_setAll]("borderTopWidth", value);
    }
    get borderTopWidth() {
      return super.borderTopWidth;
    }
    set borderWidth(value) {
      this[_setAll]("borderWidth", value);
    }
    get borderWidth() {
      return super.borderWidth;
    }
    set bottom(value) {
      this[_setAll]("bottom", value);
    }
    get bottom() {
      return super.bottom;
    }
    set captionSide(value) {
      this[_setAll]("captionSide", value);
    }
    get captionSide() {
      return super.captionSide;
    }
    set clear(value) {
      this[_setAll]("clear", value);
    }
    get clear() {
      return super.clear;
    }
    set clip(value) {
      this[_setAll]("clip", value);
    }
    get clip() {
      return super.clip;
    }
    set color(value) {
      this[_setAll]("color", value);
    }
    get color() {
      return super.color;
    }
    set content(value) {
      this[_setAll]("content", value);
    }
    get content() {
      return super.content;
    }
    set cursor(value) {
      this[_setAll]("cursor", value);
    }
    get cursor() {
      return super.cursor;
    }
    set direction(value) {
      this[_setAll]("direction", value);
    }
    get direction() {
      return super.direction;
    }
    set display(value) {
      this[_setAll]("display", value);
    }
    get display() {
      return super.display;
    }
    set emptyCells(value) {
      this[_setAll]("emptyCells", value);
    }
    get emptyCells() {
      return super.emptyCells;
    }
    set font(value) {
      this[_setAll]("font", value);
    }
    get font() {
      return super.font;
    }
    set fontFamily(value) {
      this[_setAll]("fontFamily", value);
    }
    get fontFamily() {
      return super.fontFamily;
    }
    set fontSize(value) {
      this[_setAll]("fontSize", value);
    }
    get fontSize() {
      return super.fontSize;
    }
    set fontStyle(value) {
      this[_setAll]("fontStyle", value);
    }
    get fontStyle() {
      return super.fontStyle;
    }
    set fontVariant(value) {
      this[_setAll]("fontVariant", value);
    }
    get fontVariant() {
      return super.fontVariant;
    }
    set fontWeight(value) {
      this[_setAll]("fontWeight", value);
    }
    get fontWeight() {
      return super.fontWeight;
    }
    set height(value) {
      this[_setAll]("height", value);
    }
    get height() {
      return super.height;
    }
    set left(value) {
      this[_setAll]("left", value);
    }
    get left() {
      return super.left;
    }
    set letterSpacing(value) {
      this[_setAll]("letterSpacing", value);
    }
    get letterSpacing() {
      return super.letterSpacing;
    }
    set lineHeight(value) {
      this[_setAll]("lineHeight", value);
    }
    get lineHeight() {
      return super.lineHeight;
    }
    set listStyle(value) {
      this[_setAll]("listStyle", value);
    }
    get listStyle() {
      return super.listStyle;
    }
    set listStyleImage(value) {
      this[_setAll]("listStyleImage", value);
    }
    get listStyleImage() {
      return super.listStyleImage;
    }
    set listStylePosition(value) {
      this[_setAll]("listStylePosition", value);
    }
    get listStylePosition() {
      return super.listStylePosition;
    }
    set listStyleType(value) {
      this[_setAll]("listStyleType", value);
    }
    get listStyleType() {
      return super.listStyleType;
    }
    set margin(value) {
      this[_setAll]("margin", value);
    }
    get margin() {
      return super.margin;
    }
    set marginBottom(value) {
      this[_setAll]("marginBottom", value);
    }
    get marginBottom() {
      return super.marginBottom;
    }
    set marginLeft(value) {
      this[_setAll]("marginLeft", value);
    }
    get marginLeft() {
      return super.marginLeft;
    }
    set marginRight(value) {
      this[_setAll]("marginRight", value);
    }
    get marginRight() {
      return super.marginRight;
    }
    set marginTop(value) {
      this[_setAll]("marginTop", value);
    }
    get marginTop() {
      return super.marginTop;
    }
    set maxHeight(value) {
      this[_setAll]("maxHeight", value);
    }
    get maxHeight() {
      return super.maxHeight;
    }
    set maxWidth(value) {
      this[_setAll]("maxWidth", value);
    }
    get maxWidth() {
      return super.maxWidth;
    }
    set minHeight(value) {
      this[_setAll]("minHeight", value);
    }
    get minHeight() {
      return super.minHeight;
    }
    set minWidth(value) {
      this[_setAll]("minWidth", value);
    }
    get minWidth() {
      return super.minWidth;
    }
    set outline(value) {
      this[_setAll]("outline", value);
    }
    get outline() {
      return super.outline;
    }
    set outlineColor(value) {
      this[_setAll]("outlineColor", value);
    }
    get outlineColor() {
      return super.outlineColor;
    }
    set outlineStyle(value) {
      this[_setAll]("outlineStyle", value);
    }
    get outlineStyle() {
      return super.outlineStyle;
    }
    set outlineWidth(value) {
      this[_setAll]("outlineWidth", value);
    }
    get outlineWidth() {
      return super.outlineWidth;
    }
    set overflow(value) {
      this[_setAll]("overflow", value);
    }
    get overflow() {
      return super.overflow;
    }
    set padding(value) {
      this[_setAll]("padding", value);
    }
    get padding() {
      return super.padding;
    }
    set paddingBottom(value) {
      this[_setAll]("paddingBottom", value);
    }
    get paddingBottom() {
      return super.paddingBottom;
    }
    set paddingLeft(value) {
      this[_setAll]("paddingLeft", value);
    }
    get paddingLeft() {
      return super.paddingLeft;
    }
    set paddingRight(value) {
      this[_setAll]("paddingRight", value);
    }
    get paddingRight() {
      return super.paddingRight;
    }
    set paddingTop(value) {
      this[_setAll]("paddingTop", value);
    }
    get paddingTop() {
      return super.paddingTop;
    }
    set pageBreakAfter(value) {
      this[_setAll]("pageBreakAfter", value);
    }
    get pageBreakAfter() {
      return super.pageBreakAfter;
    }
    set pageBreakBefore(value) {
      this[_setAll]("pageBreakBefore", value);
    }
    get pageBreakBefore() {
      return super.pageBreakBefore;
    }
    set pageBreakInside(value) {
      this[_setAll]("pageBreakInside", value);
    }
    get pageBreakInside() {
      return super.pageBreakInside;
    }
    set position(value) {
      this[_setAll]("position", value);
    }
    get position() {
      return super.position;
    }
    set quotes(value) {
      this[_setAll]("quotes", value);
    }
    get quotes() {
      return super.quotes;
    }
    set right(value) {
      this[_setAll]("right", value);
    }
    get right() {
      return super.right;
    }
    set tableLayout(value) {
      this[_setAll]("tableLayout", value);
    }
    get tableLayout() {
      return super.tableLayout;
    }
    set textAlign(value) {
      this[_setAll]("textAlign", value);
    }
    get textAlign() {
      return super.textAlign;
    }
    set textDecoration(value) {
      this[_setAll]("textDecoration", value);
    }
    get textDecoration() {
      return super.textDecoration;
    }
    set textIndent(value) {
      this[_setAll]("textIndent", value);
    }
    get textIndent() {
      return super.textIndent;
    }
    set textTransform(value) {
      this[_setAll]("textTransform", value);
    }
    get textTransform() {
      return super.textTransform;
    }
    set top(value) {
      this[_setAll]("top", value);
    }
    get top() {
      return super.top;
    }
    set unicodeBidi(value) {
      this[_setAll]("unicodeBidi", value);
    }
    get unicodeBidi() {
      return super.unicodeBidi;
    }
    set verticalAlign(value) {
      this[_setAll]("verticalAlign", value);
    }
    get verticalAlign() {
      return super.verticalAlign;
    }
    set visibility(value) {
      this[_setAll]("visibility", value);
    }
    get visibility() {
      return super.visibility;
    }
    set whiteSpace(value) {
      this[_setAll]("whiteSpace", value);
    }
    get whiteSpace() {
      return super.whiteSpace;
    }
    set width(value) {
      this[_setAll]("width", value);
    }
    get width() {
      return super.width;
    }
    set wordSpacing(value) {
      this[_setAll]("wordSpacing", value);
    }
    get wordSpacing() {
      return super.wordSpacing;
    }
    set zIndex(value) {
      this[_setAll]("zIndex", value);
    }
    get zIndex() {
      return super.zIndex;
    }
  };
  (html$._CssStyleDeclarationSet.new = function(elementIterable) {
    this[_elementCssStyleDeclarationSetIterable] = null;
    this[_elementIterable] = elementIterable;
    this[_elementCssStyleDeclarationSetIterable] = IterableOfCssStyleDeclaration()._check(core.List.from(this[_elementIterable])[$map](html$.CssStyleDeclaration, dart.fn(e => html$.CssStyleDeclaration._check(dart.dload(e, 'style')), dynamicToCssStyleDeclaration())));
  }).prototype = html$._CssStyleDeclarationSet.prototype;
  dart.addTypeTests(html$._CssStyleDeclarationSet);
  dart.setMethodSignature(html$._CssStyleDeclarationSet, () => ({
    __proto__: dart.getMethods(html$._CssStyleDeclarationSet.__proto__),
    getPropertyValue: dart.fnType(core.String, [core.String]),
    [$getPropertyValue]: dart.fnType(core.String, [core.String]),
    setProperty: dart.fnType(dart.void, [core.String, core.String], [core.String]),
    [$setProperty]: dart.fnType(dart.void, [core.String, core.String], [core.String]),
    [_setAll]: dart.fnType(dart.void, [core.String, core.String])
  }));
  dart.setFieldSignature(html$._CssStyleDeclarationSet, () => ({
    __proto__: dart.getFields(html$._CssStyleDeclarationSet.__proto__),
    [_elementIterable]: dart.finalFieldType(IterableOfElement()),
    [_elementCssStyleDeclarationSetIterable]: dart.fieldType(IterableOfCssStyleDeclaration())
  }));
  dart.defineExtensionMethods(html$._CssStyleDeclarationSet, ['getPropertyValue', 'setProperty']);
  dart.defineExtensionAccessors(html$._CssStyleDeclarationSet, [
    'background',
    'backgroundAttachment',
    'backgroundColor',
    'backgroundImage',
    'backgroundPosition',
    'backgroundRepeat',
    'border',
    'borderBottom',
    'borderBottomColor',
    'borderBottomStyle',
    'borderBottomWidth',
    'borderCollapse',
    'borderColor',
    'borderLeft',
    'borderLeftColor',
    'borderLeftStyle',
    'borderLeftWidth',
    'borderRight',
    'borderRightColor',
    'borderRightStyle',
    'borderRightWidth',
    'borderSpacing',
    'borderStyle',
    'borderTop',
    'borderTopColor',
    'borderTopStyle',
    'borderTopWidth',
    'borderWidth',
    'bottom',
    'captionSide',
    'clear',
    'clip',
    'color',
    'content',
    'cursor',
    'direction',
    'display',
    'emptyCells',
    'font',
    'fontFamily',
    'fontSize',
    'fontStyle',
    'fontVariant',
    'fontWeight',
    'height',
    'left',
    'letterSpacing',
    'lineHeight',
    'listStyle',
    'listStyleImage',
    'listStylePosition',
    'listStyleType',
    'margin',
    'marginBottom',
    'marginLeft',
    'marginRight',
    'marginTop',
    'maxHeight',
    'maxWidth',
    'minHeight',
    'minWidth',
    'outline',
    'outlineColor',
    'outlineStyle',
    'outlineWidth',
    'overflow',
    'padding',
    'paddingBottom',
    'paddingLeft',
    'paddingRight',
    'paddingTop',
    'pageBreakAfter',
    'pageBreakBefore',
    'pageBreakInside',
    'position',
    'quotes',
    'right',
    'tableLayout',
    'textAlign',
    'textDecoration',
    'textIndent',
    'textTransform',
    'top',
    'unicodeBidi',
    'verticalAlign',
    'visibility',
    'whiteSpace',
    'width',
    'wordSpacing',
    'zIndex'
  ]);
  html$.CssStyleRule = class CssStyleRule extends html$.CssRule {
    get [$selectorText]() {
      return this.selectorText;
    }
    set [$selectorText](value) {
      this.selectorText = value;
    }
    get [$style]() {
      return this.style;
    }
  };
  dart.addTypeTests(html$.CssStyleRule);
  const selectorText$ = Symbol("CssStyleRule.selectorText");
  const style$2 = Symbol("CssStyleRule.style");
  dart.setFieldSignature(html$.CssStyleRule, () => ({
    __proto__: dart.getFields(html$.CssStyleRule.__proto__),
    [$selectorText]: dart.fieldType(core.String),
    [$style]: dart.finalFieldType(html$.CssStyleDeclaration)
  }));
  dart.registerExtension("CSSStyleRule", html$.CssStyleRule);
  html$.StyleSheet = class StyleSheet extends _interceptors.Interceptor {
    get [$disabled]() {
      return this.disabled;
    }
    set [$disabled](value) {
      this.disabled = value;
    }
    get [$href]() {
      return this.href;
    }
    get [$media]() {
      return this.media;
    }
    get [$ownerNode]() {
      return this.ownerNode;
    }
    get [$parentStyleSheet]() {
      return this.parentStyleSheet;
    }
    get [$title]() {
      return this.title;
    }
    get [$type]() {
      return this.type;
    }
  };
  dart.addTypeTests(html$.StyleSheet);
  const disabled$0 = Symbol("StyleSheet.disabled");
  const href$2 = Symbol("StyleSheet.href");
  const media$0 = Symbol("StyleSheet.media");
  const ownerNode = Symbol("StyleSheet.ownerNode");
  const parentStyleSheet$ = Symbol("StyleSheet.parentStyleSheet");
  const title$0 = Symbol("StyleSheet.title");
  const type$10 = Symbol("StyleSheet.type");
  dart.setFieldSignature(html$.StyleSheet, () => ({
    __proto__: dart.getFields(html$.StyleSheet.__proto__),
    [$disabled]: dart.fieldType(core.bool),
    [$href]: dart.finalFieldType(core.String),
    [$media]: dart.finalFieldType(html$.MediaList),
    [$ownerNode]: dart.finalFieldType(html$.Node),
    [$parentStyleSheet]: dart.finalFieldType(html$.StyleSheet),
    [$title]: dart.finalFieldType(core.String),
    [$type]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("StyleSheet", html$.StyleSheet);
  html$.CssStyleSheet = class CssStyleSheet extends html$.StyleSheet {
    get [$cssRules]() {
      return this.cssRules;
    }
    get [$ownerRule]() {
      return this.ownerRule;
    }
    get [$rules]() {
      return this.rules;
    }
    [$addRule](...args) {
      return this.addRule.apply(this, args);
    }
    [$deleteRule](...args) {
      return this.deleteRule.apply(this, args);
    }
    [$insertRule](...args) {
      return this.insertRule.apply(this, args);
    }
    [$removeRule](...args) {
      return this.removeRule.apply(this, args);
    }
  };
  dart.addTypeTests(html$.CssStyleSheet);
  const cssRules$0 = Symbol("CssStyleSheet.cssRules");
  const ownerRule = Symbol("CssStyleSheet.ownerRule");
  const rules = Symbol("CssStyleSheet.rules");
  dart.setMethodSignature(html$.CssStyleSheet, () => ({
    __proto__: dart.getMethods(html$.CssStyleSheet.__proto__),
    [$addRule]: dart.fnType(core.int, [core.String, core.String], [core.int]),
    [$deleteRule]: dart.fnType(dart.void, [core.int]),
    [$insertRule]: dart.fnType(core.int, [core.String], [core.int]),
    [$removeRule]: dart.fnType(dart.void, [core.int])
  }));
  dart.setFieldSignature(html$.CssStyleSheet, () => ({
    __proto__: dart.getFields(html$.CssStyleSheet.__proto__),
    [$cssRules]: dart.finalFieldType(ListOfCssRule()),
    [$ownerRule]: dart.finalFieldType(html$.CssRule),
    [$rules]: dart.finalFieldType(ListOfCssRule())
  }));
  dart.registerExtension("CSSStyleSheet", html$.CssStyleSheet);
  html$.CssSupportsRule = class CssSupportsRule extends html$.CssConditionRule {};
  dart.addTypeTests(html$.CssSupportsRule);
  dart.registerExtension("CSSSupportsRule", html$.CssSupportsRule);
  html$.CssTransformValue = class CssTransformValue extends html$.CssStyleValue {
    static new(transformComponents) {
      if (transformComponents === void 0) transformComponents = null;
      if (transformComponents == null) {
        return html$.CssTransformValue._create_1();
      }
      if (ListOfCssTransformComponent().is(transformComponents)) {
        return html$.CssTransformValue._create_2(transformComponents);
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    static _create_1() {
      return new CSSTransformValue();
    }
    static _create_2(transformComponents) {
      return new CSSTransformValue(transformComponents);
    }
    get [$is2D]() {
      return this.is2D;
    }
    get [$length]() {
      return this.length;
    }
    [$componentAtIndex](...args) {
      return this.componentAtIndex.apply(this, args);
    }
    [$toMatrix](...args) {
      return this.toMatrix.apply(this, args);
    }
  };
  dart.addTypeTests(html$.CssTransformValue);
  const is2D$ = Symbol("CssTransformValue.is2D");
  const length$3 = Symbol("CssTransformValue.length");
  dart.setMethodSignature(html$.CssTransformValue, () => ({
    __proto__: dart.getMethods(html$.CssTransformValue.__proto__),
    [$componentAtIndex]: dart.fnType(html$.CssTransformComponent, [core.int]),
    [$toMatrix]: dart.fnType(html$.DomMatrix, [])
  }));
  dart.setFieldSignature(html$.CssTransformValue, () => ({
    __proto__: dart.getFields(html$.CssTransformValue.__proto__),
    [$is2D]: dart.finalFieldType(core.bool),
    [$length]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("CSSTransformValue", html$.CssTransformValue);
  html$.CssTranslation = class CssTranslation extends html$.CssTransformComponent {
    static new(x, y, z) {
      if (z === void 0) z = null;
      if (html$.CssNumericValue.is(y) && html$.CssNumericValue.is(x) && z == null) {
        return html$.CssTranslation._create_1(x, y);
      }
      if (html$.CssNumericValue.is(z) && html$.CssNumericValue.is(y) && html$.CssNumericValue.is(x)) {
        return html$.CssTranslation._create_2(x, y, z);
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    static _create_1(x, y) {
      return new CSSTranslation(x, y);
    }
    static _create_2(x, y, z) {
      return new CSSTranslation(x, y, z);
    }
    get [$x]() {
      return this.x;
    }
    set [$x](value) {
      this.x = value;
    }
    get [$y]() {
      return this.y;
    }
    set [$y](value) {
      this.y = value;
    }
    get [$z]() {
      return this.z;
    }
    set [$z](value) {
      this.z = value;
    }
  };
  dart.addTypeTests(html$.CssTranslation);
  const x$2 = Symbol("CssTranslation.x");
  const y$2 = Symbol("CssTranslation.y");
  const z$1 = Symbol("CssTranslation.z");
  dart.setFieldSignature(html$.CssTranslation, () => ({
    __proto__: dart.getFields(html$.CssTranslation.__proto__),
    [$x]: dart.fieldType(html$.CssNumericValue),
    [$y]: dart.fieldType(html$.CssNumericValue),
    [$z]: dart.fieldType(html$.CssNumericValue)
  }));
  dart.registerExtension("CSSTranslation", html$.CssTranslation);
  html$.CssUnitValue = class CssUnitValue extends html$.CssNumericValue {
    static new(value, unit) {
      return html$.CssUnitValue._create_1(value, unit);
    }
    static _create_1(value, unit) {
      return new CSSUnitValue(value, unit);
    }
    get [$type]() {
      return this.type;
    }
    get [$unit]() {
      return this.unit;
    }
    set [$unit](value) {
      this.unit = value;
    }
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
  };
  dart.addTypeTests(html$.CssUnitValue);
  const type$11 = Symbol("CssUnitValue.type");
  const unit = Symbol("CssUnitValue.unit");
  const value$2 = Symbol("CssUnitValue.value");
  dart.setFieldSignature(html$.CssUnitValue, () => ({
    __proto__: dart.getFields(html$.CssUnitValue.__proto__),
    [$type]: dart.finalFieldType(core.String),
    [$unit]: dart.fieldType(core.String),
    [$value]: dart.fieldType(core.num)
  }));
  dart.registerExtension("CSSUnitValue", html$.CssUnitValue);
  html$.CssUnparsedValue = class CssUnparsedValue extends html$.CssStyleValue {
    get [$length]() {
      return this.length;
    }
    [$fragmentAtIndex](...args) {
      return this.fragmentAtIndex.apply(this, args);
    }
  };
  dart.addTypeTests(html$.CssUnparsedValue);
  const length$4 = Symbol("CssUnparsedValue.length");
  dart.setMethodSignature(html$.CssUnparsedValue, () => ({
    __proto__: dart.getMethods(html$.CssUnparsedValue.__proto__),
    [$fragmentAtIndex]: dart.fnType(core.Object, [core.int])
  }));
  dart.setFieldSignature(html$.CssUnparsedValue, () => ({
    __proto__: dart.getFields(html$.CssUnparsedValue.__proto__),
    [$length]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("CSSUnparsedValue", html$.CssUnparsedValue);
  html$.CssVariableReferenceValue = class CssVariableReferenceValue extends _interceptors.Interceptor {
    get [$fallback]() {
      return this.fallback;
    }
    get [$variable]() {
      return this.variable;
    }
  };
  dart.addTypeTests(html$.CssVariableReferenceValue);
  const fallback = Symbol("CssVariableReferenceValue.fallback");
  const variable = Symbol("CssVariableReferenceValue.variable");
  dart.setFieldSignature(html$.CssVariableReferenceValue, () => ({
    __proto__: dart.getFields(html$.CssVariableReferenceValue.__proto__),
    [$fallback]: dart.finalFieldType(html$.CssUnparsedValue),
    [$variable]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("CSSVariableReferenceValue", html$.CssVariableReferenceValue);
  html$.CssViewportRule = class CssViewportRule extends html$.CssRule {
    get [$style]() {
      return this.style;
    }
  };
  dart.addTypeTests(html$.CssViewportRule);
  const style$3 = Symbol("CssViewportRule.style");
  dart.setFieldSignature(html$.CssViewportRule, () => ({
    __proto__: dart.getFields(html$.CssViewportRule.__proto__),
    [$style]: dart.finalFieldType(html$.CssStyleDeclaration)
  }));
  dart.registerExtension("CSSViewportRule", html$.CssViewportRule);
  html$.CssurlImageValue = class CssurlImageValue extends html$.CssImageValue {
    static new(url) {
      return html$.CssurlImageValue._create_1(url);
    }
    static _create_1(url) {
      return new CSSURLImageValue(url);
    }
    get [$url]() {
      return this.url;
    }
  };
  dart.addTypeTests(html$.CssurlImageValue);
  const url$0 = Symbol("CssurlImageValue.url");
  dart.setFieldSignature(html$.CssurlImageValue, () => ({
    __proto__: dart.getFields(html$.CssurlImageValue.__proto__),
    [$url]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("CSSURLImageValue", html$.CssurlImageValue);
  const _define_1 = Symbol('_define_1');
  const _define_2 = Symbol('_define_2');
  html$.CustomElementRegistry = class CustomElementRegistry extends _interceptors.Interceptor {
    [$define](name, constructor, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        this[_define_1](name, constructor, options_1);
        return;
      }
      this[_define_2](name, constructor);
      return;
    }
    [_define_1](...args) {
      return this.define.apply(this, args);
    }
    [_define_2](...args) {
      return this.define.apply(this, args);
    }
    [$get](...args) {
      return this.get.apply(this, args);
    }
    [$whenDefined](name) {
      return html$.promiseToFuture(dart.dynamic, this.whenDefined(name));
    }
  };
  dart.addTypeTests(html$.CustomElementRegistry);
  dart.setMethodSignature(html$.CustomElementRegistry, () => ({
    __proto__: dart.getMethods(html$.CustomElementRegistry.__proto__),
    [$define]: dart.fnType(dart.void, [core.String, core.Object], [core.Map]),
    [_define_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
    [_define_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic]),
    [$get]: dart.fnType(core.Object, [core.String]),
    [$whenDefined]: dart.fnType(async.Future, [core.String])
  }));
  dart.registerExtension("CustomElementRegistry", html$.CustomElementRegistry);
  const _dartDetail = Symbol('_dartDetail');
  const _initCustomEvent = Symbol('_initCustomEvent');
  const _detail = Symbol('_detail');
  const _get__detail = Symbol('_get__detail');
  html$.CustomEvent = class CustomEvent$ extends html$.Event {
    get [_dartDetail]() {
      return this._dartDetail;
    }
    set [_dartDetail](value) {
      this._dartDetail = value;
    }
    static new(type, opts) {
      let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
      let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
      let detail = opts && 'detail' in opts ? opts.detail : null;
      let e = html$.CustomEvent._check(html$.document[_createEvent]("CustomEvent"));
      e[_dartDetail] = detail;
      if (core.List.is(detail) || core.Map.is(detail) || typeof detail == 'string' || typeof detail == 'number') {
        try {
          detail = html_common.convertDartToNative_SerializedScriptValue(detail);
          e[_initCustomEvent](type, canBubble, cancelable, detail);
        } catch (e$) {
          let _ = dart.getThrown(e$);
          e[_initCustomEvent](type, canBubble, cancelable, null);
        }
      } else {
        e[_initCustomEvent](type, canBubble, cancelable, null);
      }
      return e;
    }
    get [$detail]() {
      if (this[_dartDetail] != null) {
        return this[_dartDetail];
      }
      return this[_detail];
    }
    static __(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.CustomEvent._create_1(type, eventInitDict_1);
      }
      return html$.CustomEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new CustomEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new CustomEvent(type);
    }
    get [_detail]() {
      return html_common.convertNativeToDart_SerializedScriptValue(this[_get__detail]);
    }
    get [_get__detail]() {
      return this.detail;
    }
    [_initCustomEvent](...args) {
      return this.initCustomEvent.apply(this, args);
    }
  };
  dart.addTypeTests(html$.CustomEvent);
  dart.setMethodSignature(html$.CustomEvent, () => ({
    __proto__: dart.getMethods(html$.CustomEvent.__proto__),
    [_initCustomEvent]: dart.fnType(dart.void, [core.String], [core.bool, core.bool, core.Object])
  }));
  dart.setGetterSignature(html$.CustomEvent, () => ({
    __proto__: dart.getGetters(html$.CustomEvent.__proto__),
    [$detail]: dart.dynamic,
    [_detail]: dart.dynamic
  }));
  dart.setFieldSignature(html$.CustomEvent, () => ({
    __proto__: dart.getFields(html$.CustomEvent.__proto__),
    [_dartDetail]: dart.fieldType(dart.dynamic),
    [_get__detail]: dart.finalFieldType(dart.dynamic)
  }));
  dart.registerExtension("CustomEvent", html$.CustomEvent);
  html$.DListElement = class DListElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("dl");
    }
  };
  (html$.DListElement.created = function() {
    html$.DListElement.__proto__.created.call(this);
  }).prototype = html$.DListElement.prototype;
  dart.addTypeTests(html$.DListElement);
  dart.registerExtension("HTMLDListElement", html$.DListElement);
  html$.DataElement = class DataElement extends html$.HtmlElement {
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
  };
  (html$.DataElement.created = function() {
    this[value$3] = null;
    html$.DataElement.__proto__.created.call(this);
  }).prototype = html$.DataElement.prototype;
  dart.addTypeTests(html$.DataElement);
  const value$3 = Symbol("DataElement.value");
  dart.setFieldSignature(html$.DataElement, () => ({
    __proto__: dart.getFields(html$.DataElement.__proto__),
    [$value]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLDataElement", html$.DataElement);
  html$.DataListElement = class DataListElement extends html$.HtmlElement {
    static new() {
      return html$.DataListElement._check(html$.document[$createElement]("datalist"));
    }
    static get supported() {
      return html$.Element.isTagSupported("datalist");
    }
    get [$options]() {
      return this.options;
    }
  };
  (html$.DataListElement.created = function() {
    this[options] = null;
    html$.DataListElement.__proto__.created.call(this);
  }).prototype = html$.DataListElement.prototype;
  dart.addTypeTests(html$.DataListElement);
  const options = Symbol("DataListElement.options");
  dart.setFieldSignature(html$.DataListElement, () => ({
    __proto__: dart.getFields(html$.DataListElement.__proto__),
    [$options]: dart.finalFieldType(ListOfNode())
  }));
  dart.registerExtension("HTMLDataListElement", html$.DataListElement);
  html$.DataTransfer = class DataTransfer$ extends _interceptors.Interceptor {
    static new() {
      return html$.DataTransfer._create_1();
    }
    static _create_1() {
      return new DataTransfer();
    }
    get [$dropEffect]() {
      return this.dropEffect;
    }
    set [$dropEffect](value) {
      this.dropEffect = value;
    }
    get [$effectAllowed]() {
      return this.effectAllowed;
    }
    set [$effectAllowed](value) {
      this.effectAllowed = value;
    }
    get [$files]() {
      return this.files;
    }
    get [$items]() {
      return this.items;
    }
    get [$types]() {
      return this.types;
    }
    [$clearData](...args) {
      return this.clearData.apply(this, args);
    }
    [$getData](...args) {
      return this.getData.apply(this, args);
    }
    [$setData](...args) {
      return this.setData.apply(this, args);
    }
    [$setDragImage](...args) {
      return this.setDragImage.apply(this, args);
    }
  };
  dart.addTypeTests(html$.DataTransfer);
  const dropEffect = Symbol("DataTransfer.dropEffect");
  const effectAllowed = Symbol("DataTransfer.effectAllowed");
  const files = Symbol("DataTransfer.files");
  const items = Symbol("DataTransfer.items");
  const types = Symbol("DataTransfer.types");
  dart.setMethodSignature(html$.DataTransfer, () => ({
    __proto__: dart.getMethods(html$.DataTransfer.__proto__),
    [$clearData]: dart.fnType(dart.void, [], [core.String]),
    [$getData]: dart.fnType(core.String, [core.String]),
    [$setData]: dart.fnType(dart.void, [core.String, core.String]),
    [$setDragImage]: dart.fnType(dart.void, [html$.Element, core.int, core.int])
  }));
  dart.setFieldSignature(html$.DataTransfer, () => ({
    __proto__: dart.getFields(html$.DataTransfer.__proto__),
    [$dropEffect]: dart.fieldType(core.String),
    [$effectAllowed]: dart.fieldType(core.String),
    [$files]: dart.finalFieldType(ListOfFile()),
    [$items]: dart.finalFieldType(html$.DataTransferItemList),
    [$types]: dart.finalFieldType(ListOfString())
  }));
  dart.registerExtension("DataTransfer", html$.DataTransfer);
  html$.DataTransferItem = class DataTransferItem extends _interceptors.Interceptor {
    get [$kind]() {
      return this.kind;
    }
    get [$type]() {
      return this.type;
    }
    [$getAsFile](...args) {
      return this.getAsFile.apply(this, args);
    }
    [$getAsEntry](...args) {
      return this.webkitGetAsEntry.apply(this, args);
    }
  };
  dart.addTypeTests(html$.DataTransferItem);
  const kind$ = Symbol("DataTransferItem.kind");
  const type$12 = Symbol("DataTransferItem.type");
  dart.setMethodSignature(html$.DataTransferItem, () => ({
    __proto__: dart.getMethods(html$.DataTransferItem.__proto__),
    [$getAsFile]: dart.fnType(html$.File, []),
    [$getAsEntry]: dart.fnType(html$.Entry, [])
  }));
  dart.setFieldSignature(html$.DataTransferItem, () => ({
    __proto__: dart.getFields(html$.DataTransferItem.__proto__),
    [$kind]: dart.finalFieldType(core.String),
    [$type]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("DataTransferItem", html$.DataTransferItem);
  html$.DataTransferItemList = class DataTransferItemList extends _interceptors.Interceptor {
    get [$length]() {
      return this.length;
    }
    [$add](...args) {
      return this.add.apply(this, args);
    }
    [$addData](...args) {
      return this.add.apply(this, args);
    }
    [$addFile](...args) {
      return this.add.apply(this, args);
    }
    [$clear](...args) {
      return this.clear.apply(this, args);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
    [$remove](...args) {
      return this.remove.apply(this, args);
    }
    [$_get](index) {
      return this[index];
    }
  };
  dart.addTypeTests(html$.DataTransferItemList);
  const length$5 = Symbol("DataTransferItemList.length");
  dart.setMethodSignature(html$.DataTransferItemList, () => ({
    __proto__: dart.getMethods(html$.DataTransferItemList.__proto__),
    [$add]: dart.fnType(html$.DataTransferItem, [dart.dynamic], [core.String]),
    [$addData]: dart.fnType(html$.DataTransferItem, [core.String, core.String]),
    [$addFile]: dart.fnType(html$.DataTransferItem, [html$.File]),
    [$clear]: dart.fnType(dart.void, []),
    [$item]: dart.fnType(html$.DataTransferItem, [core.int]),
    [$remove]: dart.fnType(dart.void, [core.int]),
    [$_get]: dart.fnType(html$.DataTransferItem, [core.int])
  }));
  dart.setFieldSignature(html$.DataTransferItemList, () => ({
    __proto__: dart.getFields(html$.DataTransferItemList.__proto__),
    [$length]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("DataTransferItemList", html$.DataTransferItemList);
  const _postMessage_1 = Symbol('_postMessage_1');
  const _postMessage_2 = Symbol('_postMessage_2');
  const _webkitRequestFileSystem = Symbol('_webkitRequestFileSystem');
  const _webkitResolveLocalFileSystemUrl = Symbol('_webkitResolveLocalFileSystemUrl');
  const _setInterval_String = Symbol('_setInterval_String');
  const _setTimeout_String = Symbol('_setTimeout_String');
  const _clearInterval = Symbol('_clearInterval');
  const _clearTimeout = Symbol('_clearTimeout');
  const _setInterval = Symbol('_setInterval');
  const _setTimeout = Symbol('_setTimeout');
  html$.WorkerGlobalScope = class WorkerGlobalScope extends html$.EventTarget {
    get [$addressSpace]() {
      return this.addressSpace;
    }
    get [$caches]() {
      return this.caches;
    }
    get [$crypto]() {
      return this.crypto;
    }
    get [$indexedDB]() {
      return this.indexedDB;
    }
    get [$isSecureContext]() {
      return this.isSecureContext;
    }
    get [$location]() {
      return this.location;
    }
    get [$navigator]() {
      return this.navigator;
    }
    get [$origin]() {
      return this.origin;
    }
    get [$performance]() {
      return this.performance;
    }
    get [$self]() {
      return this.self;
    }
    [$fetch](input, init) {
      if (init === void 0) init = null;
      let init_dict = null;
      if (init != null) {
        init_dict = html_common.convertDartToNative_Dictionary(init);
      }
      return html$.promiseToFuture(dart.dynamic, this.fetch(input, init_dict));
    }
    [$importScripts](...args) {
      return this.importScripts.apply(this, args);
    }
    [$atob](...args) {
      return this.atob.apply(this, args);
    }
    [$btoa](...args) {
      return this.btoa.apply(this, args);
    }
    [_setInterval_String](...args) {
      return this.setInterval.apply(this, args);
    }
    [_setTimeout_String](...args) {
      return this.setTimeout.apply(this, args);
    }
    [_clearInterval](...args) {
      return this.clearInterval.apply(this, args);
    }
    [_clearTimeout](...args) {
      return this.clearTimeout.apply(this, args);
    }
    [_setInterval](...args) {
      return this.setInterval.apply(this, args);
    }
    [_setTimeout](...args) {
      return this.setTimeout.apply(this, args);
    }
    get [$onError]() {
      return html$.WorkerGlobalScope.errorEvent.forTarget(this);
    }
    static get instance() {
      return html$._workerSelf;
    }
  };
  dart.addTypeTests(html$.WorkerGlobalScope);
  const addressSpace = Symbol("WorkerGlobalScope.addressSpace");
  const caches = Symbol("WorkerGlobalScope.caches");
  const crypto$ = Symbol("WorkerGlobalScope.crypto");
  const indexedDB = Symbol("WorkerGlobalScope.indexedDB");
  const isSecureContext = Symbol("WorkerGlobalScope.isSecureContext");
  const location = Symbol("WorkerGlobalScope.location");
  const navigator = Symbol("WorkerGlobalScope.navigator");
  const origin$0 = Symbol("WorkerGlobalScope.origin");
  const performance = Symbol("WorkerGlobalScope.performance");
  const self$ = Symbol("WorkerGlobalScope.self");
  html$.WorkerGlobalScope[dart.implements] = () => [html$._WindowTimers, html$.WindowBase64];
  dart.setMethodSignature(html$.WorkerGlobalScope, () => ({
    __proto__: dart.getMethods(html$.WorkerGlobalScope.__proto__),
    [$fetch]: dart.fnType(async.Future, [dart.dynamic], [core.Map]),
    [$importScripts]: dart.fnType(dart.void, [core.String]),
    [$atob]: dart.fnType(core.String, [core.String]),
    [$btoa]: dart.fnType(core.String, [core.String]),
    [_setInterval_String]: dart.fnType(core.int, [core.String], [core.int, core.Object]),
    [_setTimeout_String]: dart.fnType(core.int, [core.String], [core.int, core.Object]),
    [_clearInterval]: dart.fnType(dart.void, [], [core.int]),
    [_clearTimeout]: dart.fnType(dart.void, [], [core.int]),
    [_setInterval]: dart.fnType(core.int, [core.Object], [core.int]),
    [_setTimeout]: dart.fnType(core.int, [core.Object], [core.int])
  }));
  dart.setGetterSignature(html$.WorkerGlobalScope, () => ({
    __proto__: dart.getGetters(html$.WorkerGlobalScope.__proto__),
    [$onError]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.WorkerGlobalScope, () => ({
    __proto__: dart.getFields(html$.WorkerGlobalScope.__proto__),
    [$addressSpace]: dart.finalFieldType(core.String),
    [$caches]: dart.finalFieldType(html$.CacheStorage),
    [$crypto]: dart.finalFieldType(html$.Crypto),
    [$indexedDB]: dart.finalFieldType(indexed_db.IdbFactory),
    [$isSecureContext]: dart.finalFieldType(core.bool),
    [$location]: dart.finalFieldType(html$._WorkerLocation),
    [$navigator]: dart.finalFieldType(html$._WorkerNavigator),
    [$origin]: dart.finalFieldType(core.String),
    [$performance]: dart.finalFieldType(html$.WorkerPerformance),
    [$self]: dart.finalFieldType(html$.WorkerGlobalScope)
  }));
  dart.defineLazy(html$.WorkerGlobalScope, {
    /*html$.WorkerGlobalScope.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    }
  });
  dart.registerExtension("WorkerGlobalScope", html$.WorkerGlobalScope);
  html$.DedicatedWorkerGlobalScope = class DedicatedWorkerGlobalScope extends html$.WorkerGlobalScope {
    [$close](...args) {
      return this.close.apply(this, args);
    }
    [$postMessage](message, transfer) {
      if (transfer === void 0) transfer = null;
      if (transfer != null) {
        let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
        this[_postMessage_1](message_1, transfer);
        return;
      }
      let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
      this[_postMessage_2](message_1);
      return;
    }
    [_postMessage_1](...args) {
      return this.postMessage.apply(this, args);
    }
    [_postMessage_2](...args) {
      return this.postMessage.apply(this, args);
    }
    [_webkitRequestFileSystem](...args) {
      return this.webkitRequestFileSystem.apply(this, args);
    }
    [$requestFileSystemSync](...args) {
      return this.webkitRequestFileSystemSync.apply(this, args);
    }
    [$resolveLocalFileSystemSyncUrl](...args) {
      return this.webkitResolveLocalFileSystemSyncURL.apply(this, args);
    }
    [_webkitResolveLocalFileSystemUrl](...args) {
      return this.webkitResolveLocalFileSystemURL.apply(this, args);
    }
    get [$onMessage]() {
      return html$.DedicatedWorkerGlobalScope.messageEvent.forTarget(this);
    }
    static get instance() {
      return html$.DedicatedWorkerGlobalScope.as(html$._workerSelf);
    }
  };
  dart.addTypeTests(html$.DedicatedWorkerGlobalScope);
  dart.setMethodSignature(html$.DedicatedWorkerGlobalScope, () => ({
    __proto__: dart.getMethods(html$.DedicatedWorkerGlobalScope.__proto__),
    [$close]: dart.fnType(dart.void, []),
    [$postMessage]: dart.fnType(dart.void, [dart.dynamic], [core.List$(core.Object)]),
    [_postMessage_1]: dart.fnType(dart.void, [dart.dynamic, core.List$(core.Object)]),
    [_postMessage_2]: dart.fnType(dart.void, [dart.dynamic]),
    [_webkitRequestFileSystem]: dart.fnType(dart.void, [core.int, core.int], [dart.fnType(dart.void, [html$.FileSystem]), dart.fnType(dart.void, [html$.DomException])]),
    [$requestFileSystemSync]: dart.fnType(html$._DOMFileSystemSync, [core.int, core.int]),
    [$resolveLocalFileSystemSyncUrl]: dart.fnType(html$._EntrySync, [core.String]),
    [_webkitResolveLocalFileSystemUrl]: dart.fnType(dart.void, [core.String, dart.fnType(dart.void, [html$.Entry])], [dart.fnType(dart.void, [html$.DomException])])
  }));
  dart.setGetterSignature(html$.DedicatedWorkerGlobalScope, () => ({
    __proto__: dart.getGetters(html$.DedicatedWorkerGlobalScope.__proto__),
    [$onMessage]: async.Stream$(html$.MessageEvent)
  }));
  dart.defineLazy(html$.DedicatedWorkerGlobalScope, {
    /*html$.DedicatedWorkerGlobalScope.messageEvent*/get messageEvent() {
      return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
    },
    /*html$.DedicatedWorkerGlobalScope.PERSISTENT*/get PERSISTENT() {
      return 1;
    },
    /*html$.DedicatedWorkerGlobalScope.TEMPORARY*/get TEMPORARY() {
      return 0;
    }
  });
  dart.registerExtension("DedicatedWorkerGlobalScope", html$.DedicatedWorkerGlobalScope);
  html$.DeprecatedStorageInfo = class DeprecatedStorageInfo extends _interceptors.Interceptor {
    [$queryUsageAndQuota](...args) {
      return this.queryUsageAndQuota.apply(this, args);
    }
    [$requestQuota](...args) {
      return this.requestQuota.apply(this, args);
    }
  };
  dart.addTypeTests(html$.DeprecatedStorageInfo);
  dart.setMethodSignature(html$.DeprecatedStorageInfo, () => ({
    __proto__: dart.getMethods(html$.DeprecatedStorageInfo.__proto__),
    [$queryUsageAndQuota]: dart.fnType(dart.void, [core.int], [dart.fnType(dart.void, [core.int, core.int]), dart.fnType(dart.void, [html$.DomError])]),
    [$requestQuota]: dart.fnType(dart.void, [core.int, core.int], [dart.fnType(dart.void, [core.int]), dart.fnType(dart.void, [html$.DomError])])
  }));
  dart.defineLazy(html$.DeprecatedStorageInfo, {
    /*html$.DeprecatedStorageInfo.PERSISTENT*/get PERSISTENT() {
      return 1;
    },
    /*html$.DeprecatedStorageInfo.TEMPORARY*/get TEMPORARY() {
      return 0;
    }
  });
  dart.registerExtension("DeprecatedStorageInfo", html$.DeprecatedStorageInfo);
  html$.DeprecatedStorageQuota = class DeprecatedStorageQuota extends _interceptors.Interceptor {
    [$queryUsageAndQuota](...args) {
      return this.queryUsageAndQuota.apply(this, args);
    }
    [$requestQuota](...args) {
      return this.requestQuota.apply(this, args);
    }
  };
  dart.addTypeTests(html$.DeprecatedStorageQuota);
  dart.setMethodSignature(html$.DeprecatedStorageQuota, () => ({
    __proto__: dart.getMethods(html$.DeprecatedStorageQuota.__proto__),
    [$queryUsageAndQuota]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.int, core.int])], [dart.fnType(dart.void, [html$.DomError])]),
    [$requestQuota]: dart.fnType(dart.void, [core.int], [dart.fnType(dart.void, [core.int]), dart.fnType(dart.void, [html$.DomError])])
  }));
  dart.registerExtension("DeprecatedStorageQuota", html$.DeprecatedStorageQuota);
  html$.ReportBody = class ReportBody extends _interceptors.Interceptor {};
  dart.addTypeTests(html$.ReportBody);
  dart.registerExtension("ReportBody", html$.ReportBody);
  html$.DeprecationReport = class DeprecationReport extends html$.ReportBody {
    get [$lineNumber]() {
      return this.lineNumber;
    }
    get [$message]() {
      return this.message;
    }
    get [$sourceFile]() {
      return this.sourceFile;
    }
  };
  dart.addTypeTests(html$.DeprecationReport);
  const lineNumber = Symbol("DeprecationReport.lineNumber");
  const message$16 = Symbol("DeprecationReport.message");
  const sourceFile = Symbol("DeprecationReport.sourceFile");
  dart.setFieldSignature(html$.DeprecationReport, () => ({
    __proto__: dart.getFields(html$.DeprecationReport.__proto__),
    [$lineNumber]: dart.finalFieldType(core.int),
    [$message]: dart.finalFieldType(core.String),
    [$sourceFile]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("DeprecationReport", html$.DeprecationReport);
  html$.DetailsElement = class DetailsElement extends html$.HtmlElement {
    static new() {
      return html$.DetailsElement._check(html$.document[$createElement]("details"));
    }
    static get supported() {
      return html$.Element.isTagSupported("details");
    }
    get [$open]() {
      return this.open;
    }
    set [$open](value) {
      this.open = value;
    }
  };
  (html$.DetailsElement.created = function() {
    this[open] = null;
    html$.DetailsElement.__proto__.created.call(this);
  }).prototype = html$.DetailsElement.prototype;
  dart.addTypeTests(html$.DetailsElement);
  const open = Symbol("DetailsElement.open");
  dart.setFieldSignature(html$.DetailsElement, () => ({
    __proto__: dart.getFields(html$.DetailsElement.__proto__),
    [$open]: dart.fieldType(core.bool)
  }));
  dart.registerExtension("HTMLDetailsElement", html$.DetailsElement);
  html$.DetectedBarcode = class DetectedBarcode$ extends _interceptors.Interceptor {
    static new() {
      return html$.DetectedBarcode._create_1();
    }
    static _create_1() {
      return new DetectedBarcode();
    }
    get [$boundingBox]() {
      return this.boundingBox;
    }
    get [$cornerPoints]() {
      return this.cornerPoints;
    }
    get [$rawValue]() {
      return this.rawValue;
    }
  };
  dart.addTypeTests(html$.DetectedBarcode);
  const boundingBox = Symbol("DetectedBarcode.boundingBox");
  const cornerPoints = Symbol("DetectedBarcode.cornerPoints");
  const rawValue = Symbol("DetectedBarcode.rawValue");
  dart.setFieldSignature(html$.DetectedBarcode, () => ({
    __proto__: dart.getFields(html$.DetectedBarcode.__proto__),
    [$boundingBox]: dart.finalFieldType(RectangleOfnum()),
    [$cornerPoints]: dart.finalFieldType(core.List),
    [$rawValue]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("DetectedBarcode", html$.DetectedBarcode);
  html$.DetectedFace = class DetectedFace$ extends _interceptors.Interceptor {
    static new() {
      return html$.DetectedFace._create_1();
    }
    static _create_1() {
      return new DetectedFace();
    }
    get [$boundingBox]() {
      return this.boundingBox;
    }
    get [$landmarks]() {
      return this.landmarks;
    }
  };
  dart.addTypeTests(html$.DetectedFace);
  const boundingBox$ = Symbol("DetectedFace.boundingBox");
  const landmarks = Symbol("DetectedFace.landmarks");
  dart.setFieldSignature(html$.DetectedFace, () => ({
    __proto__: dart.getFields(html$.DetectedFace.__proto__),
    [$boundingBox]: dart.finalFieldType(RectangleOfnum()),
    [$landmarks]: dart.finalFieldType(core.List)
  }));
  dart.registerExtension("DetectedFace", html$.DetectedFace);
  html$.DetectedText = class DetectedText$ extends _interceptors.Interceptor {
    static new() {
      return html$.DetectedText._create_1();
    }
    static _create_1() {
      return new DetectedText();
    }
    get [$boundingBox]() {
      return this.boundingBox;
    }
    get [$cornerPoints]() {
      return this.cornerPoints;
    }
    get [$rawValue]() {
      return this.rawValue;
    }
  };
  dart.addTypeTests(html$.DetectedText);
  const boundingBox$0 = Symbol("DetectedText.boundingBox");
  const cornerPoints$ = Symbol("DetectedText.cornerPoints");
  const rawValue$ = Symbol("DetectedText.rawValue");
  dart.setFieldSignature(html$.DetectedText, () => ({
    __proto__: dart.getFields(html$.DetectedText.__proto__),
    [$boundingBox]: dart.finalFieldType(RectangleOfnum()),
    [$cornerPoints]: dart.finalFieldType(core.List),
    [$rawValue]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("DetectedText", html$.DetectedText);
  html$.DeviceAcceleration = class DeviceAcceleration extends _interceptors.Interceptor {
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
    get [$z]() {
      return this.z;
    }
  };
  dart.addTypeTests(html$.DeviceAcceleration);
  const x$3 = Symbol("DeviceAcceleration.x");
  const y$3 = Symbol("DeviceAcceleration.y");
  const z$2 = Symbol("DeviceAcceleration.z");
  dart.setFieldSignature(html$.DeviceAcceleration, () => ({
    __proto__: dart.getFields(html$.DeviceAcceleration.__proto__),
    [$x]: dart.finalFieldType(core.num),
    [$y]: dart.finalFieldType(core.num),
    [$z]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("DeviceAcceleration", html$.DeviceAcceleration);
  html$.DeviceMotionEvent = class DeviceMotionEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.DeviceMotionEvent._create_1(type, eventInitDict_1);
      }
      return html$.DeviceMotionEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new DeviceMotionEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new DeviceMotionEvent(type);
    }
    get [$acceleration]() {
      return this.acceleration;
    }
    get [$accelerationIncludingGravity]() {
      return this.accelerationIncludingGravity;
    }
    get [$interval]() {
      return this.interval;
    }
    get [$rotationRate]() {
      return this.rotationRate;
    }
  };
  dart.addTypeTests(html$.DeviceMotionEvent);
  const acceleration = Symbol("DeviceMotionEvent.acceleration");
  const accelerationIncludingGravity = Symbol("DeviceMotionEvent.accelerationIncludingGravity");
  const interval = Symbol("DeviceMotionEvent.interval");
  const rotationRate = Symbol("DeviceMotionEvent.rotationRate");
  dart.setFieldSignature(html$.DeviceMotionEvent, () => ({
    __proto__: dart.getFields(html$.DeviceMotionEvent.__proto__),
    [$acceleration]: dart.finalFieldType(html$.DeviceAcceleration),
    [$accelerationIncludingGravity]: dart.finalFieldType(html$.DeviceAcceleration),
    [$interval]: dart.finalFieldType(core.num),
    [$rotationRate]: dart.finalFieldType(html$.DeviceRotationRate)
  }));
  dart.registerExtension("DeviceMotionEvent", html$.DeviceMotionEvent);
  html$.DeviceOrientationEvent = class DeviceOrientationEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.DeviceOrientationEvent._create_1(type, eventInitDict_1);
      }
      return html$.DeviceOrientationEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new DeviceOrientationEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new DeviceOrientationEvent(type);
    }
    get [$absolute]() {
      return this.absolute;
    }
    get [$alpha]() {
      return this.alpha;
    }
    get [$beta]() {
      return this.beta;
    }
    get [$gamma]() {
      return this.gamma;
    }
  };
  dart.addTypeTests(html$.DeviceOrientationEvent);
  const absolute = Symbol("DeviceOrientationEvent.absolute");
  const alpha = Symbol("DeviceOrientationEvent.alpha");
  const beta = Symbol("DeviceOrientationEvent.beta");
  const gamma = Symbol("DeviceOrientationEvent.gamma");
  dart.setFieldSignature(html$.DeviceOrientationEvent, () => ({
    __proto__: dart.getFields(html$.DeviceOrientationEvent.__proto__),
    [$absolute]: dart.finalFieldType(core.bool),
    [$alpha]: dart.finalFieldType(core.num),
    [$beta]: dart.finalFieldType(core.num),
    [$gamma]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("DeviceOrientationEvent", html$.DeviceOrientationEvent);
  html$.DeviceRotationRate = class DeviceRotationRate extends _interceptors.Interceptor {
    get [$alpha]() {
      return this.alpha;
    }
    get [$beta]() {
      return this.beta;
    }
    get [$gamma]() {
      return this.gamma;
    }
  };
  dart.addTypeTests(html$.DeviceRotationRate);
  const alpha$ = Symbol("DeviceRotationRate.alpha");
  const beta$ = Symbol("DeviceRotationRate.beta");
  const gamma$ = Symbol("DeviceRotationRate.gamma");
  dart.setFieldSignature(html$.DeviceRotationRate, () => ({
    __proto__: dart.getFields(html$.DeviceRotationRate.__proto__),
    [$alpha]: dart.finalFieldType(core.num),
    [$beta]: dart.finalFieldType(core.num),
    [$gamma]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("DeviceRotationRate", html$.DeviceRotationRate);
  html$.DialogElement = class DialogElement extends html$.HtmlElement {
    get [$open]() {
      return this.open;
    }
    set [$open](value) {
      this.open = value;
    }
    get [$returnValue]() {
      return this.returnValue;
    }
    set [$returnValue](value) {
      this.returnValue = value;
    }
    [$close](...args) {
      return this.close.apply(this, args);
    }
    [$show](...args) {
      return this.show.apply(this, args);
    }
    [$showModal](...args) {
      return this.showModal.apply(this, args);
    }
  };
  (html$.DialogElement.created = function() {
    this[open$] = null;
    this[returnValue] = null;
    html$.DialogElement.__proto__.created.call(this);
  }).prototype = html$.DialogElement.prototype;
  dart.addTypeTests(html$.DialogElement);
  const open$ = Symbol("DialogElement.open");
  const returnValue = Symbol("DialogElement.returnValue");
  dart.setMethodSignature(html$.DialogElement, () => ({
    __proto__: dart.getMethods(html$.DialogElement.__proto__),
    [$close]: dart.fnType(dart.void, [], [core.String]),
    [$show]: dart.fnType(dart.void, []),
    [$showModal]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(html$.DialogElement, () => ({
    __proto__: dart.getFields(html$.DialogElement.__proto__),
    [$open]: dart.fieldType(core.bool),
    [$returnValue]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLDialogElement", html$.DialogElement);
  const _getDirectory = Symbol('_getDirectory');
  const _createReader = Symbol('_createReader');
  const _getFile = Symbol('_getFile');
  const __getDirectory_1 = Symbol('__getDirectory_1');
  const __getDirectory_2 = Symbol('__getDirectory_2');
  const __getDirectory_3 = Symbol('__getDirectory_3');
  const __getDirectory_4 = Symbol('__getDirectory_4');
  const __getDirectory = Symbol('__getDirectory');
  const __getFile_1 = Symbol('__getFile_1');
  const __getFile_2 = Symbol('__getFile_2');
  const __getFile_3 = Symbol('__getFile_3');
  const __getFile_4 = Symbol('__getFile_4');
  const __getFile = Symbol('__getFile');
  const _removeRecursively = Symbol('_removeRecursively');
  const _copyTo = Symbol('_copyTo');
  const _getMetadata = Symbol('_getMetadata');
  const _getParent = Symbol('_getParent');
  const _moveTo = Symbol('_moveTo');
  const _remove$ = Symbol('_remove');
  html$.Entry = class Entry extends _interceptors.Interceptor {
    get [$filesystem]() {
      return this.filesystem;
    }
    get [$fullPath]() {
      return this.fullPath;
    }
    get [$isDirectory]() {
      return this.isDirectory;
    }
    get [$isFile]() {
      return this.isFile;
    }
    get [$name]() {
      return this.name;
    }
    [_copyTo](...args) {
      return this.copyTo.apply(this, args);
    }
    [$copyTo](parent, opts) {
      let name = opts && 'name' in opts ? opts.name : null;
      let completer = CompleterOfEntry().new();
      this[_copyTo](parent, name, dart.fn(value => {
        completer.complete(value);
      }, EntryToNull()), dart.fn(error => {
        completer.completeError(error);
      }, DomExceptionToNull()));
      return completer.future;
    }
    [_getMetadata](...args) {
      return this.getMetadata.apply(this, args);
    }
    [$getMetadata]() {
      let completer = CompleterOfMetadata().new();
      this[_getMetadata](dart.fn(value => {
        _js_helper.applyExtension("Metadata", value);
        completer.complete(value);
      }, MetadataToNull()), dart.fn(error => {
        completer.completeError(error);
      }, DomExceptionToNull()));
      return completer.future;
    }
    [_getParent](...args) {
      return this.getParent.apply(this, args);
    }
    [$getParent]() {
      let completer = CompleterOfEntry().new();
      this[_getParent](dart.fn(value => {
        completer.complete(value);
      }, EntryToNull()), dart.fn(error => {
        completer.completeError(error);
      }, DomExceptionToNull()));
      return completer.future;
    }
    [_moveTo](...args) {
      return this.moveTo.apply(this, args);
    }
    [$moveTo](parent, opts) {
      let name = opts && 'name' in opts ? opts.name : null;
      let completer = CompleterOfEntry().new();
      this[_moveTo](parent, name, dart.fn(value => {
        completer.complete(value);
      }, EntryToNull()), dart.fn(error => {
        completer.completeError(error);
      }, DomExceptionToNull()));
      return completer.future;
    }
    [_remove$](...args) {
      return this.remove.apply(this, args);
    }
    [$remove]() {
      let completer = async.Completer.new();
      this[_remove$](dart.fn(() => {
        completer.complete();
      }, VoidToNull()), dart.fn(error => {
        completer.completeError(error);
      }, DomExceptionToNull()));
      return completer.future;
    }
    [$toUrl](...args) {
      return this.toURL.apply(this, args);
    }
  };
  dart.addTypeTests(html$.Entry);
  const filesystem = Symbol("Entry.filesystem");
  const fullPath = Symbol("Entry.fullPath");
  const isDirectory = Symbol("Entry.isDirectory");
  const isFile = Symbol("Entry.isFile");
  const name$10 = Symbol("Entry.name");
  dart.setMethodSignature(html$.Entry, () => ({
    __proto__: dart.getMethods(html$.Entry.__proto__),
    [_copyTo]: dart.fnType(dart.void, [html$.DirectoryEntry], [core.String, dart.fnType(dart.void, [html$.Entry]), dart.fnType(dart.void, [html$.DomException])]),
    [$copyTo]: dart.fnType(async.Future$(html$.Entry), [html$.DirectoryEntry], {name: core.String}),
    [_getMetadata]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.Metadata])], [dart.fnType(dart.void, [html$.DomException])]),
    [$getMetadata]: dart.fnType(async.Future$(html$.Metadata), []),
    [_getParent]: dart.fnType(dart.void, [], [dart.fnType(dart.void, [html$.Entry]), dart.fnType(dart.void, [html$.DomException])]),
    [$getParent]: dart.fnType(async.Future$(html$.Entry), []),
    [_moveTo]: dart.fnType(dart.void, [html$.DirectoryEntry], [core.String, dart.fnType(dart.void, [html$.Entry]), dart.fnType(dart.void, [html$.DomException])]),
    [$moveTo]: dart.fnType(async.Future$(html$.Entry), [html$.DirectoryEntry], {name: core.String}),
    [_remove$]: dart.fnType(dart.void, [dart.fnType(dart.void, [])], [dart.fnType(dart.void, [html$.DomException])]),
    [$remove]: dart.fnType(async.Future, []),
    [$toUrl]: dart.fnType(core.String, [])
  }));
  dart.setFieldSignature(html$.Entry, () => ({
    __proto__: dart.getFields(html$.Entry.__proto__),
    [$filesystem]: dart.finalFieldType(html$.FileSystem),
    [$fullPath]: dart.finalFieldType(core.String),
    [$isDirectory]: dart.finalFieldType(core.bool),
    [$isFile]: dart.finalFieldType(core.bool),
    [$name]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("Entry", html$.Entry);
  html$.DirectoryEntry = class DirectoryEntry extends html$.Entry {
    [$createDirectory](path, opts) {
      let exclusive = opts && 'exclusive' in opts ? opts.exclusive : false;
      return this[_getDirectory](path, {options: new _js_helper.LinkedMap.from(["create", true, "exclusive", exclusive])});
    }
    [$createReader]() {
      let reader = this[_createReader]();
      _js_helper.applyExtension("DirectoryReader", reader);
      return reader;
    }
    [$getDirectory](path) {
      return this[_getDirectory](path);
    }
    [$createFile](path, opts) {
      let exclusive = opts && 'exclusive' in opts ? opts.exclusive : false;
      return this[_getFile](path, {options: new _js_helper.LinkedMap.from(["create", true, "exclusive", exclusive])});
    }
    [$getFile](path) {
      return this[_getFile](path);
    }
    [_createReader](...args) {
      return this.createReader.apply(this, args);
    }
    [__getDirectory](path, options, successCallback, errorCallback) {
      if (options === void 0) options = null;
      if (successCallback === void 0) successCallback = null;
      if (errorCallback === void 0) errorCallback = null;
      if (errorCallback != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        this[__getDirectory_1](path, options_1, successCallback, errorCallback);
        return;
      }
      if (successCallback != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        this[__getDirectory_2](path, options_1, successCallback);
        return;
      }
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        this[__getDirectory_3](path, options_1);
        return;
      }
      this[__getDirectory_4](path);
      return;
    }
    [__getDirectory_1](...args) {
      return this.getDirectory.apply(this, args);
    }
    [__getDirectory_2](...args) {
      return this.getDirectory.apply(this, args);
    }
    [__getDirectory_3](...args) {
      return this.getDirectory.apply(this, args);
    }
    [__getDirectory_4](...args) {
      return this.getDirectory.apply(this, args);
    }
    [_getDirectory](path, opts) {
      let options = opts && 'options' in opts ? opts.options : null;
      let completer = CompleterOfEntry().new();
      this[__getDirectory](path, options, dart.fn(value => {
        completer.complete(value);
      }, EntryToNull()), dart.fn(error => {
        completer.completeError(error);
      }, DomExceptionToNull()));
      return completer.future;
    }
    [__getFile](path, options, successCallback, errorCallback) {
      if (options === void 0) options = null;
      if (successCallback === void 0) successCallback = null;
      if (errorCallback === void 0) errorCallback = null;
      if (errorCallback != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        this[__getFile_1](path, options_1, successCallback, errorCallback);
        return;
      }
      if (successCallback != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        this[__getFile_2](path, options_1, successCallback);
        return;
      }
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        this[__getFile_3](path, options_1);
        return;
      }
      this[__getFile_4](path);
      return;
    }
    [__getFile_1](...args) {
      return this.getFile.apply(this, args);
    }
    [__getFile_2](...args) {
      return this.getFile.apply(this, args);
    }
    [__getFile_3](...args) {
      return this.getFile.apply(this, args);
    }
    [__getFile_4](...args) {
      return this.getFile.apply(this, args);
    }
    [_getFile](path, opts) {
      let options = opts && 'options' in opts ? opts.options : null;
      let completer = CompleterOfEntry().new();
      this[__getFile](path, options, dart.fn(value => {
        _js_helper.applyExtension("FileEntry", value);
        completer.complete(value);
      }, EntryToNull()), dart.fn(error => {
        completer.completeError(error);
      }, DomExceptionToNull()));
      return completer.future;
    }
    [_removeRecursively](...args) {
      return this.removeRecursively.apply(this, args);
    }
    [$removeRecursively]() {
      let completer = async.Completer.new();
      this[_removeRecursively](dart.fn(() => {
        completer.complete();
      }, VoidToNull()), dart.fn(error => {
        completer.completeError(error);
      }, DomExceptionToNull()));
      return completer.future;
    }
  };
  dart.addTypeTests(html$.DirectoryEntry);
  dart.setMethodSignature(html$.DirectoryEntry, () => ({
    __proto__: dart.getMethods(html$.DirectoryEntry.__proto__),
    [$createDirectory]: dart.fnType(async.Future$(html$.Entry), [core.String], {exclusive: core.bool}),
    [$createReader]: dart.fnType(html$.DirectoryReader, []),
    [$getDirectory]: dart.fnType(async.Future$(html$.Entry), [core.String]),
    [$createFile]: dart.fnType(async.Future$(html$.Entry), [core.String], {exclusive: core.bool}),
    [$getFile]: dart.fnType(async.Future$(html$.Entry), [core.String]),
    [_createReader]: dart.fnType(html$.DirectoryReader, []),
    [__getDirectory]: dart.fnType(dart.void, [core.String], [core.Map, dart.fnType(dart.void, [html$.Entry]), dart.fnType(dart.void, [html$.DomException])]),
    [__getDirectory_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.fnType(dart.void, [html$.Entry]), dart.fnType(dart.void, [html$.DomException])]),
    [__getDirectory_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.fnType(dart.void, [html$.Entry])]),
    [__getDirectory_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic]),
    [__getDirectory_4]: dart.fnType(dart.void, [dart.dynamic]),
    [_getDirectory]: dart.fnType(async.Future$(html$.Entry), [core.String], {options: core.Map}),
    [__getFile]: dart.fnType(dart.void, [core.String], [core.Map, dart.fnType(dart.void, [html$.Entry]), dart.fnType(dart.void, [html$.DomException])]),
    [__getFile_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.fnType(dart.void, [html$.Entry]), dart.fnType(dart.void, [html$.DomException])]),
    [__getFile_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.fnType(dart.void, [html$.Entry])]),
    [__getFile_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic]),
    [__getFile_4]: dart.fnType(dart.void, [dart.dynamic]),
    [_getFile]: dart.fnType(async.Future$(html$.Entry), [core.String], {options: core.Map}),
    [_removeRecursively]: dart.fnType(dart.void, [dart.fnType(dart.void, [])], [dart.fnType(dart.void, [html$.DomException])]),
    [$removeRecursively]: dart.fnType(async.Future, [])
  }));
  dart.registerExtension("DirectoryEntry", html$.DirectoryEntry);
  const _readEntries = Symbol('_readEntries');
  html$.DirectoryReader = class DirectoryReader extends _interceptors.Interceptor {
    [_readEntries](...args) {
      return this.readEntries.apply(this, args);
    }
    [$readEntries]() {
      let completer = CompleterOfListOfEntry().new();
      this[_readEntries](dart.fn(value => {
        completer.complete(ListOfEntry().from(value));
      }, ListToNull()), dart.fn(error => {
        completer.completeError(error);
      }, DomExceptionToNull()));
      return completer.future;
    }
  };
  dart.addTypeTests(html$.DirectoryReader);
  dart.setMethodSignature(html$.DirectoryReader, () => ({
    __proto__: dart.getMethods(html$.DirectoryReader.__proto__),
    [_readEntries]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.List])], [dart.fnType(dart.void, [html$.DomException])]),
    [$readEntries]: dart.fnType(async.Future$(core.List$(html$.Entry)), [])
  }));
  dart.registerExtension("DirectoryReader", html$.DirectoryReader);
  html$.DivElement = class DivElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("div");
    }
  };
  (html$.DivElement.created = function() {
    html$.DivElement.__proto__.created.call(this);
  }).prototype = html$.DivElement.prototype;
  dart.addTypeTests(html$.DivElement);
  dart.registerExtension("HTMLDivElement", html$.DivElement);
  const _body = Symbol('_body');
  const _get_window = Symbol('_get_window');
  const _head$ = Symbol('_head');
  const _lastModified = Symbol('_lastModified');
  const _preferredStylesheetSet = Symbol('_preferredStylesheetSet');
  const _referrer = Symbol('_referrer');
  const _selectedStylesheetSet = Symbol('_selectedStylesheetSet');
  const _title = Symbol('_title');
  const _visibilityState = Symbol('_visibilityState');
  const _webkitFullscreenElement = Symbol('_webkitFullscreenElement');
  const _webkitFullscreenEnabled = Symbol('_webkitFullscreenEnabled');
  const _webkitHidden = Symbol('_webkitHidden');
  const _webkitVisibilityState = Symbol('_webkitVisibilityState');
  const _caretRangeFromPoint = Symbol('_caretRangeFromPoint');
  const _createElement = Symbol('_createElement');
  const _createElementNS = Symbol('_createElementNS');
  const _createTextNode = Symbol('_createTextNode');
  const _createTouch_1 = Symbol('_createTouch_1');
  const _createTouch_2 = Symbol('_createTouch_2');
  const _createTouch_3 = Symbol('_createTouch_3');
  const _createTouch_4 = Symbol('_createTouch_4');
  const _createTouch_5 = Symbol('_createTouch_5');
  const _createTouch = Symbol('_createTouch');
  const _createTouchList = Symbol('_createTouchList');
  const _registerElement2_1 = Symbol('_registerElement2_1');
  const _registerElement2_2 = Symbol('_registerElement2_2');
  const _webkitExitFullscreen = Symbol('_webkitExitFullscreen');
  const _styleSheets = Symbol('_styleSheets');
  const _elementFromPoint = Symbol('_elementFromPoint');
  const _createElement_2 = Symbol('_createElement_2');
  const _createElementNS_2 = Symbol('_createElementNS_2');
  const _createNodeIterator = Symbol('_createNodeIterator');
  const _createTreeWalker = Symbol('_createTreeWalker');
  html$.Document = class Document$ extends html$.Node {
    static new() {
      return html$.Document._create_1();
    }
    static _create_1() {
      return new Document();
    }
    get [$addressSpace]() {
      return this.addressSpace;
    }
    get [_body]() {
      return this.body;
    }
    set [_body](value) {
      this.body = value;
    }
    get [$contentType]() {
      return this.contentType;
    }
    get [$cookie]() {
      return this.cookie;
    }
    set [$cookie](value) {
      this.cookie = value;
    }
    get [$currentScript]() {
      return this.currentScript;
    }
    get [$window]() {
      return html$._convertNativeToDart_Window(this[_get_window]);
    }
    get [_get_window]() {
      return this.defaultView;
    }
    get [$documentElement]() {
      return this.documentElement;
    }
    get [$domain]() {
      return this.domain;
    }
    get [$fullscreenEnabled]() {
      return this.fullscreenEnabled;
    }
    get [_head$]() {
      return this.head;
    }
    get [$hidden]() {
      return this.hidden;
    }
    get [$implementation]() {
      return this.implementation;
    }
    get [_lastModified]() {
      return this.lastModified;
    }
    get [$origin]() {
      return this.origin;
    }
    get [_preferredStylesheetSet]() {
      return this.preferredStylesheetSet;
    }
    get [$readyState]() {
      return this.readyState;
    }
    get [_referrer]() {
      return this.referrer;
    }
    get [$rootElement]() {
      return this.rootElement;
    }
    get [$rootScroller]() {
      return this.rootScroller;
    }
    set [$rootScroller](value) {
      this.rootScroller = value;
    }
    get [$scrollingElement]() {
      return this.scrollingElement;
    }
    get [_selectedStylesheetSet]() {
      return this.selectedStylesheetSet;
    }
    set [_selectedStylesheetSet](value) {
      this.selectedStylesheetSet = value;
    }
    get [$suborigin]() {
      return this.suborigin;
    }
    get [$timeline]() {
      return this.timeline;
    }
    get [_title]() {
      return this.title;
    }
    set [_title](value) {
      this.title = value;
    }
    get [_visibilityState]() {
      return this.visibilityState;
    }
    get [_webkitFullscreenElement]() {
      return this.webkitFullscreenElement;
    }
    get [_webkitFullscreenEnabled]() {
      return this.webkitFullscreenEnabled;
    }
    get [_webkitHidden]() {
      return this.webkitHidden;
    }
    get [_webkitVisibilityState]() {
      return this.webkitVisibilityState;
    }
    [$adoptNode](...args) {
      return this.adoptNode.apply(this, args);
    }
    [_caretRangeFromPoint](...args) {
      return this.caretRangeFromPoint.apply(this, args);
    }
    [$createDocumentFragment](...args) {
      return this.createDocumentFragment.apply(this, args);
    }
    [_createElement](...args) {
      return this.createElement.apply(this, args);
    }
    [_createElementNS](...args) {
      return this.createElementNS.apply(this, args);
    }
    [_createEvent](...args) {
      return this.createEvent.apply(this, args);
    }
    [$createRange](...args) {
      return this.createRange.apply(this, args);
    }
    [_createTextNode](...args) {
      return this.createTextNode.apply(this, args);
    }
    [_createTouch](view, target, identifier, pageX, pageY, screenX, screenY, radiusX, radiusY, rotationAngle, force) {
      if (radiusX === void 0) radiusX = null;
      if (radiusY === void 0) radiusY = null;
      if (rotationAngle === void 0) rotationAngle = null;
      if (force === void 0) force = null;
      if (force != null) {
        let target_1 = html$._convertDartToNative_EventTarget(target);
        return this[_createTouch_1](view, target_1, identifier, pageX, pageY, screenX, screenY, radiusX, radiusY, rotationAngle, force);
      }
      if (rotationAngle != null) {
        let target_1 = html$._convertDartToNative_EventTarget(target);
        return this[_createTouch_2](view, target_1, identifier, pageX, pageY, screenX, screenY, radiusX, radiusY, rotationAngle);
      }
      if (radiusY != null) {
        let target_1 = html$._convertDartToNative_EventTarget(target);
        return this[_createTouch_3](view, target_1, identifier, pageX, pageY, screenX, screenY, radiusX, radiusY);
      }
      if (radiusX != null) {
        let target_1 = html$._convertDartToNative_EventTarget(target);
        return this[_createTouch_4](view, target_1, identifier, pageX, pageY, screenX, screenY, radiusX);
      }
      let target_1 = html$._convertDartToNative_EventTarget(target);
      return this[_createTouch_5](view, target_1, identifier, pageX, pageY, screenX, screenY);
    }
    [_createTouch_1](...args) {
      return this.createTouch.apply(this, args);
    }
    [_createTouch_2](...args) {
      return this.createTouch.apply(this, args);
    }
    [_createTouch_3](...args) {
      return this.createTouch.apply(this, args);
    }
    [_createTouch_4](...args) {
      return this.createTouch.apply(this, args);
    }
    [_createTouch_5](...args) {
      return this.createTouch.apply(this, args);
    }
    [_createTouchList](...args) {
      return this.createTouchList.apply(this, args);
    }
    [$execCommand](...args) {
      return this.execCommand.apply(this, args);
    }
    [$exitFullscreen](...args) {
      return this.exitFullscreen.apply(this, args);
    }
    [$exitPointerLock](...args) {
      return this.exitPointerLock.apply(this, args);
    }
    [$getAnimations](...args) {
      return this.getAnimations.apply(this, args);
    }
    [$getElementsByClassName](...args) {
      return this.getElementsByClassName.apply(this, args);
    }
    [$getElementsByName](...args) {
      return this.getElementsByName.apply(this, args);
    }
    [$getElementsByTagName](...args) {
      return this.getElementsByTagName.apply(this, args);
    }
    [$importNode](...args) {
      return this.importNode.apply(this, args);
    }
    [$queryCommandEnabled](...args) {
      return this.queryCommandEnabled.apply(this, args);
    }
    [$queryCommandIndeterm](...args) {
      return this.queryCommandIndeterm.apply(this, args);
    }
    [$queryCommandState](...args) {
      return this.queryCommandState.apply(this, args);
    }
    [$queryCommandSupported](...args) {
      return this.queryCommandSupported.apply(this, args);
    }
    [$queryCommandValue](...args) {
      return this.queryCommandValue.apply(this, args);
    }
    [$registerElement2](type, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return this[_registerElement2_1](type, options_1);
      }
      return this[_registerElement2_2](type);
    }
    [_registerElement2_1](...args) {
      return this.registerElement.apply(this, args);
    }
    [_registerElement2_2](...args) {
      return this.registerElement.apply(this, args);
    }
    [_webkitExitFullscreen](...args) {
      return this.webkitExitFullscreen.apply(this, args);
    }
    [$getElementById](...args) {
      return this.getElementById.apply(this, args);
    }
    get [$activeElement]() {
      return this.activeElement;
    }
    get [$fullscreenElement]() {
      return this.fullscreenElement;
    }
    get [$pointerLockElement]() {
      return this.pointerLockElement;
    }
    get [_styleSheets]() {
      return this.styleSheets;
    }
    [_elementFromPoint](...args) {
      return this.elementFromPoint.apply(this, args);
    }
    [$elementsFromPoint](...args) {
      return this.elementsFromPoint.apply(this, args);
    }
    get [$fonts]() {
      return this.fonts;
    }
    get [_childElementCount]() {
      return this.childElementCount;
    }
    get [_children]() {
      return this.children;
    }
    get [_firstElementChild]() {
      return this.firstElementChild;
    }
    get [_lastElementChild]() {
      return this.lastElementChild;
    }
    [$querySelector](...args) {
      return this.querySelector.apply(this, args);
    }
    [_querySelectorAll](...args) {
      return this.querySelectorAll.apply(this, args);
    }
    get [$onAbort]() {
      return html$.Element.abortEvent.forTarget(this);
    }
    get [$onBeforeCopy]() {
      return html$.Element.beforeCopyEvent.forTarget(this);
    }
    get [$onBeforeCut]() {
      return html$.Element.beforeCutEvent.forTarget(this);
    }
    get [$onBeforePaste]() {
      return html$.Element.beforePasteEvent.forTarget(this);
    }
    get [$onBlur]() {
      return html$.Element.blurEvent.forTarget(this);
    }
    get [$onCanPlay]() {
      return html$.Element.canPlayEvent.forTarget(this);
    }
    get [$onCanPlayThrough]() {
      return html$.Element.canPlayThroughEvent.forTarget(this);
    }
    get [$onChange]() {
      return html$.Element.changeEvent.forTarget(this);
    }
    get [$onClick]() {
      return html$.Element.clickEvent.forTarget(this);
    }
    get [$onContextMenu]() {
      return html$.Element.contextMenuEvent.forTarget(this);
    }
    get [$onCopy]() {
      return html$.Element.copyEvent.forTarget(this);
    }
    get [$onCut]() {
      return html$.Element.cutEvent.forTarget(this);
    }
    get [$onDoubleClick]() {
      return html$.Element.doubleClickEvent.forTarget(this);
    }
    get [$onDrag]() {
      return html$.Element.dragEvent.forTarget(this);
    }
    get [$onDragEnd]() {
      return html$.Element.dragEndEvent.forTarget(this);
    }
    get [$onDragEnter]() {
      return html$.Element.dragEnterEvent.forTarget(this);
    }
    get [$onDragLeave]() {
      return html$.Element.dragLeaveEvent.forTarget(this);
    }
    get [$onDragOver]() {
      return html$.Element.dragOverEvent.forTarget(this);
    }
    get [$onDragStart]() {
      return html$.Element.dragStartEvent.forTarget(this);
    }
    get [$onDrop]() {
      return html$.Element.dropEvent.forTarget(this);
    }
    get [$onDurationChange]() {
      return html$.Element.durationChangeEvent.forTarget(this);
    }
    get [$onEmptied]() {
      return html$.Element.emptiedEvent.forTarget(this);
    }
    get [$onEnded]() {
      return html$.Element.endedEvent.forTarget(this);
    }
    get [$onError]() {
      return html$.Element.errorEvent.forTarget(this);
    }
    get [$onFocus]() {
      return html$.Element.focusEvent.forTarget(this);
    }
    get [$onInput]() {
      return html$.Element.inputEvent.forTarget(this);
    }
    get [$onInvalid]() {
      return html$.Element.invalidEvent.forTarget(this);
    }
    get [$onKeyDown]() {
      return html$.Element.keyDownEvent.forTarget(this);
    }
    get [$onKeyPress]() {
      return html$.Element.keyPressEvent.forTarget(this);
    }
    get [$onKeyUp]() {
      return html$.Element.keyUpEvent.forTarget(this);
    }
    get [$onLoad]() {
      return html$.Element.loadEvent.forTarget(this);
    }
    get [$onLoadedData]() {
      return html$.Element.loadedDataEvent.forTarget(this);
    }
    get [$onLoadedMetadata]() {
      return html$.Element.loadedMetadataEvent.forTarget(this);
    }
    get [$onMouseDown]() {
      return html$.Element.mouseDownEvent.forTarget(this);
    }
    get [$onMouseEnter]() {
      return html$.Element.mouseEnterEvent.forTarget(this);
    }
    get [$onMouseLeave]() {
      return html$.Element.mouseLeaveEvent.forTarget(this);
    }
    get [$onMouseMove]() {
      return html$.Element.mouseMoveEvent.forTarget(this);
    }
    get [$onMouseOut]() {
      return html$.Element.mouseOutEvent.forTarget(this);
    }
    get [$onMouseOver]() {
      return html$.Element.mouseOverEvent.forTarget(this);
    }
    get [$onMouseUp]() {
      return html$.Element.mouseUpEvent.forTarget(this);
    }
    get [$onMouseWheel]() {
      return html$.Element.mouseWheelEvent.forTarget(this);
    }
    get [$onPaste]() {
      return html$.Element.pasteEvent.forTarget(this);
    }
    get [$onPause]() {
      return html$.Element.pauseEvent.forTarget(this);
    }
    get [$onPlay]() {
      return html$.Element.playEvent.forTarget(this);
    }
    get [$onPlaying]() {
      return html$.Element.playingEvent.forTarget(this);
    }
    get [$onPointerLockChange]() {
      return html$.Document.pointerLockChangeEvent.forTarget(this);
    }
    get [$onPointerLockError]() {
      return html$.Document.pointerLockErrorEvent.forTarget(this);
    }
    get [$onRateChange]() {
      return html$.Element.rateChangeEvent.forTarget(this);
    }
    get [$onReadyStateChange]() {
      return html$.Document.readyStateChangeEvent.forTarget(this);
    }
    get [$onReset]() {
      return html$.Element.resetEvent.forTarget(this);
    }
    get [$onResize]() {
      return html$.Element.resizeEvent.forTarget(this);
    }
    get [$onScroll]() {
      return html$.Element.scrollEvent.forTarget(this);
    }
    get [$onSearch]() {
      return html$.Element.searchEvent.forTarget(this);
    }
    get [$onSecurityPolicyViolation]() {
      return html$.Document.securityPolicyViolationEvent.forTarget(this);
    }
    get [$onSeeked]() {
      return html$.Element.seekedEvent.forTarget(this);
    }
    get [$onSeeking]() {
      return html$.Element.seekingEvent.forTarget(this);
    }
    get [$onSelect]() {
      return html$.Element.selectEvent.forTarget(this);
    }
    get [$onSelectionChange]() {
      return html$.Document.selectionChangeEvent.forTarget(this);
    }
    get [$onSelectStart]() {
      return html$.Element.selectStartEvent.forTarget(this);
    }
    get [$onStalled]() {
      return html$.Element.stalledEvent.forTarget(this);
    }
    get [$onSubmit]() {
      return html$.Element.submitEvent.forTarget(this);
    }
    get [$onSuspend]() {
      return html$.Element.suspendEvent.forTarget(this);
    }
    get [$onTimeUpdate]() {
      return html$.Element.timeUpdateEvent.forTarget(this);
    }
    get [$onTouchCancel]() {
      return html$.Element.touchCancelEvent.forTarget(this);
    }
    get [$onTouchEnd]() {
      return html$.Element.touchEndEvent.forTarget(this);
    }
    get [$onTouchMove]() {
      return html$.Element.touchMoveEvent.forTarget(this);
    }
    get [$onTouchStart]() {
      return html$.Element.touchStartEvent.forTarget(this);
    }
    get [$onVolumeChange]() {
      return html$.Element.volumeChangeEvent.forTarget(this);
    }
    get [$onWaiting]() {
      return html$.Element.waitingEvent.forTarget(this);
    }
    get [$onFullscreenChange]() {
      return html$.Element.fullscreenChangeEvent.forTarget(this);
    }
    get [$onFullscreenError]() {
      return html$.Element.fullscreenErrorEvent.forTarget(this);
    }
    [$querySelectorAll](T, selectors) {
      return new (html$._FrozenElementList$(T))._wrap(this[_querySelectorAll](selectors));
    }
    get [$supportsRegisterElement]() {
      return "registerElement" in this;
    }
    get [$supportsRegister]() {
      return this[$supportsRegisterElement];
    }
    [$registerElement](tag, customElementClass, opts) {
      let extendsTag = opts && 'extendsTag' in opts ? opts.extendsTag : null;
      this[$registerElement2](tag, new _js_helper.LinkedMap.from(["prototype", customElementClass, "extends", extendsTag]));
    }
    [$createElement](tagName, typeExtension) {
      if (typeExtension === void 0) typeExtension = null;
      return html$.Element._check(typeExtension == null ? this[_createElement_2](tagName) : this[_createElement](tagName, typeExtension));
    }
    [_createElement_2](tagName) {
      return this.createElement(tagName);
    }
    [_createElementNS_2](namespaceURI, qualifiedName) {
      return this.createElementNS(namespaceURI, qualifiedName);
    }
    [$createElementNS](namespaceURI, qualifiedName, typeExtension) {
      if (typeExtension === void 0) typeExtension = null;
      return html$.Element._check(typeExtension == null ? this[_createElementNS_2](namespaceURI, qualifiedName) : this[_createElementNS](namespaceURI, qualifiedName, typeExtension));
    }
    [_createNodeIterator](root, whatToShow, filter) {
      if (whatToShow === void 0) whatToShow = null;
      if (filter === void 0) filter = null;
      return this.createNodeIterator(root, whatToShow, filter, false);
    }
    [_createTreeWalker](root, whatToShow, filter) {
      if (whatToShow === void 0) whatToShow = null;
      if (filter === void 0) filter = null;
      return this.createTreeWalker(root, whatToShow, filter, false);
    }
    get [$visibilityState]() {
      return this.visibilityState || this.mozVisibilityState || this.msVisibilityState || this.webkitVisibilityState;
    }
  };
  dart.addTypeTests(html$.Document);
  const addressSpace$ = Symbol("Document.addressSpace");
  const contentType = Symbol("Document.contentType");
  const cookie = Symbol("Document.cookie");
  const currentScript = Symbol("Document.currentScript");
  const documentElement = Symbol("Document.documentElement");
  const domain = Symbol("Document.domain");
  const fullscreenEnabled = Symbol("Document.fullscreenEnabled");
  const hidden$0 = Symbol("Document.hidden");
  const implementation = Symbol("Document.implementation");
  const origin$1 = Symbol("Document.origin");
  const readyState$1 = Symbol("Document.readyState");
  const rootElement = Symbol("Document.rootElement");
  const rootScroller = Symbol("Document.rootScroller");
  const scrollingElement = Symbol("Document.scrollingElement");
  const suborigin = Symbol("Document.suborigin");
  const timeline$ = Symbol("Document.timeline");
  const activeElement = Symbol("Document.activeElement");
  const fullscreenElement = Symbol("Document.fullscreenElement");
  const pointerLockElement = Symbol("Document.pointerLockElement");
  const fonts = Symbol("Document.fonts");
  dart.setMethodSignature(html$.Document, () => ({
    __proto__: dart.getMethods(html$.Document.__proto__),
    [$adoptNode]: dart.fnType(html$.Node, [html$.Node]),
    [_caretRangeFromPoint]: dart.fnType(html$.Range, [core.int, core.int]),
    [$createDocumentFragment]: dart.fnType(html$.DocumentFragment, []),
    [_createElement]: dart.fnType(html$.Element, [core.String], [dart.dynamic]),
    [_createElementNS]: dart.fnType(html$.Element, [core.String, core.String], [dart.dynamic]),
    [_createEvent]: dart.fnType(html$.Event, [core.String]),
    [$createRange]: dart.fnType(html$.Range, []),
    [_createTextNode]: dart.fnType(html$.Text, [core.String]),
    [_createTouch]: dart.fnType(html$.Touch, [html$.Window, html$.EventTarget, core.int, core.num, core.num, core.num, core.num], [core.num, core.num, core.num, core.num]),
    [_createTouch_1]: dart.fnType(html$.Touch, [html$.Window, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_createTouch_2]: dart.fnType(html$.Touch, [html$.Window, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_createTouch_3]: dart.fnType(html$.Touch, [html$.Window, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_createTouch_4]: dart.fnType(html$.Touch, [html$.Window, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_createTouch_5]: dart.fnType(html$.Touch, [html$.Window, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_createTouchList]: dart.fnType(html$.TouchList, [html$.Touch]),
    [$execCommand]: dart.fnType(core.bool, [core.String], [core.bool, core.String]),
    [$exitFullscreen]: dart.fnType(dart.void, []),
    [$exitPointerLock]: dart.fnType(dart.void, []),
    [$getAnimations]: dart.fnType(core.List$(html$.Animation), []),
    [$getElementsByClassName]: dart.fnType(core.List$(html$.Node), [core.String]),
    [$getElementsByName]: dart.fnType(core.List$(html$.Node), [core.String]),
    [$getElementsByTagName]: dart.fnType(core.List$(html$.Node), [core.String]),
    [$importNode]: dart.fnType(html$.Node, [html$.Node], [core.bool]),
    [$queryCommandEnabled]: dart.fnType(core.bool, [core.String]),
    [$queryCommandIndeterm]: dart.fnType(core.bool, [core.String]),
    [$queryCommandState]: dart.fnType(core.bool, [core.String]),
    [$queryCommandSupported]: dart.fnType(core.bool, [core.String]),
    [$queryCommandValue]: dart.fnType(core.String, [core.String]),
    [$registerElement2]: dart.fnType(core.Function, [core.String], [core.Map]),
    [_registerElement2_1]: dart.fnType(core.Function, [dart.dynamic, dart.dynamic]),
    [_registerElement2_2]: dart.fnType(core.Function, [dart.dynamic]),
    [_webkitExitFullscreen]: dart.fnType(dart.void, []),
    [$getElementById]: dart.fnType(html$.Element, [core.String]),
    [_elementFromPoint]: dart.fnType(html$.Element, [core.int, core.int]),
    [$elementsFromPoint]: dart.fnType(core.List$(html$.Element), [core.int, core.int]),
    [$querySelector]: dart.fnType(html$.Element, [core.String]),
    [_querySelectorAll]: dart.fnType(core.List$(html$.Node), [core.String]),
    [$querySelectorAll]: dart.gFnType(T => [html$.ElementList$(T), [core.String]], T => [html$.Element]),
    [$registerElement]: dart.fnType(dart.void, [core.String, core.Type], {extendsTag: core.String}),
    [$createElement]: dart.fnType(html$.Element, [core.String], [core.String]),
    [_createElement_2]: dart.fnType(dart.dynamic, [core.String]),
    [_createElementNS_2]: dart.fnType(dart.dynamic, [core.String, core.String]),
    [$createElementNS]: dart.fnType(html$.Element, [core.String, core.String], [core.String]),
    [_createNodeIterator]: dart.fnType(html$.NodeIterator, [html$.Node], [core.int, html$.NodeFilter]),
    [_createTreeWalker]: dart.fnType(html$.TreeWalker, [html$.Node], [core.int, html$.NodeFilter])
  }));
  dart.setGetterSignature(html$.Document, () => ({
    __proto__: dart.getGetters(html$.Document.__proto__),
    [$window]: html$.WindowBase,
    [$onAbort]: async.Stream$(html$.Event),
    [$onBeforeCopy]: async.Stream$(html$.Event),
    [$onBeforeCut]: async.Stream$(html$.Event),
    [$onBeforePaste]: async.Stream$(html$.Event),
    [$onBlur]: async.Stream$(html$.Event),
    [$onCanPlay]: async.Stream$(html$.Event),
    [$onCanPlayThrough]: async.Stream$(html$.Event),
    [$onChange]: async.Stream$(html$.Event),
    [$onClick]: async.Stream$(html$.MouseEvent),
    [$onContextMenu]: async.Stream$(html$.MouseEvent),
    [$onCopy]: async.Stream$(html$.ClipboardEvent),
    [$onCut]: async.Stream$(html$.ClipboardEvent),
    [$onDoubleClick]: async.Stream$(html$.Event),
    [$onDrag]: async.Stream$(html$.MouseEvent),
    [$onDragEnd]: async.Stream$(html$.MouseEvent),
    [$onDragEnter]: async.Stream$(html$.MouseEvent),
    [$onDragLeave]: async.Stream$(html$.MouseEvent),
    [$onDragOver]: async.Stream$(html$.MouseEvent),
    [$onDragStart]: async.Stream$(html$.MouseEvent),
    [$onDrop]: async.Stream$(html$.MouseEvent),
    [$onDurationChange]: async.Stream$(html$.Event),
    [$onEmptied]: async.Stream$(html$.Event),
    [$onEnded]: async.Stream$(html$.Event),
    [$onError]: async.Stream$(html$.Event),
    [$onFocus]: async.Stream$(html$.Event),
    [$onInput]: async.Stream$(html$.Event),
    [$onInvalid]: async.Stream$(html$.Event),
    [$onKeyDown]: async.Stream$(html$.KeyboardEvent),
    [$onKeyPress]: async.Stream$(html$.KeyboardEvent),
    [$onKeyUp]: async.Stream$(html$.KeyboardEvent),
    [$onLoad]: async.Stream$(html$.Event),
    [$onLoadedData]: async.Stream$(html$.Event),
    [$onLoadedMetadata]: async.Stream$(html$.Event),
    [$onMouseDown]: async.Stream$(html$.MouseEvent),
    [$onMouseEnter]: async.Stream$(html$.MouseEvent),
    [$onMouseLeave]: async.Stream$(html$.MouseEvent),
    [$onMouseMove]: async.Stream$(html$.MouseEvent),
    [$onMouseOut]: async.Stream$(html$.MouseEvent),
    [$onMouseOver]: async.Stream$(html$.MouseEvent),
    [$onMouseUp]: async.Stream$(html$.MouseEvent),
    [$onMouseWheel]: async.Stream$(html$.WheelEvent),
    [$onPaste]: async.Stream$(html$.ClipboardEvent),
    [$onPause]: async.Stream$(html$.Event),
    [$onPlay]: async.Stream$(html$.Event),
    [$onPlaying]: async.Stream$(html$.Event),
    [$onPointerLockChange]: async.Stream$(html$.Event),
    [$onPointerLockError]: async.Stream$(html$.Event),
    [$onRateChange]: async.Stream$(html$.Event),
    [$onReadyStateChange]: async.Stream$(html$.Event),
    [$onReset]: async.Stream$(html$.Event),
    [$onResize]: async.Stream$(html$.Event),
    [$onScroll]: async.Stream$(html$.Event),
    [$onSearch]: async.Stream$(html$.Event),
    [$onSecurityPolicyViolation]: async.Stream$(html$.SecurityPolicyViolationEvent),
    [$onSeeked]: async.Stream$(html$.Event),
    [$onSeeking]: async.Stream$(html$.Event),
    [$onSelect]: async.Stream$(html$.Event),
    [$onSelectionChange]: async.Stream$(html$.Event),
    [$onSelectStart]: async.Stream$(html$.Event),
    [$onStalled]: async.Stream$(html$.Event),
    [$onSubmit]: async.Stream$(html$.Event),
    [$onSuspend]: async.Stream$(html$.Event),
    [$onTimeUpdate]: async.Stream$(html$.Event),
    [$onTouchCancel]: async.Stream$(html$.TouchEvent),
    [$onTouchEnd]: async.Stream$(html$.TouchEvent),
    [$onTouchMove]: async.Stream$(html$.TouchEvent),
    [$onTouchStart]: async.Stream$(html$.TouchEvent),
    [$onVolumeChange]: async.Stream$(html$.Event),
    [$onWaiting]: async.Stream$(html$.Event),
    [$onFullscreenChange]: async.Stream$(html$.Event),
    [$onFullscreenError]: async.Stream$(html$.Event),
    [$supportsRegisterElement]: core.bool,
    [$supportsRegister]: core.bool,
    [$visibilityState]: core.String
  }));
  dart.setFieldSignature(html$.Document, () => ({
    __proto__: dart.getFields(html$.Document.__proto__),
    [$addressSpace]: dart.finalFieldType(core.String),
    [_body]: dart.fieldType(html$.HtmlElement),
    [$contentType]: dart.finalFieldType(core.String),
    [$cookie]: dart.fieldType(core.String),
    [$currentScript]: dart.finalFieldType(html$.ScriptElement),
    [_get_window]: dart.finalFieldType(dart.dynamic),
    [$documentElement]: dart.finalFieldType(html$.Element),
    [$domain]: dart.finalFieldType(core.String),
    [$fullscreenEnabled]: dart.finalFieldType(core.bool),
    [_head$]: dart.finalFieldType(html$.HeadElement),
    [$hidden]: dart.finalFieldType(core.bool),
    [$implementation]: dart.finalFieldType(html$.DomImplementation),
    [_lastModified]: dart.finalFieldType(core.String),
    [$origin]: dart.finalFieldType(core.String),
    [_preferredStylesheetSet]: dart.finalFieldType(core.String),
    [$readyState]: dart.finalFieldType(core.String),
    [_referrer]: dart.finalFieldType(core.String),
    [$rootElement]: dart.finalFieldType(svg$.SvgSvgElement),
    [$rootScroller]: dart.fieldType(html$.Element),
    [$scrollingElement]: dart.finalFieldType(html$.Element),
    [_selectedStylesheetSet]: dart.fieldType(core.String),
    [$suborigin]: dart.finalFieldType(core.String),
    [$timeline]: dart.finalFieldType(html$.DocumentTimeline),
    [_title]: dart.fieldType(core.String),
    [_visibilityState]: dart.finalFieldType(core.String),
    [_webkitFullscreenElement]: dart.finalFieldType(html$.Element),
    [_webkitFullscreenEnabled]: dart.finalFieldType(core.bool),
    [_webkitHidden]: dart.finalFieldType(core.bool),
    [_webkitVisibilityState]: dart.finalFieldType(core.String),
    [$activeElement]: dart.finalFieldType(html$.Element),
    [$fullscreenElement]: dart.finalFieldType(html$.Element),
    [$pointerLockElement]: dart.finalFieldType(html$.Element),
    [_styleSheets]: dart.finalFieldType(ListOfStyleSheet()),
    [$fonts]: dart.finalFieldType(html$.FontFaceSet),
    [_childElementCount]: dart.finalFieldType(core.int),
    [_children]: dart.finalFieldType(ListOfNode()),
    [_firstElementChild]: dart.finalFieldType(html$.Element),
    [_lastElementChild]: dart.finalFieldType(html$.Element)
  }));
  dart.defineLazy(html$.Document, {
    /*html$.Document.pointerLockChangeEvent*/get pointerLockChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("pointerlockchange"));
    },
    /*html$.Document.pointerLockErrorEvent*/get pointerLockErrorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("pointerlockerror"));
    },
    /*html$.Document.readyStateChangeEvent*/get readyStateChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("readystatechange"));
    },
    /*html$.Document.securityPolicyViolationEvent*/get securityPolicyViolationEvent() {
      return dart.const(new (EventStreamProviderOfSecurityPolicyViolationEvent()).new("securitypolicyviolation"));
    },
    /*html$.Document.selectionChangeEvent*/get selectionChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("selectionchange"));
    }
  });
  dart.registerExtension("Document", html$.Document);
  const _docChildren = Symbol('_docChildren');
  html$.DocumentFragment = class DocumentFragment extends html$.Node {
    static new() {
      return html$.document.createDocumentFragment();
    }
    static html(html, opts) {
      let validator = opts && 'validator' in opts ? opts.validator : null;
      let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
      return html$.document.body[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
    }
    static svg(svgContent, opts) {
      let validator = opts && 'validator' in opts ? opts.validator : null;
      let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
      return svg$.SvgSvgElement.new()[$createFragment](svgContent, {validator: validator, treeSanitizer: treeSanitizer});
    }
    get [_children]() {
      return dart.throw(new core.UnimplementedError.new("Use _docChildren instead"));
    }
    get [_docChildren]() {
      return this._docChildren;
    }
    set [_docChildren](value) {
      this._docChildren = value;
    }
    get [$children]() {
      if (this[_docChildren] == null) {
        this[_docChildren] = new html_common.FilteredElementList.new(this);
      }
      return this[_docChildren];
    }
    set [$children](value) {
      let copy = value[$toList]();
      let children = this[$children];
      children[$clear]();
      children[$addAll](copy);
    }
    [$querySelectorAll](T, selectors) {
      return new (html$._FrozenElementList$(T))._wrap(this[_querySelectorAll](selectors));
    }
    get [$innerHtml]() {
      let e = html$.DivElement.new();
      e[$append](this[$clone](true));
      return e[$innerHtml];
    }
    set [$innerHtml](value) {
      this[$setInnerHtml](value);
    }
    [$setInnerHtml](html, opts) {
      let validator = opts && 'validator' in opts ? opts.validator : null;
      let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
      this[$nodes][$clear]();
      this[$append](html$.document.body[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer}));
    }
    [$appendText](text) {
      this[$append](html$.Text.new(text));
    }
    [$appendHtml](text, opts) {
      let validator = opts && 'validator' in opts ? opts.validator : null;
      let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
      this[$append](html$.DocumentFragment.html(text, {validator: validator, treeSanitizer: treeSanitizer}));
    }
    [$getElementById](...args) {
      return this.getElementById.apply(this, args);
    }
    get [_childElementCount]() {
      return this.childElementCount;
    }
    get [_firstElementChild]() {
      return this.firstElementChild;
    }
    get [_lastElementChild]() {
      return this.lastElementChild;
    }
    [$querySelector](...args) {
      return this.querySelector.apply(this, args);
    }
    [_querySelectorAll](...args) {
      return this.querySelectorAll.apply(this, args);
    }
  };
  dart.addTypeTests(html$.DocumentFragment);
  html$.DocumentFragment[dart.implements] = () => [html$.NonElementParentNode, html$.ParentNode];
  dart.setMethodSignature(html$.DocumentFragment, () => ({
    __proto__: dart.getMethods(html$.DocumentFragment.__proto__),
    [$querySelectorAll]: dart.gFnType(T => [html$.ElementList$(T), [core.String]], T => [html$.Element]),
    [$setInnerHtml]: dart.fnType(dart.void, [core.String], {validator: html$.NodeValidator, treeSanitizer: html$.NodeTreeSanitizer}),
    [$appendText]: dart.fnType(dart.void, [core.String]),
    [$appendHtml]: dart.fnType(dart.void, [core.String], {validator: html$.NodeValidator, treeSanitizer: html$.NodeTreeSanitizer}),
    [$getElementById]: dart.fnType(html$.Element, [core.String]),
    [$querySelector]: dart.fnType(html$.Element, [core.String]),
    [_querySelectorAll]: dart.fnType(core.List$(html$.Node), [core.String])
  }));
  dart.setGetterSignature(html$.DocumentFragment, () => ({
    __proto__: dart.getGetters(html$.DocumentFragment.__proto__),
    [_children]: html$.HtmlCollection,
    [$children]: core.List$(html$.Element),
    [$innerHtml]: core.String
  }));
  dart.setSetterSignature(html$.DocumentFragment, () => ({
    __proto__: dart.getSetters(html$.DocumentFragment.__proto__),
    [$children]: core.List$(html$.Element),
    [$innerHtml]: core.String
  }));
  dart.setFieldSignature(html$.DocumentFragment, () => ({
    __proto__: dart.getFields(html$.DocumentFragment.__proto__),
    [_docChildren]: dart.fieldType(ListOfElement()),
    [_childElementCount]: dart.finalFieldType(core.int),
    [_firstElementChild]: dart.finalFieldType(html$.Element),
    [_lastElementChild]: dart.finalFieldType(html$.Element)
  }));
  dart.registerExtension("DocumentFragment", html$.DocumentFragment);
  html$.DocumentOrShadowRoot = class DocumentOrShadowRoot extends _interceptors.Interceptor {
    get [$activeElement]() {
      return this.activeElement;
    }
    get [$fullscreenElement]() {
      return this.fullscreenElement;
    }
    get [$pointerLockElement]() {
      return this.pointerLockElement;
    }
    get [$styleSheets]() {
      return this.styleSheets;
    }
    [$elementFromPoint](...args) {
      return this.elementFromPoint.apply(this, args);
    }
    [$elementsFromPoint](...args) {
      return this.elementsFromPoint.apply(this, args);
    }
    [$getSelection](...args) {
      return this.getSelection.apply(this, args);
    }
  };
  dart.addTypeTests(html$.DocumentOrShadowRoot);
  const activeElement$ = Symbol("DocumentOrShadowRoot.activeElement");
  const fullscreenElement$ = Symbol("DocumentOrShadowRoot.fullscreenElement");
  const pointerLockElement$ = Symbol("DocumentOrShadowRoot.pointerLockElement");
  const styleSheets = Symbol("DocumentOrShadowRoot.styleSheets");
  dart.setMethodSignature(html$.DocumentOrShadowRoot, () => ({
    __proto__: dart.getMethods(html$.DocumentOrShadowRoot.__proto__),
    [$elementFromPoint]: dart.fnType(html$.Element, [core.int, core.int]),
    [$elementsFromPoint]: dart.fnType(core.List$(html$.Element), [core.int, core.int]),
    [$getSelection]: dart.fnType(html$.Selection, [])
  }));
  dart.setFieldSignature(html$.DocumentOrShadowRoot, () => ({
    __proto__: dart.getFields(html$.DocumentOrShadowRoot.__proto__),
    [$activeElement]: dart.finalFieldType(html$.Element),
    [$fullscreenElement]: dart.finalFieldType(html$.Element),
    [$pointerLockElement]: dart.finalFieldType(html$.Element),
    [$styleSheets]: dart.finalFieldType(ListOfStyleSheet())
  }));
  dart.registerExtension("DocumentOrShadowRoot", html$.DocumentOrShadowRoot);
  html$.DocumentTimeline = class DocumentTimeline$ extends html$.AnimationTimeline {
    static new(options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return html$.DocumentTimeline._create_1(options_1);
      }
      return html$.DocumentTimeline._create_2();
    }
    static _create_1(options) {
      return new DocumentTimeline(options);
    }
    static _create_2() {
      return new DocumentTimeline();
    }
  };
  dart.addTypeTests(html$.DocumentTimeline);
  dart.registerExtension("DocumentTimeline", html$.DocumentTimeline);
  html$.DomError = class DomError extends _interceptors.Interceptor {
    static new(name, message) {
      if (message === void 0) message = null;
      if (message != null) {
        return html$.DomError._create_1(name, message);
      }
      return html$.DomError._create_2(name);
    }
    static _create_1(name, message) {
      return new DOMError(name, message);
    }
    static _create_2(name) {
      return new DOMError(name);
    }
    get [$message]() {
      return this.message;
    }
    get [$name]() {
      return this.name;
    }
  };
  dart.addTypeTests(html$.DomError);
  const message$17 = Symbol("DomError.message");
  const name$11 = Symbol("DomError.name");
  dart.setFieldSignature(html$.DomError, () => ({
    __proto__: dart.getFields(html$.DomError.__proto__),
    [$message]: dart.finalFieldType(core.String),
    [$name]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("DOMError", html$.DomError);
  html$.DomException = class DomException extends _interceptors.Interceptor {
    get [$name]() {
      let errorName = this.name;
      if (dart.test(html_common.Device.isWebKit) && errorName === "SECURITY_ERR") return "SecurityError";
      if (dart.test(html_common.Device.isWebKit) && errorName === "SYNTAX_ERR") return "SyntaxError";
      return errorName;
    }
    get [$message]() {
      return this.message;
    }
    [$toString]() {
      return String(this);
    }
  };
  dart.addTypeTests(html$.DomException);
  const message$18 = Symbol("DomException.message");
  dart.setGetterSignature(html$.DomException, () => ({
    __proto__: dart.getGetters(html$.DomException.__proto__),
    [$name]: core.String
  }));
  dart.setFieldSignature(html$.DomException, () => ({
    __proto__: dart.getFields(html$.DomException.__proto__),
    [$message]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.DomException, {
    /*html$.DomException.INDEX_SIZE*/get INDEX_SIZE() {
      return "IndexSizeError";
    },
    /*html$.DomException.HIERARCHY_REQUEST*/get HIERARCHY_REQUEST() {
      return "HierarchyRequestError";
    },
    /*html$.DomException.WRONG_DOCUMENT*/get WRONG_DOCUMENT() {
      return "WrongDocumentError";
    },
    /*html$.DomException.INVALID_CHARACTER*/get INVALID_CHARACTER() {
      return "InvalidCharacterError";
    },
    /*html$.DomException.NO_MODIFICATION_ALLOWED*/get NO_MODIFICATION_ALLOWED() {
      return "NoModificationAllowedError";
    },
    /*html$.DomException.NOT_FOUND*/get NOT_FOUND() {
      return "NotFoundError";
    },
    /*html$.DomException.NOT_SUPPORTED*/get NOT_SUPPORTED() {
      return "NotSupportedError";
    },
    /*html$.DomException.INVALID_STATE*/get INVALID_STATE() {
      return "InvalidStateError";
    },
    /*html$.DomException.SYNTAX*/get SYNTAX() {
      return "SyntaxError";
    },
    /*html$.DomException.INVALID_MODIFICATION*/get INVALID_MODIFICATION() {
      return "InvalidModificationError";
    },
    /*html$.DomException.NAMESPACE*/get NAMESPACE() {
      return "NamespaceError";
    },
    /*html$.DomException.INVALID_ACCESS*/get INVALID_ACCESS() {
      return "InvalidAccessError";
    },
    /*html$.DomException.TYPE_MISMATCH*/get TYPE_MISMATCH() {
      return "TypeMismatchError";
    },
    /*html$.DomException.SECURITY*/get SECURITY() {
      return "SecurityError";
    },
    /*html$.DomException.NETWORK*/get NETWORK() {
      return "NetworkError";
    },
    /*html$.DomException.ABORT*/get ABORT() {
      return "AbortError";
    },
    /*html$.DomException.URL_MISMATCH*/get URL_MISMATCH() {
      return "URLMismatchError";
    },
    /*html$.DomException.QUOTA_EXCEEDED*/get QUOTA_EXCEEDED() {
      return "QuotaExceededError";
    },
    /*html$.DomException.TIMEOUT*/get TIMEOUT() {
      return "TimeoutError";
    },
    /*html$.DomException.INVALID_NODE_TYPE*/get INVALID_NODE_TYPE() {
      return "InvalidNodeTypeError";
    },
    /*html$.DomException.DATA_CLONE*/get DATA_CLONE() {
      return "DataCloneError";
    },
    /*html$.DomException.TYPE_ERROR*/get TYPE_ERROR() {
      return "TypeError";
    }
  });
  dart.registerExtension("DOMException", html$.DomException);
  html$.DomImplementation = class DomImplementation extends _interceptors.Interceptor {
    [$createDocument](...args) {
      return this.createDocument.apply(this, args);
    }
    [$createDocumentType](...args) {
      return this.createDocumentType.apply(this, args);
    }
    [$createHtmlDocument](...args) {
      return this.createHTMLDocument.apply(this, args);
    }
    [$hasFeature](...args) {
      return this.hasFeature.apply(this, args);
    }
  };
  dart.addTypeTests(html$.DomImplementation);
  dart.setMethodSignature(html$.DomImplementation, () => ({
    __proto__: dart.getMethods(html$.DomImplementation.__proto__),
    [$createDocument]: dart.fnType(html$.XmlDocument, [core.String, core.String, html$._DocumentType]),
    [$createDocumentType]: dart.fnType(html$._DocumentType, [core.String, core.String, core.String]),
    [$createHtmlDocument]: dart.fnType(html$.HtmlDocument, [], [core.String]),
    [$hasFeature]: dart.fnType(core.bool, [])
  }));
  dart.registerExtension("DOMImplementation", html$.DomImplementation);
  html$.DomIterator = class DomIterator extends _interceptors.Interceptor {
    [$next](...args) {
      return this.next.apply(this, args);
    }
  };
  dart.addTypeTests(html$.DomIterator);
  dart.setMethodSignature(html$.DomIterator, () => ({
    __proto__: dart.getMethods(html$.DomIterator.__proto__),
    [$next]: dart.fnType(core.Object, [], [core.Object])
  }));
  dart.registerExtension("Iterator", html$.DomIterator);
  const _multiplySelf_1 = Symbol('_multiplySelf_1');
  const _multiplySelf_2 = Symbol('_multiplySelf_2');
  const _preMultiplySelf_1 = Symbol('_preMultiplySelf_1');
  const _preMultiplySelf_2 = Symbol('_preMultiplySelf_2');
  const _multiply_1 = Symbol('_multiply_1');
  const _multiply_2 = Symbol('_multiply_2');
  const _transformPoint_1 = Symbol('_transformPoint_1');
  const _transformPoint_2 = Symbol('_transformPoint_2');
  html$.DomMatrixReadOnly = class DomMatrixReadOnly extends _interceptors.Interceptor {
    static new(init) {
      if (init === void 0) init = null;
      if (init != null) {
        return html$.DomMatrixReadOnly._create_1(init);
      }
      return html$.DomMatrixReadOnly._create_2();
    }
    static _create_1(init) {
      return new DOMMatrixReadOnly(init);
    }
    static _create_2() {
      return new DOMMatrixReadOnly();
    }
    get [$a]() {
      return this.a;
    }
    get [$b]() {
      return this.b;
    }
    get [$c]() {
      return this.c;
    }
    get [$d]() {
      return this.d;
    }
    get [$e]() {
      return this.e;
    }
    get [$f]() {
      return this.f;
    }
    get [$is2D]() {
      return this.is2D;
    }
    get [$isIdentity]() {
      return this.isIdentity;
    }
    get [$m11]() {
      return this.m11;
    }
    get [$m12]() {
      return this.m12;
    }
    get [$m13]() {
      return this.m13;
    }
    get [$m14]() {
      return this.m14;
    }
    get [$m21]() {
      return this.m21;
    }
    get [$m22]() {
      return this.m22;
    }
    get [$m23]() {
      return this.m23;
    }
    get [$m24]() {
      return this.m24;
    }
    get [$m31]() {
      return this.m31;
    }
    get [$m32]() {
      return this.m32;
    }
    get [$m33]() {
      return this.m33;
    }
    get [$m34]() {
      return this.m34;
    }
    get [$m41]() {
      return this.m41;
    }
    get [$m42]() {
      return this.m42;
    }
    get [$m43]() {
      return this.m43;
    }
    get [$m44]() {
      return this.m44;
    }
    [$flipX](...args) {
      return this.flipX.apply(this, args);
    }
    [$flipY](...args) {
      return this.flipY.apply(this, args);
    }
    static fromMatrix(other) {
      if (other === void 0) other = null;
      if (other != null) {
        let other_1 = html_common.convertDartToNative_Dictionary(other);
        return dart.global.DOMMatrixReadOnly.fromMatrix(other_1);
      }
      return dart.global.DOMMatrixReadOnly.fromMatrix();
    }
    [$inverse](...args) {
      return this.inverse.apply(this, args);
    }
    [$multiply](other) {
      if (other === void 0) other = null;
      if (other != null) {
        let other_1 = html_common.convertDartToNative_Dictionary(other);
        return this[_multiply_1](other_1);
      }
      return this[_multiply_2]();
    }
    [_multiply_1](...args) {
      return this.multiply.apply(this, args);
    }
    [_multiply_2](...args) {
      return this.multiply.apply(this, args);
    }
    [$rotate](...args) {
      return this.rotate.apply(this, args);
    }
    [$rotateAxisAngle](...args) {
      return this.rotateAxisAngle.apply(this, args);
    }
    [$rotateFromVector](...args) {
      return this.rotateFromVector.apply(this, args);
    }
    [$scale](...args) {
      return this.scale.apply(this, args);
    }
    [$scale3d](...args) {
      return this.scale3d.apply(this, args);
    }
    [$skewX](...args) {
      return this.skewX.apply(this, args);
    }
    [$skewY](...args) {
      return this.skewY.apply(this, args);
    }
    [$toFloat32Array](...args) {
      return this.toFloat32Array.apply(this, args);
    }
    [$toFloat64Array](...args) {
      return this.toFloat64Array.apply(this, args);
    }
    [$transformPoint](point) {
      if (point === void 0) point = null;
      if (point != null) {
        let point_1 = html_common.convertDartToNative_Dictionary(point);
        return this[_transformPoint_1](point_1);
      }
      return this[_transformPoint_2]();
    }
    [_transformPoint_1](...args) {
      return this.transformPoint.apply(this, args);
    }
    [_transformPoint_2](...args) {
      return this.transformPoint.apply(this, args);
    }
    [$translate](...args) {
      return this.translate.apply(this, args);
    }
  };
  dart.addTypeTests(html$.DomMatrixReadOnly);
  dart.setMethodSignature(html$.DomMatrixReadOnly, () => ({
    __proto__: dart.getMethods(html$.DomMatrixReadOnly.__proto__),
    [$flipX]: dart.fnType(html$.DomMatrix, []),
    [$flipY]: dart.fnType(html$.DomMatrix, []),
    [$inverse]: dart.fnType(html$.DomMatrix, []),
    [$multiply]: dart.fnType(html$.DomMatrix, [], [core.Map]),
    [_multiply_1]: dart.fnType(html$.DomMatrix, [dart.dynamic]),
    [_multiply_2]: dart.fnType(html$.DomMatrix, []),
    [$rotate]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num]),
    [$rotateAxisAngle]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num, core.num]),
    [$rotateFromVector]: dart.fnType(html$.DomMatrix, [], [core.num, core.num]),
    [$scale]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$scale3d]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num, core.num]),
    [$skewX]: dart.fnType(html$.DomMatrix, [], [core.num]),
    [$skewY]: dart.fnType(html$.DomMatrix, [], [core.num]),
    [$toFloat32Array]: dart.fnType(typed_data.Float32List, []),
    [$toFloat64Array]: dart.fnType(typed_data.Float64List, []),
    [$transformPoint]: dart.fnType(html$.DomPoint, [], [core.Map]),
    [_transformPoint_1]: dart.fnType(html$.DomPoint, [dart.dynamic]),
    [_transformPoint_2]: dart.fnType(html$.DomPoint, []),
    [$translate]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num])
  }));
  dart.setGetterSignature(html$.DomMatrixReadOnly, () => ({
    __proto__: dart.getGetters(html$.DomMatrixReadOnly.__proto__),
    [$a]: core.num,
    [$b]: core.num,
    [$c]: core.num,
    [$d]: core.num,
    [$e]: core.num,
    [$f]: core.num,
    [$is2D]: core.bool,
    [$isIdentity]: core.bool,
    [$m11]: core.num,
    [$m12]: core.num,
    [$m13]: core.num,
    [$m14]: core.num,
    [$m21]: core.num,
    [$m22]: core.num,
    [$m23]: core.num,
    [$m24]: core.num,
    [$m31]: core.num,
    [$m32]: core.num,
    [$m33]: core.num,
    [$m34]: core.num,
    [$m41]: core.num,
    [$m42]: core.num,
    [$m43]: core.num,
    [$m44]: core.num
  }));
  dart.registerExtension("DOMMatrixReadOnly", html$.DomMatrixReadOnly);
  html$.DomMatrix = class DomMatrix extends html$.DomMatrixReadOnly {
    static new(init) {
      if (init === void 0) init = null;
      if (init != null) {
        return html$.DomMatrix._create_1(init);
      }
      return html$.DomMatrix._create_2();
    }
    static _create_1(init) {
      return new DOMMatrix(init);
    }
    static _create_2() {
      return new DOMMatrix();
    }
    get [$a]() {
      return this.a;
    }
    set [$a](value) {
      this.a = value;
    }
    get [$b]() {
      return this.b;
    }
    set [$b](value) {
      this.b = value;
    }
    get [$c]() {
      return this.c;
    }
    set [$c](value) {
      this.c = value;
    }
    get [$d]() {
      return this.d;
    }
    set [$d](value) {
      this.d = value;
    }
    get [$e]() {
      return this.e;
    }
    set [$e](value) {
      this.e = value;
    }
    get [$f]() {
      return this.f;
    }
    set [$f](value) {
      this.f = value;
    }
    get [$m11]() {
      return this.m11;
    }
    set [$m11](value) {
      this.m11 = value;
    }
    get [$m12]() {
      return this.m12;
    }
    set [$m12](value) {
      this.m12 = value;
    }
    get [$m13]() {
      return this.m13;
    }
    set [$m13](value) {
      this.m13 = value;
    }
    get [$m14]() {
      return this.m14;
    }
    set [$m14](value) {
      this.m14 = value;
    }
    get [$m21]() {
      return this.m21;
    }
    set [$m21](value) {
      this.m21 = value;
    }
    get [$m22]() {
      return this.m22;
    }
    set [$m22](value) {
      this.m22 = value;
    }
    get [$m23]() {
      return this.m23;
    }
    set [$m23](value) {
      this.m23 = value;
    }
    get [$m24]() {
      return this.m24;
    }
    set [$m24](value) {
      this.m24 = value;
    }
    get [$m31]() {
      return this.m31;
    }
    set [$m31](value) {
      this.m31 = value;
    }
    get [$m32]() {
      return this.m32;
    }
    set [$m32](value) {
      this.m32 = value;
    }
    get [$m33]() {
      return this.m33;
    }
    set [$m33](value) {
      this.m33 = value;
    }
    get [$m34]() {
      return this.m34;
    }
    set [$m34](value) {
      this.m34 = value;
    }
    get [$m41]() {
      return this.m41;
    }
    set [$m41](value) {
      this.m41 = value;
    }
    get [$m42]() {
      return this.m42;
    }
    set [$m42](value) {
      this.m42 = value;
    }
    get [$m43]() {
      return this.m43;
    }
    set [$m43](value) {
      this.m43 = value;
    }
    get [$m44]() {
      return this.m44;
    }
    set [$m44](value) {
      this.m44 = value;
    }
    static fromMatrix(other) {
      if (other === void 0) other = null;
      if (other != null) {
        let other_1 = html_common.convertDartToNative_Dictionary(other);
        return dart.global.DOMMatrix.fromMatrix(other_1);
      }
      return dart.global.DOMMatrix.fromMatrix();
    }
    [$invertSelf](...args) {
      return this.invertSelf.apply(this, args);
    }
    [$multiplySelf](other) {
      if (other === void 0) other = null;
      if (other != null) {
        let other_1 = html_common.convertDartToNative_Dictionary(other);
        return this[_multiplySelf_1](other_1);
      }
      return this[_multiplySelf_2]();
    }
    [_multiplySelf_1](...args) {
      return this.multiplySelf.apply(this, args);
    }
    [_multiplySelf_2](...args) {
      return this.multiplySelf.apply(this, args);
    }
    [$preMultiplySelf](other) {
      if (other === void 0) other = null;
      if (other != null) {
        let other_1 = html_common.convertDartToNative_Dictionary(other);
        return this[_preMultiplySelf_1](other_1);
      }
      return this[_preMultiplySelf_2]();
    }
    [_preMultiplySelf_1](...args) {
      return this.preMultiplySelf.apply(this, args);
    }
    [_preMultiplySelf_2](...args) {
      return this.preMultiplySelf.apply(this, args);
    }
    [$rotateAxisAngleSelf](...args) {
      return this.rotateAxisAngleSelf.apply(this, args);
    }
    [$rotateFromVectorSelf](...args) {
      return this.rotateFromVectorSelf.apply(this, args);
    }
    [$rotateSelf](...args) {
      return this.rotateSelf.apply(this, args);
    }
    [$scale3dSelf](...args) {
      return this.scale3dSelf.apply(this, args);
    }
    [$scaleSelf](...args) {
      return this.scaleSelf.apply(this, args);
    }
    [$setMatrixValue](...args) {
      return this.setMatrixValue.apply(this, args);
    }
    [$skewXSelf](...args) {
      return this.skewXSelf.apply(this, args);
    }
    [$skewYSelf](...args) {
      return this.skewYSelf.apply(this, args);
    }
    [$translateSelf](...args) {
      return this.translateSelf.apply(this, args);
    }
  };
  dart.addTypeTests(html$.DomMatrix);
  dart.setMethodSignature(html$.DomMatrix, () => ({
    __proto__: dart.getMethods(html$.DomMatrix.__proto__),
    [$invertSelf]: dart.fnType(html$.DomMatrix, []),
    [$multiplySelf]: dart.fnType(html$.DomMatrix, [], [core.Map]),
    [_multiplySelf_1]: dart.fnType(html$.DomMatrix, [dart.dynamic]),
    [_multiplySelf_2]: dart.fnType(html$.DomMatrix, []),
    [$preMultiplySelf]: dart.fnType(html$.DomMatrix, [], [core.Map]),
    [_preMultiplySelf_1]: dart.fnType(html$.DomMatrix, [dart.dynamic]),
    [_preMultiplySelf_2]: dart.fnType(html$.DomMatrix, []),
    [$rotateAxisAngleSelf]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num, core.num]),
    [$rotateFromVectorSelf]: dart.fnType(html$.DomMatrix, [], [core.num, core.num]),
    [$rotateSelf]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num]),
    [$scale3dSelf]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num, core.num]),
    [$scaleSelf]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$setMatrixValue]: dart.fnType(html$.DomMatrix, [core.String]),
    [$skewXSelf]: dart.fnType(html$.DomMatrix, [], [core.num]),
    [$skewYSelf]: dart.fnType(html$.DomMatrix, [], [core.num]),
    [$translateSelf]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num])
  }));
  dart.setSetterSignature(html$.DomMatrix, () => ({
    __proto__: dart.getSetters(html$.DomMatrix.__proto__),
    [$a]: core.num,
    [$b]: core.num,
    [$c]: core.num,
    [$d]: core.num,
    [$e]: core.num,
    [$f]: core.num,
    [$m11]: core.num,
    [$m12]: core.num,
    [$m13]: core.num,
    [$m14]: core.num,
    [$m21]: core.num,
    [$m22]: core.num,
    [$m23]: core.num,
    [$m24]: core.num,
    [$m31]: core.num,
    [$m32]: core.num,
    [$m33]: core.num,
    [$m34]: core.num,
    [$m41]: core.num,
    [$m42]: core.num,
    [$m43]: core.num,
    [$m44]: core.num
  }));
  dart.registerExtension("DOMMatrix", html$.DomMatrix);
  html$.DomParser = class DomParser extends _interceptors.Interceptor {
    static new() {
      return html$.DomParser._create_1();
    }
    static _create_1() {
      return new DOMParser();
    }
    [$parseFromString](...args) {
      return this.parseFromString.apply(this, args);
    }
  };
  dart.addTypeTests(html$.DomParser);
  dart.setMethodSignature(html$.DomParser, () => ({
    __proto__: dart.getMethods(html$.DomParser.__proto__),
    [$parseFromString]: dart.fnType(html$.Document, [core.String, core.String])
  }));
  dart.registerExtension("DOMParser", html$.DomParser);
  const _matrixTransform_1 = Symbol('_matrixTransform_1');
  const _matrixTransform_2 = Symbol('_matrixTransform_2');
  html$.DomPointReadOnly = class DomPointReadOnly extends _interceptors.Interceptor {
    static new(x, y, z, w) {
      if (x === void 0) x = null;
      if (y === void 0) y = null;
      if (z === void 0) z = null;
      if (w === void 0) w = null;
      if (w != null) {
        return html$.DomPointReadOnly._create_1(x, y, z, w);
      }
      if (z != null) {
        return html$.DomPointReadOnly._create_2(x, y, z);
      }
      if (y != null) {
        return html$.DomPointReadOnly._create_3(x, y);
      }
      if (x != null) {
        return html$.DomPointReadOnly._create_4(x);
      }
      return html$.DomPointReadOnly._create_5();
    }
    static _create_1(x, y, z, w) {
      return new DOMPointReadOnly(x, y, z, w);
    }
    static _create_2(x, y, z) {
      return new DOMPointReadOnly(x, y, z);
    }
    static _create_3(x, y) {
      return new DOMPointReadOnly(x, y);
    }
    static _create_4(x) {
      return new DOMPointReadOnly(x);
    }
    static _create_5() {
      return new DOMPointReadOnly();
    }
    get [$w]() {
      return this.w;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
    get [$z]() {
      return this.z;
    }
    static fromPoint(other) {
      if (other === void 0) other = null;
      if (other != null) {
        let other_1 = html_common.convertDartToNative_Dictionary(other);
        return dart.global.DOMPointReadOnly.fromPoint(other_1);
      }
      return dart.global.DOMPointReadOnly.fromPoint();
    }
    [$matrixTransform](matrix) {
      if (matrix === void 0) matrix = null;
      if (matrix != null) {
        let matrix_1 = html_common.convertDartToNative_Dictionary(matrix);
        return this[_matrixTransform_1](matrix_1);
      }
      return this[_matrixTransform_2]();
    }
    [_matrixTransform_1](...args) {
      return this.matrixTransform.apply(this, args);
    }
    [_matrixTransform_2](...args) {
      return this.matrixTransform.apply(this, args);
    }
  };
  dart.addTypeTests(html$.DomPointReadOnly);
  dart.setMethodSignature(html$.DomPointReadOnly, () => ({
    __proto__: dart.getMethods(html$.DomPointReadOnly.__proto__),
    [$matrixTransform]: dart.fnType(html$.DomPoint, [], [core.Map]),
    [_matrixTransform_1]: dart.fnType(html$.DomPoint, [dart.dynamic]),
    [_matrixTransform_2]: dart.fnType(html$.DomPoint, [])
  }));
  dart.setGetterSignature(html$.DomPointReadOnly, () => ({
    __proto__: dart.getGetters(html$.DomPointReadOnly.__proto__),
    [$w]: core.num,
    [$x]: core.num,
    [$y]: core.num,
    [$z]: core.num
  }));
  dart.registerExtension("DOMPointReadOnly", html$.DomPointReadOnly);
  html$.DomPoint = class DomPoint extends html$.DomPointReadOnly {
    static new(x, y, z, w) {
      if (x === void 0) x = null;
      if (y === void 0) y = null;
      if (z === void 0) z = null;
      if (w === void 0) w = null;
      if (w != null) {
        return html$.DomPoint._create_1(x, y, z, w);
      }
      if (z != null) {
        return html$.DomPoint._create_2(x, y, z);
      }
      if (y != null) {
        return html$.DomPoint._create_3(x, y);
      }
      if (x != null) {
        return html$.DomPoint._create_4(x);
      }
      return html$.DomPoint._create_5();
    }
    static _create_1(x, y, z, w) {
      return new DOMPoint(x, y, z, w);
    }
    static _create_2(x, y, z) {
      return new DOMPoint(x, y, z);
    }
    static _create_3(x, y) {
      return new DOMPoint(x, y);
    }
    static _create_4(x) {
      return new DOMPoint(x);
    }
    static _create_5() {
      return new DOMPoint();
    }
    static get supported() {
      return !!window.DOMPoint || !!window.WebKitPoint;
    }
    get [$w]() {
      return this.w;
    }
    set [$w](value) {
      this.w = value;
    }
    get [$x]() {
      return this.x;
    }
    set [$x](value) {
      this.x = value;
    }
    get [$y]() {
      return this.y;
    }
    set [$y](value) {
      this.y = value;
    }
    get [$z]() {
      return this.z;
    }
    set [$z](value) {
      this.z = value;
    }
    static fromPoint(other) {
      if (other === void 0) other = null;
      if (other != null) {
        let other_1 = html_common.convertDartToNative_Dictionary(other);
        return dart.global.DOMPoint.fromPoint(other_1);
      }
      return dart.global.DOMPoint.fromPoint();
    }
  };
  dart.addTypeTests(html$.DomPoint);
  dart.setSetterSignature(html$.DomPoint, () => ({
    __proto__: dart.getSetters(html$.DomPoint.__proto__),
    [$w]: core.num,
    [$x]: core.num,
    [$y]: core.num,
    [$z]: core.num
  }));
  dart.registerExtension("DOMPoint", html$.DomPoint);
  html$.DomQuad = class DomQuad extends _interceptors.Interceptor {
    static new(p1, p2, p3, p4) {
      if (p1 === void 0) p1 = null;
      if (p2 === void 0) p2 = null;
      if (p3 === void 0) p3 = null;
      if (p4 === void 0) p4 = null;
      if (p4 != null) {
        let p1_1 = html_common.convertDartToNative_Dictionary(p1);
        let p2_2 = html_common.convertDartToNative_Dictionary(p2);
        let p3_3 = html_common.convertDartToNative_Dictionary(p3);
        let p4_4 = html_common.convertDartToNative_Dictionary(p4);
        return html$.DomQuad._create_1(p1_1, p2_2, p3_3, p4_4);
      }
      if (p3 != null) {
        let p1_1 = html_common.convertDartToNative_Dictionary(p1);
        let p2_2 = html_common.convertDartToNative_Dictionary(p2);
        let p3_3 = html_common.convertDartToNative_Dictionary(p3);
        return html$.DomQuad._create_2(p1_1, p2_2, p3_3);
      }
      if (p2 != null) {
        let p1_1 = html_common.convertDartToNative_Dictionary(p1);
        let p2_2 = html_common.convertDartToNative_Dictionary(p2);
        return html$.DomQuad._create_3(p1_1, p2_2);
      }
      if (p1 != null) {
        let p1_1 = html_common.convertDartToNative_Dictionary(p1);
        return html$.DomQuad._create_4(p1_1);
      }
      return html$.DomQuad._create_5();
    }
    static _create_1(p1, p2, p3, p4) {
      return new DOMQuad(p1, p2, p3, p4);
    }
    static _create_2(p1, p2, p3) {
      return new DOMQuad(p1, p2, p3);
    }
    static _create_3(p1, p2) {
      return new DOMQuad(p1, p2);
    }
    static _create_4(p1) {
      return new DOMQuad(p1);
    }
    static _create_5() {
      return new DOMQuad();
    }
    get [$p1]() {
      return this.p1;
    }
    get [$p2]() {
      return this.p2;
    }
    get [$p3]() {
      return this.p3;
    }
    get [$p4]() {
      return this.p4;
    }
    static fromQuad(other) {
      if (other === void 0) other = null;
      if (other != null) {
        let other_1 = html_common.convertDartToNative_Dictionary(other);
        return dart.global.DOMQuad.fromQuad(other_1);
      }
      return dart.global.DOMQuad.fromQuad();
    }
    static fromRect(other) {
      if (other === void 0) other = null;
      if (other != null) {
        let other_1 = html_common.convertDartToNative_Dictionary(other);
        return dart.global.DOMQuad.fromRect(other_1);
      }
      return dart.global.DOMQuad.fromRect();
    }
    [$getBounds](...args) {
      return this.getBounds.apply(this, args);
    }
  };
  dart.addTypeTests(html$.DomQuad);
  const p1 = Symbol("DomQuad.p1");
  const p2 = Symbol("DomQuad.p2");
  const p3 = Symbol("DomQuad.p3");
  const p4 = Symbol("DomQuad.p4");
  dart.setMethodSignature(html$.DomQuad, () => ({
    __proto__: dart.getMethods(html$.DomQuad.__proto__),
    [$getBounds]: dart.fnType(math.Rectangle$(core.num), [])
  }));
  dart.setFieldSignature(html$.DomQuad, () => ({
    __proto__: dart.getFields(html$.DomQuad.__proto__),
    [$p1]: dart.finalFieldType(html$.DomPoint),
    [$p2]: dart.finalFieldType(html$.DomPoint),
    [$p3]: dart.finalFieldType(html$.DomPoint),
    [$p4]: dart.finalFieldType(html$.DomPoint)
  }));
  dart.registerExtension("DOMQuad", html$.DomQuad);
  const _is_ImmutableListMixin_default = Symbol('_is_ImmutableListMixin_default');
  html$.ImmutableListMixin$ = dart.generic(E => {
    let FixedSizeListIteratorOfE = () => (FixedSizeListIteratorOfE = dart.constFn(html$.FixedSizeListIterator$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
    class ImmutableListMixin extends core.Object {
      get iterator() {
        return new (FixedSizeListIteratorOfE()).new(this);
      }
      [Symbol.iterator]() {
        return new dart.JsIterator(this[$iterator]);
      }
      add(value) {
        E._check(value);
        dart.throw(new core.UnsupportedError.new("Cannot add to immutable List."));
      }
      addAll(iterable) {
        IterableOfE()._check(iterable);
        dart.throw(new core.UnsupportedError.new("Cannot add to immutable List."));
      }
      sort(compare) {
        if (compare === void 0) compare = null;
        dart.throw(new core.UnsupportedError.new("Cannot sort immutable List."));
      }
      shuffle(random) {
        if (random === void 0) random = null;
        dart.throw(new core.UnsupportedError.new("Cannot shuffle immutable List."));
      }
      insert(index, element) {
        E._check(element);
        dart.throw(new core.UnsupportedError.new("Cannot add to immutable List."));
      }
      insertAll(index, iterable) {
        IterableOfE()._check(iterable);
        dart.throw(new core.UnsupportedError.new("Cannot add to immutable List."));
      }
      setAll(index, iterable) {
        IterableOfE()._check(iterable);
        dart.throw(new core.UnsupportedError.new("Cannot modify an immutable List."));
      }
      removeAt(pos) {
        dart.throw(new core.UnsupportedError.new("Cannot remove from immutable List."));
      }
      removeLast() {
        dart.throw(new core.UnsupportedError.new("Cannot remove from immutable List."));
      }
      remove(object) {
        dart.throw(new core.UnsupportedError.new("Cannot remove from immutable List."));
      }
      removeWhere(test) {
        dart.throw(new core.UnsupportedError.new("Cannot remove from immutable List."));
      }
      retainWhere(test) {
        dart.throw(new core.UnsupportedError.new("Cannot remove from immutable List."));
      }
      setRange(start, end, iterable, skipCount) {
        IterableOfE()._check(iterable);
        if (skipCount === void 0) skipCount = 0;
        dart.throw(new core.UnsupportedError.new("Cannot setRange on immutable List."));
      }
      removeRange(start, end) {
        dart.throw(new core.UnsupportedError.new("Cannot removeRange on immutable List."));
      }
      replaceRange(start, end, iterable) {
        IterableOfE()._check(iterable);
        dart.throw(new core.UnsupportedError.new("Cannot modify an immutable List."));
      }
      fillRange(start, end, fillValue) {
        if (fillValue === void 0) fillValue = null;
        E._check(fillValue);
        dart.throw(new core.UnsupportedError.new("Cannot modify an immutable List."));
      }
    }
    (ImmutableListMixin.new = function() {
    }).prototype = ImmutableListMixin.prototype;
    ImmutableListMixin.prototype[dart.isList] = true;
    dart.addTypeTests(ImmutableListMixin);
    ImmutableListMixin.prototype[_is_ImmutableListMixin_default] = true;
    ImmutableListMixin[dart.implements] = () => [ListOfE()];
    dart.setMethodSignature(ImmutableListMixin, () => ({
      __proto__: dart.getMethods(ImmutableListMixin.__proto__),
      add: dart.fnType(dart.void, [core.Object]),
      [$add]: dart.fnType(dart.void, [core.Object]),
      addAll: dart.fnType(dart.void, [core.Object]),
      [$addAll]: dart.fnType(dart.void, [core.Object]),
      sort: dart.fnType(dart.void, [], [dart.fnType(core.int, [E, E])]),
      [$sort]: dart.fnType(dart.void, [], [dart.fnType(core.int, [E, E])]),
      shuffle: dart.fnType(dart.void, [], [math.Random]),
      [$shuffle]: dart.fnType(dart.void, [], [math.Random]),
      insert: dart.fnType(dart.void, [core.int, core.Object]),
      [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
      insertAll: dart.fnType(dart.void, [core.int, core.Object]),
      [$insertAll]: dart.fnType(dart.void, [core.int, core.Object]),
      setAll: dart.fnType(dart.void, [core.int, core.Object]),
      [$setAll]: dart.fnType(dart.void, [core.int, core.Object]),
      removeAt: dart.fnType(E, [core.int]),
      [$removeAt]: dart.fnType(E, [core.int]),
      removeLast: dart.fnType(E, []),
      [$removeLast]: dart.fnType(E, []),
      remove: dart.fnType(core.bool, [core.Object]),
      [$remove]: dart.fnType(core.bool, [core.Object]),
      removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      [$retainWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
      setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
      [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
      removeRange: dart.fnType(dart.void, [core.int, core.int]),
      [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
      replaceRange: dart.fnType(dart.void, [core.int, core.int, core.Object]),
      [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object]),
      fillRange: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
      [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object])
    }));
    dart.setGetterSignature(ImmutableListMixin, () => ({
      __proto__: dart.getGetters(ImmutableListMixin.__proto__),
      iterator: core.Iterator$(E),
      [$iterator]: core.Iterator$(E)
    }));
    dart.defineExtensionMethods(ImmutableListMixin, [
      'add',
      'addAll',
      'sort',
      'shuffle',
      'insert',
      'insertAll',
      'setAll',
      'removeAt',
      'removeLast',
      'remove',
      'removeWhere',
      'retainWhere',
      'setRange',
      'removeRange',
      'replaceRange',
      'fillRange'
    ]);
    dart.defineExtensionAccessors(ImmutableListMixin, ['iterator']);
    return ImmutableListMixin;
  });
  html$.ImmutableListMixin = html$.ImmutableListMixin$();
  dart.addTypeTests(html$.ImmutableListMixin, _is_ImmutableListMixin_default);
  const Interceptor_ListMixin$ = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$.new = function() {
    Interceptor_ListMixin$.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$.prototype;
  dart.applyMixin(Interceptor_ListMixin$, collection.ListMixin$(math.Rectangle$(core.num)));
  const Interceptor_ImmutableListMixin$ = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$ {};
  (Interceptor_ImmutableListMixin$.new = function() {
    Interceptor_ImmutableListMixin$.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$, html$.ImmutableListMixin$(math.Rectangle$(core.num)));
  html$.DomRectList = class DomRectList extends Interceptor_ImmutableListMixin$ {
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[index];
    }
    [$_set](index, value) {
      RectangleOfnum()._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
  };
  html$.DomRectList.prototype[dart.isList] = true;
  dart.addTypeTests(html$.DomRectList);
  html$.DomRectList[dart.implements] = () => [ListOfRectangleOfnum(), JavaScriptIndexingBehaviorOfRectangleOfnum()];
  dart.setMethodSignature(html$.DomRectList, () => ({
    __proto__: dart.getMethods(html$.DomRectList.__proto__),
    [$_get]: dart.fnType(math.Rectangle$(core.num), [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(math.Rectangle$(core.num), [core.int]),
    [$item]: dart.fnType(math.Rectangle$(core.num), [core.int])
  }));
  dart.setGetterSignature(html$.DomRectList, () => ({
    __proto__: dart.getGetters(html$.DomRectList.__proto__),
    [$length]: core.int,
    [$first]: math.Rectangle$(core.num),
    [$last]: math.Rectangle$(core.num),
    [$single]: math.Rectangle$(core.num)
  }));
  dart.setSetterSignature(html$.DomRectList, () => ({
    __proto__: dart.getSetters(html$.DomRectList.__proto__),
    [$length]: core.int
  }));
  dart.registerExtension("ClientRectList", html$.DomRectList);
  dart.registerExtension("DOMRectList", html$.DomRectList);
  html$.DomRectReadOnly = class DomRectReadOnly extends _interceptors.Interceptor {
    [$toString]() {
      return "Rectangle (" + dart.str(this[$left]) + ", " + dart.str(this[$top]) + ") " + dart.str(this[$width]) + " x " + dart.str(this[$height]);
    }
    [$_equals](other) {
      if (!RectangleOfnum().is(other)) return false;
      return core.identical(this[$left], dart.dload(other, 'left')) && core.identical(this[$top], dart.dload(other, 'top')) && core.identical(this[$width], dart.dload(other, 'width')) && core.identical(this[$height], dart.dload(other, 'height'));
    }
    get [$hashCode]() {
      return html$._JenkinsSmiHash.hash4(dart.hashCode(this[$left]), dart.hashCode(this[$top]), dart.hashCode(this[$width]), dart.hashCode(this[$height]));
    }
    [$intersection](other) {
      let x0 = math.max(core.num, this[$left], other[$left]);
      let x1 = math.min(core.num, dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(other[$left]) + dart.notNull(other[$width]));
      if (x0 <= x1) {
        let y0 = math.max(core.num, this[$top], other[$top]);
        let y1 = math.min(core.num, dart.notNull(this[$top]) + dart.notNull(this[$height]), dart.notNull(other[$top]) + dart.notNull(other[$height]));
        if (y0 <= y1) {
          return new (RectangleOfnum()).new(x0, y0, x1 - x0, y1 - y0);
        }
      }
      return null;
    }
    [$intersects](other) {
      return dart.notNull(this[$left]) <= dart.notNull(other[$left]) + dart.notNull(other[$width]) && dart.notNull(other[$left]) <= dart.notNull(this[$left]) + dart.notNull(this[$width]) && dart.notNull(this[$top]) <= dart.notNull(other[$top]) + dart.notNull(other[$height]) && dart.notNull(other[$top]) <= dart.notNull(this[$top]) + dart.notNull(this[$height]);
    }
    [$boundingBox](other) {
      let right = math.max(core.num, dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(other[$left]) + dart.notNull(other[$width]));
      let bottom = math.max(core.num, dart.notNull(this[$top]) + dart.notNull(this[$height]), dart.notNull(other[$top]) + dart.notNull(other[$height]));
      let left = math.min(core.num, this[$left], other[$left]);
      let top = math.min(core.num, this[$top], other[$top]);
      return new (RectangleOfnum()).new(left, top, right - left, bottom - top);
    }
    [$containsRectangle](another) {
      return dart.notNull(this[$left]) <= dart.notNull(another[$left]) && dart.notNull(this[$left]) + dart.notNull(this[$width]) >= dart.notNull(another[$left]) + dart.notNull(another[$width]) && dart.notNull(this[$top]) <= dart.notNull(another[$top]) && dart.notNull(this[$top]) + dart.notNull(this[$height]) >= dart.notNull(another[$top]) + dart.notNull(another[$height]);
    }
    [$containsPoint](another) {
      return dart.notNull(another.x) >= dart.notNull(this[$left]) && dart.notNull(another.x) <= dart.notNull(this[$left]) + dart.notNull(this[$width]) && dart.notNull(another.y) >= dart.notNull(this[$top]) && dart.notNull(another.y) <= dart.notNull(this[$top]) + dart.notNull(this[$height]);
    }
    get [$topLeft]() {
      return new (PointOfnum()).new(this[$left], this[$top]);
    }
    get [$topRight]() {
      return new (PointOfnum()).new(dart.notNull(this[$left]) + dart.notNull(this[$width]), this[$top]);
    }
    get [$bottomRight]() {
      return new (PointOfnum()).new(dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(this[$top]) + dart.notNull(this[$height]));
    }
    get [$bottomLeft]() {
      return new (PointOfnum()).new(this[$left], dart.notNull(this[$top]) + dart.notNull(this[$height]));
    }
    static new(x, y, width, height) {
      if (x === void 0) x = null;
      if (y === void 0) y = null;
      if (width === void 0) width = null;
      if (height === void 0) height = null;
      if (height != null) {
        return html$.DomRectReadOnly._create_1(x, y, width, height);
      }
      if (width != null) {
        return html$.DomRectReadOnly._create_2(x, y, width);
      }
      if (y != null) {
        return html$.DomRectReadOnly._create_3(x, y);
      }
      if (x != null) {
        return html$.DomRectReadOnly._create_4(x);
      }
      return html$.DomRectReadOnly._create_5();
    }
    static _create_1(x, y, width, height) {
      return new DOMRectReadOnly(x, y, width, height);
    }
    static _create_2(x, y, width) {
      return new DOMRectReadOnly(x, y, width);
    }
    static _create_3(x, y) {
      return new DOMRectReadOnly(x, y);
    }
    static _create_4(x) {
      return new DOMRectReadOnly(x);
    }
    static _create_5() {
      return new DOMRectReadOnly();
    }
    get [$bottom]() {
      return this.bottom;
    }
    get [$height]() {
      return this.height;
    }
    get [$left]() {
      return this.left;
    }
    get [$right]() {
      return this.right;
    }
    get [$top]() {
      return this.top;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
    static fromRect(other) {
      if (other === void 0) other = null;
      if (other != null) {
        let other_1 = html_common.convertDartToNative_Dictionary(other);
        return dart.global.DOMRectReadOnly.fromRect(other_1);
      }
      return dart.global.DOMRectReadOnly.fromRect();
    }
  };
  dart.addTypeTests(html$.DomRectReadOnly);
  html$.DomRectReadOnly[dart.implements] = () => [RectangleOfnum()];
  dart.setMethodSignature(html$.DomRectReadOnly, () => ({
    __proto__: dart.getMethods(html$.DomRectReadOnly.__proto__),
    [$intersection]: dart.fnType(math.Rectangle$(core.num), [math.Rectangle$(core.num)]),
    [$intersects]: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
    [$boundingBox]: dart.fnType(math.Rectangle$(core.num), [math.Rectangle$(core.num)]),
    [$containsRectangle]: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
    [$containsPoint]: dart.fnType(core.bool, [math.Point$(core.num)])
  }));
  dart.setGetterSignature(html$.DomRectReadOnly, () => ({
    __proto__: dart.getGetters(html$.DomRectReadOnly.__proto__),
    [$topLeft]: math.Point$(core.num),
    [$topRight]: math.Point$(core.num),
    [$bottomRight]: math.Point$(core.num),
    [$bottomLeft]: math.Point$(core.num),
    [$bottom]: core.num,
    [$height]: core.num,
    [$left]: core.num,
    [$right]: core.num,
    [$top]: core.num,
    [$width]: core.num,
    [$x]: core.num,
    [$y]: core.num
  }));
  dart.registerExtension("DOMRectReadOnly", html$.DomRectReadOnly);
  const Interceptor_ListMixin$$ = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$.new = function() {
    Interceptor_ListMixin$$.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$.prototype;
  dart.applyMixin(Interceptor_ListMixin$$, collection.ListMixin$(core.String));
  const Interceptor_ImmutableListMixin$$ = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$ {};
  (Interceptor_ImmutableListMixin$$.new = function() {
    Interceptor_ImmutableListMixin$$.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$, html$.ImmutableListMixin$(core.String));
  html$.DomStringList = class DomStringList extends Interceptor_ImmutableListMixin$$ {
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[index];
    }
    [$_set](index, value) {
      core.String._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
  };
  html$.DomStringList.prototype[dart.isList] = true;
  dart.addTypeTests(html$.DomStringList);
  html$.DomStringList[dart.implements] = () => [JavaScriptIndexingBehaviorOfString(), ListOfString()];
  dart.setMethodSignature(html$.DomStringList, () => ({
    __proto__: dart.getMethods(html$.DomStringList.__proto__),
    [$_get]: dart.fnType(core.String, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(core.String, [core.int]),
    [$item]: dart.fnType(core.String, [core.int])
  }));
  dart.setGetterSignature(html$.DomStringList, () => ({
    __proto__: dart.getGetters(html$.DomStringList.__proto__),
    [$length]: core.int,
    [$first]: core.String,
    [$last]: core.String,
    [$single]: core.String
  }));
  dart.setSetterSignature(html$.DomStringList, () => ({
    __proto__: dart.getSetters(html$.DomStringList.__proto__),
    [$length]: core.int
  }));
  dart.registerExtension("DOMStringList", html$.DomStringList);
  const __delete__ = Symbol('__delete__');
  html$.DomStringMap = class DomStringMap extends _interceptors.Interceptor {
    [__delete__](...args) {
      return this.__delete__.apply(this, args);
    }
    [__setter__](...args) {
      return this.__setter__.apply(this, args);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
  };
  dart.addTypeTests(html$.DomStringMap);
  dart.setMethodSignature(html$.DomStringMap, () => ({
    __proto__: dart.getMethods(html$.DomStringMap.__proto__),
    [__delete__]: dart.fnType(dart.void, [core.String]),
    [__setter__]: dart.fnType(dart.void, [core.String, core.String]),
    [$item]: dart.fnType(core.String, [core.String])
  }));
  dart.registerExtension("DOMStringMap", html$.DomStringMap);
  html$.DomTokenList = class DomTokenList extends _interceptors.Interceptor {
    get [$length]() {
      return this.length;
    }
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
    [$add](...args) {
      return this.add.apply(this, args);
    }
    [$contains](...args) {
      return this.contains.apply(this, args);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
    [$remove](...args) {
      return this.remove.apply(this, args);
    }
    [$replace](...args) {
      return this.replace.apply(this, args);
    }
    [$supports](...args) {
      return this.supports.apply(this, args);
    }
    [$toggle](...args) {
      return this.toggle.apply(this, args);
    }
  };
  dart.addTypeTests(html$.DomTokenList);
  const length$6 = Symbol("DomTokenList.length");
  const value$4 = Symbol("DomTokenList.value");
  dart.setMethodSignature(html$.DomTokenList, () => ({
    __proto__: dart.getMethods(html$.DomTokenList.__proto__),
    [$add]: dart.fnType(dart.void, [core.String]),
    [$contains]: dart.fnType(core.bool, [core.String]),
    [$item]: dart.fnType(core.String, [core.int]),
    [$remove]: dart.fnType(dart.void, [core.String]),
    [$replace]: dart.fnType(dart.void, [core.String, core.String]),
    [$supports]: dart.fnType(core.bool, [core.String]),
    [$toggle]: dart.fnType(core.bool, [core.String], [core.bool])
  }));
  dart.setFieldSignature(html$.DomTokenList, () => ({
    __proto__: dart.getFields(html$.DomTokenList.__proto__),
    [$length]: dart.finalFieldType(core.int),
    [$value]: dart.fieldType(core.String)
  }));
  dart.registerExtension("DOMTokenList", html$.DomTokenList);
  const _childElements = Symbol('_childElements');
  const _element$ = Symbol('_element');
  const _filter$0 = Symbol('_filter');
  html$._ChildrenElementList = class _ChildrenElementList extends collection.ListBase$(html$.Element) {
    contains(element) {
      return this[_childElements][$contains](element);
    }
    get isEmpty() {
      return this[_element$][_firstElementChild] == null;
    }
    get length() {
      return this[_childElements][$length];
    }
    _get(index) {
      return html$.Element._check(this[_childElements][$_get](index));
    }
    _set(index, value) {
      html$.Element._check(value);
      this[_element$][_replaceChild](value, this[_childElements][$_get](index));
      return value;
    }
    set length(newLength) {
      dart.throw(new core.UnsupportedError.new("Cannot resize element lists"));
    }
    add(value) {
      html$.Element._check(value);
      this[_element$][$append](value);
      return value;
    }
    get iterator() {
      return this[$toList]()[$iterator];
    }
    addAll(iterable) {
      IterableOfElement()._check(iterable);
      if (html$._ChildNodeListLazy.is(iterable)) {
        iterable = ListOfElement().from(iterable);
      }
      for (let element of iterable) {
        this[_element$][$append](element);
      }
    }
    sort(compare) {
      if (compare === void 0) compare = null;
      dart.throw(new core.UnsupportedError.new("Cannot sort element lists"));
    }
    shuffle(random) {
      if (random === void 0) random = null;
      dart.throw(new core.UnsupportedError.new("Cannot shuffle element lists"));
    }
    removeWhere(test) {
      this[_filter$0](test, false);
    }
    retainWhere(test) {
      this[_filter$0](test, true);
    }
    [_filter$0](test, retainMatching) {
      let removed = null;
      if (dart.test(retainMatching)) {
        removed = this[_element$][$children][$where](dart.fn(e => !dart.test(test(e)), ElementTobool()));
      } else {
        removed = this[_element$][$children][$where](test);
      }
      for (let e of core.Iterable._check(removed))
        dart.dsend(e, 'remove', []);
    }
    fillRange(start, end, fillValue) {
      if (fillValue === void 0) fillValue = null;
      html$.Element._check(fillValue);
      dart.throw(new core.UnimplementedError.new());
    }
    replaceRange(start, end, iterable) {
      IterableOfElement()._check(iterable);
      dart.throw(new core.UnimplementedError.new());
    }
    removeRange(start, end) {
      dart.throw(new core.UnimplementedError.new());
    }
    setRange(start, end, iterable, skipCount) {
      IterableOfElement()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      dart.throw(new core.UnimplementedError.new());
    }
    remove(object) {
      if (html$.Element.is(object)) {
        let element = object;
        if (element.parentNode == this[_element$]) {
          this[_element$][_removeChild](element);
          return true;
        }
      }
      return false;
    }
    insert(index, element) {
      html$.Element._check(element);
      if (dart.notNull(index) < 0 || dart.notNull(index) > dart.notNull(this.length)) {
        dart.throw(new core.RangeError.range(index, 0, this.length));
      }
      if (index == this.length) {
        this[_element$][$append](element);
      } else {
        this[_element$].insertBefore(element, this._get(index));
      }
    }
    setAll(index, iterable) {
      IterableOfElement()._check(iterable);
      dart.throw(new core.UnimplementedError.new());
    }
    clear() {
      this[_element$][_clearChildren]();
    }
    removeAt(index) {
      let result = this._get(index);
      if (result != null) {
        this[_element$][_removeChild](result);
      }
      return result;
    }
    removeLast() {
      let result = this.last;
      if (result != null) {
        this[_element$][_removeChild](result);
      }
      return result;
    }
    get first() {
      let result = this[_element$][_firstElementChild];
      if (result == null) dart.throw(new core.StateError.new("No elements"));
      return result;
    }
    set first(value) {
      super.first = value;
    }
    get last() {
      let result = this[_element$][_lastElementChild];
      if (result == null) dart.throw(new core.StateError.new("No elements"));
      return result;
    }
    set last(value) {
      super.last = value;
    }
    get single() {
      if (dart.notNull(this.length) > 1) dart.throw(new core.StateError.new("More than one element"));
      return this.first;
    }
    get rawList() {
      return this[_childElements];
    }
  };
  (html$._ChildrenElementList._wrap = function(element) {
    this[_childElements] = html$.HtmlCollection._check(element[_children]);
    this[_element$] = element;
  }).prototype = html$._ChildrenElementList.prototype;
  dart.addTypeTests(html$._ChildrenElementList);
  html$._ChildrenElementList[dart.implements] = () => [html_common.NodeListWrapper];
  dart.setMethodSignature(html$._ChildrenElementList, () => ({
    __proto__: dart.getMethods(html$._ChildrenElementList.__proto__),
    contains: dart.fnType(core.bool, [core.Object]),
    [$contains]: dart.fnType(core.bool, [core.Object]),
    _get: dart.fnType(html$.Element, [core.int]),
    [$_get]: dart.fnType(html$.Element, [core.int]),
    _set: dart.fnType(dart.void, [core.int, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    add: dart.fnType(html$.Element, [core.Object]),
    [$add]: dart.fnType(html$.Element, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    sort: dart.fnType(dart.void, [], [dart.fnType(core.int, [html$.Element, html$.Element])]),
    [$sort]: dart.fnType(dart.void, [], [dart.fnType(core.int, [html$.Element, html$.Element])]),
    shuffle: dart.fnType(dart.void, [], [math.Random]),
    [$shuffle]: dart.fnType(dart.void, [], [math.Random]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Element])]),
    [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Element])]),
    retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Element])]),
    [$retainWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Element])]),
    [_filter$0]: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Element]), core.bool]),
    fillRange: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
    [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
    replaceRange: dart.fnType(dart.void, [core.int, core.int, core.Object]),
    [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object]),
    removeRange: dart.fnType(dart.void, [core.int, core.int]),
    [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
    setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    remove: dart.fnType(core.bool, [core.Object]),
    [$remove]: dart.fnType(core.bool, [core.Object]),
    insert: dart.fnType(dart.void, [core.int, core.Object]),
    [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
    setAll: dart.fnType(dart.void, [core.int, core.Object]),
    [$setAll]: dart.fnType(dart.void, [core.int, core.Object]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, []),
    removeAt: dart.fnType(html$.Element, [core.int]),
    [$removeAt]: dart.fnType(html$.Element, [core.int]),
    removeLast: dart.fnType(html$.Element, []),
    [$removeLast]: dart.fnType(html$.Element, [])
  }));
  dart.setGetterSignature(html$._ChildrenElementList, () => ({
    __proto__: dart.getGetters(html$._ChildrenElementList.__proto__),
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    length: core.int,
    [$length]: core.int,
    iterator: core.Iterator$(html$.Element),
    [$iterator]: core.Iterator$(html$.Element),
    first: html$.Element,
    [$first]: html$.Element,
    last: html$.Element,
    [$last]: html$.Element,
    single: html$.Element,
    [$single]: html$.Element,
    rawList: core.List$(html$.Node)
  }));
  dart.setSetterSignature(html$._ChildrenElementList, () => ({
    __proto__: dart.getSetters(html$._ChildrenElementList.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.setFieldSignature(html$._ChildrenElementList, () => ({
    __proto__: dart.getFields(html$._ChildrenElementList.__proto__),
    [_element$]: dart.finalFieldType(html$.Element),
    [_childElements]: dart.finalFieldType(html$.HtmlCollection)
  }));
  dart.defineExtensionMethods(html$._ChildrenElementList, [
    'contains',
    '_get',
    '_set',
    'add',
    'addAll',
    'sort',
    'shuffle',
    'removeWhere',
    'retainWhere',
    'fillRange',
    'replaceRange',
    'removeRange',
    'setRange',
    'remove',
    'insert',
    'setAll',
    'clear',
    'removeAt',
    'removeLast'
  ]);
  dart.defineExtensionAccessors(html$._ChildrenElementList, [
    'isEmpty',
    'length',
    'iterator',
    'first',
    'last',
    'single'
  ]);
  const _is_ElementList_default = Symbol('_is_ElementList_default');
  html$.ElementList$ = dart.generic(T => {
    class ElementList extends collection.ListBase$(T) {}
    (ElementList.new = function() {
    }).prototype = ElementList.prototype;
    dart.addTypeTests(ElementList);
    ElementList.prototype[_is_ElementList_default] = true;
    return ElementList;
  });
  html$.ElementList = html$.ElementList$();
  dart.addTypeTests(html$.ElementList, _is_ElementList_default);
  const _nodeList = Symbol('_nodeList');
  const _forElementList = Symbol('_forElementList');
  const _is__FrozenElementList_default = Symbol('_is__FrozenElementList_default');
  html$._FrozenElementList$ = dart.generic(E => {
    let EToIterableOfString = () => (EToIterableOfString = dart.constFn(dart.fnType(IterableOfString(), [E])))();
    let ElementListOfE = () => (ElementListOfE = dart.constFn(html$.ElementList$(E)))();
    class _FrozenElementList extends collection.ListBase$(E) {
      get length() {
        return this[_nodeList][$length];
      }
      _get(index) {
        return E._check(this[_nodeList][$_get](index));
      }
      _set(index, value) {
        E._check(value);
        dart.throw(new core.UnsupportedError.new("Cannot modify list"));
        return value;
      }
      set length(newLength) {
        dart.throw(new core.UnsupportedError.new("Cannot modify list"));
      }
      sort(compare) {
        if (compare === void 0) compare = null;
        dart.throw(new core.UnsupportedError.new("Cannot sort list"));
      }
      shuffle(random) {
        if (random === void 0) random = null;
        dart.throw(new core.UnsupportedError.new("Cannot shuffle list"));
      }
      get first() {
        return E._check(this[_nodeList][$first]);
      }
      set first(value) {
        super.first = value;
      }
      get last() {
        return E._check(this[_nodeList][$last]);
      }
      set last(value) {
        super.last = value;
      }
      get single() {
        return E._check(this[_nodeList][$single]);
      }
      get classes() {
        return html$._MultiElementCssClassSet.new(this);
      }
      get style() {
        return new html$._CssStyleDeclarationSet.new(this);
      }
      set classes(value) {
        this[$forEach](dart.fn(e => e[$classes] = value, EToIterableOfString()));
      }
      get contentEdge() {
        return new html$._ContentCssListRect.new(this);
      }
      get paddingEdge() {
        return this.first[$paddingEdge];
      }
      get borderEdge() {
        return this.first[$borderEdge];
      }
      get marginEdge() {
        return this.first[$marginEdge];
      }
      get rawList() {
        return this[_nodeList];
      }
      get onAbort() {
        return html$.Element.abortEvent[_forElementList](this);
      }
      get onBeforeCopy() {
        return html$.Element.beforeCopyEvent[_forElementList](this);
      }
      get onBeforeCut() {
        return html$.Element.beforeCutEvent[_forElementList](this);
      }
      get onBeforePaste() {
        return html$.Element.beforePasteEvent[_forElementList](this);
      }
      get onBlur() {
        return html$.Element.blurEvent[_forElementList](this);
      }
      get onCanPlay() {
        return html$.Element.canPlayEvent[_forElementList](this);
      }
      get onCanPlayThrough() {
        return html$.Element.canPlayThroughEvent[_forElementList](this);
      }
      get onChange() {
        return html$.Element.changeEvent[_forElementList](this);
      }
      get onClick() {
        return html$.Element.clickEvent[_forElementList](this);
      }
      get onContextMenu() {
        return html$.Element.contextMenuEvent[_forElementList](this);
      }
      get onCopy() {
        return html$.Element.copyEvent[_forElementList](this);
      }
      get onCut() {
        return html$.Element.cutEvent[_forElementList](this);
      }
      get onDoubleClick() {
        return html$.Element.doubleClickEvent[_forElementList](this);
      }
      get onDrag() {
        return html$.Element.dragEvent[_forElementList](this);
      }
      get onDragEnd() {
        return html$.Element.dragEndEvent[_forElementList](this);
      }
      get onDragEnter() {
        return html$.Element.dragEnterEvent[_forElementList](this);
      }
      get onDragLeave() {
        return html$.Element.dragLeaveEvent[_forElementList](this);
      }
      get onDragOver() {
        return html$.Element.dragOverEvent[_forElementList](this);
      }
      get onDragStart() {
        return html$.Element.dragStartEvent[_forElementList](this);
      }
      get onDrop() {
        return html$.Element.dropEvent[_forElementList](this);
      }
      get onDurationChange() {
        return html$.Element.durationChangeEvent[_forElementList](this);
      }
      get onEmptied() {
        return html$.Element.emptiedEvent[_forElementList](this);
      }
      get onEnded() {
        return html$.Element.endedEvent[_forElementList](this);
      }
      get onError() {
        return html$.Element.errorEvent[_forElementList](this);
      }
      get onFocus() {
        return html$.Element.focusEvent[_forElementList](this);
      }
      get onInput() {
        return html$.Element.inputEvent[_forElementList](this);
      }
      get onInvalid() {
        return html$.Element.invalidEvent[_forElementList](this);
      }
      get onKeyDown() {
        return html$.Element.keyDownEvent[_forElementList](this);
      }
      get onKeyPress() {
        return html$.Element.keyPressEvent[_forElementList](this);
      }
      get onKeyUp() {
        return html$.Element.keyUpEvent[_forElementList](this);
      }
      get onLoad() {
        return html$.Element.loadEvent[_forElementList](this);
      }
      get onLoadedData() {
        return html$.Element.loadedDataEvent[_forElementList](this);
      }
      get onLoadedMetadata() {
        return html$.Element.loadedMetadataEvent[_forElementList](this);
      }
      get onMouseDown() {
        return html$.Element.mouseDownEvent[_forElementList](this);
      }
      get onMouseEnter() {
        return html$.Element.mouseEnterEvent[_forElementList](this);
      }
      get onMouseLeave() {
        return html$.Element.mouseLeaveEvent[_forElementList](this);
      }
      get onMouseMove() {
        return html$.Element.mouseMoveEvent[_forElementList](this);
      }
      get onMouseOut() {
        return html$.Element.mouseOutEvent[_forElementList](this);
      }
      get onMouseOver() {
        return html$.Element.mouseOverEvent[_forElementList](this);
      }
      get onMouseUp() {
        return html$.Element.mouseUpEvent[_forElementList](this);
      }
      get onMouseWheel() {
        return html$.Element.mouseWheelEvent[_forElementList](this);
      }
      get onPaste() {
        return html$.Element.pasteEvent[_forElementList](this);
      }
      get onPause() {
        return html$.Element.pauseEvent[_forElementList](this);
      }
      get onPlay() {
        return html$.Element.playEvent[_forElementList](this);
      }
      get onPlaying() {
        return html$.Element.playingEvent[_forElementList](this);
      }
      get onRateChange() {
        return html$.Element.rateChangeEvent[_forElementList](this);
      }
      get onReset() {
        return html$.Element.resetEvent[_forElementList](this);
      }
      get onResize() {
        return html$.Element.resizeEvent[_forElementList](this);
      }
      get onScroll() {
        return html$.Element.scrollEvent[_forElementList](this);
      }
      get onSearch() {
        return html$.Element.searchEvent[_forElementList](this);
      }
      get onSeeked() {
        return html$.Element.seekedEvent[_forElementList](this);
      }
      get onSeeking() {
        return html$.Element.seekingEvent[_forElementList](this);
      }
      get onSelect() {
        return html$.Element.selectEvent[_forElementList](this);
      }
      get onSelectStart() {
        return html$.Element.selectStartEvent[_forElementList](this);
      }
      get onStalled() {
        return html$.Element.stalledEvent[_forElementList](this);
      }
      get onSubmit() {
        return html$.Element.submitEvent[_forElementList](this);
      }
      get onSuspend() {
        return html$.Element.suspendEvent[_forElementList](this);
      }
      get onTimeUpdate() {
        return html$.Element.timeUpdateEvent[_forElementList](this);
      }
      get onTouchCancel() {
        return html$.Element.touchCancelEvent[_forElementList](this);
      }
      get onTouchEnd() {
        return html$.Element.touchEndEvent[_forElementList](this);
      }
      get onTouchEnter() {
        return html$.Element.touchEnterEvent[_forElementList](this);
      }
      get onTouchLeave() {
        return html$.Element.touchLeaveEvent[_forElementList](this);
      }
      get onTouchMove() {
        return html$.Element.touchMoveEvent[_forElementList](this);
      }
      get onTouchStart() {
        return html$.Element.touchStartEvent[_forElementList](this);
      }
      get onTransitionEnd() {
        return html$.Element.transitionEndEvent[_forElementList](this);
      }
      get onVolumeChange() {
        return html$.Element.volumeChangeEvent[_forElementList](this);
      }
      get onWaiting() {
        return html$.Element.waitingEvent[_forElementList](this);
      }
      get onFullscreenChange() {
        return html$.Element.fullscreenChangeEvent[_forElementList](this);
      }
      get onFullscreenError() {
        return html$.Element.fullscreenErrorEvent[_forElementList](this);
      }
      get onWheel() {
        return html$.Element.wheelEvent[_forElementList](this);
      }
    }
    (_FrozenElementList._wrap = function(nodeList) {
      this[_nodeList] = nodeList;
      if (!dart.test(this[_nodeList][$every](dart.fn(element => E.is(element), NodeTobool())))) dart.assertFailed("Query expects only HTML elements of type " + dart.str(dart.wrapType(E)) + " but found " + dart.str(this[_nodeList][$firstWhere](dart.fn(e => !E.is(e), NodeTobool()))));
    }).prototype = _FrozenElementList.prototype;
    dart.addTypeTests(_FrozenElementList);
    _FrozenElementList.prototype[_is__FrozenElementList_default] = true;
    _FrozenElementList[dart.implements] = () => [ElementListOfE(), html_common.NodeListWrapper];
    dart.setMethodSignature(_FrozenElementList, () => ({
      __proto__: dart.getMethods(_FrozenElementList.__proto__),
      _get: dart.fnType(E, [core.int]),
      [$_get]: dart.fnType(E, [core.int]),
      _set: dart.fnType(dart.void, [core.int, core.Object]),
      [$_set]: dart.fnType(dart.void, [core.int, core.Object])
    }));
    dart.setGetterSignature(_FrozenElementList, () => ({
      __proto__: dart.getGetters(_FrozenElementList.__proto__),
      length: core.int,
      [$length]: core.int,
      classes: html$.CssClassSet,
      style: html$.CssStyleDeclarationBase,
      contentEdge: html$.CssRect,
      paddingEdge: html$.CssRect,
      borderEdge: html$.CssRect,
      marginEdge: html$.CssRect,
      rawList: core.List$(html$.Node),
      onAbort: html$.ElementStream$(html$.Event),
      onBeforeCopy: html$.ElementStream$(html$.Event),
      onBeforeCut: html$.ElementStream$(html$.Event),
      onBeforePaste: html$.ElementStream$(html$.Event),
      onBlur: html$.ElementStream$(html$.Event),
      onCanPlay: html$.ElementStream$(html$.Event),
      onCanPlayThrough: html$.ElementStream$(html$.Event),
      onChange: html$.ElementStream$(html$.Event),
      onClick: html$.ElementStream$(html$.MouseEvent),
      onContextMenu: html$.ElementStream$(html$.MouseEvent),
      onCopy: html$.ElementStream$(html$.ClipboardEvent),
      onCut: html$.ElementStream$(html$.ClipboardEvent),
      onDoubleClick: html$.ElementStream$(html$.Event),
      onDrag: html$.ElementStream$(html$.MouseEvent),
      onDragEnd: html$.ElementStream$(html$.MouseEvent),
      onDragEnter: html$.ElementStream$(html$.MouseEvent),
      onDragLeave: html$.ElementStream$(html$.MouseEvent),
      onDragOver: html$.ElementStream$(html$.MouseEvent),
      onDragStart: html$.ElementStream$(html$.MouseEvent),
      onDrop: html$.ElementStream$(html$.MouseEvent),
      onDurationChange: html$.ElementStream$(html$.Event),
      onEmptied: html$.ElementStream$(html$.Event),
      onEnded: html$.ElementStream$(html$.Event),
      onError: html$.ElementStream$(html$.Event),
      onFocus: html$.ElementStream$(html$.Event),
      onInput: html$.ElementStream$(html$.Event),
      onInvalid: html$.ElementStream$(html$.Event),
      onKeyDown: html$.ElementStream$(html$.KeyboardEvent),
      onKeyPress: html$.ElementStream$(html$.KeyboardEvent),
      onKeyUp: html$.ElementStream$(html$.KeyboardEvent),
      onLoad: html$.ElementStream$(html$.Event),
      onLoadedData: html$.ElementStream$(html$.Event),
      onLoadedMetadata: html$.ElementStream$(html$.Event),
      onMouseDown: html$.ElementStream$(html$.MouseEvent),
      onMouseEnter: html$.ElementStream$(html$.MouseEvent),
      onMouseLeave: html$.ElementStream$(html$.MouseEvent),
      onMouseMove: html$.ElementStream$(html$.MouseEvent),
      onMouseOut: html$.ElementStream$(html$.MouseEvent),
      onMouseOver: html$.ElementStream$(html$.MouseEvent),
      onMouseUp: html$.ElementStream$(html$.MouseEvent),
      onMouseWheel: html$.ElementStream$(html$.WheelEvent),
      onPaste: html$.ElementStream$(html$.ClipboardEvent),
      onPause: html$.ElementStream$(html$.Event),
      onPlay: html$.ElementStream$(html$.Event),
      onPlaying: html$.ElementStream$(html$.Event),
      onRateChange: html$.ElementStream$(html$.Event),
      onReset: html$.ElementStream$(html$.Event),
      onResize: html$.ElementStream$(html$.Event),
      onScroll: html$.ElementStream$(html$.Event),
      onSearch: html$.ElementStream$(html$.Event),
      onSeeked: html$.ElementStream$(html$.Event),
      onSeeking: html$.ElementStream$(html$.Event),
      onSelect: html$.ElementStream$(html$.Event),
      onSelectStart: html$.ElementStream$(html$.Event),
      onStalled: html$.ElementStream$(html$.Event),
      onSubmit: html$.ElementStream$(html$.Event),
      onSuspend: html$.ElementStream$(html$.Event),
      onTimeUpdate: html$.ElementStream$(html$.Event),
      onTouchCancel: html$.ElementStream$(html$.TouchEvent),
      onTouchEnd: html$.ElementStream$(html$.TouchEvent),
      onTouchEnter: html$.ElementStream$(html$.TouchEvent),
      onTouchLeave: html$.ElementStream$(html$.TouchEvent),
      onTouchMove: html$.ElementStream$(html$.TouchEvent),
      onTouchStart: html$.ElementStream$(html$.TouchEvent),
      onTransitionEnd: html$.ElementStream$(html$.TransitionEvent),
      onVolumeChange: html$.ElementStream$(html$.Event),
      onWaiting: html$.ElementStream$(html$.Event),
      onFullscreenChange: html$.ElementStream$(html$.Event),
      onFullscreenError: html$.ElementStream$(html$.Event),
      onWheel: html$.ElementStream$(html$.WheelEvent)
    }));
    dart.setSetterSignature(_FrozenElementList, () => ({
      __proto__: dart.getSetters(_FrozenElementList.__proto__),
      length: core.int,
      [$length]: core.int,
      classes: core.Iterable$(core.String)
    }));
    dart.setFieldSignature(_FrozenElementList, () => ({
      __proto__: dart.getFields(_FrozenElementList.__proto__),
      [_nodeList]: dart.finalFieldType(ListOfNode())
    }));
    dart.defineExtensionMethods(_FrozenElementList, ['_get', '_set', 'sort', 'shuffle']);
    dart.defineExtensionAccessors(_FrozenElementList, ['length', 'first', 'last', 'single']);
    return _FrozenElementList;
  });
  html$._FrozenElementList = html$._FrozenElementList$();
  dart.addTypeTests(html$._FrozenElementList, _is__FrozenElementList_default);
  html$._ElementFactoryProvider = class _ElementFactoryProvider extends core.Object {
    static createElement_tag(tag, typeExtension) {
      if (typeExtension != null) {
        return document.createElement(tag, typeExtension);
      }
      return document.createElement(tag);
    }
  };
  (html$._ElementFactoryProvider.new = function() {
  }).prototype = html$._ElementFactoryProvider.prototype;
  dart.addTypeTests(html$._ElementFactoryProvider);
  const _value$3 = Symbol('_value');
  html$.ScrollAlignment = class ScrollAlignment extends core.Object {
    toString() {
      return "ScrollAlignment." + dart.str(this[_value$3]);
    }
  };
  (html$.ScrollAlignment._internal = function(value) {
    this[_value$3] = value;
  }).prototype = html$.ScrollAlignment.prototype;
  dart.addTypeTests(html$.ScrollAlignment);
  dart.setFieldSignature(html$.ScrollAlignment, () => ({
    __proto__: dart.getFields(html$.ScrollAlignment.__proto__),
    [_value$3]: dart.finalFieldType(dart.dynamic)
  }));
  dart.defineExtensionMethods(html$.ScrollAlignment, ['toString']);
  dart.defineLazy(html$.ScrollAlignment, {
    /*html$.ScrollAlignment.TOP*/get TOP() {
      return dart.const(new html$.ScrollAlignment._internal("TOP"));
    },
    /*html$.ScrollAlignment.CENTER*/get CENTER() {
      return dart.const(new html$.ScrollAlignment._internal("CENTER"));
    },
    /*html$.ScrollAlignment.BOTTOM*/get BOTTOM() {
      return dart.const(new html$.ScrollAlignment._internal("BOTTOM"));
    }
  });
  html$.EmbedElement = class EmbedElement extends html$.HtmlElement {
    static new() {
      return html$.EmbedElement._check(html$.document[$createElement]("embed"));
    }
    static get supported() {
      return html$.Element.isTagSupported("embed");
    }
    get [$height]() {
      return this.height;
    }
    set [$height](value) {
      this.height = value;
    }
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
    get [$src]() {
      return this.src;
    }
    set [$src](value) {
      this.src = value;
    }
    get [$type]() {
      return this.type;
    }
    set [$type](value) {
      this.type = value;
    }
    get [$width]() {
      return this.width;
    }
    set [$width](value) {
      this.width = value;
    }
    [__getter__](...args) {
      return this.__getter__.apply(this, args);
    }
    [__setter__](...args) {
      return this.__setter__.apply(this, args);
    }
  };
  (html$.EmbedElement.created = function() {
    this[height$] = null;
    this[name$12] = null;
    this[src$] = null;
    this[type$13] = null;
    this[width$] = null;
    html$.EmbedElement.__proto__.created.call(this);
  }).prototype = html$.EmbedElement.prototype;
  dart.addTypeTests(html$.EmbedElement);
  const height$ = Symbol("EmbedElement.height");
  const name$12 = Symbol("EmbedElement.name");
  const src$ = Symbol("EmbedElement.src");
  const type$13 = Symbol("EmbedElement.type");
  const width$ = Symbol("EmbedElement.width");
  dart.setMethodSignature(html$.EmbedElement, () => ({
    __proto__: dart.getMethods(html$.EmbedElement.__proto__),
    [__getter__]: dart.fnType(html$.Node, [core.String]),
    [__setter__]: dart.fnType(dart.void, [core.String, html$.Node])
  }));
  dart.setFieldSignature(html$.EmbedElement, () => ({
    __proto__: dart.getFields(html$.EmbedElement.__proto__),
    [$height]: dart.fieldType(core.String),
    [$name]: dart.fieldType(core.String),
    [$src]: dart.fieldType(core.String),
    [$type]: dart.fieldType(core.String),
    [$width]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLEmbedElement", html$.EmbedElement);
  html$.ErrorEvent = class ErrorEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.ErrorEvent._create_1(type, eventInitDict_1);
      }
      return html$.ErrorEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new ErrorEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new ErrorEvent(type);
    }
    get [$colno]() {
      return this.colno;
    }
    get [$error]() {
      return this.error;
    }
    get [$filename]() {
      return this.filename;
    }
    get [$lineno]() {
      return this.lineno;
    }
    get [$message]() {
      return this.message;
    }
  };
  dart.addTypeTests(html$.ErrorEvent);
  const colno = Symbol("ErrorEvent.colno");
  const error$2 = Symbol("ErrorEvent.error");
  const filename = Symbol("ErrorEvent.filename");
  const lineno = Symbol("ErrorEvent.lineno");
  const message$19 = Symbol("ErrorEvent.message");
  dart.setFieldSignature(html$.ErrorEvent, () => ({
    __proto__: dart.getFields(html$.ErrorEvent.__proto__),
    [$colno]: dart.finalFieldType(core.int),
    [$error]: dart.finalFieldType(core.Object),
    [$filename]: dart.finalFieldType(core.String),
    [$lineno]: dart.finalFieldType(core.int),
    [$message]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("ErrorEvent", html$.ErrorEvent);
  html$.EventSource = class EventSource$ extends html$.EventTarget {
    static new(url, opts) {
      let withCredentials = opts && 'withCredentials' in opts ? opts.withCredentials : false;
      let parsedOptions = new (IdentityMapOfString$dynamic()).from(["withCredentials", withCredentials]);
      return html$.EventSource._factoryEventSource(url, parsedOptions);
    }
    static _factoryEventSource(url, eventSourceInitDict) {
      if (eventSourceInitDict === void 0) eventSourceInitDict = null;
      if (eventSourceInitDict != null) {
        let eventSourceInitDict_1 = html_common.convertDartToNative_Dictionary(eventSourceInitDict);
        return html$.EventSource._create_1(url, eventSourceInitDict_1);
      }
      return html$.EventSource._create_2(url);
    }
    static _create_1(url, eventSourceInitDict) {
      return new EventSource(url, eventSourceInitDict);
    }
    static _create_2(url) {
      return new EventSource(url);
    }
    get [$readyState]() {
      return this.readyState;
    }
    get [$url]() {
      return this.url;
    }
    get [$withCredentials]() {
      return this.withCredentials;
    }
    [$close](...args) {
      return this.close.apply(this, args);
    }
    get [$onError]() {
      return html$.EventSource.errorEvent.forTarget(this);
    }
    get [$onMessage]() {
      return html$.EventSource.messageEvent.forTarget(this);
    }
    get [$onOpen]() {
      return html$.EventSource.openEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.EventSource);
  const readyState$2 = Symbol("EventSource.readyState");
  const url$1 = Symbol("EventSource.url");
  const withCredentials = Symbol("EventSource.withCredentials");
  dart.setMethodSignature(html$.EventSource, () => ({
    __proto__: dart.getMethods(html$.EventSource.__proto__),
    [$close]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(html$.EventSource, () => ({
    __proto__: dart.getGetters(html$.EventSource.__proto__),
    [$onError]: async.Stream$(html$.Event),
    [$onMessage]: async.Stream$(html$.MessageEvent),
    [$onOpen]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.EventSource, () => ({
    __proto__: dart.getFields(html$.EventSource.__proto__),
    [$readyState]: dart.finalFieldType(core.int),
    [$url]: dart.finalFieldType(core.String),
    [$withCredentials]: dart.finalFieldType(core.bool)
  }));
  dart.defineLazy(html$.EventSource, {
    /*html$.EventSource.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    },
    /*html$.EventSource.messageEvent*/get messageEvent() {
      return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
    },
    /*html$.EventSource.openEvent*/get openEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("open"));
    },
    /*html$.EventSource.CLOSED*/get CLOSED() {
      return 2;
    },
    /*html$.EventSource.CONNECTING*/get CONNECTING() {
      return 0;
    },
    /*html$.EventSource.OPEN*/get OPEN() {
      return 1;
    }
  });
  dart.registerExtension("EventSource", html$.EventSource);
  const _ptr = Symbol('_ptr');
  html$.Events = class Events extends core.Object {
    _get(type) {
      return new (_EventStreamOfEvent()).new(this[_ptr], type, false);
    }
  };
  (html$.Events.new = function(ptr) {
    this[_ptr] = ptr;
  }).prototype = html$.Events.prototype;
  dart.addTypeTests(html$.Events);
  dart.setMethodSignature(html$.Events, () => ({
    __proto__: dart.getMethods(html$.Events.__proto__),
    _get: dart.fnType(async.Stream$(html$.Event), [core.String])
  }));
  dart.setFieldSignature(html$.Events, () => ({
    __proto__: dart.getFields(html$.Events.__proto__),
    [_ptr]: dart.finalFieldType(html$.EventTarget)
  }));
  html$.ElementEvents = class ElementEvents extends html$.Events {
    _get(type) {
      if (dart.test(html$.ElementEvents.webkitEvents[$keys][$contains](type[$toLowerCase]()))) {
        if (dart.test(html_common.Device.isWebKit)) {
          return new (_ElementEventStreamImplOfEvent()).new(this[_ptr], html$.ElementEvents.webkitEvents[$_get](type[$toLowerCase]()), false);
        }
      }
      return new (_ElementEventStreamImplOfEvent()).new(this[_ptr], type, false);
    }
  };
  (html$.ElementEvents.new = function(ptr) {
    html$.ElementEvents.__proto__.new.call(this, ptr);
  }).prototype = html$.ElementEvents.prototype;
  dart.addTypeTests(html$.ElementEvents);
  dart.defineLazy(html$.ElementEvents, {
    /*html$.ElementEvents.webkitEvents*/get webkitEvents() {
      return new (IdentityMapOfString$String()).from(["animationend", "webkitAnimationEnd", "animationiteration", "webkitAnimationIteration", "animationstart", "webkitAnimationStart", "fullscreenchange", "webkitfullscreenchange", "fullscreenerror", "webkitfullscreenerror", "keyadded", "webkitkeyadded", "keyerror", "webkitkeyerror", "keymessage", "webkitkeymessage", "needkey", "webkitneedkey", "pointerlockchange", "webkitpointerlockchange", "pointerlockerror", "webkitpointerlockerror", "resourcetimingbufferfull", "webkitresourcetimingbufferfull", "transitionend", "webkitTransitionEnd", "speechchange", "webkitSpeechChange"]);
    }
  });
  html$.ExtendableMessageEvent = class ExtendableMessageEvent extends html$.ExtendableEvent {
    get [$data]() {
      return this.data;
    }
    get [$lastEventId]() {
      return this.lastEventId;
    }
    get [$origin]() {
      return this.origin;
    }
    get [$ports]() {
      return this.ports;
    }
    get [$source]() {
      return this.source;
    }
  };
  dart.addTypeTests(html$.ExtendableMessageEvent);
  const data$2 = Symbol("ExtendableMessageEvent.data");
  const lastEventId = Symbol("ExtendableMessageEvent.lastEventId");
  const origin$2 = Symbol("ExtendableMessageEvent.origin");
  const ports = Symbol("ExtendableMessageEvent.ports");
  const source$1 = Symbol("ExtendableMessageEvent.source");
  dart.setFieldSignature(html$.ExtendableMessageEvent, () => ({
    __proto__: dart.getFields(html$.ExtendableMessageEvent.__proto__),
    [$data]: dart.finalFieldType(core.Object),
    [$lastEventId]: dart.finalFieldType(core.String),
    [$origin]: dart.finalFieldType(core.String),
    [$ports]: dart.finalFieldType(ListOfMessagePort()),
    [$source]: dart.finalFieldType(core.Object)
  }));
  dart.registerExtension("ExtendableMessageEvent", html$.ExtendableMessageEvent);
  html$.External = class External extends _interceptors.Interceptor {
    [$AddSearchProvider](...args) {
      return this.AddSearchProvider.apply(this, args);
    }
    [$IsSearchProviderInstalled](...args) {
      return this.IsSearchProviderInstalled.apply(this, args);
    }
  };
  dart.addTypeTests(html$.External);
  dart.setMethodSignature(html$.External, () => ({
    __proto__: dart.getMethods(html$.External.__proto__),
    [$AddSearchProvider]: dart.fnType(dart.void, []),
    [$IsSearchProviderInstalled]: dart.fnType(dart.void, [])
  }));
  dart.registerExtension("External", html$.External);
  html$.FaceDetector = class FaceDetector$ extends _interceptors.Interceptor {
    static new(faceDetectorOptions) {
      if (faceDetectorOptions === void 0) faceDetectorOptions = null;
      if (faceDetectorOptions != null) {
        let faceDetectorOptions_1 = html_common.convertDartToNative_Dictionary(faceDetectorOptions);
        return html$.FaceDetector._create_1(faceDetectorOptions_1);
      }
      return html$.FaceDetector._create_2();
    }
    static _create_1(faceDetectorOptions) {
      return new FaceDetector(faceDetectorOptions);
    }
    static _create_2() {
      return new FaceDetector();
    }
    [$detect](image) {
      return html$.promiseToFuture(ListOfDetectedFace(), this.detect(image));
    }
  };
  dart.addTypeTests(html$.FaceDetector);
  dart.setMethodSignature(html$.FaceDetector, () => ({
    __proto__: dart.getMethods(html$.FaceDetector.__proto__),
    [$detect]: dart.fnType(async.Future$(core.List$(html$.DetectedFace)), [dart.dynamic])
  }));
  dart.registerExtension("FaceDetector", html$.FaceDetector);
  html$.FederatedCredential = class FederatedCredential$ extends html$.Credential {
    static new(data) {
      let data_1 = html_common.convertDartToNative_Dictionary(data);
      return html$.FederatedCredential._create_1(data_1);
    }
    static _create_1(data) {
      return new FederatedCredential(data);
    }
    get [$protocol]() {
      return this.protocol;
    }
    get [$provider]() {
      return this.provider;
    }
    get [$iconUrl]() {
      return this.iconURL;
    }
    get [$name]() {
      return this.name;
    }
  };
  dart.addTypeTests(html$.FederatedCredential);
  const protocol$0 = Symbol("FederatedCredential.protocol");
  const provider = Symbol("FederatedCredential.provider");
  const iconUrl$ = Symbol("FederatedCredential.iconUrl");
  const name$13 = Symbol("FederatedCredential.name");
  html$.FederatedCredential[dart.implements] = () => [html$.CredentialUserData];
  dart.setFieldSignature(html$.FederatedCredential, () => ({
    __proto__: dart.getFields(html$.FederatedCredential.__proto__),
    [$protocol]: dart.finalFieldType(core.String),
    [$provider]: dart.finalFieldType(core.String),
    [$iconUrl]: dart.finalFieldType(core.String),
    [$name]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("FederatedCredential", html$.FederatedCredential);
  html$.FetchEvent = class FetchEvent$ extends html$.ExtendableEvent {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.FetchEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new FetchEvent(type, eventInitDict);
    }
    get [$clientId]() {
      return this.clientId;
    }
    get [$isReload]() {
      return this.isReload;
    }
    get [$preloadResponse]() {
      return html$.promiseToFuture(dart.dynamic, this.preloadResponse);
    }
    get [$request]() {
      return this.request;
    }
    [$respondWith](...args) {
      return this.respondWith.apply(this, args);
    }
  };
  dart.addTypeTests(html$.FetchEvent);
  const clientId = Symbol("FetchEvent.clientId");
  const isReload = Symbol("FetchEvent.isReload");
  const request$ = Symbol("FetchEvent.request");
  dart.setMethodSignature(html$.FetchEvent, () => ({
    __proto__: dart.getMethods(html$.FetchEvent.__proto__),
    [$respondWith]: dart.fnType(dart.void, [async.Future])
  }));
  dart.setGetterSignature(html$.FetchEvent, () => ({
    __proto__: dart.getGetters(html$.FetchEvent.__proto__),
    [$preloadResponse]: async.Future
  }));
  dart.setFieldSignature(html$.FetchEvent, () => ({
    __proto__: dart.getFields(html$.FetchEvent.__proto__),
    [$clientId]: dart.finalFieldType(core.String),
    [$isReload]: dart.finalFieldType(core.bool),
    [$request]: dart.finalFieldType(html$._Request)
  }));
  dart.registerExtension("FetchEvent", html$.FetchEvent);
  html$.FieldSetElement = class FieldSetElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("fieldset");
    }
    get [$disabled]() {
      return this.disabled;
    }
    set [$disabled](value) {
      this.disabled = value;
    }
    get [$elements]() {
      return this.elements;
    }
    get [$form]() {
      return this.form;
    }
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
    get [$type]() {
      return this.type;
    }
    get [$validationMessage]() {
      return this.validationMessage;
    }
    get [$validity]() {
      return this.validity;
    }
    get [$willValidate]() {
      return this.willValidate;
    }
    [$checkValidity](...args) {
      return this.checkValidity.apply(this, args);
    }
    [$reportValidity](...args) {
      return this.reportValidity.apply(this, args);
    }
    [$setCustomValidity](...args) {
      return this.setCustomValidity.apply(this, args);
    }
  };
  (html$.FieldSetElement.created = function() {
    this[disabled$1] = null;
    this[elements] = null;
    this[form$] = null;
    this[name$14] = null;
    this[type$14] = null;
    this[validationMessage$] = null;
    this[validity$] = null;
    this[willValidate$] = null;
    html$.FieldSetElement.__proto__.created.call(this);
  }).prototype = html$.FieldSetElement.prototype;
  dart.addTypeTests(html$.FieldSetElement);
  const disabled$1 = Symbol("FieldSetElement.disabled");
  const elements = Symbol("FieldSetElement.elements");
  const form$ = Symbol("FieldSetElement.form");
  const name$14 = Symbol("FieldSetElement.name");
  const type$14 = Symbol("FieldSetElement.type");
  const validationMessage$ = Symbol("FieldSetElement.validationMessage");
  const validity$ = Symbol("FieldSetElement.validity");
  const willValidate$ = Symbol("FieldSetElement.willValidate");
  dart.setMethodSignature(html$.FieldSetElement, () => ({
    __proto__: dart.getMethods(html$.FieldSetElement.__proto__),
    [$checkValidity]: dart.fnType(core.bool, []),
    [$reportValidity]: dart.fnType(core.bool, []),
    [$setCustomValidity]: dart.fnType(dart.void, [core.String])
  }));
  dart.setFieldSignature(html$.FieldSetElement, () => ({
    __proto__: dart.getFields(html$.FieldSetElement.__proto__),
    [$disabled]: dart.fieldType(core.bool),
    [$elements]: dart.finalFieldType(ListOfNode()),
    [$form]: dart.finalFieldType(html$.FormElement),
    [$name]: dart.fieldType(core.String),
    [$type]: dart.finalFieldType(core.String),
    [$validationMessage]: dart.finalFieldType(core.String),
    [$validity]: dart.finalFieldType(html$.ValidityState),
    [$willValidate]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("HTMLFieldSetElement", html$.FieldSetElement);
  const _get_lastModifiedDate = Symbol('_get_lastModifiedDate');
  html$.File = class File$ extends html$.Blob {
    static new(fileBits, fileName, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return html$.File._create_1(fileBits, fileName, options_1);
      }
      return html$.File._create_2(fileBits, fileName);
    }
    static _create_1(fileBits, fileName, options) {
      return new File(fileBits, fileName, options);
    }
    static _create_2(fileBits, fileName) {
      return new File(fileBits, fileName);
    }
    get [$lastModified]() {
      return this.lastModified;
    }
    get [$lastModifiedDate]() {
      return html_common.convertNativeToDart_DateTime(this[_get_lastModifiedDate]);
    }
    get [_get_lastModifiedDate]() {
      return this.lastModifiedDate;
    }
    get [$name]() {
      return this.name;
    }
    get [$relativePath]() {
      return this.webkitRelativePath;
    }
  };
  dart.addTypeTests(html$.File);
  const lastModified = Symbol("File.lastModified");
  const name$15 = Symbol("File.name");
  const relativePath = Symbol("File.relativePath");
  dart.setGetterSignature(html$.File, () => ({
    __proto__: dart.getGetters(html$.File.__proto__),
    [$lastModifiedDate]: core.DateTime
  }));
  dart.setFieldSignature(html$.File, () => ({
    __proto__: dart.getFields(html$.File.__proto__),
    [$lastModified]: dart.finalFieldType(core.int),
    [_get_lastModifiedDate]: dart.finalFieldType(dart.dynamic),
    [$name]: dart.finalFieldType(core.String),
    [$relativePath]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("File", html$.File);
  const _createWriter = Symbol('_createWriter');
  const _file$ = Symbol('_file');
  html$.FileEntry = class FileEntry extends html$.Entry {
    [_createWriter](...args) {
      return this.createWriter.apply(this, args);
    }
    [$createWriter]() {
      let completer = CompleterOfFileWriter().new();
      this[_createWriter](dart.fn(value => {
        _js_helper.applyExtension("FileWriter", value);
        completer.complete(value);
      }, FileWriterToNull()), dart.fn(error => {
        completer.completeError(error);
      }, DomExceptionToNull()));
      return completer.future;
    }
    [_file$](...args) {
      return this.file.apply(this, args);
    }
    [$file]() {
      let completer = CompleterOfFile$().new();
      this[_file$](dart.fn(value => {
        _js_helper.applyExtension("File", value);
        completer.complete(value);
      }, FileToNull()), dart.fn(error => {
        completer.completeError(error);
      }, DomExceptionToNull()));
      return completer.future;
    }
  };
  dart.addTypeTests(html$.FileEntry);
  dart.setMethodSignature(html$.FileEntry, () => ({
    __proto__: dart.getMethods(html$.FileEntry.__proto__),
    [_createWriter]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.FileWriter])], [dart.fnType(dart.void, [html$.DomException])]),
    [$createWriter]: dart.fnType(async.Future$(html$.FileWriter), []),
    [_file$]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.File])], [dart.fnType(dart.void, [html$.DomException])]),
    [$file]: dart.fnType(async.Future$(html$.File), [])
  }));
  dart.registerExtension("FileEntry", html$.FileEntry);
  const Interceptor_ListMixin$$0 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$0.new = function() {
    Interceptor_ListMixin$$0.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$0.prototype;
  dart.applyMixin(Interceptor_ListMixin$$0, collection.ListMixin$(html$.File));
  const Interceptor_ImmutableListMixin$$0 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$0 {};
  (Interceptor_ImmutableListMixin$$0.new = function() {
    Interceptor_ImmutableListMixin$$0.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$0.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$0, html$.ImmutableListMixin$(html$.File));
  html$.FileList = class FileList extends Interceptor_ImmutableListMixin$$0 {
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[index];
    }
    [$_set](index, value) {
      html$.File._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
  };
  html$.FileList.prototype[dart.isList] = true;
  dart.addTypeTests(html$.FileList);
  html$.FileList[dart.implements] = () => [ListOfFile(), JavaScriptIndexingBehaviorOfFile()];
  dart.setMethodSignature(html$.FileList, () => ({
    __proto__: dart.getMethods(html$.FileList.__proto__),
    [$_get]: dart.fnType(html$.File, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(html$.File, [core.int]),
    [$item]: dart.fnType(html$.File, [core.int])
  }));
  dart.setGetterSignature(html$.FileList, () => ({
    __proto__: dart.getGetters(html$.FileList.__proto__),
    [$length]: core.int,
    [$first]: html$.File,
    [$last]: html$.File,
    [$single]: html$.File
  }));
  dart.setSetterSignature(html$.FileList, () => ({
    __proto__: dart.getSetters(html$.FileList.__proto__),
    [$length]: core.int
  }));
  dart.registerExtension("FileList", html$.FileList);
  html$.FileReader = class FileReader$ extends html$.EventTarget {
    get [$result]() {
      let res = this.result;
      if (typed_data.ByteBuffer.is(res)) {
        return typed_data.Uint8List.view(res);
      }
      return res;
    }
    static new() {
      return html$.FileReader._create_1();
    }
    static _create_1() {
      return new FileReader();
    }
    get [$error]() {
      return this.error;
    }
    get [$readyState]() {
      return this.readyState;
    }
    [$abort](...args) {
      return this.abort.apply(this, args);
    }
    [$readAsArrayBuffer](...args) {
      return this.readAsArrayBuffer.apply(this, args);
    }
    [$readAsDataUrl](...args) {
      return this.readAsDataURL.apply(this, args);
    }
    [$readAsText](...args) {
      return this.readAsText.apply(this, args);
    }
    get [$onAbort]() {
      return html$.FileReader.abortEvent.forTarget(this);
    }
    get [$onError]() {
      return html$.FileReader.errorEvent.forTarget(this);
    }
    get [$onLoad]() {
      return html$.FileReader.loadEvent.forTarget(this);
    }
    get [$onLoadEnd]() {
      return html$.FileReader.loadEndEvent.forTarget(this);
    }
    get [$onLoadStart]() {
      return html$.FileReader.loadStartEvent.forTarget(this);
    }
    get [$onProgress]() {
      return html$.FileReader.progressEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.FileReader);
  const error$3 = Symbol("FileReader.error");
  const readyState$3 = Symbol("FileReader.readyState");
  dart.setMethodSignature(html$.FileReader, () => ({
    __proto__: dart.getMethods(html$.FileReader.__proto__),
    [$abort]: dart.fnType(dart.void, []),
    [$readAsArrayBuffer]: dart.fnType(dart.void, [html$.Blob]),
    [$readAsDataUrl]: dart.fnType(dart.void, [html$.Blob]),
    [$readAsText]: dart.fnType(dart.void, [html$.Blob], [core.String])
  }));
  dart.setGetterSignature(html$.FileReader, () => ({
    __proto__: dart.getGetters(html$.FileReader.__proto__),
    [$result]: core.Object,
    [$onAbort]: async.Stream$(html$.ProgressEvent),
    [$onError]: async.Stream$(html$.ProgressEvent),
    [$onLoad]: async.Stream$(html$.ProgressEvent),
    [$onLoadEnd]: async.Stream$(html$.ProgressEvent),
    [$onLoadStart]: async.Stream$(html$.ProgressEvent),
    [$onProgress]: async.Stream$(html$.ProgressEvent)
  }));
  dart.setFieldSignature(html$.FileReader, () => ({
    __proto__: dart.getFields(html$.FileReader.__proto__),
    [$error]: dart.finalFieldType(html$.DomException),
    [$readyState]: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(html$.FileReader, {
    /*html$.FileReader.abortEvent*/get abortEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("abort"));
    },
    /*html$.FileReader.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("error"));
    },
    /*html$.FileReader.loadEvent*/get loadEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("load"));
    },
    /*html$.FileReader.loadEndEvent*/get loadEndEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("loadend"));
    },
    /*html$.FileReader.loadStartEvent*/get loadStartEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("loadstart"));
    },
    /*html$.FileReader.progressEvent*/get progressEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("progress"));
    },
    /*html$.FileReader.DONE*/get DONE() {
      return 2;
    },
    /*html$.FileReader.EMPTY*/get EMPTY() {
      return 0;
    },
    /*html$.FileReader.LOADING*/get LOADING() {
      return 1;
    }
  });
  dart.registerExtension("FileReader", html$.FileReader);
  html$.FileSystem = class FileSystem extends _interceptors.Interceptor {
    static get supported() {
      return !!window.webkitRequestFileSystem;
    }
    get [$name]() {
      return this.name;
    }
    get [$root]() {
      return this.root;
    }
  };
  dart.addTypeTests(html$.FileSystem);
  const name$16 = Symbol("FileSystem.name");
  const root = Symbol("FileSystem.root");
  dart.setFieldSignature(html$.FileSystem, () => ({
    __proto__: dart.getFields(html$.FileSystem.__proto__),
    [$name]: dart.finalFieldType(core.String),
    [$root]: dart.finalFieldType(html$.DirectoryEntry)
  }));
  dart.registerExtension("DOMFileSystem", html$.FileSystem);
  html$.FileWriter = class FileWriter extends html$.EventTarget {
    get [$error]() {
      return this.error;
    }
    get [$length]() {
      return this.length;
    }
    get [$position]() {
      return this.position;
    }
    get [$readyState]() {
      return this.readyState;
    }
    [$abort](...args) {
      return this.abort.apply(this, args);
    }
    [$seek](...args) {
      return this.seek.apply(this, args);
    }
    [$truncate](...args) {
      return this.truncate.apply(this, args);
    }
    [$write](...args) {
      return this.write.apply(this, args);
    }
    get [$onAbort]() {
      return html$.FileWriter.abortEvent.forTarget(this);
    }
    get [$onError]() {
      return html$.FileWriter.errorEvent.forTarget(this);
    }
    get [$onProgress]() {
      return html$.FileWriter.progressEvent.forTarget(this);
    }
    get [$onWrite]() {
      return html$.FileWriter.writeEvent.forTarget(this);
    }
    get [$onWriteEnd]() {
      return html$.FileWriter.writeEndEvent.forTarget(this);
    }
    get [$onWriteStart]() {
      return html$.FileWriter.writeStartEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.FileWriter);
  const error$4 = Symbol("FileWriter.error");
  const length$7 = Symbol("FileWriter.length");
  const position = Symbol("FileWriter.position");
  const readyState$4 = Symbol("FileWriter.readyState");
  dart.setMethodSignature(html$.FileWriter, () => ({
    __proto__: dart.getMethods(html$.FileWriter.__proto__),
    [$abort]: dart.fnType(dart.void, []),
    [$seek]: dart.fnType(dart.void, [core.int]),
    [$truncate]: dart.fnType(dart.void, [core.int]),
    [$write]: dart.fnType(dart.void, [html$.Blob])
  }));
  dart.setGetterSignature(html$.FileWriter, () => ({
    __proto__: dart.getGetters(html$.FileWriter.__proto__),
    [$onAbort]: async.Stream$(html$.ProgressEvent),
    [$onError]: async.Stream$(html$.Event),
    [$onProgress]: async.Stream$(html$.ProgressEvent),
    [$onWrite]: async.Stream$(html$.ProgressEvent),
    [$onWriteEnd]: async.Stream$(html$.ProgressEvent),
    [$onWriteStart]: async.Stream$(html$.ProgressEvent)
  }));
  dart.setFieldSignature(html$.FileWriter, () => ({
    __proto__: dart.getFields(html$.FileWriter.__proto__),
    [$error]: dart.finalFieldType(html$.DomException),
    [$length]: dart.finalFieldType(core.int),
    [$position]: dart.finalFieldType(core.int),
    [$readyState]: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(html$.FileWriter, {
    /*html$.FileWriter.abortEvent*/get abortEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("abort"));
    },
    /*html$.FileWriter.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    },
    /*html$.FileWriter.progressEvent*/get progressEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("progress"));
    },
    /*html$.FileWriter.writeEvent*/get writeEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("write"));
    },
    /*html$.FileWriter.writeEndEvent*/get writeEndEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("writeend"));
    },
    /*html$.FileWriter.writeStartEvent*/get writeStartEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("writestart"));
    },
    /*html$.FileWriter.DONE*/get DONE() {
      return 2;
    },
    /*html$.FileWriter.INIT*/get INIT() {
      return 0;
    },
    /*html$.FileWriter.WRITING*/get WRITING() {
      return 1;
    }
  });
  dart.registerExtension("FileWriter", html$.FileWriter);
  const _get_relatedTarget = Symbol('_get_relatedTarget');
  html$.FocusEvent = class FocusEvent$ extends html$.UIEvent {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.FocusEvent._create_1(type, eventInitDict_1);
      }
      return html$.FocusEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new FocusEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new FocusEvent(type);
    }
    get [$relatedTarget]() {
      return html$._convertNativeToDart_EventTarget(this[_get_relatedTarget]);
    }
    get [_get_relatedTarget]() {
      return this.relatedTarget;
    }
  };
  dart.addTypeTests(html$.FocusEvent);
  dart.setGetterSignature(html$.FocusEvent, () => ({
    __proto__: dart.getGetters(html$.FocusEvent.__proto__),
    [$relatedTarget]: html$.EventTarget
  }));
  dart.setFieldSignature(html$.FocusEvent, () => ({
    __proto__: dart.getFields(html$.FocusEvent.__proto__),
    [_get_relatedTarget]: dart.finalFieldType(dart.dynamic)
  }));
  dart.registerExtension("FocusEvent", html$.FocusEvent);
  html$.FontFace = class FontFace$ extends _interceptors.Interceptor {
    static new(family, source, descriptors) {
      if (descriptors === void 0) descriptors = null;
      if (descriptors != null) {
        let descriptors_1 = html_common.convertDartToNative_Dictionary(descriptors);
        return html$.FontFace._create_1(family, source, descriptors_1);
      }
      return html$.FontFace._create_2(family, source);
    }
    static _create_1(family, source, descriptors) {
      return new FontFace(family, source, descriptors);
    }
    static _create_2(family, source) {
      return new FontFace(family, source);
    }
    get [$display]() {
      return this.display;
    }
    set [$display](value) {
      this.display = value;
    }
    get [$family]() {
      return this.family;
    }
    set [$family](value) {
      this.family = value;
    }
    get [$featureSettings]() {
      return this.featureSettings;
    }
    set [$featureSettings](value) {
      this.featureSettings = value;
    }
    get [$loaded]() {
      return html$.promiseToFuture(html$.FontFace, this.loaded);
    }
    get [$status]() {
      return this.status;
    }
    get [$stretch]() {
      return this.stretch;
    }
    set [$stretch](value) {
      this.stretch = value;
    }
    get [$style]() {
      return this.style;
    }
    set [$style](value) {
      this.style = value;
    }
    get [$unicodeRange]() {
      return this.unicodeRange;
    }
    set [$unicodeRange](value) {
      this.unicodeRange = value;
    }
    get [$variant]() {
      return this.variant;
    }
    set [$variant](value) {
      this.variant = value;
    }
    get [$weight]() {
      return this.weight;
    }
    set [$weight](value) {
      this.weight = value;
    }
    [$load]() {
      return html$.promiseToFuture(html$.FontFace, this.load());
    }
  };
  dart.addTypeTests(html$.FontFace);
  const display = Symbol("FontFace.display");
  const family = Symbol("FontFace.family");
  const featureSettings = Symbol("FontFace.featureSettings");
  const status$0 = Symbol("FontFace.status");
  const stretch = Symbol("FontFace.stretch");
  const style$4 = Symbol("FontFace.style");
  const unicodeRange = Symbol("FontFace.unicodeRange");
  const variant = Symbol("FontFace.variant");
  const weight = Symbol("FontFace.weight");
  dart.setMethodSignature(html$.FontFace, () => ({
    __proto__: dart.getMethods(html$.FontFace.__proto__),
    [$load]: dart.fnType(async.Future$(html$.FontFace), [])
  }));
  dart.setGetterSignature(html$.FontFace, () => ({
    __proto__: dart.getGetters(html$.FontFace.__proto__),
    [$loaded]: async.Future$(html$.FontFace)
  }));
  dart.setFieldSignature(html$.FontFace, () => ({
    __proto__: dart.getFields(html$.FontFace.__proto__),
    [$display]: dart.fieldType(core.String),
    [$family]: dart.fieldType(core.String),
    [$featureSettings]: dart.fieldType(core.String),
    [$status]: dart.finalFieldType(core.String),
    [$stretch]: dart.fieldType(core.String),
    [$style]: dart.fieldType(core.String),
    [$unicodeRange]: dart.fieldType(core.String),
    [$variant]: dart.fieldType(core.String),
    [$weight]: dart.fieldType(core.String)
  }));
  dart.registerExtension("FontFace", html$.FontFace);
  html$.FontFaceSet = class FontFaceSet extends html$.EventTarget {
    get [$status]() {
      return this.status;
    }
    [$add](...args) {
      return this.add.apply(this, args);
    }
    [$check](...args) {
      return this.check.apply(this, args);
    }
    [$clear](...args) {
      return this.clear.apply(this, args);
    }
    [$delete](...args) {
      return this.delete.apply(this, args);
    }
    [$forEach](...args) {
      return this.forEach.apply(this, args);
    }
    [$has](...args) {
      return this.has.apply(this, args);
    }
    get [$onLoading]() {
      return html$.FontFaceSet.loadingEvent.forTarget(this);
    }
    get [$onLoadingDone]() {
      return html$.FontFaceSet.loadingDoneEvent.forTarget(this);
    }
    get [$onLoadingError]() {
      return html$.FontFaceSet.loadingErrorEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.FontFaceSet);
  const status$1 = Symbol("FontFaceSet.status");
  dart.setMethodSignature(html$.FontFaceSet, () => ({
    __proto__: dart.getMethods(html$.FontFaceSet.__proto__),
    [$add]: dart.fnType(html$.FontFaceSet, [html$.FontFace]),
    [$check]: dart.fnType(core.bool, [core.String], [core.String]),
    [$clear]: dart.fnType(dart.void, []),
    [$delete]: dart.fnType(core.bool, [html$.FontFace]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.FontFace, html$.FontFace, html$.FontFaceSet])], [core.Object]),
    [$has]: dart.fnType(core.bool, [html$.FontFace])
  }));
  dart.setGetterSignature(html$.FontFaceSet, () => ({
    __proto__: dart.getGetters(html$.FontFaceSet.__proto__),
    [$onLoading]: async.Stream$(html$.FontFaceSetLoadEvent),
    [$onLoadingDone]: async.Stream$(html$.FontFaceSetLoadEvent),
    [$onLoadingError]: async.Stream$(html$.FontFaceSetLoadEvent)
  }));
  dart.setFieldSignature(html$.FontFaceSet, () => ({
    __proto__: dart.getFields(html$.FontFaceSet.__proto__),
    [$status]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.FontFaceSet, {
    /*html$.FontFaceSet.loadingEvent*/get loadingEvent() {
      return dart.const(new (EventStreamProviderOfFontFaceSetLoadEvent()).new("loading"));
    },
    /*html$.FontFaceSet.loadingDoneEvent*/get loadingDoneEvent() {
      return dart.const(new (EventStreamProviderOfFontFaceSetLoadEvent()).new("loadingdone"));
    },
    /*html$.FontFaceSet.loadingErrorEvent*/get loadingErrorEvent() {
      return dart.const(new (EventStreamProviderOfFontFaceSetLoadEvent()).new("loadingerror"));
    }
  });
  dart.registerExtension("FontFaceSet", html$.FontFaceSet);
  html$.FontFaceSetLoadEvent = class FontFaceSetLoadEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.FontFaceSetLoadEvent._create_1(type, eventInitDict_1);
      }
      return html$.FontFaceSetLoadEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new FontFaceSetLoadEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new FontFaceSetLoadEvent(type);
    }
    get [$fontfaces]() {
      return this.fontfaces;
    }
  };
  dart.addTypeTests(html$.FontFaceSetLoadEvent);
  const fontfaces = Symbol("FontFaceSetLoadEvent.fontfaces");
  dart.setFieldSignature(html$.FontFaceSetLoadEvent, () => ({
    __proto__: dart.getFields(html$.FontFaceSetLoadEvent.__proto__),
    [$fontfaces]: dart.finalFieldType(ListOfFontFace())
  }));
  dart.registerExtension("FontFaceSetLoadEvent", html$.FontFaceSetLoadEvent);
  html$.FontFaceSource = class FontFaceSource extends _interceptors.Interceptor {
    get [$fonts]() {
      return this.fonts;
    }
  };
  dart.addTypeTests(html$.FontFaceSource);
  const fonts$ = Symbol("FontFaceSource.fonts");
  dart.setFieldSignature(html$.FontFaceSource, () => ({
    __proto__: dart.getFields(html$.FontFaceSource.__proto__),
    [$fonts]: dart.finalFieldType(html$.FontFaceSet)
  }));
  dart.registerExtension("FontFaceSource", html$.FontFaceSource);
  html$.ForeignFetchEvent = class ForeignFetchEvent$ extends html$.ExtendableEvent {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.ForeignFetchEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new ForeignFetchEvent(type, eventInitDict);
    }
    get [$origin]() {
      return this.origin;
    }
    get [$request]() {
      return this.request;
    }
    [$respondWith](...args) {
      return this.respondWith.apply(this, args);
    }
  };
  dart.addTypeTests(html$.ForeignFetchEvent);
  const origin$3 = Symbol("ForeignFetchEvent.origin");
  const request$0 = Symbol("ForeignFetchEvent.request");
  dart.setMethodSignature(html$.ForeignFetchEvent, () => ({
    __proto__: dart.getMethods(html$.ForeignFetchEvent.__proto__),
    [$respondWith]: dart.fnType(dart.void, [async.Future])
  }));
  dart.setFieldSignature(html$.ForeignFetchEvent, () => ({
    __proto__: dart.getFields(html$.ForeignFetchEvent.__proto__),
    [$origin]: dart.finalFieldType(core.String),
    [$request]: dart.finalFieldType(html$._Request)
  }));
  dart.registerExtension("ForeignFetchEvent", html$.ForeignFetchEvent);
  html$.FormData = class FormData$ extends _interceptors.Interceptor {
    static new(form) {
      if (form === void 0) form = null;
      if (form != null) {
        return html$.FormData._create_1(form);
      }
      return html$.FormData._create_2();
    }
    static _create_1(form) {
      return new FormData(form);
    }
    static _create_2() {
      return new FormData();
    }
    static get supported() {
      return !!window.FormData;
    }
    [$append](...args) {
      return this.append.apply(this, args);
    }
    [$appendBlob](...args) {
      return this.append.apply(this, args);
    }
    [$delete](...args) {
      return this.delete.apply(this, args);
    }
    [$get](...args) {
      return this.get.apply(this, args);
    }
    [$getAll](...args) {
      return this.getAll.apply(this, args);
    }
    [$has](...args) {
      return this.has.apply(this, args);
    }
    [$set](...args) {
      return this.set.apply(this, args);
    }
  };
  dart.addTypeTests(html$.FormData);
  dart.setMethodSignature(html$.FormData, () => ({
    __proto__: dart.getMethods(html$.FormData.__proto__),
    [$append]: dart.fnType(dart.void, [core.String, core.String]),
    [$appendBlob]: dart.fnType(dart.void, [core.String, html$.Blob], [core.String]),
    [$delete]: dart.fnType(dart.void, [core.String]),
    [$get]: dart.fnType(core.Object, [core.String]),
    [$getAll]: dart.fnType(core.List$(core.Object), [core.String]),
    [$has]: dart.fnType(core.bool, [core.String]),
    [$set]: dart.fnType(dart.void, [core.String, dart.dynamic], [core.String])
  }));
  dart.registerExtension("FormData", html$.FormData);
  const _requestAutocomplete_1 = Symbol('_requestAutocomplete_1');
  html$.FormElement = class FormElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("form");
    }
    get [$acceptCharset]() {
      return this.acceptCharset;
    }
    set [$acceptCharset](value) {
      this.acceptCharset = value;
    }
    get [$action]() {
      return this.action;
    }
    set [$action](value) {
      this.action = value;
    }
    get [$autocomplete]() {
      return this.autocomplete;
    }
    set [$autocomplete](value) {
      this.autocomplete = value;
    }
    get [$encoding]() {
      return this.encoding;
    }
    set [$encoding](value) {
      this.encoding = value;
    }
    get [$enctype]() {
      return this.enctype;
    }
    set [$enctype](value) {
      this.enctype = value;
    }
    get [$length]() {
      return this.length;
    }
    get [$method]() {
      return this.method;
    }
    set [$method](value) {
      this.method = value;
    }
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
    get [$noValidate]() {
      return this.noValidate;
    }
    set [$noValidate](value) {
      this.noValidate = value;
    }
    get [$target]() {
      return this.target;
    }
    set [$target](value) {
      this.target = value;
    }
    [__getter__](...args) {
      return this.__getter__.apply(this, args);
    }
    [$checkValidity](...args) {
      return this.checkValidity.apply(this, args);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
    [$reportValidity](...args) {
      return this.reportValidity.apply(this, args);
    }
    [$requestAutocomplete](details) {
      let details_1 = html_common.convertDartToNative_Dictionary(details);
      this[_requestAutocomplete_1](details_1);
      return;
    }
    [_requestAutocomplete_1](...args) {
      return this.requestAutocomplete.apply(this, args);
    }
    [$reset](...args) {
      return this.reset.apply(this, args);
    }
    [$submit](...args) {
      return this.submit.apply(this, args);
    }
  };
  (html$.FormElement.created = function() {
    this[acceptCharset] = null;
    this[action] = null;
    this[autocomplete$] = null;
    this[encoding$0] = null;
    this[enctype] = null;
    this[length$8] = null;
    this[method] = null;
    this[name$17] = null;
    this[noValidate] = null;
    this[target$2] = null;
    html$.FormElement.__proto__.created.call(this);
  }).prototype = html$.FormElement.prototype;
  dart.addTypeTests(html$.FormElement);
  const acceptCharset = Symbol("FormElement.acceptCharset");
  const action = Symbol("FormElement.action");
  const autocomplete$ = Symbol("FormElement.autocomplete");
  const encoding$0 = Symbol("FormElement.encoding");
  const enctype = Symbol("FormElement.enctype");
  const length$8 = Symbol("FormElement.length");
  const method = Symbol("FormElement.method");
  const name$17 = Symbol("FormElement.name");
  const noValidate = Symbol("FormElement.noValidate");
  const target$2 = Symbol("FormElement.target");
  dart.setMethodSignature(html$.FormElement, () => ({
    __proto__: dart.getMethods(html$.FormElement.__proto__),
    [__getter__]: dart.fnType(core.Object, [core.String]),
    [$checkValidity]: dart.fnType(core.bool, []),
    [$item]: dart.fnType(html$.Element, [core.int]),
    [$reportValidity]: dart.fnType(core.bool, []),
    [$requestAutocomplete]: dart.fnType(dart.void, [core.Map]),
    [_requestAutocomplete_1]: dart.fnType(dart.void, [dart.dynamic]),
    [$reset]: dart.fnType(dart.void, []),
    [$submit]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(html$.FormElement, () => ({
    __proto__: dart.getFields(html$.FormElement.__proto__),
    [$acceptCharset]: dart.fieldType(core.String),
    [$action]: dart.fieldType(core.String),
    [$autocomplete]: dart.fieldType(core.String),
    [$encoding]: dart.fieldType(core.String),
    [$enctype]: dart.fieldType(core.String),
    [$length]: dart.finalFieldType(core.int),
    [$method]: dart.fieldType(core.String),
    [$name]: dart.fieldType(core.String),
    [$noValidate]: dart.fieldType(core.bool),
    [$target]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLFormElement", html$.FormElement);
  html$.Gamepad = class Gamepad extends _interceptors.Interceptor {
    get [$axes]() {
      return this.axes;
    }
    get [$buttons]() {
      return this.buttons;
    }
    get [$connected]() {
      return this.connected;
    }
    get [$displayId]() {
      return this.displayId;
    }
    get [$hand]() {
      return this.hand;
    }
    get [$id]() {
      return this.id;
    }
    get [$index]() {
      return this.index;
    }
    get [$mapping]() {
      return this.mapping;
    }
    get [$pose]() {
      return this.pose;
    }
    get [$timestamp]() {
      return this.timestamp;
    }
  };
  dart.addTypeTests(html$.Gamepad);
  const axes = Symbol("Gamepad.axes");
  const buttons = Symbol("Gamepad.buttons");
  const connected = Symbol("Gamepad.connected");
  const displayId = Symbol("Gamepad.displayId");
  const hand = Symbol("Gamepad.hand");
  const id$6 = Symbol("Gamepad.id");
  const index = Symbol("Gamepad.index");
  const mapping = Symbol("Gamepad.mapping");
  const pose = Symbol("Gamepad.pose");
  const timestamp$ = Symbol("Gamepad.timestamp");
  dart.setFieldSignature(html$.Gamepad, () => ({
    __proto__: dart.getFields(html$.Gamepad.__proto__),
    [$axes]: dart.finalFieldType(ListOfnum()),
    [$buttons]: dart.finalFieldType(ListOfGamepadButton()),
    [$connected]: dart.finalFieldType(core.bool),
    [$displayId]: dart.finalFieldType(core.int),
    [$hand]: dart.finalFieldType(core.String),
    [$id]: dart.finalFieldType(core.String),
    [$index]: dart.finalFieldType(core.int),
    [$mapping]: dart.finalFieldType(core.String),
    [$pose]: dart.finalFieldType(html$.GamepadPose),
    [$timestamp]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("Gamepad", html$.Gamepad);
  html$.GamepadButton = class GamepadButton extends _interceptors.Interceptor {
    get [$pressed]() {
      return this.pressed;
    }
    get [$touched]() {
      return this.touched;
    }
    get [$value]() {
      return this.value;
    }
  };
  dart.addTypeTests(html$.GamepadButton);
  const pressed$ = Symbol("GamepadButton.pressed");
  const touched = Symbol("GamepadButton.touched");
  const value$5 = Symbol("GamepadButton.value");
  dart.setFieldSignature(html$.GamepadButton, () => ({
    __proto__: dart.getFields(html$.GamepadButton.__proto__),
    [$pressed]: dart.finalFieldType(core.bool),
    [$touched]: dart.finalFieldType(core.bool),
    [$value]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("GamepadButton", html$.GamepadButton);
  html$.GamepadEvent = class GamepadEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.GamepadEvent._create_1(type, eventInitDict_1);
      }
      return html$.GamepadEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new GamepadEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new GamepadEvent(type);
    }
    get [$gamepad]() {
      return this.gamepad;
    }
  };
  dart.addTypeTests(html$.GamepadEvent);
  const gamepad = Symbol("GamepadEvent.gamepad");
  dart.setFieldSignature(html$.GamepadEvent, () => ({
    __proto__: dart.getFields(html$.GamepadEvent.__proto__),
    [$gamepad]: dart.finalFieldType(html$.Gamepad)
  }));
  dart.registerExtension("GamepadEvent", html$.GamepadEvent);
  html$.GamepadPose = class GamepadPose extends _interceptors.Interceptor {
    get [$angularAcceleration]() {
      return this.angularAcceleration;
    }
    get [$angularVelocity]() {
      return this.angularVelocity;
    }
    get [$hasOrientation]() {
      return this.hasOrientation;
    }
    get [$hasPosition]() {
      return this.hasPosition;
    }
    get [$linearAcceleration]() {
      return this.linearAcceleration;
    }
    get [$linearVelocity]() {
      return this.linearVelocity;
    }
    get [$orientation]() {
      return this.orientation;
    }
    get [$position]() {
      return this.position;
    }
  };
  dart.addTypeTests(html$.GamepadPose);
  const angularAcceleration = Symbol("GamepadPose.angularAcceleration");
  const angularVelocity = Symbol("GamepadPose.angularVelocity");
  const hasOrientation = Symbol("GamepadPose.hasOrientation");
  const hasPosition = Symbol("GamepadPose.hasPosition");
  const linearAcceleration = Symbol("GamepadPose.linearAcceleration");
  const linearVelocity = Symbol("GamepadPose.linearVelocity");
  const orientation$ = Symbol("GamepadPose.orientation");
  const position$ = Symbol("GamepadPose.position");
  dart.setFieldSignature(html$.GamepadPose, () => ({
    __proto__: dart.getFields(html$.GamepadPose.__proto__),
    [$angularAcceleration]: dart.finalFieldType(typed_data.Float32List),
    [$angularVelocity]: dart.finalFieldType(typed_data.Float32List),
    [$hasOrientation]: dart.finalFieldType(core.bool),
    [$hasPosition]: dart.finalFieldType(core.bool),
    [$linearAcceleration]: dart.finalFieldType(typed_data.Float32List),
    [$linearVelocity]: dart.finalFieldType(typed_data.Float32List),
    [$orientation]: dart.finalFieldType(typed_data.Float32List),
    [$position]: dart.finalFieldType(typed_data.Float32List)
  }));
  dart.registerExtension("GamepadPose", html$.GamepadPose);
  const _ensurePosition = Symbol('_ensurePosition');
  const _getCurrentPosition = Symbol('_getCurrentPosition');
  const _watchPosition = Symbol('_watchPosition');
  const _clearWatch = Symbol('_clearWatch');
  const _getCurrentPosition_1 = Symbol('_getCurrentPosition_1');
  const _getCurrentPosition_2 = Symbol('_getCurrentPosition_2');
  const _getCurrentPosition_3 = Symbol('_getCurrentPosition_3');
  const _watchPosition_1 = Symbol('_watchPosition_1');
  const _watchPosition_2 = Symbol('_watchPosition_2');
  const _watchPosition_3 = Symbol('_watchPosition_3');
  html$.Geolocation = class Geolocation extends _interceptors.Interceptor {
    [$getCurrentPosition](opts) {
      let enableHighAccuracy = opts && 'enableHighAccuracy' in opts ? opts.enableHighAccuracy : null;
      let timeout = opts && 'timeout' in opts ? opts.timeout : null;
      let maximumAge = opts && 'maximumAge' in opts ? opts.maximumAge : null;
      let options = new _js_helper.LinkedMap.new();
      if (enableHighAccuracy != null) {
        options[$_set]("enableHighAccuracy", enableHighAccuracy);
      }
      if (timeout != null) {
        options[$_set]("timeout", timeout.inMilliseconds);
      }
      if (maximumAge != null) {
        options[$_set]("maximumAge", maximumAge.inMilliseconds);
      }
      let completer = CompleterOfGeoposition().new();
      try {
        this[_getCurrentPosition](dart.fn(position => {
          completer.complete(this[_ensurePosition](position));
        }, GeopositionToNull()), dart.fn(error => {
          completer.completeError(error);
        }, PositionErrorToNull()), options);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let stacktrace = dart.stackTrace(e$);
        completer.completeError(e, stacktrace);
      }
      return completer.future;
    }
    [$watchPosition](opts) {
      let enableHighAccuracy = opts && 'enableHighAccuracy' in opts ? opts.enableHighAccuracy : null;
      let timeout = opts && 'timeout' in opts ? opts.timeout : null;
      let maximumAge = opts && 'maximumAge' in opts ? opts.maximumAge : null;
      let options = new _js_helper.LinkedMap.new();
      if (enableHighAccuracy != null) {
        options[$_set]("enableHighAccuracy", enableHighAccuracy);
      }
      if (timeout != null) {
        options[$_set]("timeout", timeout.inMilliseconds);
      }
      if (maximumAge != null) {
        options[$_set]("maximumAge", maximumAge.inMilliseconds);
      }
      let watchId = null;
      let controller = null;
      controller = StreamControllerOfGeoposition().new({sync: true, onListen: dart.fn(() => {
          if (!(watchId == null)) dart.assertFailed();
          watchId = this[_watchPosition](dart.fn(position => {
            controller.add(this[_ensurePosition](position));
          }, GeopositionToNull()), dart.fn(error => {
            controller.addError(error);
          }, PositionErrorToNull()), options);
        }, VoidToNull()), onCancel: dart.fn(() => {
          if (!(watchId != null)) dart.assertFailed();
          this[_clearWatch](watchId);
        }, VoidToNull())});
      return controller.stream;
    }
    [_ensurePosition](domPosition) {
      try {
        if (html$.Geoposition.is(domPosition)) {
          return domPosition;
        }
      } catch (e$) {
        let e = dart.getThrown(e$);
      }
      return new html$._GeopositionWrapper.new(domPosition);
    }
    [_clearWatch](...args) {
      return this.clearWatch.apply(this, args);
    }
    [_getCurrentPosition](successCallback, errorCallback, options) {
      if (errorCallback === void 0) errorCallback = null;
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        this[_getCurrentPosition_1](successCallback, errorCallback, options_1);
        return;
      }
      if (errorCallback != null) {
        this[_getCurrentPosition_2](successCallback, errorCallback);
        return;
      }
      this[_getCurrentPosition_3](successCallback);
      return;
    }
    [_getCurrentPosition_1](...args) {
      return this.getCurrentPosition.apply(this, args);
    }
    [_getCurrentPosition_2](...args) {
      return this.getCurrentPosition.apply(this, args);
    }
    [_getCurrentPosition_3](...args) {
      return this.getCurrentPosition.apply(this, args);
    }
    [_watchPosition](successCallback, errorCallback, options) {
      if (errorCallback === void 0) errorCallback = null;
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return this[_watchPosition_1](successCallback, errorCallback, options_1);
      }
      if (errorCallback != null) {
        return this[_watchPosition_2](successCallback, errorCallback);
      }
      return this[_watchPosition_3](successCallback);
    }
    [_watchPosition_1](...args) {
      return this.watchPosition.apply(this, args);
    }
    [_watchPosition_2](...args) {
      return this.watchPosition.apply(this, args);
    }
    [_watchPosition_3](...args) {
      return this.watchPosition.apply(this, args);
    }
  };
  dart.addTypeTests(html$.Geolocation);
  dart.setMethodSignature(html$.Geolocation, () => ({
    __proto__: dart.getMethods(html$.Geolocation.__proto__),
    [$getCurrentPosition]: dart.fnType(async.Future$(html$.Geoposition), [], {enableHighAccuracy: core.bool, timeout: core.Duration, maximumAge: core.Duration}),
    [$watchPosition]: dart.fnType(async.Stream$(html$.Geoposition), [], {enableHighAccuracy: core.bool, timeout: core.Duration, maximumAge: core.Duration}),
    [_ensurePosition]: dart.fnType(html$.Geoposition, [dart.dynamic]),
    [_clearWatch]: dart.fnType(dart.void, [core.int]),
    [_getCurrentPosition]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.Geoposition])], [dart.fnType(dart.void, [html$.PositionError]), core.Map]),
    [_getCurrentPosition_1]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.Geoposition]), dart.fnType(dart.void, [html$.PositionError]), dart.dynamic]),
    [_getCurrentPosition_2]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.Geoposition]), dart.fnType(dart.void, [html$.PositionError])]),
    [_getCurrentPosition_3]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.Geoposition])]),
    [_watchPosition]: dart.fnType(core.int, [dart.fnType(dart.void, [html$.Geoposition])], [dart.fnType(dart.void, [html$.PositionError]), core.Map]),
    [_watchPosition_1]: dart.fnType(core.int, [dart.fnType(dart.void, [html$.Geoposition]), dart.fnType(dart.void, [html$.PositionError]), dart.dynamic]),
    [_watchPosition_2]: dart.fnType(core.int, [dart.fnType(dart.void, [html$.Geoposition]), dart.fnType(dart.void, [html$.PositionError])]),
    [_watchPosition_3]: dart.fnType(core.int, [dart.fnType(dart.void, [html$.Geoposition])])
  }));
  dart.registerExtension("Geolocation", html$.Geolocation);
  html$._GeopositionWrapper = class _GeopositionWrapper extends core.Object {
    get coords() {
      return this[_ptr].coords;
    }
    get timestamp() {
      return this[_ptr].timestamp;
    }
  };
  (html$._GeopositionWrapper.new = function(ptr) {
    this[_ptr] = ptr;
  }).prototype = html$._GeopositionWrapper.prototype;
  dart.addTypeTests(html$._GeopositionWrapper);
  html$._GeopositionWrapper[dart.implements] = () => [html$.Geoposition];
  dart.setGetterSignature(html$._GeopositionWrapper, () => ({
    __proto__: dart.getGetters(html$._GeopositionWrapper.__proto__),
    coords: html$.Coordinates,
    [$coords]: html$.Coordinates,
    timestamp: core.int,
    [$timestamp]: core.int
  }));
  dart.setFieldSignature(html$._GeopositionWrapper, () => ({
    __proto__: dart.getFields(html$._GeopositionWrapper.__proto__),
    [_ptr]: dart.fieldType(dart.dynamic)
  }));
  dart.defineExtensionAccessors(html$._GeopositionWrapper, ['coords', 'timestamp']);
  html$.Geoposition = class Geoposition extends _interceptors.Interceptor {
    get [$coords]() {
      return this.coords;
    }
    get [$timestamp]() {
      return this.timestamp;
    }
  };
  dart.addTypeTests(html$.Geoposition);
  const coords$ = Symbol("Geoposition.coords");
  const timestamp$0 = Symbol("Geoposition.timestamp");
  dart.setFieldSignature(html$.Geoposition, () => ({
    __proto__: dart.getFields(html$.Geoposition.__proto__),
    [$coords]: dart.finalFieldType(html$.Coordinates),
    [$timestamp]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("Position", html$.Geoposition);
  html$.GlobalEventHandlers = class GlobalEventHandlers extends core.Object {
    get onAbort() {
      return html$.GlobalEventHandlers.abortEvent.forTarget(this);
    }
    get onBlur() {
      return html$.GlobalEventHandlers.blurEvent.forTarget(this);
    }
    get onCanPlay() {
      return html$.GlobalEventHandlers.canPlayEvent.forTarget(this);
    }
    get onCanPlayThrough() {
      return html$.GlobalEventHandlers.canPlayThroughEvent.forTarget(this);
    }
    get onChange() {
      return html$.GlobalEventHandlers.changeEvent.forTarget(this);
    }
    get onClick() {
      return html$.GlobalEventHandlers.clickEvent.forTarget(this);
    }
    get onContextMenu() {
      return html$.GlobalEventHandlers.contextMenuEvent.forTarget(this);
    }
    get onDoubleClick() {
      return html$.GlobalEventHandlers.doubleClickEvent.forTarget(this);
    }
    get onDrag() {
      return html$.GlobalEventHandlers.dragEvent.forTarget(this);
    }
    get onDragEnd() {
      return html$.GlobalEventHandlers.dragEndEvent.forTarget(this);
    }
    get onDragEnter() {
      return html$.GlobalEventHandlers.dragEnterEvent.forTarget(this);
    }
    get onDragLeave() {
      return html$.GlobalEventHandlers.dragLeaveEvent.forTarget(this);
    }
    get onDragOver() {
      return html$.GlobalEventHandlers.dragOverEvent.forTarget(this);
    }
    get onDragStart() {
      return html$.GlobalEventHandlers.dragStartEvent.forTarget(this);
    }
    get onDrop() {
      return html$.GlobalEventHandlers.dropEvent.forTarget(this);
    }
    get onDurationChange() {
      return html$.GlobalEventHandlers.durationChangeEvent.forTarget(this);
    }
    get onEmptied() {
      return html$.GlobalEventHandlers.emptiedEvent.forTarget(this);
    }
    get onEnded() {
      return html$.GlobalEventHandlers.endedEvent.forTarget(this);
    }
    get onError() {
      return html$.GlobalEventHandlers.errorEvent.forTarget(this);
    }
    get onFocus() {
      return html$.GlobalEventHandlers.focusEvent.forTarget(this);
    }
    get onInput() {
      return html$.GlobalEventHandlers.inputEvent.forTarget(this);
    }
    get onInvalid() {
      return html$.GlobalEventHandlers.invalidEvent.forTarget(this);
    }
    get onKeyDown() {
      return html$.GlobalEventHandlers.keyDownEvent.forTarget(this);
    }
    get onKeyPress() {
      return html$.GlobalEventHandlers.keyPressEvent.forTarget(this);
    }
    get onKeyUp() {
      return html$.GlobalEventHandlers.keyUpEvent.forTarget(this);
    }
    get onLoad() {
      return html$.GlobalEventHandlers.loadEvent.forTarget(this);
    }
    get onLoadedData() {
      return html$.GlobalEventHandlers.loadedDataEvent.forTarget(this);
    }
    get onLoadedMetadata() {
      return html$.GlobalEventHandlers.loadedMetadataEvent.forTarget(this);
    }
    get onMouseDown() {
      return html$.GlobalEventHandlers.mouseDownEvent.forTarget(this);
    }
    get onMouseEnter() {
      return html$.GlobalEventHandlers.mouseEnterEvent.forTarget(this);
    }
    get onMouseLeave() {
      return html$.GlobalEventHandlers.mouseLeaveEvent.forTarget(this);
    }
    get onMouseMove() {
      return html$.GlobalEventHandlers.mouseMoveEvent.forTarget(this);
    }
    get onMouseOut() {
      return html$.GlobalEventHandlers.mouseOutEvent.forTarget(this);
    }
    get onMouseOver() {
      return html$.GlobalEventHandlers.mouseOverEvent.forTarget(this);
    }
    get onMouseUp() {
      return html$.GlobalEventHandlers.mouseUpEvent.forTarget(this);
    }
    get onMouseWheel() {
      return html$.GlobalEventHandlers.mouseWheelEvent.forTarget(this);
    }
    get onPause() {
      return html$.GlobalEventHandlers.pauseEvent.forTarget(this);
    }
    get onPlay() {
      return html$.GlobalEventHandlers.playEvent.forTarget(this);
    }
    get onPlaying() {
      return html$.GlobalEventHandlers.playingEvent.forTarget(this);
    }
    get onRateChange() {
      return html$.GlobalEventHandlers.rateChangeEvent.forTarget(this);
    }
    get onReset() {
      return html$.GlobalEventHandlers.resetEvent.forTarget(this);
    }
    get onResize() {
      return html$.GlobalEventHandlers.resizeEvent.forTarget(this);
    }
    get onScroll() {
      return html$.GlobalEventHandlers.scrollEvent.forTarget(this);
    }
    get onSeeked() {
      return html$.GlobalEventHandlers.seekedEvent.forTarget(this);
    }
    get onSeeking() {
      return html$.GlobalEventHandlers.seekingEvent.forTarget(this);
    }
    get onSelect() {
      return html$.GlobalEventHandlers.selectEvent.forTarget(this);
    }
    get onStalled() {
      return html$.GlobalEventHandlers.stalledEvent.forTarget(this);
    }
    get onSubmit() {
      return html$.GlobalEventHandlers.submitEvent.forTarget(this);
    }
    get onSuspend() {
      return html$.GlobalEventHandlers.suspendEvent.forTarget(this);
    }
    get onTimeUpdate() {
      return html$.GlobalEventHandlers.timeUpdateEvent.forTarget(this);
    }
    get onTouchCancel() {
      return html$.GlobalEventHandlers.touchCancelEvent.forTarget(this);
    }
    get onTouchEnd() {
      return html$.GlobalEventHandlers.touchEndEvent.forTarget(this);
    }
    get onTouchMove() {
      return html$.GlobalEventHandlers.touchMoveEvent.forTarget(this);
    }
    get onTouchStart() {
      return html$.GlobalEventHandlers.touchStartEvent.forTarget(this);
    }
    get onVolumeChange() {
      return html$.GlobalEventHandlers.volumeChangeEvent.forTarget(this);
    }
    get onWaiting() {
      return html$.GlobalEventHandlers.waitingEvent.forTarget(this);
    }
    get onWheel() {
      return html$.GlobalEventHandlers.wheelEvent.forTarget(this);
    }
  };
  (html$.GlobalEventHandlers[dart.mixinNew] = function() {
  }).prototype = html$.GlobalEventHandlers.prototype;
  dart.addTypeTests(html$.GlobalEventHandlers);
  html$.GlobalEventHandlers[dart.implements] = () => [html$.EventTarget];
  dart.setGetterSignature(html$.GlobalEventHandlers, () => ({
    __proto__: dart.getGetters(html$.GlobalEventHandlers.__proto__),
    onAbort: async.Stream$(html$.Event),
    [$onAbort]: async.Stream$(html$.Event),
    onBlur: async.Stream$(html$.Event),
    [$onBlur]: async.Stream$(html$.Event),
    onCanPlay: async.Stream$(html$.Event),
    [$onCanPlay]: async.Stream$(html$.Event),
    onCanPlayThrough: async.Stream$(html$.Event),
    [$onCanPlayThrough]: async.Stream$(html$.Event),
    onChange: async.Stream$(html$.Event),
    [$onChange]: async.Stream$(html$.Event),
    onClick: async.Stream$(html$.MouseEvent),
    [$onClick]: async.Stream$(html$.MouseEvent),
    onContextMenu: async.Stream$(html$.MouseEvent),
    [$onContextMenu]: async.Stream$(html$.MouseEvent),
    onDoubleClick: async.Stream$(html$.Event),
    [$onDoubleClick]: async.Stream$(html$.Event),
    onDrag: async.Stream$(html$.MouseEvent),
    [$onDrag]: async.Stream$(html$.MouseEvent),
    onDragEnd: async.Stream$(html$.MouseEvent),
    [$onDragEnd]: async.Stream$(html$.MouseEvent),
    onDragEnter: async.Stream$(html$.MouseEvent),
    [$onDragEnter]: async.Stream$(html$.MouseEvent),
    onDragLeave: async.Stream$(html$.MouseEvent),
    [$onDragLeave]: async.Stream$(html$.MouseEvent),
    onDragOver: async.Stream$(html$.MouseEvent),
    [$onDragOver]: async.Stream$(html$.MouseEvent),
    onDragStart: async.Stream$(html$.MouseEvent),
    [$onDragStart]: async.Stream$(html$.MouseEvent),
    onDrop: async.Stream$(html$.MouseEvent),
    [$onDrop]: async.Stream$(html$.MouseEvent),
    onDurationChange: async.Stream$(html$.Event),
    [$onDurationChange]: async.Stream$(html$.Event),
    onEmptied: async.Stream$(html$.Event),
    [$onEmptied]: async.Stream$(html$.Event),
    onEnded: async.Stream$(html$.Event),
    [$onEnded]: async.Stream$(html$.Event),
    onError: async.Stream$(html$.Event),
    [$onError]: async.Stream$(html$.Event),
    onFocus: async.Stream$(html$.Event),
    [$onFocus]: async.Stream$(html$.Event),
    onInput: async.Stream$(html$.Event),
    [$onInput]: async.Stream$(html$.Event),
    onInvalid: async.Stream$(html$.Event),
    [$onInvalid]: async.Stream$(html$.Event),
    onKeyDown: async.Stream$(html$.KeyboardEvent),
    [$onKeyDown]: async.Stream$(html$.KeyboardEvent),
    onKeyPress: async.Stream$(html$.KeyboardEvent),
    [$onKeyPress]: async.Stream$(html$.KeyboardEvent),
    onKeyUp: async.Stream$(html$.KeyboardEvent),
    [$onKeyUp]: async.Stream$(html$.KeyboardEvent),
    onLoad: async.Stream$(html$.Event),
    [$onLoad]: async.Stream$(html$.Event),
    onLoadedData: async.Stream$(html$.Event),
    [$onLoadedData]: async.Stream$(html$.Event),
    onLoadedMetadata: async.Stream$(html$.Event),
    [$onLoadedMetadata]: async.Stream$(html$.Event),
    onMouseDown: async.Stream$(html$.MouseEvent),
    [$onMouseDown]: async.Stream$(html$.MouseEvent),
    onMouseEnter: async.Stream$(html$.MouseEvent),
    [$onMouseEnter]: async.Stream$(html$.MouseEvent),
    onMouseLeave: async.Stream$(html$.MouseEvent),
    [$onMouseLeave]: async.Stream$(html$.MouseEvent),
    onMouseMove: async.Stream$(html$.MouseEvent),
    [$onMouseMove]: async.Stream$(html$.MouseEvent),
    onMouseOut: async.Stream$(html$.MouseEvent),
    [$onMouseOut]: async.Stream$(html$.MouseEvent),
    onMouseOver: async.Stream$(html$.MouseEvent),
    [$onMouseOver]: async.Stream$(html$.MouseEvent),
    onMouseUp: async.Stream$(html$.MouseEvent),
    [$onMouseUp]: async.Stream$(html$.MouseEvent),
    onMouseWheel: async.Stream$(html$.WheelEvent),
    [$onMouseWheel]: async.Stream$(html$.WheelEvent),
    onPause: async.Stream$(html$.Event),
    [$onPause]: async.Stream$(html$.Event),
    onPlay: async.Stream$(html$.Event),
    [$onPlay]: async.Stream$(html$.Event),
    onPlaying: async.Stream$(html$.Event),
    [$onPlaying]: async.Stream$(html$.Event),
    onRateChange: async.Stream$(html$.Event),
    [$onRateChange]: async.Stream$(html$.Event),
    onReset: async.Stream$(html$.Event),
    [$onReset]: async.Stream$(html$.Event),
    onResize: async.Stream$(html$.Event),
    [$onResize]: async.Stream$(html$.Event),
    onScroll: async.Stream$(html$.Event),
    [$onScroll]: async.Stream$(html$.Event),
    onSeeked: async.Stream$(html$.Event),
    [$onSeeked]: async.Stream$(html$.Event),
    onSeeking: async.Stream$(html$.Event),
    [$onSeeking]: async.Stream$(html$.Event),
    onSelect: async.Stream$(html$.Event),
    [$onSelect]: async.Stream$(html$.Event),
    onStalled: async.Stream$(html$.Event),
    [$onStalled]: async.Stream$(html$.Event),
    onSubmit: async.Stream$(html$.Event),
    [$onSubmit]: async.Stream$(html$.Event),
    onSuspend: async.Stream$(html$.Event),
    [$onSuspend]: async.Stream$(html$.Event),
    onTimeUpdate: async.Stream$(html$.Event),
    [$onTimeUpdate]: async.Stream$(html$.Event),
    onTouchCancel: async.Stream$(html$.TouchEvent),
    [$onTouchCancel]: async.Stream$(html$.TouchEvent),
    onTouchEnd: async.Stream$(html$.TouchEvent),
    [$onTouchEnd]: async.Stream$(html$.TouchEvent),
    onTouchMove: async.Stream$(html$.TouchEvent),
    [$onTouchMove]: async.Stream$(html$.TouchEvent),
    onTouchStart: async.Stream$(html$.TouchEvent),
    [$onTouchStart]: async.Stream$(html$.TouchEvent),
    onVolumeChange: async.Stream$(html$.Event),
    [$onVolumeChange]: async.Stream$(html$.Event),
    onWaiting: async.Stream$(html$.Event),
    [$onWaiting]: async.Stream$(html$.Event),
    onWheel: async.Stream$(html$.WheelEvent),
    [$onWheel]: async.Stream$(html$.WheelEvent)
  }));
  dart.defineExtensionAccessors(html$.GlobalEventHandlers, [
    'onAbort',
    'onBlur',
    'onCanPlay',
    'onCanPlayThrough',
    'onChange',
    'onClick',
    'onContextMenu',
    'onDoubleClick',
    'onDrag',
    'onDragEnd',
    'onDragEnter',
    'onDragLeave',
    'onDragOver',
    'onDragStart',
    'onDrop',
    'onDurationChange',
    'onEmptied',
    'onEnded',
    'onError',
    'onFocus',
    'onInput',
    'onInvalid',
    'onKeyDown',
    'onKeyPress',
    'onKeyUp',
    'onLoad',
    'onLoadedData',
    'onLoadedMetadata',
    'onMouseDown',
    'onMouseEnter',
    'onMouseLeave',
    'onMouseMove',
    'onMouseOut',
    'onMouseOver',
    'onMouseUp',
    'onMouseWheel',
    'onPause',
    'onPlay',
    'onPlaying',
    'onRateChange',
    'onReset',
    'onResize',
    'onScroll',
    'onSeeked',
    'onSeeking',
    'onSelect',
    'onStalled',
    'onSubmit',
    'onSuspend',
    'onTimeUpdate',
    'onTouchCancel',
    'onTouchEnd',
    'onTouchMove',
    'onTouchStart',
    'onVolumeChange',
    'onWaiting',
    'onWheel'
  ]);
  dart.defineLazy(html$.GlobalEventHandlers, {
    /*html$.GlobalEventHandlers.abortEvent*/get abortEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("abort"));
    },
    /*html$.GlobalEventHandlers.blurEvent*/get blurEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("blur"));
    },
    /*html$.GlobalEventHandlers.canPlayEvent*/get canPlayEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("canplay"));
    },
    /*html$.GlobalEventHandlers.canPlayThroughEvent*/get canPlayThroughEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("canplaythrough"));
    },
    /*html$.GlobalEventHandlers.changeEvent*/get changeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("change"));
    },
    /*html$.GlobalEventHandlers.clickEvent*/get clickEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("click"));
    },
    /*html$.GlobalEventHandlers.contextMenuEvent*/get contextMenuEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("contextmenu"));
    },
    /*html$.GlobalEventHandlers.doubleClickEvent*/get doubleClickEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("dblclick"));
    },
    /*html$.GlobalEventHandlers.dragEvent*/get dragEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("drag"));
    },
    /*html$.GlobalEventHandlers.dragEndEvent*/get dragEndEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragend"));
    },
    /*html$.GlobalEventHandlers.dragEnterEvent*/get dragEnterEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragenter"));
    },
    /*html$.GlobalEventHandlers.dragLeaveEvent*/get dragLeaveEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragleave"));
    },
    /*html$.GlobalEventHandlers.dragOverEvent*/get dragOverEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragover"));
    },
    /*html$.GlobalEventHandlers.dragStartEvent*/get dragStartEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragstart"));
    },
    /*html$.GlobalEventHandlers.dropEvent*/get dropEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("drop"));
    },
    /*html$.GlobalEventHandlers.durationChangeEvent*/get durationChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("durationchange"));
    },
    /*html$.GlobalEventHandlers.emptiedEvent*/get emptiedEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("emptied"));
    },
    /*html$.GlobalEventHandlers.endedEvent*/get endedEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("ended"));
    },
    /*html$.GlobalEventHandlers.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    },
    /*html$.GlobalEventHandlers.focusEvent*/get focusEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("focus"));
    },
    /*html$.GlobalEventHandlers.inputEvent*/get inputEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("input"));
    },
    /*html$.GlobalEventHandlers.invalidEvent*/get invalidEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("invalid"));
    },
    /*html$.GlobalEventHandlers.keyDownEvent*/get keyDownEvent() {
      return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keydown"));
    },
    /*html$.GlobalEventHandlers.keyPressEvent*/get keyPressEvent() {
      return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keypress"));
    },
    /*html$.GlobalEventHandlers.keyUpEvent*/get keyUpEvent() {
      return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keyup"));
    },
    /*html$.GlobalEventHandlers.loadEvent*/get loadEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("load"));
    },
    /*html$.GlobalEventHandlers.loadedDataEvent*/get loadedDataEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("loadeddata"));
    },
    /*html$.GlobalEventHandlers.loadedMetadataEvent*/get loadedMetadataEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("loadedmetadata"));
    },
    /*html$.GlobalEventHandlers.mouseDownEvent*/get mouseDownEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mousedown"));
    },
    /*html$.GlobalEventHandlers.mouseEnterEvent*/get mouseEnterEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseenter"));
    },
    /*html$.GlobalEventHandlers.mouseLeaveEvent*/get mouseLeaveEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseleave"));
    },
    /*html$.GlobalEventHandlers.mouseMoveEvent*/get mouseMoveEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mousemove"));
    },
    /*html$.GlobalEventHandlers.mouseOutEvent*/get mouseOutEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseout"));
    },
    /*html$.GlobalEventHandlers.mouseOverEvent*/get mouseOverEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseover"));
    },
    /*html$.GlobalEventHandlers.mouseUpEvent*/get mouseUpEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseup"));
    },
    /*html$.GlobalEventHandlers.mouseWheelEvent*/get mouseWheelEvent() {
      return dart.const(new (EventStreamProviderOfWheelEvent()).new("mousewheel"));
    },
    /*html$.GlobalEventHandlers.pauseEvent*/get pauseEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("pause"));
    },
    /*html$.GlobalEventHandlers.playEvent*/get playEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("play"));
    },
    /*html$.GlobalEventHandlers.playingEvent*/get playingEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("playing"));
    },
    /*html$.GlobalEventHandlers.rateChangeEvent*/get rateChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("ratechange"));
    },
    /*html$.GlobalEventHandlers.resetEvent*/get resetEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("reset"));
    },
    /*html$.GlobalEventHandlers.resizeEvent*/get resizeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("resize"));
    },
    /*html$.GlobalEventHandlers.scrollEvent*/get scrollEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("scroll"));
    },
    /*html$.GlobalEventHandlers.seekedEvent*/get seekedEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("seeked"));
    },
    /*html$.GlobalEventHandlers.seekingEvent*/get seekingEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("seeking"));
    },
    /*html$.GlobalEventHandlers.selectEvent*/get selectEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("select"));
    },
    /*html$.GlobalEventHandlers.stalledEvent*/get stalledEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("stalled"));
    },
    /*html$.GlobalEventHandlers.submitEvent*/get submitEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("submit"));
    },
    /*html$.GlobalEventHandlers.suspendEvent*/get suspendEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("suspend"));
    },
    /*html$.GlobalEventHandlers.timeUpdateEvent*/get timeUpdateEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("timeupdate"));
    },
    /*html$.GlobalEventHandlers.touchCancelEvent*/get touchCancelEvent() {
      return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchcancel"));
    },
    /*html$.GlobalEventHandlers.touchEndEvent*/get touchEndEvent() {
      return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchend"));
    },
    /*html$.GlobalEventHandlers.touchMoveEvent*/get touchMoveEvent() {
      return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchmove"));
    },
    /*html$.GlobalEventHandlers.touchStartEvent*/get touchStartEvent() {
      return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchstart"));
    },
    /*html$.GlobalEventHandlers.volumeChangeEvent*/get volumeChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("volumechange"));
    },
    /*html$.GlobalEventHandlers.waitingEvent*/get waitingEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("waiting"));
    },
    /*html$.GlobalEventHandlers.wheelEvent*/get wheelEvent() {
      return dart.const(new (EventStreamProviderOfWheelEvent()).new("wheel"));
    }
  });
  html$.Gyroscope = class Gyroscope$ extends html$.Sensor {
    static new(sensorOptions) {
      if (sensorOptions === void 0) sensorOptions = null;
      if (sensorOptions != null) {
        let sensorOptions_1 = html_common.convertDartToNative_Dictionary(sensorOptions);
        return html$.Gyroscope._create_1(sensorOptions_1);
      }
      return html$.Gyroscope._create_2();
    }
    static _create_1(sensorOptions) {
      return new Gyroscope(sensorOptions);
    }
    static _create_2() {
      return new Gyroscope();
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
    get [$z]() {
      return this.z;
    }
  };
  dart.addTypeTests(html$.Gyroscope);
  const x$4 = Symbol("Gyroscope.x");
  const y$4 = Symbol("Gyroscope.y");
  const z$3 = Symbol("Gyroscope.z");
  dart.setFieldSignature(html$.Gyroscope, () => ({
    __proto__: dart.getFields(html$.Gyroscope.__proto__),
    [$x]: dart.finalFieldType(core.num),
    [$y]: dart.finalFieldType(core.num),
    [$z]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("Gyroscope", html$.Gyroscope);
  html$.HRElement = class HRElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("hr");
    }
    get [$color]() {
      return this.color;
    }
    set [$color](value) {
      this.color = value;
    }
  };
  (html$.HRElement.created = function() {
    this[color] = null;
    html$.HRElement.__proto__.created.call(this);
  }).prototype = html$.HRElement.prototype;
  dart.addTypeTests(html$.HRElement);
  const color = Symbol("HRElement.color");
  dart.setFieldSignature(html$.HRElement, () => ({
    __proto__: dart.getFields(html$.HRElement.__proto__),
    [$color]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLHRElement", html$.HRElement);
  html$.HashChangeEvent = class HashChangeEvent$ extends html$.Event {
    static new(type, opts) {
      let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
      let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
      let oldUrl = opts && 'oldUrl' in opts ? opts.oldUrl : null;
      let newUrl = opts && 'newUrl' in opts ? opts.newUrl : null;
      let options = new (IdentityMapOfString$Object()).from(["canBubble", canBubble, "cancelable", cancelable, "oldURL", oldUrl, "newURL", newUrl]);
      return new HashChangeEvent(type, html_common.convertDartToNative_Dictionary(options));
    }
    static __(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.HashChangeEvent._create_1(type, eventInitDict_1);
      }
      return html$.HashChangeEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new HashChangeEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new HashChangeEvent(type);
    }
    static get supported() {
      return html_common.Device.isEventTypeSupported("HashChangeEvent");
    }
    get [$newUrl]() {
      return this.newURL;
    }
    get [$oldUrl]() {
      return this.oldURL;
    }
  };
  dart.addTypeTests(html$.HashChangeEvent);
  const newUrl = Symbol("HashChangeEvent.newUrl");
  const oldUrl = Symbol("HashChangeEvent.oldUrl");
  dart.setFieldSignature(html$.HashChangeEvent, () => ({
    __proto__: dart.getFields(html$.HashChangeEvent.__proto__),
    [$newUrl]: dart.finalFieldType(core.String),
    [$oldUrl]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("HashChangeEvent", html$.HashChangeEvent);
  html$.HeadElement = class HeadElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("head");
    }
  };
  (html$.HeadElement.created = function() {
    html$.HeadElement.__proto__.created.call(this);
  }).prototype = html$.HeadElement.prototype;
  dart.addTypeTests(html$.HeadElement);
  dart.registerExtension("HTMLHeadElement", html$.HeadElement);
  html$.Headers = class Headers$ extends _interceptors.Interceptor {
    static new(init) {
      if (init === void 0) init = null;
      if (init != null) {
        return html$.Headers._create_1(init);
      }
      return html$.Headers._create_2();
    }
    static _create_1(init) {
      return new Headers(init);
    }
    static _create_2() {
      return new Headers();
    }
  };
  dart.addTypeTests(html$.Headers);
  dart.registerExtension("Headers", html$.Headers);
  html$.HeadingElement = class HeadingElement extends html$.HtmlElement {
    static h1() {
      return html$.document.createElement("h1");
    }
    static h2() {
      return html$.document.createElement("h2");
    }
    static h3() {
      return html$.document.createElement("h3");
    }
    static h4() {
      return html$.document.createElement("h4");
    }
    static h5() {
      return html$.document.createElement("h5");
    }
    static h6() {
      return html$.document.createElement("h6");
    }
  };
  (html$.HeadingElement.created = function() {
    html$.HeadingElement.__proto__.created.call(this);
  }).prototype = html$.HeadingElement.prototype;
  dart.addTypeTests(html$.HeadingElement);
  dart.registerExtension("HTMLHeadingElement", html$.HeadingElement);
  const _get_state = Symbol('_get_state');
  const _pushState_1 = Symbol('_pushState_1');
  const _replaceState_1 = Symbol('_replaceState_1');
  html$.History = class History extends _interceptors.Interceptor {
    static get supportsState() {
      return !!window.history.pushState;
    }
    get [$length]() {
      return this.length;
    }
    get [$scrollRestoration]() {
      return this.scrollRestoration;
    }
    set [$scrollRestoration](value) {
      this.scrollRestoration = value;
    }
    get [$state]() {
      return html_common.convertNativeToDart_SerializedScriptValue(this[_get_state]);
    }
    get [_get_state]() {
      return this.state;
    }
    [$back](...args) {
      return this.back.apply(this, args);
    }
    [$forward](...args) {
      return this.forward.apply(this, args);
    }
    [$go](...args) {
      return this.go.apply(this, args);
    }
    [$pushState](data, title, url) {
      let data_1 = html_common.convertDartToNative_SerializedScriptValue(data);
      this[_pushState_1](data_1, title, url);
      return;
    }
    [_pushState_1](...args) {
      return this.pushState.apply(this, args);
    }
    [$replaceState](data, title, url) {
      let data_1 = html_common.convertDartToNative_SerializedScriptValue(data);
      this[_replaceState_1](data_1, title, url);
      return;
    }
    [_replaceState_1](...args) {
      return this.replaceState.apply(this, args);
    }
  };
  dart.addTypeTests(html$.History);
  const length$9 = Symbol("History.length");
  const scrollRestoration = Symbol("History.scrollRestoration");
  html$.History[dart.implements] = () => [html$.HistoryBase];
  dart.setMethodSignature(html$.History, () => ({
    __proto__: dart.getMethods(html$.History.__proto__),
    [$back]: dart.fnType(dart.void, []),
    [$forward]: dart.fnType(dart.void, []),
    [$go]: dart.fnType(dart.void, [], [core.int]),
    [$pushState]: dart.fnType(dart.void, [dart.dynamic, core.String, core.String]),
    [_pushState_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
    [$replaceState]: dart.fnType(dart.void, [dart.dynamic, core.String, core.String]),
    [_replaceState_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic])
  }));
  dart.setGetterSignature(html$.History, () => ({
    __proto__: dart.getGetters(html$.History.__proto__),
    [$state]: dart.dynamic
  }));
  dart.setFieldSignature(html$.History, () => ({
    __proto__: dart.getFields(html$.History.__proto__),
    [$length]: dart.finalFieldType(core.int),
    [$scrollRestoration]: dart.fieldType(core.String),
    [_get_state]: dart.finalFieldType(dart.dynamic)
  }));
  dart.registerExtension("History", html$.History);
  const Interceptor_ListMixin$$1 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$1.new = function() {
    Interceptor_ListMixin$$1.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$1.prototype;
  dart.applyMixin(Interceptor_ListMixin$$1, collection.ListMixin$(html$.Node));
  const Interceptor_ImmutableListMixin$$1 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$1 {};
  (Interceptor_ImmutableListMixin$$1.new = function() {
    Interceptor_ImmutableListMixin$$1.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$1.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$1, html$.ImmutableListMixin$(html$.Node));
  html$.HtmlCollection = class HtmlCollection extends Interceptor_ImmutableListMixin$$1 {
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[index];
    }
    [$_set](index, value) {
      html$.Node._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
    [$namedItem](...args) {
      return this.namedItem.apply(this, args);
    }
  };
  html$.HtmlCollection.prototype[dart.isList] = true;
  dart.addTypeTests(html$.HtmlCollection);
  html$.HtmlCollection[dart.implements] = () => [JavaScriptIndexingBehaviorOfNode(), ListOfNode()];
  dart.setMethodSignature(html$.HtmlCollection, () => ({
    __proto__: dart.getMethods(html$.HtmlCollection.__proto__),
    [$_get]: dart.fnType(html$.Node, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(html$.Node, [core.int]),
    [$item]: dart.fnType(html$.Node, [core.int]),
    [$namedItem]: dart.fnType(core.Object, [core.String])
  }));
  dart.setGetterSignature(html$.HtmlCollection, () => ({
    __proto__: dart.getGetters(html$.HtmlCollection.__proto__),
    [$length]: core.int,
    [$first]: html$.Node,
    [$last]: html$.Node,
    [$single]: html$.Node
  }));
  dart.setSetterSignature(html$.HtmlCollection, () => ({
    __proto__: dart.getSetters(html$.HtmlCollection.__proto__),
    [$length]: core.int
  }));
  dart.registerExtension("HTMLCollection", html$.HtmlCollection);
  html$.HtmlDocument = class HtmlDocument extends html$.Document {
    get [$body]() {
      return this.body;
    }
    set [$body](value) {
      this.body = value;
    }
    [$caretRangeFromPoint](x, y) {
      return this[_caretRangeFromPoint](x, y);
    }
    [$elementFromPoint](x, y) {
      return this[_elementFromPoint](x, y);
    }
    get [$head]() {
      return this[_head$];
    }
    get [$lastModified]() {
      return this[_lastModified];
    }
    get [$preferredStylesheetSet]() {
      return this[_preferredStylesheetSet];
    }
    get [$referrer]() {
      return this[_referrer];
    }
    get [$selectedStylesheetSet]() {
      return this[_selectedStylesheetSet];
    }
    set [$selectedStylesheetSet](value) {
      this[_selectedStylesheetSet] = value;
    }
    get [$styleSheets]() {
      return this[_styleSheets];
    }
    get [$title]() {
      return this[_title];
    }
    set [$title](value) {
      this[_title] = value;
    }
    [$exitFullscreen]() {
      this[_webkitExitFullscreen]();
    }
    [$registerElement2](tag, options) {
      if (options === void 0) options = null;
      return html$._registerCustomElement(window, this, tag, options);
    }
    [$register](tag, customElementClass, opts) {
      let extendsTag = opts && 'extendsTag' in opts ? opts.extendsTag : null;
      return this[$registerElement](tag, customElementClass, {extendsTag: extendsTag});
    }
    static _determineVisibilityChangeEventType(e) {
      if (typeof e.hidden !== "undefined") {
        return "visibilitychange";
      } else if (typeof e.mozHidden !== "undefined") {
        return "mozvisibilitychange";
      } else if (typeof e.msHidden !== "undefined") {
        return "msvisibilitychange";
      } else if (typeof e.webkitHidden !== "undefined") {
        return "webkitvisibilitychange";
      }
      return "visibilitychange";
    }
    get [$onVisibilityChange]() {
      return html$.HtmlDocument.visibilityChangeEvent.forTarget(this);
    }
    [$createElementUpgrader](type, opts) {
      let extendsTag = opts && 'extendsTag' in opts ? opts.extendsTag : null;
      return new html$._JSElementUpgrader.new(this, type, extendsTag);
    }
  };
  dart.addTypeTests(html$.HtmlDocument);
  const body = Symbol("HtmlDocument.body");
  dart.setMethodSignature(html$.HtmlDocument, () => ({
    __proto__: dart.getMethods(html$.HtmlDocument.__proto__),
    [$caretRangeFromPoint]: dart.fnType(html$.Range, [core.int, core.int]),
    [$elementFromPoint]: dart.fnType(html$.Element, [core.int, core.int]),
    [$register]: dart.fnType(dart.void, [core.String, core.Type], {extendsTag: core.String}),
    [$createElementUpgrader]: dart.fnType(html$.ElementUpgrader, [core.Type], {extendsTag: core.String})
  }));
  dart.setGetterSignature(html$.HtmlDocument, () => ({
    __proto__: dart.getGetters(html$.HtmlDocument.__proto__),
    [$head]: html$.HeadElement,
    [$lastModified]: core.String,
    [$preferredStylesheetSet]: core.String,
    [$referrer]: core.String,
    [$selectedStylesheetSet]: core.String,
    [$styleSheets]: core.List$(html$.StyleSheet),
    [$title]: core.String,
    [$onVisibilityChange]: async.Stream$(html$.Event)
  }));
  dart.setSetterSignature(html$.HtmlDocument, () => ({
    __proto__: dart.getSetters(html$.HtmlDocument.__proto__),
    [$selectedStylesheetSet]: core.String,
    [$title]: core.String
  }));
  dart.setFieldSignature(html$.HtmlDocument, () => ({
    __proto__: dart.getFields(html$.HtmlDocument.__proto__),
    [$body]: dart.fieldType(html$.BodyElement)
  }));
  dart.defineLazy(html$.HtmlDocument, {
    /*html$.HtmlDocument.visibilityChangeEvent*/get visibilityChangeEvent() {
      return dart.const(new (_CustomEventStreamProviderOfEvent()).new(dart.fn(html$.HtmlDocument._determineVisibilityChangeEventType, EventTargetToString())));
    }
  });
  dart.registerExtension("HTMLDocument", html$.HtmlDocument);
  html$.HtmlFormControlsCollection = class HtmlFormControlsCollection extends html$.HtmlCollection {
    [$item](...args) {
      return this.item.apply(this, args);
    }
    [$namedItem](...args) {
      return this.namedItem.apply(this, args);
    }
  };
  dart.addTypeTests(html$.HtmlFormControlsCollection);
  dart.registerExtension("HTMLFormControlsCollection", html$.HtmlFormControlsCollection);
  html$.HtmlHtmlElement = class HtmlHtmlElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("html");
    }
  };
  (html$.HtmlHtmlElement.created = function() {
    html$.HtmlHtmlElement.__proto__.created.call(this);
  }).prototype = html$.HtmlHtmlElement.prototype;
  dart.addTypeTests(html$.HtmlHtmlElement);
  dart.registerExtension("HTMLHtmlElement", html$.HtmlHtmlElement);
  html$.HtmlHyperlinkElementUtils = class HtmlHyperlinkElementUtils extends _interceptors.Interceptor {
    get [$hash]() {
      return this.hash;
    }
    set [$hash](value) {
      this.hash = value;
    }
    get [$host]() {
      return this.host;
    }
    set [$host](value) {
      this.host = value;
    }
    get [$hostname]() {
      return this.hostname;
    }
    set [$hostname](value) {
      this.hostname = value;
    }
    get [$href]() {
      return this.href;
    }
    set [$href](value) {
      this.href = value;
    }
    get [$origin]() {
      return this.origin;
    }
    get [$password]() {
      return this.password;
    }
    set [$password](value) {
      this.password = value;
    }
    get [$pathname]() {
      return this.pathname;
    }
    set [$pathname](value) {
      this.pathname = value;
    }
    get [$port]() {
      return this.port;
    }
    set [$port](value) {
      this.port = value;
    }
    get [$protocol]() {
      return this.protocol;
    }
    set [$protocol](value) {
      this.protocol = value;
    }
    get [$search]() {
      return this.search;
    }
    set [$search](value) {
      this.search = value;
    }
    get [$username]() {
      return this.username;
    }
    set [$username](value) {
      this.username = value;
    }
  };
  dart.addTypeTests(html$.HtmlHyperlinkElementUtils);
  const hash$0 = Symbol("HtmlHyperlinkElementUtils.hash");
  const host$0 = Symbol("HtmlHyperlinkElementUtils.host");
  const hostname$0 = Symbol("HtmlHyperlinkElementUtils.hostname");
  const href$3 = Symbol("HtmlHyperlinkElementUtils.href");
  const origin$4 = Symbol("HtmlHyperlinkElementUtils.origin");
  const password$0 = Symbol("HtmlHyperlinkElementUtils.password");
  const pathname$0 = Symbol("HtmlHyperlinkElementUtils.pathname");
  const port$2 = Symbol("HtmlHyperlinkElementUtils.port");
  const protocol$1 = Symbol("HtmlHyperlinkElementUtils.protocol");
  const search$0 = Symbol("HtmlHyperlinkElementUtils.search");
  const username$0 = Symbol("HtmlHyperlinkElementUtils.username");
  dart.setFieldSignature(html$.HtmlHyperlinkElementUtils, () => ({
    __proto__: dart.getFields(html$.HtmlHyperlinkElementUtils.__proto__),
    [$hash]: dart.fieldType(core.String),
    [$host]: dart.fieldType(core.String),
    [$hostname]: dart.fieldType(core.String),
    [$href]: dart.fieldType(core.String),
    [$origin]: dart.finalFieldType(core.String),
    [$password]: dart.fieldType(core.String),
    [$pathname]: dart.fieldType(core.String),
    [$port]: dart.fieldType(core.String),
    [$protocol]: dart.fieldType(core.String),
    [$search]: dart.fieldType(core.String),
    [$username]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLHyperlinkElementUtils", html$.HtmlHyperlinkElementUtils);
  const _item = Symbol('_item');
  html$.HtmlOptionsCollection = class HtmlOptionsCollection extends html$.HtmlCollection {
    [_item](...args) {
      return this.item.apply(this, args);
    }
  };
  dart.addTypeTests(html$.HtmlOptionsCollection);
  dart.setMethodSignature(html$.HtmlOptionsCollection, () => ({
    __proto__: dart.getMethods(html$.HtmlOptionsCollection.__proto__),
    [_item]: dart.fnType(html$.Element, [core.int])
  }));
  dart.registerExtension("HTMLOptionsCollection", html$.HtmlOptionsCollection);
  const _get_response = Symbol('_get_response');
  html$.HttpRequestEventTarget = class HttpRequestEventTarget extends html$.EventTarget {
    get [$onAbort]() {
      return html$.HttpRequestEventTarget.abortEvent.forTarget(this);
    }
    get [$onError]() {
      return html$.HttpRequestEventTarget.errorEvent.forTarget(this);
    }
    get [$onLoad]() {
      return html$.HttpRequestEventTarget.loadEvent.forTarget(this);
    }
    get [$onLoadEnd]() {
      return html$.HttpRequestEventTarget.loadEndEvent.forTarget(this);
    }
    get [$onLoadStart]() {
      return html$.HttpRequestEventTarget.loadStartEvent.forTarget(this);
    }
    get [$onProgress]() {
      return html$.HttpRequestEventTarget.progressEvent.forTarget(this);
    }
    get [$onTimeout]() {
      return html$.HttpRequestEventTarget.timeoutEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.HttpRequestEventTarget);
  dart.setGetterSignature(html$.HttpRequestEventTarget, () => ({
    __proto__: dart.getGetters(html$.HttpRequestEventTarget.__proto__),
    [$onAbort]: async.Stream$(html$.ProgressEvent),
    [$onError]: async.Stream$(html$.ProgressEvent),
    [$onLoad]: async.Stream$(html$.ProgressEvent),
    [$onLoadEnd]: async.Stream$(html$.ProgressEvent),
    [$onLoadStart]: async.Stream$(html$.ProgressEvent),
    [$onProgress]: async.Stream$(html$.ProgressEvent),
    [$onTimeout]: async.Stream$(html$.ProgressEvent)
  }));
  dart.defineLazy(html$.HttpRequestEventTarget, {
    /*html$.HttpRequestEventTarget.abortEvent*/get abortEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("abort"));
    },
    /*html$.HttpRequestEventTarget.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("error"));
    },
    /*html$.HttpRequestEventTarget.loadEvent*/get loadEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("load"));
    },
    /*html$.HttpRequestEventTarget.loadEndEvent*/get loadEndEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("loadend"));
    },
    /*html$.HttpRequestEventTarget.loadStartEvent*/get loadStartEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("loadstart"));
    },
    /*html$.HttpRequestEventTarget.progressEvent*/get progressEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("progress"));
    },
    /*html$.HttpRequestEventTarget.timeoutEvent*/get timeoutEvent() {
      return dart.const(new (EventStreamProviderOfProgressEvent()).new("timeout"));
    }
  });
  dart.registerExtension("XMLHttpRequestEventTarget", html$.HttpRequestEventTarget);
  html$.HttpRequest = class HttpRequest extends html$.HttpRequestEventTarget {
    static getString(url, opts) {
      let withCredentials = opts && 'withCredentials' in opts ? opts.withCredentials : null;
      let onProgress = opts && 'onProgress' in opts ? opts.onProgress : null;
      return FutureOfString()._check(html$.HttpRequest.request(url, {withCredentials: withCredentials, onProgress: onProgress}).then(core.String, dart.fn(xhr => xhr.responseText, HttpRequestToString())));
    }
    static postFormData(url, data, opts) {
      let withCredentials = opts && 'withCredentials' in opts ? opts.withCredentials : null;
      let responseType = opts && 'responseType' in opts ? opts.responseType : null;
      let requestHeaders = opts && 'requestHeaders' in opts ? opts.requestHeaders : null;
      let onProgress = opts && 'onProgress' in opts ? opts.onProgress : null;
      let parts = [];
      data[$forEach](dart.fn((key, value) => {
        parts[$add](dart.str(core.Uri.encodeQueryComponent(key)) + "=" + dart.str(core.Uri.encodeQueryComponent(value)));
      }, StringAndStringToNull()));
      let formData = parts[$join]("&");
      if (requestHeaders == null) {
        requestHeaders = new (IdentityMapOfString$String()).new();
      }
      requestHeaders[$putIfAbsent]("Content-Type", dart.fn(() => "application/x-www-form-urlencoded; charset=UTF-8", VoidToString()));
      return html$.HttpRequest.request(url, {method: "POST", withCredentials: withCredentials, responseType: responseType, requestHeaders: requestHeaders, sendData: formData, onProgress: onProgress});
    }
    static request(url, opts) {
      let method = opts && 'method' in opts ? opts.method : null;
      let withCredentials = opts && 'withCredentials' in opts ? opts.withCredentials : null;
      let responseType = opts && 'responseType' in opts ? opts.responseType : null;
      let mimeType = opts && 'mimeType' in opts ? opts.mimeType : null;
      let requestHeaders = opts && 'requestHeaders' in opts ? opts.requestHeaders : null;
      let sendData = opts && 'sendData' in opts ? opts.sendData : null;
      let onProgress = opts && 'onProgress' in opts ? opts.onProgress : null;
      let completer = CompleterOfHttpRequest().new();
      let xhr = html$.HttpRequest.new();
      if (method == null) {
        method = "GET";
      }
      xhr.open(method, url, {async: true});
      if (withCredentials != null) {
        xhr.withCredentials = withCredentials;
      }
      if (responseType != null) {
        xhr.responseType = responseType;
      }
      if (mimeType != null) {
        xhr.overrideMimeType(mimeType);
      }
      if (requestHeaders != null) {
        requestHeaders[$forEach](dart.fn((header, value) => {
          xhr.setRequestHeader(header, value);
        }, StringAndStringToNull()));
      }
      if (onProgress != null) {
        xhr[$onProgress].listen(onProgress);
      }
      xhr[$onLoad].listen(dart.fn(e => {
        let accepted = dart.notNull(xhr.status) >= 200 && dart.notNull(xhr.status) < 300;
        let fileUri = xhr.status === 0;
        let notModified = xhr.status === 304;
        let unknownRedirect = dart.notNull(xhr.status) > 307 && dart.notNull(xhr.status) < 400;
        if (accepted || fileUri || notModified || unknownRedirect) {
          completer.complete(xhr);
        } else {
          completer.completeError(e);
        }
      }, ProgressEventToNull()));
      xhr[$onError].listen(dart.bind(completer, 'completeError'));
      if (sendData != null) {
        xhr.send(sendData);
      } else {
        xhr.send();
      }
      return completer.future;
    }
    static get supportsProgressEvent() {
      let xhr = html$.HttpRequest.new();
      return "onprogress" in xhr;
    }
    static get supportsCrossOrigin() {
      let xhr = html$.HttpRequest.new();
      return "withCredentials" in xhr;
    }
    static get supportsLoadEndEvent() {
      let xhr = html$.HttpRequest.new();
      return "onloadend" in xhr;
    }
    static get supportsOverrideMimeType() {
      let xhr = html$.HttpRequest.new();
      return "overrideMimeType" in xhr;
    }
    static requestCrossOrigin(url, opts) {
      let method = opts && 'method' in opts ? opts.method : null;
      let sendData = opts && 'sendData' in opts ? opts.sendData : null;
      if (dart.test(html$.HttpRequest.supportsCrossOrigin)) {
        return FutureOfString()._check(html$.HttpRequest.request(url, {method: method, sendData: sendData}).then(core.String, dart.fn(xhr => xhr.responseText, HttpRequestToString())));
      }
      let completer = CompleterOfString().new();
      if (method == null) {
        method = "GET";
      }
      let xhr = new XDomainRequest();
      xhr.open(method, url);
      xhr.onload = _js_helper.convertDartClosureToJS(dynamicToNull(), dart.fn(e => {
        let response = xhr.responseText;
        completer.complete(response);
      }, dynamicToNull()), 1);
      xhr.onerror = _js_helper.convertDartClosureToJS(dynamicToNull(), dart.fn(e => {
        completer.completeError(e);
      }, dynamicToNull()), 1);
      xhr.onprogress = {};
      xhr.ontimeout = {};
      xhr.timeout = Number.MAX_VALUE;
      if (sendData != null) {
        xhr.send(sendData);
      } else {
        xhr.send();
      }
      return completer.future;
    }
    get [$responseHeaders]() {
      let headers = new (IdentityMapOfString$String()).new();
      let headersString = this.getAllResponseHeaders();
      if (headersString == null) {
        return headers;
      }
      let headersList = headersString[$split]("\r\n");
      for (let header of headersList) {
        if (header[$isEmpty]) {
          continue;
        }
        let splitIdx = header[$indexOf](": ");
        if (splitIdx === -1) {
          continue;
        }
        let key = header[$substring](0, splitIdx)[$toLowerCase]();
        let value = header[$substring](splitIdx + 2);
        if (dart.test(headers[$containsKey](key))) {
          headers[$_set](key, dart.str(headers[$_get](key)) + ", " + value);
        } else {
          headers[$_set](key, value);
        }
      }
      return headers;
    }
    [$open](...args) {
      return this.open.apply(this, args);
    }
    static new() {
      return html$.HttpRequest._create_1();
    }
    static _create_1() {
      return new XMLHttpRequest();
    }
    get [$readyState]() {
      return this.readyState;
    }
    get [$response]() {
      return html$._convertNativeToDart_XHR_Response(this[_get_response]);
    }
    get [_get_response]() {
      return this.response;
    }
    get [$responseText]() {
      return this.responseText;
    }
    get [$responseType]() {
      return this.responseType;
    }
    set [$responseType](value) {
      this.responseType = value;
    }
    get [$responseUrl]() {
      return this.responseURL;
    }
    get [$responseXml]() {
      return this.responseXML;
    }
    get [$status]() {
      return this.status;
    }
    get [$statusText]() {
      return this.statusText;
    }
    get [$timeout]() {
      return this.timeout;
    }
    set [$timeout](value) {
      this.timeout = value;
    }
    get [$upload]() {
      return this.upload;
    }
    get [$withCredentials]() {
      return this.withCredentials;
    }
    set [$withCredentials](value) {
      this.withCredentials = value;
    }
    [$abort](...args) {
      return this.abort.apply(this, args);
    }
    [$getAllResponseHeaders](...args) {
      return this.getAllResponseHeaders.apply(this, args);
    }
    [$getResponseHeader](...args) {
      return this.getResponseHeader.apply(this, args);
    }
    [$overrideMimeType](...args) {
      return this.overrideMimeType.apply(this, args);
    }
    [$send](...args) {
      return this.send.apply(this, args);
    }
    [$setRequestHeader](...args) {
      return this.setRequestHeader.apply(this, args);
    }
    get [$onReadyStateChange]() {
      return html$.HttpRequest.readyStateChangeEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.HttpRequest);
  const readyState$5 = Symbol("HttpRequest.readyState");
  const responseText = Symbol("HttpRequest.responseText");
  const responseType = Symbol("HttpRequest.responseType");
  const responseUrl = Symbol("HttpRequest.responseUrl");
  const responseXml = Symbol("HttpRequest.responseXml");
  const status$2 = Symbol("HttpRequest.status");
  const statusText = Symbol("HttpRequest.statusText");
  const timeout = Symbol("HttpRequest.timeout");
  const upload = Symbol("HttpRequest.upload");
  const withCredentials$ = Symbol("HttpRequest.withCredentials");
  dart.setMethodSignature(html$.HttpRequest, () => ({
    __proto__: dart.getMethods(html$.HttpRequest.__proto__),
    [$open]: dart.fnType(dart.void, [core.String, core.String], {async: core.bool, user: core.String, password: core.String}),
    [$abort]: dart.fnType(dart.void, []),
    [$getAllResponseHeaders]: dart.fnType(core.String, []),
    [$getResponseHeader]: dart.fnType(core.String, [core.String]),
    [$overrideMimeType]: dart.fnType(dart.void, [core.String]),
    [$send]: dart.fnType(dart.void, [], [dart.dynamic]),
    [$setRequestHeader]: dart.fnType(dart.void, [core.String, core.String])
  }));
  dart.setGetterSignature(html$.HttpRequest, () => ({
    __proto__: dart.getGetters(html$.HttpRequest.__proto__),
    [$responseHeaders]: core.Map$(core.String, core.String),
    [$response]: dart.dynamic,
    [$onReadyStateChange]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.HttpRequest, () => ({
    __proto__: dart.getFields(html$.HttpRequest.__proto__),
    [$readyState]: dart.finalFieldType(core.int),
    [_get_response]: dart.finalFieldType(dart.dynamic),
    [$responseText]: dart.finalFieldType(core.String),
    [$responseType]: dart.fieldType(core.String),
    [$responseUrl]: dart.finalFieldType(core.String),
    [$responseXml]: dart.finalFieldType(html$.Document),
    [$status]: dart.finalFieldType(core.int),
    [$statusText]: dart.finalFieldType(core.String),
    [$timeout]: dart.fieldType(core.int),
    [$upload]: dart.finalFieldType(html$.HttpRequestUpload),
    [$withCredentials]: dart.fieldType(core.bool)
  }));
  dart.defineLazy(html$.HttpRequest, {
    /*html$.HttpRequest.readyStateChangeEvent*/get readyStateChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("readystatechange"));
    },
    /*html$.HttpRequest.DONE*/get DONE() {
      return 4;
    },
    /*html$.HttpRequest.HEADERS_RECEIVED*/get HEADERS_RECEIVED() {
      return 2;
    },
    /*html$.HttpRequest.LOADING*/get LOADING() {
      return 3;
    },
    /*html$.HttpRequest.OPENED*/get OPENED() {
      return 1;
    },
    /*html$.HttpRequest.UNSENT*/get UNSENT() {
      return 0;
    }
  });
  dart.registerExtension("XMLHttpRequest", html$.HttpRequest);
  html$.HttpRequestUpload = class HttpRequestUpload extends html$.HttpRequestEventTarget {};
  dart.addTypeTests(html$.HttpRequestUpload);
  dart.registerExtension("XMLHttpRequestUpload", html$.HttpRequestUpload);
  const _get_contentWindow = Symbol('_get_contentWindow');
  html$.IFrameElement = class IFrameElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("iframe");
    }
    get [$allow]() {
      return this.allow;
    }
    set [$allow](value) {
      this.allow = value;
    }
    get [$allowFullscreen]() {
      return this.allowFullscreen;
    }
    set [$allowFullscreen](value) {
      this.allowFullscreen = value;
    }
    get [$allowPaymentRequest]() {
      return this.allowPaymentRequest;
    }
    set [$allowPaymentRequest](value) {
      this.allowPaymentRequest = value;
    }
    get [$contentWindow]() {
      return html$._convertNativeToDart_Window(this[_get_contentWindow]);
    }
    get [_get_contentWindow]() {
      return this.contentWindow;
    }
    get [$csp]() {
      return this.csp;
    }
    set [$csp](value) {
      this.csp = value;
    }
    get [$height]() {
      return this.height;
    }
    set [$height](value) {
      this.height = value;
    }
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
    get [$referrerPolicy]() {
      return this.referrerPolicy;
    }
    set [$referrerPolicy](value) {
      this.referrerPolicy = value;
    }
    get [$sandbox]() {
      return this.sandbox;
    }
    get [$src]() {
      return this.src;
    }
    set [$src](value) {
      this.src = value;
    }
    get [$srcdoc]() {
      return this.srcdoc;
    }
    set [$srcdoc](value) {
      this.srcdoc = value;
    }
    get [$width]() {
      return this.width;
    }
    set [$width](value) {
      this.width = value;
    }
  };
  (html$.IFrameElement.created = function() {
    this[allow] = null;
    this[allowFullscreen] = null;
    this[allowPaymentRequest] = null;
    this[_get_contentWindow] = null;
    this[csp] = null;
    this[height$0] = null;
    this[name$18] = null;
    this[referrerPolicy$0] = null;
    this[sandbox] = null;
    this[src$0] = null;
    this[srcdoc] = null;
    this[width$0] = null;
    html$.IFrameElement.__proto__.created.call(this);
  }).prototype = html$.IFrameElement.prototype;
  dart.addTypeTests(html$.IFrameElement);
  const allow = Symbol("IFrameElement.allow");
  const allowFullscreen = Symbol("IFrameElement.allowFullscreen");
  const allowPaymentRequest = Symbol("IFrameElement.allowPaymentRequest");
  const csp = Symbol("IFrameElement.csp");
  const height$0 = Symbol("IFrameElement.height");
  const name$18 = Symbol("IFrameElement.name");
  const referrerPolicy$0 = Symbol("IFrameElement.referrerPolicy");
  const sandbox = Symbol("IFrameElement.sandbox");
  const src$0 = Symbol("IFrameElement.src");
  const srcdoc = Symbol("IFrameElement.srcdoc");
  const width$0 = Symbol("IFrameElement.width");
  dart.setGetterSignature(html$.IFrameElement, () => ({
    __proto__: dart.getGetters(html$.IFrameElement.__proto__),
    [$contentWindow]: html$.WindowBase
  }));
  dart.setFieldSignature(html$.IFrameElement, () => ({
    __proto__: dart.getFields(html$.IFrameElement.__proto__),
    [$allow]: dart.fieldType(core.String),
    [$allowFullscreen]: dart.fieldType(core.bool),
    [$allowPaymentRequest]: dart.fieldType(core.bool),
    [_get_contentWindow]: dart.finalFieldType(dart.dynamic),
    [$csp]: dart.fieldType(core.String),
    [$height]: dart.fieldType(core.String),
    [$name]: dart.fieldType(core.String),
    [$referrerPolicy]: dart.fieldType(core.String),
    [$sandbox]: dart.finalFieldType(html$.DomTokenList),
    [$src]: dart.fieldType(core.String),
    [$srcdoc]: dart.fieldType(core.String),
    [$width]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLIFrameElement", html$.IFrameElement);
  html$.IdleDeadline = class IdleDeadline extends _interceptors.Interceptor {
    get [$didTimeout]() {
      return this.didTimeout;
    }
    [$timeRemaining](...args) {
      return this.timeRemaining.apply(this, args);
    }
  };
  dart.addTypeTests(html$.IdleDeadline);
  const didTimeout = Symbol("IdleDeadline.didTimeout");
  dart.setMethodSignature(html$.IdleDeadline, () => ({
    __proto__: dart.getMethods(html$.IdleDeadline.__proto__),
    [$timeRemaining]: dart.fnType(core.double, [])
  }));
  dart.setFieldSignature(html$.IdleDeadline, () => ({
    __proto__: dart.getFields(html$.IdleDeadline.__proto__),
    [$didTimeout]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("IdleDeadline", html$.IdleDeadline);
  html$.ImageBitmap = class ImageBitmap extends _interceptors.Interceptor {
    get [$height]() {
      return this.height;
    }
    get [$width]() {
      return this.width;
    }
    [$close](...args) {
      return this.close.apply(this, args);
    }
  };
  dart.addTypeTests(html$.ImageBitmap);
  const height$1 = Symbol("ImageBitmap.height");
  const width$1 = Symbol("ImageBitmap.width");
  dart.setMethodSignature(html$.ImageBitmap, () => ({
    __proto__: dart.getMethods(html$.ImageBitmap.__proto__),
    [$close]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(html$.ImageBitmap, () => ({
    __proto__: dart.getFields(html$.ImageBitmap.__proto__),
    [$height]: dart.finalFieldType(core.int),
    [$width]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("ImageBitmap", html$.ImageBitmap);
  html$.ImageBitmapRenderingContext = class ImageBitmapRenderingContext extends _interceptors.Interceptor {
    get [$canvas]() {
      return this.canvas;
    }
    [$transferFromImageBitmap](...args) {
      return this.transferFromImageBitmap.apply(this, args);
    }
  };
  dart.addTypeTests(html$.ImageBitmapRenderingContext);
  const canvas$0 = Symbol("ImageBitmapRenderingContext.canvas");
  dart.setMethodSignature(html$.ImageBitmapRenderingContext, () => ({
    __proto__: dart.getMethods(html$.ImageBitmapRenderingContext.__proto__),
    [$transferFromImageBitmap]: dart.fnType(dart.void, [html$.ImageBitmap])
  }));
  dart.setFieldSignature(html$.ImageBitmapRenderingContext, () => ({
    __proto__: dart.getFields(html$.ImageBitmapRenderingContext.__proto__),
    [$canvas]: dart.finalFieldType(html$.CanvasElement)
  }));
  dart.registerExtension("ImageBitmapRenderingContext", html$.ImageBitmapRenderingContext);
  html$.ImageCapture = class ImageCapture$ extends _interceptors.Interceptor {
    static new(track) {
      return html$.ImageCapture._create_1(track);
    }
    static _create_1(track) {
      return new ImageCapture(track);
    }
    get [$track]() {
      return this.track;
    }
    [$getPhotoCapabilities]() {
      return html$.promiseToFuture(html$.PhotoCapabilities, this.getPhotoCapabilities());
    }
    [$getPhotoSettings]() {
      return html$.promiseToFutureAsMap(this.getPhotoSettings());
    }
    [$grabFrame]() {
      return html$.promiseToFuture(html$.ImageBitmap, this.grabFrame());
    }
    [$setOptions](photoSettings) {
      let photoSettings_dict = html_common.convertDartToNative_Dictionary(photoSettings);
      return html$.promiseToFuture(dart.dynamic, this.setOptions(photoSettings_dict));
    }
    [$takePhoto](photoSettings) {
      if (photoSettings === void 0) photoSettings = null;
      let photoSettings_dict = null;
      if (photoSettings != null) {
        photoSettings_dict = html_common.convertDartToNative_Dictionary(photoSettings);
      }
      return html$.promiseToFuture(html$.Blob, this.takePhoto(photoSettings_dict));
    }
  };
  dart.addTypeTests(html$.ImageCapture);
  const track = Symbol("ImageCapture.track");
  dart.setMethodSignature(html$.ImageCapture, () => ({
    __proto__: dart.getMethods(html$.ImageCapture.__proto__),
    [$getPhotoCapabilities]: dart.fnType(async.Future$(html$.PhotoCapabilities), []),
    [$getPhotoSettings]: dart.fnType(async.Future$(core.Map$(core.String, dart.dynamic)), []),
    [$grabFrame]: dart.fnType(async.Future$(html$.ImageBitmap), []),
    [$setOptions]: dart.fnType(async.Future, [core.Map]),
    [$takePhoto]: dart.fnType(async.Future$(html$.Blob), [], [core.Map])
  }));
  dart.setFieldSignature(html$.ImageCapture, () => ({
    __proto__: dart.getFields(html$.ImageCapture.__proto__),
    [$track]: dart.finalFieldType(html$.MediaStreamTrack)
  }));
  dart.registerExtension("ImageCapture", html$.ImageCapture);
  html$.ImageData = class ImageData$ extends _interceptors.Interceptor {
    static new(data_OR_sw, sh_OR_sw, sh) {
      if (sh === void 0) sh = null;
      if (core.int.is(sh_OR_sw) && core.int.is(data_OR_sw) && sh == null) {
        return html$.ImageData._create_1(data_OR_sw, sh_OR_sw);
      }
      if (core.int.is(sh_OR_sw) && typed_data.Uint8ClampedList.is(data_OR_sw) && sh == null) {
        return html$.ImageData._create_2(data_OR_sw, sh_OR_sw);
      }
      if (core.int.is(sh) && core.int.is(sh_OR_sw) && typed_data.Uint8ClampedList.is(data_OR_sw)) {
        return html$.ImageData._create_3(data_OR_sw, sh_OR_sw, sh);
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    static _create_1(data_OR_sw, sh_OR_sw) {
      return new ImageData(data_OR_sw, sh_OR_sw);
    }
    static _create_2(data_OR_sw, sh_OR_sw) {
      return new ImageData(data_OR_sw, sh_OR_sw);
    }
    static _create_3(data_OR_sw, sh_OR_sw, sh) {
      return new ImageData(data_OR_sw, sh_OR_sw, sh);
    }
    get [$data]() {
      return this.data;
    }
    get [$height]() {
      return this.height;
    }
    get [$width]() {
      return this.width;
    }
  };
  dart.addTypeTests(html$.ImageData);
  const data$3 = Symbol("ImageData.data");
  const height$2 = Symbol("ImageData.height");
  const width$2 = Symbol("ImageData.width");
  dart.setFieldSignature(html$.ImageData, () => ({
    __proto__: dart.getFields(html$.ImageData.__proto__),
    [$data]: dart.finalFieldType(typed_data.Uint8ClampedList),
    [$height]: dart.finalFieldType(core.int),
    [$width]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("ImageData", html$.ImageData);
  html$.ImageElement = class ImageElement extends html$.HtmlElement {
    static new(opts) {
      let src = opts && 'src' in opts ? opts.src : null;
      let width = opts && 'width' in opts ? opts.width : null;
      let height = opts && 'height' in opts ? opts.height : null;
      let e = html$.document.createElement("img");
      if (src != null) e.src = src;
      if (width != null) e.width = width;
      if (height != null) e.height = height;
      return e;
    }
    get [$alt]() {
      return this.alt;
    }
    set [$alt](value) {
      this.alt = value;
    }
    get [$async]() {
      return this.async;
    }
    set [$async](value) {
      this.async = value;
    }
    get [$complete]() {
      return this.complete;
    }
    get [$crossOrigin]() {
      return this.crossOrigin;
    }
    set [$crossOrigin](value) {
      this.crossOrigin = value;
    }
    get [$currentSrc]() {
      return this.currentSrc;
    }
    get [$height]() {
      return this.height;
    }
    set [$height](value) {
      this.height = value;
    }
    get [$isMap]() {
      return this.isMap;
    }
    set [$isMap](value) {
      this.isMap = value;
    }
    get [$naturalHeight]() {
      return this.naturalHeight;
    }
    get [$naturalWidth]() {
      return this.naturalWidth;
    }
    get [$referrerPolicy]() {
      return this.referrerPolicy;
    }
    set [$referrerPolicy](value) {
      this.referrerPolicy = value;
    }
    get [$sizes]() {
      return this.sizes;
    }
    set [$sizes](value) {
      this.sizes = value;
    }
    get [$src]() {
      return this.src;
    }
    set [$src](value) {
      this.src = value;
    }
    get [$srcset]() {
      return this.srcset;
    }
    set [$srcset](value) {
      this.srcset = value;
    }
    get [$useMap]() {
      return this.useMap;
    }
    set [$useMap](value) {
      this.useMap = value;
    }
    get [$width]() {
      return this.width;
    }
    set [$width](value) {
      this.width = value;
    }
    [$decode]() {
      return html$.promiseToFuture(dart.dynamic, this.decode());
    }
  };
  (html$.ImageElement.created = function() {
    this[alt$] = null;
    this[async$] = null;
    this[complete] = null;
    this[crossOrigin$] = null;
    this[currentSrc$] = null;
    this[height$3] = null;
    this[isMap] = null;
    this[naturalHeight] = null;
    this[naturalWidth] = null;
    this[referrerPolicy$1] = null;
    this[sizes] = null;
    this[src$1] = null;
    this[srcset] = null;
    this[useMap] = null;
    this[width$3] = null;
    html$.ImageElement.__proto__.created.call(this);
  }).prototype = html$.ImageElement.prototype;
  dart.addTypeTests(html$.ImageElement);
  const alt$ = Symbol("ImageElement.alt");
  const async$ = Symbol("ImageElement.async");
  const complete = Symbol("ImageElement.complete");
  const crossOrigin$ = Symbol("ImageElement.crossOrigin");
  const currentSrc$ = Symbol("ImageElement.currentSrc");
  const height$3 = Symbol("ImageElement.height");
  const isMap = Symbol("ImageElement.isMap");
  const naturalHeight = Symbol("ImageElement.naturalHeight");
  const naturalWidth = Symbol("ImageElement.naturalWidth");
  const referrerPolicy$1 = Symbol("ImageElement.referrerPolicy");
  const sizes = Symbol("ImageElement.sizes");
  const src$1 = Symbol("ImageElement.src");
  const srcset = Symbol("ImageElement.srcset");
  const useMap = Symbol("ImageElement.useMap");
  const width$3 = Symbol("ImageElement.width");
  html$.ImageElement[dart.implements] = () => [html$.CanvasImageSource];
  dart.setMethodSignature(html$.ImageElement, () => ({
    __proto__: dart.getMethods(html$.ImageElement.__proto__),
    [$decode]: dart.fnType(async.Future, [])
  }));
  dart.setFieldSignature(html$.ImageElement, () => ({
    __proto__: dart.getFields(html$.ImageElement.__proto__),
    [$alt]: dart.fieldType(core.String),
    [$async]: dart.fieldType(core.String),
    [$complete]: dart.finalFieldType(core.bool),
    [$crossOrigin]: dart.fieldType(core.String),
    [$currentSrc]: dart.finalFieldType(core.String),
    [$height]: dart.fieldType(core.int),
    [$isMap]: dart.fieldType(core.bool),
    [$naturalHeight]: dart.finalFieldType(core.int),
    [$naturalWidth]: dart.finalFieldType(core.int),
    [$referrerPolicy]: dart.fieldType(core.String),
    [$sizes]: dart.fieldType(core.String),
    [$src]: dart.fieldType(core.String),
    [$srcset]: dart.fieldType(core.String),
    [$useMap]: dart.fieldType(core.String),
    [$width]: dart.fieldType(core.int)
  }));
  dart.registerExtension("HTMLImageElement", html$.ImageElement);
  html$.InputDeviceCapabilities = class InputDeviceCapabilities$ extends _interceptors.Interceptor {
    static new(deviceInitDict) {
      if (deviceInitDict === void 0) deviceInitDict = null;
      if (deviceInitDict != null) {
        let deviceInitDict_1 = html_common.convertDartToNative_Dictionary(deviceInitDict);
        return html$.InputDeviceCapabilities._create_1(deviceInitDict_1);
      }
      return html$.InputDeviceCapabilities._create_2();
    }
    static _create_1(deviceInitDict) {
      return new InputDeviceCapabilities(deviceInitDict);
    }
    static _create_2() {
      return new InputDeviceCapabilities();
    }
    get [$firesTouchEvents]() {
      return this.firesTouchEvents;
    }
  };
  dart.addTypeTests(html$.InputDeviceCapabilities);
  const firesTouchEvents = Symbol("InputDeviceCapabilities.firesTouchEvents");
  dart.setFieldSignature(html$.InputDeviceCapabilities, () => ({
    __proto__: dart.getFields(html$.InputDeviceCapabilities.__proto__),
    [$firesTouchEvents]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("InputDeviceCapabilities", html$.InputDeviceCapabilities);
  const _get_valueAsDate = Symbol('_get_valueAsDate');
  const _set_valueAsDate = Symbol('_set_valueAsDate');
  html$.InputElement = class InputElement extends html$.HtmlElement {
    static new(opts) {
      let type = opts && 'type' in opts ? opts.type : null;
      let e = html$.InputElement._check(html$.document[$createElement]("input"));
      if (type != null) {
        try {
          e.type = type;
        } catch (e$) {
          let _ = dart.getThrown(e$);
        }
      }
      return e;
    }
    get [$accept]() {
      return this.accept;
    }
    set [$accept](value) {
      this.accept = value;
    }
    get [$alt]() {
      return this.alt;
    }
    set [$alt](value) {
      this.alt = value;
    }
    get [$autocapitalize]() {
      return this.autocapitalize;
    }
    set [$autocapitalize](value) {
      this.autocapitalize = value;
    }
    get [$autocomplete]() {
      return this.autocomplete;
    }
    set [$autocomplete](value) {
      this.autocomplete = value;
    }
    get [$autofocus]() {
      return this.autofocus;
    }
    set [$autofocus](value) {
      this.autofocus = value;
    }
    get [$capture]() {
      return this.capture;
    }
    set [$capture](value) {
      this.capture = value;
    }
    get [$checked]() {
      return this.checked;
    }
    set [$checked](value) {
      this.checked = value;
    }
    get [$defaultChecked]() {
      return this.defaultChecked;
    }
    set [$defaultChecked](value) {
      this.defaultChecked = value;
    }
    get [$defaultValue]() {
      return this.defaultValue;
    }
    set [$defaultValue](value) {
      this.defaultValue = value;
    }
    get [$dirName]() {
      return this.dirName;
    }
    set [$dirName](value) {
      this.dirName = value;
    }
    get [$disabled]() {
      return this.disabled;
    }
    set [$disabled](value) {
      this.disabled = value;
    }
    get [$files]() {
      return this.files;
    }
    set [$files](value) {
      this.files = value;
    }
    get [$form]() {
      return this.form;
    }
    get [$formAction]() {
      return this.formAction;
    }
    set [$formAction](value) {
      this.formAction = value;
    }
    get [$formEnctype]() {
      return this.formEnctype;
    }
    set [$formEnctype](value) {
      this.formEnctype = value;
    }
    get [$formMethod]() {
      return this.formMethod;
    }
    set [$formMethod](value) {
      this.formMethod = value;
    }
    get [$formNoValidate]() {
      return this.formNoValidate;
    }
    set [$formNoValidate](value) {
      this.formNoValidate = value;
    }
    get [$formTarget]() {
      return this.formTarget;
    }
    set [$formTarget](value) {
      this.formTarget = value;
    }
    get [$height]() {
      return this.height;
    }
    set [$height](value) {
      this.height = value;
    }
    get [$incremental]() {
      return this.incremental;
    }
    set [$incremental](value) {
      this.incremental = value;
    }
    get [$indeterminate]() {
      return this.indeterminate;
    }
    set [$indeterminate](value) {
      this.indeterminate = value;
    }
    get [$labels]() {
      return this.labels;
    }
    get [$list]() {
      return this.list;
    }
    get [$max]() {
      return this.max;
    }
    set [$max](value) {
      this.max = value;
    }
    get [$maxLength]() {
      return this.maxLength;
    }
    set [$maxLength](value) {
      this.maxLength = value;
    }
    get [$min]() {
      return this.min;
    }
    set [$min](value) {
      this.min = value;
    }
    get [$minLength]() {
      return this.minLength;
    }
    set [$minLength](value) {
      this.minLength = value;
    }
    get [$multiple]() {
      return this.multiple;
    }
    set [$multiple](value) {
      this.multiple = value;
    }
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
    get [$pattern]() {
      return this.pattern;
    }
    set [$pattern](value) {
      this.pattern = value;
    }
    get [$placeholder]() {
      return this.placeholder;
    }
    set [$placeholder](value) {
      this.placeholder = value;
    }
    get [$readOnly]() {
      return this.readOnly;
    }
    set [$readOnly](value) {
      this.readOnly = value;
    }
    get [$required]() {
      return this.required;
    }
    set [$required](value) {
      this.required = value;
    }
    get [$selectionDirection]() {
      return this.selectionDirection;
    }
    set [$selectionDirection](value) {
      this.selectionDirection = value;
    }
    get [$selectionEnd]() {
      return this.selectionEnd;
    }
    set [$selectionEnd](value) {
      this.selectionEnd = value;
    }
    get [$selectionStart]() {
      return this.selectionStart;
    }
    set [$selectionStart](value) {
      this.selectionStart = value;
    }
    get [$size]() {
      return this.size;
    }
    set [$size](value) {
      this.size = value;
    }
    get [$src]() {
      return this.src;
    }
    set [$src](value) {
      this.src = value;
    }
    get [$step]() {
      return this.step;
    }
    set [$step](value) {
      this.step = value;
    }
    get [$type]() {
      return this.type;
    }
    set [$type](value) {
      this.type = value;
    }
    get [$validationMessage]() {
      return this.validationMessage;
    }
    get [$validity]() {
      return this.validity;
    }
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
    get [$valueAsDate]() {
      return html_common.convertNativeToDart_DateTime(this[_get_valueAsDate]);
    }
    get [_get_valueAsDate]() {
      return this.valueAsDate;
    }
    set [$valueAsDate](value) {
      this[_set_valueAsDate] = html_common.convertDartToNative_DateTime(value);
    }
    set [_set_valueAsDate](value) {
      this.valueAsDate = value;
    }
    get [$valueAsNumber]() {
      return this.valueAsNumber;
    }
    set [$valueAsNumber](value) {
      this.valueAsNumber = value;
    }
    get [$entries]() {
      return this.webkitEntries;
    }
    get [$directory]() {
      return this.webkitdirectory;
    }
    set [$directory](value) {
      this.webkitdirectory = value;
    }
    get [$width]() {
      return this.width;
    }
    set [$width](value) {
      this.width = value;
    }
    get [$willValidate]() {
      return this.willValidate;
    }
    [$checkValidity](...args) {
      return this.checkValidity.apply(this, args);
    }
    [$reportValidity](...args) {
      return this.reportValidity.apply(this, args);
    }
    [$select](...args) {
      return this.select.apply(this, args);
    }
    [$setCustomValidity](...args) {
      return this.setCustomValidity.apply(this, args);
    }
    [$setRangeText](...args) {
      return this.setRangeText.apply(this, args);
    }
    [$setSelectionRange](...args) {
      return this.setSelectionRange.apply(this, args);
    }
    [$stepDown](...args) {
      return this.stepDown.apply(this, args);
    }
    [$stepUp](...args) {
      return this.stepUp.apply(this, args);
    }
  };
  (html$.InputElement.created = function() {
    this[accept] = null;
    this[alt$0] = null;
    this[autocapitalize] = null;
    this[autocomplete$0] = null;
    this[autofocus$] = null;
    this[capture] = null;
    this[checked$] = null;
    this[defaultChecked] = null;
    this[defaultValue] = null;
    this[dirName] = null;
    this[disabled$2] = null;
    this[files$] = null;
    this[form$0] = null;
    this[formAction$] = null;
    this[formEnctype$] = null;
    this[formMethod$] = null;
    this[formNoValidate$] = null;
    this[formTarget$] = null;
    this[height$4] = null;
    this[incremental] = null;
    this[indeterminate] = null;
    this[labels$] = null;
    this[list] = null;
    this[max] = null;
    this[maxLength] = null;
    this[min] = null;
    this[minLength] = null;
    this[multiple] = null;
    this[name$19] = null;
    this[pattern] = null;
    this[placeholder$] = null;
    this[readOnly$] = null;
    this[required$] = null;
    this[selectionDirection] = null;
    this[selectionEnd] = null;
    this[selectionStart] = null;
    this[size$0] = null;
    this[src$2] = null;
    this[step] = null;
    this[type$15] = null;
    this[validationMessage$0] = null;
    this[validity$0] = null;
    this[value$6] = null;
    this[_get_valueAsDate] = null;
    this[valueAsNumber] = null;
    this[entries] = null;
    this[directory] = null;
    this[width$4] = null;
    this[willValidate$0] = null;
    html$.InputElement.__proto__.created.call(this);
  }).prototype = html$.InputElement.prototype;
  dart.addTypeTests(html$.InputElement);
  const accept = Symbol("InputElement.accept");
  const alt$0 = Symbol("InputElement.alt");
  const autocapitalize = Symbol("InputElement.autocapitalize");
  const autocomplete$0 = Symbol("InputElement.autocomplete");
  const autofocus$ = Symbol("InputElement.autofocus");
  const capture = Symbol("InputElement.capture");
  const checked$ = Symbol("InputElement.checked");
  const defaultChecked = Symbol("InputElement.defaultChecked");
  const defaultValue = Symbol("InputElement.defaultValue");
  const dirName = Symbol("InputElement.dirName");
  const disabled$2 = Symbol("InputElement.disabled");
  const files$ = Symbol("InputElement.files");
  const form$0 = Symbol("InputElement.form");
  const formAction$ = Symbol("InputElement.formAction");
  const formEnctype$ = Symbol("InputElement.formEnctype");
  const formMethod$ = Symbol("InputElement.formMethod");
  const formNoValidate$ = Symbol("InputElement.formNoValidate");
  const formTarget$ = Symbol("InputElement.formTarget");
  const height$4 = Symbol("InputElement.height");
  const incremental = Symbol("InputElement.incremental");
  const indeterminate = Symbol("InputElement.indeterminate");
  const labels$ = Symbol("InputElement.labels");
  const list = Symbol("InputElement.list");
  const max = Symbol("InputElement.max");
  const maxLength = Symbol("InputElement.maxLength");
  const min = Symbol("InputElement.min");
  const minLength = Symbol("InputElement.minLength");
  const multiple = Symbol("InputElement.multiple");
  const name$19 = Symbol("InputElement.name");
  const pattern = Symbol("InputElement.pattern");
  const placeholder$ = Symbol("InputElement.placeholder");
  const readOnly$ = Symbol("InputElement.readOnly");
  const required$ = Symbol("InputElement.required");
  const selectionDirection = Symbol("InputElement.selectionDirection");
  const selectionEnd = Symbol("InputElement.selectionEnd");
  const selectionStart = Symbol("InputElement.selectionStart");
  const size$0 = Symbol("InputElement.size");
  const src$2 = Symbol("InputElement.src");
  const step = Symbol("InputElement.step");
  const type$15 = Symbol("InputElement.type");
  const validationMessage$0 = Symbol("InputElement.validationMessage");
  const validity$0 = Symbol("InputElement.validity");
  const value$6 = Symbol("InputElement.value");
  const valueAsNumber = Symbol("InputElement.valueAsNumber");
  const entries = Symbol("InputElement.entries");
  const directory = Symbol("InputElement.directory");
  const width$4 = Symbol("InputElement.width");
  const willValidate$0 = Symbol("InputElement.willValidate");
  html$.InputElement[dart.implements] = () => [html$.HiddenInputElement, html$.SearchInputElement, html$.TextInputElement, html$.UrlInputElement, html$.TelephoneInputElement, html$.EmailInputElement, html$.PasswordInputElement, html$.DateInputElement, html$.MonthInputElement, html$.WeekInputElement, html$.TimeInputElement, html$.LocalDateTimeInputElement, html$.NumberInputElement, html$.RangeInputElement, html$.CheckboxInputElement, html$.RadioButtonInputElement, html$.FileUploadInputElement, html$.SubmitButtonInputElement, html$.ImageButtonInputElement, html$.ResetButtonInputElement, html$.ButtonInputElement];
  dart.setMethodSignature(html$.InputElement, () => ({
    __proto__: dart.getMethods(html$.InputElement.__proto__),
    [$checkValidity]: dart.fnType(core.bool, []),
    [$reportValidity]: dart.fnType(core.bool, []),
    [$select]: dart.fnType(dart.void, []),
    [$setCustomValidity]: dart.fnType(dart.void, [core.String]),
    [$setRangeText]: dart.fnType(dart.void, [core.String], {start: core.int, end: core.int, selectionMode: core.String}),
    [$setSelectionRange]: dart.fnType(dart.void, [core.int, core.int], [core.String]),
    [$stepDown]: dart.fnType(dart.void, [], [core.int]),
    [$stepUp]: dart.fnType(dart.void, [], [core.int])
  }));
  dart.setGetterSignature(html$.InputElement, () => ({
    __proto__: dart.getGetters(html$.InputElement.__proto__),
    [$valueAsDate]: core.DateTime
  }));
  dart.setSetterSignature(html$.InputElement, () => ({
    __proto__: dart.getSetters(html$.InputElement.__proto__),
    [$valueAsDate]: core.DateTime,
    [_set_valueAsDate]: dart.dynamic
  }));
  dart.setFieldSignature(html$.InputElement, () => ({
    __proto__: dart.getFields(html$.InputElement.__proto__),
    [$accept]: dart.fieldType(core.String),
    [$alt]: dart.fieldType(core.String),
    [$autocapitalize]: dart.fieldType(core.String),
    [$autocomplete]: dart.fieldType(core.String),
    [$autofocus]: dart.fieldType(core.bool),
    [$capture]: dart.fieldType(core.String),
    [$checked]: dart.fieldType(core.bool),
    [$defaultChecked]: dart.fieldType(core.bool),
    [$defaultValue]: dart.fieldType(core.String),
    [$dirName]: dart.fieldType(core.String),
    [$disabled]: dart.fieldType(core.bool),
    [$files]: dart.fieldType(ListOfFile()),
    [$form]: dart.finalFieldType(html$.FormElement),
    [$formAction]: dart.fieldType(core.String),
    [$formEnctype]: dart.fieldType(core.String),
    [$formMethod]: dart.fieldType(core.String),
    [$formNoValidate]: dart.fieldType(core.bool),
    [$formTarget]: dart.fieldType(core.String),
    [$height]: dart.fieldType(core.int),
    [$incremental]: dart.fieldType(core.bool),
    [$indeterminate]: dart.fieldType(core.bool),
    [$labels]: dart.finalFieldType(ListOfNode()),
    [$list]: dart.finalFieldType(html$.HtmlElement),
    [$max]: dart.fieldType(core.String),
    [$maxLength]: dart.fieldType(core.int),
    [$min]: dart.fieldType(core.String),
    [$minLength]: dart.fieldType(core.int),
    [$multiple]: dart.fieldType(core.bool),
    [$name]: dart.fieldType(core.String),
    [$pattern]: dart.fieldType(core.String),
    [$placeholder]: dart.fieldType(core.String),
    [$readOnly]: dart.fieldType(core.bool),
    [$required]: dart.fieldType(core.bool),
    [$selectionDirection]: dart.fieldType(core.String),
    [$selectionEnd]: dart.fieldType(core.int),
    [$selectionStart]: dart.fieldType(core.int),
    [$size]: dart.fieldType(core.int),
    [$src]: dart.fieldType(core.String),
    [$step]: dart.fieldType(core.String),
    [$type]: dart.fieldType(core.String),
    [$validationMessage]: dart.finalFieldType(core.String),
    [$validity]: dart.finalFieldType(html$.ValidityState),
    [$value]: dart.fieldType(core.String),
    [_get_valueAsDate]: dart.finalFieldType(dart.dynamic),
    [$valueAsNumber]: dart.fieldType(core.num),
    [$entries]: dart.finalFieldType(ListOfEntry()),
    [$directory]: dart.fieldType(core.bool),
    [$width]: dart.fieldType(core.int),
    [$willValidate]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("HTMLInputElement", html$.InputElement);
  html$.InputElementBase = class InputElementBase extends core.Object {
    get autofocus() {
      return this[autofocus$0];
    }
    set autofocus(value) {
      this[autofocus$0] = value;
    }
    get disabled() {
      return this[disabled$3];
    }
    set disabled(value) {
      this[disabled$3] = value;
    }
    get incremental() {
      return this[incremental$];
    }
    set incremental(value) {
      this[incremental$] = value;
    }
    get indeterminate() {
      return this[indeterminate$];
    }
    set indeterminate(value) {
      this[indeterminate$] = value;
    }
    get name() {
      return this[name$20];
    }
    set name(value) {
      this[name$20] = value;
    }
    get value() {
      return this[value$7];
    }
    set value(value) {
      this[value$7] = value;
    }
  };
  (html$.InputElementBase.new = function() {
    this[autofocus$0] = null;
    this[disabled$3] = null;
    this[incremental$] = null;
    this[indeterminate$] = null;
    this[name$20] = null;
    this[value$7] = null;
  }).prototype = html$.InputElementBase.prototype;
  dart.addTypeTests(html$.InputElementBase);
  const autofocus$0 = Symbol("InputElementBase.autofocus");
  const disabled$3 = Symbol("InputElementBase.disabled");
  const incremental$ = Symbol("InputElementBase.incremental");
  const indeterminate$ = Symbol("InputElementBase.indeterminate");
  const name$20 = Symbol("InputElementBase.name");
  const value$7 = Symbol("InputElementBase.value");
  html$.InputElementBase[dart.implements] = () => [html$.Element];
  dart.setFieldSignature(html$.InputElementBase, () => ({
    __proto__: dart.getFields(html$.InputElementBase.__proto__),
    autofocus: dart.fieldType(core.bool),
    disabled: dart.fieldType(core.bool),
    incremental: dart.fieldType(core.bool),
    indeterminate: dart.fieldType(core.bool),
    name: dart.fieldType(core.String),
    value: dart.fieldType(core.String)
  }));
  dart.defineExtensionAccessors(html$.InputElementBase, [
    'autofocus',
    'disabled',
    'incremental',
    'indeterminate',
    'name',
    'value'
  ]);
  html$.HiddenInputElement = class HiddenInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "hidden"});
    }
  };
  (html$.HiddenInputElement[dart.mixinNew] = function() {
  }).prototype = html$.HiddenInputElement.prototype;
  dart.addTypeTests(html$.HiddenInputElement);
  html$.HiddenInputElement[dart.implements] = () => [html$.InputElementBase];
  html$.TextInputElementBase = class TextInputElementBase extends core.Object {
    get autocomplete() {
      return this[autocomplete$1];
    }
    set autocomplete(value) {
      this[autocomplete$1] = value;
    }
    get maxLength() {
      return this[maxLength$];
    }
    set maxLength(value) {
      this[maxLength$] = value;
    }
    get pattern() {
      return this[pattern$];
    }
    set pattern(value) {
      this[pattern$] = value;
    }
    get placeholder() {
      return this[placeholder$0];
    }
    set placeholder(value) {
      this[placeholder$0] = value;
    }
    get readOnly() {
      return this[readOnly$0];
    }
    set readOnly(value) {
      this[readOnly$0] = value;
    }
    get required() {
      return this[required$0];
    }
    set required(value) {
      this[required$0] = value;
    }
    get size() {
      return this[size$1];
    }
    set size(value) {
      this[size$1] = value;
    }
    get selectionDirection() {
      return this[selectionDirection$];
    }
    set selectionDirection(value) {
      this[selectionDirection$] = value;
    }
    get selectionEnd() {
      return this[selectionEnd$];
    }
    set selectionEnd(value) {
      this[selectionEnd$] = value;
    }
    get selectionStart() {
      return this[selectionStart$];
    }
    set selectionStart(value) {
      this[selectionStart$] = value;
    }
  };
  (html$.TextInputElementBase.new = function() {
    this[autocomplete$1] = null;
    this[maxLength$] = null;
    this[pattern$] = null;
    this[placeholder$0] = null;
    this[readOnly$0] = null;
    this[required$0] = null;
    this[size$1] = null;
    this[selectionDirection$] = null;
    this[selectionEnd$] = null;
    this[selectionStart$] = null;
  }).prototype = html$.TextInputElementBase.prototype;
  dart.addTypeTests(html$.TextInputElementBase);
  const autocomplete$1 = Symbol("TextInputElementBase.autocomplete");
  const maxLength$ = Symbol("TextInputElementBase.maxLength");
  const pattern$ = Symbol("TextInputElementBase.pattern");
  const placeholder$0 = Symbol("TextInputElementBase.placeholder");
  const readOnly$0 = Symbol("TextInputElementBase.readOnly");
  const required$0 = Symbol("TextInputElementBase.required");
  const size$1 = Symbol("TextInputElementBase.size");
  const selectionDirection$ = Symbol("TextInputElementBase.selectionDirection");
  const selectionEnd$ = Symbol("TextInputElementBase.selectionEnd");
  const selectionStart$ = Symbol("TextInputElementBase.selectionStart");
  html$.TextInputElementBase[dart.implements] = () => [html$.InputElementBase];
  dart.setFieldSignature(html$.TextInputElementBase, () => ({
    __proto__: dart.getFields(html$.TextInputElementBase.__proto__),
    autocomplete: dart.fieldType(core.String),
    maxLength: dart.fieldType(core.int),
    pattern: dart.fieldType(core.String),
    placeholder: dart.fieldType(core.String),
    readOnly: dart.fieldType(core.bool),
    required: dart.fieldType(core.bool),
    size: dart.fieldType(core.int),
    selectionDirection: dart.fieldType(core.String),
    selectionEnd: dart.fieldType(core.int),
    selectionStart: dart.fieldType(core.int)
  }));
  dart.defineExtensionAccessors(html$.TextInputElementBase, [
    'autocomplete',
    'maxLength',
    'pattern',
    'placeholder',
    'readOnly',
    'required',
    'size',
    'selectionDirection',
    'selectionEnd',
    'selectionStart'
  ]);
  html$.SearchInputElement = class SearchInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "search"});
    }
    get dirName() {
      return this[dirName$];
    }
    set dirName(value) {
      this[dirName$] = value;
    }
    static get supported() {
      return html$.InputElement.new({type: "search"}).type === "search";
    }
  };
  (html$.SearchInputElement[dart.mixinNew] = function() {
    this[dirName$] = null;
  }).prototype = html$.SearchInputElement.prototype;
  dart.addTypeTests(html$.SearchInputElement);
  const dirName$ = Symbol("SearchInputElement.dirName");
  html$.SearchInputElement[dart.implements] = () => [html$.TextInputElementBase];
  dart.setFieldSignature(html$.SearchInputElement, () => ({
    __proto__: dart.getFields(html$.SearchInputElement.__proto__),
    dirName: dart.fieldType(core.String)
  }));
  dart.defineExtensionAccessors(html$.SearchInputElement, ['dirName']);
  html$.TextInputElement = class TextInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "text"});
    }
    get dirName() {
      return this[dirName$0];
    }
    set dirName(value) {
      this[dirName$0] = value;
    }
  };
  (html$.TextInputElement[dart.mixinNew] = function() {
    this[dirName$0] = null;
  }).prototype = html$.TextInputElement.prototype;
  dart.addTypeTests(html$.TextInputElement);
  const dirName$0 = Symbol("TextInputElement.dirName");
  html$.TextInputElement[dart.implements] = () => [html$.TextInputElementBase];
  dart.setFieldSignature(html$.TextInputElement, () => ({
    __proto__: dart.getFields(html$.TextInputElement.__proto__),
    dirName: dart.fieldType(core.String)
  }));
  dart.defineExtensionAccessors(html$.TextInputElement, ['dirName']);
  html$.UrlInputElement = class UrlInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "url"});
    }
    static get supported() {
      return html$.InputElement.new({type: "url"}).type === "url";
    }
  };
  (html$.UrlInputElement[dart.mixinNew] = function() {
  }).prototype = html$.UrlInputElement.prototype;
  dart.addTypeTests(html$.UrlInputElement);
  html$.UrlInputElement[dart.implements] = () => [html$.TextInputElementBase];
  html$.TelephoneInputElement = class TelephoneInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "tel"});
    }
    static get supported() {
      return html$.InputElement.new({type: "tel"}).type === "tel";
    }
  };
  (html$.TelephoneInputElement[dart.mixinNew] = function() {
  }).prototype = html$.TelephoneInputElement.prototype;
  dart.addTypeTests(html$.TelephoneInputElement);
  html$.TelephoneInputElement[dart.implements] = () => [html$.TextInputElementBase];
  html$.EmailInputElement = class EmailInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "email"});
    }
    get autocomplete() {
      return this[autocomplete$2];
    }
    set autocomplete(value) {
      this[autocomplete$2] = value;
    }
    get autofocus() {
      return this[autofocus$1];
    }
    set autofocus(value) {
      this[autofocus$1] = value;
    }
    get maxLength() {
      return this[maxLength$0];
    }
    set maxLength(value) {
      this[maxLength$0] = value;
    }
    get multiple() {
      return this[multiple$];
    }
    set multiple(value) {
      this[multiple$] = value;
    }
    get pattern() {
      return this[pattern$0];
    }
    set pattern(value) {
      this[pattern$0] = value;
    }
    get placeholder() {
      return this[placeholder$1];
    }
    set placeholder(value) {
      this[placeholder$1] = value;
    }
    get readOnly() {
      return this[readOnly$1];
    }
    set readOnly(value) {
      this[readOnly$1] = value;
    }
    get required() {
      return this[required$1];
    }
    set required(value) {
      this[required$1] = value;
    }
    get size() {
      return this[size$2];
    }
    set size(value) {
      this[size$2] = value;
    }
    static get supported() {
      return html$.InputElement.new({type: "email"}).type === "email";
    }
  };
  (html$.EmailInputElement[dart.mixinNew] = function() {
    this[autocomplete$2] = null;
    this[autofocus$1] = null;
    this[maxLength$0] = null;
    this[multiple$] = null;
    this[pattern$0] = null;
    this[placeholder$1] = null;
    this[readOnly$1] = null;
    this[required$1] = null;
    this[size$2] = null;
  }).prototype = html$.EmailInputElement.prototype;
  dart.addTypeTests(html$.EmailInputElement);
  const autocomplete$2 = Symbol("EmailInputElement.autocomplete");
  const autofocus$1 = Symbol("EmailInputElement.autofocus");
  const maxLength$0 = Symbol("EmailInputElement.maxLength");
  const multiple$ = Symbol("EmailInputElement.multiple");
  const pattern$0 = Symbol("EmailInputElement.pattern");
  const placeholder$1 = Symbol("EmailInputElement.placeholder");
  const readOnly$1 = Symbol("EmailInputElement.readOnly");
  const required$1 = Symbol("EmailInputElement.required");
  const size$2 = Symbol("EmailInputElement.size");
  html$.EmailInputElement[dart.implements] = () => [html$.TextInputElementBase];
  dart.setFieldSignature(html$.EmailInputElement, () => ({
    __proto__: dart.getFields(html$.EmailInputElement.__proto__),
    autocomplete: dart.fieldType(core.String),
    autofocus: dart.fieldType(core.bool),
    maxLength: dart.fieldType(core.int),
    multiple: dart.fieldType(core.bool),
    pattern: dart.fieldType(core.String),
    placeholder: dart.fieldType(core.String),
    readOnly: dart.fieldType(core.bool),
    required: dart.fieldType(core.bool),
    size: dart.fieldType(core.int)
  }));
  dart.defineExtensionAccessors(html$.EmailInputElement, [
    'autocomplete',
    'autofocus',
    'maxLength',
    'multiple',
    'pattern',
    'placeholder',
    'readOnly',
    'required',
    'size'
  ]);
  html$.PasswordInputElement = class PasswordInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "password"});
    }
  };
  (html$.PasswordInputElement[dart.mixinNew] = function() {
  }).prototype = html$.PasswordInputElement.prototype;
  dart.addTypeTests(html$.PasswordInputElement);
  html$.PasswordInputElement[dart.implements] = () => [html$.TextInputElementBase];
  html$.RangeInputElementBase = class RangeInputElementBase extends core.Object {
    get max() {
      return this[max$0];
    }
    set max(value) {
      this[max$0] = value;
    }
    get min() {
      return this[min$0];
    }
    set min(value) {
      this[min$0] = value;
    }
    get step() {
      return this[step$];
    }
    set step(value) {
      this[step$] = value;
    }
    get valueAsNumber() {
      return this[valueAsNumber$];
    }
    set valueAsNumber(value) {
      this[valueAsNumber$] = value;
    }
  };
  (html$.RangeInputElementBase.new = function() {
    this[max$0] = null;
    this[min$0] = null;
    this[step$] = null;
    this[valueAsNumber$] = null;
  }).prototype = html$.RangeInputElementBase.prototype;
  dart.addTypeTests(html$.RangeInputElementBase);
  const max$0 = Symbol("RangeInputElementBase.max");
  const min$0 = Symbol("RangeInputElementBase.min");
  const step$ = Symbol("RangeInputElementBase.step");
  const valueAsNumber$ = Symbol("RangeInputElementBase.valueAsNumber");
  html$.RangeInputElementBase[dart.implements] = () => [html$.InputElementBase];
  dart.setFieldSignature(html$.RangeInputElementBase, () => ({
    __proto__: dart.getFields(html$.RangeInputElementBase.__proto__),
    max: dart.fieldType(core.String),
    min: dart.fieldType(core.String),
    step: dart.fieldType(core.String),
    valueAsNumber: dart.fieldType(core.num)
  }));
  dart.defineExtensionAccessors(html$.RangeInputElementBase, ['max', 'min', 'step', 'valueAsNumber']);
  html$.DateInputElement = class DateInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "date"});
    }
    get valueAsDate() {
      return this[valueAsDate];
    }
    set valueAsDate(value) {
      this[valueAsDate] = value;
    }
    get readOnly() {
      return this[readOnly$2];
    }
    set readOnly(value) {
      this[readOnly$2] = value;
    }
    get required() {
      return this[required$2];
    }
    set required(value) {
      this[required$2] = value;
    }
    static get supported() {
      return html$.InputElement.new({type: "date"}).type === "date";
    }
  };
  (html$.DateInputElement[dart.mixinNew] = function() {
    this[valueAsDate] = null;
    this[readOnly$2] = null;
    this[required$2] = null;
  }).prototype = html$.DateInputElement.prototype;
  dart.addTypeTests(html$.DateInputElement);
  const valueAsDate = Symbol("DateInputElement.valueAsDate");
  const readOnly$2 = Symbol("DateInputElement.readOnly");
  const required$2 = Symbol("DateInputElement.required");
  html$.DateInputElement[dart.implements] = () => [html$.RangeInputElementBase];
  dart.setFieldSignature(html$.DateInputElement, () => ({
    __proto__: dart.getFields(html$.DateInputElement.__proto__),
    valueAsDate: dart.fieldType(core.DateTime),
    readOnly: dart.fieldType(core.bool),
    required: dart.fieldType(core.bool)
  }));
  dart.defineExtensionAccessors(html$.DateInputElement, ['valueAsDate', 'readOnly', 'required']);
  html$.MonthInputElement = class MonthInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "month"});
    }
    get valueAsDate() {
      return this[valueAsDate$];
    }
    set valueAsDate(value) {
      this[valueAsDate$] = value;
    }
    get readOnly() {
      return this[readOnly$3];
    }
    set readOnly(value) {
      this[readOnly$3] = value;
    }
    get required() {
      return this[required$3];
    }
    set required(value) {
      this[required$3] = value;
    }
    static get supported() {
      return html$.InputElement.new({type: "month"}).type === "month";
    }
  };
  (html$.MonthInputElement[dart.mixinNew] = function() {
    this[valueAsDate$] = null;
    this[readOnly$3] = null;
    this[required$3] = null;
  }).prototype = html$.MonthInputElement.prototype;
  dart.addTypeTests(html$.MonthInputElement);
  const valueAsDate$ = Symbol("MonthInputElement.valueAsDate");
  const readOnly$3 = Symbol("MonthInputElement.readOnly");
  const required$3 = Symbol("MonthInputElement.required");
  html$.MonthInputElement[dart.implements] = () => [html$.RangeInputElementBase];
  dart.setFieldSignature(html$.MonthInputElement, () => ({
    __proto__: dart.getFields(html$.MonthInputElement.__proto__),
    valueAsDate: dart.fieldType(core.DateTime),
    readOnly: dart.fieldType(core.bool),
    required: dart.fieldType(core.bool)
  }));
  dart.defineExtensionAccessors(html$.MonthInputElement, ['valueAsDate', 'readOnly', 'required']);
  html$.WeekInputElement = class WeekInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "week"});
    }
    get valueAsDate() {
      return this[valueAsDate$0];
    }
    set valueAsDate(value) {
      this[valueAsDate$0] = value;
    }
    get readOnly() {
      return this[readOnly$4];
    }
    set readOnly(value) {
      this[readOnly$4] = value;
    }
    get required() {
      return this[required$4];
    }
    set required(value) {
      this[required$4] = value;
    }
    static get supported() {
      return html$.InputElement.new({type: "week"}).type === "week";
    }
  };
  (html$.WeekInputElement[dart.mixinNew] = function() {
    this[valueAsDate$0] = null;
    this[readOnly$4] = null;
    this[required$4] = null;
  }).prototype = html$.WeekInputElement.prototype;
  dart.addTypeTests(html$.WeekInputElement);
  const valueAsDate$0 = Symbol("WeekInputElement.valueAsDate");
  const readOnly$4 = Symbol("WeekInputElement.readOnly");
  const required$4 = Symbol("WeekInputElement.required");
  html$.WeekInputElement[dart.implements] = () => [html$.RangeInputElementBase];
  dart.setFieldSignature(html$.WeekInputElement, () => ({
    __proto__: dart.getFields(html$.WeekInputElement.__proto__),
    valueAsDate: dart.fieldType(core.DateTime),
    readOnly: dart.fieldType(core.bool),
    required: dart.fieldType(core.bool)
  }));
  dart.defineExtensionAccessors(html$.WeekInputElement, ['valueAsDate', 'readOnly', 'required']);
  html$.TimeInputElement = class TimeInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "time"});
    }
    get valueAsDate() {
      return this[valueAsDate$1];
    }
    set valueAsDate(value) {
      this[valueAsDate$1] = value;
    }
    get readOnly() {
      return this[readOnly$5];
    }
    set readOnly(value) {
      this[readOnly$5] = value;
    }
    get required() {
      return this[required$5];
    }
    set required(value) {
      this[required$5] = value;
    }
    static get supported() {
      return html$.InputElement.new({type: "time"}).type === "time";
    }
  };
  (html$.TimeInputElement[dart.mixinNew] = function() {
    this[valueAsDate$1] = null;
    this[readOnly$5] = null;
    this[required$5] = null;
  }).prototype = html$.TimeInputElement.prototype;
  dart.addTypeTests(html$.TimeInputElement);
  const valueAsDate$1 = Symbol("TimeInputElement.valueAsDate");
  const readOnly$5 = Symbol("TimeInputElement.readOnly");
  const required$5 = Symbol("TimeInputElement.required");
  html$.TimeInputElement[dart.implements] = () => [html$.RangeInputElementBase];
  dart.setFieldSignature(html$.TimeInputElement, () => ({
    __proto__: dart.getFields(html$.TimeInputElement.__proto__),
    valueAsDate: dart.fieldType(core.DateTime),
    readOnly: dart.fieldType(core.bool),
    required: dart.fieldType(core.bool)
  }));
  dart.defineExtensionAccessors(html$.TimeInputElement, ['valueAsDate', 'readOnly', 'required']);
  html$.LocalDateTimeInputElement = class LocalDateTimeInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "datetime-local"});
    }
    get readOnly() {
      return this[readOnly$6];
    }
    set readOnly(value) {
      this[readOnly$6] = value;
    }
    get required() {
      return this[required$6];
    }
    set required(value) {
      this[required$6] = value;
    }
    static get supported() {
      return html$.InputElement.new({type: "datetime-local"}).type === "datetime-local";
    }
  };
  (html$.LocalDateTimeInputElement[dart.mixinNew] = function() {
    this[readOnly$6] = null;
    this[required$6] = null;
  }).prototype = html$.LocalDateTimeInputElement.prototype;
  dart.addTypeTests(html$.LocalDateTimeInputElement);
  const readOnly$6 = Symbol("LocalDateTimeInputElement.readOnly");
  const required$6 = Symbol("LocalDateTimeInputElement.required");
  html$.LocalDateTimeInputElement[dart.implements] = () => [html$.RangeInputElementBase];
  dart.setFieldSignature(html$.LocalDateTimeInputElement, () => ({
    __proto__: dart.getFields(html$.LocalDateTimeInputElement.__proto__),
    readOnly: dart.fieldType(core.bool),
    required: dart.fieldType(core.bool)
  }));
  dart.defineExtensionAccessors(html$.LocalDateTimeInputElement, ['readOnly', 'required']);
  html$.NumberInputElement = class NumberInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "number"});
    }
    get placeholder() {
      return this[placeholder$2];
    }
    set placeholder(value) {
      this[placeholder$2] = value;
    }
    get readOnly() {
      return this[readOnly$7];
    }
    set readOnly(value) {
      this[readOnly$7] = value;
    }
    get required() {
      return this[required$7];
    }
    set required(value) {
      this[required$7] = value;
    }
    static get supported() {
      return html$.InputElement.new({type: "number"}).type === "number";
    }
  };
  (html$.NumberInputElement[dart.mixinNew] = function() {
    this[placeholder$2] = null;
    this[readOnly$7] = null;
    this[required$7] = null;
  }).prototype = html$.NumberInputElement.prototype;
  dart.addTypeTests(html$.NumberInputElement);
  const placeholder$2 = Symbol("NumberInputElement.placeholder");
  const readOnly$7 = Symbol("NumberInputElement.readOnly");
  const required$7 = Symbol("NumberInputElement.required");
  html$.NumberInputElement[dart.implements] = () => [html$.RangeInputElementBase];
  dart.setFieldSignature(html$.NumberInputElement, () => ({
    __proto__: dart.getFields(html$.NumberInputElement.__proto__),
    placeholder: dart.fieldType(core.String),
    readOnly: dart.fieldType(core.bool),
    required: dart.fieldType(core.bool)
  }));
  dart.defineExtensionAccessors(html$.NumberInputElement, ['placeholder', 'readOnly', 'required']);
  html$.RangeInputElement = class RangeInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "range"});
    }
    static get supported() {
      return html$.InputElement.new({type: "range"}).type === "range";
    }
  };
  (html$.RangeInputElement[dart.mixinNew] = function() {
  }).prototype = html$.RangeInputElement.prototype;
  dart.addTypeTests(html$.RangeInputElement);
  html$.RangeInputElement[dart.implements] = () => [html$.RangeInputElementBase];
  html$.CheckboxInputElement = class CheckboxInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "checkbox"});
    }
    get checked() {
      return this[checked$0];
    }
    set checked(value) {
      this[checked$0] = value;
    }
    get required() {
      return this[required$8];
    }
    set required(value) {
      this[required$8] = value;
    }
  };
  (html$.CheckboxInputElement[dart.mixinNew] = function() {
    this[checked$0] = null;
    this[required$8] = null;
  }).prototype = html$.CheckboxInputElement.prototype;
  dart.addTypeTests(html$.CheckboxInputElement);
  const checked$0 = Symbol("CheckboxInputElement.checked");
  const required$8 = Symbol("CheckboxInputElement.required");
  html$.CheckboxInputElement[dart.implements] = () => [html$.InputElementBase];
  dart.setFieldSignature(html$.CheckboxInputElement, () => ({
    __proto__: dart.getFields(html$.CheckboxInputElement.__proto__),
    checked: dart.fieldType(core.bool),
    required: dart.fieldType(core.bool)
  }));
  dart.defineExtensionAccessors(html$.CheckboxInputElement, ['checked', 'required']);
  html$.RadioButtonInputElement = class RadioButtonInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "radio"});
    }
    get checked() {
      return this[checked$1];
    }
    set checked(value) {
      this[checked$1] = value;
    }
    get required() {
      return this[required$9];
    }
    set required(value) {
      this[required$9] = value;
    }
  };
  (html$.RadioButtonInputElement[dart.mixinNew] = function() {
    this[checked$1] = null;
    this[required$9] = null;
  }).prototype = html$.RadioButtonInputElement.prototype;
  dart.addTypeTests(html$.RadioButtonInputElement);
  const checked$1 = Symbol("RadioButtonInputElement.checked");
  const required$9 = Symbol("RadioButtonInputElement.required");
  html$.RadioButtonInputElement[dart.implements] = () => [html$.InputElementBase];
  dart.setFieldSignature(html$.RadioButtonInputElement, () => ({
    __proto__: dart.getFields(html$.RadioButtonInputElement.__proto__),
    checked: dart.fieldType(core.bool),
    required: dart.fieldType(core.bool)
  }));
  dart.defineExtensionAccessors(html$.RadioButtonInputElement, ['checked', 'required']);
  html$.FileUploadInputElement = class FileUploadInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "file"});
    }
    get accept() {
      return this[accept$];
    }
    set accept(value) {
      this[accept$] = value;
    }
    get multiple() {
      return this[multiple$0];
    }
    set multiple(value) {
      this[multiple$0] = value;
    }
    get required() {
      return this[required$10];
    }
    set required(value) {
      this[required$10] = value;
    }
    get files() {
      return this[files$0];
    }
    set files(value) {
      this[files$0] = value;
    }
  };
  (html$.FileUploadInputElement[dart.mixinNew] = function() {
    this[accept$] = null;
    this[multiple$0] = null;
    this[required$10] = null;
    this[files$0] = null;
  }).prototype = html$.FileUploadInputElement.prototype;
  dart.addTypeTests(html$.FileUploadInputElement);
  const accept$ = Symbol("FileUploadInputElement.accept");
  const multiple$0 = Symbol("FileUploadInputElement.multiple");
  const required$10 = Symbol("FileUploadInputElement.required");
  const files$0 = Symbol("FileUploadInputElement.files");
  html$.FileUploadInputElement[dart.implements] = () => [html$.InputElementBase];
  dart.setFieldSignature(html$.FileUploadInputElement, () => ({
    __proto__: dart.getFields(html$.FileUploadInputElement.__proto__),
    accept: dart.fieldType(core.String),
    multiple: dart.fieldType(core.bool),
    required: dart.fieldType(core.bool),
    files: dart.fieldType(ListOfFile())
  }));
  dart.defineExtensionAccessors(html$.FileUploadInputElement, ['accept', 'multiple', 'required', 'files']);
  html$.SubmitButtonInputElement = class SubmitButtonInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "submit"});
    }
    get formAction() {
      return this[formAction$0];
    }
    set formAction(value) {
      this[formAction$0] = value;
    }
    get formEnctype() {
      return this[formEnctype$0];
    }
    set formEnctype(value) {
      this[formEnctype$0] = value;
    }
    get formMethod() {
      return this[formMethod$0];
    }
    set formMethod(value) {
      this[formMethod$0] = value;
    }
    get formNoValidate() {
      return this[formNoValidate$0];
    }
    set formNoValidate(value) {
      this[formNoValidate$0] = value;
    }
    get formTarget() {
      return this[formTarget$0];
    }
    set formTarget(value) {
      this[formTarget$0] = value;
    }
  };
  (html$.SubmitButtonInputElement[dart.mixinNew] = function() {
    this[formAction$0] = null;
    this[formEnctype$0] = null;
    this[formMethod$0] = null;
    this[formNoValidate$0] = null;
    this[formTarget$0] = null;
  }).prototype = html$.SubmitButtonInputElement.prototype;
  dart.addTypeTests(html$.SubmitButtonInputElement);
  const formAction$0 = Symbol("SubmitButtonInputElement.formAction");
  const formEnctype$0 = Symbol("SubmitButtonInputElement.formEnctype");
  const formMethod$0 = Symbol("SubmitButtonInputElement.formMethod");
  const formNoValidate$0 = Symbol("SubmitButtonInputElement.formNoValidate");
  const formTarget$0 = Symbol("SubmitButtonInputElement.formTarget");
  html$.SubmitButtonInputElement[dart.implements] = () => [html$.InputElementBase];
  dart.setFieldSignature(html$.SubmitButtonInputElement, () => ({
    __proto__: dart.getFields(html$.SubmitButtonInputElement.__proto__),
    formAction: dart.fieldType(core.String),
    formEnctype: dart.fieldType(core.String),
    formMethod: dart.fieldType(core.String),
    formNoValidate: dart.fieldType(core.bool),
    formTarget: dart.fieldType(core.String)
  }));
  dart.defineExtensionAccessors(html$.SubmitButtonInputElement, [
    'formAction',
    'formEnctype',
    'formMethod',
    'formNoValidate',
    'formTarget'
  ]);
  html$.ImageButtonInputElement = class ImageButtonInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "image"});
    }
    get alt() {
      return this[alt$1];
    }
    set alt(value) {
      this[alt$1] = value;
    }
    get formAction() {
      return this[formAction$1];
    }
    set formAction(value) {
      this[formAction$1] = value;
    }
    get formEnctype() {
      return this[formEnctype$1];
    }
    set formEnctype(value) {
      this[formEnctype$1] = value;
    }
    get formMethod() {
      return this[formMethod$1];
    }
    set formMethod(value) {
      this[formMethod$1] = value;
    }
    get formNoValidate() {
      return this[formNoValidate$1];
    }
    set formNoValidate(value) {
      this[formNoValidate$1] = value;
    }
    get formTarget() {
      return this[formTarget$1];
    }
    set formTarget(value) {
      this[formTarget$1] = value;
    }
    get height() {
      return this[height$5];
    }
    set height(value) {
      this[height$5] = value;
    }
    get src() {
      return this[src$3];
    }
    set src(value) {
      this[src$3] = value;
    }
    get width() {
      return this[width$5];
    }
    set width(value) {
      this[width$5] = value;
    }
  };
  (html$.ImageButtonInputElement[dart.mixinNew] = function() {
    this[alt$1] = null;
    this[formAction$1] = null;
    this[formEnctype$1] = null;
    this[formMethod$1] = null;
    this[formNoValidate$1] = null;
    this[formTarget$1] = null;
    this[height$5] = null;
    this[src$3] = null;
    this[width$5] = null;
  }).prototype = html$.ImageButtonInputElement.prototype;
  dart.addTypeTests(html$.ImageButtonInputElement);
  const alt$1 = Symbol("ImageButtonInputElement.alt");
  const formAction$1 = Symbol("ImageButtonInputElement.formAction");
  const formEnctype$1 = Symbol("ImageButtonInputElement.formEnctype");
  const formMethod$1 = Symbol("ImageButtonInputElement.formMethod");
  const formNoValidate$1 = Symbol("ImageButtonInputElement.formNoValidate");
  const formTarget$1 = Symbol("ImageButtonInputElement.formTarget");
  const height$5 = Symbol("ImageButtonInputElement.height");
  const src$3 = Symbol("ImageButtonInputElement.src");
  const width$5 = Symbol("ImageButtonInputElement.width");
  html$.ImageButtonInputElement[dart.implements] = () => [html$.InputElementBase];
  dart.setFieldSignature(html$.ImageButtonInputElement, () => ({
    __proto__: dart.getFields(html$.ImageButtonInputElement.__proto__),
    alt: dart.fieldType(core.String),
    formAction: dart.fieldType(core.String),
    formEnctype: dart.fieldType(core.String),
    formMethod: dart.fieldType(core.String),
    formNoValidate: dart.fieldType(core.bool),
    formTarget: dart.fieldType(core.String),
    height: dart.fieldType(core.int),
    src: dart.fieldType(core.String),
    width: dart.fieldType(core.int)
  }));
  dart.defineExtensionAccessors(html$.ImageButtonInputElement, [
    'alt',
    'formAction',
    'formEnctype',
    'formMethod',
    'formNoValidate',
    'formTarget',
    'height',
    'src',
    'width'
  ]);
  html$.ResetButtonInputElement = class ResetButtonInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "reset"});
    }
  };
  (html$.ResetButtonInputElement[dart.mixinNew] = function() {
  }).prototype = html$.ResetButtonInputElement.prototype;
  dart.addTypeTests(html$.ResetButtonInputElement);
  html$.ResetButtonInputElement[dart.implements] = () => [html$.InputElementBase];
  html$.ButtonInputElement = class ButtonInputElement extends core.Object {
    static new() {
      return html$.InputElement.new({type: "button"});
    }
  };
  (html$.ButtonInputElement[dart.mixinNew] = function() {
  }).prototype = html$.ButtonInputElement.prototype;
  dart.addTypeTests(html$.ButtonInputElement);
  html$.ButtonInputElement[dart.implements] = () => [html$.InputElementBase];
  const _registerForeignFetch_1 = Symbol('_registerForeignFetch_1');
  html$.InstallEvent = class InstallEvent$ extends html$.ExtendableEvent {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.InstallEvent._create_1(type, eventInitDict_1);
      }
      return html$.InstallEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new InstallEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new InstallEvent(type);
    }
    [$registerForeignFetch](options) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[_registerForeignFetch_1](options_1);
      return;
    }
    [_registerForeignFetch_1](...args) {
      return this.registerForeignFetch.apply(this, args);
    }
  };
  dart.addTypeTests(html$.InstallEvent);
  dart.setMethodSignature(html$.InstallEvent, () => ({
    __proto__: dart.getMethods(html$.InstallEvent.__proto__),
    [$registerForeignFetch]: dart.fnType(dart.void, [core.Map]),
    [_registerForeignFetch_1]: dart.fnType(dart.void, [dart.dynamic])
  }));
  dart.registerExtension("InstallEvent", html$.InstallEvent);
  html$.IntersectionObserver = class IntersectionObserver$ extends _interceptors.Interceptor {
    static new(callback, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return html$.IntersectionObserver._create_1(callback, options_1);
      }
      return html$.IntersectionObserver._create_2(callback);
    }
    static _create_1(callback, options) {
      return new IntersectionObserver(callback, options);
    }
    static _create_2(callback) {
      return new IntersectionObserver(callback);
    }
    get [$root]() {
      return this.root;
    }
    get [$rootMargin]() {
      return this.rootMargin;
    }
    get [$thresholds]() {
      return this.thresholds;
    }
    [$disconnect](...args) {
      return this.disconnect.apply(this, args);
    }
    [$observe](...args) {
      return this.observe.apply(this, args);
    }
    [$takeRecords](...args) {
      return this.takeRecords.apply(this, args);
    }
    [$unobserve](...args) {
      return this.unobserve.apply(this, args);
    }
  };
  dart.addTypeTests(html$.IntersectionObserver);
  const root$ = Symbol("IntersectionObserver.root");
  const rootMargin = Symbol("IntersectionObserver.rootMargin");
  const thresholds = Symbol("IntersectionObserver.thresholds");
  dart.setMethodSignature(html$.IntersectionObserver, () => ({
    __proto__: dart.getMethods(html$.IntersectionObserver.__proto__),
    [$disconnect]: dart.fnType(dart.void, []),
    [$observe]: dart.fnType(dart.void, [html$.Element]),
    [$takeRecords]: dart.fnType(core.List$(html$.IntersectionObserverEntry), []),
    [$unobserve]: dart.fnType(dart.void, [html$.Element])
  }));
  dart.setFieldSignature(html$.IntersectionObserver, () => ({
    __proto__: dart.getFields(html$.IntersectionObserver.__proto__),
    [$root]: dart.finalFieldType(html$.Element),
    [$rootMargin]: dart.finalFieldType(core.String),
    [$thresholds]: dart.finalFieldType(ListOfnum())
  }));
  dart.registerExtension("IntersectionObserver", html$.IntersectionObserver);
  html$.IntersectionObserverEntry = class IntersectionObserverEntry extends _interceptors.Interceptor {
    get [$boundingClientRect]() {
      return this.boundingClientRect;
    }
    get [$intersectionRatio]() {
      return this.intersectionRatio;
    }
    get [$intersectionRect]() {
      return this.intersectionRect;
    }
    get [$isIntersecting]() {
      return this.isIntersecting;
    }
    get [$rootBounds]() {
      return this.rootBounds;
    }
    get [$target]() {
      return this.target;
    }
    get [$time]() {
      return this.time;
    }
  };
  dart.addTypeTests(html$.IntersectionObserverEntry);
  const boundingClientRect = Symbol("IntersectionObserverEntry.boundingClientRect");
  const intersectionRatio = Symbol("IntersectionObserverEntry.intersectionRatio");
  const intersectionRect = Symbol("IntersectionObserverEntry.intersectionRect");
  const isIntersecting = Symbol("IntersectionObserverEntry.isIntersecting");
  const rootBounds = Symbol("IntersectionObserverEntry.rootBounds");
  const target$3 = Symbol("IntersectionObserverEntry.target");
  const time$ = Symbol("IntersectionObserverEntry.time");
  dart.setFieldSignature(html$.IntersectionObserverEntry, () => ({
    __proto__: dart.getFields(html$.IntersectionObserverEntry.__proto__),
    [$boundingClientRect]: dart.finalFieldType(html$.DomRectReadOnly),
    [$intersectionRatio]: dart.finalFieldType(core.num),
    [$intersectionRect]: dart.finalFieldType(html$.DomRectReadOnly),
    [$isIntersecting]: dart.finalFieldType(core.bool),
    [$rootBounds]: dart.finalFieldType(html$.DomRectReadOnly),
    [$target]: dart.finalFieldType(html$.Element),
    [$time]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("IntersectionObserverEntry", html$.IntersectionObserverEntry);
  html$.InterventionReport = class InterventionReport extends html$.ReportBody {
    get [$lineNumber]() {
      return this.lineNumber;
    }
    get [$message]() {
      return this.message;
    }
    get [$sourceFile]() {
      return this.sourceFile;
    }
  };
  dart.addTypeTests(html$.InterventionReport);
  const lineNumber$ = Symbol("InterventionReport.lineNumber");
  const message$20 = Symbol("InterventionReport.message");
  const sourceFile$ = Symbol("InterventionReport.sourceFile");
  dart.setFieldSignature(html$.InterventionReport, () => ({
    __proto__: dart.getFields(html$.InterventionReport.__proto__),
    [$lineNumber]: dart.finalFieldType(core.int),
    [$message]: dart.finalFieldType(core.String),
    [$sourceFile]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("InterventionReport", html$.InterventionReport);
  const _initKeyboardEvent = Symbol('_initKeyboardEvent');
  const _charCode = Symbol('_charCode');
  const _keyCode = Symbol('_keyCode');
  html$.KeyboardEvent = class KeyboardEvent$ extends html$.UIEvent {
    static new(type, opts) {
      let view = opts && 'view' in opts ? opts.view : null;
      let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
      let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
      let location = opts && 'location' in opts ? opts.location : null;
      let keyLocation = opts && 'keyLocation' in opts ? opts.keyLocation : null;
      let ctrlKey = opts && 'ctrlKey' in opts ? opts.ctrlKey : false;
      let altKey = opts && 'altKey' in opts ? opts.altKey : false;
      let shiftKey = opts && 'shiftKey' in opts ? opts.shiftKey : false;
      let metaKey = opts && 'metaKey' in opts ? opts.metaKey : false;
      if (view == null) {
        view = html$.window;
      }
      let t = location;
      t == null ? location = keyLocation != null ? keyLocation : 1 : t;
      let e = html$.KeyboardEvent._check(html$.document[_createEvent]("KeyboardEvent"));
      e[_initKeyboardEvent](type, canBubble, cancelable, view, "", location, ctrlKey, altKey, shiftKey, metaKey);
      return e;
    }
    [_initKeyboardEvent](type, canBubble, cancelable, view, keyIdentifier, location, ctrlKey, altKey, shiftKey, metaKey) {
      if (typeof this.initKeyEvent == "function") {
        this.initKeyEvent(type, canBubble, cancelable, view, ctrlKey, altKey, shiftKey, metaKey, 0, 0);
      } else {
        this.initKeyboardEvent(type, canBubble, cancelable, view, keyIdentifier, location, ctrlKey, altKey, shiftKey, metaKey);
      }
    }
    get [$keyCode]() {
      return this.keyCode;
    }
    get [$charCode]() {
      return this.charCode;
    }
    get [$which]() {
      return this[_which];
    }
    static __(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.KeyboardEvent._create_1(type, eventInitDict_1);
      }
      return html$.KeyboardEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new KeyboardEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new KeyboardEvent(type);
    }
    get [$altKey]() {
      return this.altKey;
    }
    get [_charCode]() {
      return this.charCode;
    }
    get [$code]() {
      return this.code;
    }
    get [$ctrlKey]() {
      return this.ctrlKey;
    }
    get [$isComposing]() {
      return this.isComposing;
    }
    get [$key]() {
      return this.key;
    }
    get [_keyCode]() {
      return this.keyCode;
    }
    get [$location]() {
      return this.location;
    }
    get [$metaKey]() {
      return this.metaKey;
    }
    get [$repeat]() {
      return this.repeat;
    }
    get [$shiftKey]() {
      return this.shiftKey;
    }
    [$getModifierState](...args) {
      return this.getModifierState.apply(this, args);
    }
  };
  dart.addTypeTests(html$.KeyboardEvent);
  const keyCode = Symbol("KeyboardEvent.keyCode");
  const charCode = Symbol("KeyboardEvent.charCode");
  const altKey = Symbol("KeyboardEvent.altKey");
  const code$ = Symbol("KeyboardEvent.code");
  const ctrlKey = Symbol("KeyboardEvent.ctrlKey");
  const isComposing = Symbol("KeyboardEvent.isComposing");
  const key$0 = Symbol("KeyboardEvent.key");
  const location$ = Symbol("KeyboardEvent.location");
  const metaKey = Symbol("KeyboardEvent.metaKey");
  const repeat = Symbol("KeyboardEvent.repeat");
  const shiftKey = Symbol("KeyboardEvent.shiftKey");
  dart.setMethodSignature(html$.KeyboardEvent, () => ({
    __proto__: dart.getMethods(html$.KeyboardEvent.__proto__),
    [_initKeyboardEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.String, core.int, core.bool, core.bool, core.bool, core.bool]),
    [$getModifierState]: dart.fnType(core.bool, [core.String])
  }));
  dart.setGetterSignature(html$.KeyboardEvent, () => ({
    __proto__: dart.getGetters(html$.KeyboardEvent.__proto__),
    [$which]: core.int
  }));
  dart.setFieldSignature(html$.KeyboardEvent, () => ({
    __proto__: dart.getFields(html$.KeyboardEvent.__proto__),
    [$keyCode]: dart.finalFieldType(core.int),
    [$charCode]: dart.finalFieldType(core.int),
    [$altKey]: dart.finalFieldType(core.bool),
    [_charCode]: dart.finalFieldType(core.int),
    [$code]: dart.finalFieldType(core.String),
    [$ctrlKey]: dart.finalFieldType(core.bool),
    [$isComposing]: dart.finalFieldType(core.bool),
    [$key]: dart.finalFieldType(core.String),
    [_keyCode]: dart.finalFieldType(core.int),
    [$location]: dart.finalFieldType(core.int),
    [$metaKey]: dart.finalFieldType(core.bool),
    [$repeat]: dart.finalFieldType(core.bool),
    [$shiftKey]: dart.finalFieldType(core.bool)
  }));
  dart.defineLazy(html$.KeyboardEvent, {
    /*html$.KeyboardEvent.DOM_KEY_LOCATION_LEFT*/get DOM_KEY_LOCATION_LEFT() {
      return 1;
    },
    /*html$.KeyboardEvent.DOM_KEY_LOCATION_NUMPAD*/get DOM_KEY_LOCATION_NUMPAD() {
      return 3;
    },
    /*html$.KeyboardEvent.DOM_KEY_LOCATION_RIGHT*/get DOM_KEY_LOCATION_RIGHT() {
      return 2;
    },
    /*html$.KeyboardEvent.DOM_KEY_LOCATION_STANDARD*/get DOM_KEY_LOCATION_STANDARD() {
      return 0;
    }
  });
  dart.registerExtension("KeyboardEvent", html$.KeyboardEvent);
  html$.KeyframeEffectReadOnly = class KeyframeEffectReadOnly$ extends html$.AnimationEffectReadOnly {
    static new(target, effect, options) {
      if (options === void 0) options = null;
      if (options != null) {
        return html$.KeyframeEffectReadOnly._create_1(target, effect, options);
      }
      return html$.KeyframeEffectReadOnly._create_2(target, effect);
    }
    static _create_1(target, effect, options) {
      return new KeyframeEffectReadOnly(target, effect, options);
    }
    static _create_2(target, effect) {
      return new KeyframeEffectReadOnly(target, effect);
    }
  };
  dart.addTypeTests(html$.KeyframeEffectReadOnly);
  dart.registerExtension("KeyframeEffectReadOnly", html$.KeyframeEffectReadOnly);
  html$.KeyframeEffect = class KeyframeEffect$ extends html$.KeyframeEffectReadOnly {
    static new(target, effect, options) {
      if (options === void 0) options = null;
      if (options != null) {
        return html$.KeyframeEffect._create_1(target, effect, options);
      }
      return html$.KeyframeEffect._create_2(target, effect);
    }
    static _create_1(target, effect, options) {
      return new KeyframeEffect(target, effect, options);
    }
    static _create_2(target, effect) {
      return new KeyframeEffect(target, effect);
    }
  };
  dart.addTypeTests(html$.KeyframeEffect);
  dart.registerExtension("KeyframeEffect", html$.KeyframeEffect);
  html$.LIElement = class LIElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("li");
    }
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
  };
  (html$.LIElement.created = function() {
    this[value$8] = null;
    html$.LIElement.__proto__.created.call(this);
  }).prototype = html$.LIElement.prototype;
  dart.addTypeTests(html$.LIElement);
  const value$8 = Symbol("LIElement.value");
  dart.setFieldSignature(html$.LIElement, () => ({
    __proto__: dart.getFields(html$.LIElement.__proto__),
    [$value]: dart.fieldType(core.int)
  }));
  dart.registerExtension("HTMLLIElement", html$.LIElement);
  html$.LabelElement = class LabelElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("label");
    }
    get [$control]() {
      return this.control;
    }
    get [$form]() {
      return this.form;
    }
    get [$htmlFor]() {
      return this.htmlFor;
    }
    set [$htmlFor](value) {
      this.htmlFor = value;
    }
  };
  (html$.LabelElement.created = function() {
    this[control] = null;
    this[form$1] = null;
    this[htmlFor] = null;
    html$.LabelElement.__proto__.created.call(this);
  }).prototype = html$.LabelElement.prototype;
  dart.addTypeTests(html$.LabelElement);
  const control = Symbol("LabelElement.control");
  const form$1 = Symbol("LabelElement.form");
  const htmlFor = Symbol("LabelElement.htmlFor");
  dart.setFieldSignature(html$.LabelElement, () => ({
    __proto__: dart.getFields(html$.LabelElement.__proto__),
    [$control]: dart.finalFieldType(html$.HtmlElement),
    [$form]: dart.finalFieldType(html$.FormElement),
    [$htmlFor]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLLabelElement", html$.LabelElement);
  html$.LegendElement = class LegendElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("legend");
    }
    get [$form]() {
      return this.form;
    }
  };
  (html$.LegendElement.created = function() {
    this[form$2] = null;
    html$.LegendElement.__proto__.created.call(this);
  }).prototype = html$.LegendElement.prototype;
  dart.addTypeTests(html$.LegendElement);
  const form$2 = Symbol("LegendElement.form");
  dart.setFieldSignature(html$.LegendElement, () => ({
    __proto__: dart.getFields(html$.LegendElement.__proto__),
    [$form]: dart.finalFieldType(html$.FormElement)
  }));
  dart.registerExtension("HTMLLegendElement", html$.LegendElement);
  html$.LinearAccelerationSensor = class LinearAccelerationSensor$ extends html$.Accelerometer {
    static new(sensorOptions) {
      if (sensorOptions === void 0) sensorOptions = null;
      if (sensorOptions != null) {
        let sensorOptions_1 = html_common.convertDartToNative_Dictionary(sensorOptions);
        return html$.LinearAccelerationSensor._create_1(sensorOptions_1);
      }
      return html$.LinearAccelerationSensor._create_2();
    }
    static _create_1(sensorOptions) {
      return new LinearAccelerationSensor(sensorOptions);
    }
    static _create_2() {
      return new LinearAccelerationSensor();
    }
  };
  dart.addTypeTests(html$.LinearAccelerationSensor);
  dart.registerExtension("LinearAccelerationSensor", html$.LinearAccelerationSensor);
  html$.LinkElement = class LinkElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("link");
    }
    get [$as]() {
      return this.as;
    }
    set [$as](value) {
      this.as = value;
    }
    get [$crossOrigin]() {
      return this.crossOrigin;
    }
    set [$crossOrigin](value) {
      this.crossOrigin = value;
    }
    get [$disabled]() {
      return this.disabled;
    }
    set [$disabled](value) {
      this.disabled = value;
    }
    get [$href]() {
      return this.href;
    }
    set [$href](value) {
      this.href = value;
    }
    get [$hreflang]() {
      return this.hreflang;
    }
    set [$hreflang](value) {
      this.hreflang = value;
    }
    get [$import]() {
      return this.import;
    }
    get [$integrity]() {
      return this.integrity;
    }
    set [$integrity](value) {
      this.integrity = value;
    }
    get [$media]() {
      return this.media;
    }
    set [$media](value) {
      this.media = value;
    }
    get [$referrerPolicy]() {
      return this.referrerPolicy;
    }
    set [$referrerPolicy](value) {
      this.referrerPolicy = value;
    }
    get [$rel]() {
      return this.rel;
    }
    set [$rel](value) {
      this.rel = value;
    }
    get [$relList]() {
      return this.relList;
    }
    get [$scope]() {
      return this.scope;
    }
    set [$scope](value) {
      this.scope = value;
    }
    get [$sheet]() {
      return this.sheet;
    }
    get [$sizes]() {
      return this.sizes;
    }
    get [$type]() {
      return this.type;
    }
    set [$type](value) {
      this.type = value;
    }
    get [$supportsImport]() {
      return "import" in this;
    }
  };
  (html$.LinkElement.created = function() {
    this[as] = null;
    this[crossOrigin$0] = null;
    this[disabled$4] = null;
    this[href$4] = null;
    this[hreflang$] = null;
    this[import$] = null;
    this[integrity] = null;
    this[media$1] = null;
    this[referrerPolicy$2] = null;
    this[rel$0] = null;
    this[relList] = null;
    this[scope] = null;
    this[sheet] = null;
    this[sizes$] = null;
    this[type$16] = null;
    html$.LinkElement.__proto__.created.call(this);
  }).prototype = html$.LinkElement.prototype;
  dart.addTypeTests(html$.LinkElement);
  const as = Symbol("LinkElement.as");
  const crossOrigin$0 = Symbol("LinkElement.crossOrigin");
  const disabled$4 = Symbol("LinkElement.disabled");
  const href$4 = Symbol("LinkElement.href");
  const hreflang$ = Symbol("LinkElement.hreflang");
  const import$ = Symbol("LinkElement.import");
  const integrity = Symbol("LinkElement.integrity");
  const media$1 = Symbol("LinkElement.media");
  const referrerPolicy$2 = Symbol("LinkElement.referrerPolicy");
  const rel$0 = Symbol("LinkElement.rel");
  const relList = Symbol("LinkElement.relList");
  const scope = Symbol("LinkElement.scope");
  const sheet = Symbol("LinkElement.sheet");
  const sizes$ = Symbol("LinkElement.sizes");
  const type$16 = Symbol("LinkElement.type");
  dart.setGetterSignature(html$.LinkElement, () => ({
    __proto__: dart.getGetters(html$.LinkElement.__proto__),
    [$supportsImport]: core.bool
  }));
  dart.setFieldSignature(html$.LinkElement, () => ({
    __proto__: dart.getFields(html$.LinkElement.__proto__),
    [$as]: dart.fieldType(core.String),
    [$crossOrigin]: dart.fieldType(core.String),
    [$disabled]: dart.fieldType(core.bool),
    [$href]: dart.fieldType(core.String),
    [$hreflang]: dart.fieldType(core.String),
    [$import]: dart.finalFieldType(html$.Document),
    [$integrity]: dart.fieldType(core.String),
    [$media]: dart.fieldType(core.String),
    [$referrerPolicy]: dart.fieldType(core.String),
    [$rel]: dart.fieldType(core.String),
    [$relList]: dart.finalFieldType(html$.DomTokenList),
    [$scope]: dart.fieldType(core.String),
    [$sheet]: dart.finalFieldType(html$.StyleSheet),
    [$sizes]: dart.finalFieldType(html$.DomTokenList),
    [$type]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLLinkElement", html$.LinkElement);
  html$.Location = class Location extends _interceptors.Interceptor {
    get [$ancestorOrigins]() {
      return this.ancestorOrigins;
    }
    get [$hash]() {
      return this.hash;
    }
    set [$hash](value) {
      this.hash = value;
    }
    get [$host]() {
      return this.host;
    }
    set [$host](value) {
      this.host = value;
    }
    get [$hostname]() {
      return this.hostname;
    }
    set [$hostname](value) {
      this.hostname = value;
    }
    get [$href]() {
      return this.href;
    }
    set [$href](value) {
      this.href = value;
    }
    get [$pathname]() {
      return this.pathname;
    }
    set [$pathname](value) {
      this.pathname = value;
    }
    get [$port]() {
      return this.port;
    }
    set [$port](value) {
      this.port = value;
    }
    get [$protocol]() {
      return this.protocol;
    }
    set [$protocol](value) {
      this.protocol = value;
    }
    get [$search]() {
      return this.search;
    }
    set [$search](value) {
      this.search = value;
    }
    get [$trustedHref]() {
      return this.trustedHref;
    }
    set [$trustedHref](value) {
      this.trustedHref = value;
    }
    [$assign](...args) {
      return this.assign.apply(this, args);
    }
    [$reload](...args) {
      return this.reload.apply(this, args);
    }
    [$replace](...args) {
      return this.replace.apply(this, args);
    }
    get [$origin]() {
      if ("origin" in this) {
        return this.origin;
      }
      return dart.str(this.protocol) + "//" + dart.str(this.host);
    }
    [$toString]() {
      return String(this);
    }
  };
  dart.addTypeTests(html$.Location);
  const ancestorOrigins = Symbol("Location.ancestorOrigins");
  const hash$1 = Symbol("Location.hash");
  const host$1 = Symbol("Location.host");
  const hostname$1 = Symbol("Location.hostname");
  const href$5 = Symbol("Location.href");
  const pathname$1 = Symbol("Location.pathname");
  const port$3 = Symbol("Location.port");
  const protocol$2 = Symbol("Location.protocol");
  const search$1 = Symbol("Location.search");
  const trustedHref = Symbol("Location.trustedHref");
  html$.Location[dart.implements] = () => [html$.LocationBase];
  dart.setMethodSignature(html$.Location, () => ({
    __proto__: dart.getMethods(html$.Location.__proto__),
    [$assign]: dart.fnType(dart.void, [], [core.String]),
    [$reload]: dart.fnType(dart.void, []),
    [$replace]: dart.fnType(dart.void, [core.String])
  }));
  dart.setGetterSignature(html$.Location, () => ({
    __proto__: dart.getGetters(html$.Location.__proto__),
    [$origin]: core.String
  }));
  dart.setFieldSignature(html$.Location, () => ({
    __proto__: dart.getFields(html$.Location.__proto__),
    [$ancestorOrigins]: dart.finalFieldType(ListOfString()),
    [$hash]: dart.fieldType(core.String),
    [$host]: dart.fieldType(core.String),
    [$hostname]: dart.fieldType(core.String),
    [$href]: dart.fieldType(core.String),
    [$pathname]: dart.fieldType(core.String),
    [$port]: dart.fieldType(core.String),
    [$protocol]: dart.fieldType(core.String),
    [$search]: dart.fieldType(core.String),
    [$trustedHref]: dart.fieldType(html$.TrustedUrl)
  }));
  dart.registerExtension("Location", html$.Location);
  html$.Magnetometer = class Magnetometer$ extends html$.Sensor {
    static new(sensorOptions) {
      if (sensorOptions === void 0) sensorOptions = null;
      if (sensorOptions != null) {
        let sensorOptions_1 = html_common.convertDartToNative_Dictionary(sensorOptions);
        return html$.Magnetometer._create_1(sensorOptions_1);
      }
      return html$.Magnetometer._create_2();
    }
    static _create_1(sensorOptions) {
      return new Magnetometer(sensorOptions);
    }
    static _create_2() {
      return new Magnetometer();
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
    get [$z]() {
      return this.z;
    }
  };
  dart.addTypeTests(html$.Magnetometer);
  const x$5 = Symbol("Magnetometer.x");
  const y$5 = Symbol("Magnetometer.y");
  const z$4 = Symbol("Magnetometer.z");
  dart.setFieldSignature(html$.Magnetometer, () => ({
    __proto__: dart.getFields(html$.Magnetometer.__proto__),
    [$x]: dart.finalFieldType(core.num),
    [$y]: dart.finalFieldType(core.num),
    [$z]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("Magnetometer", html$.Magnetometer);
  html$.MapElement = class MapElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("map");
    }
    get [$areas]() {
      return this.areas;
    }
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
  };
  (html$.MapElement.created = function() {
    this[areas] = null;
    this[name$21] = null;
    html$.MapElement.__proto__.created.call(this);
  }).prototype = html$.MapElement.prototype;
  dart.addTypeTests(html$.MapElement);
  const areas = Symbol("MapElement.areas");
  const name$21 = Symbol("MapElement.name");
  dart.setFieldSignature(html$.MapElement, () => ({
    __proto__: dart.getFields(html$.MapElement.__proto__),
    [$areas]: dart.finalFieldType(ListOfNode()),
    [$name]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLMapElement", html$.MapElement);
  html$.MediaCapabilities = class MediaCapabilities extends _interceptors.Interceptor {
    [$decodingInfo](configuration) {
      let configuration_dict = html_common.convertDartToNative_Dictionary(configuration);
      return html$.promiseToFuture(html$.MediaCapabilitiesInfo, this.decodingInfo(configuration_dict));
    }
    [$encodingInfo](configuration) {
      let configuration_dict = html_common.convertDartToNative_Dictionary(configuration);
      return html$.promiseToFuture(html$.MediaCapabilitiesInfo, this.encodingInfo(configuration_dict));
    }
  };
  dart.addTypeTests(html$.MediaCapabilities);
  dart.setMethodSignature(html$.MediaCapabilities, () => ({
    __proto__: dart.getMethods(html$.MediaCapabilities.__proto__),
    [$decodingInfo]: dart.fnType(async.Future$(html$.MediaCapabilitiesInfo), [core.Map]),
    [$encodingInfo]: dart.fnType(async.Future$(html$.MediaCapabilitiesInfo), [core.Map])
  }));
  dart.registerExtension("MediaCapabilities", html$.MediaCapabilities);
  html$.MediaCapabilitiesInfo = class MediaCapabilitiesInfo extends _interceptors.Interceptor {
    get [$powerEfficient]() {
      return this.powerEfficient;
    }
    get [$smooth]() {
      return this.smooth;
    }
    get [$supported]() {
      return this.supported;
    }
  };
  dart.addTypeTests(html$.MediaCapabilitiesInfo);
  const powerEfficient = Symbol("MediaCapabilitiesInfo.powerEfficient");
  const smooth = Symbol("MediaCapabilitiesInfo.smooth");
  const supported = Symbol("MediaCapabilitiesInfo.supported");
  dart.setFieldSignature(html$.MediaCapabilitiesInfo, () => ({
    __proto__: dart.getFields(html$.MediaCapabilitiesInfo.__proto__),
    [$powerEfficient]: dart.finalFieldType(core.bool),
    [$smooth]: dart.finalFieldType(core.bool),
    [$supported]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("MediaCapabilitiesInfo", html$.MediaCapabilitiesInfo);
  html$.MediaDeviceInfo = class MediaDeviceInfo extends _interceptors.Interceptor {
    get [$deviceId]() {
      return this.deviceId;
    }
    get [$groupId]() {
      return this.groupId;
    }
    get [$kind]() {
      return this.kind;
    }
    get [$label]() {
      return this.label;
    }
  };
  dart.addTypeTests(html$.MediaDeviceInfo);
  const deviceId = Symbol("MediaDeviceInfo.deviceId");
  const groupId = Symbol("MediaDeviceInfo.groupId");
  const kind$0 = Symbol("MediaDeviceInfo.kind");
  const label$0 = Symbol("MediaDeviceInfo.label");
  dart.setFieldSignature(html$.MediaDeviceInfo, () => ({
    __proto__: dart.getFields(html$.MediaDeviceInfo.__proto__),
    [$deviceId]: dart.finalFieldType(core.String),
    [$groupId]: dart.finalFieldType(core.String),
    [$kind]: dart.finalFieldType(core.String),
    [$label]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("MediaDeviceInfo", html$.MediaDeviceInfo);
  const _getSupportedConstraints_1 = Symbol('_getSupportedConstraints_1');
  html$.MediaDevices = class MediaDevices extends html$.EventTarget {
    [$enumerateDevices]() {
      return html$.promiseToFuture(ListOfMediaDeviceInfo(), this.enumerateDevices());
    }
    [$getSupportedConstraints]() {
      return html_common.convertNativeToDart_Dictionary(this[_getSupportedConstraints_1]());
    }
    [_getSupportedConstraints_1](...args) {
      return this.getSupportedConstraints.apply(this, args);
    }
  };
  dart.addTypeTests(html$.MediaDevices);
  dart.setMethodSignature(html$.MediaDevices, () => ({
    __proto__: dart.getMethods(html$.MediaDevices.__proto__),
    [$enumerateDevices]: dart.fnType(async.Future$(core.List$(html$.MediaDeviceInfo)), []),
    [$getSupportedConstraints]: dart.fnType(core.Map, []),
    [_getSupportedConstraints_1]: dart.fnType(dart.dynamic, [])
  }));
  dart.registerExtension("MediaDevices", html$.MediaDevices);
  html$.MediaEncryptedEvent = class MediaEncryptedEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.MediaEncryptedEvent._create_1(type, eventInitDict_1);
      }
      return html$.MediaEncryptedEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new MediaEncryptedEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new MediaEncryptedEvent(type);
    }
    get [$initData]() {
      return this.initData;
    }
    get [$initDataType]() {
      return this.initDataType;
    }
  };
  dart.addTypeTests(html$.MediaEncryptedEvent);
  const initData = Symbol("MediaEncryptedEvent.initData");
  const initDataType = Symbol("MediaEncryptedEvent.initDataType");
  dart.setFieldSignature(html$.MediaEncryptedEvent, () => ({
    __proto__: dart.getFields(html$.MediaEncryptedEvent.__proto__),
    [$initData]: dart.finalFieldType(typed_data.ByteBuffer),
    [$initDataType]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("MediaEncryptedEvent", html$.MediaEncryptedEvent);
  html$.MediaError = class MediaError extends _interceptors.Interceptor {
    get [$code]() {
      return this.code;
    }
    get [$message]() {
      return this.message;
    }
  };
  dart.addTypeTests(html$.MediaError);
  const code$0 = Symbol("MediaError.code");
  const message$21 = Symbol("MediaError.message");
  dart.setFieldSignature(html$.MediaError, () => ({
    __proto__: dart.getFields(html$.MediaError.__proto__),
    [$code]: dart.finalFieldType(core.int),
    [$message]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.MediaError, {
    /*html$.MediaError.MEDIA_ERR_ABORTED*/get MEDIA_ERR_ABORTED() {
      return 1;
    },
    /*html$.MediaError.MEDIA_ERR_DECODE*/get MEDIA_ERR_DECODE() {
      return 3;
    },
    /*html$.MediaError.MEDIA_ERR_NETWORK*/get MEDIA_ERR_NETWORK() {
      return 2;
    },
    /*html$.MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED*/get MEDIA_ERR_SRC_NOT_SUPPORTED() {
      return 4;
    }
  });
  dart.registerExtension("MediaError", html$.MediaError);
  html$.MediaKeyMessageEvent = class MediaKeyMessageEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.MediaKeyMessageEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new MediaKeyMessageEvent(type, eventInitDict);
    }
    get [$message]() {
      return this.message;
    }
    get [$messageType]() {
      return this.messageType;
    }
  };
  dart.addTypeTests(html$.MediaKeyMessageEvent);
  const message$22 = Symbol("MediaKeyMessageEvent.message");
  const messageType = Symbol("MediaKeyMessageEvent.messageType");
  dart.setFieldSignature(html$.MediaKeyMessageEvent, () => ({
    __proto__: dart.getFields(html$.MediaKeyMessageEvent.__proto__),
    [$message]: dart.finalFieldType(typed_data.ByteBuffer),
    [$messageType]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("MediaKeyMessageEvent", html$.MediaKeyMessageEvent);
  const _update$ = Symbol('_update');
  html$.MediaKeySession = class MediaKeySession extends html$.EventTarget {
    get [$closed]() {
      return html$.promiseToFuture(dart.void, this.closed);
    }
    get [$expiration]() {
      return this.expiration;
    }
    get [$keyStatuses]() {
      return this.keyStatuses;
    }
    get [$sessionId]() {
      return this.sessionId;
    }
    [$close]() {
      return html$.promiseToFuture(dart.dynamic, this.close());
    }
    [$generateRequest](initDataType, initData) {
      return html$.promiseToFuture(dart.dynamic, this.generateRequest(initDataType, initData));
    }
    [$load](sessionId) {
      return html$.promiseToFuture(dart.dynamic, this.load(sessionId));
    }
    [$remove]() {
      return html$.promiseToFuture(dart.dynamic, this.remove());
    }
    [_update$](...args) {
      return this.update.apply(this, args);
    }
    get [$onMessage]() {
      return html$.MediaKeySession.messageEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.MediaKeySession);
  const expiration = Symbol("MediaKeySession.expiration");
  const keyStatuses = Symbol("MediaKeySession.keyStatuses");
  const sessionId = Symbol("MediaKeySession.sessionId");
  dart.setMethodSignature(html$.MediaKeySession, () => ({
    __proto__: dart.getMethods(html$.MediaKeySession.__proto__),
    [$close]: dart.fnType(async.Future, []),
    [$generateRequest]: dart.fnType(async.Future, [core.String, dart.dynamic]),
    [$load]: dart.fnType(async.Future, [core.String]),
    [$remove]: dart.fnType(async.Future, []),
    [_update$]: dart.fnType(async.Future, [dart.dynamic])
  }));
  dart.setGetterSignature(html$.MediaKeySession, () => ({
    __proto__: dart.getGetters(html$.MediaKeySession.__proto__),
    [$closed]: async.Future$(dart.void),
    [$onMessage]: async.Stream$(html$.MessageEvent)
  }));
  dart.setFieldSignature(html$.MediaKeySession, () => ({
    __proto__: dart.getFields(html$.MediaKeySession.__proto__),
    [$expiration]: dart.finalFieldType(core.num),
    [$keyStatuses]: dart.finalFieldType(html$.MediaKeyStatusMap),
    [$sessionId]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.MediaKeySession, {
    /*html$.MediaKeySession.messageEvent*/get messageEvent() {
      return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
    }
  });
  dart.registerExtension("MediaKeySession", html$.MediaKeySession);
  html$.MediaKeyStatusMap = class MediaKeyStatusMap extends _interceptors.Interceptor {
    get [$size]() {
      return this.size;
    }
    [$get](...args) {
      return this.get.apply(this, args);
    }
    [$has](...args) {
      return this.has.apply(this, args);
    }
  };
  dart.addTypeTests(html$.MediaKeyStatusMap);
  const size$3 = Symbol("MediaKeyStatusMap.size");
  dart.setMethodSignature(html$.MediaKeyStatusMap, () => ({
    __proto__: dart.getMethods(html$.MediaKeyStatusMap.__proto__),
    [$get]: dart.fnType(core.Object, [dart.dynamic]),
    [$has]: dart.fnType(core.bool, [dart.dynamic])
  }));
  dart.setFieldSignature(html$.MediaKeyStatusMap, () => ({
    __proto__: dart.getFields(html$.MediaKeyStatusMap.__proto__),
    [$size]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("MediaKeyStatusMap", html$.MediaKeyStatusMap);
  const _getConfiguration_1 = Symbol('_getConfiguration_1');
  html$.MediaKeySystemAccess = class MediaKeySystemAccess extends _interceptors.Interceptor {
    get [$keySystem]() {
      return this.keySystem;
    }
    [$createMediaKeys]() {
      return html$.promiseToFuture(dart.dynamic, this.createMediaKeys());
    }
    [$getConfiguration]() {
      return html_common.convertNativeToDart_Dictionary(this[_getConfiguration_1]());
    }
    [_getConfiguration_1](...args) {
      return this.getConfiguration.apply(this, args);
    }
  };
  dart.addTypeTests(html$.MediaKeySystemAccess);
  const keySystem = Symbol("MediaKeySystemAccess.keySystem");
  dart.setMethodSignature(html$.MediaKeySystemAccess, () => ({
    __proto__: dart.getMethods(html$.MediaKeySystemAccess.__proto__),
    [$createMediaKeys]: dart.fnType(async.Future, []),
    [$getConfiguration]: dart.fnType(core.Map, []),
    [_getConfiguration_1]: dart.fnType(dart.dynamic, [])
  }));
  dart.setFieldSignature(html$.MediaKeySystemAccess, () => ({
    __proto__: dart.getFields(html$.MediaKeySystemAccess.__proto__),
    [$keySystem]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("MediaKeySystemAccess", html$.MediaKeySystemAccess);
  const _createSession = Symbol('_createSession');
  html$.MediaKeys = class MediaKeys extends _interceptors.Interceptor {
    [_createSession](...args) {
      return this.createSession.apply(this, args);
    }
    [$getStatusForPolicy](policy) {
      return html$.promiseToFuture(dart.dynamic, this.getStatusForPolicy(policy));
    }
    [$setServerCertificate](serverCertificate) {
      return html$.promiseToFuture(dart.dynamic, this.setServerCertificate(serverCertificate));
    }
  };
  dart.addTypeTests(html$.MediaKeys);
  dart.setMethodSignature(html$.MediaKeys, () => ({
    __proto__: dart.getMethods(html$.MediaKeys.__proto__),
    [_createSession]: dart.fnType(html$.MediaKeySession, [], [core.String]),
    [$getStatusForPolicy]: dart.fnType(async.Future, [html$.MediaKeysPolicy]),
    [$setServerCertificate]: dart.fnType(async.Future, [dart.dynamic])
  }));
  dart.registerExtension("MediaKeys", html$.MediaKeys);
  html$.MediaKeysPolicy = class MediaKeysPolicy$ extends _interceptors.Interceptor {
    static new(init) {
      let init_1 = html_common.convertDartToNative_Dictionary(init);
      return html$.MediaKeysPolicy._create_1(init_1);
    }
    static _create_1(init) {
      return new MediaKeysPolicy(init);
    }
    get [$minHdcpVersion]() {
      return this.minHdcpVersion;
    }
  };
  dart.addTypeTests(html$.MediaKeysPolicy);
  const minHdcpVersion = Symbol("MediaKeysPolicy.minHdcpVersion");
  dart.setFieldSignature(html$.MediaKeysPolicy, () => ({
    __proto__: dart.getFields(html$.MediaKeysPolicy.__proto__),
    [$minHdcpVersion]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("MediaKeysPolicy", html$.MediaKeysPolicy);
  html$.MediaList = class MediaList extends _interceptors.Interceptor {
    get [$length]() {
      return this.length;
    }
    get [$mediaText]() {
      return this.mediaText;
    }
    set [$mediaText](value) {
      this.mediaText = value;
    }
    [$appendMedium](...args) {
      return this.appendMedium.apply(this, args);
    }
    [$deleteMedium](...args) {
      return this.deleteMedium.apply(this, args);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
  };
  dart.addTypeTests(html$.MediaList);
  const length$10 = Symbol("MediaList.length");
  const mediaText = Symbol("MediaList.mediaText");
  dart.setMethodSignature(html$.MediaList, () => ({
    __proto__: dart.getMethods(html$.MediaList.__proto__),
    [$appendMedium]: dart.fnType(dart.void, [core.String]),
    [$deleteMedium]: dart.fnType(dart.void, [core.String]),
    [$item]: dart.fnType(core.String, [core.int])
  }));
  dart.setFieldSignature(html$.MediaList, () => ({
    __proto__: dart.getFields(html$.MediaList.__proto__),
    [$length]: dart.finalFieldType(core.int),
    [$mediaText]: dart.fieldType(core.String)
  }));
  dart.registerExtension("MediaList", html$.MediaList);
  html$.MediaMetadata = class MediaMetadata$ extends _interceptors.Interceptor {
    static new(metadata) {
      if (metadata === void 0) metadata = null;
      if (metadata != null) {
        let metadata_1 = html_common.convertDartToNative_Dictionary(metadata);
        return html$.MediaMetadata._create_1(metadata_1);
      }
      return html$.MediaMetadata._create_2();
    }
    static _create_1(metadata) {
      return new MediaMetadata(metadata);
    }
    static _create_2() {
      return new MediaMetadata();
    }
    get [$album]() {
      return this.album;
    }
    set [$album](value) {
      this.album = value;
    }
    get [$artist]() {
      return this.artist;
    }
    set [$artist](value) {
      this.artist = value;
    }
    get [$artwork]() {
      return this.artwork;
    }
    set [$artwork](value) {
      this.artwork = value;
    }
    get [$title]() {
      return this.title;
    }
    set [$title](value) {
      this.title = value;
    }
  };
  dart.addTypeTests(html$.MediaMetadata);
  const album = Symbol("MediaMetadata.album");
  const artist = Symbol("MediaMetadata.artist");
  const artwork = Symbol("MediaMetadata.artwork");
  const title$1 = Symbol("MediaMetadata.title");
  dart.setFieldSignature(html$.MediaMetadata, () => ({
    __proto__: dart.getFields(html$.MediaMetadata.__proto__),
    [$album]: dart.fieldType(core.String),
    [$artist]: dart.fieldType(core.String),
    [$artwork]: dart.fieldType(core.List),
    [$title]: dart.fieldType(core.String)
  }));
  dart.registerExtension("MediaMetadata", html$.MediaMetadata);
  html$.MediaQueryList = class MediaQueryList extends html$.EventTarget {
    get [$matches]() {
      return this.matches;
    }
    get [$media]() {
      return this.media;
    }
    [$addListener](...args) {
      return this.addListener.apply(this, args);
    }
    [$removeListener](...args) {
      return this.removeListener.apply(this, args);
    }
    get [$onChange]() {
      return html$.MediaQueryList.changeEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.MediaQueryList);
  const matches = Symbol("MediaQueryList.matches");
  const media$2 = Symbol("MediaQueryList.media");
  dart.setMethodSignature(html$.MediaQueryList, () => ({
    __proto__: dart.getMethods(html$.MediaQueryList.__proto__),
    [$addListener]: dart.fnType(dart.void, [dart.fnType(dart.dynamic, [html$.Event])]),
    [$removeListener]: dart.fnType(dart.void, [dart.fnType(dart.dynamic, [html$.Event])])
  }));
  dart.setGetterSignature(html$.MediaQueryList, () => ({
    __proto__: dart.getGetters(html$.MediaQueryList.__proto__),
    [$onChange]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.MediaQueryList, () => ({
    __proto__: dart.getFields(html$.MediaQueryList.__proto__),
    [$matches]: dart.finalFieldType(core.bool),
    [$media]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.MediaQueryList, {
    /*html$.MediaQueryList.changeEvent*/get changeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("change"));
    }
  });
  dart.registerExtension("MediaQueryList", html$.MediaQueryList);
  html$.MediaQueryListEvent = class MediaQueryListEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.MediaQueryListEvent._create_1(type, eventInitDict_1);
      }
      return html$.MediaQueryListEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new MediaQueryListEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new MediaQueryListEvent(type);
    }
    get [$matches]() {
      return this.matches;
    }
    get [$media]() {
      return this.media;
    }
  };
  dart.addTypeTests(html$.MediaQueryListEvent);
  const matches$ = Symbol("MediaQueryListEvent.matches");
  const media$3 = Symbol("MediaQueryListEvent.media");
  dart.setFieldSignature(html$.MediaQueryListEvent, () => ({
    __proto__: dart.getFields(html$.MediaQueryListEvent.__proto__),
    [$matches]: dart.finalFieldType(core.bool),
    [$media]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("MediaQueryListEvent", html$.MediaQueryListEvent);
  html$.MediaRecorder = class MediaRecorder$ extends html$.EventTarget {
    static new(stream, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return html$.MediaRecorder._create_1(stream, options_1);
      }
      return html$.MediaRecorder._create_2(stream);
    }
    static _create_1(stream, options) {
      return new MediaRecorder(stream, options);
    }
    static _create_2(stream) {
      return new MediaRecorder(stream);
    }
    get [$audioBitsPerSecond]() {
      return this.audioBitsPerSecond;
    }
    get [$mimeType]() {
      return this.mimeType;
    }
    get [$state]() {
      return this.state;
    }
    get [$stream]() {
      return this.stream;
    }
    get [$videoBitsPerSecond]() {
      return this.videoBitsPerSecond;
    }
    [$pause](...args) {
      return this.pause.apply(this, args);
    }
    [$requestData](...args) {
      return this.requestData.apply(this, args);
    }
    [$resume](...args) {
      return this.resume.apply(this, args);
    }
    [$start](...args) {
      return this.start.apply(this, args);
    }
    [$stop](...args) {
      return this.stop.apply(this, args);
    }
    get [$onError]() {
      return html$.MediaRecorder.errorEvent.forTarget(this);
    }
    get [$onPause]() {
      return html$.MediaRecorder.pauseEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.MediaRecorder);
  const audioBitsPerSecond = Symbol("MediaRecorder.audioBitsPerSecond");
  const mimeType = Symbol("MediaRecorder.mimeType");
  const state$0 = Symbol("MediaRecorder.state");
  const stream = Symbol("MediaRecorder.stream");
  const videoBitsPerSecond = Symbol("MediaRecorder.videoBitsPerSecond");
  dart.setMethodSignature(html$.MediaRecorder, () => ({
    __proto__: dart.getMethods(html$.MediaRecorder.__proto__),
    [$pause]: dart.fnType(dart.void, []),
    [$requestData]: dart.fnType(dart.void, []),
    [$resume]: dart.fnType(dart.void, []),
    [$start]: dart.fnType(dart.void, [], [core.int]),
    [$stop]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(html$.MediaRecorder, () => ({
    __proto__: dart.getGetters(html$.MediaRecorder.__proto__),
    [$onError]: async.Stream$(html$.Event),
    [$onPause]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.MediaRecorder, () => ({
    __proto__: dart.getFields(html$.MediaRecorder.__proto__),
    [$audioBitsPerSecond]: dart.finalFieldType(core.int),
    [$mimeType]: dart.finalFieldType(core.String),
    [$state]: dart.finalFieldType(core.String),
    [$stream]: dart.finalFieldType(html$.MediaStream),
    [$videoBitsPerSecond]: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(html$.MediaRecorder, {
    /*html$.MediaRecorder.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    },
    /*html$.MediaRecorder.pauseEvent*/get pauseEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("pause"));
    }
  });
  dart.registerExtension("MediaRecorder", html$.MediaRecorder);
  html$.MediaSession = class MediaSession extends _interceptors.Interceptor {
    get [$metadata]() {
      return this.metadata;
    }
    set [$metadata](value) {
      this.metadata = value;
    }
    get [$playbackState]() {
      return this.playbackState;
    }
    set [$playbackState](value) {
      this.playbackState = value;
    }
    [$setActionHandler](...args) {
      return this.setActionHandler.apply(this, args);
    }
  };
  dart.addTypeTests(html$.MediaSession);
  const metadata = Symbol("MediaSession.metadata");
  const playbackState = Symbol("MediaSession.playbackState");
  dart.setMethodSignature(html$.MediaSession, () => ({
    __proto__: dart.getMethods(html$.MediaSession.__proto__),
    [$setActionHandler]: dart.fnType(dart.void, [core.String, dart.fnType(dart.void, [])])
  }));
  dart.setFieldSignature(html$.MediaSession, () => ({
    __proto__: dart.getFields(html$.MediaSession.__proto__),
    [$metadata]: dart.fieldType(html$.MediaMetadata),
    [$playbackState]: dart.fieldType(core.String)
  }));
  dart.registerExtension("MediaSession", html$.MediaSession);
  html$.MediaSettingsRange = class MediaSettingsRange extends _interceptors.Interceptor {
    get [$max]() {
      return this.max;
    }
    get [$min]() {
      return this.min;
    }
    get [$step]() {
      return this.step;
    }
  };
  dart.addTypeTests(html$.MediaSettingsRange);
  const max$1 = Symbol("MediaSettingsRange.max");
  const min$1 = Symbol("MediaSettingsRange.min");
  const step$0 = Symbol("MediaSettingsRange.step");
  dart.setFieldSignature(html$.MediaSettingsRange, () => ({
    __proto__: dart.getFields(html$.MediaSettingsRange.__proto__),
    [$max]: dart.finalFieldType(core.num),
    [$min]: dart.finalFieldType(core.num),
    [$step]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("MediaSettingsRange", html$.MediaSettingsRange);
  html$.MediaSource = class MediaSource$ extends html$.EventTarget {
    static new() {
      return html$.MediaSource._create_1();
    }
    static _create_1() {
      return new MediaSource();
    }
    static get supported() {
      return !!window.MediaSource;
    }
    get [$activeSourceBuffers]() {
      return this.activeSourceBuffers;
    }
    get [$duration]() {
      return this.duration;
    }
    set [$duration](value) {
      this.duration = value;
    }
    get [$readyState]() {
      return this.readyState;
    }
    get [$sourceBuffers]() {
      return this.sourceBuffers;
    }
    [$addSourceBuffer](...args) {
      return this.addSourceBuffer.apply(this, args);
    }
    [$clearLiveSeekableRange](...args) {
      return this.clearLiveSeekableRange.apply(this, args);
    }
    [$endOfStream](...args) {
      return this.endOfStream.apply(this, args);
    }
    [$removeSourceBuffer](...args) {
      return this.removeSourceBuffer.apply(this, args);
    }
    [$setLiveSeekableRange](...args) {
      return this.setLiveSeekableRange.apply(this, args);
    }
  };
  dart.addTypeTests(html$.MediaSource);
  const activeSourceBuffers = Symbol("MediaSource.activeSourceBuffers");
  const duration$1 = Symbol("MediaSource.duration");
  const readyState$6 = Symbol("MediaSource.readyState");
  const sourceBuffers = Symbol("MediaSource.sourceBuffers");
  dart.setMethodSignature(html$.MediaSource, () => ({
    __proto__: dart.getMethods(html$.MediaSource.__proto__),
    [$addSourceBuffer]: dart.fnType(html$.SourceBuffer, [core.String]),
    [$clearLiveSeekableRange]: dart.fnType(dart.void, []),
    [$endOfStream]: dart.fnType(dart.void, [], [core.String]),
    [$removeSourceBuffer]: dart.fnType(dart.void, [html$.SourceBuffer]),
    [$setLiveSeekableRange]: dart.fnType(dart.void, [core.num, core.num])
  }));
  dart.setFieldSignature(html$.MediaSource, () => ({
    __proto__: dart.getFields(html$.MediaSource.__proto__),
    [$activeSourceBuffers]: dart.finalFieldType(html$.SourceBufferList),
    [$duration]: dart.fieldType(core.num),
    [$readyState]: dart.finalFieldType(core.String),
    [$sourceBuffers]: dart.finalFieldType(html$.SourceBufferList)
  }));
  dart.registerExtension("MediaSource", html$.MediaSource);
  html$.MediaStream = class MediaStream$ extends html$.EventTarget {
    static new(stream_OR_tracks) {
      if (stream_OR_tracks === void 0) stream_OR_tracks = null;
      if (stream_OR_tracks == null) {
        return html$.MediaStream._create_1();
      }
      if (html$.MediaStream.is(stream_OR_tracks)) {
        return html$.MediaStream._create_2(stream_OR_tracks);
      }
      if (ListOfMediaStreamTrack().is(stream_OR_tracks)) {
        return html$.MediaStream._create_3(stream_OR_tracks);
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    static _create_1() {
      return new MediaStream();
    }
    static _create_2(stream_OR_tracks) {
      return new MediaStream(stream_OR_tracks);
    }
    static _create_3(stream_OR_tracks) {
      return new MediaStream(stream_OR_tracks);
    }
    get [$active]() {
      return this.active;
    }
    get [$id]() {
      return this.id;
    }
    [$addTrack](...args) {
      return this.addTrack.apply(this, args);
    }
    [$clone](...args) {
      return this.clone.apply(this, args);
    }
    [$getAudioTracks](...args) {
      return this.getAudioTracks.apply(this, args);
    }
    [$getTrackById](...args) {
      return this.getTrackById.apply(this, args);
    }
    [$getTracks](...args) {
      return this.getTracks.apply(this, args);
    }
    [$getVideoTracks](...args) {
      return this.getVideoTracks.apply(this, args);
    }
    [$removeTrack](...args) {
      return this.removeTrack.apply(this, args);
    }
    get [$onAddTrack]() {
      return html$.MediaStream.addTrackEvent.forTarget(this);
    }
    get [$onRemoveTrack]() {
      return html$.MediaStream.removeTrackEvent.forTarget(this);
    }
    static get supported() {
      return !!(html$.window.navigator.getUserMedia || html$.window.navigator.webkitGetUserMedia || html$.window.navigator.mozGetUserMedia || html$.window.navigator.msGetUserMedia);
    }
  };
  dart.addTypeTests(html$.MediaStream);
  const active = Symbol("MediaStream.active");
  const id$7 = Symbol("MediaStream.id");
  dart.setMethodSignature(html$.MediaStream, () => ({
    __proto__: dart.getMethods(html$.MediaStream.__proto__),
    [$addTrack]: dart.fnType(dart.void, [html$.MediaStreamTrack]),
    [$clone]: dart.fnType(html$.MediaStream, []),
    [$getAudioTracks]: dart.fnType(core.List$(html$.MediaStreamTrack), []),
    [$getTrackById]: dart.fnType(html$.MediaStreamTrack, [core.String]),
    [$getTracks]: dart.fnType(core.List$(html$.MediaStreamTrack), []),
    [$getVideoTracks]: dart.fnType(core.List$(html$.MediaStreamTrack), []),
    [$removeTrack]: dart.fnType(dart.void, [html$.MediaStreamTrack])
  }));
  dart.setGetterSignature(html$.MediaStream, () => ({
    __proto__: dart.getGetters(html$.MediaStream.__proto__),
    [$onAddTrack]: async.Stream$(html$.Event),
    [$onRemoveTrack]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.MediaStream, () => ({
    __proto__: dart.getFields(html$.MediaStream.__proto__),
    [$active]: dart.finalFieldType(core.bool),
    [$id]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.MediaStream, {
    /*html$.MediaStream.addTrackEvent*/get addTrackEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("addtrack"));
    },
    /*html$.MediaStream.removeTrackEvent*/get removeTrackEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("removetrack"));
    }
  });
  dart.registerExtension("MediaStream", html$.MediaStream);
  html$.MediaStreamEvent = class MediaStreamEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.MediaStreamEvent._create_1(type, eventInitDict_1);
      }
      return html$.MediaStreamEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new MediaStreamEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new MediaStreamEvent(type);
    }
    static get supported() {
      return html_common.Device.isEventTypeSupported("MediaStreamEvent");
    }
    get [$stream]() {
      return this.stream;
    }
  };
  dart.addTypeTests(html$.MediaStreamEvent);
  const stream$ = Symbol("MediaStreamEvent.stream");
  dart.setFieldSignature(html$.MediaStreamEvent, () => ({
    __proto__: dart.getFields(html$.MediaStreamEvent.__proto__),
    [$stream]: dart.finalFieldType(html$.MediaStream)
  }));
  dart.registerExtension("MediaStreamEvent", html$.MediaStreamEvent);
  html$.MediaStreamTrackEvent = class MediaStreamTrackEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.MediaStreamTrackEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new MediaStreamTrackEvent(type, eventInitDict);
    }
    static get supported() {
      return html_common.Device.isEventTypeSupported("MediaStreamTrackEvent");
    }
    get [$track]() {
      return this.track;
    }
  };
  dart.addTypeTests(html$.MediaStreamTrackEvent);
  const track$ = Symbol("MediaStreamTrackEvent.track");
  dart.setFieldSignature(html$.MediaStreamTrackEvent, () => ({
    __proto__: dart.getFields(html$.MediaStreamTrackEvent.__proto__),
    [$track]: dart.finalFieldType(html$.MediaStreamTrack)
  }));
  dart.registerExtension("MediaStreamTrackEvent", html$.MediaStreamTrackEvent);
  html$.MemoryInfo = class MemoryInfo extends _interceptors.Interceptor {
    get [$jsHeapSizeLimit]() {
      return this.jsHeapSizeLimit;
    }
    get [$totalJSHeapSize]() {
      return this.totalJSHeapSize;
    }
    get [$usedJSHeapSize]() {
      return this.usedJSHeapSize;
    }
  };
  dart.addTypeTests(html$.MemoryInfo);
  const jsHeapSizeLimit = Symbol("MemoryInfo.jsHeapSizeLimit");
  const totalJSHeapSize = Symbol("MemoryInfo.totalJSHeapSize");
  const usedJSHeapSize = Symbol("MemoryInfo.usedJSHeapSize");
  dart.setFieldSignature(html$.MemoryInfo, () => ({
    __proto__: dart.getFields(html$.MemoryInfo.__proto__),
    [$jsHeapSizeLimit]: dart.finalFieldType(core.int),
    [$totalJSHeapSize]: dart.finalFieldType(core.int),
    [$usedJSHeapSize]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("MemoryInfo", html$.MemoryInfo);
  html$.MenuElement = class MenuElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("menu");
    }
  };
  (html$.MenuElement.created = function() {
    html$.MenuElement.__proto__.created.call(this);
  }).prototype = html$.MenuElement.prototype;
  dart.addTypeTests(html$.MenuElement);
  dart.registerExtension("HTMLMenuElement", html$.MenuElement);
  html$.MessageChannel = class MessageChannel$ extends _interceptors.Interceptor {
    static new() {
      return html$.MessageChannel._create_1();
    }
    static _create_1() {
      return new MessageChannel();
    }
    get [$port1]() {
      return this.port1;
    }
    get [$port2]() {
      return this.port2;
    }
  };
  dart.addTypeTests(html$.MessageChannel);
  const port1 = Symbol("MessageChannel.port1");
  const port2 = Symbol("MessageChannel.port2");
  dart.setFieldSignature(html$.MessageChannel, () => ({
    __proto__: dart.getFields(html$.MessageChannel.__proto__),
    [$port1]: dart.finalFieldType(html$.MessagePort),
    [$port2]: dart.finalFieldType(html$.MessagePort)
  }));
  dart.registerExtension("MessageChannel", html$.MessageChannel);
  let const$69;
  const _initMessageEvent = Symbol('_initMessageEvent');
  const _get_data = Symbol('_get_data');
  const _get_source = Symbol('_get_source');
  const _initMessageEvent_1 = Symbol('_initMessageEvent_1');
  html$.MessageEvent = class MessageEvent$ extends html$.Event {
    static new(type, opts) {
      let canBubble = opts && 'canBubble' in opts ? opts.canBubble : false;
      let cancelable = opts && 'cancelable' in opts ? opts.cancelable : false;
      let data = opts && 'data' in opts ? opts.data : null;
      let origin = opts && 'origin' in opts ? opts.origin : null;
      let lastEventId = opts && 'lastEventId' in opts ? opts.lastEventId : null;
      let source = opts && 'source' in opts ? opts.source : null;
      let messagePorts = opts && 'messagePorts' in opts ? opts.messagePorts : const$69 || (const$69 = dart.constList([], html$.MessagePort));
      if (source == null) {
        source = html$.window;
      }
      if (!dart.test(html_common.Device.isIE)) {
        return new MessageEvent(type, {bubbles: canBubble, cancelable: cancelable, data: data, origin: origin, lastEventId: lastEventId, source: source, ports: messagePorts});
      }
      let event = html$.MessageEvent._check(html$.document[_createEvent]("MessageEvent"));
      event[_initMessageEvent](type, canBubble, cancelable, data, origin, lastEventId, source, messagePorts);
      return event;
    }
    get [$data]() {
      return html_common.convertNativeToDart_SerializedScriptValue(this[_get_data]);
    }
    get [_get_data]() {
      return this.data;
    }
    static __(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.MessageEvent._create_1(type, eventInitDict_1);
      }
      return html$.MessageEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new MessageEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new MessageEvent(type);
    }
    get [$lastEventId]() {
      return this.lastEventId;
    }
    get [$origin]() {
      return this.origin;
    }
    get [$source]() {
      return html$._convertNativeToDart_EventTarget(this[_get_source]);
    }
    get [_get_source]() {
      return this.source;
    }
    get [$suborigin]() {
      return this.suborigin;
    }
    [_initMessageEvent](typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg, portsArg) {
      let sourceArg_1 = html$._convertDartToNative_EventTarget(sourceArg);
      this[_initMessageEvent_1](typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg_1, portsArg);
      return;
    }
    [_initMessageEvent_1](...args) {
      return this.initMessageEvent.apply(this, args);
    }
  };
  dart.addTypeTests(html$.MessageEvent);
  const lastEventId$ = Symbol("MessageEvent.lastEventId");
  const origin$5 = Symbol("MessageEvent.origin");
  const suborigin$ = Symbol("MessageEvent.suborigin");
  dart.setMethodSignature(html$.MessageEvent, () => ({
    __proto__: dart.getMethods(html$.MessageEvent.__proto__),
    [_initMessageEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, core.Object, core.String, core.String, html$.EventTarget, core.List$(html$.MessagePort)]),
    [_initMessageEvent_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.List$(html$.MessagePort)])
  }));
  dart.setGetterSignature(html$.MessageEvent, () => ({
    __proto__: dart.getGetters(html$.MessageEvent.__proto__),
    [$data]: dart.dynamic,
    [$source]: html$.EventTarget
  }));
  dart.setFieldSignature(html$.MessageEvent, () => ({
    __proto__: dart.getFields(html$.MessageEvent.__proto__),
    [_get_data]: dart.finalFieldType(dart.dynamic),
    [$lastEventId]: dart.finalFieldType(core.String),
    [$origin]: dart.finalFieldType(core.String),
    [_get_source]: dart.finalFieldType(dart.dynamic),
    [$suborigin]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("MessageEvent", html$.MessageEvent);
  const _start$3 = Symbol('_start');
  html$.MessagePort = class MessagePort extends html$.EventTarget {
    [$addEventListener](type, listener, useCapture) {
      if (useCapture === void 0) useCapture = null;
      if (type === "message") {
        this[_start$3]();
      }
      super[$addEventListener](type, listener, useCapture);
    }
    [$close](...args) {
      return this.close.apply(this, args);
    }
    [$postMessage](message, transfer) {
      if (transfer === void 0) transfer = null;
      if (transfer != null) {
        let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
        this[_postMessage_1](message_1, transfer);
        return;
      }
      let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
      this[_postMessage_2](message_1);
      return;
    }
    [_postMessage_1](...args) {
      return this.postMessage.apply(this, args);
    }
    [_postMessage_2](...args) {
      return this.postMessage.apply(this, args);
    }
    [_start$3](...args) {
      return this.start.apply(this, args);
    }
    get [$onMessage]() {
      return html$.MessagePort.messageEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.MessagePort);
  dart.setMethodSignature(html$.MessagePort, () => ({
    __proto__: dart.getMethods(html$.MessagePort.__proto__),
    [$close]: dart.fnType(dart.void, []),
    [$postMessage]: dart.fnType(dart.void, [dart.dynamic], [core.List$(core.Object)]),
    [_postMessage_1]: dart.fnType(dart.void, [dart.dynamic, core.List$(core.Object)]),
    [_postMessage_2]: dart.fnType(dart.void, [dart.dynamic]),
    [_start$3]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(html$.MessagePort, () => ({
    __proto__: dart.getGetters(html$.MessagePort.__proto__),
    [$onMessage]: async.Stream$(html$.MessageEvent)
  }));
  dart.defineLazy(html$.MessagePort, {
    /*html$.MessagePort.messageEvent*/get messageEvent() {
      return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
    }
  });
  dart.registerExtension("MessagePort", html$.MessagePort);
  html$.MetaElement = class MetaElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("meta");
    }
    get [$content]() {
      return this.content;
    }
    set [$content](value) {
      this.content = value;
    }
    get [$httpEquiv]() {
      return this.httpEquiv;
    }
    set [$httpEquiv](value) {
      this.httpEquiv = value;
    }
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
  };
  (html$.MetaElement.created = function() {
    this[content] = null;
    this[httpEquiv] = null;
    this[name$22] = null;
    html$.MetaElement.__proto__.created.call(this);
  }).prototype = html$.MetaElement.prototype;
  dart.addTypeTests(html$.MetaElement);
  const content = Symbol("MetaElement.content");
  const httpEquiv = Symbol("MetaElement.httpEquiv");
  const name$22 = Symbol("MetaElement.name");
  dart.setFieldSignature(html$.MetaElement, () => ({
    __proto__: dart.getFields(html$.MetaElement.__proto__),
    [$content]: dart.fieldType(core.String),
    [$httpEquiv]: dart.fieldType(core.String),
    [$name]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLMetaElement", html$.MetaElement);
  const _get_modificationTime = Symbol('_get_modificationTime');
  html$.Metadata = class Metadata extends _interceptors.Interceptor {
    get [$modificationTime]() {
      return html_common.convertNativeToDart_DateTime(this[_get_modificationTime]);
    }
    get [_get_modificationTime]() {
      return this.modificationTime;
    }
    get [$size]() {
      return this.size;
    }
  };
  dart.addTypeTests(html$.Metadata);
  const size$4 = Symbol("Metadata.size");
  dart.setGetterSignature(html$.Metadata, () => ({
    __proto__: dart.getGetters(html$.Metadata.__proto__),
    [$modificationTime]: core.DateTime
  }));
  dart.setFieldSignature(html$.Metadata, () => ({
    __proto__: dart.getFields(html$.Metadata.__proto__),
    [_get_modificationTime]: dart.finalFieldType(dart.dynamic),
    [$size]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("Metadata", html$.Metadata);
  html$.MeterElement = class MeterElement extends html$.HtmlElement {
    static new() {
      return html$.MeterElement._check(html$.document[$createElement]("meter"));
    }
    static get supported() {
      return html$.Element.isTagSupported("meter");
    }
    get [$high]() {
      return this.high;
    }
    set [$high](value) {
      this.high = value;
    }
    get [$labels]() {
      return this.labels;
    }
    get [$low]() {
      return this.low;
    }
    set [$low](value) {
      this.low = value;
    }
    get [$max]() {
      return this.max;
    }
    set [$max](value) {
      this.max = value;
    }
    get [$min]() {
      return this.min;
    }
    set [$min](value) {
      this.min = value;
    }
    get [$optimum]() {
      return this.optimum;
    }
    set [$optimum](value) {
      this.optimum = value;
    }
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
  };
  (html$.MeterElement.created = function() {
    this[high] = null;
    this[labels$0] = null;
    this[low] = null;
    this[max$2] = null;
    this[min$2] = null;
    this[optimum] = null;
    this[value$9] = null;
    html$.MeterElement.__proto__.created.call(this);
  }).prototype = html$.MeterElement.prototype;
  dart.addTypeTests(html$.MeterElement);
  const high = Symbol("MeterElement.high");
  const labels$0 = Symbol("MeterElement.labels");
  const low = Symbol("MeterElement.low");
  const max$2 = Symbol("MeterElement.max");
  const min$2 = Symbol("MeterElement.min");
  const optimum = Symbol("MeterElement.optimum");
  const value$9 = Symbol("MeterElement.value");
  dart.setFieldSignature(html$.MeterElement, () => ({
    __proto__: dart.getFields(html$.MeterElement.__proto__),
    [$high]: dart.fieldType(core.num),
    [$labels]: dart.finalFieldType(ListOfNode()),
    [$low]: dart.fieldType(core.num),
    [$max]: dart.fieldType(core.num),
    [$min]: dart.fieldType(core.num),
    [$optimum]: dart.fieldType(core.num),
    [$value]: dart.fieldType(core.num)
  }));
  dart.registerExtension("HTMLMeterElement", html$.MeterElement);
  html$.MidiAccess = class MidiAccess extends html$.EventTarget {
    get [$inputs]() {
      return this.inputs;
    }
    get [$outputs]() {
      return this.outputs;
    }
    get [$sysexEnabled]() {
      return this.sysexEnabled;
    }
  };
  dart.addTypeTests(html$.MidiAccess);
  const inputs = Symbol("MidiAccess.inputs");
  const outputs = Symbol("MidiAccess.outputs");
  const sysexEnabled = Symbol("MidiAccess.sysexEnabled");
  dart.setFieldSignature(html$.MidiAccess, () => ({
    __proto__: dart.getFields(html$.MidiAccess.__proto__),
    [$inputs]: dart.finalFieldType(html$.MidiInputMap),
    [$outputs]: dart.finalFieldType(html$.MidiOutputMap),
    [$sysexEnabled]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("MIDIAccess", html$.MidiAccess);
  html$.MidiConnectionEvent = class MidiConnectionEvent extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.MidiConnectionEvent._create_1(type, eventInitDict_1);
      }
      return html$.MidiConnectionEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new MIDIConnectionEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new MIDIConnectionEvent(type);
    }
    get [$port]() {
      return this.port;
    }
  };
  dart.addTypeTests(html$.MidiConnectionEvent);
  const port$4 = Symbol("MidiConnectionEvent.port");
  dart.setFieldSignature(html$.MidiConnectionEvent, () => ({
    __proto__: dart.getFields(html$.MidiConnectionEvent.__proto__),
    [$port]: dart.finalFieldType(html$.MidiPort)
  }));
  dart.registerExtension("MIDIConnectionEvent", html$.MidiConnectionEvent);
  html$.MidiPort = class MidiPort extends html$.EventTarget {
    get [$connection]() {
      return this.connection;
    }
    get [$id]() {
      return this.id;
    }
    get [$manufacturer]() {
      return this.manufacturer;
    }
    get [$name]() {
      return this.name;
    }
    get [$state]() {
      return this.state;
    }
    get [$type]() {
      return this.type;
    }
    get [$version]() {
      return this.version;
    }
    [$close]() {
      return html$.promiseToFuture(dart.dynamic, this.close());
    }
    [$open]() {
      return html$.promiseToFuture(dart.dynamic, this.open());
    }
  };
  dart.addTypeTests(html$.MidiPort);
  const connection = Symbol("MidiPort.connection");
  const id$8 = Symbol("MidiPort.id");
  const manufacturer = Symbol("MidiPort.manufacturer");
  const name$23 = Symbol("MidiPort.name");
  const state$1 = Symbol("MidiPort.state");
  const type$17 = Symbol("MidiPort.type");
  const version$0 = Symbol("MidiPort.version");
  dart.setMethodSignature(html$.MidiPort, () => ({
    __proto__: dart.getMethods(html$.MidiPort.__proto__),
    [$close]: dart.fnType(async.Future, []),
    [$open]: dart.fnType(async.Future, [])
  }));
  dart.setFieldSignature(html$.MidiPort, () => ({
    __proto__: dart.getFields(html$.MidiPort.__proto__),
    [$connection]: dart.finalFieldType(core.String),
    [$id]: dart.finalFieldType(core.String),
    [$manufacturer]: dart.finalFieldType(core.String),
    [$name]: dart.finalFieldType(core.String),
    [$state]: dart.finalFieldType(core.String),
    [$type]: dart.finalFieldType(core.String),
    [$version]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("MIDIPort", html$.MidiPort);
  html$.MidiInput = class MidiInput extends html$.MidiPort {
    get [$onMidiMessage]() {
      return html$.MidiInput.midiMessageEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.MidiInput);
  dart.setGetterSignature(html$.MidiInput, () => ({
    __proto__: dart.getGetters(html$.MidiInput.__proto__),
    [$onMidiMessage]: async.Stream$(html$.MidiMessageEvent)
  }));
  dart.defineLazy(html$.MidiInput, {
    /*html$.MidiInput.midiMessageEvent*/get midiMessageEvent() {
      return dart.const(new (EventStreamProviderOfMidiMessageEvent()).new("midimessage"));
    }
  });
  dart.registerExtension("MIDIInput", html$.MidiInput);
  const _getItem = Symbol('_getItem');
  const Interceptor_MapMixin$ = class Interceptor_MapMixin extends _interceptors.Interceptor {};
  (Interceptor_MapMixin$.new = function() {
    Interceptor_MapMixin$.__proto__.new.call(this);
  }).prototype = Interceptor_MapMixin$.prototype;
  dart.applyMixin(Interceptor_MapMixin$, collection.MapMixin$(core.String, dart.dynamic));
  html$.MidiInputMap = class MidiInputMap extends Interceptor_MapMixin$ {
    [_getItem](key) {
      return html_common.convertNativeToDart_Dictionary(this.get(key));
    }
    [$addAll](other) {
      MapOfString$dynamic()._check(other);
      dart.throw(new core.UnsupportedError.new("Not supported"));
    }
    [$containsValue](value) {
      return this[$values][$any](dart.fn(e => dart.equals(e, value), MapTobool()));
    }
    [$containsKey](key) {
      return this[_getItem](core.String._check(key)) != null;
    }
    [$_get](key) {
      return this[_getItem](core.String._check(key));
    }
    [$forEach](f) {
      let entries = this.entries();
      while (true) {
        let entry = entries.next();
        if (entry.done) return;
        f(entry.value[0], html_common.convertNativeToDart_Dictionary(entry.value[1]));
      }
    }
    get [$keys]() {
      let keys = JSArrayOfString().of([]);
      this[$forEach](dart.fn((k, v) => keys[$add](k), StringAnddynamicTovoid()));
      return keys;
    }
    get [$values]() {
      let values = JSArrayOfMap().of([]);
      this[$forEach](dart.fn((k, v) => values[$add](core.Map._check(v)), StringAnddynamicTovoid()));
      return values;
    }
    get [$length]() {
      return this.size;
    }
    get [$isEmpty]() {
      return this[$length] === 0;
    }
    get [$isNotEmpty]() {
      return !dart.test(this[$isEmpty]);
    }
    [$_set](key, value) {
      core.String._check(key);
      dart.throw(new core.UnsupportedError.new("Not supported"));
      return value;
    }
    [$putIfAbsent](key, ifAbsent) {
      core.String._check(key);
      dart.throw(new core.UnsupportedError.new("Not supported"));
    }
    [$remove](key) {
      dart.throw(new core.UnsupportedError.new("Not supported"));
    }
    [$clear]() {
      dart.throw(new core.UnsupportedError.new("Not supported"));
    }
  };
  dart.addTypeTests(html$.MidiInputMap);
  dart.setMethodSignature(html$.MidiInputMap, () => ({
    __proto__: dart.getMethods(html$.MidiInputMap.__proto__),
    [_getItem]: dart.fnType(core.Map, [core.String]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    [$containsValue]: dart.fnType(core.bool, [dart.dynamic]),
    [$containsKey]: dart.fnType(core.bool, [dart.dynamic]),
    [$_get]: dart.fnType(core.Map, [dart.dynamic]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, dart.dynamic])]),
    [$_set]: dart.fnType(dart.void, [core.Object, dart.dynamic]),
    [$putIfAbsent]: dart.fnType(dart.dynamic, [core.Object, dart.fnType(dart.dynamic, [])]),
    [$remove]: dart.fnType(core.String, [dart.dynamic]),
    [$clear]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(html$.MidiInputMap, () => ({
    __proto__: dart.getGetters(html$.MidiInputMap.__proto__),
    [$keys]: core.Iterable$(core.String),
    [$values]: core.Iterable$(core.Map),
    [$length]: core.int,
    [$isEmpty]: core.bool,
    [$isNotEmpty]: core.bool
  }));
  dart.registerExtension("MIDIInputMap", html$.MidiInputMap);
  html$.MidiMessageEvent = class MidiMessageEvent extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.MidiMessageEvent._create_1(type, eventInitDict_1);
      }
      return html$.MidiMessageEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new MIDIMessageEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new MIDIMessageEvent(type);
    }
    get [$data]() {
      return this.data;
    }
  };
  dart.addTypeTests(html$.MidiMessageEvent);
  const data$4 = Symbol("MidiMessageEvent.data");
  dart.setFieldSignature(html$.MidiMessageEvent, () => ({
    __proto__: dart.getFields(html$.MidiMessageEvent.__proto__),
    [$data]: dart.finalFieldType(typed_data.Uint8List)
  }));
  dart.registerExtension("MIDIMessageEvent", html$.MidiMessageEvent);
  html$.MidiOutput = class MidiOutput extends html$.MidiPort {
    [$send](...args) {
      return this.send.apply(this, args);
    }
  };
  dart.addTypeTests(html$.MidiOutput);
  dart.setMethodSignature(html$.MidiOutput, () => ({
    __proto__: dart.getMethods(html$.MidiOutput.__proto__),
    [$send]: dart.fnType(dart.void, [typed_data.Uint8List], [core.num])
  }));
  dart.registerExtension("MIDIOutput", html$.MidiOutput);
  const Interceptor_MapMixin$$ = class Interceptor_MapMixin extends _interceptors.Interceptor {};
  (Interceptor_MapMixin$$.new = function() {
    Interceptor_MapMixin$$.__proto__.new.call(this);
  }).prototype = Interceptor_MapMixin$$.prototype;
  dart.applyMixin(Interceptor_MapMixin$$, collection.MapMixin$(core.String, dart.dynamic));
  html$.MidiOutputMap = class MidiOutputMap extends Interceptor_MapMixin$$ {
    [_getItem](key) {
      return html_common.convertNativeToDart_Dictionary(this.get(key));
    }
    [$addAll](other) {
      MapOfString$dynamic()._check(other);
      dart.throw(new core.UnsupportedError.new("Not supported"));
    }
    [$containsValue](value) {
      return this[$values][$any](dart.fn(e => dart.equals(e, value), MapTobool()));
    }
    [$containsKey](key) {
      return this[_getItem](core.String._check(key)) != null;
    }
    [$_get](key) {
      return this[_getItem](core.String._check(key));
    }
    [$forEach](f) {
      let entries = this.entries();
      while (true) {
        let entry = entries.next();
        if (entry.done) return;
        f(entry.value[0], html_common.convertNativeToDart_Dictionary(entry.value[1]));
      }
    }
    get [$keys]() {
      let keys = JSArrayOfString().of([]);
      this[$forEach](dart.fn((k, v) => keys[$add](k), StringAnddynamicTovoid()));
      return keys;
    }
    get [$values]() {
      let values = JSArrayOfMap().of([]);
      this[$forEach](dart.fn((k, v) => values[$add](core.Map._check(v)), StringAnddynamicTovoid()));
      return values;
    }
    get [$length]() {
      return this.size;
    }
    get [$isEmpty]() {
      return this[$length] === 0;
    }
    get [$isNotEmpty]() {
      return !dart.test(this[$isEmpty]);
    }
    [$_set](key, value) {
      core.String._check(key);
      dart.throw(new core.UnsupportedError.new("Not supported"));
      return value;
    }
    [$putIfAbsent](key, ifAbsent) {
      core.String._check(key);
      dart.throw(new core.UnsupportedError.new("Not supported"));
    }
    [$remove](key) {
      dart.throw(new core.UnsupportedError.new("Not supported"));
    }
    [$clear]() {
      dart.throw(new core.UnsupportedError.new("Not supported"));
    }
  };
  dart.addTypeTests(html$.MidiOutputMap);
  dart.setMethodSignature(html$.MidiOutputMap, () => ({
    __proto__: dart.getMethods(html$.MidiOutputMap.__proto__),
    [_getItem]: dart.fnType(core.Map, [core.String]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    [$containsValue]: dart.fnType(core.bool, [dart.dynamic]),
    [$containsKey]: dart.fnType(core.bool, [dart.dynamic]),
    [$_get]: dart.fnType(core.Map, [dart.dynamic]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, dart.dynamic])]),
    [$_set]: dart.fnType(dart.void, [core.Object, dart.dynamic]),
    [$putIfAbsent]: dart.fnType(dart.dynamic, [core.Object, dart.fnType(dart.dynamic, [])]),
    [$remove]: dart.fnType(core.String, [dart.dynamic]),
    [$clear]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(html$.MidiOutputMap, () => ({
    __proto__: dart.getGetters(html$.MidiOutputMap.__proto__),
    [$keys]: core.Iterable$(core.String),
    [$values]: core.Iterable$(core.Map),
    [$length]: core.int,
    [$isEmpty]: core.bool,
    [$isNotEmpty]: core.bool
  }));
  dart.registerExtension("MIDIOutputMap", html$.MidiOutputMap);
  html$.MimeType = class MimeType extends _interceptors.Interceptor {
    get [$description]() {
      return this.description;
    }
    get [$enabledPlugin]() {
      return this.enabledPlugin;
    }
    get [$suffixes]() {
      return this.suffixes;
    }
    get [$type]() {
      return this.type;
    }
  };
  dart.addTypeTests(html$.MimeType);
  const description = Symbol("MimeType.description");
  const enabledPlugin = Symbol("MimeType.enabledPlugin");
  const suffixes = Symbol("MimeType.suffixes");
  const type$18 = Symbol("MimeType.type");
  dart.setFieldSignature(html$.MimeType, () => ({
    __proto__: dart.getFields(html$.MimeType.__proto__),
    [$description]: dart.finalFieldType(core.String),
    [$enabledPlugin]: dart.finalFieldType(html$.Plugin),
    [$suffixes]: dart.finalFieldType(core.String),
    [$type]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("MimeType", html$.MimeType);
  const Interceptor_ListMixin$$2 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$2.new = function() {
    Interceptor_ListMixin$$2.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$2.prototype;
  dart.applyMixin(Interceptor_ListMixin$$2, collection.ListMixin$(html$.MimeType));
  const Interceptor_ImmutableListMixin$$2 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$2 {};
  (Interceptor_ImmutableListMixin$$2.new = function() {
    Interceptor_ImmutableListMixin$$2.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$2.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$2, html$.ImmutableListMixin$(html$.MimeType));
  html$.MimeTypeArray = class MimeTypeArray extends Interceptor_ImmutableListMixin$$2 {
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[index];
    }
    [$_set](index, value) {
      html$.MimeType._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
    [$namedItem](...args) {
      return this.namedItem.apply(this, args);
    }
  };
  html$.MimeTypeArray.prototype[dart.isList] = true;
  dart.addTypeTests(html$.MimeTypeArray);
  html$.MimeTypeArray[dart.implements] = () => [ListOfMimeType(), JavaScriptIndexingBehaviorOfMimeType()];
  dart.setMethodSignature(html$.MimeTypeArray, () => ({
    __proto__: dart.getMethods(html$.MimeTypeArray.__proto__),
    [$_get]: dart.fnType(html$.MimeType, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(html$.MimeType, [core.int]),
    [$item]: dart.fnType(html$.MimeType, [core.int]),
    [$namedItem]: dart.fnType(html$.MimeType, [core.String])
  }));
  dart.setGetterSignature(html$.MimeTypeArray, () => ({
    __proto__: dart.getGetters(html$.MimeTypeArray.__proto__),
    [$length]: core.int,
    [$first]: html$.MimeType,
    [$last]: html$.MimeType,
    [$single]: html$.MimeType
  }));
  dart.setSetterSignature(html$.MimeTypeArray, () => ({
    __proto__: dart.getSetters(html$.MimeTypeArray.__proto__),
    [$length]: core.int
  }));
  dart.registerExtension("MimeTypeArray", html$.MimeTypeArray);
  html$.ModElement = class ModElement extends html$.HtmlElement {
    get [$cite]() {
      return this.cite;
    }
    set [$cite](value) {
      this.cite = value;
    }
    get [$dateTime]() {
      return this.dateTime;
    }
    set [$dateTime](value) {
      this.dateTime = value;
    }
  };
  (html$.ModElement.created = function() {
    this[cite] = null;
    this[dateTime] = null;
    html$.ModElement.__proto__.created.call(this);
  }).prototype = html$.ModElement.prototype;
  dart.addTypeTests(html$.ModElement);
  const cite = Symbol("ModElement.cite");
  const dateTime = Symbol("ModElement.dateTime");
  dart.setFieldSignature(html$.ModElement, () => ({
    __proto__: dart.getFields(html$.ModElement.__proto__),
    [$cite]: dart.fieldType(core.String),
    [$dateTime]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLModElement", html$.ModElement);
  const _initMouseEvent = Symbol('_initMouseEvent');
  const _clientX = Symbol('_clientX');
  const _clientY = Symbol('_clientY');
  const _layerX = Symbol('_layerX');
  const _layerY = Symbol('_layerY');
  const _movementX = Symbol('_movementX');
  const _movementY = Symbol('_movementY');
  const _pageX = Symbol('_pageX');
  const _pageY = Symbol('_pageY');
  const _screenX = Symbol('_screenX');
  const _screenY = Symbol('_screenY');
  const _initMouseEvent_1 = Symbol('_initMouseEvent_1');
  html$.MouseEvent = class MouseEvent$ extends html$.UIEvent {
    static new(type, opts) {
      let view = opts && 'view' in opts ? opts.view : null;
      let detail = opts && 'detail' in opts ? opts.detail : 0;
      let screenX = opts && 'screenX' in opts ? opts.screenX : 0;
      let screenY = opts && 'screenY' in opts ? opts.screenY : 0;
      let clientX = opts && 'clientX' in opts ? opts.clientX : 0;
      let clientY = opts && 'clientY' in opts ? opts.clientY : 0;
      let button = opts && 'button' in opts ? opts.button : 0;
      let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
      let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
      let ctrlKey = opts && 'ctrlKey' in opts ? opts.ctrlKey : false;
      let altKey = opts && 'altKey' in opts ? opts.altKey : false;
      let shiftKey = opts && 'shiftKey' in opts ? opts.shiftKey : false;
      let metaKey = opts && 'metaKey' in opts ? opts.metaKey : false;
      let relatedTarget = opts && 'relatedTarget' in opts ? opts.relatedTarget : null;
      if (view == null) {
        view = html$.window;
      }
      let event = html$.MouseEvent._check(html$.document[_createEvent]("MouseEvent"));
      event[_initMouseEvent](type, canBubble, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget);
      return event;
    }
    static __(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.MouseEvent._create_1(type, eventInitDict_1);
      }
      return html$.MouseEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new MouseEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new MouseEvent(type);
    }
    get [$altKey]() {
      return this.altKey;
    }
    get [$button]() {
      return this.button;
    }
    get [$buttons]() {
      return this.buttons;
    }
    get [_clientX]() {
      return this.clientX;
    }
    get [_clientY]() {
      return this.clientY;
    }
    get [$ctrlKey]() {
      return this.ctrlKey;
    }
    get [$fromElement]() {
      return this.fromElement;
    }
    get [_layerX]() {
      return this.layerX;
    }
    get [_layerY]() {
      return this.layerY;
    }
    get [$metaKey]() {
      return this.metaKey;
    }
    get [_movementX]() {
      return this.movementX;
    }
    get [_movementY]() {
      return this.movementY;
    }
    get [_pageX]() {
      return this.pageX;
    }
    get [_pageY]() {
      return this.pageY;
    }
    get [$region]() {
      return this.region;
    }
    get [$relatedTarget]() {
      return html$._convertNativeToDart_EventTarget(this[_get_relatedTarget]);
    }
    get [_get_relatedTarget]() {
      return this.relatedTarget;
    }
    get [_screenX]() {
      return this.screenX;
    }
    get [_screenY]() {
      return this.screenY;
    }
    get [$shiftKey]() {
      return this.shiftKey;
    }
    get [$toElement]() {
      return this.toElement;
    }
    [$getModifierState](...args) {
      return this.getModifierState.apply(this, args);
    }
    [_initMouseEvent](type, bubbles, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget) {
      let relatedTarget_1 = html$._convertDartToNative_EventTarget(relatedTarget);
      this[_initMouseEvent_1](type, bubbles, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget_1);
      return;
    }
    [_initMouseEvent_1](...args) {
      return this.initMouseEvent.apply(this, args);
    }
    get [$client]() {
      return new (PointOfnum()).new(this[_clientX], this[_clientY]);
    }
    get [$movement]() {
      return new (PointOfnum()).new(this[_movementX], this[_movementY]);
    }
    get [$offset]() {
      if (!!this.offsetX) {
        let x = this.offsetX;
        let y = this.offsetY;
        return new (PointOfnum()).new(x, y);
      } else {
        if (!html$.Element.is(this[$target])) {
          dart.throw(new core.UnsupportedError.new("offsetX is only supported on elements"));
        }
        let target = html$.Element._check(this[$target]);
        let point = this[$client]['-'](target.getBoundingClientRect()[$topLeft]);
        return new (PointOfnum()).new(point.x[$toInt](), point.y[$toInt]());
      }
    }
    get [$screen]() {
      return new (PointOfnum()).new(this[_screenX], this[_screenY]);
    }
    get [$layer]() {
      return new (PointOfnum()).new(this[_layerX], this[_layerY]);
    }
    get [$page]() {
      return new (PointOfnum()).new(this[_pageX], this[_pageY]);
    }
    get [$dataTransfer]() {
      return this.dataTransfer;
    }
  };
  dart.addTypeTests(html$.MouseEvent);
  const altKey$ = Symbol("MouseEvent.altKey");
  const button = Symbol("MouseEvent.button");
  const buttons$ = Symbol("MouseEvent.buttons");
  const ctrlKey$ = Symbol("MouseEvent.ctrlKey");
  const fromElement = Symbol("MouseEvent.fromElement");
  const metaKey$ = Symbol("MouseEvent.metaKey");
  const region = Symbol("MouseEvent.region");
  const shiftKey$ = Symbol("MouseEvent.shiftKey");
  const toElement = Symbol("MouseEvent.toElement");
  dart.setMethodSignature(html$.MouseEvent, () => ({
    __proto__: dart.getMethods(html$.MouseEvent.__proto__),
    [$getModifierState]: dart.fnType(core.bool, [core.String]),
    [_initMouseEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.int, core.int, core.int, core.int, core.int, core.bool, core.bool, core.bool, core.bool, core.int, html$.EventTarget]),
    [_initMouseEvent_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, html$.Window, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic])
  }));
  dart.setGetterSignature(html$.MouseEvent, () => ({
    __proto__: dart.getGetters(html$.MouseEvent.__proto__),
    [$relatedTarget]: html$.EventTarget,
    [$client]: math.Point$(core.num),
    [$movement]: math.Point$(core.num),
    [$offset]: math.Point$(core.num),
    [$screen]: math.Point$(core.num),
    [$layer]: math.Point$(core.num),
    [$page]: math.Point$(core.num),
    [$dataTransfer]: html$.DataTransfer
  }));
  dart.setFieldSignature(html$.MouseEvent, () => ({
    __proto__: dart.getFields(html$.MouseEvent.__proto__),
    [$altKey]: dart.finalFieldType(core.bool),
    [$button]: dart.finalFieldType(core.int),
    [$buttons]: dart.finalFieldType(core.int),
    [_clientX]: dart.finalFieldType(core.num),
    [_clientY]: dart.finalFieldType(core.num),
    [$ctrlKey]: dart.finalFieldType(core.bool),
    [$fromElement]: dart.finalFieldType(html$.Node),
    [_layerX]: dart.finalFieldType(core.int),
    [_layerY]: dart.finalFieldType(core.int),
    [$metaKey]: dart.finalFieldType(core.bool),
    [_movementX]: dart.finalFieldType(core.int),
    [_movementY]: dart.finalFieldType(core.int),
    [_pageX]: dart.finalFieldType(core.num),
    [_pageY]: dart.finalFieldType(core.num),
    [$region]: dart.finalFieldType(core.String),
    [_get_relatedTarget]: dart.finalFieldType(dart.dynamic),
    [_screenX]: dart.finalFieldType(core.num),
    [_screenY]: dart.finalFieldType(core.num),
    [$shiftKey]: dart.finalFieldType(core.bool),
    [$toElement]: dart.finalFieldType(html$.Node)
  }));
  dart.registerExtension("MouseEvent", html$.MouseEvent);
  dart.registerExtension("DragEvent", html$.MouseEvent);
  html$.MutationEvent = class MutationEvent extends html$.Event {
    get [$attrChange]() {
      return this.attrChange;
    }
    get [$attrName]() {
      return this.attrName;
    }
    get [$newValue]() {
      return this.newValue;
    }
    get [$prevValue]() {
      return this.prevValue;
    }
    get [$relatedNode]() {
      return this.relatedNode;
    }
    [$initMutationEvent](...args) {
      return this.initMutationEvent.apply(this, args);
    }
  };
  dart.addTypeTests(html$.MutationEvent);
  const attrChange = Symbol("MutationEvent.attrChange");
  const attrName = Symbol("MutationEvent.attrName");
  const newValue = Symbol("MutationEvent.newValue");
  const prevValue = Symbol("MutationEvent.prevValue");
  const relatedNode = Symbol("MutationEvent.relatedNode");
  dart.setMethodSignature(html$.MutationEvent, () => ({
    __proto__: dart.getMethods(html$.MutationEvent.__proto__),
    [$initMutationEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Node, core.String, core.String, core.String, core.int])
  }));
  dart.setFieldSignature(html$.MutationEvent, () => ({
    __proto__: dart.getFields(html$.MutationEvent.__proto__),
    [$attrChange]: dart.finalFieldType(core.int),
    [$attrName]: dart.finalFieldType(core.String),
    [$newValue]: dart.finalFieldType(core.String),
    [$prevValue]: dart.finalFieldType(core.String),
    [$relatedNode]: dart.finalFieldType(html$.Node)
  }));
  dart.defineLazy(html$.MutationEvent, {
    /*html$.MutationEvent.ADDITION*/get ADDITION() {
      return 2;
    },
    /*html$.MutationEvent.MODIFICATION*/get MODIFICATION() {
      return 1;
    },
    /*html$.MutationEvent.REMOVAL*/get REMOVAL() {
      return 3;
    }
  });
  dart.registerExtension("MutationEvent", html$.MutationEvent);
  const _observe_1$ = Symbol('_observe_1');
  const _observe_2 = Symbol('_observe_2');
  const _observe = Symbol('_observe');
  const _call = Symbol('_call');
  html$.MutationObserver = class MutationObserver extends _interceptors.Interceptor {
    [$disconnect](...args) {
      return this.disconnect.apply(this, args);
    }
    [_observe](target, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        this[_observe_1$](target, options_1);
        return;
      }
      this[_observe_2](target);
      return;
    }
    [_observe_1$](...args) {
      return this.observe.apply(this, args);
    }
    [_observe_2](...args) {
      return this.observe.apply(this, args);
    }
    [$takeRecords](...args) {
      return this.takeRecords.apply(this, args);
    }
    static get supported() {
      return !!(window.MutationObserver || window.WebKitMutationObserver);
    }
    [$observe](target, opts) {
      let childList = opts && 'childList' in opts ? opts.childList : null;
      let attributes = opts && 'attributes' in opts ? opts.attributes : null;
      let characterData = opts && 'characterData' in opts ? opts.characterData : null;
      let subtree = opts && 'subtree' in opts ? opts.subtree : null;
      let attributeOldValue = opts && 'attributeOldValue' in opts ? opts.attributeOldValue : null;
      let characterDataOldValue = opts && 'characterDataOldValue' in opts ? opts.characterDataOldValue : null;
      let attributeFilter = opts && 'attributeFilter' in opts ? opts.attributeFilter : null;
      let parsedOptions = html$.MutationObserver._createDict();
      function override(key, value) {
        if (value != null) html$.MutationObserver._add(parsedOptions, core.String._check(key), value);
      }
      dart.fn(override, dynamicAnddynamicToNull());
      override("childList", childList);
      override("attributes", attributes);
      override("characterData", characterData);
      override("subtree", subtree);
      override("attributeOldValue", attributeOldValue);
      override("characterDataOldValue", characterDataOldValue);
      if (attributeFilter != null) {
        override("attributeFilter", html$.MutationObserver._fixupList(attributeFilter));
      }
      this[_call](target, parsedOptions);
    }
    static _createDict() {
      return {};
    }
    static _add(m, key, value) {
      m[key] = value;
    }
    static _fixupList(list) {
      return list;
    }
    [_call](...args) {
      return this.observe.apply(this, args);
    }
    static new(callback) {
      0;
      return new (window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver)(_js_helper.convertDartClosureToJS(ListAndMutationObserverTovoid(), html$._wrapBinaryZone(core.List, html$.MutationObserver, callback), 2));
    }
  };
  dart.addTypeTests(html$.MutationObserver);
  dart.setMethodSignature(html$.MutationObserver, () => ({
    __proto__: dart.getMethods(html$.MutationObserver.__proto__),
    [$disconnect]: dart.fnType(dart.void, []),
    [_observe]: dart.fnType(dart.void, [html$.Node], [core.Map]),
    [_observe_1$]: dart.fnType(dart.void, [html$.Node, dart.dynamic]),
    [_observe_2]: dart.fnType(dart.void, [html$.Node]),
    [$takeRecords]: dart.fnType(core.List$(html$.MutationRecord), []),
    [$observe]: dart.fnType(dart.void, [html$.Node], {childList: core.bool, attributes: core.bool, characterData: core.bool, subtree: core.bool, attributeOldValue: core.bool, characterDataOldValue: core.bool, attributeFilter: core.List$(core.String)}),
    [_call]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic])
  }));
  dart.defineLazy(html$.MutationObserver, {
    /*html$.MutationObserver._boolKeys*/get _boolKeys() {
      return dart.constMap(core.String, core.bool, ["childList", true, "attributes", true, "characterData", true, "subtree", true, "attributeOldValue", true, "characterDataOldValue", true]);
    }
  });
  dart.registerExtension("MutationObserver", html$.MutationObserver);
  dart.registerExtension("WebKitMutationObserver", html$.MutationObserver);
  html$.MutationRecord = class MutationRecord extends _interceptors.Interceptor {
    get [$addedNodes]() {
      return this.addedNodes;
    }
    get [$attributeName]() {
      return this.attributeName;
    }
    get [$attributeNamespace]() {
      return this.attributeNamespace;
    }
    get [$nextSibling]() {
      return this.nextSibling;
    }
    get [$oldValue]() {
      return this.oldValue;
    }
    get [$previousSibling]() {
      return this.previousSibling;
    }
    get [$removedNodes]() {
      return this.removedNodes;
    }
    get [$target]() {
      return this.target;
    }
    get [$type]() {
      return this.type;
    }
  };
  dart.addTypeTests(html$.MutationRecord);
  const addedNodes = Symbol("MutationRecord.addedNodes");
  const attributeName = Symbol("MutationRecord.attributeName");
  const attributeNamespace = Symbol("MutationRecord.attributeNamespace");
  const nextSibling = Symbol("MutationRecord.nextSibling");
  const oldValue = Symbol("MutationRecord.oldValue");
  const previousSibling = Symbol("MutationRecord.previousSibling");
  const removedNodes = Symbol("MutationRecord.removedNodes");
  const target$4 = Symbol("MutationRecord.target");
  const type$19 = Symbol("MutationRecord.type");
  dart.setFieldSignature(html$.MutationRecord, () => ({
    __proto__: dart.getFields(html$.MutationRecord.__proto__),
    [$addedNodes]: dart.finalFieldType(ListOfNode()),
    [$attributeName]: dart.finalFieldType(core.String),
    [$attributeNamespace]: dart.finalFieldType(core.String),
    [$nextSibling]: dart.finalFieldType(html$.Node),
    [$oldValue]: dart.finalFieldType(core.String),
    [$previousSibling]: dart.finalFieldType(html$.Node),
    [$removedNodes]: dart.finalFieldType(ListOfNode()),
    [$target]: dart.finalFieldType(html$.Node),
    [$type]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("MutationRecord", html$.MutationRecord);
  html$.NavigationPreloadManager = class NavigationPreloadManager extends _interceptors.Interceptor {
    [$disable]() {
      return html$.promiseToFuture(dart.dynamic, this.disable());
    }
    [$enable]() {
      return html$.promiseToFuture(dart.dynamic, this.enable());
    }
    [$getState]() {
      return html$.promiseToFutureAsMap(this.getState());
    }
  };
  dart.addTypeTests(html$.NavigationPreloadManager);
  dart.setMethodSignature(html$.NavigationPreloadManager, () => ({
    __proto__: dart.getMethods(html$.NavigationPreloadManager.__proto__),
    [$disable]: dart.fnType(async.Future, []),
    [$enable]: dart.fnType(async.Future, []),
    [$getState]: dart.fnType(async.Future$(core.Map$(core.String, dart.dynamic)), [])
  }));
  dart.registerExtension("NavigationPreloadManager", html$.NavigationPreloadManager);
  const _getGamepads = Symbol('_getGamepads');
  const _ensureGetUserMedia = Symbol('_ensureGetUserMedia');
  const _getUserMedia = Symbol('_getUserMedia');
  const _requestKeyboardLock_1 = Symbol('_requestKeyboardLock_1');
  const _requestKeyboardLock_2 = Symbol('_requestKeyboardLock_2');
  html$.NavigatorConcurrentHardware = class NavigatorConcurrentHardware extends _interceptors.Interceptor {
    get [$hardwareConcurrency]() {
      return this.hardwareConcurrency;
    }
  };
  dart.addTypeTests(html$.NavigatorConcurrentHardware);
  const hardwareConcurrency = Symbol("NavigatorConcurrentHardware.hardwareConcurrency");
  dart.setFieldSignature(html$.NavigatorConcurrentHardware, () => ({
    __proto__: dart.getFields(html$.NavigatorConcurrentHardware.__proto__),
    [$hardwareConcurrency]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("NavigatorConcurrentHardware", html$.NavigatorConcurrentHardware);
  html$.Navigator = class Navigator extends html$.NavigatorConcurrentHardware {
    [$getGamepads]() {
      let gamepadList = this[_getGamepads]();
      let jsProto = gamepadList.prototype;
      if (jsProto == null) {
        gamepadList.prototype = Object.create(null);
      }
      _js_helper.applyExtension("GamepadList", gamepadList);
      return gamepadList;
    }
    get [$language]() {
      return this.language || this.userLanguage;
    }
    [$getUserMedia](opts) {
      let audio = opts && 'audio' in opts ? opts.audio : false;
      let video = opts && 'video' in opts ? opts.video : false;
      let completer = CompleterOfMediaStream().new();
      let options = new (IdentityMapOfString$dynamic()).from(["audio", audio, "video", video]);
      this[_ensureGetUserMedia]();
      this[_getUserMedia](html_common.convertDartToNative_SerializedScriptValue(options), dart.fn(stream => {
        completer.complete(stream);
      }, MediaStreamToNull()), dart.fn(error => {
        completer.completeError(error);
      }, NavigatorUserMediaErrorToNull()));
      return completer.future;
    }
    [_ensureGetUserMedia]() {
      if (!this.getUserMedia) {
        this.getUserMedia = this.getUserMedia || this.webkitGetUserMedia || this.mozGetUserMedia || this.msGetUserMedia;
      }
    }
    [_getUserMedia](...args) {
      return this.getUserMedia.apply(this, args);
    }
    get [$budget]() {
      return this.budget;
    }
    get [$clipboard]() {
      return this.clipboard;
    }
    get [$connection]() {
      return this.connection;
    }
    get [$credentials]() {
      return this.credentials;
    }
    get [$deviceMemory]() {
      return this.deviceMemory;
    }
    get [$doNotTrack]() {
      return this.doNotTrack;
    }
    get [$geolocation]() {
      return this.geolocation;
    }
    get [$maxTouchPoints]() {
      return this.maxTouchPoints;
    }
    get [$mediaCapabilities]() {
      return this.mediaCapabilities;
    }
    get [$mediaDevices]() {
      return this.mediaDevices;
    }
    get [$mediaSession]() {
      return this.mediaSession;
    }
    get [$mimeTypes]() {
      return this.mimeTypes;
    }
    get [$nfc]() {
      return this.nfc;
    }
    get [$permissions]() {
      return this.permissions;
    }
    get [$presentation]() {
      return this.presentation;
    }
    get [$productSub]() {
      return this.productSub;
    }
    get [$serviceWorker]() {
      return this.serviceWorker;
    }
    get [$storage]() {
      return this.storage;
    }
    get [$vendor]() {
      return this.vendor;
    }
    get [$vendorSub]() {
      return this.vendorSub;
    }
    get [$vr]() {
      return this.vr;
    }
    get [$persistentStorage]() {
      return this.webkitPersistentStorage;
    }
    get [$temporaryStorage]() {
      return this.webkitTemporaryStorage;
    }
    [$cancelKeyboardLock](...args) {
      return this.cancelKeyboardLock.apply(this, args);
    }
    [$getBattery]() {
      return html$.promiseToFuture(dart.dynamic, this.getBattery());
    }
    [_getGamepads](...args) {
      return this.getGamepads.apply(this, args);
    }
    [$getInstalledRelatedApps]() {
      return html$.promiseToFuture(html$.RelatedApplication, this.getInstalledRelatedApps());
    }
    [$getVRDisplays]() {
      return html$.promiseToFuture(dart.dynamic, this.getVRDisplays());
    }
    [$registerProtocolHandler](...args) {
      return this.registerProtocolHandler.apply(this, args);
    }
    [$requestKeyboardLock](keyCodes) {
      if (keyCodes === void 0) keyCodes = null;
      if (keyCodes != null) {
        let keyCodes_1 = html_common.convertDartToNative_StringArray(keyCodes);
        return this[_requestKeyboardLock_1](keyCodes_1);
      }
      return this[_requestKeyboardLock_2]();
    }
    [_requestKeyboardLock_1](keyCodes) {
      return html$.promiseToFuture(dart.dynamic, this.requestKeyboardLock(keyCodes));
    }
    [_requestKeyboardLock_2]() {
      return html$.promiseToFuture(dart.dynamic, this.requestKeyboardLock());
    }
    [$requestMidiAccess](options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(dart.dynamic, this.requestMidiAccess(options_dict));
    }
    [$requestMediaKeySystemAccess](keySystem, supportedConfigurations) {
      return html$.promiseToFuture(dart.dynamic, this.requestMediaKeySystemAccess(keySystem, supportedConfigurations));
    }
    [$sendBeacon](...args) {
      return this.sendBeacon.apply(this, args);
    }
    [$share](data) {
      if (data === void 0) data = null;
      let data_dict = null;
      if (data != null) {
        data_dict = html_common.convertDartToNative_Dictionary(data);
      }
      return html$.promiseToFuture(dart.dynamic, this.share(data_dict));
    }
    get [$webdriver]() {
      return this.webdriver;
    }
    get [$cookieEnabled]() {
      return this.cookieEnabled;
    }
    get [$appCodeName]() {
      return this.appCodeName;
    }
    get [$appName]() {
      return this.appName;
    }
    get [$appVersion]() {
      return this.appVersion;
    }
    get [$dartEnabled]() {
      return this.dartEnabled;
    }
    get [$platform]() {
      return this.platform;
    }
    get [$product]() {
      return this.product;
    }
    get [$userAgent]() {
      return this.userAgent;
    }
    get [$languages]() {
      return this.languages;
    }
    get [$onLine]() {
      return this.onLine;
    }
  };
  dart.addTypeTests(html$.Navigator);
  const budget = Symbol("Navigator.budget");
  const clipboard = Symbol("Navigator.clipboard");
  const connection$ = Symbol("Navigator.connection");
  const credentials = Symbol("Navigator.credentials");
  const deviceMemory = Symbol("Navigator.deviceMemory");
  const doNotTrack = Symbol("Navigator.doNotTrack");
  const geolocation = Symbol("Navigator.geolocation");
  const maxTouchPoints = Symbol("Navigator.maxTouchPoints");
  const mediaCapabilities = Symbol("Navigator.mediaCapabilities");
  const mediaDevices = Symbol("Navigator.mediaDevices");
  const mediaSession = Symbol("Navigator.mediaSession");
  const mimeTypes = Symbol("Navigator.mimeTypes");
  const nfc = Symbol("Navigator.nfc");
  const permissions = Symbol("Navigator.permissions");
  const presentation = Symbol("Navigator.presentation");
  const productSub = Symbol("Navigator.productSub");
  const serviceWorker = Symbol("Navigator.serviceWorker");
  const storage = Symbol("Navigator.storage");
  const vendor = Symbol("Navigator.vendor");
  const vendorSub = Symbol("Navigator.vendorSub");
  const vr = Symbol("Navigator.vr");
  const persistentStorage = Symbol("Navigator.persistentStorage");
  const temporaryStorage = Symbol("Navigator.temporaryStorage");
  const webdriver = Symbol("Navigator.webdriver");
  const cookieEnabled = Symbol("Navigator.cookieEnabled");
  const appCodeName = Symbol("Navigator.appCodeName");
  const appName = Symbol("Navigator.appName");
  const appVersion = Symbol("Navigator.appVersion");
  const dartEnabled = Symbol("Navigator.dartEnabled");
  const platform = Symbol("Navigator.platform");
  const product = Symbol("Navigator.product");
  const userAgent = Symbol("Navigator.userAgent");
  const languages = Symbol("Navigator.languages");
  const onLine = Symbol("Navigator.onLine");
  html$.Navigator[dart.implements] = () => [html$.NavigatorCookies, html$.NavigatorLanguage, html$.NavigatorOnLine, html$.NavigatorAutomationInformation, html$.NavigatorID];
  dart.setMethodSignature(html$.Navigator, () => ({
    __proto__: dart.getMethods(html$.Navigator.__proto__),
    [$getGamepads]: dart.fnType(core.List$(html$.Gamepad), []),
    [$getUserMedia]: dart.fnType(async.Future$(html$.MediaStream), [], {audio: dart.dynamic, video: dart.dynamic}),
    [_ensureGetUserMedia]: dart.fnType(dart.dynamic, []),
    [_getUserMedia]: dart.fnType(dart.void, [dart.dynamic, dart.fnType(dart.void, [html$.MediaStream]), dart.fnType(dart.void, [html$.NavigatorUserMediaError])]),
    [$cancelKeyboardLock]: dart.fnType(dart.void, []),
    [$getBattery]: dart.fnType(async.Future, []),
    [_getGamepads]: dart.fnType(core.List$(html$.Gamepad), []),
    [$getInstalledRelatedApps]: dart.fnType(async.Future$(html$.RelatedApplication), []),
    [$getVRDisplays]: dart.fnType(async.Future, []),
    [$registerProtocolHandler]: dart.fnType(dart.void, [core.String, core.String, core.String]),
    [$requestKeyboardLock]: dart.fnType(async.Future, [], [core.List$(core.String)]),
    [_requestKeyboardLock_1]: dart.fnType(async.Future, [core.List]),
    [_requestKeyboardLock_2]: dart.fnType(async.Future, []),
    [$requestMidiAccess]: dart.fnType(async.Future, [], [core.Map]),
    [$requestMediaKeySystemAccess]: dart.fnType(async.Future, [core.String, core.List$(core.Map)]),
    [$sendBeacon]: dart.fnType(core.bool, [core.String, core.Object]),
    [$share]: dart.fnType(async.Future, [], [core.Map])
  }));
  dart.setGetterSignature(html$.Navigator, () => ({
    __proto__: dart.getGetters(html$.Navigator.__proto__),
    [$language]: core.String
  }));
  dart.setFieldSignature(html$.Navigator, () => ({
    __proto__: dart.getFields(html$.Navigator.__proto__),
    [$budget]: dart.finalFieldType(html$._BudgetService),
    [$clipboard]: dart.finalFieldType(html$._Clipboard),
    [$connection]: dart.finalFieldType(html$.NetworkInformation),
    [$credentials]: dart.finalFieldType(html$.CredentialsContainer),
    [$deviceMemory]: dart.finalFieldType(core.num),
    [$doNotTrack]: dart.finalFieldType(core.String),
    [$geolocation]: dart.finalFieldType(html$.Geolocation),
    [$maxTouchPoints]: dart.finalFieldType(core.int),
    [$mediaCapabilities]: dart.finalFieldType(html$.MediaCapabilities),
    [$mediaDevices]: dart.finalFieldType(html$.MediaDevices),
    [$mediaSession]: dart.finalFieldType(html$.MediaSession),
    [$mimeTypes]: dart.finalFieldType(html$.MimeTypeArray),
    [$nfc]: dart.finalFieldType(html$._NFC),
    [$permissions]: dart.finalFieldType(html$.Permissions),
    [$presentation]: dart.finalFieldType(html$.Presentation),
    [$productSub]: dart.finalFieldType(core.String),
    [$serviceWorker]: dart.finalFieldType(html$.ServiceWorkerContainer),
    [$storage]: dart.finalFieldType(html$.StorageManager),
    [$vendor]: dart.finalFieldType(core.String),
    [$vendorSub]: dart.finalFieldType(core.String),
    [$vr]: dart.finalFieldType(html$.VR),
    [$persistentStorage]: dart.finalFieldType(html$.DeprecatedStorageQuota),
    [$temporaryStorage]: dart.finalFieldType(html$.DeprecatedStorageQuota),
    [$webdriver]: dart.finalFieldType(core.bool),
    [$cookieEnabled]: dart.finalFieldType(core.bool),
    [$appCodeName]: dart.finalFieldType(core.String),
    [$appName]: dart.finalFieldType(core.String),
    [$appVersion]: dart.finalFieldType(core.String),
    [$dartEnabled]: dart.finalFieldType(core.bool),
    [$platform]: dart.finalFieldType(core.String),
    [$product]: dart.finalFieldType(core.String),
    [$userAgent]: dart.finalFieldType(core.String),
    [$languages]: dart.finalFieldType(ListOfString()),
    [$onLine]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("Navigator", html$.Navigator);
  html$.NavigatorAutomationInformation = class NavigatorAutomationInformation extends _interceptors.Interceptor {
    get [$webdriver]() {
      return this.webdriver;
    }
  };
  dart.addTypeTests(html$.NavigatorAutomationInformation);
  const webdriver$ = Symbol("NavigatorAutomationInformation.webdriver");
  dart.setFieldSignature(html$.NavigatorAutomationInformation, () => ({
    __proto__: dart.getFields(html$.NavigatorAutomationInformation.__proto__),
    [$webdriver]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("NavigatorAutomationInformation", html$.NavigatorAutomationInformation);
  html$.NavigatorCookies = class NavigatorCookies extends _interceptors.Interceptor {
    get [$cookieEnabled]() {
      return this.cookieEnabled;
    }
  };
  dart.addTypeTests(html$.NavigatorCookies);
  const cookieEnabled$ = Symbol("NavigatorCookies.cookieEnabled");
  dart.setFieldSignature(html$.NavigatorCookies, () => ({
    __proto__: dart.getFields(html$.NavigatorCookies.__proto__),
    [$cookieEnabled]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("NavigatorCookies", html$.NavigatorCookies);
  html$.NavigatorID = class NavigatorID extends _interceptors.Interceptor {
    get appCodeName() {
      return this[appCodeName$];
    }
    set appCodeName(value) {
      super.appCodeName = value;
    }
    get appName() {
      return this[appName$];
    }
    set appName(value) {
      super.appName = value;
    }
    get appVersion() {
      return this[appVersion$];
    }
    set appVersion(value) {
      super.appVersion = value;
    }
    get dartEnabled() {
      return this[dartEnabled$];
    }
    set dartEnabled(value) {
      super.dartEnabled = value;
    }
    get platform() {
      return this[platform$];
    }
    set platform(value) {
      super.platform = value;
    }
    get product() {
      return this[product$];
    }
    set product(value) {
      super.product = value;
    }
    get userAgent() {
      return this[userAgent$];
    }
    set userAgent(value) {
      super.userAgent = value;
    }
  };
  dart.addTypeTests(html$.NavigatorID);
  const appCodeName$ = Symbol("NavigatorID.appCodeName");
  const appName$ = Symbol("NavigatorID.appName");
  const appVersion$ = Symbol("NavigatorID.appVersion");
  const dartEnabled$ = Symbol("NavigatorID.dartEnabled");
  const platform$ = Symbol("NavigatorID.platform");
  const product$ = Symbol("NavigatorID.product");
  const userAgent$ = Symbol("NavigatorID.userAgent");
  dart.setFieldSignature(html$.NavigatorID, () => ({
    __proto__: dart.getFields(html$.NavigatorID.__proto__),
    appCodeName: dart.finalFieldType(core.String),
    appName: dart.finalFieldType(core.String),
    appVersion: dart.finalFieldType(core.String),
    dartEnabled: dart.finalFieldType(core.bool),
    platform: dart.finalFieldType(core.String),
    product: dart.finalFieldType(core.String),
    userAgent: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionAccessors(html$.NavigatorID, [
    'appCodeName',
    'appName',
    'appVersion',
    'dartEnabled',
    'platform',
    'product',
    'userAgent'
  ]);
  html$.NavigatorLanguage = class NavigatorLanguage extends _interceptors.Interceptor {
    get language() {
      return this[language];
    }
    set language(value) {
      super.language = value;
    }
    get languages() {
      return this[languages$];
    }
    set languages(value) {
      super.languages = value;
    }
  };
  dart.addTypeTests(html$.NavigatorLanguage);
  const language = Symbol("NavigatorLanguage.language");
  const languages$ = Symbol("NavigatorLanguage.languages");
  dart.setFieldSignature(html$.NavigatorLanguage, () => ({
    __proto__: dart.getFields(html$.NavigatorLanguage.__proto__),
    language: dart.finalFieldType(core.String),
    languages: dart.finalFieldType(ListOfString())
  }));
  dart.defineExtensionAccessors(html$.NavigatorLanguage, ['language', 'languages']);
  html$.NavigatorOnLine = class NavigatorOnLine extends _interceptors.Interceptor {
    get onLine() {
      return this[onLine$];
    }
    set onLine(value) {
      super.onLine = value;
    }
  };
  dart.addTypeTests(html$.NavigatorOnLine);
  const onLine$ = Symbol("NavigatorOnLine.onLine");
  dart.setFieldSignature(html$.NavigatorOnLine, () => ({
    __proto__: dart.getFields(html$.NavigatorOnLine.__proto__),
    onLine: dart.finalFieldType(core.bool)
  }));
  dart.defineExtensionAccessors(html$.NavigatorOnLine, ['onLine']);
  html$.NavigatorUserMediaError = class NavigatorUserMediaError extends _interceptors.Interceptor {
    get [$constraintName]() {
      return this.constraintName;
    }
    get [$message]() {
      return this.message;
    }
    get [$name]() {
      return this.name;
    }
  };
  dart.addTypeTests(html$.NavigatorUserMediaError);
  const constraintName = Symbol("NavigatorUserMediaError.constraintName");
  const message$23 = Symbol("NavigatorUserMediaError.message");
  const name$24 = Symbol("NavigatorUserMediaError.name");
  dart.setFieldSignature(html$.NavigatorUserMediaError, () => ({
    __proto__: dart.getFields(html$.NavigatorUserMediaError.__proto__),
    [$constraintName]: dart.finalFieldType(core.String),
    [$message]: dart.finalFieldType(core.String),
    [$name]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("NavigatorUserMediaError", html$.NavigatorUserMediaError);
  html$.NetworkInformation = class NetworkInformation extends html$.EventTarget {
    get [$downlink]() {
      return this.downlink;
    }
    get [$downlinkMax]() {
      return this.downlinkMax;
    }
    get [$effectiveType]() {
      return this.effectiveType;
    }
    get [$rtt]() {
      return this.rtt;
    }
    get [$type]() {
      return this.type;
    }
    get [$onChange]() {
      return html$.NetworkInformation.changeEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.NetworkInformation);
  const downlink = Symbol("NetworkInformation.downlink");
  const downlinkMax = Symbol("NetworkInformation.downlinkMax");
  const effectiveType = Symbol("NetworkInformation.effectiveType");
  const rtt = Symbol("NetworkInformation.rtt");
  const type$20 = Symbol("NetworkInformation.type");
  dart.setGetterSignature(html$.NetworkInformation, () => ({
    __proto__: dart.getGetters(html$.NetworkInformation.__proto__),
    [$onChange]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.NetworkInformation, () => ({
    __proto__: dart.getFields(html$.NetworkInformation.__proto__),
    [$downlink]: dart.finalFieldType(core.num),
    [$downlinkMax]: dart.finalFieldType(core.num),
    [$effectiveType]: dart.finalFieldType(core.String),
    [$rtt]: dart.finalFieldType(core.int),
    [$type]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.NetworkInformation, {
    /*html$.NetworkInformation.changeEvent*/get changeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("change"));
    }
  });
  dart.registerExtension("NetworkInformation", html$.NetworkInformation);
  html$._ChildNodeListLazy = class _ChildNodeListLazy extends collection.ListBase$(html$.Node) {
    get first() {
      let result = this[_this].firstChild;
      if (result == null) dart.throw(new core.StateError.new("No elements"));
      return result;
    }
    set first(value) {
      super.first = value;
    }
    get last() {
      let result = this[_this].lastChild;
      if (result == null) dart.throw(new core.StateError.new("No elements"));
      return result;
    }
    set last(value) {
      super.last = value;
    }
    get single() {
      let l = this.length;
      if (l === 0) dart.throw(new core.StateError.new("No elements"));
      if (dart.notNull(l) > 1) dart.throw(new core.StateError.new("More than one element"));
      return this[_this].firstChild;
    }
    add(value) {
      html$.Node._check(value);
      this[_this][$append](value);
    }
    addAll(iterable) {
      IterableOfNode()._check(iterable);
      if (html$._ChildNodeListLazy.is(iterable)) {
        let otherList = iterable;
        if (!(otherList[_this] == this[_this])) {
          for (let i = 0, len = otherList.length; i < dart.notNull(len); ++i) {
            this[_this][$append](otherList[_this].firstChild);
          }
        }
        return;
      }
      for (let node of iterable) {
        this[_this][$append](node);
      }
    }
    insert(index, node) {
      html$.Node._check(node);
      if (dart.notNull(index) < 0 || dart.notNull(index) > dart.notNull(this.length)) {
        dart.throw(new core.RangeError.range(index, 0, this.length));
      }
      if (index == this.length) {
        this[_this][$append](node);
      } else {
        this[_this].insertBefore(node, this._get(index));
      }
    }
    insertAll(index, iterable) {
      IterableOfNode()._check(iterable);
      if (index == this.length) {
        this.addAll(iterable);
      } else {
        let item = this._get(index);
        this[_this][$insertAllBefore](iterable, item);
      }
    }
    setAll(index, iterable) {
      IterableOfNode()._check(iterable);
      dart.throw(new core.UnsupportedError.new("Cannot setAll on Node list"));
    }
    removeLast() {
      let result = this.last;
      if (result != null) {
        this[_this][_removeChild](result);
      }
      return result;
    }
    removeAt(index) {
      let result = this._get(index);
      if (result != null) {
        this[_this][_removeChild](result);
      }
      return result;
    }
    remove(object) {
      if (!html$.Node.is(object)) return false;
      let node = html$.Node._check(object);
      if (!(this[_this] == node.parentNode)) return false;
      this[_this][_removeChild](node);
      return true;
    }
    [_filter$0](test, removeMatching) {
      let child = this[_this].firstChild;
      while (child != null) {
        let nextChild = child[$nextNode];
        if (test(child) == removeMatching) {
          this[_this][_removeChild](child);
        }
        child = nextChild;
      }
    }
    removeWhere(test) {
      this[_filter$0](test, true);
    }
    retainWhere(test) {
      this[_filter$0](test, false);
    }
    clear() {
      this[_this][_clearChildren]();
    }
    _set(index, value) {
      html$.Node._check(value);
      this[_this][_replaceChild](value, this._get(index));
      return value;
    }
    get iterator() {
      return this[_this].childNodes[$iterator];
    }
    sort(compare) {
      if (compare === void 0) compare = null;
      dart.throw(new core.UnsupportedError.new("Cannot sort Node list"));
    }
    shuffle(random) {
      if (random === void 0) random = null;
      dart.throw(new core.UnsupportedError.new("Cannot shuffle Node list"));
    }
    setRange(start, end, iterable, skipCount) {
      IterableOfNode()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      dart.throw(new core.UnsupportedError.new("Cannot setRange on Node list"));
    }
    fillRange(start, end, fill) {
      if (fill === void 0) fill = null;
      html$.Node._check(fill);
      dart.throw(new core.UnsupportedError.new("Cannot fillRange on Node list"));
    }
    removeRange(start, end) {
      dart.throw(new core.UnsupportedError.new("Cannot removeRange on Node list"));
    }
    get length() {
      return this[_this].childNodes[$length];
    }
    set length(value) {
      dart.throw(new core.UnsupportedError.new("Cannot set length on immutable List."));
    }
    _get(index) {
      return this[_this].childNodes[$_get](index);
    }
    get rawList() {
      return this[_this].childNodes;
    }
  };
  (html$._ChildNodeListLazy.new = function(this$) {
    this[_this] = this$;
  }).prototype = html$._ChildNodeListLazy.prototype;
  dart.addTypeTests(html$._ChildNodeListLazy);
  html$._ChildNodeListLazy[dart.implements] = () => [html_common.NodeListWrapper];
  dart.setMethodSignature(html$._ChildNodeListLazy, () => ({
    __proto__: dart.getMethods(html$._ChildNodeListLazy.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    [$add]: dart.fnType(dart.void, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    insert: dart.fnType(dart.void, [core.int, core.Object]),
    [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
    insertAll: dart.fnType(dart.void, [core.int, core.Object]),
    [$insertAll]: dart.fnType(dart.void, [core.int, core.Object]),
    setAll: dart.fnType(dart.void, [core.int, core.Object]),
    [$setAll]: dart.fnType(dart.void, [core.int, core.Object]),
    removeLast: dart.fnType(html$.Node, []),
    [$removeLast]: dart.fnType(html$.Node, []),
    removeAt: dart.fnType(html$.Node, [core.int]),
    [$removeAt]: dart.fnType(html$.Node, [core.int]),
    remove: dart.fnType(core.bool, [core.Object]),
    [$remove]: dart.fnType(core.bool, [core.Object]),
    [_filter$0]: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Node]), core.bool]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Node])]),
    [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Node])]),
    retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Node])]),
    [$retainWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Node])]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, []),
    _set: dart.fnType(dart.void, [core.int, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    sort: dart.fnType(dart.void, [], [dart.fnType(core.int, [html$.Node, html$.Node])]),
    [$sort]: dart.fnType(dart.void, [], [dart.fnType(core.int, [html$.Node, html$.Node])]),
    shuffle: dart.fnType(dart.void, [], [math.Random]),
    [$shuffle]: dart.fnType(dart.void, [], [math.Random]),
    setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    fillRange: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
    [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
    removeRange: dart.fnType(dart.void, [core.int, core.int]),
    [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
    _get: dart.fnType(html$.Node, [core.int]),
    [$_get]: dart.fnType(html$.Node, [core.int])
  }));
  dart.setGetterSignature(html$._ChildNodeListLazy, () => ({
    __proto__: dart.getGetters(html$._ChildNodeListLazy.__proto__),
    first: html$.Node,
    [$first]: html$.Node,
    last: html$.Node,
    [$last]: html$.Node,
    single: html$.Node,
    [$single]: html$.Node,
    iterator: core.Iterator$(html$.Node),
    [$iterator]: core.Iterator$(html$.Node),
    length: core.int,
    [$length]: core.int,
    rawList: core.List$(html$.Node)
  }));
  dart.setSetterSignature(html$._ChildNodeListLazy, () => ({
    __proto__: dart.getSetters(html$._ChildNodeListLazy.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.setFieldSignature(html$._ChildNodeListLazy, () => ({
    __proto__: dart.getFields(html$._ChildNodeListLazy.__proto__),
    [_this]: dart.finalFieldType(html$.Node)
  }));
  dart.defineExtensionMethods(html$._ChildNodeListLazy, [
    'add',
    'addAll',
    'insert',
    'insertAll',
    'setAll',
    'removeLast',
    'removeAt',
    'remove',
    'removeWhere',
    'retainWhere',
    'clear',
    '_set',
    'sort',
    'shuffle',
    'setRange',
    'fillRange',
    'removeRange',
    '_get'
  ]);
  dart.defineExtensionAccessors(html$._ChildNodeListLazy, [
    'first',
    'last',
    'single',
    'iterator',
    'length'
  ]);
  html$.NodeFilter = class NodeFilter extends _interceptors.Interceptor {};
  dart.addTypeTests(html$.NodeFilter);
  dart.defineLazy(html$.NodeFilter, {
    /*html$.NodeFilter.FILTER_ACCEPT*/get FILTER_ACCEPT() {
      return 1;
    },
    /*html$.NodeFilter.FILTER_REJECT*/get FILTER_REJECT() {
      return 2;
    },
    /*html$.NodeFilter.FILTER_SKIP*/get FILTER_SKIP() {
      return 3;
    },
    /*html$.NodeFilter.SHOW_ALL*/get SHOW_ALL() {
      return 4294967295;
    },
    /*html$.NodeFilter.SHOW_COMMENT*/get SHOW_COMMENT() {
      return 128;
    },
    /*html$.NodeFilter.SHOW_DOCUMENT*/get SHOW_DOCUMENT() {
      return 256;
    },
    /*html$.NodeFilter.SHOW_DOCUMENT_FRAGMENT*/get SHOW_DOCUMENT_FRAGMENT() {
      return 1024;
    },
    /*html$.NodeFilter.SHOW_DOCUMENT_TYPE*/get SHOW_DOCUMENT_TYPE() {
      return 512;
    },
    /*html$.NodeFilter.SHOW_ELEMENT*/get SHOW_ELEMENT() {
      return 1;
    },
    /*html$.NodeFilter.SHOW_PROCESSING_INSTRUCTION*/get SHOW_PROCESSING_INSTRUCTION() {
      return 64;
    },
    /*html$.NodeFilter.SHOW_TEXT*/get SHOW_TEXT() {
      return 4;
    }
  });
  dart.registerExtension("NodeFilter", html$.NodeFilter);
  html$.NodeIterator = class NodeIterator extends _interceptors.Interceptor {
    static new(root, whatToShow) {
      return html$.document[_createNodeIterator](root, whatToShow, null);
    }
    get [$pointerBeforeReferenceNode]() {
      return this.pointerBeforeReferenceNode;
    }
    get [$referenceNode]() {
      return this.referenceNode;
    }
    get [$root]() {
      return this.root;
    }
    get [$whatToShow]() {
      return this.whatToShow;
    }
    [$detach](...args) {
      return this.detach.apply(this, args);
    }
    [$nextNode](...args) {
      return this.nextNode.apply(this, args);
    }
    [$previousNode](...args) {
      return this.previousNode.apply(this, args);
    }
  };
  dart.addTypeTests(html$.NodeIterator);
  const pointerBeforeReferenceNode = Symbol("NodeIterator.pointerBeforeReferenceNode");
  const referenceNode = Symbol("NodeIterator.referenceNode");
  const root$0 = Symbol("NodeIterator.root");
  const whatToShow = Symbol("NodeIterator.whatToShow");
  dart.setMethodSignature(html$.NodeIterator, () => ({
    __proto__: dart.getMethods(html$.NodeIterator.__proto__),
    [$detach]: dart.fnType(dart.void, []),
    [$nextNode]: dart.fnType(html$.Node, []),
    [$previousNode]: dart.fnType(html$.Node, [])
  }));
  dart.setFieldSignature(html$.NodeIterator, () => ({
    __proto__: dart.getFields(html$.NodeIterator.__proto__),
    [$pointerBeforeReferenceNode]: dart.finalFieldType(core.bool),
    [$referenceNode]: dart.finalFieldType(html$.Node),
    [$root]: dart.finalFieldType(html$.Node),
    [$whatToShow]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("NodeIterator", html$.NodeIterator);
  const Interceptor_ListMixin$$3 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$3.new = function() {
    Interceptor_ListMixin$$3.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$3.prototype;
  dart.applyMixin(Interceptor_ListMixin$$3, collection.ListMixin$(html$.Node));
  const Interceptor_ImmutableListMixin$$3 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$3 {};
  (Interceptor_ImmutableListMixin$$3.new = function() {
    Interceptor_ImmutableListMixin$$3.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$3.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$3, html$.ImmutableListMixin$(html$.Node));
  html$.NodeList = class NodeList extends Interceptor_ImmutableListMixin$$3 {
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[index];
    }
    [$_set](index, value) {
      html$.Node._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [_item](...args) {
      return this.item.apply(this, args);
    }
  };
  html$.NodeList.prototype[dart.isList] = true;
  dart.addTypeTests(html$.NodeList);
  html$.NodeList[dart.implements] = () => [JavaScriptIndexingBehaviorOfNode(), ListOfNode()];
  dart.setMethodSignature(html$.NodeList, () => ({
    __proto__: dart.getMethods(html$.NodeList.__proto__),
    [$_get]: dart.fnType(html$.Node, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(html$.Node, [core.int]),
    [_item]: dart.fnType(html$.Node, [core.int])
  }));
  dart.setGetterSignature(html$.NodeList, () => ({
    __proto__: dart.getGetters(html$.NodeList.__proto__),
    [$length]: core.int,
    [$first]: html$.Node,
    [$last]: html$.Node,
    [$single]: html$.Node
  }));
  dart.setSetterSignature(html$.NodeList, () => ({
    __proto__: dart.getSetters(html$.NodeList.__proto__),
    [$length]: core.int
  }));
  dart.registerExtension("NodeList", html$.NodeList);
  dart.registerExtension("RadioNodeList", html$.NodeList);
  html$.NonDocumentTypeChildNode = class NonDocumentTypeChildNode extends _interceptors.Interceptor {
    get [$nextElementSibling]() {
      return this.nextElementSibling;
    }
    get [$previousElementSibling]() {
      return this.previousElementSibling;
    }
  };
  dart.addTypeTests(html$.NonDocumentTypeChildNode);
  const nextElementSibling$0 = Symbol("NonDocumentTypeChildNode.nextElementSibling");
  const previousElementSibling$0 = Symbol("NonDocumentTypeChildNode.previousElementSibling");
  dart.setFieldSignature(html$.NonDocumentTypeChildNode, () => ({
    __proto__: dart.getFields(html$.NonDocumentTypeChildNode.__proto__),
    [$nextElementSibling]: dart.finalFieldType(html$.Element),
    [$previousElementSibling]: dart.finalFieldType(html$.Element)
  }));
  dart.registerExtension("NonDocumentTypeChildNode", html$.NonDocumentTypeChildNode);
  html$.NonElementParentNode = class NonElementParentNode extends _interceptors.Interceptor {
    [$getElementById](...args) {
      return this.getElementById.apply(this, args);
    }
  };
  dart.addTypeTests(html$.NonElementParentNode);
  dart.setMethodSignature(html$.NonElementParentNode, () => ({
    __proto__: dart.getMethods(html$.NonElementParentNode.__proto__),
    [$getElementById]: dart.fnType(html$.Element, [core.String])
  }));
  dart.registerExtension("NonElementParentNode", html$.NonElementParentNode);
  html$.NoncedElement = class NoncedElement extends _interceptors.Interceptor {
    get [$nonce]() {
      return this.nonce;
    }
    set [$nonce](value) {
      this.nonce = value;
    }
  };
  dart.addTypeTests(html$.NoncedElement);
  const nonce$ = Symbol("NoncedElement.nonce");
  dart.setFieldSignature(html$.NoncedElement, () => ({
    __proto__: dart.getFields(html$.NoncedElement.__proto__),
    [$nonce]: dart.fieldType(core.String)
  }));
  dart.registerExtension("NoncedElement", html$.NoncedElement);
  html$.Notification = class Notification$ extends html$.EventTarget {
    static new(title, opts) {
      let dir = opts && 'dir' in opts ? opts.dir : null;
      let body = opts && 'body' in opts ? opts.body : null;
      let lang = opts && 'lang' in opts ? opts.lang : null;
      let tag = opts && 'tag' in opts ? opts.tag : null;
      let icon = opts && 'icon' in opts ? opts.icon : null;
      let parsedOptions = new _js_helper.LinkedMap.new();
      if (dir != null) parsedOptions[$_set]("dir", dir);
      if (body != null) parsedOptions[$_set]("body", body);
      if (lang != null) parsedOptions[$_set]("lang", lang);
      if (tag != null) parsedOptions[$_set]("tag", tag);
      if (icon != null) parsedOptions[$_set]("icon", icon);
      return html$.Notification._factoryNotification(title, parsedOptions);
    }
    static _factoryNotification(title, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return html$.Notification._create_1(title, options_1);
      }
      return html$.Notification._create_2(title);
    }
    static _create_1(title, options) {
      return new Notification(title, options);
    }
    static _create_2(title) {
      return new Notification(title);
    }
    static get supported() {
      return !!window.Notification;
    }
    get [$actions]() {
      return this.actions;
    }
    get [$badge]() {
      return this.badge;
    }
    get [$body]() {
      return this.body;
    }
    get [$data]() {
      return this.data;
    }
    get [$dir]() {
      return this.dir;
    }
    get [$icon]() {
      return this.icon;
    }
    get [$image]() {
      return this.image;
    }
    get [$lang]() {
      return this.lang;
    }
    get [$renotify]() {
      return this.renotify;
    }
    get [$requireInteraction]() {
      return this.requireInteraction;
    }
    get [$silent]() {
      return this.silent;
    }
    get [$tag]() {
      return this.tag;
    }
    get [$timestamp]() {
      return this.timestamp;
    }
    get [$title]() {
      return this.title;
    }
    get [$vibrate]() {
      return this.vibrate;
    }
    [$close](...args) {
      return this.close.apply(this, args);
    }
    static requestPermission() {
      let completer = CompleterOfString().new();
      dart.global.Notification.requestPermission(dart.fn(value => {
        completer.complete(value);
      }, StringToNull()));
      return completer.future;
    }
    get [$onClick]() {
      return html$.Notification.clickEvent.forTarget(this);
    }
    get [$onClose]() {
      return html$.Notification.closeEvent.forTarget(this);
    }
    get [$onError]() {
      return html$.Notification.errorEvent.forTarget(this);
    }
    get [$onShow]() {
      return html$.Notification.showEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.Notification);
  const actions = Symbol("Notification.actions");
  const badge = Symbol("Notification.badge");
  const body$ = Symbol("Notification.body");
  const data$5 = Symbol("Notification.data");
  const dir$ = Symbol("Notification.dir");
  const icon = Symbol("Notification.icon");
  const image = Symbol("Notification.image");
  const lang$ = Symbol("Notification.lang");
  const renotify = Symbol("Notification.renotify");
  const requireInteraction = Symbol("Notification.requireInteraction");
  const silent = Symbol("Notification.silent");
  const tag = Symbol("Notification.tag");
  const timestamp$1 = Symbol("Notification.timestamp");
  const title$2 = Symbol("Notification.title");
  const vibrate = Symbol("Notification.vibrate");
  dart.setMethodSignature(html$.Notification, () => ({
    __proto__: dart.getMethods(html$.Notification.__proto__),
    [$close]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(html$.Notification, () => ({
    __proto__: dart.getGetters(html$.Notification.__proto__),
    [$onClick]: async.Stream$(html$.Event),
    [$onClose]: async.Stream$(html$.Event),
    [$onError]: async.Stream$(html$.Event),
    [$onShow]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.Notification, () => ({
    __proto__: dart.getFields(html$.Notification.__proto__),
    [$actions]: dart.finalFieldType(core.List),
    [$badge]: dart.finalFieldType(core.String),
    [$body]: dart.finalFieldType(core.String),
    [$data]: dart.finalFieldType(core.Object),
    [$dir]: dart.finalFieldType(core.String),
    [$icon]: dart.finalFieldType(core.String),
    [$image]: dart.finalFieldType(core.String),
    [$lang]: dart.finalFieldType(core.String),
    [$renotify]: dart.finalFieldType(core.bool),
    [$requireInteraction]: dart.finalFieldType(core.bool),
    [$silent]: dart.finalFieldType(core.bool),
    [$tag]: dart.finalFieldType(core.String),
    [$timestamp]: dart.finalFieldType(core.int),
    [$title]: dart.finalFieldType(core.String),
    [$vibrate]: dart.finalFieldType(ListOfint())
  }));
  dart.defineLazy(html$.Notification, {
    /*html$.Notification.clickEvent*/get clickEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("click"));
    },
    /*html$.Notification.closeEvent*/get closeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("close"));
    },
    /*html$.Notification.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    },
    /*html$.Notification.showEvent*/get showEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("show"));
    },
    /*html$.Notification.maxActions*/get maxActions() {
      return null;
    },
    /*html$.Notification.permission*/get permission() {
      return null;
    }
  });
  dart.registerExtension("Notification", html$.Notification);
  html$.NotificationEvent = class NotificationEvent$ extends html$.ExtendableEvent {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.NotificationEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new NotificationEvent(type, eventInitDict);
    }
    get [$action]() {
      return this.action;
    }
    get [$notification]() {
      return this.notification;
    }
    get [$reply]() {
      return this.reply;
    }
  };
  dart.addTypeTests(html$.NotificationEvent);
  const action$ = Symbol("NotificationEvent.action");
  const notification = Symbol("NotificationEvent.notification");
  const reply = Symbol("NotificationEvent.reply");
  dart.setFieldSignature(html$.NotificationEvent, () => ({
    __proto__: dart.getFields(html$.NotificationEvent.__proto__),
    [$action]: dart.finalFieldType(core.String),
    [$notification]: dart.finalFieldType(html$.Notification),
    [$reply]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("NotificationEvent", html$.NotificationEvent);
  html$.OListElement = class OListElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("ol");
    }
    get [$reversed]() {
      return this.reversed;
    }
    set [$reversed](value) {
      this.reversed = value;
    }
    get [$start]() {
      return this.start;
    }
    set [$start](value) {
      this.start = value;
    }
    get [$type]() {
      return this.type;
    }
    set [$type](value) {
      this.type = value;
    }
  };
  (html$.OListElement.created = function() {
    this[reversed] = null;
    this[start$] = null;
    this[type$21] = null;
    html$.OListElement.__proto__.created.call(this);
  }).prototype = html$.OListElement.prototype;
  dart.addTypeTests(html$.OListElement);
  const reversed = Symbol("OListElement.reversed");
  const start$ = Symbol("OListElement.start");
  const type$21 = Symbol("OListElement.type");
  dart.setFieldSignature(html$.OListElement, () => ({
    __proto__: dart.getFields(html$.OListElement.__proto__),
    [$reversed]: dart.fieldType(core.bool),
    [$start]: dart.fieldType(core.int),
    [$type]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLOListElement", html$.OListElement);
  html$.ObjectElement = class ObjectElement extends html$.HtmlElement {
    static new() {
      return html$.ObjectElement._check(html$.document[$createElement]("object"));
    }
    static get supported() {
      return html$.Element.isTagSupported("object");
    }
    get [$contentWindow]() {
      return html$._convertNativeToDart_Window(this[_get_contentWindow]);
    }
    get [_get_contentWindow]() {
      return this.contentWindow;
    }
    get [$data]() {
      return this.data;
    }
    set [$data](value) {
      this.data = value;
    }
    get [$form]() {
      return this.form;
    }
    get [$height]() {
      return this.height;
    }
    set [$height](value) {
      this.height = value;
    }
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
    get [$type]() {
      return this.type;
    }
    set [$type](value) {
      this.type = value;
    }
    get [$useMap]() {
      return this.useMap;
    }
    set [$useMap](value) {
      this.useMap = value;
    }
    get [$validationMessage]() {
      return this.validationMessage;
    }
    get [$validity]() {
      return this.validity;
    }
    get [$width]() {
      return this.width;
    }
    set [$width](value) {
      this.width = value;
    }
    get [$willValidate]() {
      return this.willValidate;
    }
    [__getter__](...args) {
      return this.__getter__.apply(this, args);
    }
    [__setter__](...args) {
      return this.__setter__.apply(this, args);
    }
    [$checkValidity](...args) {
      return this.checkValidity.apply(this, args);
    }
    [$reportValidity](...args) {
      return this.reportValidity.apply(this, args);
    }
    [$setCustomValidity](...args) {
      return this.setCustomValidity.apply(this, args);
    }
  };
  (html$.ObjectElement.created = function() {
    this[_get_contentWindow] = null;
    this[data$6] = null;
    this[form$3] = null;
    this[height$6] = null;
    this[name$25] = null;
    this[type$22] = null;
    this[useMap$] = null;
    this[validationMessage$1] = null;
    this[validity$1] = null;
    this[width$6] = null;
    this[willValidate$1] = null;
    html$.ObjectElement.__proto__.created.call(this);
  }).prototype = html$.ObjectElement.prototype;
  dart.addTypeTests(html$.ObjectElement);
  const data$6 = Symbol("ObjectElement.data");
  const form$3 = Symbol("ObjectElement.form");
  const height$6 = Symbol("ObjectElement.height");
  const name$25 = Symbol("ObjectElement.name");
  const type$22 = Symbol("ObjectElement.type");
  const useMap$ = Symbol("ObjectElement.useMap");
  const validationMessage$1 = Symbol("ObjectElement.validationMessage");
  const validity$1 = Symbol("ObjectElement.validity");
  const width$6 = Symbol("ObjectElement.width");
  const willValidate$1 = Symbol("ObjectElement.willValidate");
  dart.setMethodSignature(html$.ObjectElement, () => ({
    __proto__: dart.getMethods(html$.ObjectElement.__proto__),
    [__getter__]: dart.fnType(html$.Node, [core.String]),
    [__setter__]: dart.fnType(dart.void, [core.String, html$.Node]),
    [$checkValidity]: dart.fnType(core.bool, []),
    [$reportValidity]: dart.fnType(core.bool, []),
    [$setCustomValidity]: dart.fnType(dart.void, [core.String])
  }));
  dart.setGetterSignature(html$.ObjectElement, () => ({
    __proto__: dart.getGetters(html$.ObjectElement.__proto__),
    [$contentWindow]: html$.WindowBase
  }));
  dart.setFieldSignature(html$.ObjectElement, () => ({
    __proto__: dart.getFields(html$.ObjectElement.__proto__),
    [_get_contentWindow]: dart.finalFieldType(dart.dynamic),
    [$data]: dart.fieldType(core.String),
    [$form]: dart.finalFieldType(html$.FormElement),
    [$height]: dart.fieldType(core.String),
    [$name]: dart.fieldType(core.String),
    [$type]: dart.fieldType(core.String),
    [$useMap]: dart.fieldType(core.String),
    [$validationMessage]: dart.finalFieldType(core.String),
    [$validity]: dart.finalFieldType(html$.ValidityState),
    [$width]: dart.fieldType(core.String),
    [$willValidate]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("HTMLObjectElement", html$.ObjectElement);
  html$.OffscreenCanvas = class OffscreenCanvas$ extends html$.EventTarget {
    static new(width, height) {
      return html$.OffscreenCanvas._create_1(width, height);
    }
    static _create_1(width, height) {
      return new OffscreenCanvas(width, height);
    }
    get [$height]() {
      return this.height;
    }
    set [$height](value) {
      this.height = value;
    }
    get [$width]() {
      return this.width;
    }
    set [$width](value) {
      this.width = value;
    }
    [$convertToBlob](options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(html$.Blob, this.convertToBlob(options_dict));
    }
    [$getContext](contextType, attributes) {
      if (attributes === void 0) attributes = null;
      if (attributes != null) {
        let attributes_1 = html_common.convertDartToNative_Dictionary(attributes);
        return this[_getContext_1](contextType, attributes_1);
      }
      return this[_getContext_2](contextType);
    }
    [_getContext_1](...args) {
      return this.getContext.apply(this, args);
    }
    [_getContext_2](...args) {
      return this.getContext.apply(this, args);
    }
    [$transferToImageBitmap](...args) {
      return this.transferToImageBitmap.apply(this, args);
    }
  };
  dart.addTypeTests(html$.OffscreenCanvas);
  const height$7 = Symbol("OffscreenCanvas.height");
  const width$7 = Symbol("OffscreenCanvas.width");
  dart.setMethodSignature(html$.OffscreenCanvas, () => ({
    __proto__: dart.getMethods(html$.OffscreenCanvas.__proto__),
    [$convertToBlob]: dart.fnType(async.Future$(html$.Blob), [], [core.Map]),
    [$getContext]: dart.fnType(core.Object, [core.String], [core.Map]),
    [_getContext_1]: dart.fnType(core.Object, [dart.dynamic, dart.dynamic]),
    [_getContext_2]: dart.fnType(core.Object, [dart.dynamic]),
    [$transferToImageBitmap]: dart.fnType(html$.ImageBitmap, [])
  }));
  dart.setFieldSignature(html$.OffscreenCanvas, () => ({
    __proto__: dart.getFields(html$.OffscreenCanvas.__proto__),
    [$height]: dart.fieldType(core.int),
    [$width]: dart.fieldType(core.int)
  }));
  dart.registerExtension("OffscreenCanvas", html$.OffscreenCanvas);
  html$.OffscreenCanvasRenderingContext2D = class OffscreenCanvasRenderingContext2D extends _interceptors.Interceptor {
    get [$canvas]() {
      return this.canvas;
    }
    get [$direction]() {
      return this.direction;
    }
    set [$direction](value) {
      this.direction = value;
    }
    get [$fillStyle]() {
      return this.fillStyle;
    }
    set [$fillStyle](value) {
      this.fillStyle = value;
    }
    get [$filter]() {
      return this.filter;
    }
    set [$filter](value) {
      this.filter = value;
    }
    get [$font]() {
      return this.font;
    }
    set [$font](value) {
      this.font = value;
    }
    get [$globalAlpha]() {
      return this.globalAlpha;
    }
    set [$globalAlpha](value) {
      this.globalAlpha = value;
    }
    get [$globalCompositeOperation]() {
      return this.globalCompositeOperation;
    }
    set [$globalCompositeOperation](value) {
      this.globalCompositeOperation = value;
    }
    get [$imageSmoothingEnabled]() {
      return this.imageSmoothingEnabled;
    }
    set [$imageSmoothingEnabled](value) {
      this.imageSmoothingEnabled = value;
    }
    get [$imageSmoothingQuality]() {
      return this.imageSmoothingQuality;
    }
    set [$imageSmoothingQuality](value) {
      this.imageSmoothingQuality = value;
    }
    get [$lineCap]() {
      return this.lineCap;
    }
    set [$lineCap](value) {
      this.lineCap = value;
    }
    get [$lineDashOffset]() {
      return this.lineDashOffset;
    }
    set [$lineDashOffset](value) {
      this.lineDashOffset = value;
    }
    get [$lineJoin]() {
      return this.lineJoin;
    }
    set [$lineJoin](value) {
      this.lineJoin = value;
    }
    get [$lineWidth]() {
      return this.lineWidth;
    }
    set [$lineWidth](value) {
      this.lineWidth = value;
    }
    get [$miterLimit]() {
      return this.miterLimit;
    }
    set [$miterLimit](value) {
      this.miterLimit = value;
    }
    get [$shadowBlur]() {
      return this.shadowBlur;
    }
    set [$shadowBlur](value) {
      this.shadowBlur = value;
    }
    get [$shadowColor]() {
      return this.shadowColor;
    }
    set [$shadowColor](value) {
      this.shadowColor = value;
    }
    get [$shadowOffsetX]() {
      return this.shadowOffsetX;
    }
    set [$shadowOffsetX](value) {
      this.shadowOffsetX = value;
    }
    get [$shadowOffsetY]() {
      return this.shadowOffsetY;
    }
    set [$shadowOffsetY](value) {
      this.shadowOffsetY = value;
    }
    get [$strokeStyle]() {
      return this.strokeStyle;
    }
    set [$strokeStyle](value) {
      this.strokeStyle = value;
    }
    get [$textAlign]() {
      return this.textAlign;
    }
    set [$textAlign](value) {
      this.textAlign = value;
    }
    get [$textBaseline]() {
      return this.textBaseline;
    }
    set [$textBaseline](value) {
      this.textBaseline = value;
    }
    [$beginPath](...args) {
      return this.beginPath.apply(this, args);
    }
    [$clearRect](...args) {
      return this.clearRect.apply(this, args);
    }
    [$clip](...args) {
      return this.clip.apply(this, args);
    }
    [$commit]() {
      return html$.promiseToFuture(dart.dynamic, this.commit());
    }
    [$createImageData](data_OR_imagedata_OR_sw, sh_OR_sw, imageDataColorSettings_OR_sh, imageDataColorSettings) {
      if (sh_OR_sw === void 0) sh_OR_sw = null;
      if (imageDataColorSettings_OR_sh === void 0) imageDataColorSettings_OR_sh = null;
      if (imageDataColorSettings === void 0) imageDataColorSettings = null;
      if (html$.ImageData.is(data_OR_imagedata_OR_sw) && sh_OR_sw == null && imageDataColorSettings_OR_sh == null && imageDataColorSettings == null) {
        let imagedata_1 = html_common.convertDartToNative_ImageData(data_OR_imagedata_OR_sw);
        return html_common.convertNativeToDart_ImageData(this[_createImageData_1](imagedata_1));
      }
      if (sh_OR_sw != null && core.int.is(data_OR_imagedata_OR_sw) && imageDataColorSettings_OR_sh == null && imageDataColorSettings == null) {
        return html_common.convertNativeToDart_ImageData(this[_createImageData_2](data_OR_imagedata_OR_sw, sh_OR_sw));
      }
      if (core.Map.is(imageDataColorSettings_OR_sh) && sh_OR_sw != null && core.int.is(data_OR_imagedata_OR_sw) && imageDataColorSettings == null) {
        let imageDataColorSettings_1 = html_common.convertDartToNative_Dictionary(imageDataColorSettings_OR_sh);
        return html_common.convertNativeToDart_ImageData(this[_createImageData_3](data_OR_imagedata_OR_sw, sh_OR_sw, imageDataColorSettings_1));
      }
      if (imageDataColorSettings != null && core.int.is(imageDataColorSettings_OR_sh) && sh_OR_sw != null && data_OR_imagedata_OR_sw != null) {
        let imageDataColorSettings_1 = html_common.convertDartToNative_Dictionary(imageDataColorSettings);
        return html_common.convertNativeToDart_ImageData(this[_createImageData_4](data_OR_imagedata_OR_sw, sh_OR_sw, imageDataColorSettings_OR_sh, imageDataColorSettings_1));
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_createImageData_1](...args) {
      return this.createImageData.apply(this, args);
    }
    [_createImageData_2](...args) {
      return this.createImageData.apply(this, args);
    }
    [_createImageData_3](...args) {
      return this.createImageData.apply(this, args);
    }
    [_createImageData_4](...args) {
      return this.createImageData.apply(this, args);
    }
    [$createLinearGradient](...args) {
      return this.createLinearGradient.apply(this, args);
    }
    [$createPattern](...args) {
      return this.createPattern.apply(this, args);
    }
    [$createRadialGradient](...args) {
      return this.createRadialGradient.apply(this, args);
    }
    [$drawImage](...args) {
      return this.drawImage.apply(this, args);
    }
    [$fill](...args) {
      return this.fill.apply(this, args);
    }
    [$fillRect](...args) {
      return this.fillRect.apply(this, args);
    }
    [$fillText](...args) {
      return this.fillText.apply(this, args);
    }
    [$getImageData](sx, sy, sw, sh) {
      return html_common.convertNativeToDart_ImageData(this[_getImageData_1](sx, sy, sw, sh));
    }
    [_getImageData_1](...args) {
      return this.getImageData.apply(this, args);
    }
    [$getLineDash](...args) {
      return this.getLineDash.apply(this, args);
    }
    [$isPointInPath](...args) {
      return this.isPointInPath.apply(this, args);
    }
    [$isPointInStroke](...args) {
      return this.isPointInStroke.apply(this, args);
    }
    [$measureText](...args) {
      return this.measureText.apply(this, args);
    }
    [$putImageData](imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) {
      if (dirtyX === void 0) dirtyX = null;
      if (dirtyY === void 0) dirtyY = null;
      if (dirtyWidth === void 0) dirtyWidth = null;
      if (dirtyHeight === void 0) dirtyHeight = null;
      if (dirtyX == null && dirtyY == null && dirtyWidth == null && dirtyHeight == null) {
        let imagedata_1 = html_common.convertDartToNative_ImageData(imagedata);
        this[_putImageData_1](imagedata_1, dx, dy);
        return;
      }
      if (dirtyHeight != null && dirtyWidth != null && dirtyY != null && dirtyX != null) {
        let imagedata_1 = html_common.convertDartToNative_ImageData(imagedata);
        this[_putImageData_2](imagedata_1, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
        return;
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_putImageData_1](...args) {
      return this.putImageData.apply(this, args);
    }
    [_putImageData_2](...args) {
      return this.putImageData.apply(this, args);
    }
    [$resetTransform](...args) {
      return this.resetTransform.apply(this, args);
    }
    [$restore](...args) {
      return this.restore.apply(this, args);
    }
    [$rotate](...args) {
      return this.rotate.apply(this, args);
    }
    [$save](...args) {
      return this.save.apply(this, args);
    }
    [$scale](...args) {
      return this.scale.apply(this, args);
    }
    [$setLineDash](...args) {
      return this.setLineDash.apply(this, args);
    }
    [$setTransform](...args) {
      return this.setTransform.apply(this, args);
    }
    [$stroke](...args) {
      return this.stroke.apply(this, args);
    }
    [$strokeRect](...args) {
      return this.strokeRect.apply(this, args);
    }
    [$strokeText](...args) {
      return this.strokeText.apply(this, args);
    }
    [$transform](...args) {
      return this.transform.apply(this, args);
    }
    [$translate](...args) {
      return this.translate.apply(this, args);
    }
    [$arc](...args) {
      return this.arc.apply(this, args);
    }
    [$arcTo](...args) {
      return this.arcTo.apply(this, args);
    }
    [$bezierCurveTo](...args) {
      return this.bezierCurveTo.apply(this, args);
    }
    [$closePath](...args) {
      return this.closePath.apply(this, args);
    }
    [$ellipse](...args) {
      return this.ellipse.apply(this, args);
    }
    [$lineTo](...args) {
      return this.lineTo.apply(this, args);
    }
    [$moveTo](...args) {
      return this.moveTo.apply(this, args);
    }
    [$quadraticCurveTo](...args) {
      return this.quadraticCurveTo.apply(this, args);
    }
    [$rect](...args) {
      return this.rect.apply(this, args);
    }
  };
  dart.addTypeTests(html$.OffscreenCanvasRenderingContext2D);
  const canvas$1 = Symbol("OffscreenCanvasRenderingContext2D.canvas");
  const direction$1 = Symbol("OffscreenCanvasRenderingContext2D.direction");
  const fillStyle$ = Symbol("OffscreenCanvasRenderingContext2D.fillStyle");
  const filter$ = Symbol("OffscreenCanvasRenderingContext2D.filter");
  const font$ = Symbol("OffscreenCanvasRenderingContext2D.font");
  const globalAlpha$ = Symbol("OffscreenCanvasRenderingContext2D.globalAlpha");
  const globalCompositeOperation$ = Symbol("OffscreenCanvasRenderingContext2D.globalCompositeOperation");
  const imageSmoothingEnabled$ = Symbol("OffscreenCanvasRenderingContext2D.imageSmoothingEnabled");
  const imageSmoothingQuality$ = Symbol("OffscreenCanvasRenderingContext2D.imageSmoothingQuality");
  const lineCap$ = Symbol("OffscreenCanvasRenderingContext2D.lineCap");
  const lineDashOffset = Symbol("OffscreenCanvasRenderingContext2D.lineDashOffset");
  const lineJoin$ = Symbol("OffscreenCanvasRenderingContext2D.lineJoin");
  const lineWidth$ = Symbol("OffscreenCanvasRenderingContext2D.lineWidth");
  const miterLimit$ = Symbol("OffscreenCanvasRenderingContext2D.miterLimit");
  const shadowBlur$ = Symbol("OffscreenCanvasRenderingContext2D.shadowBlur");
  const shadowColor$ = Symbol("OffscreenCanvasRenderingContext2D.shadowColor");
  const shadowOffsetX$ = Symbol("OffscreenCanvasRenderingContext2D.shadowOffsetX");
  const shadowOffsetY$ = Symbol("OffscreenCanvasRenderingContext2D.shadowOffsetY");
  const strokeStyle$ = Symbol("OffscreenCanvasRenderingContext2D.strokeStyle");
  const textAlign$ = Symbol("OffscreenCanvasRenderingContext2D.textAlign");
  const textBaseline$ = Symbol("OffscreenCanvasRenderingContext2D.textBaseline");
  html$.OffscreenCanvasRenderingContext2D[dart.implements] = () => [html$._CanvasPath];
  dart.setMethodSignature(html$.OffscreenCanvasRenderingContext2D, () => ({
    __proto__: dart.getMethods(html$.OffscreenCanvasRenderingContext2D.__proto__),
    [$beginPath]: dart.fnType(dart.void, []),
    [$clearRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$clip]: dart.fnType(dart.void, [], [html$.Path2D]),
    [$commit]: dart.fnType(async.Future, []),
    [$createImageData]: dart.fnType(html$.ImageData, [dart.dynamic], [core.int, dart.dynamic, core.Map]),
    [_createImageData_1]: dart.fnType(dart.dynamic, [dart.dynamic]),
    [_createImageData_2]: dart.fnType(dart.dynamic, [core.int, dart.dynamic]),
    [_createImageData_3]: dart.fnType(dart.dynamic, [core.int, dart.dynamic, dart.dynamic]),
    [_createImageData_4]: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic, core.int, dart.dynamic]),
    [$createLinearGradient]: dart.fnType(html$.CanvasGradient, [core.num, core.num, core.num, core.num]),
    [$createPattern]: dart.fnType(html$.CanvasPattern, [dart.dynamic, core.String]),
    [$createRadialGradient]: dart.fnType(html$.CanvasGradient, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$drawImage]: dart.fnType(dart.void, [dart.dynamic, core.num, core.num], [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$fill]: dart.fnType(dart.void, [], [dart.dynamic, core.String]),
    [$fillRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$fillText]: dart.fnType(dart.void, [core.String, core.num, core.num], [core.num]),
    [$getImageData]: dart.fnType(html$.ImageData, [core.int, core.int, core.int, core.int]),
    [_getImageData_1]: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [$getLineDash]: dart.fnType(core.List$(core.num), []),
    [$isPointInPath]: dart.fnType(core.bool, [dart.dynamic, core.num], [dart.dynamic, core.String]),
    [$isPointInStroke]: dart.fnType(core.bool, [dart.dynamic, core.num], [core.num]),
    [$measureText]: dart.fnType(html$.TextMetrics, [core.String]),
    [$putImageData]: dart.fnType(dart.void, [html$.ImageData, core.int, core.int], [core.int, core.int, core.int, core.int]),
    [_putImageData_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
    [_putImageData_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [$resetTransform]: dart.fnType(dart.void, []),
    [$restore]: dart.fnType(dart.void, []),
    [$rotate]: dart.fnType(dart.void, [core.num]),
    [$save]: dart.fnType(dart.void, []),
    [$scale]: dart.fnType(dart.void, [core.num, core.num]),
    [$setLineDash]: dart.fnType(dart.void, [core.List$(core.num)]),
    [$setTransform]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$stroke]: dart.fnType(dart.void, [], [html$.Path2D]),
    [$strokeRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$strokeText]: dart.fnType(dart.void, [core.String, core.num, core.num], [core.num]),
    [$transform]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$translate]: dart.fnType(dart.void, [core.num, core.num]),
    [$arc]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.bool]),
    [$arcTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num]),
    [$bezierCurveTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$closePath]: dart.fnType(dart.void, []),
    [$ellipse]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num, core.num, core.bool]),
    [$lineTo]: dart.fnType(dart.void, [core.num, core.num]),
    [$moveTo]: dart.fnType(dart.void, [core.num, core.num]),
    [$quadraticCurveTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$rect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num])
  }));
  dart.setFieldSignature(html$.OffscreenCanvasRenderingContext2D, () => ({
    __proto__: dart.getFields(html$.OffscreenCanvasRenderingContext2D.__proto__),
    [$canvas]: dart.finalFieldType(html$.OffscreenCanvas),
    [$direction]: dart.fieldType(core.String),
    [$fillStyle]: dart.fieldType(core.Object),
    [$filter]: dart.fieldType(core.String),
    [$font]: dart.fieldType(core.String),
    [$globalAlpha]: dart.fieldType(core.num),
    [$globalCompositeOperation]: dart.fieldType(core.String),
    [$imageSmoothingEnabled]: dart.fieldType(core.bool),
    [$imageSmoothingQuality]: dart.fieldType(core.String),
    [$lineCap]: dart.fieldType(core.String),
    [$lineDashOffset]: dart.fieldType(core.num),
    [$lineJoin]: dart.fieldType(core.String),
    [$lineWidth]: dart.fieldType(core.num),
    [$miterLimit]: dart.fieldType(core.num),
    [$shadowBlur]: dart.fieldType(core.num),
    [$shadowColor]: dart.fieldType(core.String),
    [$shadowOffsetX]: dart.fieldType(core.num),
    [$shadowOffsetY]: dart.fieldType(core.num),
    [$strokeStyle]: dart.fieldType(core.Object),
    [$textAlign]: dart.fieldType(core.String),
    [$textBaseline]: dart.fieldType(core.String)
  }));
  dart.registerExtension("OffscreenCanvasRenderingContext2D", html$.OffscreenCanvasRenderingContext2D);
  html$.OptGroupElement = class OptGroupElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("optgroup");
    }
    get [$disabled]() {
      return this.disabled;
    }
    set [$disabled](value) {
      this.disabled = value;
    }
    get [$label]() {
      return this.label;
    }
    set [$label](value) {
      this.label = value;
    }
  };
  (html$.OptGroupElement.created = function() {
    this[disabled$5] = null;
    this[label$1] = null;
    html$.OptGroupElement.__proto__.created.call(this);
  }).prototype = html$.OptGroupElement.prototype;
  dart.addTypeTests(html$.OptGroupElement);
  const disabled$5 = Symbol("OptGroupElement.disabled");
  const label$1 = Symbol("OptGroupElement.label");
  dart.setFieldSignature(html$.OptGroupElement, () => ({
    __proto__: dart.getFields(html$.OptGroupElement.__proto__),
    [$disabled]: dart.fieldType(core.bool),
    [$label]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLOptGroupElement", html$.OptGroupElement);
  html$.OptionElement = class OptionElement extends html$.HtmlElement {
    static new(opts) {
      let data = opts && 'data' in opts ? opts.data : "";
      let value = opts && 'value' in opts ? opts.value : "";
      let selected = opts && 'selected' in opts ? opts.selected : false;
      return html$.OptionElement.__(data, value, null, selected);
    }
    static __(data, value, defaultSelected, selected) {
      if (data === void 0) data = null;
      if (value === void 0) value = null;
      if (defaultSelected === void 0) defaultSelected = null;
      if (selected === void 0) selected = null;
      if (selected != null) {
        return html$.OptionElement._create_1(data, value, defaultSelected, selected);
      }
      if (defaultSelected != null) {
        return html$.OptionElement._create_2(data, value, defaultSelected);
      }
      if (value != null) {
        return html$.OptionElement._create_3(data, value);
      }
      if (data != null) {
        return html$.OptionElement._create_4(data);
      }
      return html$.OptionElement._create_5();
    }
    static _create_1(data, value, defaultSelected, selected) {
      return new Option(data, value, defaultSelected, selected);
    }
    static _create_2(data, value, defaultSelected) {
      return new Option(data, value, defaultSelected);
    }
    static _create_3(data, value) {
      return new Option(data, value);
    }
    static _create_4(data) {
      return new Option(data);
    }
    static _create_5() {
      return new Option();
    }
    get [$defaultSelected]() {
      return this.defaultSelected;
    }
    set [$defaultSelected](value) {
      this.defaultSelected = value;
    }
    get [$disabled]() {
      return this.disabled;
    }
    set [$disabled](value) {
      this.disabled = value;
    }
    get [$form]() {
      return this.form;
    }
    get [$index]() {
      return this.index;
    }
    get [$label]() {
      return this.label;
    }
    set [$label](value) {
      this.label = value;
    }
    get [$selected]() {
      return this.selected;
    }
    set [$selected](value) {
      this.selected = value;
    }
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
  };
  (html$.OptionElement.created = function() {
    this[defaultSelected] = null;
    this[disabled$6] = null;
    this[form$4] = null;
    this[index$] = null;
    this[label$2] = null;
    this[selected$] = null;
    this[value$10] = null;
    html$.OptionElement.__proto__.created.call(this);
  }).prototype = html$.OptionElement.prototype;
  dart.addTypeTests(html$.OptionElement);
  const defaultSelected = Symbol("OptionElement.defaultSelected");
  const disabled$6 = Symbol("OptionElement.disabled");
  const form$4 = Symbol("OptionElement.form");
  const index$ = Symbol("OptionElement.index");
  const label$2 = Symbol("OptionElement.label");
  const selected$ = Symbol("OptionElement.selected");
  const value$10 = Symbol("OptionElement.value");
  dart.setFieldSignature(html$.OptionElement, () => ({
    __proto__: dart.getFields(html$.OptionElement.__proto__),
    [$defaultSelected]: dart.fieldType(core.bool),
    [$disabled]: dart.fieldType(core.bool),
    [$form]: dart.finalFieldType(html$.FormElement),
    [$index]: dart.finalFieldType(core.int),
    [$label]: dart.fieldType(core.String),
    [$selected]: dart.fieldType(core.bool),
    [$value]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLOptionElement", html$.OptionElement);
  html$.OutputElement = class OutputElement extends html$.HtmlElement {
    static new() {
      return html$.OutputElement._check(html$.document[$createElement]("output"));
    }
    static get supported() {
      return html$.Element.isTagSupported("output");
    }
    get [$defaultValue]() {
      return this.defaultValue;
    }
    set [$defaultValue](value) {
      this.defaultValue = value;
    }
    get [$form]() {
      return this.form;
    }
    get [$htmlFor]() {
      return this.htmlFor;
    }
    get [$labels]() {
      return this.labels;
    }
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
    get [$type]() {
      return this.type;
    }
    get [$validationMessage]() {
      return this.validationMessage;
    }
    get [$validity]() {
      return this.validity;
    }
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
    get [$willValidate]() {
      return this.willValidate;
    }
    [$checkValidity](...args) {
      return this.checkValidity.apply(this, args);
    }
    [$reportValidity](...args) {
      return this.reportValidity.apply(this, args);
    }
    [$setCustomValidity](...args) {
      return this.setCustomValidity.apply(this, args);
    }
  };
  (html$.OutputElement.created = function() {
    this[defaultValue$] = null;
    this[form$5] = null;
    this[htmlFor$] = null;
    this[labels$1] = null;
    this[name$26] = null;
    this[type$23] = null;
    this[validationMessage$2] = null;
    this[validity$2] = null;
    this[value$11] = null;
    this[willValidate$2] = null;
    html$.OutputElement.__proto__.created.call(this);
  }).prototype = html$.OutputElement.prototype;
  dart.addTypeTests(html$.OutputElement);
  const defaultValue$ = Symbol("OutputElement.defaultValue");
  const form$5 = Symbol("OutputElement.form");
  const htmlFor$ = Symbol("OutputElement.htmlFor");
  const labels$1 = Symbol("OutputElement.labels");
  const name$26 = Symbol("OutputElement.name");
  const type$23 = Symbol("OutputElement.type");
  const validationMessage$2 = Symbol("OutputElement.validationMessage");
  const validity$2 = Symbol("OutputElement.validity");
  const value$11 = Symbol("OutputElement.value");
  const willValidate$2 = Symbol("OutputElement.willValidate");
  dart.setMethodSignature(html$.OutputElement, () => ({
    __proto__: dart.getMethods(html$.OutputElement.__proto__),
    [$checkValidity]: dart.fnType(core.bool, []),
    [$reportValidity]: dart.fnType(core.bool, []),
    [$setCustomValidity]: dart.fnType(dart.void, [core.String])
  }));
  dart.setFieldSignature(html$.OutputElement, () => ({
    __proto__: dart.getFields(html$.OutputElement.__proto__),
    [$defaultValue]: dart.fieldType(core.String),
    [$form]: dart.finalFieldType(html$.FormElement),
    [$htmlFor]: dart.finalFieldType(html$.DomTokenList),
    [$labels]: dart.finalFieldType(ListOfNode()),
    [$name]: dart.fieldType(core.String),
    [$type]: dart.finalFieldType(core.String),
    [$validationMessage]: dart.finalFieldType(core.String),
    [$validity]: dart.finalFieldType(html$.ValidityState),
    [$value]: dart.fieldType(core.String),
    [$willValidate]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("HTMLOutputElement", html$.OutputElement);
  html$.OverconstrainedError = class OverconstrainedError$ extends _interceptors.Interceptor {
    static new(constraint, message) {
      return html$.OverconstrainedError._create_1(constraint, message);
    }
    static _create_1(constraint, message) {
      return new OverconstrainedError(constraint, message);
    }
    get [$constraint]() {
      return this.constraint;
    }
    get [$message]() {
      return this.message;
    }
    get [$name]() {
      return this.name;
    }
  };
  dart.addTypeTests(html$.OverconstrainedError);
  const constraint = Symbol("OverconstrainedError.constraint");
  const message$24 = Symbol("OverconstrainedError.message");
  const name$27 = Symbol("OverconstrainedError.name");
  dart.setFieldSignature(html$.OverconstrainedError, () => ({
    __proto__: dart.getFields(html$.OverconstrainedError.__proto__),
    [$constraint]: dart.finalFieldType(core.String),
    [$message]: dart.finalFieldType(core.String),
    [$name]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("OverconstrainedError", html$.OverconstrainedError);
  html$.PageTransitionEvent = class PageTransitionEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.PageTransitionEvent._create_1(type, eventInitDict_1);
      }
      return html$.PageTransitionEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new PageTransitionEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new PageTransitionEvent(type);
    }
    get [$persisted]() {
      return this.persisted;
    }
  };
  dart.addTypeTests(html$.PageTransitionEvent);
  const persisted = Symbol("PageTransitionEvent.persisted");
  dart.setFieldSignature(html$.PageTransitionEvent, () => ({
    __proto__: dart.getFields(html$.PageTransitionEvent.__proto__),
    [$persisted]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("PageTransitionEvent", html$.PageTransitionEvent);
  html$.PaintRenderingContext2D = class PaintRenderingContext2D extends _interceptors.Interceptor {
    get [$currentTransform]() {
      return this.currentTransform;
    }
    set [$currentTransform](value) {
      this.currentTransform = value;
    }
    get [$fillStyle]() {
      return this.fillStyle;
    }
    set [$fillStyle](value) {
      this.fillStyle = value;
    }
    get [$filter]() {
      return this.filter;
    }
    set [$filter](value) {
      this.filter = value;
    }
    get [$globalAlpha]() {
      return this.globalAlpha;
    }
    set [$globalAlpha](value) {
      this.globalAlpha = value;
    }
    get [$globalCompositeOperation]() {
      return this.globalCompositeOperation;
    }
    set [$globalCompositeOperation](value) {
      this.globalCompositeOperation = value;
    }
    get [$imageSmoothingEnabled]() {
      return this.imageSmoothingEnabled;
    }
    set [$imageSmoothingEnabled](value) {
      this.imageSmoothingEnabled = value;
    }
    get [$imageSmoothingQuality]() {
      return this.imageSmoothingQuality;
    }
    set [$imageSmoothingQuality](value) {
      this.imageSmoothingQuality = value;
    }
    get [$lineCap]() {
      return this.lineCap;
    }
    set [$lineCap](value) {
      this.lineCap = value;
    }
    get [$lineDashOffset]() {
      return this.lineDashOffset;
    }
    set [$lineDashOffset](value) {
      this.lineDashOffset = value;
    }
    get [$lineJoin]() {
      return this.lineJoin;
    }
    set [$lineJoin](value) {
      this.lineJoin = value;
    }
    get [$lineWidth]() {
      return this.lineWidth;
    }
    set [$lineWidth](value) {
      this.lineWidth = value;
    }
    get [$miterLimit]() {
      return this.miterLimit;
    }
    set [$miterLimit](value) {
      this.miterLimit = value;
    }
    get [$shadowBlur]() {
      return this.shadowBlur;
    }
    set [$shadowBlur](value) {
      this.shadowBlur = value;
    }
    get [$shadowColor]() {
      return this.shadowColor;
    }
    set [$shadowColor](value) {
      this.shadowColor = value;
    }
    get [$shadowOffsetX]() {
      return this.shadowOffsetX;
    }
    set [$shadowOffsetX](value) {
      this.shadowOffsetX = value;
    }
    get [$shadowOffsetY]() {
      return this.shadowOffsetY;
    }
    set [$shadowOffsetY](value) {
      this.shadowOffsetY = value;
    }
    get [$strokeStyle]() {
      return this.strokeStyle;
    }
    set [$strokeStyle](value) {
      this.strokeStyle = value;
    }
    [$beginPath](...args) {
      return this.beginPath.apply(this, args);
    }
    [$clearRect](...args) {
      return this.clearRect.apply(this, args);
    }
    [$clip](...args) {
      return this.clip.apply(this, args);
    }
    [$createLinearGradient](...args) {
      return this.createLinearGradient.apply(this, args);
    }
    [$createPattern](...args) {
      return this.createPattern.apply(this, args);
    }
    [$createRadialGradient](...args) {
      return this.createRadialGradient.apply(this, args);
    }
    [$drawImage](...args) {
      return this.drawImage.apply(this, args);
    }
    [$fill](...args) {
      return this.fill.apply(this, args);
    }
    [$fillRect](...args) {
      return this.fillRect.apply(this, args);
    }
    [$getLineDash](...args) {
      return this.getLineDash.apply(this, args);
    }
    [$isPointInPath](...args) {
      return this.isPointInPath.apply(this, args);
    }
    [$isPointInStroke](...args) {
      return this.isPointInStroke.apply(this, args);
    }
    [$resetTransform](...args) {
      return this.resetTransform.apply(this, args);
    }
    [$restore](...args) {
      return this.restore.apply(this, args);
    }
    [$rotate](...args) {
      return this.rotate.apply(this, args);
    }
    [$save](...args) {
      return this.save.apply(this, args);
    }
    [$scale](...args) {
      return this.scale.apply(this, args);
    }
    [$setLineDash](...args) {
      return this.setLineDash.apply(this, args);
    }
    [$setTransform](...args) {
      return this.setTransform.apply(this, args);
    }
    [$stroke](...args) {
      return this.stroke.apply(this, args);
    }
    [$strokeRect](...args) {
      return this.strokeRect.apply(this, args);
    }
    [$transform](...args) {
      return this.transform.apply(this, args);
    }
    [$translate](...args) {
      return this.translate.apply(this, args);
    }
    [$arc](...args) {
      return this.arc.apply(this, args);
    }
    [$arcTo](...args) {
      return this.arcTo.apply(this, args);
    }
    [$bezierCurveTo](...args) {
      return this.bezierCurveTo.apply(this, args);
    }
    [$closePath](...args) {
      return this.closePath.apply(this, args);
    }
    [$ellipse](...args) {
      return this.ellipse.apply(this, args);
    }
    [$lineTo](...args) {
      return this.lineTo.apply(this, args);
    }
    [$moveTo](...args) {
      return this.moveTo.apply(this, args);
    }
    [$quadraticCurveTo](...args) {
      return this.quadraticCurveTo.apply(this, args);
    }
    [$rect](...args) {
      return this.rect.apply(this, args);
    }
  };
  dart.addTypeTests(html$.PaintRenderingContext2D);
  const currentTransform$ = Symbol("PaintRenderingContext2D.currentTransform");
  const fillStyle$0 = Symbol("PaintRenderingContext2D.fillStyle");
  const filter$0 = Symbol("PaintRenderingContext2D.filter");
  const globalAlpha$0 = Symbol("PaintRenderingContext2D.globalAlpha");
  const globalCompositeOperation$0 = Symbol("PaintRenderingContext2D.globalCompositeOperation");
  const imageSmoothingEnabled$0 = Symbol("PaintRenderingContext2D.imageSmoothingEnabled");
  const imageSmoothingQuality$0 = Symbol("PaintRenderingContext2D.imageSmoothingQuality");
  const lineCap$0 = Symbol("PaintRenderingContext2D.lineCap");
  const lineDashOffset$ = Symbol("PaintRenderingContext2D.lineDashOffset");
  const lineJoin$0 = Symbol("PaintRenderingContext2D.lineJoin");
  const lineWidth$0 = Symbol("PaintRenderingContext2D.lineWidth");
  const miterLimit$0 = Symbol("PaintRenderingContext2D.miterLimit");
  const shadowBlur$0 = Symbol("PaintRenderingContext2D.shadowBlur");
  const shadowColor$0 = Symbol("PaintRenderingContext2D.shadowColor");
  const shadowOffsetX$0 = Symbol("PaintRenderingContext2D.shadowOffsetX");
  const shadowOffsetY$0 = Symbol("PaintRenderingContext2D.shadowOffsetY");
  const strokeStyle$0 = Symbol("PaintRenderingContext2D.strokeStyle");
  html$.PaintRenderingContext2D[dart.implements] = () => [html$._CanvasPath];
  dart.setMethodSignature(html$.PaintRenderingContext2D, () => ({
    __proto__: dart.getMethods(html$.PaintRenderingContext2D.__proto__),
    [$beginPath]: dart.fnType(dart.void, []),
    [$clearRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$clip]: dart.fnType(dart.void, [], [dart.dynamic, core.String]),
    [$createLinearGradient]: dart.fnType(html$.CanvasGradient, [core.num, core.num, core.num, core.num]),
    [$createPattern]: dart.fnType(html$.CanvasPattern, [dart.dynamic, core.String]),
    [$createRadialGradient]: dart.fnType(html$.CanvasGradient, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$drawImage]: dart.fnType(dart.void, [dart.dynamic, core.num, core.num], [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$fill]: dart.fnType(dart.void, [], [dart.dynamic, core.String]),
    [$fillRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$getLineDash]: dart.fnType(core.List$(core.num), []),
    [$isPointInPath]: dart.fnType(core.bool, [dart.dynamic, core.num], [dart.dynamic, core.String]),
    [$isPointInStroke]: dart.fnType(core.bool, [dart.dynamic, core.num], [core.num]),
    [$resetTransform]: dart.fnType(dart.void, []),
    [$restore]: dart.fnType(dart.void, []),
    [$rotate]: dart.fnType(dart.void, [core.num]),
    [$save]: dart.fnType(dart.void, []),
    [$scale]: dart.fnType(dart.void, [core.num, core.num]),
    [$setLineDash]: dart.fnType(dart.void, [core.List$(core.num)]),
    [$setTransform]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$stroke]: dart.fnType(dart.void, [], [html$.Path2D]),
    [$strokeRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$transform]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$translate]: dart.fnType(dart.void, [core.num, core.num]),
    [$arc]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.bool]),
    [$arcTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num]),
    [$bezierCurveTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$closePath]: dart.fnType(dart.void, []),
    [$ellipse]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num, core.num, core.bool]),
    [$lineTo]: dart.fnType(dart.void, [core.num, core.num]),
    [$moveTo]: dart.fnType(dart.void, [core.num, core.num]),
    [$quadraticCurveTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$rect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num])
  }));
  dart.setFieldSignature(html$.PaintRenderingContext2D, () => ({
    __proto__: dart.getFields(html$.PaintRenderingContext2D.__proto__),
    [$currentTransform]: dart.fieldType(svg$.Matrix),
    [$fillStyle]: dart.fieldType(core.Object),
    [$filter]: dart.fieldType(core.String),
    [$globalAlpha]: dart.fieldType(core.num),
    [$globalCompositeOperation]: dart.fieldType(core.String),
    [$imageSmoothingEnabled]: dart.fieldType(core.bool),
    [$imageSmoothingQuality]: dart.fieldType(core.String),
    [$lineCap]: dart.fieldType(core.String),
    [$lineDashOffset]: dart.fieldType(core.num),
    [$lineJoin]: dart.fieldType(core.String),
    [$lineWidth]: dart.fieldType(core.num),
    [$miterLimit]: dart.fieldType(core.num),
    [$shadowBlur]: dart.fieldType(core.num),
    [$shadowColor]: dart.fieldType(core.String),
    [$shadowOffsetX]: dart.fieldType(core.num),
    [$shadowOffsetY]: dart.fieldType(core.num),
    [$strokeStyle]: dart.fieldType(core.Object)
  }));
  dart.registerExtension("PaintRenderingContext2D", html$.PaintRenderingContext2D);
  html$.PaintSize = class PaintSize extends _interceptors.Interceptor {
    get [$height]() {
      return this.height;
    }
    get [$width]() {
      return this.width;
    }
  };
  dart.addTypeTests(html$.PaintSize);
  const height$8 = Symbol("PaintSize.height");
  const width$8 = Symbol("PaintSize.width");
  dart.setFieldSignature(html$.PaintSize, () => ({
    __proto__: dart.getFields(html$.PaintSize.__proto__),
    [$height]: dart.finalFieldType(core.num),
    [$width]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("PaintSize", html$.PaintSize);
  html$.PaintWorkletGlobalScope = class PaintWorkletGlobalScope extends html$.WorkletGlobalScope {
    get [$devicePixelRatio]() {
      return this.devicePixelRatio;
    }
    [$registerPaint](...args) {
      return this.registerPaint.apply(this, args);
    }
  };
  dart.addTypeTests(html$.PaintWorkletGlobalScope);
  const devicePixelRatio = Symbol("PaintWorkletGlobalScope.devicePixelRatio");
  dart.setMethodSignature(html$.PaintWorkletGlobalScope, () => ({
    __proto__: dart.getMethods(html$.PaintWorkletGlobalScope.__proto__),
    [$registerPaint]: dart.fnType(dart.void, [core.String, core.Object])
  }));
  dart.setFieldSignature(html$.PaintWorkletGlobalScope, () => ({
    __proto__: dart.getFields(html$.PaintWorkletGlobalScope.__proto__),
    [$devicePixelRatio]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("PaintWorkletGlobalScope", html$.PaintWorkletGlobalScope);
  html$.ParagraphElement = class ParagraphElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("p");
    }
  };
  (html$.ParagraphElement.created = function() {
    html$.ParagraphElement.__proto__.created.call(this);
  }).prototype = html$.ParagraphElement.prototype;
  dart.addTypeTests(html$.ParagraphElement);
  dart.registerExtension("HTMLParagraphElement", html$.ParagraphElement);
  html$.ParamElement = class ParamElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("param");
    }
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
  };
  (html$.ParamElement.created = function() {
    this[name$28] = null;
    this[value$12] = null;
    html$.ParamElement.__proto__.created.call(this);
  }).prototype = html$.ParamElement.prototype;
  dart.addTypeTests(html$.ParamElement);
  const name$28 = Symbol("ParamElement.name");
  const value$12 = Symbol("ParamElement.value");
  dart.setFieldSignature(html$.ParamElement, () => ({
    __proto__: dart.getFields(html$.ParamElement.__proto__),
    [$name]: dart.fieldType(core.String),
    [$value]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLParamElement", html$.ParamElement);
  html$.ParentNode = class ParentNode extends _interceptors.Interceptor {};
  dart.addTypeTests(html$.ParentNode);
  dart.setFieldSignature(html$.ParentNode, () => ({
    __proto__: dart.getFields(html$.ParentNode.__proto__),
    [_childElementCount]: dart.finalFieldType(core.int),
    [_children]: dart.finalFieldType(ListOfNode()),
    [_firstElementChild]: dart.finalFieldType(html$.Element),
    [_lastElementChild]: dart.finalFieldType(html$.Element)
  }));
  html$.PasswordCredential = class PasswordCredential$ extends html$.Credential {
    static new(data_OR_form) {
      if (core.Map.is(data_OR_form)) {
        let data_1 = html_common.convertDartToNative_Dictionary(data_OR_form);
        return html$.PasswordCredential._create_1(data_1);
      }
      if (html$.FormElement.is(data_OR_form)) {
        return html$.PasswordCredential._create_2(data_OR_form);
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    static _create_1(data_OR_form) {
      return new PasswordCredential(data_OR_form);
    }
    static _create_2(data_OR_form) {
      return new PasswordCredential(data_OR_form);
    }
    get [$additionalData]() {
      return this.additionalData;
    }
    set [$additionalData](value) {
      this.additionalData = value;
    }
    get [$idName]() {
      return this.idName;
    }
    set [$idName](value) {
      this.idName = value;
    }
    get [$password]() {
      return this.password;
    }
    get [$passwordName]() {
      return this.passwordName;
    }
    set [$passwordName](value) {
      this.passwordName = value;
    }
    get [$iconUrl]() {
      return this.iconURL;
    }
    get [$name]() {
      return this.name;
    }
  };
  dart.addTypeTests(html$.PasswordCredential);
  const additionalData = Symbol("PasswordCredential.additionalData");
  const idName = Symbol("PasswordCredential.idName");
  const password$1 = Symbol("PasswordCredential.password");
  const passwordName = Symbol("PasswordCredential.passwordName");
  const iconUrl$0 = Symbol("PasswordCredential.iconUrl");
  const name$29 = Symbol("PasswordCredential.name");
  html$.PasswordCredential[dart.implements] = () => [html$.CredentialUserData];
  dart.setFieldSignature(html$.PasswordCredential, () => ({
    __proto__: dart.getFields(html$.PasswordCredential.__proto__),
    [$additionalData]: dart.fieldType(core.Object),
    [$idName]: dart.fieldType(core.String),
    [$password]: dart.finalFieldType(core.String),
    [$passwordName]: dart.fieldType(core.String),
    [$iconUrl]: dart.finalFieldType(core.String),
    [$name]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("PasswordCredential", html$.PasswordCredential);
  html$.Path2D = class Path2D$ extends _interceptors.Interceptor {
    static new(path_OR_text) {
      if (path_OR_text === void 0) path_OR_text = null;
      if (path_OR_text == null) {
        return html$.Path2D._create_1();
      }
      if (html$.Path2D.is(path_OR_text)) {
        return html$.Path2D._create_2(path_OR_text);
      }
      if (typeof path_OR_text == 'string') {
        return html$.Path2D._create_3(path_OR_text);
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    static _create_1() {
      return new Path2D();
    }
    static _create_2(path_OR_text) {
      return new Path2D(path_OR_text);
    }
    static _create_3(path_OR_text) {
      return new Path2D(path_OR_text);
    }
    [$addPath](...args) {
      return this.addPath.apply(this, args);
    }
    [$arc](...args) {
      return this.arc.apply(this, args);
    }
    [$arcTo](...args) {
      return this.arcTo.apply(this, args);
    }
    [$bezierCurveTo](...args) {
      return this.bezierCurveTo.apply(this, args);
    }
    [$closePath](...args) {
      return this.closePath.apply(this, args);
    }
    [$ellipse](...args) {
      return this.ellipse.apply(this, args);
    }
    [$lineTo](...args) {
      return this.lineTo.apply(this, args);
    }
    [$moveTo](...args) {
      return this.moveTo.apply(this, args);
    }
    [$quadraticCurveTo](...args) {
      return this.quadraticCurveTo.apply(this, args);
    }
    [$rect](...args) {
      return this.rect.apply(this, args);
    }
  };
  dart.addTypeTests(html$.Path2D);
  html$.Path2D[dart.implements] = () => [html$._CanvasPath];
  dart.setMethodSignature(html$.Path2D, () => ({
    __proto__: dart.getMethods(html$.Path2D.__proto__),
    [$addPath]: dart.fnType(dart.void, [html$.Path2D], [svg$.Matrix]),
    [$arc]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.bool]),
    [$arcTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num]),
    [$bezierCurveTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$closePath]: dart.fnType(dart.void, []),
    [$ellipse]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num, core.num, core.bool]),
    [$lineTo]: dart.fnType(dart.void, [core.num, core.num]),
    [$moveTo]: dart.fnType(dart.void, [core.num, core.num]),
    [$quadraticCurveTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$rect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num])
  }));
  dart.registerExtension("Path2D", html$.Path2D);
  html$.PaymentAddress = class PaymentAddress extends _interceptors.Interceptor {
    get [$addressLine]() {
      return this.addressLine;
    }
    get [$city]() {
      return this.city;
    }
    get [$country]() {
      return this.country;
    }
    get [$dependentLocality]() {
      return this.dependentLocality;
    }
    get [$languageCode]() {
      return this.languageCode;
    }
    get [$organization]() {
      return this.organization;
    }
    get [$phone]() {
      return this.phone;
    }
    get [$postalCode]() {
      return this.postalCode;
    }
    get [$recipient]() {
      return this.recipient;
    }
    get [$region]() {
      return this.region;
    }
    get [$sortingCode]() {
      return this.sortingCode;
    }
  };
  dart.addTypeTests(html$.PaymentAddress);
  const addressLine = Symbol("PaymentAddress.addressLine");
  const city = Symbol("PaymentAddress.city");
  const country = Symbol("PaymentAddress.country");
  const dependentLocality = Symbol("PaymentAddress.dependentLocality");
  const languageCode = Symbol("PaymentAddress.languageCode");
  const organization = Symbol("PaymentAddress.organization");
  const phone = Symbol("PaymentAddress.phone");
  const postalCode = Symbol("PaymentAddress.postalCode");
  const recipient = Symbol("PaymentAddress.recipient");
  const region$ = Symbol("PaymentAddress.region");
  const sortingCode = Symbol("PaymentAddress.sortingCode");
  dart.setFieldSignature(html$.PaymentAddress, () => ({
    __proto__: dart.getFields(html$.PaymentAddress.__proto__),
    [$addressLine]: dart.finalFieldType(ListOfString()),
    [$city]: dart.finalFieldType(core.String),
    [$country]: dart.finalFieldType(core.String),
    [$dependentLocality]: dart.finalFieldType(core.String),
    [$languageCode]: dart.finalFieldType(core.String),
    [$organization]: dart.finalFieldType(core.String),
    [$phone]: dart.finalFieldType(core.String),
    [$postalCode]: dart.finalFieldType(core.String),
    [$recipient]: dart.finalFieldType(core.String),
    [$region]: dart.finalFieldType(core.String),
    [$sortingCode]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("PaymentAddress", html$.PaymentAddress);
  html$.PaymentInstruments = class PaymentInstruments extends _interceptors.Interceptor {
    [$clear]() {
      return html$.promiseToFuture(dart.dynamic, this.clear());
    }
    [$delete](instrumentKey) {
      return html$.promiseToFuture(core.bool, this.delete(instrumentKey));
    }
    [$get](instrumentKey) {
      return html$.promiseToFutureAsMap(this.get(instrumentKey));
    }
    [$has](instrumentKey) {
      return html$.promiseToFuture(dart.dynamic, this.has(instrumentKey));
    }
    [$keys]() {
      return html$.promiseToFuture(ListOfString(), this.keys());
    }
    [$set](instrumentKey, details) {
      let details_dict = html_common.convertDartToNative_Dictionary(details);
      return html$.promiseToFuture(dart.dynamic, this.set(instrumentKey, details_dict));
    }
  };
  dart.addTypeTests(html$.PaymentInstruments);
  dart.setMethodSignature(html$.PaymentInstruments, () => ({
    __proto__: dart.getMethods(html$.PaymentInstruments.__proto__),
    [$clear]: dart.fnType(async.Future, []),
    [$delete]: dart.fnType(async.Future$(core.bool), [core.String]),
    [$get]: dart.fnType(async.Future$(core.Map$(core.String, dart.dynamic)), [core.String]),
    [$has]: dart.fnType(async.Future, [core.String]),
    [$keys]: dart.fnType(async.Future$(core.List$(core.String)), []),
    [$set]: dart.fnType(async.Future, [core.String, core.Map])
  }));
  dart.registerExtension("PaymentInstruments", html$.PaymentInstruments);
  html$.PaymentManager = class PaymentManager extends _interceptors.Interceptor {
    get [$instruments]() {
      return this.instruments;
    }
    get [$userHint]() {
      return this.userHint;
    }
    set [$userHint](value) {
      this.userHint = value;
    }
  };
  dart.addTypeTests(html$.PaymentManager);
  const instruments = Symbol("PaymentManager.instruments");
  const userHint = Symbol("PaymentManager.userHint");
  dart.setFieldSignature(html$.PaymentManager, () => ({
    __proto__: dart.getFields(html$.PaymentManager.__proto__),
    [$instruments]: dart.finalFieldType(html$.PaymentInstruments),
    [$userHint]: dart.fieldType(core.String)
  }));
  dart.registerExtension("PaymentManager", html$.PaymentManager);
  html$.PaymentRequest = class PaymentRequest$ extends html$.EventTarget {
    static new(methodData, details, options) {
      if (options === void 0) options = null;
      let methodData_1 = [];
      for (let i of methodData) {
        methodData_1[$add](html_common.convertDartToNative_Dictionary(i));
      }
      if (options != null) {
        let details_1 = html_common.convertDartToNative_Dictionary(details);
        let options_2 = html_common.convertDartToNative_Dictionary(options);
        return html$.PaymentRequest._create_1(methodData_1, details_1, options_2);
      }
      let details_1 = html_common.convertDartToNative_Dictionary(details);
      return html$.PaymentRequest._create_2(methodData_1, details_1);
    }
    static _create_1(methodData, details, options) {
      return new PaymentRequest(methodData, details, options);
    }
    static _create_2(methodData, details) {
      return new PaymentRequest(methodData, details);
    }
    get [$id]() {
      return this.id;
    }
    get [$shippingAddress]() {
      return this.shippingAddress;
    }
    get [$shippingOption]() {
      return this.shippingOption;
    }
    get [$shippingType]() {
      return this.shippingType;
    }
    [$abort]() {
      return html$.promiseToFuture(dart.dynamic, this.abort());
    }
    [$canMakePayment]() {
      return html$.promiseToFuture(core.bool, this.canMakePayment());
    }
    [$show]() {
      return html$.promiseToFuture(html$.PaymentResponse, this.show());
    }
  };
  dart.addTypeTests(html$.PaymentRequest);
  const id$9 = Symbol("PaymentRequest.id");
  const shippingAddress = Symbol("PaymentRequest.shippingAddress");
  const shippingOption = Symbol("PaymentRequest.shippingOption");
  const shippingType = Symbol("PaymentRequest.shippingType");
  dart.setMethodSignature(html$.PaymentRequest, () => ({
    __proto__: dart.getMethods(html$.PaymentRequest.__proto__),
    [$abort]: dart.fnType(async.Future, []),
    [$canMakePayment]: dart.fnType(async.Future$(core.bool), []),
    [$show]: dart.fnType(async.Future$(html$.PaymentResponse), [])
  }));
  dart.setFieldSignature(html$.PaymentRequest, () => ({
    __proto__: dart.getFields(html$.PaymentRequest.__proto__),
    [$id]: dart.finalFieldType(core.String),
    [$shippingAddress]: dart.finalFieldType(html$.PaymentAddress),
    [$shippingOption]: dart.finalFieldType(core.String),
    [$shippingType]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("PaymentRequest", html$.PaymentRequest);
  html$.PaymentRequestEvent = class PaymentRequestEvent$ extends html$.ExtendableEvent {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.PaymentRequestEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new PaymentRequestEvent(type, eventInitDict);
    }
    get [$instrumentKey]() {
      return this.instrumentKey;
    }
    get [$methodData]() {
      return this.methodData;
    }
    get [$modifiers]() {
      return this.modifiers;
    }
    get [$paymentRequestId]() {
      return this.paymentRequestId;
    }
    get [$paymentRequestOrigin]() {
      return this.paymentRequestOrigin;
    }
    get [$topLevelOrigin]() {
      return this.topLevelOrigin;
    }
    get [$total]() {
      return this.total;
    }
    [$openWindow](url) {
      return html$.promiseToFuture(html$.WindowClient, this.openWindow(url));
    }
    [$respondWith](...args) {
      return this.respondWith.apply(this, args);
    }
  };
  dart.addTypeTests(html$.PaymentRequestEvent);
  const instrumentKey = Symbol("PaymentRequestEvent.instrumentKey");
  const methodData$ = Symbol("PaymentRequestEvent.methodData");
  const modifiers$ = Symbol("PaymentRequestEvent.modifiers");
  const paymentRequestId = Symbol("PaymentRequestEvent.paymentRequestId");
  const paymentRequestOrigin$ = Symbol("PaymentRequestEvent.paymentRequestOrigin");
  const topLevelOrigin$ = Symbol("PaymentRequestEvent.topLevelOrigin");
  const total = Symbol("PaymentRequestEvent.total");
  dart.setMethodSignature(html$.PaymentRequestEvent, () => ({
    __proto__: dart.getMethods(html$.PaymentRequestEvent.__proto__),
    [$openWindow]: dart.fnType(async.Future$(html$.WindowClient), [core.String]),
    [$respondWith]: dart.fnType(dart.void, [async.Future])
  }));
  dart.setFieldSignature(html$.PaymentRequestEvent, () => ({
    __proto__: dart.getFields(html$.PaymentRequestEvent.__proto__),
    [$instrumentKey]: dart.finalFieldType(core.String),
    [$methodData]: dart.finalFieldType(core.List),
    [$modifiers]: dart.finalFieldType(core.List),
    [$paymentRequestId]: dart.finalFieldType(core.String),
    [$paymentRequestOrigin]: dart.finalFieldType(core.String),
    [$topLevelOrigin]: dart.finalFieldType(core.String),
    [$total]: dart.finalFieldType(core.Object)
  }));
  dart.registerExtension("PaymentRequestEvent", html$.PaymentRequestEvent);
  html$.PaymentRequestUpdateEvent = class PaymentRequestUpdateEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.PaymentRequestUpdateEvent._create_1(type, eventInitDict_1);
      }
      return html$.PaymentRequestUpdateEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new PaymentRequestUpdateEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new PaymentRequestUpdateEvent(type);
    }
    [$updateWith](...args) {
      return this.updateWith.apply(this, args);
    }
  };
  dart.addTypeTests(html$.PaymentRequestUpdateEvent);
  dart.setMethodSignature(html$.PaymentRequestUpdateEvent, () => ({
    __proto__: dart.getMethods(html$.PaymentRequestUpdateEvent.__proto__),
    [$updateWith]: dart.fnType(dart.void, [async.Future])
  }));
  dart.registerExtension("PaymentRequestUpdateEvent", html$.PaymentRequestUpdateEvent);
  html$.PaymentResponse = class PaymentResponse extends _interceptors.Interceptor {
    get [$details]() {
      return this.details;
    }
    get [$methodName]() {
      return this.methodName;
    }
    get [$payerEmail]() {
      return this.payerEmail;
    }
    get [$payerName]() {
      return this.payerName;
    }
    get [$payerPhone]() {
      return this.payerPhone;
    }
    get [$requestId]() {
      return this.requestId;
    }
    get [$shippingAddress]() {
      return this.shippingAddress;
    }
    get [$shippingOption]() {
      return this.shippingOption;
    }
    [$complete](paymentResult) {
      if (paymentResult === void 0) paymentResult = null;
      return html$.promiseToFuture(dart.dynamic, this.complete(paymentResult));
    }
  };
  dart.addTypeTests(html$.PaymentResponse);
  const details$ = Symbol("PaymentResponse.details");
  const methodName = Symbol("PaymentResponse.methodName");
  const payerEmail = Symbol("PaymentResponse.payerEmail");
  const payerName = Symbol("PaymentResponse.payerName");
  const payerPhone = Symbol("PaymentResponse.payerPhone");
  const requestId = Symbol("PaymentResponse.requestId");
  const shippingAddress$ = Symbol("PaymentResponse.shippingAddress");
  const shippingOption$ = Symbol("PaymentResponse.shippingOption");
  dart.setMethodSignature(html$.PaymentResponse, () => ({
    __proto__: dart.getMethods(html$.PaymentResponse.__proto__),
    [$complete]: dart.fnType(async.Future, [], [core.String])
  }));
  dart.setFieldSignature(html$.PaymentResponse, () => ({
    __proto__: dart.getFields(html$.PaymentResponse.__proto__),
    [$details]: dart.finalFieldType(core.Object),
    [$methodName]: dart.finalFieldType(core.String),
    [$payerEmail]: dart.finalFieldType(core.String),
    [$payerName]: dart.finalFieldType(core.String),
    [$payerPhone]: dart.finalFieldType(core.String),
    [$requestId]: dart.finalFieldType(core.String),
    [$shippingAddress]: dart.finalFieldType(html$.PaymentAddress),
    [$shippingOption]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("PaymentResponse", html$.PaymentResponse);
  html$.Performance = class Performance extends html$.EventTarget {
    static get supported() {
      return !!window.performance;
    }
    get [$memory]() {
      return this.memory;
    }
    get [$navigation]() {
      return this.navigation;
    }
    get [$timeOrigin]() {
      return this.timeOrigin;
    }
    get [$timing]() {
      return this.timing;
    }
    [$clearMarks](...args) {
      return this.clearMarks.apply(this, args);
    }
    [$clearMeasures](...args) {
      return this.clearMeasures.apply(this, args);
    }
    [$clearResourceTimings](...args) {
      return this.clearResourceTimings.apply(this, args);
    }
    [$getEntries](...args) {
      return this.getEntries.apply(this, args);
    }
    [$getEntriesByName](...args) {
      return this.getEntriesByName.apply(this, args);
    }
    [$getEntriesByType](...args) {
      return this.getEntriesByType.apply(this, args);
    }
    [$mark](...args) {
      return this.mark.apply(this, args);
    }
    [$measure](...args) {
      return this.measure.apply(this, args);
    }
    [$now](...args) {
      return this.now.apply(this, args);
    }
    [$setResourceTimingBufferSize](...args) {
      return this.setResourceTimingBufferSize.apply(this, args);
    }
  };
  dart.addTypeTests(html$.Performance);
  const memory = Symbol("Performance.memory");
  const navigation = Symbol("Performance.navigation");
  const timeOrigin = Symbol("Performance.timeOrigin");
  const timing$ = Symbol("Performance.timing");
  dart.setMethodSignature(html$.Performance, () => ({
    __proto__: dart.getMethods(html$.Performance.__proto__),
    [$clearMarks]: dart.fnType(dart.void, [core.String]),
    [$clearMeasures]: dart.fnType(dart.void, [core.String]),
    [$clearResourceTimings]: dart.fnType(dart.void, []),
    [$getEntries]: dart.fnType(core.List$(html$.PerformanceEntry), []),
    [$getEntriesByName]: dart.fnType(core.List$(html$.PerformanceEntry), [core.String, core.String]),
    [$getEntriesByType]: dart.fnType(core.List$(html$.PerformanceEntry), [core.String]),
    [$mark]: dart.fnType(dart.void, [core.String]),
    [$measure]: dart.fnType(dart.void, [core.String, core.String, core.String]),
    [$now]: dart.fnType(core.double, []),
    [$setResourceTimingBufferSize]: dart.fnType(dart.void, [core.int])
  }));
  dart.setFieldSignature(html$.Performance, () => ({
    __proto__: dart.getFields(html$.Performance.__proto__),
    [$memory]: dart.finalFieldType(html$.MemoryInfo),
    [$navigation]: dart.finalFieldType(html$.PerformanceNavigation),
    [$timeOrigin]: dart.finalFieldType(core.num),
    [$timing]: dart.finalFieldType(html$.PerformanceTiming)
  }));
  dart.registerExtension("Performance", html$.Performance);
  html$.PerformanceEntry = class PerformanceEntry extends _interceptors.Interceptor {
    get [$duration]() {
      return this.duration;
    }
    get [$entryType]() {
      return this.entryType;
    }
    get [$name]() {
      return this.name;
    }
    get [$startTime]() {
      return this.startTime;
    }
  };
  dart.addTypeTests(html$.PerformanceEntry);
  const duration$2 = Symbol("PerformanceEntry.duration");
  const entryType = Symbol("PerformanceEntry.entryType");
  const name$30 = Symbol("PerformanceEntry.name");
  const startTime$ = Symbol("PerformanceEntry.startTime");
  dart.setFieldSignature(html$.PerformanceEntry, () => ({
    __proto__: dart.getFields(html$.PerformanceEntry.__proto__),
    [$duration]: dart.finalFieldType(core.num),
    [$entryType]: dart.finalFieldType(core.String),
    [$name]: dart.finalFieldType(core.String),
    [$startTime]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("PerformanceEntry", html$.PerformanceEntry);
  html$.PerformanceLongTaskTiming = class PerformanceLongTaskTiming extends html$.PerformanceEntry {
    get [$attribution]() {
      return this.attribution;
    }
  };
  dart.addTypeTests(html$.PerformanceLongTaskTiming);
  const attribution = Symbol("PerformanceLongTaskTiming.attribution");
  dart.setFieldSignature(html$.PerformanceLongTaskTiming, () => ({
    __proto__: dart.getFields(html$.PerformanceLongTaskTiming.__proto__),
    [$attribution]: dart.finalFieldType(ListOfTaskAttributionTiming())
  }));
  dart.registerExtension("PerformanceLongTaskTiming", html$.PerformanceLongTaskTiming);
  html$.PerformanceMark = class PerformanceMark extends html$.PerformanceEntry {};
  dart.addTypeTests(html$.PerformanceMark);
  dart.registerExtension("PerformanceMark", html$.PerformanceMark);
  html$.PerformanceMeasure = class PerformanceMeasure extends html$.PerformanceEntry {};
  dart.addTypeTests(html$.PerformanceMeasure);
  dart.registerExtension("PerformanceMeasure", html$.PerformanceMeasure);
  html$.PerformanceNavigation = class PerformanceNavigation extends _interceptors.Interceptor {
    get [$redirectCount]() {
      return this.redirectCount;
    }
    get [$type]() {
      return this.type;
    }
  };
  dart.addTypeTests(html$.PerformanceNavigation);
  const redirectCount = Symbol("PerformanceNavigation.redirectCount");
  const type$24 = Symbol("PerformanceNavigation.type");
  dart.setFieldSignature(html$.PerformanceNavigation, () => ({
    __proto__: dart.getFields(html$.PerformanceNavigation.__proto__),
    [$redirectCount]: dart.finalFieldType(core.int),
    [$type]: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(html$.PerformanceNavigation, {
    /*html$.PerformanceNavigation.TYPE_BACK_FORWARD*/get TYPE_BACK_FORWARD() {
      return 2;
    },
    /*html$.PerformanceNavigation.TYPE_NAVIGATE*/get TYPE_NAVIGATE() {
      return 0;
    },
    /*html$.PerformanceNavigation.TYPE_RELOAD*/get TYPE_RELOAD() {
      return 1;
    },
    /*html$.PerformanceNavigation.TYPE_RESERVED*/get TYPE_RESERVED() {
      return 255;
    }
  });
  dart.registerExtension("PerformanceNavigation", html$.PerformanceNavigation);
  html$.PerformanceResourceTiming = class PerformanceResourceTiming extends html$.PerformanceEntry {
    get [$connectEnd]() {
      return this.connectEnd;
    }
    get [$connectStart]() {
      return this.connectStart;
    }
    get [$decodedBodySize]() {
      return this.decodedBodySize;
    }
    get [$domainLookupEnd]() {
      return this.domainLookupEnd;
    }
    get [$domainLookupStart]() {
      return this.domainLookupStart;
    }
    get [$encodedBodySize]() {
      return this.encodedBodySize;
    }
    get [$fetchStart]() {
      return this.fetchStart;
    }
    get [$initiatorType]() {
      return this.initiatorType;
    }
    get [$nextHopProtocol]() {
      return this.nextHopProtocol;
    }
    get [$redirectEnd]() {
      return this.redirectEnd;
    }
    get [$redirectStart]() {
      return this.redirectStart;
    }
    get [$requestStart]() {
      return this.requestStart;
    }
    get [$responseEnd]() {
      return this.responseEnd;
    }
    get [$responseStart]() {
      return this.responseStart;
    }
    get [$secureConnectionStart]() {
      return this.secureConnectionStart;
    }
    get [$serverTiming]() {
      return this.serverTiming;
    }
    get [$transferSize]() {
      return this.transferSize;
    }
    get [$workerStart]() {
      return this.workerStart;
    }
  };
  dart.addTypeTests(html$.PerformanceResourceTiming);
  const connectEnd = Symbol("PerformanceResourceTiming.connectEnd");
  const connectStart = Symbol("PerformanceResourceTiming.connectStart");
  const decodedBodySize = Symbol("PerformanceResourceTiming.decodedBodySize");
  const domainLookupEnd = Symbol("PerformanceResourceTiming.domainLookupEnd");
  const domainLookupStart = Symbol("PerformanceResourceTiming.domainLookupStart");
  const encodedBodySize = Symbol("PerformanceResourceTiming.encodedBodySize");
  const fetchStart = Symbol("PerformanceResourceTiming.fetchStart");
  const initiatorType = Symbol("PerformanceResourceTiming.initiatorType");
  const nextHopProtocol = Symbol("PerformanceResourceTiming.nextHopProtocol");
  const redirectEnd = Symbol("PerformanceResourceTiming.redirectEnd");
  const redirectStart = Symbol("PerformanceResourceTiming.redirectStart");
  const requestStart = Symbol("PerformanceResourceTiming.requestStart");
  const responseEnd = Symbol("PerformanceResourceTiming.responseEnd");
  const responseStart = Symbol("PerformanceResourceTiming.responseStart");
  const secureConnectionStart = Symbol("PerformanceResourceTiming.secureConnectionStart");
  const serverTiming = Symbol("PerformanceResourceTiming.serverTiming");
  const transferSize = Symbol("PerformanceResourceTiming.transferSize");
  const workerStart = Symbol("PerformanceResourceTiming.workerStart");
  dart.setFieldSignature(html$.PerformanceResourceTiming, () => ({
    __proto__: dart.getFields(html$.PerformanceResourceTiming.__proto__),
    [$connectEnd]: dart.finalFieldType(core.num),
    [$connectStart]: dart.finalFieldType(core.num),
    [$decodedBodySize]: dart.finalFieldType(core.int),
    [$domainLookupEnd]: dart.finalFieldType(core.num),
    [$domainLookupStart]: dart.finalFieldType(core.num),
    [$encodedBodySize]: dart.finalFieldType(core.int),
    [$fetchStart]: dart.finalFieldType(core.num),
    [$initiatorType]: dart.finalFieldType(core.String),
    [$nextHopProtocol]: dart.finalFieldType(core.String),
    [$redirectEnd]: dart.finalFieldType(core.num),
    [$redirectStart]: dart.finalFieldType(core.num),
    [$requestStart]: dart.finalFieldType(core.num),
    [$responseEnd]: dart.finalFieldType(core.num),
    [$responseStart]: dart.finalFieldType(core.num),
    [$secureConnectionStart]: dart.finalFieldType(core.num),
    [$serverTiming]: dart.finalFieldType(ListOfPerformanceServerTiming()),
    [$transferSize]: dart.finalFieldType(core.int),
    [$workerStart]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("PerformanceResourceTiming", html$.PerformanceResourceTiming);
  html$.PerformanceNavigationTiming = class PerformanceNavigationTiming extends html$.PerformanceResourceTiming {
    get [$domComplete]() {
      return this.domComplete;
    }
    get [$domContentLoadedEventEnd]() {
      return this.domContentLoadedEventEnd;
    }
    get [$domContentLoadedEventStart]() {
      return this.domContentLoadedEventStart;
    }
    get [$domInteractive]() {
      return this.domInteractive;
    }
    get [$loadEventEnd]() {
      return this.loadEventEnd;
    }
    get [$loadEventStart]() {
      return this.loadEventStart;
    }
    get [$redirectCount]() {
      return this.redirectCount;
    }
    get [$type]() {
      return this.type;
    }
    get [$unloadEventEnd]() {
      return this.unloadEventEnd;
    }
    get [$unloadEventStart]() {
      return this.unloadEventStart;
    }
  };
  dart.addTypeTests(html$.PerformanceNavigationTiming);
  const domComplete = Symbol("PerformanceNavigationTiming.domComplete");
  const domContentLoadedEventEnd = Symbol("PerformanceNavigationTiming.domContentLoadedEventEnd");
  const domContentLoadedEventStart = Symbol("PerformanceNavigationTiming.domContentLoadedEventStart");
  const domInteractive = Symbol("PerformanceNavigationTiming.domInteractive");
  const loadEventEnd = Symbol("PerformanceNavigationTiming.loadEventEnd");
  const loadEventStart = Symbol("PerformanceNavigationTiming.loadEventStart");
  const redirectCount$ = Symbol("PerformanceNavigationTiming.redirectCount");
  const type$25 = Symbol("PerformanceNavigationTiming.type");
  const unloadEventEnd = Symbol("PerformanceNavigationTiming.unloadEventEnd");
  const unloadEventStart = Symbol("PerformanceNavigationTiming.unloadEventStart");
  dart.setFieldSignature(html$.PerformanceNavigationTiming, () => ({
    __proto__: dart.getFields(html$.PerformanceNavigationTiming.__proto__),
    [$domComplete]: dart.finalFieldType(core.num),
    [$domContentLoadedEventEnd]: dart.finalFieldType(core.num),
    [$domContentLoadedEventStart]: dart.finalFieldType(core.num),
    [$domInteractive]: dart.finalFieldType(core.num),
    [$loadEventEnd]: dart.finalFieldType(core.num),
    [$loadEventStart]: dart.finalFieldType(core.num),
    [$redirectCount]: dart.finalFieldType(core.int),
    [$type]: dart.finalFieldType(core.String),
    [$unloadEventEnd]: dart.finalFieldType(core.num),
    [$unloadEventStart]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("PerformanceNavigationTiming", html$.PerformanceNavigationTiming);
  html$.PerformanceObserver = class PerformanceObserver$ extends _interceptors.Interceptor {
    static new(callback) {
      return html$.PerformanceObserver._create_1(callback);
    }
    static _create_1(callback) {
      return new PerformanceObserver(callback);
    }
    [$disconnect](...args) {
      return this.disconnect.apply(this, args);
    }
    [$observe](options) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[_observe_1$](options_1);
      return;
    }
    [_observe_1$](...args) {
      return this.observe.apply(this, args);
    }
  };
  dart.addTypeTests(html$.PerformanceObserver);
  dart.setMethodSignature(html$.PerformanceObserver, () => ({
    __proto__: dart.getMethods(html$.PerformanceObserver.__proto__),
    [$disconnect]: dart.fnType(dart.void, []),
    [$observe]: dart.fnType(dart.void, [core.Map]),
    [_observe_1$]: dart.fnType(dart.void, [dart.dynamic])
  }));
  dart.registerExtension("PerformanceObserver", html$.PerformanceObserver);
  html$.PerformanceObserverEntryList = class PerformanceObserverEntryList extends _interceptors.Interceptor {
    [$getEntries](...args) {
      return this.getEntries.apply(this, args);
    }
    [$getEntriesByName](...args) {
      return this.getEntriesByName.apply(this, args);
    }
    [$getEntriesByType](...args) {
      return this.getEntriesByType.apply(this, args);
    }
  };
  dart.addTypeTests(html$.PerformanceObserverEntryList);
  dart.setMethodSignature(html$.PerformanceObserverEntryList, () => ({
    __proto__: dart.getMethods(html$.PerformanceObserverEntryList.__proto__),
    [$getEntries]: dart.fnType(core.List$(html$.PerformanceEntry), []),
    [$getEntriesByName]: dart.fnType(core.List$(html$.PerformanceEntry), [core.String, core.String]),
    [$getEntriesByType]: dart.fnType(core.List$(html$.PerformanceEntry), [core.String])
  }));
  dart.registerExtension("PerformanceObserverEntryList", html$.PerformanceObserverEntryList);
  html$.PerformancePaintTiming = class PerformancePaintTiming extends html$.PerformanceEntry {};
  dart.addTypeTests(html$.PerformancePaintTiming);
  dart.registerExtension("PerformancePaintTiming", html$.PerformancePaintTiming);
  html$.PerformanceServerTiming = class PerformanceServerTiming extends _interceptors.Interceptor {
    get [$description]() {
      return this.description;
    }
    get [$duration]() {
      return this.duration;
    }
    get [$name]() {
      return this.name;
    }
  };
  dart.addTypeTests(html$.PerformanceServerTiming);
  const description$0 = Symbol("PerformanceServerTiming.description");
  const duration$3 = Symbol("PerformanceServerTiming.duration");
  const name$31 = Symbol("PerformanceServerTiming.name");
  dart.setFieldSignature(html$.PerformanceServerTiming, () => ({
    __proto__: dart.getFields(html$.PerformanceServerTiming.__proto__),
    [$description]: dart.finalFieldType(core.String),
    [$duration]: dart.finalFieldType(core.num),
    [$name]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("PerformanceServerTiming", html$.PerformanceServerTiming);
  html$.PerformanceTiming = class PerformanceTiming extends _interceptors.Interceptor {
    get [$connectEnd]() {
      return this.connectEnd;
    }
    get [$connectStart]() {
      return this.connectStart;
    }
    get [$domComplete]() {
      return this.domComplete;
    }
    get [$domContentLoadedEventEnd]() {
      return this.domContentLoadedEventEnd;
    }
    get [$domContentLoadedEventStart]() {
      return this.domContentLoadedEventStart;
    }
    get [$domInteractive]() {
      return this.domInteractive;
    }
    get [$domLoading]() {
      return this.domLoading;
    }
    get [$domainLookupEnd]() {
      return this.domainLookupEnd;
    }
    get [$domainLookupStart]() {
      return this.domainLookupStart;
    }
    get [$fetchStart]() {
      return this.fetchStart;
    }
    get [$loadEventEnd]() {
      return this.loadEventEnd;
    }
    get [$loadEventStart]() {
      return this.loadEventStart;
    }
    get [$navigationStart]() {
      return this.navigationStart;
    }
    get [$redirectEnd]() {
      return this.redirectEnd;
    }
    get [$redirectStart]() {
      return this.redirectStart;
    }
    get [$requestStart]() {
      return this.requestStart;
    }
    get [$responseEnd]() {
      return this.responseEnd;
    }
    get [$responseStart]() {
      return this.responseStart;
    }
    get [$secureConnectionStart]() {
      return this.secureConnectionStart;
    }
    get [$unloadEventEnd]() {
      return this.unloadEventEnd;
    }
    get [$unloadEventStart]() {
      return this.unloadEventStart;
    }
  };
  dart.addTypeTests(html$.PerformanceTiming);
  const connectEnd$ = Symbol("PerformanceTiming.connectEnd");
  const connectStart$ = Symbol("PerformanceTiming.connectStart");
  const domComplete$ = Symbol("PerformanceTiming.domComplete");
  const domContentLoadedEventEnd$ = Symbol("PerformanceTiming.domContentLoadedEventEnd");
  const domContentLoadedEventStart$ = Symbol("PerformanceTiming.domContentLoadedEventStart");
  const domInteractive$ = Symbol("PerformanceTiming.domInteractive");
  const domLoading = Symbol("PerformanceTiming.domLoading");
  const domainLookupEnd$ = Symbol("PerformanceTiming.domainLookupEnd");
  const domainLookupStart$ = Symbol("PerformanceTiming.domainLookupStart");
  const fetchStart$ = Symbol("PerformanceTiming.fetchStart");
  const loadEventEnd$ = Symbol("PerformanceTiming.loadEventEnd");
  const loadEventStart$ = Symbol("PerformanceTiming.loadEventStart");
  const navigationStart = Symbol("PerformanceTiming.navigationStart");
  const redirectEnd$ = Symbol("PerformanceTiming.redirectEnd");
  const redirectStart$ = Symbol("PerformanceTiming.redirectStart");
  const requestStart$ = Symbol("PerformanceTiming.requestStart");
  const responseEnd$ = Symbol("PerformanceTiming.responseEnd");
  const responseStart$ = Symbol("PerformanceTiming.responseStart");
  const secureConnectionStart$ = Symbol("PerformanceTiming.secureConnectionStart");
  const unloadEventEnd$ = Symbol("PerformanceTiming.unloadEventEnd");
  const unloadEventStart$ = Symbol("PerformanceTiming.unloadEventStart");
  dart.setFieldSignature(html$.PerformanceTiming, () => ({
    __proto__: dart.getFields(html$.PerformanceTiming.__proto__),
    [$connectEnd]: dart.finalFieldType(core.int),
    [$connectStart]: dart.finalFieldType(core.int),
    [$domComplete]: dart.finalFieldType(core.int),
    [$domContentLoadedEventEnd]: dart.finalFieldType(core.int),
    [$domContentLoadedEventStart]: dart.finalFieldType(core.int),
    [$domInteractive]: dart.finalFieldType(core.int),
    [$domLoading]: dart.finalFieldType(core.int),
    [$domainLookupEnd]: dart.finalFieldType(core.int),
    [$domainLookupStart]: dart.finalFieldType(core.int),
    [$fetchStart]: dart.finalFieldType(core.int),
    [$loadEventEnd]: dart.finalFieldType(core.int),
    [$loadEventStart]: dart.finalFieldType(core.int),
    [$navigationStart]: dart.finalFieldType(core.int),
    [$redirectEnd]: dart.finalFieldType(core.int),
    [$redirectStart]: dart.finalFieldType(core.int),
    [$requestStart]: dart.finalFieldType(core.int),
    [$responseEnd]: dart.finalFieldType(core.int),
    [$responseStart]: dart.finalFieldType(core.int),
    [$secureConnectionStart]: dart.finalFieldType(core.int),
    [$unloadEventEnd]: dart.finalFieldType(core.int),
    [$unloadEventStart]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("PerformanceTiming", html$.PerformanceTiming);
  html$.PermissionStatus = class PermissionStatus extends html$.EventTarget {
    get [$state]() {
      return this.state;
    }
    get [$onChange]() {
      return html$.PermissionStatus.changeEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.PermissionStatus);
  const state$2 = Symbol("PermissionStatus.state");
  dart.setGetterSignature(html$.PermissionStatus, () => ({
    __proto__: dart.getGetters(html$.PermissionStatus.__proto__),
    [$onChange]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.PermissionStatus, () => ({
    __proto__: dart.getFields(html$.PermissionStatus.__proto__),
    [$state]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.PermissionStatus, {
    /*html$.PermissionStatus.changeEvent*/get changeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("change"));
    }
  });
  dart.registerExtension("PermissionStatus", html$.PermissionStatus);
  html$.Permissions = class Permissions extends _interceptors.Interceptor {
    [$query](permission) {
      let permission_dict = html_common.convertDartToNative_Dictionary(permission);
      return html$.promiseToFuture(html$.PermissionStatus, this.query(permission_dict));
    }
    [$request](permissions) {
      let permissions_dict = html_common.convertDartToNative_Dictionary(permissions);
      return html$.promiseToFuture(html$.PermissionStatus, this.request(permissions_dict));
    }
    [$requestAll](permissions) {
      return html$.promiseToFuture(html$.PermissionStatus, this.requestAll(permissions));
    }
    [$revoke](permission) {
      let permission_dict = html_common.convertDartToNative_Dictionary(permission);
      return html$.promiseToFuture(html$.PermissionStatus, this.revoke(permission_dict));
    }
  };
  dart.addTypeTests(html$.Permissions);
  dart.setMethodSignature(html$.Permissions, () => ({
    __proto__: dart.getMethods(html$.Permissions.__proto__),
    [$query]: dart.fnType(async.Future$(html$.PermissionStatus), [core.Map]),
    [$request]: dart.fnType(async.Future$(html$.PermissionStatus), [core.Map]),
    [$requestAll]: dart.fnType(async.Future$(html$.PermissionStatus), [core.List$(core.Map)]),
    [$revoke]: dart.fnType(async.Future$(html$.PermissionStatus), [core.Map])
  }));
  dart.registerExtension("Permissions", html$.Permissions);
  html$.PhotoCapabilities = class PhotoCapabilities extends _interceptors.Interceptor {
    get [$fillLightMode]() {
      return this.fillLightMode;
    }
    get [$imageHeight]() {
      return this.imageHeight;
    }
    get [$imageWidth]() {
      return this.imageWidth;
    }
    get [$redEyeReduction]() {
      return this.redEyeReduction;
    }
  };
  dart.addTypeTests(html$.PhotoCapabilities);
  const fillLightMode = Symbol("PhotoCapabilities.fillLightMode");
  const imageHeight = Symbol("PhotoCapabilities.imageHeight");
  const imageWidth = Symbol("PhotoCapabilities.imageWidth");
  const redEyeReduction = Symbol("PhotoCapabilities.redEyeReduction");
  dart.setFieldSignature(html$.PhotoCapabilities, () => ({
    __proto__: dart.getFields(html$.PhotoCapabilities.__proto__),
    [$fillLightMode]: dart.finalFieldType(core.List),
    [$imageHeight]: dart.finalFieldType(html$.MediaSettingsRange),
    [$imageWidth]: dart.finalFieldType(html$.MediaSettingsRange),
    [$redEyeReduction]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("PhotoCapabilities", html$.PhotoCapabilities);
  html$.PictureElement = class PictureElement extends html$.HtmlElement {};
  (html$.PictureElement.created = function() {
    html$.PictureElement.__proto__.created.call(this);
  }).prototype = html$.PictureElement.prototype;
  dart.addTypeTests(html$.PictureElement);
  dart.registerExtension("HTMLPictureElement", html$.PictureElement);
  html$.Plugin = class Plugin extends _interceptors.Interceptor {
    get [$description]() {
      return this.description;
    }
    get [$filename]() {
      return this.filename;
    }
    get [$length]() {
      return this.length;
    }
    get [$name]() {
      return this.name;
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
    [$namedItem](...args) {
      return this.namedItem.apply(this, args);
    }
  };
  dart.addTypeTests(html$.Plugin);
  const description$1 = Symbol("Plugin.description");
  const filename$ = Symbol("Plugin.filename");
  const length$11 = Symbol("Plugin.length");
  const name$32 = Symbol("Plugin.name");
  dart.setMethodSignature(html$.Plugin, () => ({
    __proto__: dart.getMethods(html$.Plugin.__proto__),
    [$item]: dart.fnType(html$.MimeType, [core.int]),
    [$namedItem]: dart.fnType(html$.MimeType, [core.String])
  }));
  dart.setFieldSignature(html$.Plugin, () => ({
    __proto__: dart.getFields(html$.Plugin.__proto__),
    [$description]: dart.finalFieldType(core.String),
    [$filename]: dart.finalFieldType(core.String),
    [$length]: dart.finalFieldType(core.int),
    [$name]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("Plugin", html$.Plugin);
  const Interceptor_ListMixin$$4 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$4.new = function() {
    Interceptor_ListMixin$$4.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$4.prototype;
  dart.applyMixin(Interceptor_ListMixin$$4, collection.ListMixin$(html$.Plugin));
  const Interceptor_ImmutableListMixin$$4 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$4 {};
  (Interceptor_ImmutableListMixin$$4.new = function() {
    Interceptor_ImmutableListMixin$$4.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$4.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$4, html$.ImmutableListMixin$(html$.Plugin));
  html$.PluginArray = class PluginArray extends Interceptor_ImmutableListMixin$$4 {
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[index];
    }
    [$_set](index, value) {
      html$.Plugin._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
    [$namedItem](...args) {
      return this.namedItem.apply(this, args);
    }
    [$refresh](...args) {
      return this.refresh.apply(this, args);
    }
  };
  html$.PluginArray.prototype[dart.isList] = true;
  dart.addTypeTests(html$.PluginArray);
  html$.PluginArray[dart.implements] = () => [JavaScriptIndexingBehaviorOfPlugin(), ListOfPlugin()];
  dart.setMethodSignature(html$.PluginArray, () => ({
    __proto__: dart.getMethods(html$.PluginArray.__proto__),
    [$_get]: dart.fnType(html$.Plugin, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(html$.Plugin, [core.int]),
    [$item]: dart.fnType(html$.Plugin, [core.int]),
    [$namedItem]: dart.fnType(html$.Plugin, [core.String]),
    [$refresh]: dart.fnType(dart.void, [core.bool])
  }));
  dart.setGetterSignature(html$.PluginArray, () => ({
    __proto__: dart.getGetters(html$.PluginArray.__proto__),
    [$length]: core.int,
    [$first]: html$.Plugin,
    [$last]: html$.Plugin,
    [$single]: html$.Plugin
  }));
  dart.setSetterSignature(html$.PluginArray, () => ({
    __proto__: dart.getSetters(html$.PluginArray.__proto__),
    [$length]: core.int
  }));
  dart.registerExtension("PluginArray", html$.PluginArray);
  html$.PointerEvent = class PointerEvent$ extends html$.MouseEvent {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.PointerEvent._create_1(type, eventInitDict_1);
      }
      return html$.PointerEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new PointerEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new PointerEvent(type);
    }
    get [$height]() {
      return this.height;
    }
    get [$isPrimary]() {
      return this.isPrimary;
    }
    get [$pointerId]() {
      return this.pointerId;
    }
    get [$pointerType]() {
      return this.pointerType;
    }
    get [$pressure]() {
      return this.pressure;
    }
    get [$tangentialPressure]() {
      return this.tangentialPressure;
    }
    get [$tiltX]() {
      return this.tiltX;
    }
    get [$tiltY]() {
      return this.tiltY;
    }
    get [$twist]() {
      return this.twist;
    }
    get [$width]() {
      return this.width;
    }
    [$getCoalescedEvents](...args) {
      return this.getCoalescedEvents.apply(this, args);
    }
  };
  dart.addTypeTests(html$.PointerEvent);
  const height$9 = Symbol("PointerEvent.height");
  const isPrimary = Symbol("PointerEvent.isPrimary");
  const pointerId = Symbol("PointerEvent.pointerId");
  const pointerType = Symbol("PointerEvent.pointerType");
  const pressure = Symbol("PointerEvent.pressure");
  const tangentialPressure = Symbol("PointerEvent.tangentialPressure");
  const tiltX = Symbol("PointerEvent.tiltX");
  const tiltY = Symbol("PointerEvent.tiltY");
  const twist = Symbol("PointerEvent.twist");
  const width$9 = Symbol("PointerEvent.width");
  dart.setMethodSignature(html$.PointerEvent, () => ({
    __proto__: dart.getMethods(html$.PointerEvent.__proto__),
    [$getCoalescedEvents]: dart.fnType(core.List$(html$.PointerEvent), [])
  }));
  dart.setFieldSignature(html$.PointerEvent, () => ({
    __proto__: dart.getFields(html$.PointerEvent.__proto__),
    [$height]: dart.finalFieldType(core.num),
    [$isPrimary]: dart.finalFieldType(core.bool),
    [$pointerId]: dart.finalFieldType(core.int),
    [$pointerType]: dart.finalFieldType(core.String),
    [$pressure]: dart.finalFieldType(core.num),
    [$tangentialPressure]: dart.finalFieldType(core.num),
    [$tiltX]: dart.finalFieldType(core.int),
    [$tiltY]: dart.finalFieldType(core.int),
    [$twist]: dart.finalFieldType(core.int),
    [$width]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("PointerEvent", html$.PointerEvent);
  html$.PopStateEvent = class PopStateEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.PopStateEvent._create_1(type, eventInitDict_1);
      }
      return html$.PopStateEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new PopStateEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new PopStateEvent(type);
    }
    get [$state]() {
      return html_common.convertNativeToDart_SerializedScriptValue(this[_get_state]);
    }
    get [_get_state]() {
      return this.state;
    }
  };
  dart.addTypeTests(html$.PopStateEvent);
  dart.setGetterSignature(html$.PopStateEvent, () => ({
    __proto__: dart.getGetters(html$.PopStateEvent.__proto__),
    [$state]: dart.dynamic
  }));
  dart.setFieldSignature(html$.PopStateEvent, () => ({
    __proto__: dart.getFields(html$.PopStateEvent.__proto__),
    [_get_state]: dart.finalFieldType(dart.dynamic)
  }));
  dart.registerExtension("PopStateEvent", html$.PopStateEvent);
  html$.PositionError = class PositionError extends _interceptors.Interceptor {
    get [$code]() {
      return this.code;
    }
    get [$message]() {
      return this.message;
    }
  };
  dart.addTypeTests(html$.PositionError);
  const code$1 = Symbol("PositionError.code");
  const message$25 = Symbol("PositionError.message");
  dart.setFieldSignature(html$.PositionError, () => ({
    __proto__: dart.getFields(html$.PositionError.__proto__),
    [$code]: dart.finalFieldType(core.int),
    [$message]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.PositionError, {
    /*html$.PositionError.PERMISSION_DENIED*/get PERMISSION_DENIED() {
      return 1;
    },
    /*html$.PositionError.POSITION_UNAVAILABLE*/get POSITION_UNAVAILABLE() {
      return 2;
    },
    /*html$.PositionError.TIMEOUT*/get TIMEOUT() {
      return 3;
    }
  });
  dart.registerExtension("PositionError", html$.PositionError);
  html$.PreElement = class PreElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("pre");
    }
  };
  (html$.PreElement.created = function() {
    html$.PreElement.__proto__.created.call(this);
  }).prototype = html$.PreElement.prototype;
  dart.addTypeTests(html$.PreElement);
  dart.registerExtension("HTMLPreElement", html$.PreElement);
  html$.Presentation = class Presentation extends _interceptors.Interceptor {
    get [$defaultRequest]() {
      return this.defaultRequest;
    }
    set [$defaultRequest](value) {
      this.defaultRequest = value;
    }
    get [$receiver]() {
      return this.receiver;
    }
  };
  dart.addTypeTests(html$.Presentation);
  const defaultRequest = Symbol("Presentation.defaultRequest");
  const receiver = Symbol("Presentation.receiver");
  dart.setFieldSignature(html$.Presentation, () => ({
    __proto__: dart.getFields(html$.Presentation.__proto__),
    [$defaultRequest]: dart.fieldType(html$.PresentationRequest),
    [$receiver]: dart.finalFieldType(html$.PresentationReceiver)
  }));
  dart.registerExtension("Presentation", html$.Presentation);
  html$.PresentationAvailability = class PresentationAvailability extends html$.EventTarget {
    get [$value]() {
      return this.value;
    }
    get [$onChange]() {
      return html$.PresentationAvailability.changeEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.PresentationAvailability);
  const value$13 = Symbol("PresentationAvailability.value");
  dart.setGetterSignature(html$.PresentationAvailability, () => ({
    __proto__: dart.getGetters(html$.PresentationAvailability.__proto__),
    [$onChange]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.PresentationAvailability, () => ({
    __proto__: dart.getFields(html$.PresentationAvailability.__proto__),
    [$value]: dart.finalFieldType(core.bool)
  }));
  dart.defineLazy(html$.PresentationAvailability, {
    /*html$.PresentationAvailability.changeEvent*/get changeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("change"));
    }
  });
  dart.registerExtension("PresentationAvailability", html$.PresentationAvailability);
  html$.PresentationConnection = class PresentationConnection extends html$.EventTarget {
    get [$binaryType]() {
      return this.binaryType;
    }
    set [$binaryType](value) {
      this.binaryType = value;
    }
    get [$id]() {
      return this.id;
    }
    get [$state]() {
      return this.state;
    }
    get [$url]() {
      return this.url;
    }
    [$close](...args) {
      return this.close.apply(this, args);
    }
    [$send](...args) {
      return this.send.apply(this, args);
    }
    [$terminate](...args) {
      return this.terminate.apply(this, args);
    }
    get [$onMessage]() {
      return html$.PresentationConnection.messageEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.PresentationConnection);
  const binaryType = Symbol("PresentationConnection.binaryType");
  const id$10 = Symbol("PresentationConnection.id");
  const state$3 = Symbol("PresentationConnection.state");
  const url$2 = Symbol("PresentationConnection.url");
  dart.setMethodSignature(html$.PresentationConnection, () => ({
    __proto__: dart.getMethods(html$.PresentationConnection.__proto__),
    [$close]: dart.fnType(dart.void, []),
    [$send]: dart.fnType(dart.void, [dart.dynamic]),
    [$terminate]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(html$.PresentationConnection, () => ({
    __proto__: dart.getGetters(html$.PresentationConnection.__proto__),
    [$onMessage]: async.Stream$(html$.MessageEvent)
  }));
  dart.setFieldSignature(html$.PresentationConnection, () => ({
    __proto__: dart.getFields(html$.PresentationConnection.__proto__),
    [$binaryType]: dart.fieldType(core.String),
    [$id]: dart.finalFieldType(core.String),
    [$state]: dart.finalFieldType(core.String),
    [$url]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.PresentationConnection, {
    /*html$.PresentationConnection.messageEvent*/get messageEvent() {
      return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
    }
  });
  dart.registerExtension("PresentationConnection", html$.PresentationConnection);
  html$.PresentationConnectionAvailableEvent = class PresentationConnectionAvailableEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.PresentationConnectionAvailableEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new PresentationConnectionAvailableEvent(type, eventInitDict);
    }
    get [$connection]() {
      return this.connection;
    }
  };
  dart.addTypeTests(html$.PresentationConnectionAvailableEvent);
  const connection$0 = Symbol("PresentationConnectionAvailableEvent.connection");
  dart.setFieldSignature(html$.PresentationConnectionAvailableEvent, () => ({
    __proto__: dart.getFields(html$.PresentationConnectionAvailableEvent.__proto__),
    [$connection]: dart.finalFieldType(html$.PresentationConnection)
  }));
  dart.registerExtension("PresentationConnectionAvailableEvent", html$.PresentationConnectionAvailableEvent);
  html$.PresentationConnectionCloseEvent = class PresentationConnectionCloseEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.PresentationConnectionCloseEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new PresentationConnectionCloseEvent(type, eventInitDict);
    }
    get [$message]() {
      return this.message;
    }
    get [$reason]() {
      return this.reason;
    }
  };
  dart.addTypeTests(html$.PresentationConnectionCloseEvent);
  const message$26 = Symbol("PresentationConnectionCloseEvent.message");
  const reason$0 = Symbol("PresentationConnectionCloseEvent.reason");
  dart.setFieldSignature(html$.PresentationConnectionCloseEvent, () => ({
    __proto__: dart.getFields(html$.PresentationConnectionCloseEvent.__proto__),
    [$message]: dart.finalFieldType(core.String),
    [$reason]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("PresentationConnectionCloseEvent", html$.PresentationConnectionCloseEvent);
  html$.PresentationConnectionList = class PresentationConnectionList extends html$.EventTarget {
    get [$connections]() {
      return this.connections;
    }
  };
  dart.addTypeTests(html$.PresentationConnectionList);
  const connections = Symbol("PresentationConnectionList.connections");
  dart.setFieldSignature(html$.PresentationConnectionList, () => ({
    __proto__: dart.getFields(html$.PresentationConnectionList.__proto__),
    [$connections]: dart.finalFieldType(ListOfPresentationConnection())
  }));
  dart.registerExtension("PresentationConnectionList", html$.PresentationConnectionList);
  html$.PresentationReceiver = class PresentationReceiver extends _interceptors.Interceptor {
    get [$connectionList]() {
      return html$.promiseToFuture(html$.PresentationConnectionList, this.connectionList);
    }
  };
  dart.addTypeTests(html$.PresentationReceiver);
  dart.setGetterSignature(html$.PresentationReceiver, () => ({
    __proto__: dart.getGetters(html$.PresentationReceiver.__proto__),
    [$connectionList]: async.Future$(html$.PresentationConnectionList)
  }));
  dart.registerExtension("PresentationReceiver", html$.PresentationReceiver);
  html$.PresentationRequest = class PresentationRequest$ extends html$.EventTarget {
    static new(url_OR_urls) {
      if (typeof url_OR_urls == 'string') {
        return html$.PresentationRequest._create_1(url_OR_urls);
      }
      if (ListOfString().is(url_OR_urls)) {
        let urls_1 = html_common.convertDartToNative_StringArray(url_OR_urls);
        return html$.PresentationRequest._create_2(urls_1);
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    static _create_1(url_OR_urls) {
      return new PresentationRequest(url_OR_urls);
    }
    static _create_2(url_OR_urls) {
      return new PresentationRequest(url_OR_urls);
    }
    [$getAvailability]() {
      return html$.promiseToFuture(html$.PresentationAvailability, this.getAvailability());
    }
    [$reconnect](id) {
      return html$.promiseToFuture(html$.PresentationConnection, this.reconnect(id));
    }
    [$start]() {
      return html$.promiseToFuture(html$.PresentationConnection, this.start());
    }
  };
  dart.addTypeTests(html$.PresentationRequest);
  dart.setMethodSignature(html$.PresentationRequest, () => ({
    __proto__: dart.getMethods(html$.PresentationRequest.__proto__),
    [$getAvailability]: dart.fnType(async.Future$(html$.PresentationAvailability), []),
    [$reconnect]: dart.fnType(async.Future$(html$.PresentationConnection), [core.String]),
    [$start]: dart.fnType(async.Future$(html$.PresentationConnection), [])
  }));
  dart.registerExtension("PresentationRequest", html$.PresentationRequest);
  html$.ProcessingInstruction = class ProcessingInstruction extends html$.CharacterData {
    get [$sheet]() {
      return this.sheet;
    }
    get [$target]() {
      return this.target;
    }
  };
  dart.addTypeTests(html$.ProcessingInstruction);
  const sheet$ = Symbol("ProcessingInstruction.sheet");
  const target$5 = Symbol("ProcessingInstruction.target");
  dart.setFieldSignature(html$.ProcessingInstruction, () => ({
    __proto__: dart.getFields(html$.ProcessingInstruction.__proto__),
    [$sheet]: dart.finalFieldType(html$.StyleSheet),
    [$target]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("ProcessingInstruction", html$.ProcessingInstruction);
  html$.ProgressElement = class ProgressElement extends html$.HtmlElement {
    static new() {
      return html$.ProgressElement._check(html$.document[$createElement]("progress"));
    }
    static get supported() {
      return html$.Element.isTagSupported("progress");
    }
    get [$labels]() {
      return this.labels;
    }
    get [$max]() {
      return this.max;
    }
    set [$max](value) {
      this.max = value;
    }
    get [$position]() {
      return this.position;
    }
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
  };
  (html$.ProgressElement.created = function() {
    this[labels$2] = null;
    this[max$3] = null;
    this[position$0] = null;
    this[value$14] = null;
    html$.ProgressElement.__proto__.created.call(this);
  }).prototype = html$.ProgressElement.prototype;
  dart.addTypeTests(html$.ProgressElement);
  const labels$2 = Symbol("ProgressElement.labels");
  const max$3 = Symbol("ProgressElement.max");
  const position$0 = Symbol("ProgressElement.position");
  const value$14 = Symbol("ProgressElement.value");
  dart.setFieldSignature(html$.ProgressElement, () => ({
    __proto__: dart.getFields(html$.ProgressElement.__proto__),
    [$labels]: dart.finalFieldType(ListOfNode()),
    [$max]: dart.fieldType(core.num),
    [$position]: dart.finalFieldType(core.num),
    [$value]: dart.fieldType(core.num)
  }));
  dart.registerExtension("HTMLProgressElement", html$.ProgressElement);
  html$.ProgressEvent = class ProgressEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.ProgressEvent._create_1(type, eventInitDict_1);
      }
      return html$.ProgressEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new ProgressEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new ProgressEvent(type);
    }
    get [$lengthComputable]() {
      return this.lengthComputable;
    }
    get [$loaded]() {
      return this.loaded;
    }
    get [$total]() {
      return this.total;
    }
  };
  dart.addTypeTests(html$.ProgressEvent);
  const lengthComputable = Symbol("ProgressEvent.lengthComputable");
  const loaded = Symbol("ProgressEvent.loaded");
  const total$ = Symbol("ProgressEvent.total");
  dart.setFieldSignature(html$.ProgressEvent, () => ({
    __proto__: dart.getFields(html$.ProgressEvent.__proto__),
    [$lengthComputable]: dart.finalFieldType(core.bool),
    [$loaded]: dart.finalFieldType(core.int),
    [$total]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("ProgressEvent", html$.ProgressEvent);
  html$.PromiseRejectionEvent = class PromiseRejectionEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.PromiseRejectionEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new PromiseRejectionEvent(type, eventInitDict);
    }
    get [$promise]() {
      return html$.promiseToFuture(dart.dynamic, this.promise);
    }
    get [$reason]() {
      return this.reason;
    }
  };
  dart.addTypeTests(html$.PromiseRejectionEvent);
  const reason$1 = Symbol("PromiseRejectionEvent.reason");
  dart.setGetterSignature(html$.PromiseRejectionEvent, () => ({
    __proto__: dart.getGetters(html$.PromiseRejectionEvent.__proto__),
    [$promise]: async.Future
  }));
  dart.setFieldSignature(html$.PromiseRejectionEvent, () => ({
    __proto__: dart.getFields(html$.PromiseRejectionEvent.__proto__),
    [$reason]: dart.finalFieldType(core.Object)
  }));
  dart.registerExtension("PromiseRejectionEvent", html$.PromiseRejectionEvent);
  html$.PublicKeyCredential = class PublicKeyCredential extends html$.Credential {
    get [$rawId]() {
      return this.rawId;
    }
    get [$response]() {
      return this.response;
    }
  };
  dart.addTypeTests(html$.PublicKeyCredential);
  const rawId = Symbol("PublicKeyCredential.rawId");
  const response$ = Symbol("PublicKeyCredential.response");
  dart.setFieldSignature(html$.PublicKeyCredential, () => ({
    __proto__: dart.getFields(html$.PublicKeyCredential.__proto__),
    [$rawId]: dart.finalFieldType(typed_data.ByteBuffer),
    [$response]: dart.finalFieldType(html$.AuthenticatorResponse)
  }));
  dart.registerExtension("PublicKeyCredential", html$.PublicKeyCredential);
  html$.PushEvent = class PushEvent$ extends html$.ExtendableEvent {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.PushEvent._create_1(type, eventInitDict_1);
      }
      return html$.PushEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new PushEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new PushEvent(type);
    }
    get [$data]() {
      return this.data;
    }
  };
  dart.addTypeTests(html$.PushEvent);
  const data$7 = Symbol("PushEvent.data");
  dart.setFieldSignature(html$.PushEvent, () => ({
    __proto__: dart.getFields(html$.PushEvent.__proto__),
    [$data]: dart.finalFieldType(html$.PushMessageData)
  }));
  dart.registerExtension("PushEvent", html$.PushEvent);
  html$.PushManager = class PushManager extends _interceptors.Interceptor {
    [$getSubscription]() {
      return html$.promiseToFuture(html$.PushSubscription, this.getSubscription());
    }
    [$permissionState](options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(dart.dynamic, this.permissionState(options_dict));
    }
    [$subscribe](options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(html$.PushSubscription, this.subscribe(options_dict));
    }
  };
  dart.addTypeTests(html$.PushManager);
  dart.setMethodSignature(html$.PushManager, () => ({
    __proto__: dart.getMethods(html$.PushManager.__proto__),
    [$getSubscription]: dart.fnType(async.Future$(html$.PushSubscription), []),
    [$permissionState]: dart.fnType(async.Future, [], [core.Map]),
    [$subscribe]: dart.fnType(async.Future$(html$.PushSubscription), [], [core.Map])
  }));
  dart.defineLazy(html$.PushManager, {
    /*html$.PushManager.supportedContentEncodings*/get supportedContentEncodings() {
      return null;
    }
  });
  dart.registerExtension("PushManager", html$.PushManager);
  html$.PushMessageData = class PushMessageData extends _interceptors.Interceptor {
    [$arrayBuffer](...args) {
      return this.arrayBuffer.apply(this, args);
    }
    [$blob](...args) {
      return this.blob.apply(this, args);
    }
    [$json](...args) {
      return this.json.apply(this, args);
    }
    [$text](...args) {
      return this.text.apply(this, args);
    }
  };
  dart.addTypeTests(html$.PushMessageData);
  dart.setMethodSignature(html$.PushMessageData, () => ({
    __proto__: dart.getMethods(html$.PushMessageData.__proto__),
    [$arrayBuffer]: dart.fnType(typed_data.ByteBuffer, []),
    [$blob]: dart.fnType(html$.Blob, []),
    [$json]: dart.fnType(core.Object, []),
    [$text]: dart.fnType(core.String, [])
  }));
  dart.registerExtension("PushMessageData", html$.PushMessageData);
  html$.PushSubscription = class PushSubscription extends _interceptors.Interceptor {
    get [$endpoint]() {
      return this.endpoint;
    }
    get [$expirationTime]() {
      return this.expirationTime;
    }
    get [$options]() {
      return this.options;
    }
    [$getKey](...args) {
      return this.getKey.apply(this, args);
    }
    [$unsubscribe]() {
      return html$.promiseToFuture(core.bool, this.unsubscribe());
    }
  };
  dart.addTypeTests(html$.PushSubscription);
  const endpoint = Symbol("PushSubscription.endpoint");
  const expirationTime = Symbol("PushSubscription.expirationTime");
  const options$0 = Symbol("PushSubscription.options");
  dart.setMethodSignature(html$.PushSubscription, () => ({
    __proto__: dart.getMethods(html$.PushSubscription.__proto__),
    [$getKey]: dart.fnType(typed_data.ByteBuffer, [core.String]),
    [$unsubscribe]: dart.fnType(async.Future$(core.bool), [])
  }));
  dart.setFieldSignature(html$.PushSubscription, () => ({
    __proto__: dart.getFields(html$.PushSubscription.__proto__),
    [$endpoint]: dart.finalFieldType(core.String),
    [$expirationTime]: dart.finalFieldType(core.int),
    [$options]: dart.finalFieldType(html$.PushSubscriptionOptions)
  }));
  dart.registerExtension("PushSubscription", html$.PushSubscription);
  html$.PushSubscriptionOptions = class PushSubscriptionOptions extends _interceptors.Interceptor {
    get [$applicationServerKey]() {
      return this.applicationServerKey;
    }
    get [$userVisibleOnly]() {
      return this.userVisibleOnly;
    }
  };
  dart.addTypeTests(html$.PushSubscriptionOptions);
  const applicationServerKey = Symbol("PushSubscriptionOptions.applicationServerKey");
  const userVisibleOnly = Symbol("PushSubscriptionOptions.userVisibleOnly");
  dart.setFieldSignature(html$.PushSubscriptionOptions, () => ({
    __proto__: dart.getFields(html$.PushSubscriptionOptions.__proto__),
    [$applicationServerKey]: dart.finalFieldType(typed_data.ByteBuffer),
    [$userVisibleOnly]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("PushSubscriptionOptions", html$.PushSubscriptionOptions);
  html$.QuoteElement = class QuoteElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("q");
    }
    get [$cite]() {
      return this.cite;
    }
    set [$cite](value) {
      this.cite = value;
    }
  };
  (html$.QuoteElement.created = function() {
    this[cite$] = null;
    html$.QuoteElement.__proto__.created.call(this);
  }).prototype = html$.QuoteElement.prototype;
  dart.addTypeTests(html$.QuoteElement);
  const cite$ = Symbol("QuoteElement.cite");
  dart.setFieldSignature(html$.QuoteElement, () => ({
    __proto__: dart.getFields(html$.QuoteElement.__proto__),
    [$cite]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLQuoteElement", html$.QuoteElement);
  html$.Range = class Range extends _interceptors.Interceptor {
    static new() {
      return html$.document.createRange();
    }
    static fromPoint(point) {
      return html$.document[_caretRangeFromPoint](dart.asInt(point.x), dart.asInt(point.y));
    }
    get [$collapsed]() {
      return this.collapsed;
    }
    get [$commonAncestorContainer]() {
      return this.commonAncestorContainer;
    }
    get [$endContainer]() {
      return this.endContainer;
    }
    get [$endOffset]() {
      return this.endOffset;
    }
    get [$startContainer]() {
      return this.startContainer;
    }
    get [$startOffset]() {
      return this.startOffset;
    }
    [$cloneContents](...args) {
      return this.cloneContents.apply(this, args);
    }
    [$cloneRange](...args) {
      return this.cloneRange.apply(this, args);
    }
    [$collapse](...args) {
      return this.collapse.apply(this, args);
    }
    [$compareBoundaryPoints](...args) {
      return this.compareBoundaryPoints.apply(this, args);
    }
    [$comparePoint](...args) {
      return this.comparePoint.apply(this, args);
    }
    [$createContextualFragment](...args) {
      return this.createContextualFragment.apply(this, args);
    }
    [$deleteContents](...args) {
      return this.deleteContents.apply(this, args);
    }
    [$detach](...args) {
      return this.detach.apply(this, args);
    }
    [$expand](...args) {
      return this.expand.apply(this, args);
    }
    [$extractContents](...args) {
      return this.extractContents.apply(this, args);
    }
    [$getBoundingClientRect](...args) {
      return this.getBoundingClientRect.apply(this, args);
    }
    [_getClientRects](...args) {
      return this.getClientRects.apply(this, args);
    }
    [$insertNode](...args) {
      return this.insertNode.apply(this, args);
    }
    [$isPointInRange](...args) {
      return this.isPointInRange.apply(this, args);
    }
    [$selectNode](...args) {
      return this.selectNode.apply(this, args);
    }
    [$selectNodeContents](...args) {
      return this.selectNodeContents.apply(this, args);
    }
    [$setEnd](...args) {
      return this.setEnd.apply(this, args);
    }
    [$setEndAfter](...args) {
      return this.setEndAfter.apply(this, args);
    }
    [$setEndBefore](...args) {
      return this.setEndBefore.apply(this, args);
    }
    [$setStart](...args) {
      return this.setStart.apply(this, args);
    }
    [$setStartAfter](...args) {
      return this.setStartAfter.apply(this, args);
    }
    [$setStartBefore](...args) {
      return this.setStartBefore.apply(this, args);
    }
    [$surroundContents](...args) {
      return this.surroundContents.apply(this, args);
    }
    [$getClientRects]() {
      let value = this[_getClientRects]();
      let jsProto = value.prototype;
      if (jsProto == null) {
        value.prototype = Object.create(null);
      }
      _js_helper.applyExtension("DOMRectList", value);
      return value;
    }
    static get supportsCreateContextualFragment() {
      return "createContextualFragment" in window.Range.prototype;
    }
  };
  dart.addTypeTests(html$.Range);
  const collapsed = Symbol("Range.collapsed");
  const commonAncestorContainer = Symbol("Range.commonAncestorContainer");
  const endContainer = Symbol("Range.endContainer");
  const endOffset = Symbol("Range.endOffset");
  const startContainer = Symbol("Range.startContainer");
  const startOffset = Symbol("Range.startOffset");
  dart.setMethodSignature(html$.Range, () => ({
    __proto__: dart.getMethods(html$.Range.__proto__),
    [$cloneContents]: dart.fnType(html$.DocumentFragment, []),
    [$cloneRange]: dart.fnType(html$.Range, []),
    [$collapse]: dart.fnType(dart.void, [], [core.bool]),
    [$compareBoundaryPoints]: dart.fnType(core.int, [core.int, html$.Range]),
    [$comparePoint]: dart.fnType(core.int, [html$.Node, core.int]),
    [$createContextualFragment]: dart.fnType(html$.DocumentFragment, [core.String]),
    [$deleteContents]: dart.fnType(dart.void, []),
    [$detach]: dart.fnType(dart.void, []),
    [$expand]: dart.fnType(dart.void, [core.String]),
    [$extractContents]: dart.fnType(html$.DocumentFragment, []),
    [$getBoundingClientRect]: dart.fnType(math.Rectangle$(core.num), []),
    [_getClientRects]: dart.fnType(core.List$(math.Rectangle$(core.num)), []),
    [$insertNode]: dart.fnType(dart.void, [html$.Node]),
    [$isPointInRange]: dart.fnType(core.bool, [html$.Node, core.int]),
    [$selectNode]: dart.fnType(dart.void, [html$.Node]),
    [$selectNodeContents]: dart.fnType(dart.void, [html$.Node]),
    [$setEnd]: dart.fnType(dart.void, [html$.Node, core.int]),
    [$setEndAfter]: dart.fnType(dart.void, [html$.Node]),
    [$setEndBefore]: dart.fnType(dart.void, [html$.Node]),
    [$setStart]: dart.fnType(dart.void, [html$.Node, core.int]),
    [$setStartAfter]: dart.fnType(dart.void, [html$.Node]),
    [$setStartBefore]: dart.fnType(dart.void, [html$.Node]),
    [$surroundContents]: dart.fnType(dart.void, [html$.Node]),
    [$getClientRects]: dart.fnType(core.List$(math.Rectangle$(core.num)), [])
  }));
  dart.setFieldSignature(html$.Range, () => ({
    __proto__: dart.getFields(html$.Range.__proto__),
    [$collapsed]: dart.finalFieldType(core.bool),
    [$commonAncestorContainer]: dart.finalFieldType(html$.Node),
    [$endContainer]: dart.finalFieldType(html$.Node),
    [$endOffset]: dart.finalFieldType(core.int),
    [$startContainer]: dart.finalFieldType(html$.Node),
    [$startOffset]: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(html$.Range, {
    /*html$.Range.END_TO_END*/get END_TO_END() {
      return 2;
    },
    /*html$.Range.END_TO_START*/get END_TO_START() {
      return 3;
    },
    /*html$.Range.START_TO_END*/get START_TO_END() {
      return 1;
    },
    /*html$.Range.START_TO_START*/get START_TO_START() {
      return 0;
    }
  });
  dart.registerExtension("Range", html$.Range);
  html$.RelatedApplication = class RelatedApplication extends _interceptors.Interceptor {
    get [$id]() {
      return this.id;
    }
    get [$platform]() {
      return this.platform;
    }
    get [$url]() {
      return this.url;
    }
  };
  dart.addTypeTests(html$.RelatedApplication);
  const id$11 = Symbol("RelatedApplication.id");
  const platform$0 = Symbol("RelatedApplication.platform");
  const url$3 = Symbol("RelatedApplication.url");
  dart.setFieldSignature(html$.RelatedApplication, () => ({
    __proto__: dart.getFields(html$.RelatedApplication.__proto__),
    [$id]: dart.finalFieldType(core.String),
    [$platform]: dart.finalFieldType(core.String),
    [$url]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("RelatedApplication", html$.RelatedApplication);
  html$.RelativeOrientationSensor = class RelativeOrientationSensor$ extends html$.OrientationSensor {
    static new(sensorOptions) {
      if (sensorOptions === void 0) sensorOptions = null;
      if (sensorOptions != null) {
        let sensorOptions_1 = html_common.convertDartToNative_Dictionary(sensorOptions);
        return html$.RelativeOrientationSensor._create_1(sensorOptions_1);
      }
      return html$.RelativeOrientationSensor._create_2();
    }
    static _create_1(sensorOptions) {
      return new RelativeOrientationSensor(sensorOptions);
    }
    static _create_2() {
      return new RelativeOrientationSensor();
    }
  };
  dart.addTypeTests(html$.RelativeOrientationSensor);
  dart.registerExtension("RelativeOrientationSensor", html$.RelativeOrientationSensor);
  html$.RemotePlayback = class RemotePlayback extends html$.EventTarget {
    get [$state]() {
      return this.state;
    }
    [$cancelWatchAvailability](id) {
      if (id === void 0) id = null;
      return html$.promiseToFuture(dart.dynamic, this.cancelWatchAvailability(id));
    }
    [$prompt]() {
      return html$.promiseToFuture(dart.dynamic, this.prompt());
    }
    [$watchAvailability](callback) {
      return html$.promiseToFuture(core.int, this.watchAvailability(callback));
    }
  };
  dart.addTypeTests(html$.RemotePlayback);
  const state$4 = Symbol("RemotePlayback.state");
  dart.setMethodSignature(html$.RemotePlayback, () => ({
    __proto__: dart.getMethods(html$.RemotePlayback.__proto__),
    [$cancelWatchAvailability]: dart.fnType(async.Future, [], [core.int]),
    [$prompt]: dart.fnType(async.Future, []),
    [$watchAvailability]: dart.fnType(async.Future$(core.int), [dart.fnType(dart.void, [core.bool])])
  }));
  dart.setFieldSignature(html$.RemotePlayback, () => ({
    __proto__: dart.getFields(html$.RemotePlayback.__proto__),
    [$state]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("RemotePlayback", html$.RemotePlayback);
  html$.ReportingObserver = class ReportingObserver$ extends _interceptors.Interceptor {
    static new(callback) {
      return html$.ReportingObserver._create_1(callback);
    }
    static _create_1(callback) {
      return new ReportingObserver(callback);
    }
    [$disconnect](...args) {
      return this.disconnect.apply(this, args);
    }
    [$observe](...args) {
      return this.observe.apply(this, args);
    }
  };
  dart.addTypeTests(html$.ReportingObserver);
  dart.setMethodSignature(html$.ReportingObserver, () => ({
    __proto__: dart.getMethods(html$.ReportingObserver.__proto__),
    [$disconnect]: dart.fnType(dart.void, []),
    [$observe]: dart.fnType(dart.void, [])
  }));
  dart.registerExtension("ReportingObserver", html$.ReportingObserver);
  html$.ResizeObserver = class ResizeObserver$ extends _interceptors.Interceptor {
    static new(callback) {
      return html$.ResizeObserver._create_1(callback);
    }
    static _create_1(callback) {
      return new ResizeObserver(callback);
    }
    [$disconnect](...args) {
      return this.disconnect.apply(this, args);
    }
    [$observe](...args) {
      return this.observe.apply(this, args);
    }
    [$unobserve](...args) {
      return this.unobserve.apply(this, args);
    }
  };
  dart.addTypeTests(html$.ResizeObserver);
  dart.setMethodSignature(html$.ResizeObserver, () => ({
    __proto__: dart.getMethods(html$.ResizeObserver.__proto__),
    [$disconnect]: dart.fnType(dart.void, []),
    [$observe]: dart.fnType(dart.void, [html$.Element]),
    [$unobserve]: dart.fnType(dart.void, [html$.Element])
  }));
  dart.registerExtension("ResizeObserver", html$.ResizeObserver);
  html$.ResizeObserverEntry = class ResizeObserverEntry extends _interceptors.Interceptor {
    get [$contentRect]() {
      return this.contentRect;
    }
    get [$target]() {
      return this.target;
    }
  };
  dart.addTypeTests(html$.ResizeObserverEntry);
  const contentRect = Symbol("ResizeObserverEntry.contentRect");
  const target$6 = Symbol("ResizeObserverEntry.target");
  dart.setFieldSignature(html$.ResizeObserverEntry, () => ({
    __proto__: dart.getFields(html$.ResizeObserverEntry.__proto__),
    [$contentRect]: dart.finalFieldType(html$.DomRectReadOnly),
    [$target]: dart.finalFieldType(html$.Element)
  }));
  dart.registerExtension("ResizeObserverEntry", html$.ResizeObserverEntry);
  html$.RtcCertificate = class RtcCertificate extends _interceptors.Interceptor {
    get [$expires]() {
      return this.expires;
    }
    [$getFingerprints](...args) {
      return this.getFingerprints.apply(this, args);
    }
  };
  dart.addTypeTests(html$.RtcCertificate);
  const expires = Symbol("RtcCertificate.expires");
  dart.setMethodSignature(html$.RtcCertificate, () => ({
    __proto__: dart.getMethods(html$.RtcCertificate.__proto__),
    [$getFingerprints]: dart.fnType(core.List$(core.Map), [])
  }));
  dart.setFieldSignature(html$.RtcCertificate, () => ({
    __proto__: dart.getFields(html$.RtcCertificate.__proto__),
    [$expires]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("RTCCertificate", html$.RtcCertificate);
  html$.RtcDataChannel = class RtcDataChannel extends html$.EventTarget {
    get [$binaryType]() {
      return this.binaryType;
    }
    set [$binaryType](value) {
      this.binaryType = value;
    }
    get [$bufferedAmount]() {
      return this.bufferedAmount;
    }
    get [$bufferedAmountLowThreshold]() {
      return this.bufferedAmountLowThreshold;
    }
    set [$bufferedAmountLowThreshold](value) {
      this.bufferedAmountLowThreshold = value;
    }
    get [$id]() {
      return this.id;
    }
    get [$label]() {
      return this.label;
    }
    get [$maxRetransmitTime]() {
      return this.maxRetransmitTime;
    }
    get [$maxRetransmits]() {
      return this.maxRetransmits;
    }
    get [$negotiated]() {
      return this.negotiated;
    }
    get [$ordered]() {
      return this.ordered;
    }
    get [$protocol]() {
      return this.protocol;
    }
    get [$readyState]() {
      return this.readyState;
    }
    get [$reliable]() {
      return this.reliable;
    }
    [$close](...args) {
      return this.close.apply(this, args);
    }
    [$send](...args) {
      return this.send.apply(this, args);
    }
    [$sendBlob](...args) {
      return this.send.apply(this, args);
    }
    [$sendByteBuffer](...args) {
      return this.send.apply(this, args);
    }
    [$sendString](...args) {
      return this.send.apply(this, args);
    }
    [$sendTypedData](...args) {
      return this.send.apply(this, args);
    }
    get [$onClose]() {
      return html$.RtcDataChannel.closeEvent.forTarget(this);
    }
    get [$onError]() {
      return html$.RtcDataChannel.errorEvent.forTarget(this);
    }
    get [$onMessage]() {
      return html$.RtcDataChannel.messageEvent.forTarget(this);
    }
    get [$onOpen]() {
      return html$.RtcDataChannel.openEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.RtcDataChannel);
  const binaryType$ = Symbol("RtcDataChannel.binaryType");
  const bufferedAmount = Symbol("RtcDataChannel.bufferedAmount");
  const bufferedAmountLowThreshold = Symbol("RtcDataChannel.bufferedAmountLowThreshold");
  const id$12 = Symbol("RtcDataChannel.id");
  const label$3 = Symbol("RtcDataChannel.label");
  const maxRetransmitTime = Symbol("RtcDataChannel.maxRetransmitTime");
  const maxRetransmits = Symbol("RtcDataChannel.maxRetransmits");
  const negotiated = Symbol("RtcDataChannel.negotiated");
  const ordered = Symbol("RtcDataChannel.ordered");
  const protocol$3 = Symbol("RtcDataChannel.protocol");
  const readyState$7 = Symbol("RtcDataChannel.readyState");
  const reliable = Symbol("RtcDataChannel.reliable");
  dart.setMethodSignature(html$.RtcDataChannel, () => ({
    __proto__: dart.getMethods(html$.RtcDataChannel.__proto__),
    [$close]: dart.fnType(dart.void, []),
    [$send]: dart.fnType(dart.void, [dart.dynamic]),
    [$sendBlob]: dart.fnType(dart.void, [html$.Blob]),
    [$sendByteBuffer]: dart.fnType(dart.void, [typed_data.ByteBuffer]),
    [$sendString]: dart.fnType(dart.void, [core.String]),
    [$sendTypedData]: dart.fnType(dart.void, [typed_data.TypedData])
  }));
  dart.setGetterSignature(html$.RtcDataChannel, () => ({
    __proto__: dart.getGetters(html$.RtcDataChannel.__proto__),
    [$onClose]: async.Stream$(html$.Event),
    [$onError]: async.Stream$(html$.Event),
    [$onMessage]: async.Stream$(html$.MessageEvent),
    [$onOpen]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.RtcDataChannel, () => ({
    __proto__: dart.getFields(html$.RtcDataChannel.__proto__),
    [$binaryType]: dart.fieldType(core.String),
    [$bufferedAmount]: dart.finalFieldType(core.int),
    [$bufferedAmountLowThreshold]: dart.fieldType(core.int),
    [$id]: dart.finalFieldType(core.int),
    [$label]: dart.finalFieldType(core.String),
    [$maxRetransmitTime]: dart.finalFieldType(core.int),
    [$maxRetransmits]: dart.finalFieldType(core.int),
    [$negotiated]: dart.finalFieldType(core.bool),
    [$ordered]: dart.finalFieldType(core.bool),
    [$protocol]: dart.finalFieldType(core.String),
    [$readyState]: dart.finalFieldType(core.String),
    [$reliable]: dart.finalFieldType(core.bool)
  }));
  dart.defineLazy(html$.RtcDataChannel, {
    /*html$.RtcDataChannel.closeEvent*/get closeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("close"));
    },
    /*html$.RtcDataChannel.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    },
    /*html$.RtcDataChannel.messageEvent*/get messageEvent() {
      return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
    },
    /*html$.RtcDataChannel.openEvent*/get openEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("open"));
    }
  });
  dart.registerExtension("RTCDataChannel", html$.RtcDataChannel);
  dart.registerExtension("DataChannel", html$.RtcDataChannel);
  html$.RtcDataChannelEvent = class RtcDataChannelEvent extends html$.Event {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.RtcDataChannelEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new RTCDataChannelEvent(type, eventInitDict);
    }
    get [$channel]() {
      return this.channel;
    }
  };
  dart.addTypeTests(html$.RtcDataChannelEvent);
  const channel = Symbol("RtcDataChannelEvent.channel");
  dart.setFieldSignature(html$.RtcDataChannelEvent, () => ({
    __proto__: dart.getFields(html$.RtcDataChannelEvent.__proto__),
    [$channel]: dart.finalFieldType(html$.RtcDataChannel)
  }));
  dart.registerExtension("RTCDataChannelEvent", html$.RtcDataChannelEvent);
  html$.RtcDtmfSender = class RtcDtmfSender extends html$.EventTarget {
    get [$canInsertDtmf]() {
      return this.canInsertDTMF;
    }
    get [$duration]() {
      return this.duration;
    }
    get [$interToneGap]() {
      return this.interToneGap;
    }
    get [$toneBuffer]() {
      return this.toneBuffer;
    }
    get [$track]() {
      return this.track;
    }
    [$insertDtmf](...args) {
      return this.insertDTMF.apply(this, args);
    }
    get [$onToneChange]() {
      return html$.RtcDtmfSender.toneChangeEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.RtcDtmfSender);
  const canInsertDtmf = Symbol("RtcDtmfSender.canInsertDtmf");
  const duration$4 = Symbol("RtcDtmfSender.duration");
  const interToneGap = Symbol("RtcDtmfSender.interToneGap");
  const toneBuffer = Symbol("RtcDtmfSender.toneBuffer");
  const track$0 = Symbol("RtcDtmfSender.track");
  dart.setMethodSignature(html$.RtcDtmfSender, () => ({
    __proto__: dart.getMethods(html$.RtcDtmfSender.__proto__),
    [$insertDtmf]: dart.fnType(dart.void, [core.String], [core.int, core.int])
  }));
  dart.setGetterSignature(html$.RtcDtmfSender, () => ({
    __proto__: dart.getGetters(html$.RtcDtmfSender.__proto__),
    [$onToneChange]: async.Stream$(html$.RtcDtmfToneChangeEvent)
  }));
  dart.setFieldSignature(html$.RtcDtmfSender, () => ({
    __proto__: dart.getFields(html$.RtcDtmfSender.__proto__),
    [$canInsertDtmf]: dart.finalFieldType(core.bool),
    [$duration]: dart.finalFieldType(core.int),
    [$interToneGap]: dart.finalFieldType(core.int),
    [$toneBuffer]: dart.finalFieldType(core.String),
    [$track]: dart.finalFieldType(html$.MediaStreamTrack)
  }));
  dart.defineLazy(html$.RtcDtmfSender, {
    /*html$.RtcDtmfSender.toneChangeEvent*/get toneChangeEvent() {
      return dart.const(new (EventStreamProviderOfRtcDtmfToneChangeEvent()).new("tonechange"));
    }
  });
  dart.registerExtension("RTCDTMFSender", html$.RtcDtmfSender);
  html$.RtcDtmfToneChangeEvent = class RtcDtmfToneChangeEvent extends html$.Event {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.RtcDtmfToneChangeEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new RTCDTMFToneChangeEvent(type, eventInitDict);
    }
    get [$tone]() {
      return this.tone;
    }
  };
  dart.addTypeTests(html$.RtcDtmfToneChangeEvent);
  const tone = Symbol("RtcDtmfToneChangeEvent.tone");
  dart.setFieldSignature(html$.RtcDtmfToneChangeEvent, () => ({
    __proto__: dart.getFields(html$.RtcDtmfToneChangeEvent.__proto__),
    [$tone]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("RTCDTMFToneChangeEvent", html$.RtcDtmfToneChangeEvent);
  html$.RtcIceCandidate = class RtcIceCandidate extends _interceptors.Interceptor {
    static new(dictionary) {
      let constructorName = window[dart.test(html_common.Device.isFirefox) ? dart.str(html_common.Device.propertyPrefix) + "RTCIceCandidate" : "RTCIceCandidate"];
      return new constructorName(html_common.convertDartToNative_SerializedScriptValue(dictionary));
    }
    get [$candidate]() {
      return this.candidate;
    }
    set [$candidate](value) {
      this.candidate = value;
    }
    get [$sdpMLineIndex]() {
      return this.sdpMLineIndex;
    }
    set [$sdpMLineIndex](value) {
      this.sdpMLineIndex = value;
    }
    get [$sdpMid]() {
      return this.sdpMid;
    }
    set [$sdpMid](value) {
      this.sdpMid = value;
    }
  };
  dart.addTypeTests(html$.RtcIceCandidate);
  const candidate = Symbol("RtcIceCandidate.candidate");
  const sdpMLineIndex = Symbol("RtcIceCandidate.sdpMLineIndex");
  const sdpMid = Symbol("RtcIceCandidate.sdpMid");
  dart.setFieldSignature(html$.RtcIceCandidate, () => ({
    __proto__: dart.getFields(html$.RtcIceCandidate.__proto__),
    [$candidate]: dart.fieldType(core.String),
    [$sdpMLineIndex]: dart.fieldType(core.int),
    [$sdpMid]: dart.fieldType(core.String)
  }));
  dart.registerExtension("RTCIceCandidate", html$.RtcIceCandidate);
  dart.registerExtension("mozRTCIceCandidate", html$.RtcIceCandidate);
  const _get_timestamp = Symbol('_get_timestamp');
  html$.RtcLegacyStatsReport = class RtcLegacyStatsReport extends _interceptors.Interceptor {
    get [$id]() {
      return this.id;
    }
    get [$timestamp]() {
      return html_common.convertNativeToDart_DateTime(this[_get_timestamp]);
    }
    get [_get_timestamp]() {
      return this.timestamp;
    }
    get [$type]() {
      return this.type;
    }
    [$names](...args) {
      return this.names.apply(this, args);
    }
    [$stat](...args) {
      return this.stat.apply(this, args);
    }
  };
  dart.addTypeTests(html$.RtcLegacyStatsReport);
  const id$13 = Symbol("RtcLegacyStatsReport.id");
  const type$26 = Symbol("RtcLegacyStatsReport.type");
  dart.setMethodSignature(html$.RtcLegacyStatsReport, () => ({
    __proto__: dart.getMethods(html$.RtcLegacyStatsReport.__proto__),
    [$names]: dart.fnType(core.List$(core.String), []),
    [$stat]: dart.fnType(core.String, [core.String])
  }));
  dart.setGetterSignature(html$.RtcLegacyStatsReport, () => ({
    __proto__: dart.getGetters(html$.RtcLegacyStatsReport.__proto__),
    [$timestamp]: core.DateTime
  }));
  dart.setFieldSignature(html$.RtcLegacyStatsReport, () => ({
    __proto__: dart.getFields(html$.RtcLegacyStatsReport.__proto__),
    [$id]: dart.finalFieldType(core.String),
    [_get_timestamp]: dart.finalFieldType(dart.dynamic),
    [$type]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("RTCLegacyStatsReport", html$.RtcLegacyStatsReport);
  const _getStats = Symbol('_getStats');
  const _addStream_1 = Symbol('_addStream_1');
  const _addStream_2 = Symbol('_addStream_2');
  const _createDataChannel_1 = Symbol('_createDataChannel_1');
  const _createDataChannel_2 = Symbol('_createDataChannel_2');
  const _setConfiguration_1 = Symbol('_setConfiguration_1');
  html$.RtcPeerConnection = class RtcPeerConnection extends html$.EventTarget {
    static new(rtcIceServers, mediaConstraints) {
      if (mediaConstraints === void 0) mediaConstraints = null;
      let constructorName = window[dart.str(html_common.Device.propertyPrefix) + "RTCPeerConnection"];
      if (mediaConstraints != null) {
        return new constructorName(html_common.convertDartToNative_SerializedScriptValue(rtcIceServers), html_common.convertDartToNative_SerializedScriptValue(mediaConstraints));
      } else {
        return new constructorName(html_common.convertDartToNative_SerializedScriptValue(rtcIceServers));
      }
    }
    static get supported() {
      try {
        html$.RtcPeerConnection.new(new _js_helper.LinkedMap.from(["iceServers", JSArrayOfMapOfString$String().of([new (IdentityMapOfString$String()).from(["url", "stun:localhost"])])]));
        return true;
      } catch (e) {
        let _ = dart.getThrown(e);
        return false;
      }
      return false;
    }
    [$getLegacyStats](selector) {
      if (selector === void 0) selector = null;
      let completer = CompleterOfRtcStatsResponse().new();
      this[_getStats](dart.fn(value => {
        completer.complete(value);
      }, RtcStatsResponseToNull()), selector);
      return completer.future;
    }
    [_getStats](...args) {
      return this.getStats.apply(this, args);
    }
    static generateCertificate(keygenAlgorithm) {
      return generateCertificate(keygenAlgorithm);
    }
    get [$iceConnectionState]() {
      return this.iceConnectionState;
    }
    get [$iceGatheringState]() {
      return this.iceGatheringState;
    }
    get [$localDescription]() {
      return this.localDescription;
    }
    get [$remoteDescription]() {
      return this.remoteDescription;
    }
    get [$signalingState]() {
      return this.signalingState;
    }
    [$addIceCandidate](candidate, successCallback, failureCallback) {
      if (successCallback === void 0) successCallback = null;
      if (failureCallback === void 0) failureCallback = null;
      return html$.promiseToFuture(dart.dynamic, this.addIceCandidate(candidate, successCallback, failureCallback));
    }
    [$addStream](stream, mediaConstraints) {
      if (mediaConstraints === void 0) mediaConstraints = null;
      if (mediaConstraints != null) {
        let mediaConstraints_1 = html_common.convertDartToNative_Dictionary(mediaConstraints);
        this[_addStream_1](stream, mediaConstraints_1);
        return;
      }
      this[_addStream_2](stream);
      return;
    }
    [_addStream_1](...args) {
      return this.addStream.apply(this, args);
    }
    [_addStream_2](...args) {
      return this.addStream.apply(this, args);
    }
    [$addTrack](...args) {
      return this.addTrack.apply(this, args);
    }
    [$close](...args) {
      return this.close.apply(this, args);
    }
    [$createAnswer](options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(html$.RtcSessionDescription, this.createAnswer(options_dict));
    }
    [$createDtmfSender](...args) {
      return this.createDTMFSender.apply(this, args);
    }
    [$createDataChannel](label, dataChannelDict) {
      if (dataChannelDict === void 0) dataChannelDict = null;
      if (dataChannelDict != null) {
        let dataChannelDict_1 = html_common.convertDartToNative_Dictionary(dataChannelDict);
        return this[_createDataChannel_1](label, dataChannelDict_1);
      }
      return this[_createDataChannel_2](label);
    }
    [_createDataChannel_1](...args) {
      return this.createDataChannel.apply(this, args);
    }
    [_createDataChannel_2](...args) {
      return this.createDataChannel.apply(this, args);
    }
    [$createOffer](options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(html$.RtcSessionDescription, this.createOffer(options_dict));
    }
    [$getLocalStreams](...args) {
      return this.getLocalStreams.apply(this, args);
    }
    [$getReceivers](...args) {
      return this.getReceivers.apply(this, args);
    }
    [$getRemoteStreams](...args) {
      return this.getRemoteStreams.apply(this, args);
    }
    [$getSenders](...args) {
      return this.getSenders.apply(this, args);
    }
    [$getStats]() {
      return html$.promiseToFuture(html$.RtcStatsReport, this.getStats());
    }
    [$removeStream](...args) {
      return this.removeStream.apply(this, args);
    }
    [$removeTrack](...args) {
      return this.removeTrack.apply(this, args);
    }
    [$setConfiguration](configuration) {
      let configuration_1 = html_common.convertDartToNative_Dictionary(configuration);
      this[_setConfiguration_1](configuration_1);
      return;
    }
    [_setConfiguration_1](...args) {
      return this.setConfiguration.apply(this, args);
    }
    [$setLocalDescription](description) {
      let description_dict = html_common.convertDartToNative_Dictionary(description);
      return html$.promiseToFuture(dart.dynamic, this.setLocalDescription(description_dict));
    }
    [$setRemoteDescription](description) {
      let description_dict = html_common.convertDartToNative_Dictionary(description);
      return html$.promiseToFuture(dart.dynamic, this.setRemoteDescription(description_dict));
    }
    get [$onAddStream]() {
      return html$.RtcPeerConnection.addStreamEvent.forTarget(this);
    }
    get [$onDataChannel]() {
      return html$.RtcPeerConnection.dataChannelEvent.forTarget(this);
    }
    get [$onIceCandidate]() {
      return html$.RtcPeerConnection.iceCandidateEvent.forTarget(this);
    }
    get [$onIceConnectionStateChange]() {
      return html$.RtcPeerConnection.iceConnectionStateChangeEvent.forTarget(this);
    }
    get [$onNegotiationNeeded]() {
      return html$.RtcPeerConnection.negotiationNeededEvent.forTarget(this);
    }
    get [$onRemoveStream]() {
      return html$.RtcPeerConnection.removeStreamEvent.forTarget(this);
    }
    get [$onSignalingStateChange]() {
      return html$.RtcPeerConnection.signalingStateChangeEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.RtcPeerConnection);
  const iceConnectionState = Symbol("RtcPeerConnection.iceConnectionState");
  const iceGatheringState = Symbol("RtcPeerConnection.iceGatheringState");
  const localDescription = Symbol("RtcPeerConnection.localDescription");
  const remoteDescription = Symbol("RtcPeerConnection.remoteDescription");
  const signalingState = Symbol("RtcPeerConnection.signalingState");
  dart.setMethodSignature(html$.RtcPeerConnection, () => ({
    __proto__: dart.getMethods(html$.RtcPeerConnection.__proto__),
    [$getLegacyStats]: dart.fnType(async.Future$(html$.RtcStatsResponse), [], [html$.MediaStreamTrack]),
    [_getStats]: dart.fnType(async.Future, [], [dart.fnType(dart.void, [html$.RtcStatsResponse]), html$.MediaStreamTrack]),
    [$addIceCandidate]: dart.fnType(async.Future, [core.Object], [dart.fnType(dart.void, []), dart.fnType(dart.void, [html$.DomException])]),
    [$addStream]: dart.fnType(dart.void, [html$.MediaStream], [core.Map]),
    [_addStream_1]: dart.fnType(dart.void, [html$.MediaStream, dart.dynamic]),
    [_addStream_2]: dart.fnType(dart.void, [html$.MediaStream]),
    [$addTrack]: dart.fnType(html$.RtcRtpSender, [html$.MediaStreamTrack, html$.MediaStream]),
    [$close]: dart.fnType(dart.void, []),
    [$createAnswer]: dart.fnType(async.Future$(html$.RtcSessionDescription), [], [core.Map]),
    [$createDtmfSender]: dart.fnType(html$.RtcDtmfSender, [html$.MediaStreamTrack]),
    [$createDataChannel]: dart.fnType(html$.RtcDataChannel, [core.String], [core.Map]),
    [_createDataChannel_1]: dart.fnType(html$.RtcDataChannel, [dart.dynamic, dart.dynamic]),
    [_createDataChannel_2]: dart.fnType(html$.RtcDataChannel, [dart.dynamic]),
    [$createOffer]: dart.fnType(async.Future$(html$.RtcSessionDescription), [], [core.Map]),
    [$getLocalStreams]: dart.fnType(core.List$(html$.MediaStream), []),
    [$getReceivers]: dart.fnType(core.List$(html$.RtcRtpReceiver), []),
    [$getRemoteStreams]: dart.fnType(core.List$(html$.MediaStream), []),
    [$getSenders]: dart.fnType(core.List$(html$.RtcRtpSender), []),
    [$getStats]: dart.fnType(async.Future$(html$.RtcStatsReport), []),
    [$removeStream]: dart.fnType(dart.void, [html$.MediaStream]),
    [$removeTrack]: dart.fnType(dart.void, [html$.RtcRtpSender]),
    [$setConfiguration]: dart.fnType(dart.void, [core.Map]),
    [_setConfiguration_1]: dart.fnType(dart.void, [dart.dynamic]),
    [$setLocalDescription]: dart.fnType(async.Future, [core.Map]),
    [$setRemoteDescription]: dart.fnType(async.Future, [core.Map])
  }));
  dart.setGetterSignature(html$.RtcPeerConnection, () => ({
    __proto__: dart.getGetters(html$.RtcPeerConnection.__proto__),
    [$onAddStream]: async.Stream$(html$.MediaStreamEvent),
    [$onDataChannel]: async.Stream$(html$.RtcDataChannelEvent),
    [$onIceCandidate]: async.Stream$(html$.RtcPeerConnectionIceEvent),
    [$onIceConnectionStateChange]: async.Stream$(html$.Event),
    [$onNegotiationNeeded]: async.Stream$(html$.Event),
    [$onRemoveStream]: async.Stream$(html$.MediaStreamEvent),
    [$onSignalingStateChange]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.RtcPeerConnection, () => ({
    __proto__: dart.getFields(html$.RtcPeerConnection.__proto__),
    [$iceConnectionState]: dart.finalFieldType(core.String),
    [$iceGatheringState]: dart.finalFieldType(core.String),
    [$localDescription]: dart.finalFieldType(html$.RtcSessionDescription),
    [$remoteDescription]: dart.finalFieldType(html$.RtcSessionDescription),
    [$signalingState]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.RtcPeerConnection, {
    /*html$.RtcPeerConnection.addStreamEvent*/get addStreamEvent() {
      return dart.const(new (EventStreamProviderOfMediaStreamEvent()).new("addstream"));
    },
    /*html$.RtcPeerConnection.dataChannelEvent*/get dataChannelEvent() {
      return dart.const(new (EventStreamProviderOfRtcDataChannelEvent()).new("datachannel"));
    },
    /*html$.RtcPeerConnection.iceCandidateEvent*/get iceCandidateEvent() {
      return dart.const(new (EventStreamProviderOfRtcPeerConnectionIceEvent()).new("icecandidate"));
    },
    /*html$.RtcPeerConnection.iceConnectionStateChangeEvent*/get iceConnectionStateChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("iceconnectionstatechange"));
    },
    /*html$.RtcPeerConnection.negotiationNeededEvent*/get negotiationNeededEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("negotiationneeded"));
    },
    /*html$.RtcPeerConnection.removeStreamEvent*/get removeStreamEvent() {
      return dart.const(new (EventStreamProviderOfMediaStreamEvent()).new("removestream"));
    },
    /*html$.RtcPeerConnection.signalingStateChangeEvent*/get signalingStateChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("signalingstatechange"));
    }
  });
  dart.registerExtension("RTCPeerConnection", html$.RtcPeerConnection);
  dart.registerExtension("webkitRTCPeerConnection", html$.RtcPeerConnection);
  dart.registerExtension("mozRTCPeerConnection", html$.RtcPeerConnection);
  html$.RtcPeerConnectionIceEvent = class RtcPeerConnectionIceEvent extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.RtcPeerConnectionIceEvent._create_1(type, eventInitDict_1);
      }
      return html$.RtcPeerConnectionIceEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new RTCPeerConnectionIceEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new RTCPeerConnectionIceEvent(type);
    }
    get [$candidate]() {
      return this.candidate;
    }
  };
  dart.addTypeTests(html$.RtcPeerConnectionIceEvent);
  const candidate$ = Symbol("RtcPeerConnectionIceEvent.candidate");
  dart.setFieldSignature(html$.RtcPeerConnectionIceEvent, () => ({
    __proto__: dart.getFields(html$.RtcPeerConnectionIceEvent.__proto__),
    [$candidate]: dart.finalFieldType(html$.RtcIceCandidate)
  }));
  dart.registerExtension("RTCPeerConnectionIceEvent", html$.RtcPeerConnectionIceEvent);
  html$.RtcRtpContributingSource = class RtcRtpContributingSource extends _interceptors.Interceptor {
    get [$source]() {
      return this.source;
    }
    get [$timestamp]() {
      return this.timestamp;
    }
  };
  dart.addTypeTests(html$.RtcRtpContributingSource);
  const source$2 = Symbol("RtcRtpContributingSource.source");
  const timestamp$2 = Symbol("RtcRtpContributingSource.timestamp");
  dart.setFieldSignature(html$.RtcRtpContributingSource, () => ({
    __proto__: dart.getFields(html$.RtcRtpContributingSource.__proto__),
    [$source]: dart.finalFieldType(core.int),
    [$timestamp]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("RTCRtpContributingSource", html$.RtcRtpContributingSource);
  html$.RtcRtpReceiver = class RtcRtpReceiver extends _interceptors.Interceptor {
    get [$track]() {
      return this.track;
    }
    [$getContributingSources](...args) {
      return this.getContributingSources.apply(this, args);
    }
  };
  dart.addTypeTests(html$.RtcRtpReceiver);
  const track$1 = Symbol("RtcRtpReceiver.track");
  dart.setMethodSignature(html$.RtcRtpReceiver, () => ({
    __proto__: dart.getMethods(html$.RtcRtpReceiver.__proto__),
    [$getContributingSources]: dart.fnType(core.List$(html$.RtcRtpContributingSource), [])
  }));
  dart.setFieldSignature(html$.RtcRtpReceiver, () => ({
    __proto__: dart.getFields(html$.RtcRtpReceiver.__proto__),
    [$track]: dart.finalFieldType(html$.MediaStreamTrack)
  }));
  dart.registerExtension("RTCRtpReceiver", html$.RtcRtpReceiver);
  html$.RtcRtpSender = class RtcRtpSender extends _interceptors.Interceptor {
    get [$track]() {
      return this.track;
    }
  };
  dart.addTypeTests(html$.RtcRtpSender);
  const track$2 = Symbol("RtcRtpSender.track");
  dart.setFieldSignature(html$.RtcRtpSender, () => ({
    __proto__: dart.getFields(html$.RtcRtpSender.__proto__),
    [$track]: dart.finalFieldType(html$.MediaStreamTrack)
  }));
  dart.registerExtension("RTCRtpSender", html$.RtcRtpSender);
  html$.RtcSessionDescription = class RtcSessionDescription extends _interceptors.Interceptor {
    static new(dictionary) {
      let constructorName = window[dart.test(html_common.Device.isFirefox) ? dart.str(html_common.Device.propertyPrefix) + "RTCSessionDescription" : "RTCSessionDescription"];
      return new constructorName(html_common.convertDartToNative_SerializedScriptValue(dictionary));
    }
    get [$sdp]() {
      return this.sdp;
    }
    set [$sdp](value) {
      this.sdp = value;
    }
    get [$type]() {
      return this.type;
    }
    set [$type](value) {
      this.type = value;
    }
  };
  dart.addTypeTests(html$.RtcSessionDescription);
  const sdp = Symbol("RtcSessionDescription.sdp");
  const type$27 = Symbol("RtcSessionDescription.type");
  dart.setFieldSignature(html$.RtcSessionDescription, () => ({
    __proto__: dart.getFields(html$.RtcSessionDescription.__proto__),
    [$sdp]: dart.fieldType(core.String),
    [$type]: dart.fieldType(core.String)
  }));
  dart.registerExtension("RTCSessionDescription", html$.RtcSessionDescription);
  dart.registerExtension("mozRTCSessionDescription", html$.RtcSessionDescription);
  const Interceptor_MapMixin$$0 = class Interceptor_MapMixin extends _interceptors.Interceptor {};
  (Interceptor_MapMixin$$0.new = function() {
    Interceptor_MapMixin$$0.__proto__.new.call(this);
  }).prototype = Interceptor_MapMixin$$0.prototype;
  dart.applyMixin(Interceptor_MapMixin$$0, collection.MapMixin$(core.String, dart.dynamic));
  html$.RtcStatsReport = class RtcStatsReport extends Interceptor_MapMixin$$0 {
    [_getItem](key) {
      return html_common.convertNativeToDart_Dictionary(this.get(key));
    }
    [$addAll](other) {
      MapOfString$dynamic()._check(other);
      dart.throw(new core.UnsupportedError.new("Not supported"));
    }
    [$containsValue](value) {
      return this[$values][$any](dart.fn(e => dart.equals(e, value), MapTobool()));
    }
    [$containsKey](key) {
      return this[_getItem](core.String._check(key)) != null;
    }
    [$_get](key) {
      return this[_getItem](core.String._check(key));
    }
    [$forEach](f) {
      let entries = this.entries();
      while (true) {
        let entry = entries.next();
        if (entry.done) return;
        f(entry.value[0], html_common.convertNativeToDart_Dictionary(entry.value[1]));
      }
    }
    get [$keys]() {
      let keys = JSArrayOfString().of([]);
      this[$forEach](dart.fn((k, v) => keys[$add](k), StringAnddynamicTovoid()));
      return keys;
    }
    get [$values]() {
      let values = JSArrayOfMap().of([]);
      this[$forEach](dart.fn((k, v) => values[$add](core.Map._check(v)), StringAnddynamicTovoid()));
      return values;
    }
    get [$length]() {
      return this.size;
    }
    get [$isEmpty]() {
      return this[$length] === 0;
    }
    get [$isNotEmpty]() {
      return !dart.test(this[$isEmpty]);
    }
    [$_set](key, value) {
      core.String._check(key);
      dart.throw(new core.UnsupportedError.new("Not supported"));
      return value;
    }
    [$putIfAbsent](key, ifAbsent) {
      core.String._check(key);
      dart.throw(new core.UnsupportedError.new("Not supported"));
    }
    [$remove](key) {
      dart.throw(new core.UnsupportedError.new("Not supported"));
    }
    [$clear]() {
      dart.throw(new core.UnsupportedError.new("Not supported"));
    }
  };
  dart.addTypeTests(html$.RtcStatsReport);
  dart.setMethodSignature(html$.RtcStatsReport, () => ({
    __proto__: dart.getMethods(html$.RtcStatsReport.__proto__),
    [_getItem]: dart.fnType(core.Map, [core.String]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    [$containsValue]: dart.fnType(core.bool, [dart.dynamic]),
    [$containsKey]: dart.fnType(core.bool, [dart.dynamic]),
    [$_get]: dart.fnType(core.Map, [dart.dynamic]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, dart.dynamic])]),
    [$_set]: dart.fnType(dart.void, [core.Object, dart.dynamic]),
    [$putIfAbsent]: dart.fnType(dart.dynamic, [core.Object, dart.fnType(dart.dynamic, [])]),
    [$remove]: dart.fnType(core.String, [dart.dynamic]),
    [$clear]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(html$.RtcStatsReport, () => ({
    __proto__: dart.getGetters(html$.RtcStatsReport.__proto__),
    [$keys]: core.Iterable$(core.String),
    [$values]: core.Iterable$(core.Map),
    [$length]: core.int,
    [$isEmpty]: core.bool,
    [$isNotEmpty]: core.bool
  }));
  dart.registerExtension("RTCStatsReport", html$.RtcStatsReport);
  html$.RtcStatsResponse = class RtcStatsResponse extends _interceptors.Interceptor {
    [$namedItem](...args) {
      return this.namedItem.apply(this, args);
    }
    [$result](...args) {
      return this.result.apply(this, args);
    }
  };
  dart.addTypeTests(html$.RtcStatsResponse);
  dart.setMethodSignature(html$.RtcStatsResponse, () => ({
    __proto__: dart.getMethods(html$.RtcStatsResponse.__proto__),
    [$namedItem]: dart.fnType(html$.RtcLegacyStatsReport, [core.String]),
    [$result]: dart.fnType(core.List$(html$.RtcLegacyStatsReport), [])
  }));
  dart.registerExtension("RTCStatsResponse", html$.RtcStatsResponse);
  html$.RtcTrackEvent = class RtcTrackEvent extends html$.Event {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.RtcTrackEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new RTCTrackEvent(type, eventInitDict);
    }
    get [$receiver]() {
      return this.receiver;
    }
    get [$streams]() {
      return this.streams;
    }
    get [$track]() {
      return this.track;
    }
  };
  dart.addTypeTests(html$.RtcTrackEvent);
  const receiver$ = Symbol("RtcTrackEvent.receiver");
  const streams = Symbol("RtcTrackEvent.streams");
  const track$3 = Symbol("RtcTrackEvent.track");
  dart.setFieldSignature(html$.RtcTrackEvent, () => ({
    __proto__: dart.getFields(html$.RtcTrackEvent.__proto__),
    [$receiver]: dart.finalFieldType(html$.RtcRtpReceiver),
    [$streams]: dart.finalFieldType(ListOfMediaStream()),
    [$track]: dart.finalFieldType(html$.MediaStreamTrack)
  }));
  dart.registerExtension("RTCTrackEvent", html$.RtcTrackEvent);
  const _availLeft = Symbol('_availLeft');
  const _availTop = Symbol('_availTop');
  const _availWidth = Symbol('_availWidth');
  const _availHeight = Symbol('_availHeight');
  html$.Screen = class Screen extends _interceptors.Interceptor {
    get [$available]() {
      return new (RectangleOfnum()).new(this[_availLeft], this[_availTop], this[_availWidth], this[_availHeight]);
    }
    get [_availHeight]() {
      return this.availHeight;
    }
    get [_availLeft]() {
      return this.availLeft;
    }
    get [_availTop]() {
      return this.availTop;
    }
    get [_availWidth]() {
      return this.availWidth;
    }
    get [$colorDepth]() {
      return this.colorDepth;
    }
    get [$height]() {
      return this.height;
    }
    get [$keepAwake]() {
      return this.keepAwake;
    }
    set [$keepAwake](value) {
      this.keepAwake = value;
    }
    get [$orientation]() {
      return this.orientation;
    }
    get [$pixelDepth]() {
      return this.pixelDepth;
    }
    get [$width]() {
      return this.width;
    }
  };
  dart.addTypeTests(html$.Screen);
  const colorDepth = Symbol("Screen.colorDepth");
  const height$10 = Symbol("Screen.height");
  const keepAwake = Symbol("Screen.keepAwake");
  const orientation$0 = Symbol("Screen.orientation");
  const pixelDepth = Symbol("Screen.pixelDepth");
  const width$10 = Symbol("Screen.width");
  dart.setGetterSignature(html$.Screen, () => ({
    __proto__: dart.getGetters(html$.Screen.__proto__),
    [$available]: math.Rectangle$(core.num)
  }));
  dart.setFieldSignature(html$.Screen, () => ({
    __proto__: dart.getFields(html$.Screen.__proto__),
    [_availHeight]: dart.finalFieldType(core.int),
    [_availLeft]: dart.finalFieldType(core.int),
    [_availTop]: dart.finalFieldType(core.int),
    [_availWidth]: dart.finalFieldType(core.int),
    [$colorDepth]: dart.finalFieldType(core.int),
    [$height]: dart.finalFieldType(core.int),
    [$keepAwake]: dart.fieldType(core.bool),
    [$orientation]: dart.finalFieldType(html$.ScreenOrientation),
    [$pixelDepth]: dart.finalFieldType(core.int),
    [$width]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("Screen", html$.Screen);
  html$.ScreenOrientation = class ScreenOrientation extends html$.EventTarget {
    get [$angle]() {
      return this.angle;
    }
    get [$type]() {
      return this.type;
    }
    [$lock](orientation) {
      return html$.promiseToFuture(dart.dynamic, this.lock(orientation));
    }
    [$unlock](...args) {
      return this.unlock.apply(this, args);
    }
    get [$onChange]() {
      return html$.ScreenOrientation.changeEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.ScreenOrientation);
  const angle$ = Symbol("ScreenOrientation.angle");
  const type$28 = Symbol("ScreenOrientation.type");
  dart.setMethodSignature(html$.ScreenOrientation, () => ({
    __proto__: dart.getMethods(html$.ScreenOrientation.__proto__),
    [$lock]: dart.fnType(async.Future, [core.String]),
    [$unlock]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(html$.ScreenOrientation, () => ({
    __proto__: dart.getGetters(html$.ScreenOrientation.__proto__),
    [$onChange]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.ScreenOrientation, () => ({
    __proto__: dart.getFields(html$.ScreenOrientation.__proto__),
    [$angle]: dart.finalFieldType(core.int),
    [$type]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.ScreenOrientation, {
    /*html$.ScreenOrientation.changeEvent*/get changeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("change"));
    }
  });
  dart.registerExtension("ScreenOrientation", html$.ScreenOrientation);
  html$.ScriptElement = class ScriptElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("script");
    }
    get [$async]() {
      return this.async;
    }
    set [$async](value) {
      this.async = value;
    }
    get [$charset]() {
      return this.charset;
    }
    set [$charset](value) {
      this.charset = value;
    }
    get [$crossOrigin]() {
      return this.crossOrigin;
    }
    set [$crossOrigin](value) {
      this.crossOrigin = value;
    }
    get [$defer]() {
      return this.defer;
    }
    set [$defer](value) {
      this.defer = value;
    }
    get [$integrity]() {
      return this.integrity;
    }
    set [$integrity](value) {
      this.integrity = value;
    }
    get [$noModule]() {
      return this.noModule;
    }
    set [$noModule](value) {
      this.noModule = value;
    }
    get [$src]() {
      return this.src;
    }
    set [$src](value) {
      this.src = value;
    }
    get [$type]() {
      return this.type;
    }
    set [$type](value) {
      this.type = value;
    }
  };
  (html$.ScriptElement.created = function() {
    this[async$0] = null;
    this[charset] = null;
    this[crossOrigin$1] = null;
    this[defer] = null;
    this[integrity$] = null;
    this[noModule] = null;
    this[src$4] = null;
    this[type$29] = null;
    html$.ScriptElement.__proto__.created.call(this);
  }).prototype = html$.ScriptElement.prototype;
  dart.addTypeTests(html$.ScriptElement);
  const async$0 = Symbol("ScriptElement.async");
  const charset = Symbol("ScriptElement.charset");
  const crossOrigin$1 = Symbol("ScriptElement.crossOrigin");
  const defer = Symbol("ScriptElement.defer");
  const integrity$ = Symbol("ScriptElement.integrity");
  const noModule = Symbol("ScriptElement.noModule");
  const src$4 = Symbol("ScriptElement.src");
  const type$29 = Symbol("ScriptElement.type");
  dart.setFieldSignature(html$.ScriptElement, () => ({
    __proto__: dart.getFields(html$.ScriptElement.__proto__),
    [$async]: dart.fieldType(core.bool),
    [$charset]: dart.fieldType(core.String),
    [$crossOrigin]: dart.fieldType(core.String),
    [$defer]: dart.fieldType(core.bool),
    [$integrity]: dart.fieldType(core.String),
    [$noModule]: dart.fieldType(core.bool),
    [$src]: dart.fieldType(core.String),
    [$type]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLScriptElement", html$.ScriptElement);
  html$.ScrollState = class ScrollState$ extends _interceptors.Interceptor {
    static new(scrollStateInit) {
      if (scrollStateInit === void 0) scrollStateInit = null;
      if (scrollStateInit != null) {
        let scrollStateInit_1 = html_common.convertDartToNative_Dictionary(scrollStateInit);
        return html$.ScrollState._create_1(scrollStateInit_1);
      }
      return html$.ScrollState._create_2();
    }
    static _create_1(scrollStateInit) {
      return new ScrollState(scrollStateInit);
    }
    static _create_2() {
      return new ScrollState();
    }
    get [$deltaGranularity]() {
      return this.deltaGranularity;
    }
    get [$deltaX]() {
      return this.deltaX;
    }
    get [$deltaY]() {
      return this.deltaY;
    }
    get [$fromUserInput]() {
      return this.fromUserInput;
    }
    get [$inInertialPhase]() {
      return this.inInertialPhase;
    }
    get [$isBeginning]() {
      return this.isBeginning;
    }
    get [$isDirectManipulation]() {
      return this.isDirectManipulation;
    }
    get [$isEnding]() {
      return this.isEnding;
    }
    get [$positionX]() {
      return this.positionX;
    }
    get [$positionY]() {
      return this.positionY;
    }
    get [$velocityX]() {
      return this.velocityX;
    }
    get [$velocityY]() {
      return this.velocityY;
    }
    [$consumeDelta](...args) {
      return this.consumeDelta.apply(this, args);
    }
    [$distributeToScrollChainDescendant](...args) {
      return this.distributeToScrollChainDescendant.apply(this, args);
    }
  };
  dart.addTypeTests(html$.ScrollState);
  const deltaGranularity = Symbol("ScrollState.deltaGranularity");
  const deltaX = Symbol("ScrollState.deltaX");
  const deltaY = Symbol("ScrollState.deltaY");
  const fromUserInput = Symbol("ScrollState.fromUserInput");
  const inInertialPhase = Symbol("ScrollState.inInertialPhase");
  const isBeginning = Symbol("ScrollState.isBeginning");
  const isDirectManipulation = Symbol("ScrollState.isDirectManipulation");
  const isEnding = Symbol("ScrollState.isEnding");
  const positionX = Symbol("ScrollState.positionX");
  const positionY = Symbol("ScrollState.positionY");
  const velocityX = Symbol("ScrollState.velocityX");
  const velocityY = Symbol("ScrollState.velocityY");
  dart.setMethodSignature(html$.ScrollState, () => ({
    __proto__: dart.getMethods(html$.ScrollState.__proto__),
    [$consumeDelta]: dart.fnType(dart.void, [core.num, core.num]),
    [$distributeToScrollChainDescendant]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(html$.ScrollState, () => ({
    __proto__: dart.getFields(html$.ScrollState.__proto__),
    [$deltaGranularity]: dart.finalFieldType(core.num),
    [$deltaX]: dart.finalFieldType(core.num),
    [$deltaY]: dart.finalFieldType(core.num),
    [$fromUserInput]: dart.finalFieldType(core.bool),
    [$inInertialPhase]: dart.finalFieldType(core.bool),
    [$isBeginning]: dart.finalFieldType(core.bool),
    [$isDirectManipulation]: dart.finalFieldType(core.bool),
    [$isEnding]: dart.finalFieldType(core.bool),
    [$positionX]: dart.finalFieldType(core.int),
    [$positionY]: dart.finalFieldType(core.int),
    [$velocityX]: dart.finalFieldType(core.num),
    [$velocityY]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("ScrollState", html$.ScrollState);
  html$.ScrollTimeline = class ScrollTimeline$ extends html$.AnimationTimeline {
    static new(options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return html$.ScrollTimeline._create_1(options_1);
      }
      return html$.ScrollTimeline._create_2();
    }
    static _create_1(options) {
      return new ScrollTimeline(options);
    }
    static _create_2() {
      return new ScrollTimeline();
    }
    get [$orientation]() {
      return this.orientation;
    }
    get [$scrollSource]() {
      return this.scrollSource;
    }
    get [$timeRange]() {
      return this.timeRange;
    }
  };
  dart.addTypeTests(html$.ScrollTimeline);
  const orientation$1 = Symbol("ScrollTimeline.orientation");
  const scrollSource = Symbol("ScrollTimeline.scrollSource");
  const timeRange = Symbol("ScrollTimeline.timeRange");
  dart.setFieldSignature(html$.ScrollTimeline, () => ({
    __proto__: dart.getFields(html$.ScrollTimeline.__proto__),
    [$orientation]: dart.finalFieldType(core.String),
    [$scrollSource]: dart.finalFieldType(html$.Element),
    [$timeRange]: dart.finalFieldType(core.Object)
  }));
  dart.registerExtension("ScrollTimeline", html$.ScrollTimeline);
  html$.SecurityPolicyViolationEvent = class SecurityPolicyViolationEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.SecurityPolicyViolationEvent._create_1(type, eventInitDict_1);
      }
      return html$.SecurityPolicyViolationEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new SecurityPolicyViolationEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new SecurityPolicyViolationEvent(type);
    }
    get [$blockedUri]() {
      return this.blockedURI;
    }
    get [$columnNumber]() {
      return this.columnNumber;
    }
    get [$disposition]() {
      return this.disposition;
    }
    get [$documentUri]() {
      return this.documentURI;
    }
    get [$effectiveDirective]() {
      return this.effectiveDirective;
    }
    get [$lineNumber]() {
      return this.lineNumber;
    }
    get [$originalPolicy]() {
      return this.originalPolicy;
    }
    get [$referrer]() {
      return this.referrer;
    }
    get [$sample]() {
      return this.sample;
    }
    get [$sourceFile]() {
      return this.sourceFile;
    }
    get [$statusCode]() {
      return this.statusCode;
    }
    get [$violatedDirective]() {
      return this.violatedDirective;
    }
  };
  dart.addTypeTests(html$.SecurityPolicyViolationEvent);
  const blockedUri = Symbol("SecurityPolicyViolationEvent.blockedUri");
  const columnNumber = Symbol("SecurityPolicyViolationEvent.columnNumber");
  const disposition = Symbol("SecurityPolicyViolationEvent.disposition");
  const documentUri = Symbol("SecurityPolicyViolationEvent.documentUri");
  const effectiveDirective = Symbol("SecurityPolicyViolationEvent.effectiveDirective");
  const lineNumber$0 = Symbol("SecurityPolicyViolationEvent.lineNumber");
  const originalPolicy = Symbol("SecurityPolicyViolationEvent.originalPolicy");
  const referrer = Symbol("SecurityPolicyViolationEvent.referrer");
  const sample = Symbol("SecurityPolicyViolationEvent.sample");
  const sourceFile$0 = Symbol("SecurityPolicyViolationEvent.sourceFile");
  const statusCode = Symbol("SecurityPolicyViolationEvent.statusCode");
  const violatedDirective = Symbol("SecurityPolicyViolationEvent.violatedDirective");
  dart.setFieldSignature(html$.SecurityPolicyViolationEvent, () => ({
    __proto__: dart.getFields(html$.SecurityPolicyViolationEvent.__proto__),
    [$blockedUri]: dart.finalFieldType(core.String),
    [$columnNumber]: dart.finalFieldType(core.int),
    [$disposition]: dart.finalFieldType(core.String),
    [$documentUri]: dart.finalFieldType(core.String),
    [$effectiveDirective]: dart.finalFieldType(core.String),
    [$lineNumber]: dart.finalFieldType(core.int),
    [$originalPolicy]: dart.finalFieldType(core.String),
    [$referrer]: dart.finalFieldType(core.String),
    [$sample]: dart.finalFieldType(core.String),
    [$sourceFile]: dart.finalFieldType(core.String),
    [$statusCode]: dart.finalFieldType(core.int),
    [$violatedDirective]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("SecurityPolicyViolationEvent", html$.SecurityPolicyViolationEvent);
  html$.SelectElement = class SelectElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("select");
    }
    get [$autofocus]() {
      return this.autofocus;
    }
    set [$autofocus](value) {
      this.autofocus = value;
    }
    get [$disabled]() {
      return this.disabled;
    }
    set [$disabled](value) {
      this.disabled = value;
    }
    get [$form]() {
      return this.form;
    }
    get [$labels]() {
      return this.labels;
    }
    get [$length]() {
      return this.length;
    }
    set [$length](value) {
      this.length = value;
    }
    get [$multiple]() {
      return this.multiple;
    }
    set [$multiple](value) {
      this.multiple = value;
    }
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
    get [$required]() {
      return this.required;
    }
    set [$required](value) {
      this.required = value;
    }
    get [$selectedIndex]() {
      return this.selectedIndex;
    }
    set [$selectedIndex](value) {
      this.selectedIndex = value;
    }
    get [$size]() {
      return this.size;
    }
    set [$size](value) {
      this.size = value;
    }
    get [$type]() {
      return this.type;
    }
    get [$validationMessage]() {
      return this.validationMessage;
    }
    get [$validity]() {
      return this.validity;
    }
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
    get [$willValidate]() {
      return this.willValidate;
    }
    [__setter__](...args) {
      return this.__setter__.apply(this, args);
    }
    [$add](...args) {
      return this.add.apply(this, args);
    }
    [$checkValidity](...args) {
      return this.checkValidity.apply(this, args);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
    [$namedItem](...args) {
      return this.namedItem.apply(this, args);
    }
    [$reportValidity](...args) {
      return this.reportValidity.apply(this, args);
    }
    [$setCustomValidity](...args) {
      return this.setCustomValidity.apply(this, args);
    }
    get [$options]() {
      let options = this[$querySelectorAll](html$.OptionElement, "option");
      return new (UnmodifiableListViewOfOptionElement()).new(IterableOfOptionElement()._check(dart.dsend(options, 'toList', [])));
    }
    get [$selectedOptions]() {
      if (dart.test(this.multiple)) {
        let options = this[$options][$where](dart.fn(o => o.selected, OptionElementTobool()))[$toList]();
        return new (UnmodifiableListViewOfOptionElement()).new(options);
      } else {
        return JSArrayOfOptionElement().of([this[$options][$_get](this.selectedIndex)]);
      }
    }
  };
  (html$.SelectElement.created = function() {
    this[autofocus$2] = null;
    this[disabled$7] = null;
    this[form$6] = null;
    this[labels$3] = null;
    this[length$12] = null;
    this[multiple$1] = null;
    this[name$33] = null;
    this[required$11] = null;
    this[selectedIndex] = null;
    this[size$5] = null;
    this[type$30] = null;
    this[validationMessage$3] = null;
    this[validity$3] = null;
    this[value$15] = null;
    this[willValidate$3] = null;
    html$.SelectElement.__proto__.created.call(this);
  }).prototype = html$.SelectElement.prototype;
  dart.addTypeTests(html$.SelectElement);
  const autofocus$2 = Symbol("SelectElement.autofocus");
  const disabled$7 = Symbol("SelectElement.disabled");
  const form$6 = Symbol("SelectElement.form");
  const labels$3 = Symbol("SelectElement.labels");
  const length$12 = Symbol("SelectElement.length");
  const multiple$1 = Symbol("SelectElement.multiple");
  const name$33 = Symbol("SelectElement.name");
  const required$11 = Symbol("SelectElement.required");
  const selectedIndex = Symbol("SelectElement.selectedIndex");
  const size$5 = Symbol("SelectElement.size");
  const type$30 = Symbol("SelectElement.type");
  const validationMessage$3 = Symbol("SelectElement.validationMessage");
  const validity$3 = Symbol("SelectElement.validity");
  const value$15 = Symbol("SelectElement.value");
  const willValidate$3 = Symbol("SelectElement.willValidate");
  dart.setMethodSignature(html$.SelectElement, () => ({
    __proto__: dart.getMethods(html$.SelectElement.__proto__),
    [__setter__]: dart.fnType(dart.void, [core.int, html$.OptionElement]),
    [$add]: dart.fnType(dart.void, [core.Object, core.Object]),
    [$checkValidity]: dart.fnType(core.bool, []),
    [$item]: dart.fnType(html$.Element, [core.int]),
    [$namedItem]: dart.fnType(html$.OptionElement, [core.String]),
    [$reportValidity]: dart.fnType(core.bool, []),
    [$setCustomValidity]: dart.fnType(dart.void, [core.String])
  }));
  dart.setGetterSignature(html$.SelectElement, () => ({
    __proto__: dart.getGetters(html$.SelectElement.__proto__),
    [$options]: core.List$(html$.OptionElement),
    [$selectedOptions]: core.List$(html$.OptionElement)
  }));
  dart.setFieldSignature(html$.SelectElement, () => ({
    __proto__: dart.getFields(html$.SelectElement.__proto__),
    [$autofocus]: dart.fieldType(core.bool),
    [$disabled]: dart.fieldType(core.bool),
    [$form]: dart.finalFieldType(html$.FormElement),
    [$labels]: dart.finalFieldType(ListOfNode()),
    [$length]: dart.fieldType(core.int),
    [$multiple]: dart.fieldType(core.bool),
    [$name]: dart.fieldType(core.String),
    [$required]: dart.fieldType(core.bool),
    [$selectedIndex]: dart.fieldType(core.int),
    [$size]: dart.fieldType(core.int),
    [$type]: dart.finalFieldType(core.String),
    [$validationMessage]: dart.finalFieldType(core.String),
    [$validity]: dart.finalFieldType(html$.ValidityState),
    [$value]: dart.fieldType(core.String),
    [$willValidate]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("HTMLSelectElement", html$.SelectElement);
  html$.Selection = class Selection extends _interceptors.Interceptor {
    get [$anchorNode]() {
      return this.anchorNode;
    }
    get [$anchorOffset]() {
      return this.anchorOffset;
    }
    get [$baseNode]() {
      return this.baseNode;
    }
    get [$baseOffset]() {
      return this.baseOffset;
    }
    get [$extentNode]() {
      return this.extentNode;
    }
    get [$extentOffset]() {
      return this.extentOffset;
    }
    get [$focusNode]() {
      return this.focusNode;
    }
    get [$focusOffset]() {
      return this.focusOffset;
    }
    get [$isCollapsed]() {
      return this.isCollapsed;
    }
    get [$rangeCount]() {
      return this.rangeCount;
    }
    get [$type]() {
      return this.type;
    }
    [$addRange](...args) {
      return this.addRange.apply(this, args);
    }
    [$collapse](...args) {
      return this.collapse.apply(this, args);
    }
    [$collapseToEnd](...args) {
      return this.collapseToEnd.apply(this, args);
    }
    [$collapseToStart](...args) {
      return this.collapseToStart.apply(this, args);
    }
    [$containsNode](...args) {
      return this.containsNode.apply(this, args);
    }
    [$deleteFromDocument](...args) {
      return this.deleteFromDocument.apply(this, args);
    }
    [$empty](...args) {
      return this.empty.apply(this, args);
    }
    [$extend](...args) {
      return this.extend.apply(this, args);
    }
    [$getRangeAt](...args) {
      return this.getRangeAt.apply(this, args);
    }
    [$modify](...args) {
      return this.modify.apply(this, args);
    }
    [$removeAllRanges](...args) {
      return this.removeAllRanges.apply(this, args);
    }
    [$removeRange](...args) {
      return this.removeRange.apply(this, args);
    }
    [$selectAllChildren](...args) {
      return this.selectAllChildren.apply(this, args);
    }
    [$setBaseAndExtent](...args) {
      return this.setBaseAndExtent.apply(this, args);
    }
    [$setPosition](...args) {
      return this.setPosition.apply(this, args);
    }
  };
  dart.addTypeTests(html$.Selection);
  const anchorNode = Symbol("Selection.anchorNode");
  const anchorOffset = Symbol("Selection.anchorOffset");
  const baseNode = Symbol("Selection.baseNode");
  const baseOffset = Symbol("Selection.baseOffset");
  const extentNode = Symbol("Selection.extentNode");
  const extentOffset = Symbol("Selection.extentOffset");
  const focusNode = Symbol("Selection.focusNode");
  const focusOffset = Symbol("Selection.focusOffset");
  const isCollapsed = Symbol("Selection.isCollapsed");
  const rangeCount = Symbol("Selection.rangeCount");
  const type$31 = Symbol("Selection.type");
  dart.setMethodSignature(html$.Selection, () => ({
    __proto__: dart.getMethods(html$.Selection.__proto__),
    [$addRange]: dart.fnType(dart.void, [html$.Range]),
    [$collapse]: dart.fnType(dart.void, [html$.Node], [core.int]),
    [$collapseToEnd]: dart.fnType(dart.void, []),
    [$collapseToStart]: dart.fnType(dart.void, []),
    [$containsNode]: dart.fnType(core.bool, [html$.Node], [core.bool]),
    [$deleteFromDocument]: dart.fnType(dart.void, []),
    [$empty]: dart.fnType(dart.void, []),
    [$extend]: dart.fnType(dart.void, [html$.Node], [core.int]),
    [$getRangeAt]: dart.fnType(html$.Range, [core.int]),
    [$modify]: dart.fnType(dart.void, [core.String, core.String, core.String]),
    [$removeAllRanges]: dart.fnType(dart.void, []),
    [$removeRange]: dart.fnType(dart.void, [html$.Range]),
    [$selectAllChildren]: dart.fnType(dart.void, [html$.Node]),
    [$setBaseAndExtent]: dart.fnType(dart.void, [html$.Node, core.int, html$.Node, core.int]),
    [$setPosition]: dart.fnType(dart.void, [html$.Node], [core.int])
  }));
  dart.setFieldSignature(html$.Selection, () => ({
    __proto__: dart.getFields(html$.Selection.__proto__),
    [$anchorNode]: dart.finalFieldType(html$.Node),
    [$anchorOffset]: dart.finalFieldType(core.int),
    [$baseNode]: dart.finalFieldType(html$.Node),
    [$baseOffset]: dart.finalFieldType(core.int),
    [$extentNode]: dart.finalFieldType(html$.Node),
    [$extentOffset]: dart.finalFieldType(core.int),
    [$focusNode]: dart.finalFieldType(html$.Node),
    [$focusOffset]: dart.finalFieldType(core.int),
    [$isCollapsed]: dart.finalFieldType(core.bool),
    [$rangeCount]: dart.finalFieldType(core.int),
    [$type]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("Selection", html$.Selection);
  html$.SensorErrorEvent = class SensorErrorEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.SensorErrorEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new SensorErrorEvent(type, eventInitDict);
    }
    get [$error]() {
      return this.error;
    }
  };
  dart.addTypeTests(html$.SensorErrorEvent);
  const error$5 = Symbol("SensorErrorEvent.error");
  dart.setFieldSignature(html$.SensorErrorEvent, () => ({
    __proto__: dart.getFields(html$.SensorErrorEvent.__proto__),
    [$error]: dart.finalFieldType(html$.DomException)
  }));
  dart.registerExtension("SensorErrorEvent", html$.SensorErrorEvent);
  html$.ServiceWorker = class ServiceWorker extends html$.EventTarget {
    get [$scriptUrl]() {
      return this.scriptURL;
    }
    get [$state]() {
      return this.state;
    }
    [$postMessage](...args) {
      return this.postMessage.apply(this, args);
    }
    get [$onError]() {
      return html$.ServiceWorker.errorEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.ServiceWorker);
  const scriptUrl = Symbol("ServiceWorker.scriptUrl");
  const state$5 = Symbol("ServiceWorker.state");
  html$.ServiceWorker[dart.implements] = () => [html$.AbstractWorker];
  dart.setMethodSignature(html$.ServiceWorker, () => ({
    __proto__: dart.getMethods(html$.ServiceWorker.__proto__),
    [$postMessage]: dart.fnType(dart.void, [core.Object], [core.List$(core.Object)])
  }));
  dart.setGetterSignature(html$.ServiceWorker, () => ({
    __proto__: dart.getGetters(html$.ServiceWorker.__proto__),
    [$onError]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.ServiceWorker, () => ({
    __proto__: dart.getFields(html$.ServiceWorker.__proto__),
    [$scriptUrl]: dart.finalFieldType(core.String),
    [$state]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.ServiceWorker, {
    /*html$.ServiceWorker.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    }
  });
  dart.registerExtension("ServiceWorker", html$.ServiceWorker);
  html$.ServiceWorkerContainer = class ServiceWorkerContainer extends html$.EventTarget {
    get [$controller]() {
      return this.controller;
    }
    get [$ready]() {
      return html$.promiseToFuture(html$.ServiceWorkerRegistration, this.ready);
    }
    [$getRegistration](documentURL) {
      if (documentURL === void 0) documentURL = null;
      return html$.promiseToFuture(html$.ServiceWorkerRegistration, this.getRegistration(documentURL));
    }
    [$getRegistrations]() {
      return html$.promiseToFuture(ListOfServiceWorkerRegistration(), this.getRegistrations());
    }
    [$register](url, options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(html$.ServiceWorkerRegistration, this.register(url, options_dict));
    }
    get [$onMessage]() {
      return html$.ServiceWorkerContainer.messageEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.ServiceWorkerContainer);
  const controller = Symbol("ServiceWorkerContainer.controller");
  dart.setMethodSignature(html$.ServiceWorkerContainer, () => ({
    __proto__: dart.getMethods(html$.ServiceWorkerContainer.__proto__),
    [$getRegistration]: dart.fnType(async.Future$(html$.ServiceWorkerRegistration), [], [core.String]),
    [$getRegistrations]: dart.fnType(async.Future$(core.List$(html$.ServiceWorkerRegistration)), []),
    [$register]: dart.fnType(async.Future$(html$.ServiceWorkerRegistration), [core.String], [core.Map])
  }));
  dart.setGetterSignature(html$.ServiceWorkerContainer, () => ({
    __proto__: dart.getGetters(html$.ServiceWorkerContainer.__proto__),
    [$ready]: async.Future$(html$.ServiceWorkerRegistration),
    [$onMessage]: async.Stream$(html$.MessageEvent)
  }));
  dart.setFieldSignature(html$.ServiceWorkerContainer, () => ({
    __proto__: dart.getFields(html$.ServiceWorkerContainer.__proto__),
    [$controller]: dart.finalFieldType(html$.ServiceWorker)
  }));
  dart.defineLazy(html$.ServiceWorkerContainer, {
    /*html$.ServiceWorkerContainer.messageEvent*/get messageEvent() {
      return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
    }
  });
  dart.registerExtension("ServiceWorkerContainer", html$.ServiceWorkerContainer);
  html$.ServiceWorkerGlobalScope = class ServiceWorkerGlobalScope extends html$.WorkerGlobalScope {
    get [$clients]() {
      return this.clients;
    }
    get [$registration]() {
      return this.registration;
    }
    [$skipWaiting]() {
      return html$.promiseToFuture(dart.dynamic, this.skipWaiting());
    }
    get [$onActivate]() {
      return html$.ServiceWorkerGlobalScope.activateEvent.forTarget(this);
    }
    get [$onFetch]() {
      return html$.ServiceWorkerGlobalScope.fetchEvent.forTarget(this);
    }
    get [$onForeignfetch]() {
      return html$.ServiceWorkerGlobalScope.foreignfetchEvent.forTarget(this);
    }
    get [$onInstall]() {
      return html$.ServiceWorkerGlobalScope.installEvent.forTarget(this);
    }
    get [$onMessage]() {
      return html$.ServiceWorkerGlobalScope.messageEvent.forTarget(this);
    }
    static get instance() {
      return html$.ServiceWorkerGlobalScope.as(html$._workerSelf);
    }
  };
  dart.addTypeTests(html$.ServiceWorkerGlobalScope);
  const clients = Symbol("ServiceWorkerGlobalScope.clients");
  const registration = Symbol("ServiceWorkerGlobalScope.registration");
  dart.setMethodSignature(html$.ServiceWorkerGlobalScope, () => ({
    __proto__: dart.getMethods(html$.ServiceWorkerGlobalScope.__proto__),
    [$skipWaiting]: dart.fnType(async.Future, [])
  }));
  dart.setGetterSignature(html$.ServiceWorkerGlobalScope, () => ({
    __proto__: dart.getGetters(html$.ServiceWorkerGlobalScope.__proto__),
    [$onActivate]: async.Stream$(html$.Event),
    [$onFetch]: async.Stream$(html$.Event),
    [$onForeignfetch]: async.Stream$(html$.ForeignFetchEvent),
    [$onInstall]: async.Stream$(html$.Event),
    [$onMessage]: async.Stream$(html$.MessageEvent)
  }));
  dart.setFieldSignature(html$.ServiceWorkerGlobalScope, () => ({
    __proto__: dart.getFields(html$.ServiceWorkerGlobalScope.__proto__),
    [$clients]: dart.finalFieldType(html$.Clients),
    [$registration]: dart.finalFieldType(html$.ServiceWorkerRegistration)
  }));
  dart.defineLazy(html$.ServiceWorkerGlobalScope, {
    /*html$.ServiceWorkerGlobalScope.activateEvent*/get activateEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("activate"));
    },
    /*html$.ServiceWorkerGlobalScope.fetchEvent*/get fetchEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("fetch"));
    },
    /*html$.ServiceWorkerGlobalScope.foreignfetchEvent*/get foreignfetchEvent() {
      return dart.const(new (EventStreamProviderOfForeignFetchEvent()).new("foreignfetch"));
    },
    /*html$.ServiceWorkerGlobalScope.installEvent*/get installEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("install"));
    },
    /*html$.ServiceWorkerGlobalScope.messageEvent*/get messageEvent() {
      return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
    }
  });
  dart.registerExtension("ServiceWorkerGlobalScope", html$.ServiceWorkerGlobalScope);
  html$.ServiceWorkerRegistration = class ServiceWorkerRegistration extends html$.EventTarget {
    get [$active]() {
      return this.active;
    }
    get [$backgroundFetch]() {
      return this.backgroundFetch;
    }
    get [$installing]() {
      return this.installing;
    }
    get [$navigationPreload]() {
      return this.navigationPreload;
    }
    get [$paymentManager]() {
      return this.paymentManager;
    }
    get [$pushManager]() {
      return this.pushManager;
    }
    get [$scope]() {
      return this.scope;
    }
    get [$sync]() {
      return this.sync;
    }
    get [$waiting]() {
      return this.waiting;
    }
    [$getNotifications](filter) {
      if (filter === void 0) filter = null;
      let filter_dict = null;
      if (filter != null) {
        filter_dict = html_common.convertDartToNative_Dictionary(filter);
      }
      return html$.promiseToFuture(ListOfNotification(), this.getNotifications(filter_dict));
    }
    [$showNotification](title, options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(dart.dynamic, this.showNotification(title, options_dict));
    }
    [$unregister]() {
      return html$.promiseToFuture(core.bool, this.unregister());
    }
    [$update]() {
      return html$.promiseToFuture(dart.dynamic, this.update());
    }
  };
  dart.addTypeTests(html$.ServiceWorkerRegistration);
  const active$ = Symbol("ServiceWorkerRegistration.active");
  const backgroundFetch = Symbol("ServiceWorkerRegistration.backgroundFetch");
  const installing = Symbol("ServiceWorkerRegistration.installing");
  const navigationPreload = Symbol("ServiceWorkerRegistration.navigationPreload");
  const paymentManager = Symbol("ServiceWorkerRegistration.paymentManager");
  const pushManager = Symbol("ServiceWorkerRegistration.pushManager");
  const scope$ = Symbol("ServiceWorkerRegistration.scope");
  const sync = Symbol("ServiceWorkerRegistration.sync");
  const waiting = Symbol("ServiceWorkerRegistration.waiting");
  dart.setMethodSignature(html$.ServiceWorkerRegistration, () => ({
    __proto__: dart.getMethods(html$.ServiceWorkerRegistration.__proto__),
    [$getNotifications]: dart.fnType(async.Future$(core.List$(html$.Notification)), [], [core.Map]),
    [$showNotification]: dart.fnType(async.Future, [core.String], [core.Map]),
    [$unregister]: dart.fnType(async.Future$(core.bool), []),
    [$update]: dart.fnType(async.Future, [])
  }));
  dart.setFieldSignature(html$.ServiceWorkerRegistration, () => ({
    __proto__: dart.getFields(html$.ServiceWorkerRegistration.__proto__),
    [$active]: dart.finalFieldType(html$.ServiceWorker),
    [$backgroundFetch]: dart.finalFieldType(html$.BackgroundFetchManager),
    [$installing]: dart.finalFieldType(html$.ServiceWorker),
    [$navigationPreload]: dart.finalFieldType(html$.NavigationPreloadManager),
    [$paymentManager]: dart.finalFieldType(html$.PaymentManager),
    [$pushManager]: dart.finalFieldType(html$.PushManager),
    [$scope]: dart.finalFieldType(core.String),
    [$sync]: dart.finalFieldType(html$.SyncManager),
    [$waiting]: dart.finalFieldType(html$.ServiceWorker)
  }));
  dart.registerExtension("ServiceWorkerRegistration", html$.ServiceWorkerRegistration);
  html$.ShadowElement = class ShadowElement extends html$.HtmlElement {
    static new() {
      return html$.ShadowElement._check(html$.document[$createElement]("shadow"));
    }
    static get supported() {
      return html$.Element.isTagSupported("shadow");
    }
    [$getDistributedNodes](...args) {
      return this.getDistributedNodes.apply(this, args);
    }
  };
  (html$.ShadowElement.created = function() {
    html$.ShadowElement.__proto__.created.call(this);
  }).prototype = html$.ShadowElement.prototype;
  dart.addTypeTests(html$.ShadowElement);
  dart.setMethodSignature(html$.ShadowElement, () => ({
    __proto__: dart.getMethods(html$.ShadowElement.__proto__),
    [$getDistributedNodes]: dart.fnType(core.List$(html$.Node), [])
  }));
  dart.registerExtension("HTMLShadowElement", html$.ShadowElement);
  html$.ShadowRoot = class ShadowRoot extends html$.DocumentFragment {
    get [$delegatesFocus]() {
      return this.delegatesFocus;
    }
    get [$host]() {
      return this.host;
    }
    get [$innerHtml]() {
      return this.innerHTML;
    }
    set [$innerHtml](value) {
      this.innerHTML = value;
    }
    get [$mode]() {
      return this.mode;
    }
    get [$olderShadowRoot]() {
      return this.olderShadowRoot;
    }
    get [$activeElement]() {
      return this.activeElement;
    }
    get [$fullscreenElement]() {
      return this.fullscreenElement;
    }
    get [$pointerLockElement]() {
      return this.pointerLockElement;
    }
    get [$styleSheets]() {
      return this.styleSheets;
    }
    [$elementFromPoint](...args) {
      return this.elementFromPoint.apply(this, args);
    }
    [$elementsFromPoint](...args) {
      return this.elementsFromPoint.apply(this, args);
    }
    [$getSelection](...args) {
      return this.getSelection.apply(this, args);
    }
    static get supported() {
      return !!(Element.prototype.createShadowRoot || Element.prototype.webkitCreateShadowRoot);
    }
    static _shadowRootDeprecationReport() {
      if (!dart.test(html$.ShadowRoot._shadowRootDeprecationReported)) {
        html$.window[$console].warn("ShadowRoot.resetStyleInheritance and ShadowRoot.applyAuthorStyles now deprecated in dart:html.\nPlease remove them from your code.\n");
        html$.ShadowRoot._shadowRootDeprecationReported = true;
      }
    }
    get [$resetStyleInheritance]() {
      html$.ShadowRoot._shadowRootDeprecationReport();
      return false;
    }
    set [$resetStyleInheritance](value) {
      html$.ShadowRoot._shadowRootDeprecationReport();
    }
    get [$applyAuthorStyles]() {
      html$.ShadowRoot._shadowRootDeprecationReport();
      return false;
    }
    set [$applyAuthorStyles](value) {
      html$.ShadowRoot._shadowRootDeprecationReport();
    }
  };
  dart.addTypeTests(html$.ShadowRoot);
  const delegatesFocus = Symbol("ShadowRoot.delegatesFocus");
  const host$2 = Symbol("ShadowRoot.host");
  const innerHtml = Symbol("ShadowRoot.innerHtml");
  const mode$1 = Symbol("ShadowRoot.mode");
  const olderShadowRoot = Symbol("ShadowRoot.olderShadowRoot");
  const activeElement$0 = Symbol("ShadowRoot.activeElement");
  const fullscreenElement$0 = Symbol("ShadowRoot.fullscreenElement");
  const pointerLockElement$0 = Symbol("ShadowRoot.pointerLockElement");
  const styleSheets$ = Symbol("ShadowRoot.styleSheets");
  html$.ShadowRoot[dart.implements] = () => [html$.DocumentOrShadowRoot];
  dart.setMethodSignature(html$.ShadowRoot, () => ({
    __proto__: dart.getMethods(html$.ShadowRoot.__proto__),
    [$elementFromPoint]: dart.fnType(html$.Element, [core.int, core.int]),
    [$elementsFromPoint]: dart.fnType(core.List$(html$.Element), [core.int, core.int]),
    [$getSelection]: dart.fnType(html$.Selection, [])
  }));
  dart.setGetterSignature(html$.ShadowRoot, () => ({
    __proto__: dart.getGetters(html$.ShadowRoot.__proto__),
    [$resetStyleInheritance]: core.bool,
    [$applyAuthorStyles]: core.bool
  }));
  dart.setSetterSignature(html$.ShadowRoot, () => ({
    __proto__: dart.getSetters(html$.ShadowRoot.__proto__),
    [$resetStyleInheritance]: core.bool,
    [$applyAuthorStyles]: core.bool
  }));
  dart.setFieldSignature(html$.ShadowRoot, () => ({
    __proto__: dart.getFields(html$.ShadowRoot.__proto__),
    [$delegatesFocus]: dart.finalFieldType(core.bool),
    [$host]: dart.finalFieldType(html$.Element),
    [$innerHtml]: dart.fieldType(core.String),
    [$mode]: dart.finalFieldType(core.String),
    [$olderShadowRoot]: dart.finalFieldType(html$.ShadowRoot),
    [$activeElement]: dart.finalFieldType(html$.Element),
    [$fullscreenElement]: dart.finalFieldType(html$.Element),
    [$pointerLockElement]: dart.finalFieldType(html$.Element),
    [$styleSheets]: dart.finalFieldType(ListOfStyleSheet())
  }));
  dart.defineLazy(html$.ShadowRoot, {
    /*html$.ShadowRoot._shadowRootDeprecationReported*/get _shadowRootDeprecationReported() {
      return false;
    },
    set _shadowRootDeprecationReported(_) {}
  });
  dart.registerExtension("ShadowRoot", html$.ShadowRoot);
  html$.SharedArrayBuffer = class SharedArrayBuffer extends _interceptors.Interceptor {
    get [$byteLength]() {
      return this.byteLength;
    }
  };
  dart.addTypeTests(html$.SharedArrayBuffer);
  const byteLength = Symbol("SharedArrayBuffer.byteLength");
  dart.setFieldSignature(html$.SharedArrayBuffer, () => ({
    __proto__: dart.getFields(html$.SharedArrayBuffer.__proto__),
    [$byteLength]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("SharedArrayBuffer", html$.SharedArrayBuffer);
  html$.SharedWorker = class SharedWorker$ extends html$.EventTarget {
    static new(scriptURL, name) {
      if (name === void 0) name = null;
      if (name != null) {
        return html$.SharedWorker._create_1(scriptURL, name);
      }
      return html$.SharedWorker._create_2(scriptURL);
    }
    static _create_1(scriptURL, name) {
      return new SharedWorker(scriptURL, name);
    }
    static _create_2(scriptURL) {
      return new SharedWorker(scriptURL);
    }
    get [$port]() {
      return this.port;
    }
    get [$onError]() {
      return html$.SharedWorker.errorEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.SharedWorker);
  const port$5 = Symbol("SharedWorker.port");
  html$.SharedWorker[dart.implements] = () => [html$.AbstractWorker];
  dart.setGetterSignature(html$.SharedWorker, () => ({
    __proto__: dart.getGetters(html$.SharedWorker.__proto__),
    [$onError]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.SharedWorker, () => ({
    __proto__: dart.getFields(html$.SharedWorker.__proto__),
    [$port]: dart.finalFieldType(html$.MessagePort)
  }));
  dart.defineLazy(html$.SharedWorker, {
    /*html$.SharedWorker.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    }
  });
  dart.registerExtension("SharedWorker", html$.SharedWorker);
  html$.SharedWorkerGlobalScope = class SharedWorkerGlobalScope extends html$.WorkerGlobalScope {
    get [$name]() {
      return this.name;
    }
    [$close](...args) {
      return this.close.apply(this, args);
    }
    [_webkitRequestFileSystem](...args) {
      return this.webkitRequestFileSystem.apply(this, args);
    }
    [$requestFileSystemSync](...args) {
      return this.webkitRequestFileSystemSync.apply(this, args);
    }
    [$resolveLocalFileSystemSyncUrl](...args) {
      return this.webkitResolveLocalFileSystemSyncURL.apply(this, args);
    }
    [_webkitResolveLocalFileSystemUrl](...args) {
      return this.webkitResolveLocalFileSystemURL.apply(this, args);
    }
    get [$onConnect]() {
      return html$.SharedWorkerGlobalScope.connectEvent.forTarget(this);
    }
    static get instance() {
      return html$.SharedWorkerGlobalScope.as(html$._workerSelf);
    }
  };
  dart.addTypeTests(html$.SharedWorkerGlobalScope);
  const name$34 = Symbol("SharedWorkerGlobalScope.name");
  dart.setMethodSignature(html$.SharedWorkerGlobalScope, () => ({
    __proto__: dart.getMethods(html$.SharedWorkerGlobalScope.__proto__),
    [$close]: dart.fnType(dart.void, []),
    [_webkitRequestFileSystem]: dart.fnType(dart.void, [core.int, core.int], [dart.fnType(dart.void, [html$.FileSystem]), dart.fnType(dart.void, [html$.DomException])]),
    [$requestFileSystemSync]: dart.fnType(html$._DOMFileSystemSync, [core.int, core.int]),
    [$resolveLocalFileSystemSyncUrl]: dart.fnType(html$._EntrySync, [core.String]),
    [_webkitResolveLocalFileSystemUrl]: dart.fnType(dart.void, [core.String, dart.fnType(dart.void, [html$.Entry])], [dart.fnType(dart.void, [html$.DomException])])
  }));
  dart.setGetterSignature(html$.SharedWorkerGlobalScope, () => ({
    __proto__: dart.getGetters(html$.SharedWorkerGlobalScope.__proto__),
    [$onConnect]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.SharedWorkerGlobalScope, () => ({
    __proto__: dart.getFields(html$.SharedWorkerGlobalScope.__proto__),
    [$name]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.SharedWorkerGlobalScope, {
    /*html$.SharedWorkerGlobalScope.connectEvent*/get connectEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("connect"));
    },
    /*html$.SharedWorkerGlobalScope.PERSISTENT*/get PERSISTENT() {
      return 1;
    },
    /*html$.SharedWorkerGlobalScope.TEMPORARY*/get TEMPORARY() {
      return 0;
    }
  });
  dart.registerExtension("SharedWorkerGlobalScope", html$.SharedWorkerGlobalScope);
  const _assignedNodes_1 = Symbol('_assignedNodes_1');
  const _assignedNodes_2 = Symbol('_assignedNodes_2');
  html$.SlotElement = class SlotElement extends html$.HtmlElement {
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
    [$assignedNodes](options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return this[_assignedNodes_1](options_1);
      }
      return this[_assignedNodes_2]();
    }
    [_assignedNodes_1](...args) {
      return this.assignedNodes.apply(this, args);
    }
    [_assignedNodes_2](...args) {
      return this.assignedNodes.apply(this, args);
    }
  };
  (html$.SlotElement.created = function() {
    this[name$35] = null;
    html$.SlotElement.__proto__.created.call(this);
  }).prototype = html$.SlotElement.prototype;
  dart.addTypeTests(html$.SlotElement);
  const name$35 = Symbol("SlotElement.name");
  dart.setMethodSignature(html$.SlotElement, () => ({
    __proto__: dart.getMethods(html$.SlotElement.__proto__),
    [$assignedNodes]: dart.fnType(core.List$(html$.Node), [], [core.Map]),
    [_assignedNodes_1]: dart.fnType(core.List$(html$.Node), [dart.dynamic]),
    [_assignedNodes_2]: dart.fnType(core.List$(html$.Node), [])
  }));
  dart.setFieldSignature(html$.SlotElement, () => ({
    __proto__: dart.getFields(html$.SlotElement.__proto__),
    [$name]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLSlotElement", html$.SlotElement);
  html$.SourceBuffer = class SourceBuffer extends html$.EventTarget {
    get [$appendWindowEnd]() {
      return this.appendWindowEnd;
    }
    set [$appendWindowEnd](value) {
      this.appendWindowEnd = value;
    }
    get [$appendWindowStart]() {
      return this.appendWindowStart;
    }
    set [$appendWindowStart](value) {
      this.appendWindowStart = value;
    }
    get [$audioTracks]() {
      return this.audioTracks;
    }
    get [$buffered]() {
      return this.buffered;
    }
    get [$mode]() {
      return this.mode;
    }
    set [$mode](value) {
      this.mode = value;
    }
    get [$timestampOffset]() {
      return this.timestampOffset;
    }
    set [$timestampOffset](value) {
      this.timestampOffset = value;
    }
    get [$trackDefaults]() {
      return this.trackDefaults;
    }
    set [$trackDefaults](value) {
      this.trackDefaults = value;
    }
    get [$updating]() {
      return this.updating;
    }
    get [$videoTracks]() {
      return this.videoTracks;
    }
    [$abort](...args) {
      return this.abort.apply(this, args);
    }
    [$appendBuffer](...args) {
      return this.appendBuffer.apply(this, args);
    }
    [$appendTypedData](...args) {
      return this.appendBuffer.apply(this, args);
    }
    [$remove](...args) {
      return this.remove.apply(this, args);
    }
    get [$onAbort]() {
      return html$.SourceBuffer.abortEvent.forTarget(this);
    }
    get [$onError]() {
      return html$.SourceBuffer.errorEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.SourceBuffer);
  const appendWindowEnd = Symbol("SourceBuffer.appendWindowEnd");
  const appendWindowStart = Symbol("SourceBuffer.appendWindowStart");
  const audioTracks$ = Symbol("SourceBuffer.audioTracks");
  const buffered$ = Symbol("SourceBuffer.buffered");
  const mode$2 = Symbol("SourceBuffer.mode");
  const timestampOffset = Symbol("SourceBuffer.timestampOffset");
  const trackDefaults = Symbol("SourceBuffer.trackDefaults");
  const updating = Symbol("SourceBuffer.updating");
  const videoTracks$ = Symbol("SourceBuffer.videoTracks");
  dart.setMethodSignature(html$.SourceBuffer, () => ({
    __proto__: dart.getMethods(html$.SourceBuffer.__proto__),
    [$abort]: dart.fnType(dart.void, []),
    [$appendBuffer]: dart.fnType(dart.void, [typed_data.ByteBuffer]),
    [$appendTypedData]: dart.fnType(dart.void, [typed_data.TypedData]),
    [$remove]: dart.fnType(dart.void, [core.num, core.num])
  }));
  dart.setGetterSignature(html$.SourceBuffer, () => ({
    __proto__: dart.getGetters(html$.SourceBuffer.__proto__),
    [$onAbort]: async.Stream$(html$.Event),
    [$onError]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.SourceBuffer, () => ({
    __proto__: dart.getFields(html$.SourceBuffer.__proto__),
    [$appendWindowEnd]: dart.fieldType(core.num),
    [$appendWindowStart]: dart.fieldType(core.num),
    [$audioTracks]: dart.finalFieldType(web_audio.AudioTrackList),
    [$buffered]: dart.finalFieldType(html$.TimeRanges),
    [$mode]: dart.fieldType(core.String),
    [$timestampOffset]: dart.fieldType(core.num),
    [$trackDefaults]: dart.fieldType(html$.TrackDefaultList),
    [$updating]: dart.finalFieldType(core.bool),
    [$videoTracks]: dart.finalFieldType(html$.VideoTrackList)
  }));
  dart.defineLazy(html$.SourceBuffer, {
    /*html$.SourceBuffer.abortEvent*/get abortEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("abort"));
    },
    /*html$.SourceBuffer.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    }
  });
  dart.registerExtension("SourceBuffer", html$.SourceBuffer);
  const EventTarget_ListMixin$ = class EventTarget_ListMixin extends html$.EventTarget {};
  (EventTarget_ListMixin$._created = function() {
    EventTarget_ListMixin$.__proto__._created.call(this);
  }).prototype = EventTarget_ListMixin$.prototype;
  (EventTarget_ListMixin$.__ = function() {
    EventTarget_ListMixin$.__proto__.__.call(this);
  }).prototype = EventTarget_ListMixin$.prototype;
  dart.applyMixin(EventTarget_ListMixin$, collection.ListMixin$(html$.SourceBuffer));
  const EventTarget_ImmutableListMixin$ = class EventTarget_ImmutableListMixin extends EventTarget_ListMixin$ {};
  (EventTarget_ImmutableListMixin$._created = function() {
    EventTarget_ImmutableListMixin$.__proto__._created.call(this);
  }).prototype = EventTarget_ImmutableListMixin$.prototype;
  (EventTarget_ImmutableListMixin$.__ = function() {
    EventTarget_ImmutableListMixin$.__proto__.__.call(this);
  }).prototype = EventTarget_ImmutableListMixin$.prototype;
  dart.applyMixin(EventTarget_ImmutableListMixin$, html$.ImmutableListMixin$(html$.SourceBuffer));
  html$.SourceBufferList = class SourceBufferList extends EventTarget_ImmutableListMixin$ {
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[index];
    }
    [$_set](index, value) {
      html$.SourceBuffer._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
  };
  html$.SourceBufferList.prototype[dart.isList] = true;
  dart.addTypeTests(html$.SourceBufferList);
  html$.SourceBufferList[dart.implements] = () => [JavaScriptIndexingBehaviorOfSourceBuffer(), ListOfSourceBuffer()];
  dart.setMethodSignature(html$.SourceBufferList, () => ({
    __proto__: dart.getMethods(html$.SourceBufferList.__proto__),
    [$_get]: dart.fnType(html$.SourceBuffer, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(html$.SourceBuffer, [core.int]),
    [$item]: dart.fnType(html$.SourceBuffer, [core.int])
  }));
  dart.setGetterSignature(html$.SourceBufferList, () => ({
    __proto__: dart.getGetters(html$.SourceBufferList.__proto__),
    [$length]: core.int,
    [$first]: html$.SourceBuffer,
    [$last]: html$.SourceBuffer,
    [$single]: html$.SourceBuffer
  }));
  dart.setSetterSignature(html$.SourceBufferList, () => ({
    __proto__: dart.getSetters(html$.SourceBufferList.__proto__),
    [$length]: core.int
  }));
  dart.registerExtension("SourceBufferList", html$.SourceBufferList);
  html$.SourceElement = class SourceElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("source");
    }
    get [$media]() {
      return this.media;
    }
    set [$media](value) {
      this.media = value;
    }
    get [$sizes]() {
      return this.sizes;
    }
    set [$sizes](value) {
      this.sizes = value;
    }
    get [$src]() {
      return this.src;
    }
    set [$src](value) {
      this.src = value;
    }
    get [$srcset]() {
      return this.srcset;
    }
    set [$srcset](value) {
      this.srcset = value;
    }
    get [$type]() {
      return this.type;
    }
    set [$type](value) {
      this.type = value;
    }
  };
  (html$.SourceElement.created = function() {
    this[media$4] = null;
    this[sizes$0] = null;
    this[src$5] = null;
    this[srcset$] = null;
    this[type$32] = null;
    html$.SourceElement.__proto__.created.call(this);
  }).prototype = html$.SourceElement.prototype;
  dart.addTypeTests(html$.SourceElement);
  const media$4 = Symbol("SourceElement.media");
  const sizes$0 = Symbol("SourceElement.sizes");
  const src$5 = Symbol("SourceElement.src");
  const srcset$ = Symbol("SourceElement.srcset");
  const type$32 = Symbol("SourceElement.type");
  dart.setFieldSignature(html$.SourceElement, () => ({
    __proto__: dart.getFields(html$.SourceElement.__proto__),
    [$media]: dart.fieldType(core.String),
    [$sizes]: dart.fieldType(core.String),
    [$src]: dart.fieldType(core.String),
    [$srcset]: dart.fieldType(core.String),
    [$type]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLSourceElement", html$.SourceElement);
  html$.SpanElement = class SpanElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("span");
    }
  };
  (html$.SpanElement.created = function() {
    html$.SpanElement.__proto__.created.call(this);
  }).prototype = html$.SpanElement.prototype;
  dart.addTypeTests(html$.SpanElement);
  dart.registerExtension("HTMLSpanElement", html$.SpanElement);
  html$.SpeechGrammar = class SpeechGrammar$ extends _interceptors.Interceptor {
    static new() {
      return html$.SpeechGrammar._create_1();
    }
    static _create_1() {
      return new SpeechGrammar();
    }
    get [$src]() {
      return this.src;
    }
    set [$src](value) {
      this.src = value;
    }
    get [$weight]() {
      return this.weight;
    }
    set [$weight](value) {
      this.weight = value;
    }
  };
  dart.addTypeTests(html$.SpeechGrammar);
  const src$6 = Symbol("SpeechGrammar.src");
  const weight$ = Symbol("SpeechGrammar.weight");
  dart.setFieldSignature(html$.SpeechGrammar, () => ({
    __proto__: dart.getFields(html$.SpeechGrammar.__proto__),
    [$src]: dart.fieldType(core.String),
    [$weight]: dart.fieldType(core.num)
  }));
  dart.registerExtension("SpeechGrammar", html$.SpeechGrammar);
  const Interceptor_ListMixin$$5 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$5.new = function() {
    Interceptor_ListMixin$$5.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$5.prototype;
  dart.applyMixin(Interceptor_ListMixin$$5, collection.ListMixin$(html$.SpeechGrammar));
  const Interceptor_ImmutableListMixin$$5 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$5 {};
  (Interceptor_ImmutableListMixin$$5.new = function() {
    Interceptor_ImmutableListMixin$$5.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$5.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$5, html$.ImmutableListMixin$(html$.SpeechGrammar));
  html$.SpeechGrammarList = class SpeechGrammarList$ extends Interceptor_ImmutableListMixin$$5 {
    static new() {
      return html$.SpeechGrammarList._create_1();
    }
    static _create_1() {
      return new SpeechGrammarList();
    }
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[index];
    }
    [$_set](index, value) {
      html$.SpeechGrammar._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [$addFromString](...args) {
      return this.addFromString.apply(this, args);
    }
    [$addFromUri](...args) {
      return this.addFromUri.apply(this, args);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
  };
  html$.SpeechGrammarList.prototype[dart.isList] = true;
  dart.addTypeTests(html$.SpeechGrammarList);
  html$.SpeechGrammarList[dart.implements] = () => [JavaScriptIndexingBehaviorOfSpeechGrammar(), ListOfSpeechGrammar()];
  dart.setMethodSignature(html$.SpeechGrammarList, () => ({
    __proto__: dart.getMethods(html$.SpeechGrammarList.__proto__),
    [$_get]: dart.fnType(html$.SpeechGrammar, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(html$.SpeechGrammar, [core.int]),
    [$addFromString]: dart.fnType(dart.void, [core.String], [core.num]),
    [$addFromUri]: dart.fnType(dart.void, [core.String], [core.num]),
    [$item]: dart.fnType(html$.SpeechGrammar, [core.int])
  }));
  dart.setGetterSignature(html$.SpeechGrammarList, () => ({
    __proto__: dart.getGetters(html$.SpeechGrammarList.__proto__),
    [$length]: core.int,
    [$first]: html$.SpeechGrammar,
    [$last]: html$.SpeechGrammar,
    [$single]: html$.SpeechGrammar
  }));
  dart.setSetterSignature(html$.SpeechGrammarList, () => ({
    __proto__: dart.getSetters(html$.SpeechGrammarList.__proto__),
    [$length]: core.int
  }));
  dart.registerExtension("SpeechGrammarList", html$.SpeechGrammarList);
  html$.SpeechRecognition = class SpeechRecognition extends html$.EventTarget {
    static get supported() {
      return !!(window.SpeechRecognition || window.webkitSpeechRecognition);
    }
    get [$audioTrack]() {
      return this.audioTrack;
    }
    set [$audioTrack](value) {
      this.audioTrack = value;
    }
    get [$continuous]() {
      return this.continuous;
    }
    set [$continuous](value) {
      this.continuous = value;
    }
    get [$grammars]() {
      return this.grammars;
    }
    set [$grammars](value) {
      this.grammars = value;
    }
    get [$interimResults]() {
      return this.interimResults;
    }
    set [$interimResults](value) {
      this.interimResults = value;
    }
    get [$lang]() {
      return this.lang;
    }
    set [$lang](value) {
      this.lang = value;
    }
    get [$maxAlternatives]() {
      return this.maxAlternatives;
    }
    set [$maxAlternatives](value) {
      this.maxAlternatives = value;
    }
    [$abort](...args) {
      return this.abort.apply(this, args);
    }
    [$start](...args) {
      return this.start.apply(this, args);
    }
    [$stop](...args) {
      return this.stop.apply(this, args);
    }
    get [$onAudioEnd]() {
      return html$.SpeechRecognition.audioEndEvent.forTarget(this);
    }
    get [$onAudioStart]() {
      return html$.SpeechRecognition.audioStartEvent.forTarget(this);
    }
    get [$onEnd]() {
      return html$.SpeechRecognition.endEvent.forTarget(this);
    }
    get [$onError]() {
      return html$.SpeechRecognition.errorEvent.forTarget(this);
    }
    get [$onNoMatch]() {
      return html$.SpeechRecognition.noMatchEvent.forTarget(this);
    }
    get [$onResult]() {
      return html$.SpeechRecognition.resultEvent.forTarget(this);
    }
    get [$onSoundEnd]() {
      return html$.SpeechRecognition.soundEndEvent.forTarget(this);
    }
    get [$onSoundStart]() {
      return html$.SpeechRecognition.soundStartEvent.forTarget(this);
    }
    get [$onSpeechEnd]() {
      return html$.SpeechRecognition.speechEndEvent.forTarget(this);
    }
    get [$onSpeechStart]() {
      return html$.SpeechRecognition.speechStartEvent.forTarget(this);
    }
    get [$onStart]() {
      return html$.SpeechRecognition.startEvent.forTarget(this);
    }
    static new() {
      return new (window.SpeechRecognition || window.webkitSpeechRecognition)();
    }
  };
  dart.addTypeTests(html$.SpeechRecognition);
  const audioTrack = Symbol("SpeechRecognition.audioTrack");
  const continuous = Symbol("SpeechRecognition.continuous");
  const grammars = Symbol("SpeechRecognition.grammars");
  const interimResults = Symbol("SpeechRecognition.interimResults");
  const lang$0 = Symbol("SpeechRecognition.lang");
  const maxAlternatives = Symbol("SpeechRecognition.maxAlternatives");
  dart.setMethodSignature(html$.SpeechRecognition, () => ({
    __proto__: dart.getMethods(html$.SpeechRecognition.__proto__),
    [$abort]: dart.fnType(dart.void, []),
    [$start]: dart.fnType(dart.void, []),
    [$stop]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(html$.SpeechRecognition, () => ({
    __proto__: dart.getGetters(html$.SpeechRecognition.__proto__),
    [$onAudioEnd]: async.Stream$(html$.Event),
    [$onAudioStart]: async.Stream$(html$.Event),
    [$onEnd]: async.Stream$(html$.Event),
    [$onError]: async.Stream$(html$.SpeechRecognitionError),
    [$onNoMatch]: async.Stream$(html$.SpeechRecognitionEvent),
    [$onResult]: async.Stream$(html$.SpeechRecognitionEvent),
    [$onSoundEnd]: async.Stream$(html$.Event),
    [$onSoundStart]: async.Stream$(html$.Event),
    [$onSpeechEnd]: async.Stream$(html$.Event),
    [$onSpeechStart]: async.Stream$(html$.Event),
    [$onStart]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.SpeechRecognition, () => ({
    __proto__: dart.getFields(html$.SpeechRecognition.__proto__),
    [$audioTrack]: dart.fieldType(html$.MediaStreamTrack),
    [$continuous]: dart.fieldType(core.bool),
    [$grammars]: dart.fieldType(html$.SpeechGrammarList),
    [$interimResults]: dart.fieldType(core.bool),
    [$lang]: dart.fieldType(core.String),
    [$maxAlternatives]: dart.fieldType(core.int)
  }));
  dart.defineLazy(html$.SpeechRecognition, {
    /*html$.SpeechRecognition.audioEndEvent*/get audioEndEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("audioend"));
    },
    /*html$.SpeechRecognition.audioStartEvent*/get audioStartEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("audiostart"));
    },
    /*html$.SpeechRecognition.endEvent*/get endEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("end"));
    },
    /*html$.SpeechRecognition.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfSpeechRecognitionError()).new("error"));
    },
    /*html$.SpeechRecognition.noMatchEvent*/get noMatchEvent() {
      return dart.const(new (EventStreamProviderOfSpeechRecognitionEvent()).new("nomatch"));
    },
    /*html$.SpeechRecognition.resultEvent*/get resultEvent() {
      return dart.const(new (EventStreamProviderOfSpeechRecognitionEvent()).new("result"));
    },
    /*html$.SpeechRecognition.soundEndEvent*/get soundEndEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("soundend"));
    },
    /*html$.SpeechRecognition.soundStartEvent*/get soundStartEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("soundstart"));
    },
    /*html$.SpeechRecognition.speechEndEvent*/get speechEndEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("speechend"));
    },
    /*html$.SpeechRecognition.speechStartEvent*/get speechStartEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("speechstart"));
    },
    /*html$.SpeechRecognition.startEvent*/get startEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("start"));
    }
  });
  dart.registerExtension("SpeechRecognition", html$.SpeechRecognition);
  html$.SpeechRecognitionAlternative = class SpeechRecognitionAlternative extends _interceptors.Interceptor {
    get [$confidence]() {
      return this.confidence;
    }
    get [$transcript]() {
      return this.transcript;
    }
  };
  dart.addTypeTests(html$.SpeechRecognitionAlternative);
  const confidence = Symbol("SpeechRecognitionAlternative.confidence");
  const transcript = Symbol("SpeechRecognitionAlternative.transcript");
  dart.setFieldSignature(html$.SpeechRecognitionAlternative, () => ({
    __proto__: dart.getFields(html$.SpeechRecognitionAlternative.__proto__),
    [$confidence]: dart.finalFieldType(core.num),
    [$transcript]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("SpeechRecognitionAlternative", html$.SpeechRecognitionAlternative);
  html$.SpeechRecognitionError = class SpeechRecognitionError$ extends html$.Event {
    static new(type, initDict) {
      if (initDict === void 0) initDict = null;
      if (initDict != null) {
        let initDict_1 = html_common.convertDartToNative_Dictionary(initDict);
        return html$.SpeechRecognitionError._create_1(type, initDict_1);
      }
      return html$.SpeechRecognitionError._create_2(type);
    }
    static _create_1(type, initDict) {
      return new SpeechRecognitionError(type, initDict);
    }
    static _create_2(type) {
      return new SpeechRecognitionError(type);
    }
    get [$error]() {
      return this.error;
    }
    get [$message]() {
      return this.message;
    }
  };
  dart.addTypeTests(html$.SpeechRecognitionError);
  const error$6 = Symbol("SpeechRecognitionError.error");
  const message$27 = Symbol("SpeechRecognitionError.message");
  dart.setFieldSignature(html$.SpeechRecognitionError, () => ({
    __proto__: dart.getFields(html$.SpeechRecognitionError.__proto__),
    [$error]: dart.finalFieldType(core.String),
    [$message]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("SpeechRecognitionError", html$.SpeechRecognitionError);
  html$.SpeechRecognitionEvent = class SpeechRecognitionEvent$ extends html$.Event {
    static new(type, initDict) {
      if (initDict === void 0) initDict = null;
      if (initDict != null) {
        let initDict_1 = html_common.convertDartToNative_Dictionary(initDict);
        return html$.SpeechRecognitionEvent._create_1(type, initDict_1);
      }
      return html$.SpeechRecognitionEvent._create_2(type);
    }
    static _create_1(type, initDict) {
      return new SpeechRecognitionEvent(type, initDict);
    }
    static _create_2(type) {
      return new SpeechRecognitionEvent(type);
    }
    get [$emma]() {
      return this.emma;
    }
    get [$interpretation]() {
      return this.interpretation;
    }
    get [$resultIndex]() {
      return this.resultIndex;
    }
    get [$results]() {
      return this.results;
    }
  };
  dart.addTypeTests(html$.SpeechRecognitionEvent);
  const emma = Symbol("SpeechRecognitionEvent.emma");
  const interpretation = Symbol("SpeechRecognitionEvent.interpretation");
  const resultIndex = Symbol("SpeechRecognitionEvent.resultIndex");
  const results = Symbol("SpeechRecognitionEvent.results");
  dart.setFieldSignature(html$.SpeechRecognitionEvent, () => ({
    __proto__: dart.getFields(html$.SpeechRecognitionEvent.__proto__),
    [$emma]: dart.finalFieldType(html$.Document),
    [$interpretation]: dart.finalFieldType(html$.Document),
    [$resultIndex]: dart.finalFieldType(core.int),
    [$results]: dart.finalFieldType(ListOfSpeechRecognitionResult())
  }));
  dart.registerExtension("SpeechRecognitionEvent", html$.SpeechRecognitionEvent);
  html$.SpeechRecognitionResult = class SpeechRecognitionResult extends _interceptors.Interceptor {
    get [$isFinal]() {
      return this.isFinal;
    }
    get [$length]() {
      return this.length;
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
  };
  dart.addTypeTests(html$.SpeechRecognitionResult);
  const isFinal = Symbol("SpeechRecognitionResult.isFinal");
  const length$13 = Symbol("SpeechRecognitionResult.length");
  dart.setMethodSignature(html$.SpeechRecognitionResult, () => ({
    __proto__: dart.getMethods(html$.SpeechRecognitionResult.__proto__),
    [$item]: dart.fnType(html$.SpeechRecognitionAlternative, [core.int])
  }));
  dart.setFieldSignature(html$.SpeechRecognitionResult, () => ({
    __proto__: dart.getFields(html$.SpeechRecognitionResult.__proto__),
    [$isFinal]: dart.finalFieldType(core.bool),
    [$length]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("SpeechRecognitionResult", html$.SpeechRecognitionResult);
  const _getVoices = Symbol('_getVoices');
  html$.SpeechSynthesis = class SpeechSynthesis extends html$.EventTarget {
    [$getVoices]() {
      let voices = this[_getVoices]();
      if (dart.notNull(voices[$length]) > 0) _js_helper.applyExtension("SpeechSynthesisVoice", voices[$_get](0));
      return voices;
    }
    get [$paused]() {
      return this.paused;
    }
    get [$pending]() {
      return this.pending;
    }
    get [$speaking]() {
      return this.speaking;
    }
    [$cancel](...args) {
      return this.cancel.apply(this, args);
    }
    [_getVoices](...args) {
      return this.getVoices.apply(this, args);
    }
    [$pause](...args) {
      return this.pause.apply(this, args);
    }
    [$resume](...args) {
      return this.resume.apply(this, args);
    }
    [$speak](...args) {
      return this.speak.apply(this, args);
    }
  };
  dart.addTypeTests(html$.SpeechSynthesis);
  const paused$ = Symbol("SpeechSynthesis.paused");
  const pending = Symbol("SpeechSynthesis.pending");
  const speaking = Symbol("SpeechSynthesis.speaking");
  dart.setMethodSignature(html$.SpeechSynthesis, () => ({
    __proto__: dart.getMethods(html$.SpeechSynthesis.__proto__),
    [$getVoices]: dart.fnType(core.List$(html$.SpeechSynthesisVoice), []),
    [$cancel]: dart.fnType(dart.void, []),
    [_getVoices]: dart.fnType(core.List$(html$.SpeechSynthesisVoice), []),
    [$pause]: dart.fnType(dart.void, []),
    [$resume]: dart.fnType(dart.void, []),
    [$speak]: dart.fnType(dart.void, [html$.SpeechSynthesisUtterance])
  }));
  dart.setFieldSignature(html$.SpeechSynthesis, () => ({
    __proto__: dart.getFields(html$.SpeechSynthesis.__proto__),
    [$paused]: dart.finalFieldType(core.bool),
    [$pending]: dart.finalFieldType(core.bool),
    [$speaking]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("SpeechSynthesis", html$.SpeechSynthesis);
  html$.SpeechSynthesisEvent = class SpeechSynthesisEvent extends html$.Event {
    get [$charIndex]() {
      return this.charIndex;
    }
    get [$elapsedTime]() {
      return this.elapsedTime;
    }
    get [$name]() {
      return this.name;
    }
    get [$utterance]() {
      return this.utterance;
    }
  };
  dart.addTypeTests(html$.SpeechSynthesisEvent);
  const charIndex = Symbol("SpeechSynthesisEvent.charIndex");
  const elapsedTime$ = Symbol("SpeechSynthesisEvent.elapsedTime");
  const name$36 = Symbol("SpeechSynthesisEvent.name");
  const utterance = Symbol("SpeechSynthesisEvent.utterance");
  dart.setFieldSignature(html$.SpeechSynthesisEvent, () => ({
    __proto__: dart.getFields(html$.SpeechSynthesisEvent.__proto__),
    [$charIndex]: dart.finalFieldType(core.int),
    [$elapsedTime]: dart.finalFieldType(core.num),
    [$name]: dart.finalFieldType(core.String),
    [$utterance]: dart.finalFieldType(html$.SpeechSynthesisUtterance)
  }));
  dart.registerExtension("SpeechSynthesisEvent", html$.SpeechSynthesisEvent);
  html$.SpeechSynthesisUtterance = class SpeechSynthesisUtterance$ extends html$.EventTarget {
    static new(text) {
      if (text === void 0) text = null;
      if (text != null) {
        return html$.SpeechSynthesisUtterance._create_1(text);
      }
      return html$.SpeechSynthesisUtterance._create_2();
    }
    static _create_1(text) {
      return new SpeechSynthesisUtterance(text);
    }
    static _create_2() {
      return new SpeechSynthesisUtterance();
    }
    get [$lang]() {
      return this.lang;
    }
    set [$lang](value) {
      this.lang = value;
    }
    get [$pitch]() {
      return this.pitch;
    }
    set [$pitch](value) {
      this.pitch = value;
    }
    get [$rate]() {
      return this.rate;
    }
    set [$rate](value) {
      this.rate = value;
    }
    get [$text]() {
      return this.text;
    }
    set [$text](value) {
      this.text = value;
    }
    get [$voice]() {
      return this.voice;
    }
    set [$voice](value) {
      this.voice = value;
    }
    get [$volume]() {
      return this.volume;
    }
    set [$volume](value) {
      this.volume = value;
    }
    get [$onBoundary]() {
      return html$.SpeechSynthesisUtterance.boundaryEvent.forTarget(this);
    }
    get [$onEnd]() {
      return html$.SpeechSynthesisUtterance.endEvent.forTarget(this);
    }
    get [$onError]() {
      return html$.SpeechSynthesisUtterance.errorEvent.forTarget(this);
    }
    get [$onMark]() {
      return html$.SpeechSynthesisUtterance.markEvent.forTarget(this);
    }
    get [$onPause]() {
      return html$.SpeechSynthesisUtterance.pauseEvent.forTarget(this);
    }
    get [$onResume]() {
      return html$.SpeechSynthesisUtterance.resumeEvent.forTarget(this);
    }
    get [$onStart]() {
      return html$.SpeechSynthesisUtterance.startEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.SpeechSynthesisUtterance);
  const lang$1 = Symbol("SpeechSynthesisUtterance.lang");
  const pitch = Symbol("SpeechSynthesisUtterance.pitch");
  const rate = Symbol("SpeechSynthesisUtterance.rate");
  const text$0 = Symbol("SpeechSynthesisUtterance.text");
  const voice = Symbol("SpeechSynthesisUtterance.voice");
  const volume$ = Symbol("SpeechSynthesisUtterance.volume");
  dart.setGetterSignature(html$.SpeechSynthesisUtterance, () => ({
    __proto__: dart.getGetters(html$.SpeechSynthesisUtterance.__proto__),
    [$onBoundary]: async.Stream$(html$.SpeechSynthesisEvent),
    [$onEnd]: async.Stream$(html$.SpeechSynthesisEvent),
    [$onError]: async.Stream$(html$.Event),
    [$onMark]: async.Stream$(html$.SpeechSynthesisEvent),
    [$onPause]: async.Stream$(html$.Event),
    [$onResume]: async.Stream$(html$.SpeechSynthesisEvent),
    [$onStart]: async.Stream$(html$.SpeechSynthesisEvent)
  }));
  dart.setFieldSignature(html$.SpeechSynthesisUtterance, () => ({
    __proto__: dart.getFields(html$.SpeechSynthesisUtterance.__proto__),
    [$lang]: dart.fieldType(core.String),
    [$pitch]: dart.fieldType(core.num),
    [$rate]: dart.fieldType(core.num),
    [$text]: dart.fieldType(core.String),
    [$voice]: dart.fieldType(html$.SpeechSynthesisVoice),
    [$volume]: dart.fieldType(core.num)
  }));
  dart.defineLazy(html$.SpeechSynthesisUtterance, {
    /*html$.SpeechSynthesisUtterance.boundaryEvent*/get boundaryEvent() {
      return dart.const(new (EventStreamProviderOfSpeechSynthesisEvent()).new("boundary"));
    },
    /*html$.SpeechSynthesisUtterance.endEvent*/get endEvent() {
      return dart.const(new (EventStreamProviderOfSpeechSynthesisEvent()).new("end"));
    },
    /*html$.SpeechSynthesisUtterance.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    },
    /*html$.SpeechSynthesisUtterance.markEvent*/get markEvent() {
      return dart.const(new (EventStreamProviderOfSpeechSynthesisEvent()).new("mark"));
    },
    /*html$.SpeechSynthesisUtterance.pauseEvent*/get pauseEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("pause"));
    },
    /*html$.SpeechSynthesisUtterance.resumeEvent*/get resumeEvent() {
      return dart.const(new (EventStreamProviderOfSpeechSynthesisEvent()).new("resume"));
    },
    /*html$.SpeechSynthesisUtterance.startEvent*/get startEvent() {
      return dart.const(new (EventStreamProviderOfSpeechSynthesisEvent()).new("start"));
    }
  });
  dart.registerExtension("SpeechSynthesisUtterance", html$.SpeechSynthesisUtterance);
  html$.SpeechSynthesisVoice = class SpeechSynthesisVoice extends _interceptors.Interceptor {
    get [$defaultValue]() {
      return this.default;
    }
    get [$lang]() {
      return this.lang;
    }
    get [$localService]() {
      return this.localService;
    }
    get [$name]() {
      return this.name;
    }
    get [$voiceUri]() {
      return this.voiceURI;
    }
  };
  dart.addTypeTests(html$.SpeechSynthesisVoice);
  const defaultValue$0 = Symbol("SpeechSynthesisVoice.defaultValue");
  const lang$2 = Symbol("SpeechSynthesisVoice.lang");
  const localService = Symbol("SpeechSynthesisVoice.localService");
  const name$37 = Symbol("SpeechSynthesisVoice.name");
  const voiceUri = Symbol("SpeechSynthesisVoice.voiceUri");
  dart.setFieldSignature(html$.SpeechSynthesisVoice, () => ({
    __proto__: dart.getFields(html$.SpeechSynthesisVoice.__proto__),
    [$defaultValue]: dart.finalFieldType(core.bool),
    [$lang]: dart.finalFieldType(core.String),
    [$localService]: dart.finalFieldType(core.bool),
    [$name]: dart.finalFieldType(core.String),
    [$voiceUri]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("SpeechSynthesisVoice", html$.SpeechSynthesisVoice);
  html$.StaticRange = class StaticRange extends _interceptors.Interceptor {
    get [$collapsed]() {
      return this.collapsed;
    }
    get [$endContainer]() {
      return this.endContainer;
    }
    get [$endOffset]() {
      return this.endOffset;
    }
    get [$startContainer]() {
      return this.startContainer;
    }
    get [$startOffset]() {
      return this.startOffset;
    }
  };
  dart.addTypeTests(html$.StaticRange);
  const collapsed$ = Symbol("StaticRange.collapsed");
  const endContainer$ = Symbol("StaticRange.endContainer");
  const endOffset$ = Symbol("StaticRange.endOffset");
  const startContainer$ = Symbol("StaticRange.startContainer");
  const startOffset$ = Symbol("StaticRange.startOffset");
  dart.setFieldSignature(html$.StaticRange, () => ({
    __proto__: dart.getFields(html$.StaticRange.__proto__),
    [$collapsed]: dart.finalFieldType(core.bool),
    [$endContainer]: dart.finalFieldType(html$.Node),
    [$endOffset]: dart.finalFieldType(core.int),
    [$startContainer]: dart.finalFieldType(html$.Node),
    [$startOffset]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("StaticRange", html$.StaticRange);
  const _setItem = Symbol('_setItem');
  const _removeItem = Symbol('_removeItem');
  const _key = Symbol('_key');
  const _length$2 = Symbol('_length');
  const Interceptor_MapMixin$$1 = class Interceptor_MapMixin extends _interceptors.Interceptor {};
  (Interceptor_MapMixin$$1.new = function() {
    Interceptor_MapMixin$$1.__proto__.new.call(this);
  }).prototype = Interceptor_MapMixin$$1.prototype;
  dart.applyMixin(Interceptor_MapMixin$$1, collection.MapMixin$(core.String, core.String));
  html$.Storage = class Storage extends Interceptor_MapMixin$$1 {
    [$addAll](other) {
      MapOfString$String()._check(other);
      other[$forEach](dart.fn((k, v) => {
        this[$_set](k, v);
      }, StringAndStringToNull()));
    }
    [$containsValue](value) {
      return this[$values][$any](dart.fn(e => core.identical(e, value), StringTobool()));
    }
    [$containsKey](key) {
      return this[_getItem](core.String._check(key)) != null;
    }
    [$_get](key) {
      return this[_getItem](core.String._check(key));
    }
    [$_set](key, value) {
      core.String._check(key);
      core.String._check(value);
      this[_setItem](key, value);
      return value;
    }
    [$putIfAbsent](key, ifAbsent) {
      core.String._check(key);
      VoidToString()._check(ifAbsent);
      if (!dart.test(this[$containsKey](key))) this[$_set](key, ifAbsent());
      return this[$_get](key);
    }
    [$remove](key) {
      let value = this[$_get](key);
      this[_removeItem](core.String._check(key));
      return value;
    }
    [$clear]() {
      return this[_clear$0]();
    }
    [$forEach](f) {
      for (let i = 0; true; i++) {
        let key = this[_key](i);
        if (key == null) return;
        f(key, this[$_get](key));
      }
    }
    get [$keys]() {
      let keys = JSArrayOfString().of([]);
      this[$forEach](dart.fn((k, v) => keys[$add](k), StringAndStringTovoid()));
      return keys;
    }
    get [$values]() {
      let values = JSArrayOfString().of([]);
      this[$forEach](dart.fn((k, v) => values[$add](v), StringAndStringTovoid()));
      return values;
    }
    get [$length]() {
      return this[_length$2];
    }
    get [$isEmpty]() {
      return this[_key](0) == null;
    }
    get [$isNotEmpty]() {
      return !dart.test(this[$isEmpty]);
    }
    get [_length$2]() {
      return this.length;
    }
    [_clear$0](...args) {
      return this.clear.apply(this, args);
    }
    [_getItem](...args) {
      return this.getItem.apply(this, args);
    }
    [_key](...args) {
      return this.key.apply(this, args);
    }
    [_removeItem](...args) {
      return this.removeItem.apply(this, args);
    }
    [_setItem](...args) {
      return this.setItem.apply(this, args);
    }
  };
  dart.addTypeTests(html$.Storage);
  dart.setMethodSignature(html$.Storage, () => ({
    __proto__: dart.getMethods(html$.Storage.__proto__),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    [$containsValue]: dart.fnType(core.bool, [core.Object]),
    [$containsKey]: dart.fnType(core.bool, [core.Object]),
    [$_get]: dart.fnType(core.String, [core.Object]),
    [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
    [$putIfAbsent]: dart.fnType(core.String, [core.Object, core.Object]),
    [$remove]: dart.fnType(core.String, [core.Object]),
    [$clear]: dart.fnType(dart.void, []),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, core.String])]),
    [_clear$0]: dart.fnType(dart.void, []),
    [_getItem]: dart.fnType(core.String, [core.String]),
    [_key]: dart.fnType(core.String, [core.int]),
    [_removeItem]: dart.fnType(dart.void, [core.String]),
    [_setItem]: dart.fnType(dart.void, [core.String, core.String])
  }));
  dart.setGetterSignature(html$.Storage, () => ({
    __proto__: dart.getGetters(html$.Storage.__proto__),
    [$keys]: core.Iterable$(core.String),
    [$values]: core.Iterable$(core.String),
    [$length]: core.int,
    [$isEmpty]: core.bool,
    [$isNotEmpty]: core.bool
  }));
  dart.setFieldSignature(html$.Storage, () => ({
    __proto__: dart.getFields(html$.Storage.__proto__),
    [_length$2]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("Storage", html$.Storage);
  const _initStorageEvent = Symbol('_initStorageEvent');
  html$.StorageEvent = class StorageEvent$ extends html$.Event {
    static new(type, opts) {
      let canBubble = opts && 'canBubble' in opts ? opts.canBubble : false;
      let cancelable = opts && 'cancelable' in opts ? opts.cancelable : false;
      let key = opts && 'key' in opts ? opts.key : null;
      let oldValue = opts && 'oldValue' in opts ? opts.oldValue : null;
      let newValue = opts && 'newValue' in opts ? opts.newValue : null;
      let url = opts && 'url' in opts ? opts.url : null;
      let storageArea = opts && 'storageArea' in opts ? opts.storageArea : null;
      let e = html$.StorageEvent._check(html$.document[_createEvent]("StorageEvent"));
      e[_initStorageEvent](type, canBubble, cancelable, key, oldValue, newValue, url, storageArea);
      return e;
    }
    static __(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.StorageEvent._create_1(type, eventInitDict_1);
      }
      return html$.StorageEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new StorageEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new StorageEvent(type);
    }
    get [$key]() {
      return this.key;
    }
    get [$newValue]() {
      return this.newValue;
    }
    get [$oldValue]() {
      return this.oldValue;
    }
    get [$storageArea]() {
      return this.storageArea;
    }
    get [$url]() {
      return this.url;
    }
    [_initStorageEvent](...args) {
      return this.initStorageEvent.apply(this, args);
    }
  };
  dart.addTypeTests(html$.StorageEvent);
  const key$1 = Symbol("StorageEvent.key");
  const newValue$ = Symbol("StorageEvent.newValue");
  const oldValue$ = Symbol("StorageEvent.oldValue");
  const storageArea = Symbol("StorageEvent.storageArea");
  const url$4 = Symbol("StorageEvent.url");
  dart.setMethodSignature(html$.StorageEvent, () => ({
    __proto__: dart.getMethods(html$.StorageEvent.__proto__),
    [_initStorageEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, core.String, core.String, core.String, core.String, html$.Storage])
  }));
  dart.setFieldSignature(html$.StorageEvent, () => ({
    __proto__: dart.getFields(html$.StorageEvent.__proto__),
    [$key]: dart.finalFieldType(core.String),
    [$newValue]: dart.finalFieldType(core.String),
    [$oldValue]: dart.finalFieldType(core.String),
    [$storageArea]: dart.finalFieldType(html$.Storage),
    [$url]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("StorageEvent", html$.StorageEvent);
  html$.StorageManager = class StorageManager extends _interceptors.Interceptor {
    [$estimate]() {
      return html$.promiseToFutureAsMap(this.estimate());
    }
    [$persist]() {
      return html$.promiseToFuture(core.bool, this.persist());
    }
    [$persisted]() {
      return html$.promiseToFuture(core.bool, this.persisted());
    }
  };
  dart.addTypeTests(html$.StorageManager);
  dart.setMethodSignature(html$.StorageManager, () => ({
    __proto__: dart.getMethods(html$.StorageManager.__proto__),
    [$estimate]: dart.fnType(async.Future$(core.Map$(core.String, dart.dynamic)), []),
    [$persist]: dart.fnType(async.Future$(core.bool), []),
    [$persisted]: dart.fnType(async.Future$(core.bool), [])
  }));
  dart.registerExtension("StorageManager", html$.StorageManager);
  html$.StyleElement = class StyleElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("style");
    }
    get [$disabled]() {
      return this.disabled;
    }
    set [$disabled](value) {
      this.disabled = value;
    }
    get [$media]() {
      return this.media;
    }
    set [$media](value) {
      this.media = value;
    }
    get [$sheet]() {
      return this.sheet;
    }
    get [$type]() {
      return this.type;
    }
    set [$type](value) {
      this.type = value;
    }
  };
  (html$.StyleElement.created = function() {
    this[disabled$8] = null;
    this[media$5] = null;
    this[sheet$0] = null;
    this[type$33] = null;
    html$.StyleElement.__proto__.created.call(this);
  }).prototype = html$.StyleElement.prototype;
  dart.addTypeTests(html$.StyleElement);
  const disabled$8 = Symbol("StyleElement.disabled");
  const media$5 = Symbol("StyleElement.media");
  const sheet$0 = Symbol("StyleElement.sheet");
  const type$33 = Symbol("StyleElement.type");
  dart.setFieldSignature(html$.StyleElement, () => ({
    __proto__: dart.getFields(html$.StyleElement.__proto__),
    [$disabled]: dart.fieldType(core.bool),
    [$media]: dart.fieldType(core.String),
    [$sheet]: dart.finalFieldType(html$.StyleSheet),
    [$type]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLStyleElement", html$.StyleElement);
  html$.StyleMedia = class StyleMedia extends _interceptors.Interceptor {
    get [$type]() {
      return this.type;
    }
    [$matchMedium](...args) {
      return this.matchMedium.apply(this, args);
    }
  };
  dart.addTypeTests(html$.StyleMedia);
  const type$34 = Symbol("StyleMedia.type");
  dart.setMethodSignature(html$.StyleMedia, () => ({
    __proto__: dart.getMethods(html$.StyleMedia.__proto__),
    [$matchMedium]: dart.fnType(core.bool, [core.String])
  }));
  dart.setFieldSignature(html$.StyleMedia, () => ({
    __proto__: dart.getFields(html$.StyleMedia.__proto__),
    [$type]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("StyleMedia", html$.StyleMedia);
  html$.StylePropertyMapReadonly = class StylePropertyMapReadonly extends _interceptors.Interceptor {
    [$get](...args) {
      return this.get.apply(this, args);
    }
    [$getAll](...args) {
      return this.getAll.apply(this, args);
    }
    [$getProperties](...args) {
      return this.getProperties.apply(this, args);
    }
    [$has](...args) {
      return this.has.apply(this, args);
    }
  };
  dart.addTypeTests(html$.StylePropertyMapReadonly);
  dart.setMethodSignature(html$.StylePropertyMapReadonly, () => ({
    __proto__: dart.getMethods(html$.StylePropertyMapReadonly.__proto__),
    [$get]: dart.fnType(html$.CssStyleValue, [core.String]),
    [$getAll]: dart.fnType(core.List$(html$.CssStyleValue), [core.String]),
    [$getProperties]: dart.fnType(core.List$(core.String), []),
    [$has]: dart.fnType(core.bool, [core.String])
  }));
  dart.registerExtension("StylePropertyMapReadonly", html$.StylePropertyMapReadonly);
  html$.StylePropertyMap = class StylePropertyMap extends html$.StylePropertyMapReadonly {
    [$append](...args) {
      return this.append.apply(this, args);
    }
    [$delete](...args) {
      return this.delete.apply(this, args);
    }
    [$set](...args) {
      return this.set.apply(this, args);
    }
  };
  dart.addTypeTests(html$.StylePropertyMap);
  dart.setMethodSignature(html$.StylePropertyMap, () => ({
    __proto__: dart.getMethods(html$.StylePropertyMap.__proto__),
    [$append]: dart.fnType(dart.void, [core.String, core.Object]),
    [$delete]: dart.fnType(dart.void, [core.String]),
    [$set]: dart.fnType(dart.void, [core.String, core.Object])
  }));
  dart.registerExtension("StylePropertyMap", html$.StylePropertyMap);
  html$.SyncEvent = class SyncEvent$ extends html$.ExtendableEvent {
    static new(type, init) {
      let init_1 = html_common.convertDartToNative_Dictionary(init);
      return html$.SyncEvent._create_1(type, init_1);
    }
    static _create_1(type, init) {
      return new SyncEvent(type, init);
    }
    get [$lastChance]() {
      return this.lastChance;
    }
    get [$tag]() {
      return this.tag;
    }
  };
  dart.addTypeTests(html$.SyncEvent);
  const lastChance = Symbol("SyncEvent.lastChance");
  const tag$ = Symbol("SyncEvent.tag");
  dart.setFieldSignature(html$.SyncEvent, () => ({
    __proto__: dart.getFields(html$.SyncEvent.__proto__),
    [$lastChance]: dart.finalFieldType(core.bool),
    [$tag]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("SyncEvent", html$.SyncEvent);
  html$.SyncManager = class SyncManager extends _interceptors.Interceptor {
    [$getTags]() {
      return html$.promiseToFuture(ListOfString(), this.getTags());
    }
    [$register](tag) {
      return html$.promiseToFuture(dart.dynamic, this.register(tag));
    }
  };
  dart.addTypeTests(html$.SyncManager);
  dart.setMethodSignature(html$.SyncManager, () => ({
    __proto__: dart.getMethods(html$.SyncManager.__proto__),
    [$getTags]: dart.fnType(async.Future$(core.List$(core.String)), []),
    [$register]: dart.fnType(async.Future, [core.String])
  }));
  dart.registerExtension("SyncManager", html$.SyncManager);
  html$.TableCaptionElement = class TableCaptionElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("caption");
    }
  };
  (html$.TableCaptionElement.created = function() {
    html$.TableCaptionElement.__proto__.created.call(this);
  }).prototype = html$.TableCaptionElement.prototype;
  dart.addTypeTests(html$.TableCaptionElement);
  dart.registerExtension("HTMLTableCaptionElement", html$.TableCaptionElement);
  html$.TableCellElement = class TableCellElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("td");
    }
    get [$cellIndex]() {
      return this.cellIndex;
    }
    get [$colSpan]() {
      return this.colSpan;
    }
    set [$colSpan](value) {
      this.colSpan = value;
    }
    get [$headers]() {
      return this.headers;
    }
    set [$headers](value) {
      this.headers = value;
    }
    get [$rowSpan]() {
      return this.rowSpan;
    }
    set [$rowSpan](value) {
      this.rowSpan = value;
    }
  };
  (html$.TableCellElement.created = function() {
    this[cellIndex] = null;
    this[colSpan$] = null;
    this[headers] = null;
    this[rowSpan$] = null;
    html$.TableCellElement.__proto__.created.call(this);
  }).prototype = html$.TableCellElement.prototype;
  dart.addTypeTests(html$.TableCellElement);
  const cellIndex = Symbol("TableCellElement.cellIndex");
  const colSpan$ = Symbol("TableCellElement.colSpan");
  const headers = Symbol("TableCellElement.headers");
  const rowSpan$ = Symbol("TableCellElement.rowSpan");
  dart.setFieldSignature(html$.TableCellElement, () => ({
    __proto__: dart.getFields(html$.TableCellElement.__proto__),
    [$cellIndex]: dart.finalFieldType(core.int),
    [$colSpan]: dart.fieldType(core.int),
    [$headers]: dart.fieldType(core.String),
    [$rowSpan]: dart.fieldType(core.int)
  }));
  dart.registerExtension("HTMLTableCellElement", html$.TableCellElement);
  dart.registerExtension("HTMLTableDataCellElement", html$.TableCellElement);
  dart.registerExtension("HTMLTableHeaderCellElement", html$.TableCellElement);
  html$.TableColElement = class TableColElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("col");
    }
    get [$span]() {
      return this.span;
    }
    set [$span](value) {
      this.span = value;
    }
  };
  (html$.TableColElement.created = function() {
    this[span] = null;
    html$.TableColElement.__proto__.created.call(this);
  }).prototype = html$.TableColElement.prototype;
  dart.addTypeTests(html$.TableColElement);
  const span = Symbol("TableColElement.span");
  dart.setFieldSignature(html$.TableColElement, () => ({
    __proto__: dart.getFields(html$.TableColElement.__proto__),
    [$span]: dart.fieldType(core.int)
  }));
  dart.registerExtension("HTMLTableColElement", html$.TableColElement);
  const _rows = Symbol('_rows');
  const _tBodies = Symbol('_tBodies');
  const _createCaption = Symbol('_createCaption');
  const _createTBody = Symbol('_createTBody');
  const _createTFoot = Symbol('_createTFoot');
  const _createTHead = Symbol('_createTHead');
  const _insertRow = Symbol('_insertRow');
  const _nativeCreateTBody = Symbol('_nativeCreateTBody');
  html$.TableElement = class TableElement extends html$.HtmlElement {
    get [$tBodies]() {
      return new (_WrappedListOfTableSectionElement()).new(this[_tBodies]);
    }
    get [$rows]() {
      return new (_WrappedListOfTableRowElement()).new(this[_rows]);
    }
    [$addRow]() {
      return this[$insertRow](-1);
    }
    [$createCaption]() {
      return this[_createCaption]();
    }
    [$createTBody]() {
      return this[_createTBody]();
    }
    [$createTFoot]() {
      return this[_createTFoot]();
    }
    [$createTHead]() {
      return this[_createTHead]();
    }
    [$insertRow](index) {
      return this[_insertRow](index);
    }
    [_createTBody]() {
      if (!!this.createTBody) {
        return this[_nativeCreateTBody]();
      }
      let tbody = html$.Element.tag("tbody");
      this[$children][$add](tbody);
      return html$.TableSectionElement._check(tbody);
    }
    [_nativeCreateTBody](...args) {
      return this.createTBody.apply(this, args);
    }
    [$createFragment](html, opts) {
      let validator = opts && 'validator' in opts ? opts.validator : null;
      let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
      if (dart.test(html$.Range.supportsCreateContextualFragment)) {
        return super[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
      }
      let contextualHtml = "<table>" + dart.str(html) + "</table>";
      let table = html$.Element.html(contextualHtml, {validator: validator, treeSanitizer: treeSanitizer});
      let fragment = html$.DocumentFragment.new();
      fragment[$nodes][$addAll](table[$nodes]);
      return fragment;
    }
    static new() {
      return html$.document.createElement("table");
    }
    get [$caption]() {
      return this.caption;
    }
    set [$caption](value) {
      this.caption = value;
    }
    get [_rows]() {
      return this.rows;
    }
    get [_tBodies]() {
      return this.tBodies;
    }
    get [$tFoot]() {
      return this.tFoot;
    }
    set [$tFoot](value) {
      this.tFoot = value;
    }
    get [$tHead]() {
      return this.tHead;
    }
    set [$tHead](value) {
      this.tHead = value;
    }
    [_createCaption](...args) {
      return this.createCaption.apply(this, args);
    }
    [_createTFoot](...args) {
      return this.createTFoot.apply(this, args);
    }
    [_createTHead](...args) {
      return this.createTHead.apply(this, args);
    }
    [$deleteCaption](...args) {
      return this.deleteCaption.apply(this, args);
    }
    [$deleteRow](...args) {
      return this.deleteRow.apply(this, args);
    }
    [$deleteTFoot](...args) {
      return this.deleteTFoot.apply(this, args);
    }
    [$deleteTHead](...args) {
      return this.deleteTHead.apply(this, args);
    }
    [_insertRow](...args) {
      return this.insertRow.apply(this, args);
    }
  };
  (html$.TableElement.created = function() {
    this[caption] = null;
    this[_rows] = null;
    this[_tBodies] = null;
    this[tFoot] = null;
    this[tHead] = null;
    html$.TableElement.__proto__.created.call(this);
  }).prototype = html$.TableElement.prototype;
  dart.addTypeTests(html$.TableElement);
  const caption = Symbol("TableElement.caption");
  const tFoot = Symbol("TableElement.tFoot");
  const tHead = Symbol("TableElement.tHead");
  dart.setMethodSignature(html$.TableElement, () => ({
    __proto__: dart.getMethods(html$.TableElement.__proto__),
    [$addRow]: dart.fnType(html$.TableRowElement, []),
    [$createCaption]: dart.fnType(html$.TableCaptionElement, []),
    [$createTBody]: dart.fnType(html$.TableSectionElement, []),
    [$createTFoot]: dart.fnType(html$.TableSectionElement, []),
    [$createTHead]: dart.fnType(html$.TableSectionElement, []),
    [$insertRow]: dart.fnType(html$.TableRowElement, [core.int]),
    [_createTBody]: dart.fnType(html$.TableSectionElement, []),
    [_nativeCreateTBody]: dart.fnType(html$.TableSectionElement, []),
    [_createCaption]: dart.fnType(html$.TableCaptionElement, []),
    [_createTFoot]: dart.fnType(html$.TableSectionElement, []),
    [_createTHead]: dart.fnType(html$.TableSectionElement, []),
    [$deleteCaption]: dart.fnType(dart.void, []),
    [$deleteRow]: dart.fnType(dart.void, [core.int]),
    [$deleteTFoot]: dart.fnType(dart.void, []),
    [$deleteTHead]: dart.fnType(dart.void, []),
    [_insertRow]: dart.fnType(html$.TableRowElement, [], [core.int])
  }));
  dart.setGetterSignature(html$.TableElement, () => ({
    __proto__: dart.getGetters(html$.TableElement.__proto__),
    [$tBodies]: core.List$(html$.TableSectionElement),
    [$rows]: core.List$(html$.TableRowElement)
  }));
  dart.setFieldSignature(html$.TableElement, () => ({
    __proto__: dart.getFields(html$.TableElement.__proto__),
    [$caption]: dart.fieldType(html$.TableCaptionElement),
    [_rows]: dart.finalFieldType(ListOfNode()),
    [_tBodies]: dart.finalFieldType(ListOfNode()),
    [$tFoot]: dart.fieldType(html$.TableSectionElement),
    [$tHead]: dart.fieldType(html$.TableSectionElement)
  }));
  dart.registerExtension("HTMLTableElement", html$.TableElement);
  const _cells = Symbol('_cells');
  const _insertCell = Symbol('_insertCell');
  html$.TableRowElement = class TableRowElement extends html$.HtmlElement {
    get [$cells]() {
      return new (_WrappedListOfTableCellElement()).new(this[_cells]);
    }
    [$addCell]() {
      return this[$insertCell](-1);
    }
    [$insertCell](index) {
      return html$.TableCellElement._check(this[_insertCell](index));
    }
    [$createFragment](html, opts) {
      let validator = opts && 'validator' in opts ? opts.validator : null;
      let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
      if (dart.test(html$.Range.supportsCreateContextualFragment)) {
        return super[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
      }
      let fragment = html$.DocumentFragment.new();
      let section = html$.TableElement.new()[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer})[$nodes][$single];
      let row = section[$nodes][$single];
      fragment[$nodes][$addAll](row[$nodes]);
      return fragment;
    }
    static new() {
      return html$.document.createElement("tr");
    }
    get [_cells]() {
      return this.cells;
    }
    get [$rowIndex]() {
      return this.rowIndex;
    }
    get [$sectionRowIndex]() {
      return this.sectionRowIndex;
    }
    [$deleteCell](...args) {
      return this.deleteCell.apply(this, args);
    }
    [_insertCell](...args) {
      return this.insertCell.apply(this, args);
    }
  };
  (html$.TableRowElement.created = function() {
    this[_cells] = null;
    this[rowIndex$] = null;
    this[sectionRowIndex] = null;
    html$.TableRowElement.__proto__.created.call(this);
  }).prototype = html$.TableRowElement.prototype;
  dart.addTypeTests(html$.TableRowElement);
  const rowIndex$ = Symbol("TableRowElement.rowIndex");
  const sectionRowIndex = Symbol("TableRowElement.sectionRowIndex");
  dart.setMethodSignature(html$.TableRowElement, () => ({
    __proto__: dart.getMethods(html$.TableRowElement.__proto__),
    [$addCell]: dart.fnType(html$.TableCellElement, []),
    [$insertCell]: dart.fnType(html$.TableCellElement, [core.int]),
    [$deleteCell]: dart.fnType(dart.void, [core.int]),
    [_insertCell]: dart.fnType(html$.HtmlElement, [], [core.int])
  }));
  dart.setGetterSignature(html$.TableRowElement, () => ({
    __proto__: dart.getGetters(html$.TableRowElement.__proto__),
    [$cells]: core.List$(html$.TableCellElement)
  }));
  dart.setFieldSignature(html$.TableRowElement, () => ({
    __proto__: dart.getFields(html$.TableRowElement.__proto__),
    [_cells]: dart.finalFieldType(ListOfNode()),
    [$rowIndex]: dart.finalFieldType(core.int),
    [$sectionRowIndex]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("HTMLTableRowElement", html$.TableRowElement);
  html$.TableSectionElement = class TableSectionElement extends html$.HtmlElement {
    get [$rows]() {
      return new (_WrappedListOfTableRowElement()).new(this[_rows]);
    }
    [$addRow]() {
      return this[$insertRow](-1);
    }
    [$insertRow](index) {
      return html$.TableRowElement._check(this[_insertRow](index));
    }
    [$createFragment](html, opts) {
      let validator = opts && 'validator' in opts ? opts.validator : null;
      let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
      if (dart.test(html$.Range.supportsCreateContextualFragment)) {
        return super[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
      }
      let fragment = html$.DocumentFragment.new();
      let section = html$.TableElement.new()[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer})[$nodes][$single];
      fragment[$nodes][$addAll](section[$nodes]);
      return fragment;
    }
    get [_rows]() {
      return this.rows;
    }
    [$deleteRow](...args) {
      return this.deleteRow.apply(this, args);
    }
    [_insertRow](...args) {
      return this.insertRow.apply(this, args);
    }
  };
  (html$.TableSectionElement.created = function() {
    this[_rows] = null;
    html$.TableSectionElement.__proto__.created.call(this);
  }).prototype = html$.TableSectionElement.prototype;
  dart.addTypeTests(html$.TableSectionElement);
  dart.setMethodSignature(html$.TableSectionElement, () => ({
    __proto__: dart.getMethods(html$.TableSectionElement.__proto__),
    [$addRow]: dart.fnType(html$.TableRowElement, []),
    [$insertRow]: dart.fnType(html$.TableRowElement, [core.int]),
    [$deleteRow]: dart.fnType(dart.void, [core.int]),
    [_insertRow]: dart.fnType(html$.HtmlElement, [], [core.int])
  }));
  dart.setGetterSignature(html$.TableSectionElement, () => ({
    __proto__: dart.getGetters(html$.TableSectionElement.__proto__),
    [$rows]: core.List$(html$.TableRowElement)
  }));
  dart.setFieldSignature(html$.TableSectionElement, () => ({
    __proto__: dart.getFields(html$.TableSectionElement.__proto__),
    [_rows]: dart.finalFieldType(ListOfNode())
  }));
  dart.registerExtension("HTMLTableSectionElement", html$.TableSectionElement);
  html$.TaskAttributionTiming = class TaskAttributionTiming extends html$.PerformanceEntry {
    get [$containerId]() {
      return this.containerId;
    }
    get [$containerName]() {
      return this.containerName;
    }
    get [$containerSrc]() {
      return this.containerSrc;
    }
    get [$containerType]() {
      return this.containerType;
    }
    get [$scriptUrl]() {
      return this.scriptURL;
    }
  };
  dart.addTypeTests(html$.TaskAttributionTiming);
  const containerId = Symbol("TaskAttributionTiming.containerId");
  const containerName = Symbol("TaskAttributionTiming.containerName");
  const containerSrc = Symbol("TaskAttributionTiming.containerSrc");
  const containerType = Symbol("TaskAttributionTiming.containerType");
  const scriptUrl$ = Symbol("TaskAttributionTiming.scriptUrl");
  dart.setFieldSignature(html$.TaskAttributionTiming, () => ({
    __proto__: dart.getFields(html$.TaskAttributionTiming.__proto__),
    [$containerId]: dart.finalFieldType(core.String),
    [$containerName]: dart.finalFieldType(core.String),
    [$containerSrc]: dart.finalFieldType(core.String),
    [$containerType]: dart.finalFieldType(core.String),
    [$scriptUrl]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("TaskAttributionTiming", html$.TaskAttributionTiming);
  html$.TemplateElement = class TemplateElement extends html$.HtmlElement {
    static new() {
      return html$.TemplateElement._check(html$.document[$createElement]("template"));
    }
    static get supported() {
      return html$.Element.isTagSupported("template");
    }
    get [$content]() {
      return this.content;
    }
    [$setInnerHtml](html, opts) {
      let validator = opts && 'validator' in opts ? opts.validator : null;
      let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
      this[$text] = null;
      let fragment = this[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
      this.content[$append](fragment);
    }
  };
  (html$.TemplateElement.created = function() {
    this[content$] = null;
    html$.TemplateElement.__proto__.created.call(this);
  }).prototype = html$.TemplateElement.prototype;
  dart.addTypeTests(html$.TemplateElement);
  const content$ = Symbol("TemplateElement.content");
  dart.setFieldSignature(html$.TemplateElement, () => ({
    __proto__: dart.getFields(html$.TemplateElement.__proto__),
    [$content]: dart.finalFieldType(html$.DocumentFragment)
  }));
  dart.registerExtension("HTMLTemplateElement", html$.TemplateElement);
  html$.TextAreaElement = class TextAreaElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("textarea");
    }
    get [$autocapitalize]() {
      return this.autocapitalize;
    }
    set [$autocapitalize](value) {
      this.autocapitalize = value;
    }
    get [$autofocus]() {
      return this.autofocus;
    }
    set [$autofocus](value) {
      this.autofocus = value;
    }
    get [$cols]() {
      return this.cols;
    }
    set [$cols](value) {
      this.cols = value;
    }
    get [$defaultValue]() {
      return this.defaultValue;
    }
    set [$defaultValue](value) {
      this.defaultValue = value;
    }
    get [$dirName]() {
      return this.dirName;
    }
    set [$dirName](value) {
      this.dirName = value;
    }
    get [$disabled]() {
      return this.disabled;
    }
    set [$disabled](value) {
      this.disabled = value;
    }
    get [$form]() {
      return this.form;
    }
    get [$labels]() {
      return this.labels;
    }
    get [$maxLength]() {
      return this.maxLength;
    }
    set [$maxLength](value) {
      this.maxLength = value;
    }
    get [$minLength]() {
      return this.minLength;
    }
    set [$minLength](value) {
      this.minLength = value;
    }
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
    get [$placeholder]() {
      return this.placeholder;
    }
    set [$placeholder](value) {
      this.placeholder = value;
    }
    get [$readOnly]() {
      return this.readOnly;
    }
    set [$readOnly](value) {
      this.readOnly = value;
    }
    get [$required]() {
      return this.required;
    }
    set [$required](value) {
      this.required = value;
    }
    get [$rows]() {
      return this.rows;
    }
    set [$rows](value) {
      this.rows = value;
    }
    get [$selectionDirection]() {
      return this.selectionDirection;
    }
    set [$selectionDirection](value) {
      this.selectionDirection = value;
    }
    get [$selectionEnd]() {
      return this.selectionEnd;
    }
    set [$selectionEnd](value) {
      this.selectionEnd = value;
    }
    get [$selectionStart]() {
      return this.selectionStart;
    }
    set [$selectionStart](value) {
      this.selectionStart = value;
    }
    get [$textLength]() {
      return this.textLength;
    }
    get [$type]() {
      return this.type;
    }
    get [$validationMessage]() {
      return this.validationMessage;
    }
    get [$validity]() {
      return this.validity;
    }
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
    get [$willValidate]() {
      return this.willValidate;
    }
    get [$wrap]() {
      return this.wrap;
    }
    set [$wrap](value) {
      this.wrap = value;
    }
    [$checkValidity](...args) {
      return this.checkValidity.apply(this, args);
    }
    [$reportValidity](...args) {
      return this.reportValidity.apply(this, args);
    }
    [$select](...args) {
      return this.select.apply(this, args);
    }
    [$setCustomValidity](...args) {
      return this.setCustomValidity.apply(this, args);
    }
    [$setRangeText](...args) {
      return this.setRangeText.apply(this, args);
    }
    [$setSelectionRange](...args) {
      return this.setSelectionRange.apply(this, args);
    }
  };
  (html$.TextAreaElement.created = function() {
    this[autocapitalize$] = null;
    this[autofocus$3] = null;
    this[cols] = null;
    this[defaultValue$1] = null;
    this[dirName$1] = null;
    this[disabled$9] = null;
    this[form$7] = null;
    this[labels$4] = null;
    this[maxLength$1] = null;
    this[minLength$] = null;
    this[name$38] = null;
    this[placeholder$3] = null;
    this[readOnly$8] = null;
    this[required$12] = null;
    this[rows] = null;
    this[selectionDirection$0] = null;
    this[selectionEnd$0] = null;
    this[selectionStart$0] = null;
    this[textLength] = null;
    this[type$35] = null;
    this[validationMessage$4] = null;
    this[validity$4] = null;
    this[value$16] = null;
    this[willValidate$4] = null;
    this[wrap] = null;
    html$.TextAreaElement.__proto__.created.call(this);
  }).prototype = html$.TextAreaElement.prototype;
  dart.addTypeTests(html$.TextAreaElement);
  const autocapitalize$ = Symbol("TextAreaElement.autocapitalize");
  const autofocus$3 = Symbol("TextAreaElement.autofocus");
  const cols = Symbol("TextAreaElement.cols");
  const defaultValue$1 = Symbol("TextAreaElement.defaultValue");
  const dirName$1 = Symbol("TextAreaElement.dirName");
  const disabled$9 = Symbol("TextAreaElement.disabled");
  const form$7 = Symbol("TextAreaElement.form");
  const labels$4 = Symbol("TextAreaElement.labels");
  const maxLength$1 = Symbol("TextAreaElement.maxLength");
  const minLength$ = Symbol("TextAreaElement.minLength");
  const name$38 = Symbol("TextAreaElement.name");
  const placeholder$3 = Symbol("TextAreaElement.placeholder");
  const readOnly$8 = Symbol("TextAreaElement.readOnly");
  const required$12 = Symbol("TextAreaElement.required");
  const rows = Symbol("TextAreaElement.rows");
  const selectionDirection$0 = Symbol("TextAreaElement.selectionDirection");
  const selectionEnd$0 = Symbol("TextAreaElement.selectionEnd");
  const selectionStart$0 = Symbol("TextAreaElement.selectionStart");
  const textLength = Symbol("TextAreaElement.textLength");
  const type$35 = Symbol("TextAreaElement.type");
  const validationMessage$4 = Symbol("TextAreaElement.validationMessage");
  const validity$4 = Symbol("TextAreaElement.validity");
  const value$16 = Symbol("TextAreaElement.value");
  const willValidate$4 = Symbol("TextAreaElement.willValidate");
  const wrap = Symbol("TextAreaElement.wrap");
  dart.setMethodSignature(html$.TextAreaElement, () => ({
    __proto__: dart.getMethods(html$.TextAreaElement.__proto__),
    [$checkValidity]: dart.fnType(core.bool, []),
    [$reportValidity]: dart.fnType(core.bool, []),
    [$select]: dart.fnType(dart.void, []),
    [$setCustomValidity]: dart.fnType(dart.void, [core.String]),
    [$setRangeText]: dart.fnType(dart.void, [core.String], {start: core.int, end: core.int, selectionMode: core.String}),
    [$setSelectionRange]: dart.fnType(dart.void, [core.int, core.int], [core.String])
  }));
  dart.setFieldSignature(html$.TextAreaElement, () => ({
    __proto__: dart.getFields(html$.TextAreaElement.__proto__),
    [$autocapitalize]: dart.fieldType(core.String),
    [$autofocus]: dart.fieldType(core.bool),
    [$cols]: dart.fieldType(core.int),
    [$defaultValue]: dart.fieldType(core.String),
    [$dirName]: dart.fieldType(core.String),
    [$disabled]: dart.fieldType(core.bool),
    [$form]: dart.finalFieldType(html$.FormElement),
    [$labels]: dart.finalFieldType(ListOfNode()),
    [$maxLength]: dart.fieldType(core.int),
    [$minLength]: dart.fieldType(core.int),
    [$name]: dart.fieldType(core.String),
    [$placeholder]: dart.fieldType(core.String),
    [$readOnly]: dart.fieldType(core.bool),
    [$required]: dart.fieldType(core.bool),
    [$rows]: dart.fieldType(core.int),
    [$selectionDirection]: dart.fieldType(core.String),
    [$selectionEnd]: dart.fieldType(core.int),
    [$selectionStart]: dart.fieldType(core.int),
    [$textLength]: dart.finalFieldType(core.int),
    [$type]: dart.finalFieldType(core.String),
    [$validationMessage]: dart.finalFieldType(core.String),
    [$validity]: dart.finalFieldType(html$.ValidityState),
    [$value]: dart.fieldType(core.String),
    [$willValidate]: dart.finalFieldType(core.bool),
    [$wrap]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLTextAreaElement", html$.TextAreaElement);
  html$.TextDetector = class TextDetector$ extends _interceptors.Interceptor {
    static new() {
      return html$.TextDetector._create_1();
    }
    static _create_1() {
      return new TextDetector();
    }
    [$detect](image) {
      return html$.promiseToFuture(ListOfDetectedText(), this.detect(image));
    }
  };
  dart.addTypeTests(html$.TextDetector);
  dart.setMethodSignature(html$.TextDetector, () => ({
    __proto__: dart.getMethods(html$.TextDetector.__proto__),
    [$detect]: dart.fnType(async.Future$(core.List$(html$.DetectedText)), [dart.dynamic])
  }));
  dart.registerExtension("TextDetector", html$.TextDetector);
  const _initTextEvent = Symbol('_initTextEvent');
  html$.TextEvent = class TextEvent extends html$.UIEvent {
    static new(type, opts) {
      let canBubble = opts && 'canBubble' in opts ? opts.canBubble : false;
      let cancelable = opts && 'cancelable' in opts ? opts.cancelable : false;
      let view = opts && 'view' in opts ? opts.view : null;
      let data = opts && 'data' in opts ? opts.data : null;
      if (view == null) {
        view = html$.window;
      }
      let e = html$.TextEvent._check(html$.document[_createEvent]("TextEvent"));
      e[_initTextEvent](type, canBubble, cancelable, view, data);
      return e;
    }
    get [$data]() {
      return this.data;
    }
    [_initTextEvent](...args) {
      return this.initTextEvent.apply(this, args);
    }
  };
  dart.addTypeTests(html$.TextEvent);
  const data$8 = Symbol("TextEvent.data");
  dart.setMethodSignature(html$.TextEvent, () => ({
    __proto__: dart.getMethods(html$.TextEvent.__proto__),
    [_initTextEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.String])
  }));
  dart.setFieldSignature(html$.TextEvent, () => ({
    __proto__: dart.getFields(html$.TextEvent.__proto__),
    [$data]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("TextEvent", html$.TextEvent);
  html$.TextMetrics = class TextMetrics extends _interceptors.Interceptor {
    get [$actualBoundingBoxAscent]() {
      return this.actualBoundingBoxAscent;
    }
    get [$actualBoundingBoxDescent]() {
      return this.actualBoundingBoxDescent;
    }
    get [$actualBoundingBoxLeft]() {
      return this.actualBoundingBoxLeft;
    }
    get [$actualBoundingBoxRight]() {
      return this.actualBoundingBoxRight;
    }
    get [$alphabeticBaseline]() {
      return this.alphabeticBaseline;
    }
    get [$emHeightAscent]() {
      return this.emHeightAscent;
    }
    get [$emHeightDescent]() {
      return this.emHeightDescent;
    }
    get [$fontBoundingBoxAscent]() {
      return this.fontBoundingBoxAscent;
    }
    get [$fontBoundingBoxDescent]() {
      return this.fontBoundingBoxDescent;
    }
    get [$hangingBaseline]() {
      return this.hangingBaseline;
    }
    get [$ideographicBaseline]() {
      return this.ideographicBaseline;
    }
    get [$width]() {
      return this.width;
    }
  };
  dart.addTypeTests(html$.TextMetrics);
  const actualBoundingBoxAscent = Symbol("TextMetrics.actualBoundingBoxAscent");
  const actualBoundingBoxDescent = Symbol("TextMetrics.actualBoundingBoxDescent");
  const actualBoundingBoxLeft = Symbol("TextMetrics.actualBoundingBoxLeft");
  const actualBoundingBoxRight = Symbol("TextMetrics.actualBoundingBoxRight");
  const alphabeticBaseline = Symbol("TextMetrics.alphabeticBaseline");
  const emHeightAscent = Symbol("TextMetrics.emHeightAscent");
  const emHeightDescent = Symbol("TextMetrics.emHeightDescent");
  const fontBoundingBoxAscent = Symbol("TextMetrics.fontBoundingBoxAscent");
  const fontBoundingBoxDescent = Symbol("TextMetrics.fontBoundingBoxDescent");
  const hangingBaseline = Symbol("TextMetrics.hangingBaseline");
  const ideographicBaseline = Symbol("TextMetrics.ideographicBaseline");
  const width$11 = Symbol("TextMetrics.width");
  dart.setFieldSignature(html$.TextMetrics, () => ({
    __proto__: dart.getFields(html$.TextMetrics.__proto__),
    [$actualBoundingBoxAscent]: dart.finalFieldType(core.num),
    [$actualBoundingBoxDescent]: dart.finalFieldType(core.num),
    [$actualBoundingBoxLeft]: dart.finalFieldType(core.num),
    [$actualBoundingBoxRight]: dart.finalFieldType(core.num),
    [$alphabeticBaseline]: dart.finalFieldType(core.num),
    [$emHeightAscent]: dart.finalFieldType(core.num),
    [$emHeightDescent]: dart.finalFieldType(core.num),
    [$fontBoundingBoxAscent]: dart.finalFieldType(core.num),
    [$fontBoundingBoxDescent]: dart.finalFieldType(core.num),
    [$hangingBaseline]: dart.finalFieldType(core.num),
    [$ideographicBaseline]: dart.finalFieldType(core.num),
    [$width]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("TextMetrics", html$.TextMetrics);
  html$.TextTrack = class TextTrack extends html$.EventTarget {
    get [$activeCues]() {
      return this.activeCues;
    }
    get [$cues]() {
      return this.cues;
    }
    get [$id]() {
      return this.id;
    }
    get [$kind]() {
      return this.kind;
    }
    get [$label]() {
      return this.label;
    }
    get [$language]() {
      return this.language;
    }
    get [$mode]() {
      return this.mode;
    }
    set [$mode](value) {
      this.mode = value;
    }
    [$addCue](...args) {
      return this.addCue.apply(this, args);
    }
    [$removeCue](...args) {
      return this.removeCue.apply(this, args);
    }
    get [$onCueChange]() {
      return html$.TextTrack.cueChangeEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.TextTrack);
  const activeCues = Symbol("TextTrack.activeCues");
  const cues = Symbol("TextTrack.cues");
  const id$14 = Symbol("TextTrack.id");
  const kind$1 = Symbol("TextTrack.kind");
  const label$4 = Symbol("TextTrack.label");
  const language$ = Symbol("TextTrack.language");
  const mode$3 = Symbol("TextTrack.mode");
  dart.setMethodSignature(html$.TextTrack, () => ({
    __proto__: dart.getMethods(html$.TextTrack.__proto__),
    [$addCue]: dart.fnType(dart.void, [html$.TextTrackCue]),
    [$removeCue]: dart.fnType(dart.void, [html$.TextTrackCue])
  }));
  dart.setGetterSignature(html$.TextTrack, () => ({
    __proto__: dart.getGetters(html$.TextTrack.__proto__),
    [$onCueChange]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.TextTrack, () => ({
    __proto__: dart.getFields(html$.TextTrack.__proto__),
    [$activeCues]: dart.finalFieldType(html$.TextTrackCueList),
    [$cues]: dart.finalFieldType(html$.TextTrackCueList),
    [$id]: dart.finalFieldType(core.String),
    [$kind]: dart.finalFieldType(core.String),
    [$label]: dart.finalFieldType(core.String),
    [$language]: dart.finalFieldType(core.String),
    [$mode]: dart.fieldType(core.String)
  }));
  dart.defineLazy(html$.TextTrack, {
    /*html$.TextTrack.cueChangeEvent*/get cueChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("cuechange"));
    }
  });
  dart.registerExtension("TextTrack", html$.TextTrack);
  html$.TextTrackCue = class TextTrackCue extends html$.EventTarget {
    get [$endTime]() {
      return this.endTime;
    }
    set [$endTime](value) {
      this.endTime = value;
    }
    get [$id]() {
      return this.id;
    }
    set [$id](value) {
      this.id = value;
    }
    get [$pauseOnExit]() {
      return this.pauseOnExit;
    }
    set [$pauseOnExit](value) {
      this.pauseOnExit = value;
    }
    get [$startTime]() {
      return this.startTime;
    }
    set [$startTime](value) {
      this.startTime = value;
    }
    get [$track]() {
      return this.track;
    }
    get [$onEnter]() {
      return html$.TextTrackCue.enterEvent.forTarget(this);
    }
    get [$onExit]() {
      return html$.TextTrackCue.exitEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.TextTrackCue);
  const endTime = Symbol("TextTrackCue.endTime");
  const id$15 = Symbol("TextTrackCue.id");
  const pauseOnExit = Symbol("TextTrackCue.pauseOnExit");
  const startTime$0 = Symbol("TextTrackCue.startTime");
  const track$4 = Symbol("TextTrackCue.track");
  dart.setGetterSignature(html$.TextTrackCue, () => ({
    __proto__: dart.getGetters(html$.TextTrackCue.__proto__),
    [$onEnter]: async.Stream$(html$.Event),
    [$onExit]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.TextTrackCue, () => ({
    __proto__: dart.getFields(html$.TextTrackCue.__proto__),
    [$endTime]: dart.fieldType(core.num),
    [$id]: dart.fieldType(core.String),
    [$pauseOnExit]: dart.fieldType(core.bool),
    [$startTime]: dart.fieldType(core.num),
    [$track]: dart.finalFieldType(html$.TextTrack)
  }));
  dart.defineLazy(html$.TextTrackCue, {
    /*html$.TextTrackCue.enterEvent*/get enterEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("enter"));
    },
    /*html$.TextTrackCue.exitEvent*/get exitEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("exit"));
    }
  });
  dart.registerExtension("TextTrackCue", html$.TextTrackCue);
  const Interceptor_ListMixin$$6 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$6.new = function() {
    Interceptor_ListMixin$$6.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$6.prototype;
  dart.applyMixin(Interceptor_ListMixin$$6, collection.ListMixin$(html$.TextTrackCue));
  const Interceptor_ImmutableListMixin$$6 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$6 {};
  (Interceptor_ImmutableListMixin$$6.new = function() {
    Interceptor_ImmutableListMixin$$6.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$6.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$6, html$.ImmutableListMixin$(html$.TextTrackCue));
  html$.TextTrackCueList = class TextTrackCueList extends Interceptor_ImmutableListMixin$$6 {
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[index];
    }
    [$_set](index, value) {
      html$.TextTrackCue._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [__getter__](...args) {
      return this.__getter__.apply(this, args);
    }
    [$getCueById](...args) {
      return this.getCueById.apply(this, args);
    }
  };
  html$.TextTrackCueList.prototype[dart.isList] = true;
  dart.addTypeTests(html$.TextTrackCueList);
  html$.TextTrackCueList[dart.implements] = () => [ListOfTextTrackCue(), JavaScriptIndexingBehaviorOfTextTrackCue()];
  dart.setMethodSignature(html$.TextTrackCueList, () => ({
    __proto__: dart.getMethods(html$.TextTrackCueList.__proto__),
    [$_get]: dart.fnType(html$.TextTrackCue, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(html$.TextTrackCue, [core.int]),
    [__getter__]: dart.fnType(html$.TextTrackCue, [core.int]),
    [$getCueById]: dart.fnType(html$.TextTrackCue, [core.String])
  }));
  dart.setGetterSignature(html$.TextTrackCueList, () => ({
    __proto__: dart.getGetters(html$.TextTrackCueList.__proto__),
    [$length]: core.int,
    [$first]: html$.TextTrackCue,
    [$last]: html$.TextTrackCue,
    [$single]: html$.TextTrackCue
  }));
  dart.setSetterSignature(html$.TextTrackCueList, () => ({
    __proto__: dart.getSetters(html$.TextTrackCueList.__proto__),
    [$length]: core.int
  }));
  dart.registerExtension("TextTrackCueList", html$.TextTrackCueList);
  const EventTarget_ListMixin$$ = class EventTarget_ListMixin extends html$.EventTarget {};
  (EventTarget_ListMixin$$._created = function() {
    EventTarget_ListMixin$$.__proto__._created.call(this);
  }).prototype = EventTarget_ListMixin$$.prototype;
  (EventTarget_ListMixin$$.__ = function() {
    EventTarget_ListMixin$$.__proto__.__.call(this);
  }).prototype = EventTarget_ListMixin$$.prototype;
  dart.applyMixin(EventTarget_ListMixin$$, collection.ListMixin$(html$.TextTrack));
  const EventTarget_ImmutableListMixin$$ = class EventTarget_ImmutableListMixin extends EventTarget_ListMixin$$ {};
  (EventTarget_ImmutableListMixin$$._created = function() {
    EventTarget_ImmutableListMixin$$.__proto__._created.call(this);
  }).prototype = EventTarget_ImmutableListMixin$$.prototype;
  (EventTarget_ImmutableListMixin$$.__ = function() {
    EventTarget_ImmutableListMixin$$.__proto__.__.call(this);
  }).prototype = EventTarget_ImmutableListMixin$$.prototype;
  dart.applyMixin(EventTarget_ImmutableListMixin$$, html$.ImmutableListMixin$(html$.TextTrack));
  html$.TextTrackList = class TextTrackList extends EventTarget_ImmutableListMixin$$ {
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[index];
    }
    [$_set](index, value) {
      html$.TextTrack._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [__getter__](...args) {
      return this.__getter__.apply(this, args);
    }
    [$getTrackById](...args) {
      return this.getTrackById.apply(this, args);
    }
    get [$onAddTrack]() {
      return html$.TextTrackList.addTrackEvent.forTarget(this);
    }
    get [$onChange]() {
      return html$.TextTrackList.changeEvent.forTarget(this);
    }
  };
  html$.TextTrackList.prototype[dart.isList] = true;
  dart.addTypeTests(html$.TextTrackList);
  html$.TextTrackList[dart.implements] = () => [ListOfTextTrack(), JavaScriptIndexingBehaviorOfTextTrack()];
  dart.setMethodSignature(html$.TextTrackList, () => ({
    __proto__: dart.getMethods(html$.TextTrackList.__proto__),
    [$_get]: dart.fnType(html$.TextTrack, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(html$.TextTrack, [core.int]),
    [__getter__]: dart.fnType(html$.TextTrack, [core.int]),
    [$getTrackById]: dart.fnType(html$.TextTrack, [core.String])
  }));
  dart.setGetterSignature(html$.TextTrackList, () => ({
    __proto__: dart.getGetters(html$.TextTrackList.__proto__),
    [$length]: core.int,
    [$first]: html$.TextTrack,
    [$last]: html$.TextTrack,
    [$single]: html$.TextTrack,
    [$onAddTrack]: async.Stream$(html$.TrackEvent),
    [$onChange]: async.Stream$(html$.Event)
  }));
  dart.setSetterSignature(html$.TextTrackList, () => ({
    __proto__: dart.getSetters(html$.TextTrackList.__proto__),
    [$length]: core.int
  }));
  dart.defineLazy(html$.TextTrackList, {
    /*html$.TextTrackList.addTrackEvent*/get addTrackEvent() {
      return dart.const(new (EventStreamProviderOfTrackEvent()).new("addtrack"));
    },
    /*html$.TextTrackList.changeEvent*/get changeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("change"));
    }
  });
  dart.registerExtension("TextTrackList", html$.TextTrackList);
  html$.TimeElement = class TimeElement extends html$.HtmlElement {
    get [$dateTime]() {
      return this.dateTime;
    }
    set [$dateTime](value) {
      this.dateTime = value;
    }
  };
  (html$.TimeElement.created = function() {
    this[dateTime$] = null;
    html$.TimeElement.__proto__.created.call(this);
  }).prototype = html$.TimeElement.prototype;
  dart.addTypeTests(html$.TimeElement);
  const dateTime$ = Symbol("TimeElement.dateTime");
  dart.setFieldSignature(html$.TimeElement, () => ({
    __proto__: dart.getFields(html$.TimeElement.__proto__),
    [$dateTime]: dart.fieldType(core.String)
  }));
  dart.registerExtension("HTMLTimeElement", html$.TimeElement);
  html$.TimeRanges = class TimeRanges extends _interceptors.Interceptor {
    get [$length]() {
      return this.length;
    }
    [$end](...args) {
      return this.end.apply(this, args);
    }
    [$start](...args) {
      return this.start.apply(this, args);
    }
  };
  dart.addTypeTests(html$.TimeRanges);
  const length$14 = Symbol("TimeRanges.length");
  dart.setMethodSignature(html$.TimeRanges, () => ({
    __proto__: dart.getMethods(html$.TimeRanges.__proto__),
    [$end]: dart.fnType(core.double, [core.int]),
    [$start]: dart.fnType(core.double, [core.int])
  }));
  dart.setFieldSignature(html$.TimeRanges, () => ({
    __proto__: dart.getFields(html$.TimeRanges.__proto__),
    [$length]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("TimeRanges", html$.TimeRanges);
  html$.TitleElement = class TitleElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("title");
    }
  };
  (html$.TitleElement.created = function() {
    html$.TitleElement.__proto__.created.call(this);
  }).prototype = html$.TitleElement.prototype;
  dart.addTypeTests(html$.TitleElement);
  dart.registerExtension("HTMLTitleElement", html$.TitleElement);
  const _radiusX = Symbol('_radiusX');
  const _radiusY = Symbol('_radiusY');
  const __clientX = Symbol('__clientX');
  const __clientY = Symbol('__clientY');
  const __screenX = Symbol('__screenX');
  const __screenY = Symbol('__screenY');
  const __pageX = Symbol('__pageX');
  const __pageY = Symbol('__pageY');
  const __radiusX = Symbol('__radiusX');
  const __radiusY = Symbol('__radiusY');
  html$.Touch = class Touch$ extends _interceptors.Interceptor {
    static new(initDict) {
      let initDict_1 = html_common.convertDartToNative_Dictionary(initDict);
      return html$.Touch._create_1(initDict_1);
    }
    static _create_1(initDict) {
      return new Touch(initDict);
    }
    get [_clientX]() {
      return this.clientX;
    }
    get [_clientY]() {
      return this.clientY;
    }
    get [$force]() {
      return this.force;
    }
    get [$identifier]() {
      return this.identifier;
    }
    get [_pageX]() {
      return this.pageX;
    }
    get [_pageY]() {
      return this.pageY;
    }
    get [_radiusX]() {
      return this.radiusX;
    }
    get [_radiusY]() {
      return this.radiusY;
    }
    get [$region]() {
      return this.region;
    }
    get [$rotationAngle]() {
      return this.rotationAngle;
    }
    get [_screenX]() {
      return this.screenX;
    }
    get [_screenY]() {
      return this.screenY;
    }
    get [$target]() {
      return html$._convertNativeToDart_EventTarget(this[_get_target]);
    }
    get [_get_target]() {
      return this.target;
    }
    get [__clientX]() {
      return this.clientX[$round]();
    }
    get [__clientY]() {
      return this.clientY[$round]();
    }
    get [__screenX]() {
      return this.screenX[$round]();
    }
    get [__screenY]() {
      return this.screenY[$round]();
    }
    get [__pageX]() {
      return this.pageX[$round]();
    }
    get [__pageY]() {
      return this.pageY[$round]();
    }
    get [__radiusX]() {
      return this.radiusX[$round]();
    }
    get [__radiusY]() {
      return this.radiusY[$round]();
    }
    get [$client]() {
      return new (PointOfnum()).new(this[__clientX], this[__clientY]);
    }
    get [$page]() {
      return new (PointOfnum()).new(this[__pageX], this[__pageY]);
    }
    get [$screen]() {
      return new (PointOfnum()).new(this[__screenX], this[__screenY]);
    }
    get [$radiusX]() {
      return this[__radiusX];
    }
    get [$radiusY]() {
      return this[__radiusY];
    }
  };
  dart.addTypeTests(html$.Touch);
  const force = Symbol("Touch.force");
  const identifier = Symbol("Touch.identifier");
  const region$0 = Symbol("Touch.region");
  const rotationAngle = Symbol("Touch.rotationAngle");
  dart.setGetterSignature(html$.Touch, () => ({
    __proto__: dart.getGetters(html$.Touch.__proto__),
    [$target]: html$.EventTarget,
    [__clientX]: core.int,
    [__clientY]: core.int,
    [__screenX]: core.int,
    [__screenY]: core.int,
    [__pageX]: core.int,
    [__pageY]: core.int,
    [__radiusX]: core.int,
    [__radiusY]: core.int,
    [$client]: math.Point$(core.num),
    [$page]: math.Point$(core.num),
    [$screen]: math.Point$(core.num),
    [$radiusX]: core.int,
    [$radiusY]: core.int
  }));
  dart.setFieldSignature(html$.Touch, () => ({
    __proto__: dart.getFields(html$.Touch.__proto__),
    [_clientX]: dart.finalFieldType(core.num),
    [_clientY]: dart.finalFieldType(core.num),
    [$force]: dart.finalFieldType(core.num),
    [$identifier]: dart.finalFieldType(core.int),
    [_pageX]: dart.finalFieldType(core.num),
    [_pageY]: dart.finalFieldType(core.num),
    [_radiusX]: dart.finalFieldType(core.num),
    [_radiusY]: dart.finalFieldType(core.num),
    [$region]: dart.finalFieldType(core.String),
    [$rotationAngle]: dart.finalFieldType(core.num),
    [_screenX]: dart.finalFieldType(core.num),
    [_screenY]: dart.finalFieldType(core.num),
    [_get_target]: dart.finalFieldType(dart.dynamic)
  }));
  dart.registerExtension("Touch", html$.Touch);
  html$.TouchEvent = class TouchEvent$ extends html$.UIEvent {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.TouchEvent._create_1(type, eventInitDict_1);
      }
      return html$.TouchEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new TouchEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new TouchEvent(type);
    }
    get [$altKey]() {
      return this.altKey;
    }
    get [$changedTouches]() {
      return this.changedTouches;
    }
    get [$ctrlKey]() {
      return this.ctrlKey;
    }
    get [$metaKey]() {
      return this.metaKey;
    }
    get [$shiftKey]() {
      return this.shiftKey;
    }
    get [$targetTouches]() {
      return this.targetTouches;
    }
    get [$touches]() {
      return this.touches;
    }
    static get supported() {
      return html_common.Device.isEventTypeSupported("TouchEvent");
    }
  };
  dart.addTypeTests(html$.TouchEvent);
  const altKey$0 = Symbol("TouchEvent.altKey");
  const changedTouches = Symbol("TouchEvent.changedTouches");
  const ctrlKey$0 = Symbol("TouchEvent.ctrlKey");
  const metaKey$0 = Symbol("TouchEvent.metaKey");
  const shiftKey$0 = Symbol("TouchEvent.shiftKey");
  const targetTouches = Symbol("TouchEvent.targetTouches");
  const touches = Symbol("TouchEvent.touches");
  dart.setFieldSignature(html$.TouchEvent, () => ({
    __proto__: dart.getFields(html$.TouchEvent.__proto__),
    [$altKey]: dart.finalFieldType(core.bool),
    [$changedTouches]: dart.finalFieldType(html$.TouchList),
    [$ctrlKey]: dart.finalFieldType(core.bool),
    [$metaKey]: dart.finalFieldType(core.bool),
    [$shiftKey]: dart.finalFieldType(core.bool),
    [$targetTouches]: dart.finalFieldType(html$.TouchList),
    [$touches]: dart.finalFieldType(html$.TouchList)
  }));
  dart.registerExtension("TouchEvent", html$.TouchEvent);
  const Interceptor_ListMixin$$7 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$7.new = function() {
    Interceptor_ListMixin$$7.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$7.prototype;
  dart.applyMixin(Interceptor_ListMixin$$7, collection.ListMixin$(html$.Touch));
  const Interceptor_ImmutableListMixin$$7 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$7 {};
  (Interceptor_ImmutableListMixin$$7.new = function() {
    Interceptor_ImmutableListMixin$$7.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$7.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$7, html$.ImmutableListMixin$(html$.Touch));
  html$.TouchList = class TouchList extends Interceptor_ImmutableListMixin$$7 {
    static new() {
      return null;
    }
    static get supported() {
      return !!document.createTouchList;
    }
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[index];
    }
    [$_set](index, value) {
      html$.Touch._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
  };
  html$.TouchList.prototype[dart.isList] = true;
  dart.addTypeTests(html$.TouchList);
  html$.TouchList[dart.implements] = () => [JavaScriptIndexingBehaviorOfTouch(), ListOfTouch()];
  dart.setMethodSignature(html$.TouchList, () => ({
    __proto__: dart.getMethods(html$.TouchList.__proto__),
    [$_get]: dart.fnType(html$.Touch, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(html$.Touch, [core.int]),
    [$item]: dart.fnType(html$.Touch, [core.int])
  }));
  dart.setGetterSignature(html$.TouchList, () => ({
    __proto__: dart.getGetters(html$.TouchList.__proto__),
    [$length]: core.int,
    [$first]: html$.Touch,
    [$last]: html$.Touch,
    [$single]: html$.Touch
  }));
  dart.setSetterSignature(html$.TouchList, () => ({
    __proto__: dart.getSetters(html$.TouchList.__proto__),
    [$length]: core.int
  }));
  dart.registerExtension("TouchList", html$.TouchList);
  html$.TrackDefault = class TrackDefault$ extends _interceptors.Interceptor {
    static new(type, language, label, kinds, byteStreamTrackID) {
      if (byteStreamTrackID === void 0) byteStreamTrackID = null;
      if (byteStreamTrackID != null) {
        let kinds_1 = html_common.convertDartToNative_StringArray(kinds);
        return html$.TrackDefault._create_1(type, language, label, kinds_1, byteStreamTrackID);
      }
      let kinds_1 = html_common.convertDartToNative_StringArray(kinds);
      return html$.TrackDefault._create_2(type, language, label, kinds_1);
    }
    static _create_1(type, language, label, kinds, byteStreamTrackID) {
      return new TrackDefault(type, language, label, kinds, byteStreamTrackID);
    }
    static _create_2(type, language, label, kinds) {
      return new TrackDefault(type, language, label, kinds);
    }
    get [$byteStreamTrackID]() {
      return this.byteStreamTrackID;
    }
    get [$kinds]() {
      return this.kinds;
    }
    get [$label]() {
      return this.label;
    }
    get [$language]() {
      return this.language;
    }
    get [$type]() {
      return this.type;
    }
  };
  dart.addTypeTests(html$.TrackDefault);
  const byteStreamTrackID = Symbol("TrackDefault.byteStreamTrackID");
  const kinds = Symbol("TrackDefault.kinds");
  const label$5 = Symbol("TrackDefault.label");
  const language$0 = Symbol("TrackDefault.language");
  const type$36 = Symbol("TrackDefault.type");
  dart.setFieldSignature(html$.TrackDefault, () => ({
    __proto__: dart.getFields(html$.TrackDefault.__proto__),
    [$byteStreamTrackID]: dart.finalFieldType(core.String),
    [$kinds]: dart.finalFieldType(core.Object),
    [$label]: dart.finalFieldType(core.String),
    [$language]: dart.finalFieldType(core.String),
    [$type]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("TrackDefault", html$.TrackDefault);
  html$.TrackDefaultList = class TrackDefaultList$ extends _interceptors.Interceptor {
    static new(trackDefaults) {
      if (trackDefaults === void 0) trackDefaults = null;
      if (trackDefaults != null) {
        return html$.TrackDefaultList._create_1(trackDefaults);
      }
      return html$.TrackDefaultList._create_2();
    }
    static _create_1(trackDefaults) {
      return new TrackDefaultList(trackDefaults);
    }
    static _create_2() {
      return new TrackDefaultList();
    }
    get [$length]() {
      return this.length;
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
  };
  dart.addTypeTests(html$.TrackDefaultList);
  const length$15 = Symbol("TrackDefaultList.length");
  dart.setMethodSignature(html$.TrackDefaultList, () => ({
    __proto__: dart.getMethods(html$.TrackDefaultList.__proto__),
    [$item]: dart.fnType(html$.TrackDefault, [core.int])
  }));
  dart.setFieldSignature(html$.TrackDefaultList, () => ({
    __proto__: dart.getFields(html$.TrackDefaultList.__proto__),
    [$length]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("TrackDefaultList", html$.TrackDefaultList);
  html$.TrackElement = class TrackElement extends html$.HtmlElement {
    static new() {
      return html$.TrackElement._check(html$.document[$createElement]("track"));
    }
    static get supported() {
      return html$.Element.isTagSupported("track");
    }
    get [$defaultValue]() {
      return this.default;
    }
    set [$defaultValue](value) {
      this.default = value;
    }
    get [$kind]() {
      return this.kind;
    }
    set [$kind](value) {
      this.kind = value;
    }
    get [$label]() {
      return this.label;
    }
    set [$label](value) {
      this.label = value;
    }
    get [$readyState]() {
      return this.readyState;
    }
    get [$src]() {
      return this.src;
    }
    set [$src](value) {
      this.src = value;
    }
    get [$srclang]() {
      return this.srclang;
    }
    set [$srclang](value) {
      this.srclang = value;
    }
    get [$track]() {
      return this.track;
    }
  };
  (html$.TrackElement.created = function() {
    this[defaultValue$2] = null;
    this[kind$2] = null;
    this[label$6] = null;
    this[readyState$8] = null;
    this[src$7] = null;
    this[srclang] = null;
    this[track$5] = null;
    html$.TrackElement.__proto__.created.call(this);
  }).prototype = html$.TrackElement.prototype;
  dart.addTypeTests(html$.TrackElement);
  const defaultValue$2 = Symbol("TrackElement.defaultValue");
  const kind$2 = Symbol("TrackElement.kind");
  const label$6 = Symbol("TrackElement.label");
  const readyState$8 = Symbol("TrackElement.readyState");
  const src$7 = Symbol("TrackElement.src");
  const srclang = Symbol("TrackElement.srclang");
  const track$5 = Symbol("TrackElement.track");
  dart.setFieldSignature(html$.TrackElement, () => ({
    __proto__: dart.getFields(html$.TrackElement.__proto__),
    [$defaultValue]: dart.fieldType(core.bool),
    [$kind]: dart.fieldType(core.String),
    [$label]: dart.fieldType(core.String),
    [$readyState]: dart.finalFieldType(core.int),
    [$src]: dart.fieldType(core.String),
    [$srclang]: dart.fieldType(core.String),
    [$track]: dart.finalFieldType(html$.TextTrack)
  }));
  dart.defineLazy(html$.TrackElement, {
    /*html$.TrackElement.ERROR*/get ERROR() {
      return 3;
    },
    /*html$.TrackElement.LOADED*/get LOADED() {
      return 2;
    },
    /*html$.TrackElement.LOADING*/get LOADING() {
      return 1;
    },
    /*html$.TrackElement.NONE*/get NONE() {
      return 0;
    }
  });
  dart.registerExtension("HTMLTrackElement", html$.TrackElement);
  html$.TrackEvent = class TrackEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.TrackEvent._create_1(type, eventInitDict_1);
      }
      return html$.TrackEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new TrackEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new TrackEvent(type);
    }
    get [$track]() {
      return this.track;
    }
  };
  dart.addTypeTests(html$.TrackEvent);
  const track$6 = Symbol("TrackEvent.track");
  dart.setFieldSignature(html$.TrackEvent, () => ({
    __proto__: dart.getFields(html$.TrackEvent.__proto__),
    [$track]: dart.finalFieldType(core.Object)
  }));
  dart.registerExtension("TrackEvent", html$.TrackEvent);
  html$.TransitionEvent = class TransitionEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.TransitionEvent._create_1(type, eventInitDict_1);
      }
      return html$.TransitionEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new TransitionEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new TransitionEvent(type);
    }
    get [$elapsedTime]() {
      return this.elapsedTime;
    }
    get [$propertyName]() {
      return this.propertyName;
    }
    get [$pseudoElement]() {
      return this.pseudoElement;
    }
  };
  dart.addTypeTests(html$.TransitionEvent);
  const elapsedTime$0 = Symbol("TransitionEvent.elapsedTime");
  const propertyName = Symbol("TransitionEvent.propertyName");
  const pseudoElement = Symbol("TransitionEvent.pseudoElement");
  dart.setFieldSignature(html$.TransitionEvent, () => ({
    __proto__: dart.getFields(html$.TransitionEvent.__proto__),
    [$elapsedTime]: dart.finalFieldType(core.num),
    [$propertyName]: dart.finalFieldType(core.String),
    [$pseudoElement]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("TransitionEvent", html$.TransitionEvent);
  dart.registerExtension("WebKitTransitionEvent", html$.TransitionEvent);
  html$.TreeWalker = class TreeWalker extends _interceptors.Interceptor {
    static new(root, whatToShow) {
      return html$.document[_createTreeWalker](root, whatToShow, null);
    }
    get [$currentNode]() {
      return this.currentNode;
    }
    set [$currentNode](value) {
      this.currentNode = value;
    }
    get [$filter]() {
      return this.filter;
    }
    get [$root]() {
      return this.root;
    }
    get [$whatToShow]() {
      return this.whatToShow;
    }
    [$firstChild](...args) {
      return this.firstChild.apply(this, args);
    }
    [$lastChild](...args) {
      return this.lastChild.apply(this, args);
    }
    [$nextNode](...args) {
      return this.nextNode.apply(this, args);
    }
    [$nextSibling](...args) {
      return this.nextSibling.apply(this, args);
    }
    [$parentNode](...args) {
      return this.parentNode.apply(this, args);
    }
    [$previousNode](...args) {
      return this.previousNode.apply(this, args);
    }
    [$previousSibling](...args) {
      return this.previousSibling.apply(this, args);
    }
  };
  dart.addTypeTests(html$.TreeWalker);
  const currentNode = Symbol("TreeWalker.currentNode");
  const filter$1 = Symbol("TreeWalker.filter");
  const root$1 = Symbol("TreeWalker.root");
  const whatToShow$ = Symbol("TreeWalker.whatToShow");
  dart.setMethodSignature(html$.TreeWalker, () => ({
    __proto__: dart.getMethods(html$.TreeWalker.__proto__),
    [$firstChild]: dart.fnType(html$.Node, []),
    [$lastChild]: dart.fnType(html$.Node, []),
    [$nextNode]: dart.fnType(html$.Node, []),
    [$nextSibling]: dart.fnType(html$.Node, []),
    [$parentNode]: dart.fnType(html$.Node, []),
    [$previousNode]: dart.fnType(html$.Node, []),
    [$previousSibling]: dart.fnType(html$.Node, [])
  }));
  dart.setFieldSignature(html$.TreeWalker, () => ({
    __proto__: dart.getFields(html$.TreeWalker.__proto__),
    [$currentNode]: dart.fieldType(html$.Node),
    [$filter]: dart.finalFieldType(html$.NodeFilter),
    [$root]: dart.finalFieldType(html$.Node),
    [$whatToShow]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("TreeWalker", html$.TreeWalker);
  html$.TrustedHtml = class TrustedHtml extends _interceptors.Interceptor {};
  dart.addTypeTests(html$.TrustedHtml);
  dart.registerExtension("TrustedHTML", html$.TrustedHtml);
  html$.TrustedScriptUrl = class TrustedScriptUrl extends _interceptors.Interceptor {};
  dart.addTypeTests(html$.TrustedScriptUrl);
  dart.registerExtension("TrustedScriptURL", html$.TrustedScriptUrl);
  html$.TrustedUrl = class TrustedUrl extends _interceptors.Interceptor {};
  dart.addTypeTests(html$.TrustedUrl);
  dart.registerExtension("TrustedURL", html$.TrustedUrl);
  html$.UListElement = class UListElement extends html$.HtmlElement {
    static new() {
      return html$.document.createElement("ul");
    }
  };
  (html$.UListElement.created = function() {
    html$.UListElement.__proto__.created.call(this);
  }).prototype = html$.UListElement.prototype;
  dart.addTypeTests(html$.UListElement);
  dart.registerExtension("HTMLUListElement", html$.UListElement);
  html$.UnderlyingSourceBase = class UnderlyingSourceBase extends _interceptors.Interceptor {
    [$cancel](reason) {
      return html$.promiseToFuture(dart.dynamic, this.cancel(reason));
    }
    [$notifyLockAcquired](...args) {
      return this.notifyLockAcquired.apply(this, args);
    }
    [$notifyLockReleased](...args) {
      return this.notifyLockReleased.apply(this, args);
    }
    [$pull]() {
      return html$.promiseToFuture(dart.dynamic, this.pull());
    }
    [$start](stream) {
      return html$.promiseToFuture(dart.dynamic, this.start(stream));
    }
  };
  dart.addTypeTests(html$.UnderlyingSourceBase);
  dart.setMethodSignature(html$.UnderlyingSourceBase, () => ({
    __proto__: dart.getMethods(html$.UnderlyingSourceBase.__proto__),
    [$cancel]: dart.fnType(async.Future, [core.Object]),
    [$notifyLockAcquired]: dart.fnType(dart.void, []),
    [$notifyLockReleased]: dart.fnType(dart.void, []),
    [$pull]: dart.fnType(async.Future, []),
    [$start]: dart.fnType(async.Future, [core.Object])
  }));
  dart.registerExtension("UnderlyingSourceBase", html$.UnderlyingSourceBase);
  html$.UnknownElement = class UnknownElement extends html$.HtmlElement {};
  (html$.UnknownElement.created = function() {
    html$.UnknownElement.__proto__.created.call(this);
  }).prototype = html$.UnknownElement.prototype;
  dart.addTypeTests(html$.UnknownElement);
  dart.registerExtension("HTMLUnknownElement", html$.UnknownElement);
  html$.Url = class Url extends _interceptors.Interceptor {
    static createObjectUrl(blob_OR_source_OR_stream) {
      return (self.URL || self.webkitURL).createObjectURL(blob_OR_source_OR_stream);
    }
    static createObjectUrlFromSource(source) {
      return (self.URL || self.webkitURL).createObjectURL(source);
    }
    static createObjectUrlFromStream(stream) {
      return (self.URL || self.webkitURL).createObjectURL(stream);
    }
    static createObjectUrlFromBlob(blob) {
      return (self.URL || self.webkitURL).createObjectURL(blob);
    }
    static revokeObjectUrl(url) {
      return (self.URL || self.webkitURL).revokeObjectURL(url);
    }
    [$toString]() {
      return String(this);
    }
    get [$hash]() {
      return this.hash;
    }
    set [$hash](value) {
      this.hash = value;
    }
    get [$host]() {
      return this.host;
    }
    set [$host](value) {
      this.host = value;
    }
    get [$hostname]() {
      return this.hostname;
    }
    set [$hostname](value) {
      this.hostname = value;
    }
    get [$href]() {
      return this.href;
    }
    set [$href](value) {
      this.href = value;
    }
    get [$origin]() {
      return this.origin;
    }
    get [$password]() {
      return this.password;
    }
    set [$password](value) {
      this.password = value;
    }
    get [$pathname]() {
      return this.pathname;
    }
    set [$pathname](value) {
      this.pathname = value;
    }
    get [$port]() {
      return this.port;
    }
    set [$port](value) {
      this.port = value;
    }
    get [$protocol]() {
      return this.protocol;
    }
    set [$protocol](value) {
      this.protocol = value;
    }
    get [$search]() {
      return this.search;
    }
    set [$search](value) {
      this.search = value;
    }
    get [$searchParams]() {
      return this.searchParams;
    }
    get [$username]() {
      return this.username;
    }
    set [$username](value) {
      this.username = value;
    }
  };
  dart.addTypeTests(html$.Url);
  const hash$2 = Symbol("Url.hash");
  const host$3 = Symbol("Url.host");
  const hostname$2 = Symbol("Url.hostname");
  const href$6 = Symbol("Url.href");
  const origin$6 = Symbol("Url.origin");
  const password$2 = Symbol("Url.password");
  const pathname$2 = Symbol("Url.pathname");
  const port$6 = Symbol("Url.port");
  const protocol$4 = Symbol("Url.protocol");
  const search$2 = Symbol("Url.search");
  const searchParams = Symbol("Url.searchParams");
  const username$1 = Symbol("Url.username");
  dart.setFieldSignature(html$.Url, () => ({
    __proto__: dart.getFields(html$.Url.__proto__),
    [$hash]: dart.fieldType(core.String),
    [$host]: dart.fieldType(core.String),
    [$hostname]: dart.fieldType(core.String),
    [$href]: dart.fieldType(core.String),
    [$origin]: dart.finalFieldType(core.String),
    [$password]: dart.fieldType(core.String),
    [$pathname]: dart.fieldType(core.String),
    [$port]: dart.fieldType(core.String),
    [$protocol]: dart.fieldType(core.String),
    [$search]: dart.fieldType(core.String),
    [$searchParams]: dart.finalFieldType(html$.UrlSearchParams),
    [$username]: dart.fieldType(core.String)
  }));
  dart.registerExtension("URL", html$.Url);
  html$.UrlSearchParams = class UrlSearchParams extends _interceptors.Interceptor {
    static new(init) {
      if (init === void 0) init = null;
      if (init != null) {
        return html$.UrlSearchParams._create_1(init);
      }
      return html$.UrlSearchParams._create_2();
    }
    static _create_1(init) {
      return new URLSearchParams(init);
    }
    static _create_2() {
      return new URLSearchParams();
    }
    [$append](...args) {
      return this.append.apply(this, args);
    }
    [$delete](...args) {
      return this.delete.apply(this, args);
    }
    [$get](...args) {
      return this.get.apply(this, args);
    }
    [$getAll](...args) {
      return this.getAll.apply(this, args);
    }
    [$has](...args) {
      return this.has.apply(this, args);
    }
    [$set](...args) {
      return this.set.apply(this, args);
    }
    [$sort](...args) {
      return this.sort.apply(this, args);
    }
  };
  dart.addTypeTests(html$.UrlSearchParams);
  dart.setMethodSignature(html$.UrlSearchParams, () => ({
    __proto__: dart.getMethods(html$.UrlSearchParams.__proto__),
    [$append]: dart.fnType(dart.void, [core.String, core.String]),
    [$delete]: dart.fnType(dart.void, [core.String]),
    [$get]: dart.fnType(core.String, [core.String]),
    [$getAll]: dart.fnType(core.List$(core.String), [core.String]),
    [$has]: dart.fnType(core.bool, [core.String]),
    [$set]: dart.fnType(dart.void, [core.String, core.String]),
    [$sort]: dart.fnType(dart.void, [])
  }));
  dart.registerExtension("URLSearchParams", html$.UrlSearchParams);
  html$.UrlUtilsReadOnly = class UrlUtilsReadOnly extends _interceptors.Interceptor {
    get hash() {
      return this[hash$3];
    }
    set hash(value) {
      super.hash = value;
    }
    get host() {
      return this[host$4];
    }
    set host(value) {
      super.host = value;
    }
    get hostname() {
      return this[hostname$3];
    }
    set hostname(value) {
      super.hostname = value;
    }
    get href() {
      return this[href$7];
    }
    set href(value) {
      super.href = value;
    }
    get origin() {
      return this[origin$7];
    }
    set origin(value) {
      super.origin = value;
    }
    get pathname() {
      return this[pathname$3];
    }
    set pathname(value) {
      super.pathname = value;
    }
    get port() {
      return this[port$7];
    }
    set port(value) {
      super.port = value;
    }
    get protocol() {
      return this[protocol$5];
    }
    set protocol(value) {
      super.protocol = value;
    }
    get search() {
      return this[search$3];
    }
    set search(value) {
      super.search = value;
    }
  };
  dart.addTypeTests(html$.UrlUtilsReadOnly);
  const hash$3 = Symbol("UrlUtilsReadOnly.hash");
  const host$4 = Symbol("UrlUtilsReadOnly.host");
  const hostname$3 = Symbol("UrlUtilsReadOnly.hostname");
  const href$7 = Symbol("UrlUtilsReadOnly.href");
  const origin$7 = Symbol("UrlUtilsReadOnly.origin");
  const pathname$3 = Symbol("UrlUtilsReadOnly.pathname");
  const port$7 = Symbol("UrlUtilsReadOnly.port");
  const protocol$5 = Symbol("UrlUtilsReadOnly.protocol");
  const search$3 = Symbol("UrlUtilsReadOnly.search");
  dart.setFieldSignature(html$.UrlUtilsReadOnly, () => ({
    __proto__: dart.getFields(html$.UrlUtilsReadOnly.__proto__),
    hash: dart.finalFieldType(core.String),
    host: dart.finalFieldType(core.String),
    hostname: dart.finalFieldType(core.String),
    href: dart.finalFieldType(core.String),
    origin: dart.finalFieldType(core.String),
    pathname: dart.finalFieldType(core.String),
    port: dart.finalFieldType(core.String),
    protocol: dart.finalFieldType(core.String),
    search: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionAccessors(html$.UrlUtilsReadOnly, [
    'hash',
    'host',
    'hostname',
    'href',
    'origin',
    'pathname',
    'port',
    'protocol',
    'search'
  ]);
  html$.VR = class VR extends html$.EventTarget {
    [$getDevices]() {
      return html$.promiseToFuture(dart.dynamic, this.getDevices());
    }
  };
  dart.addTypeTests(html$.VR);
  dart.setMethodSignature(html$.VR, () => ({
    __proto__: dart.getMethods(html$.VR.__proto__),
    [$getDevices]: dart.fnType(async.Future, [])
  }));
  dart.registerExtension("VR", html$.VR);
  html$.VRCoordinateSystem = class VRCoordinateSystem extends _interceptors.Interceptor {
    [$getTransformTo](...args) {
      return this.getTransformTo.apply(this, args);
    }
  };
  dart.addTypeTests(html$.VRCoordinateSystem);
  dart.setMethodSignature(html$.VRCoordinateSystem, () => ({
    __proto__: dart.getMethods(html$.VRCoordinateSystem.__proto__),
    [$getTransformTo]: dart.fnType(typed_data.Float32List, [html$.VRCoordinateSystem])
  }));
  dart.registerExtension("VRCoordinateSystem", html$.VRCoordinateSystem);
  html$.VRDevice = class VRDevice extends html$.EventTarget {
    get [$deviceName]() {
      return this.deviceName;
    }
    get [$isExternal]() {
      return this.isExternal;
    }
    [$requestSession](options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(dart.dynamic, this.requestSession(options_dict));
    }
    [$supportsSession](options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(dart.dynamic, this.supportsSession(options_dict));
    }
  };
  dart.addTypeTests(html$.VRDevice);
  const deviceName = Symbol("VRDevice.deviceName");
  const isExternal = Symbol("VRDevice.isExternal");
  dart.setMethodSignature(html$.VRDevice, () => ({
    __proto__: dart.getMethods(html$.VRDevice.__proto__),
    [$requestSession]: dart.fnType(async.Future, [], [core.Map]),
    [$supportsSession]: dart.fnType(async.Future, [], [core.Map])
  }));
  dart.setFieldSignature(html$.VRDevice, () => ({
    __proto__: dart.getFields(html$.VRDevice.__proto__),
    [$deviceName]: dart.finalFieldType(core.String),
    [$isExternal]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("VRDevice", html$.VRDevice);
  html$.VRDeviceEvent = class VRDeviceEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.VRDeviceEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new VRDeviceEvent(type, eventInitDict);
    }
    get [$device]() {
      return this.device;
    }
  };
  dart.addTypeTests(html$.VRDeviceEvent);
  const device = Symbol("VRDeviceEvent.device");
  dart.setFieldSignature(html$.VRDeviceEvent, () => ({
    __proto__: dart.getFields(html$.VRDeviceEvent.__proto__),
    [$device]: dart.finalFieldType(html$.VRDevice)
  }));
  dart.registerExtension("VRDeviceEvent", html$.VRDeviceEvent);
  html$.VRDisplay = class VRDisplay extends html$.EventTarget {
    get [$capabilities]() {
      return this.capabilities;
    }
    get [$depthFar]() {
      return this.depthFar;
    }
    set [$depthFar](value) {
      this.depthFar = value;
    }
    get [$depthNear]() {
      return this.depthNear;
    }
    set [$depthNear](value) {
      this.depthNear = value;
    }
    get [$displayId]() {
      return this.displayId;
    }
    get [$displayName]() {
      return this.displayName;
    }
    get [$isPresenting]() {
      return this.isPresenting;
    }
    get [$stageParameters]() {
      return this.stageParameters;
    }
    [$cancelAnimationFrame](...args) {
      return this.cancelAnimationFrame.apply(this, args);
    }
    [$exitPresent]() {
      return html$.promiseToFuture(dart.dynamic, this.exitPresent());
    }
    [$getEyeParameters](...args) {
      return this.getEyeParameters.apply(this, args);
    }
    [$getFrameData](...args) {
      return this.getFrameData.apply(this, args);
    }
    [$getLayers](...args) {
      return this.getLayers.apply(this, args);
    }
    [$requestAnimationFrame](...args) {
      return this.requestAnimationFrame.apply(this, args);
    }
    [$requestPresent](layers) {
      return html$.promiseToFuture(dart.dynamic, this.requestPresent(layers));
    }
    [$submitFrame](...args) {
      return this.submitFrame.apply(this, args);
    }
  };
  dart.addTypeTests(html$.VRDisplay);
  const capabilities = Symbol("VRDisplay.capabilities");
  const depthFar = Symbol("VRDisplay.depthFar");
  const depthNear = Symbol("VRDisplay.depthNear");
  const displayId$ = Symbol("VRDisplay.displayId");
  const displayName = Symbol("VRDisplay.displayName");
  const isPresenting = Symbol("VRDisplay.isPresenting");
  const stageParameters = Symbol("VRDisplay.stageParameters");
  dart.setMethodSignature(html$.VRDisplay, () => ({
    __proto__: dart.getMethods(html$.VRDisplay.__proto__),
    [$cancelAnimationFrame]: dart.fnType(dart.void, [core.int]),
    [$exitPresent]: dart.fnType(async.Future, []),
    [$getEyeParameters]: dart.fnType(html$.VREyeParameters, [core.String]),
    [$getFrameData]: dart.fnType(core.bool, [html$.VRFrameData]),
    [$getLayers]: dart.fnType(core.List$(core.Map), []),
    [$requestAnimationFrame]: dart.fnType(core.int, [dart.fnType(dart.void, [core.num])]),
    [$requestPresent]: dart.fnType(async.Future, [core.List$(core.Map)]),
    [$submitFrame]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(html$.VRDisplay, () => ({
    __proto__: dart.getFields(html$.VRDisplay.__proto__),
    [$capabilities]: dart.finalFieldType(html$.VRDisplayCapabilities),
    [$depthFar]: dart.fieldType(core.num),
    [$depthNear]: dart.fieldType(core.num),
    [$displayId]: dart.finalFieldType(core.int),
    [$displayName]: dart.finalFieldType(core.String),
    [$isPresenting]: dart.finalFieldType(core.bool),
    [$stageParameters]: dart.finalFieldType(html$.VRStageParameters)
  }));
  dart.registerExtension("VRDisplay", html$.VRDisplay);
  html$.VRDisplayCapabilities = class VRDisplayCapabilities extends _interceptors.Interceptor {
    get [$canPresent]() {
      return this.canPresent;
    }
    get [$hasExternalDisplay]() {
      return this.hasExternalDisplay;
    }
    get [$hasPosition]() {
      return this.hasPosition;
    }
    get [$maxLayers]() {
      return this.maxLayers;
    }
  };
  dart.addTypeTests(html$.VRDisplayCapabilities);
  const canPresent = Symbol("VRDisplayCapabilities.canPresent");
  const hasExternalDisplay = Symbol("VRDisplayCapabilities.hasExternalDisplay");
  const hasPosition$ = Symbol("VRDisplayCapabilities.hasPosition");
  const maxLayers = Symbol("VRDisplayCapabilities.maxLayers");
  dart.setFieldSignature(html$.VRDisplayCapabilities, () => ({
    __proto__: dart.getFields(html$.VRDisplayCapabilities.__proto__),
    [$canPresent]: dart.finalFieldType(core.bool),
    [$hasExternalDisplay]: dart.finalFieldType(core.bool),
    [$hasPosition]: dart.finalFieldType(core.bool),
    [$maxLayers]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("VRDisplayCapabilities", html$.VRDisplayCapabilities);
  html$.VRDisplayEvent = class VRDisplayEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.VRDisplayEvent._create_1(type, eventInitDict_1);
      }
      return html$.VRDisplayEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new VRDisplayEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new VRDisplayEvent(type);
    }
    get [$display]() {
      return this.display;
    }
    get [$reason]() {
      return this.reason;
    }
  };
  dart.addTypeTests(html$.VRDisplayEvent);
  const display$ = Symbol("VRDisplayEvent.display");
  const reason$2 = Symbol("VRDisplayEvent.reason");
  dart.setFieldSignature(html$.VRDisplayEvent, () => ({
    __proto__: dart.getFields(html$.VRDisplayEvent.__proto__),
    [$display]: dart.finalFieldType(html$.VRDisplay),
    [$reason]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("VRDisplayEvent", html$.VRDisplayEvent);
  html$.VREyeParameters = class VREyeParameters extends _interceptors.Interceptor {
    get [$offset]() {
      return this.offset;
    }
    get [$renderHeight]() {
      return this.renderHeight;
    }
    get [$renderWidth]() {
      return this.renderWidth;
    }
  };
  dart.addTypeTests(html$.VREyeParameters);
  const offset = Symbol("VREyeParameters.offset");
  const renderHeight = Symbol("VREyeParameters.renderHeight");
  const renderWidth = Symbol("VREyeParameters.renderWidth");
  dart.setFieldSignature(html$.VREyeParameters, () => ({
    __proto__: dart.getFields(html$.VREyeParameters.__proto__),
    [$offset]: dart.finalFieldType(typed_data.Float32List),
    [$renderHeight]: dart.finalFieldType(core.int),
    [$renderWidth]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("VREyeParameters", html$.VREyeParameters);
  html$.VRFrameData = class VRFrameData$ extends _interceptors.Interceptor {
    static new() {
      return html$.VRFrameData._create_1();
    }
    static _create_1() {
      return new VRFrameData();
    }
    get [$leftProjectionMatrix]() {
      return this.leftProjectionMatrix;
    }
    get [$leftViewMatrix]() {
      return this.leftViewMatrix;
    }
    get [$pose]() {
      return this.pose;
    }
    get [$rightProjectionMatrix]() {
      return this.rightProjectionMatrix;
    }
    get [$rightViewMatrix]() {
      return this.rightViewMatrix;
    }
  };
  dart.addTypeTests(html$.VRFrameData);
  const leftProjectionMatrix = Symbol("VRFrameData.leftProjectionMatrix");
  const leftViewMatrix = Symbol("VRFrameData.leftViewMatrix");
  const pose$ = Symbol("VRFrameData.pose");
  const rightProjectionMatrix = Symbol("VRFrameData.rightProjectionMatrix");
  const rightViewMatrix = Symbol("VRFrameData.rightViewMatrix");
  dart.setFieldSignature(html$.VRFrameData, () => ({
    __proto__: dart.getFields(html$.VRFrameData.__proto__),
    [$leftProjectionMatrix]: dart.finalFieldType(typed_data.Float32List),
    [$leftViewMatrix]: dart.finalFieldType(typed_data.Float32List),
    [$pose]: dart.finalFieldType(html$.VRPose),
    [$rightProjectionMatrix]: dart.finalFieldType(typed_data.Float32List),
    [$rightViewMatrix]: dart.finalFieldType(typed_data.Float32List)
  }));
  dart.registerExtension("VRFrameData", html$.VRFrameData);
  html$.VRFrameOfReference = class VRFrameOfReference extends html$.VRCoordinateSystem {
    get [$bounds]() {
      return this.bounds;
    }
    get [$emulatedHeight]() {
      return this.emulatedHeight;
    }
  };
  dart.addTypeTests(html$.VRFrameOfReference);
  const bounds = Symbol("VRFrameOfReference.bounds");
  const emulatedHeight = Symbol("VRFrameOfReference.emulatedHeight");
  dart.setFieldSignature(html$.VRFrameOfReference, () => ({
    __proto__: dart.getFields(html$.VRFrameOfReference.__proto__),
    [$bounds]: dart.finalFieldType(html$.VRStageBounds),
    [$emulatedHeight]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("VRFrameOfReference", html$.VRFrameOfReference);
  html$.VRPose = class VRPose extends _interceptors.Interceptor {
    get [$angularAcceleration]() {
      return this.angularAcceleration;
    }
    get [$angularVelocity]() {
      return this.angularVelocity;
    }
    get [$linearAcceleration]() {
      return this.linearAcceleration;
    }
    get [$linearVelocity]() {
      return this.linearVelocity;
    }
    get [$orientation]() {
      return this.orientation;
    }
    get [$position]() {
      return this.position;
    }
  };
  dart.addTypeTests(html$.VRPose);
  const angularAcceleration$ = Symbol("VRPose.angularAcceleration");
  const angularVelocity$ = Symbol("VRPose.angularVelocity");
  const linearAcceleration$ = Symbol("VRPose.linearAcceleration");
  const linearVelocity$ = Symbol("VRPose.linearVelocity");
  const orientation$2 = Symbol("VRPose.orientation");
  const position$1 = Symbol("VRPose.position");
  dart.setFieldSignature(html$.VRPose, () => ({
    __proto__: dart.getFields(html$.VRPose.__proto__),
    [$angularAcceleration]: dart.finalFieldType(typed_data.Float32List),
    [$angularVelocity]: dart.finalFieldType(typed_data.Float32List),
    [$linearAcceleration]: dart.finalFieldType(typed_data.Float32List),
    [$linearVelocity]: dart.finalFieldType(typed_data.Float32List),
    [$orientation]: dart.finalFieldType(typed_data.Float32List),
    [$position]: dart.finalFieldType(typed_data.Float32List)
  }));
  dart.registerExtension("VRPose", html$.VRPose);
  html$.VRSession = class VRSession extends html$.EventTarget {
    get [$depthFar]() {
      return this.depthFar;
    }
    set [$depthFar](value) {
      this.depthFar = value;
    }
    get [$depthNear]() {
      return this.depthNear;
    }
    set [$depthNear](value) {
      this.depthNear = value;
    }
    get [$device]() {
      return this.device;
    }
    get [$exclusive]() {
      return this.exclusive;
    }
    [$end]() {
      return html$.promiseToFuture(dart.dynamic, this.end());
    }
    [$requestFrameOfReference](type, options) {
      if (options === void 0) options = null;
      let options_dict = null;
      if (options != null) {
        options_dict = html_common.convertDartToNative_Dictionary(options);
      }
      return html$.promiseToFuture(dart.dynamic, this.requestFrameOfReference(type, options_dict));
    }
    get [$onBlur]() {
      return html$.VRSession.blurEvent.forTarget(this);
    }
    get [$onFocus]() {
      return html$.VRSession.focusEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.VRSession);
  const depthFar$ = Symbol("VRSession.depthFar");
  const depthNear$ = Symbol("VRSession.depthNear");
  const device$ = Symbol("VRSession.device");
  const exclusive = Symbol("VRSession.exclusive");
  dart.setMethodSignature(html$.VRSession, () => ({
    __proto__: dart.getMethods(html$.VRSession.__proto__),
    [$end]: dart.fnType(async.Future, []),
    [$requestFrameOfReference]: dart.fnType(async.Future, [core.String], [core.Map])
  }));
  dart.setGetterSignature(html$.VRSession, () => ({
    __proto__: dart.getGetters(html$.VRSession.__proto__),
    [$onBlur]: async.Stream$(html$.Event),
    [$onFocus]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.VRSession, () => ({
    __proto__: dart.getFields(html$.VRSession.__proto__),
    [$depthFar]: dart.fieldType(core.num),
    [$depthNear]: dart.fieldType(core.num),
    [$device]: dart.finalFieldType(html$.VRDevice),
    [$exclusive]: dart.finalFieldType(core.bool)
  }));
  dart.defineLazy(html$.VRSession, {
    /*html$.VRSession.blurEvent*/get blurEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("blur"));
    },
    /*html$.VRSession.focusEvent*/get focusEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("focus"));
    }
  });
  dart.registerExtension("VRSession", html$.VRSession);
  html$.VRSessionEvent = class VRSessionEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.VRSessionEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new VRSessionEvent(type, eventInitDict);
    }
    get [$session]() {
      return this.session;
    }
  };
  dart.addTypeTests(html$.VRSessionEvent);
  const session = Symbol("VRSessionEvent.session");
  dart.setFieldSignature(html$.VRSessionEvent, () => ({
    __proto__: dart.getFields(html$.VRSessionEvent.__proto__),
    [$session]: dart.finalFieldType(html$.VRSession)
  }));
  dart.registerExtension("VRSessionEvent", html$.VRSessionEvent);
  html$.VRStageBounds = class VRStageBounds extends _interceptors.Interceptor {
    get [$geometry]() {
      return this.geometry;
    }
  };
  dart.addTypeTests(html$.VRStageBounds);
  const geometry = Symbol("VRStageBounds.geometry");
  dart.setFieldSignature(html$.VRStageBounds, () => ({
    __proto__: dart.getFields(html$.VRStageBounds.__proto__),
    [$geometry]: dart.finalFieldType(ListOfVRStageBoundsPoint())
  }));
  dart.registerExtension("VRStageBounds", html$.VRStageBounds);
  html$.VRStageBoundsPoint = class VRStageBoundsPoint extends _interceptors.Interceptor {
    get [$x]() {
      return this.x;
    }
    get [$z]() {
      return this.z;
    }
  };
  dart.addTypeTests(html$.VRStageBoundsPoint);
  const x$6 = Symbol("VRStageBoundsPoint.x");
  const z$5 = Symbol("VRStageBoundsPoint.z");
  dart.setFieldSignature(html$.VRStageBoundsPoint, () => ({
    __proto__: dart.getFields(html$.VRStageBoundsPoint.__proto__),
    [$x]: dart.finalFieldType(core.num),
    [$z]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("VRStageBoundsPoint", html$.VRStageBoundsPoint);
  html$.VRStageParameters = class VRStageParameters extends _interceptors.Interceptor {
    get [$sittingToStandingTransform]() {
      return this.sittingToStandingTransform;
    }
    get [$sizeX]() {
      return this.sizeX;
    }
    get [$sizeZ]() {
      return this.sizeZ;
    }
  };
  dart.addTypeTests(html$.VRStageParameters);
  const sittingToStandingTransform = Symbol("VRStageParameters.sittingToStandingTransform");
  const sizeX = Symbol("VRStageParameters.sizeX");
  const sizeZ = Symbol("VRStageParameters.sizeZ");
  dart.setFieldSignature(html$.VRStageParameters, () => ({
    __proto__: dart.getFields(html$.VRStageParameters.__proto__),
    [$sittingToStandingTransform]: dart.finalFieldType(typed_data.Float32List),
    [$sizeX]: dart.finalFieldType(core.num),
    [$sizeZ]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("VRStageParameters", html$.VRStageParameters);
  html$.ValidityState = class ValidityState extends _interceptors.Interceptor {
    get [$badInput]() {
      return this.badInput;
    }
    get [$customError]() {
      return this.customError;
    }
    get [$patternMismatch]() {
      return this.patternMismatch;
    }
    get [$rangeOverflow]() {
      return this.rangeOverflow;
    }
    get [$rangeUnderflow]() {
      return this.rangeUnderflow;
    }
    get [$stepMismatch]() {
      return this.stepMismatch;
    }
    get [$tooLong]() {
      return this.tooLong;
    }
    get [$tooShort]() {
      return this.tooShort;
    }
    get [$typeMismatch]() {
      return this.typeMismatch;
    }
    get [$valid]() {
      return this.valid;
    }
    get [$valueMissing]() {
      return this.valueMissing;
    }
  };
  dart.addTypeTests(html$.ValidityState);
  const badInput = Symbol("ValidityState.badInput");
  const customError = Symbol("ValidityState.customError");
  const patternMismatch = Symbol("ValidityState.patternMismatch");
  const rangeOverflow = Symbol("ValidityState.rangeOverflow");
  const rangeUnderflow = Symbol("ValidityState.rangeUnderflow");
  const stepMismatch = Symbol("ValidityState.stepMismatch");
  const tooLong = Symbol("ValidityState.tooLong");
  const tooShort = Symbol("ValidityState.tooShort");
  const typeMismatch = Symbol("ValidityState.typeMismatch");
  const valid = Symbol("ValidityState.valid");
  const valueMissing = Symbol("ValidityState.valueMissing");
  dart.setFieldSignature(html$.ValidityState, () => ({
    __proto__: dart.getFields(html$.ValidityState.__proto__),
    [$badInput]: dart.finalFieldType(core.bool),
    [$customError]: dart.finalFieldType(core.bool),
    [$patternMismatch]: dart.finalFieldType(core.bool),
    [$rangeOverflow]: dart.finalFieldType(core.bool),
    [$rangeUnderflow]: dart.finalFieldType(core.bool),
    [$stepMismatch]: dart.finalFieldType(core.bool),
    [$tooLong]: dart.finalFieldType(core.bool),
    [$tooShort]: dart.finalFieldType(core.bool),
    [$typeMismatch]: dart.finalFieldType(core.bool),
    [$valid]: dart.finalFieldType(core.bool),
    [$valueMissing]: dart.finalFieldType(core.bool)
  }));
  dart.registerExtension("ValidityState", html$.ValidityState);
  html$.VideoElement = class VideoElement extends html$.MediaElement {
    static new() {
      return html$.document.createElement("video");
    }
    get [$height]() {
      return this.height;
    }
    set [$height](value) {
      this.height = value;
    }
    get [$poster]() {
      return this.poster;
    }
    set [$poster](value) {
      this.poster = value;
    }
    get [$videoHeight]() {
      return this.videoHeight;
    }
    get [$videoWidth]() {
      return this.videoWidth;
    }
    get [$decodedFrameCount]() {
      return this.webkitDecodedFrameCount;
    }
    get [$droppedFrameCount]() {
      return this.webkitDroppedFrameCount;
    }
    get [$width]() {
      return this.width;
    }
    set [$width](value) {
      this.width = value;
    }
    [$getVideoPlaybackQuality](...args) {
      return this.getVideoPlaybackQuality.apply(this, args);
    }
    [$enterFullscreen](...args) {
      return this.webkitEnterFullscreen.apply(this, args);
    }
    [$exitFullscreen](...args) {
      return this.webkitExitFullscreen.apply(this, args);
    }
  };
  (html$.VideoElement.created = function() {
    this[height$11] = null;
    this[poster] = null;
    this[videoHeight] = null;
    this[videoWidth] = null;
    this[decodedFrameCount] = null;
    this[droppedFrameCount] = null;
    this[width$12] = null;
    html$.VideoElement.__proto__.created.call(this);
  }).prototype = html$.VideoElement.prototype;
  dart.addTypeTests(html$.VideoElement);
  const height$11 = Symbol("VideoElement.height");
  const poster = Symbol("VideoElement.poster");
  const videoHeight = Symbol("VideoElement.videoHeight");
  const videoWidth = Symbol("VideoElement.videoWidth");
  const decodedFrameCount = Symbol("VideoElement.decodedFrameCount");
  const droppedFrameCount = Symbol("VideoElement.droppedFrameCount");
  const width$12 = Symbol("VideoElement.width");
  html$.VideoElement[dart.implements] = () => [html$.CanvasImageSource];
  dart.setMethodSignature(html$.VideoElement, () => ({
    __proto__: dart.getMethods(html$.VideoElement.__proto__),
    [$getVideoPlaybackQuality]: dart.fnType(html$.VideoPlaybackQuality, []),
    [$enterFullscreen]: dart.fnType(dart.void, []),
    [$exitFullscreen]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(html$.VideoElement, () => ({
    __proto__: dart.getFields(html$.VideoElement.__proto__),
    [$height]: dart.fieldType(core.int),
    [$poster]: dart.fieldType(core.String),
    [$videoHeight]: dart.finalFieldType(core.int),
    [$videoWidth]: dart.finalFieldType(core.int),
    [$decodedFrameCount]: dart.finalFieldType(core.int),
    [$droppedFrameCount]: dart.finalFieldType(core.int),
    [$width]: dart.fieldType(core.int)
  }));
  dart.registerExtension("HTMLVideoElement", html$.VideoElement);
  html$.VideoPlaybackQuality = class VideoPlaybackQuality extends _interceptors.Interceptor {
    get [$corruptedVideoFrames]() {
      return this.corruptedVideoFrames;
    }
    get [$creationTime]() {
      return this.creationTime;
    }
    get [$droppedVideoFrames]() {
      return this.droppedVideoFrames;
    }
    get [$totalVideoFrames]() {
      return this.totalVideoFrames;
    }
  };
  dart.addTypeTests(html$.VideoPlaybackQuality);
  const corruptedVideoFrames = Symbol("VideoPlaybackQuality.corruptedVideoFrames");
  const creationTime = Symbol("VideoPlaybackQuality.creationTime");
  const droppedVideoFrames = Symbol("VideoPlaybackQuality.droppedVideoFrames");
  const totalVideoFrames = Symbol("VideoPlaybackQuality.totalVideoFrames");
  dart.setFieldSignature(html$.VideoPlaybackQuality, () => ({
    __proto__: dart.getFields(html$.VideoPlaybackQuality.__proto__),
    [$corruptedVideoFrames]: dart.finalFieldType(core.int),
    [$creationTime]: dart.finalFieldType(core.num),
    [$droppedVideoFrames]: dart.finalFieldType(core.int),
    [$totalVideoFrames]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("VideoPlaybackQuality", html$.VideoPlaybackQuality);
  html$.VideoTrack = class VideoTrack extends _interceptors.Interceptor {
    get [$id]() {
      return this.id;
    }
    get [$kind]() {
      return this.kind;
    }
    get [$label]() {
      return this.label;
    }
    get [$language]() {
      return this.language;
    }
    get [$selected]() {
      return this.selected;
    }
    set [$selected](value) {
      this.selected = value;
    }
    get [$sourceBuffer]() {
      return this.sourceBuffer;
    }
  };
  dart.addTypeTests(html$.VideoTrack);
  const id$16 = Symbol("VideoTrack.id");
  const kind$3 = Symbol("VideoTrack.kind");
  const label$7 = Symbol("VideoTrack.label");
  const language$1 = Symbol("VideoTrack.language");
  const selected$0 = Symbol("VideoTrack.selected");
  const sourceBuffer = Symbol("VideoTrack.sourceBuffer");
  dart.setFieldSignature(html$.VideoTrack, () => ({
    __proto__: dart.getFields(html$.VideoTrack.__proto__),
    [$id]: dart.finalFieldType(core.String),
    [$kind]: dart.finalFieldType(core.String),
    [$label]: dart.finalFieldType(core.String),
    [$language]: dart.finalFieldType(core.String),
    [$selected]: dart.fieldType(core.bool),
    [$sourceBuffer]: dart.finalFieldType(html$.SourceBuffer)
  }));
  dart.registerExtension("VideoTrack", html$.VideoTrack);
  html$.VideoTrackList = class VideoTrackList extends html$.EventTarget {
    get [$length]() {
      return this.length;
    }
    get [$selectedIndex]() {
      return this.selectedIndex;
    }
    [__getter__](...args) {
      return this.__getter__.apply(this, args);
    }
    [$getTrackById](...args) {
      return this.getTrackById.apply(this, args);
    }
    get [$onChange]() {
      return html$.VideoTrackList.changeEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.VideoTrackList);
  const length$16 = Symbol("VideoTrackList.length");
  const selectedIndex$ = Symbol("VideoTrackList.selectedIndex");
  dart.setMethodSignature(html$.VideoTrackList, () => ({
    __proto__: dart.getMethods(html$.VideoTrackList.__proto__),
    [__getter__]: dart.fnType(html$.VideoTrack, [core.int]),
    [$getTrackById]: dart.fnType(html$.VideoTrack, [core.String])
  }));
  dart.setGetterSignature(html$.VideoTrackList, () => ({
    __proto__: dart.getGetters(html$.VideoTrackList.__proto__),
    [$onChange]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.VideoTrackList, () => ({
    __proto__: dart.getFields(html$.VideoTrackList.__proto__),
    [$length]: dart.finalFieldType(core.int),
    [$selectedIndex]: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(html$.VideoTrackList, {
    /*html$.VideoTrackList.changeEvent*/get changeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("change"));
    }
  });
  dart.registerExtension("VideoTrackList", html$.VideoTrackList);
  html$.VisualViewport = class VisualViewport extends html$.EventTarget {
    get [$height]() {
      return this.height;
    }
    get [$offsetLeft]() {
      return this.offsetLeft;
    }
    get [$offsetTop]() {
      return this.offsetTop;
    }
    get [$pageLeft]() {
      return this.pageLeft;
    }
    get [$pageTop]() {
      return this.pageTop;
    }
    get [$scale]() {
      return this.scale;
    }
    get [$width]() {
      return this.width;
    }
    get [$onResize]() {
      return html$.VisualViewport.resizeEvent.forTarget(this);
    }
    get [$onScroll]() {
      return html$.VisualViewport.scrollEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.VisualViewport);
  const height$12 = Symbol("VisualViewport.height");
  const offsetLeft = Symbol("VisualViewport.offsetLeft");
  const offsetTop = Symbol("VisualViewport.offsetTop");
  const pageLeft = Symbol("VisualViewport.pageLeft");
  const pageTop = Symbol("VisualViewport.pageTop");
  const scale = Symbol("VisualViewport.scale");
  const width$13 = Symbol("VisualViewport.width");
  dart.setGetterSignature(html$.VisualViewport, () => ({
    __proto__: dart.getGetters(html$.VisualViewport.__proto__),
    [$onResize]: async.Stream$(html$.Event),
    [$onScroll]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.VisualViewport, () => ({
    __proto__: dart.getFields(html$.VisualViewport.__proto__),
    [$height]: dart.finalFieldType(core.num),
    [$offsetLeft]: dart.finalFieldType(core.num),
    [$offsetTop]: dart.finalFieldType(core.num),
    [$pageLeft]: dart.finalFieldType(core.num),
    [$pageTop]: dart.finalFieldType(core.num),
    [$scale]: dart.finalFieldType(core.num),
    [$width]: dart.finalFieldType(core.num)
  }));
  dart.defineLazy(html$.VisualViewport, {
    /*html$.VisualViewport.resizeEvent*/get resizeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("resize"));
    },
    /*html$.VisualViewport.scrollEvent*/get scrollEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("scroll"));
    }
  });
  dart.registerExtension("VisualViewport", html$.VisualViewport);
  html$.VttCue = class VttCue extends html$.TextTrackCue {
    static new(startTime, endTime, text) {
      return html$.VttCue._create_1(startTime, endTime, text);
    }
    static _create_1(startTime, endTime, text) {
      return new VTTCue(startTime, endTime, text);
    }
    get [$align]() {
      return this.align;
    }
    set [$align](value) {
      this.align = value;
    }
    get [$line]() {
      return this.line;
    }
    set [$line](value) {
      this.line = value;
    }
    get [$position]() {
      return this.position;
    }
    set [$position](value) {
      this.position = value;
    }
    get [$region]() {
      return this.region;
    }
    set [$region](value) {
      this.region = value;
    }
    get [$size]() {
      return this.size;
    }
    set [$size](value) {
      this.size = value;
    }
    get [$snapToLines]() {
      return this.snapToLines;
    }
    set [$snapToLines](value) {
      this.snapToLines = value;
    }
    get [$text]() {
      return this.text;
    }
    set [$text](value) {
      this.text = value;
    }
    get [$vertical]() {
      return this.vertical;
    }
    set [$vertical](value) {
      this.vertical = value;
    }
    [$getCueAsHtml](...args) {
      return this.getCueAsHTML.apply(this, args);
    }
  };
  dart.addTypeTests(html$.VttCue);
  const align = Symbol("VttCue.align");
  const line = Symbol("VttCue.line");
  const position$2 = Symbol("VttCue.position");
  const region$1 = Symbol("VttCue.region");
  const size$6 = Symbol("VttCue.size");
  const snapToLines = Symbol("VttCue.snapToLines");
  const text$1 = Symbol("VttCue.text");
  const vertical = Symbol("VttCue.vertical");
  dart.setMethodSignature(html$.VttCue, () => ({
    __proto__: dart.getMethods(html$.VttCue.__proto__),
    [$getCueAsHtml]: dart.fnType(html$.DocumentFragment, [])
  }));
  dart.setFieldSignature(html$.VttCue, () => ({
    __proto__: dart.getFields(html$.VttCue.__proto__),
    [$align]: dart.fieldType(core.String),
    [$line]: dart.fieldType(core.Object),
    [$position]: dart.fieldType(core.Object),
    [$region]: dart.fieldType(html$.VttRegion),
    [$size]: dart.fieldType(core.num),
    [$snapToLines]: dart.fieldType(core.bool),
    [$text]: dart.fieldType(core.String),
    [$vertical]: dart.fieldType(core.String)
  }));
  dart.registerExtension("VTTCue", html$.VttCue);
  html$.VttRegion = class VttRegion extends _interceptors.Interceptor {
    static new() {
      return html$.VttRegion._create_1();
    }
    static _create_1() {
      return new VTTRegion();
    }
    get [$id]() {
      return this.id;
    }
    set [$id](value) {
      this.id = value;
    }
    get [$lines]() {
      return this.lines;
    }
    set [$lines](value) {
      this.lines = value;
    }
    get [$regionAnchorX]() {
      return this.regionAnchorX;
    }
    set [$regionAnchorX](value) {
      this.regionAnchorX = value;
    }
    get [$regionAnchorY]() {
      return this.regionAnchorY;
    }
    set [$regionAnchorY](value) {
      this.regionAnchorY = value;
    }
    get [$scroll]() {
      return this.scroll;
    }
    set [$scroll](value) {
      this.scroll = value;
    }
    get [$viewportAnchorX]() {
      return this.viewportAnchorX;
    }
    set [$viewportAnchorX](value) {
      this.viewportAnchorX = value;
    }
    get [$viewportAnchorY]() {
      return this.viewportAnchorY;
    }
    set [$viewportAnchorY](value) {
      this.viewportAnchorY = value;
    }
    get [$width]() {
      return this.width;
    }
    set [$width](value) {
      this.width = value;
    }
  };
  dart.addTypeTests(html$.VttRegion);
  const id$17 = Symbol("VttRegion.id");
  const lines = Symbol("VttRegion.lines");
  const regionAnchorX = Symbol("VttRegion.regionAnchorX");
  const regionAnchorY = Symbol("VttRegion.regionAnchorY");
  const scroll = Symbol("VttRegion.scroll");
  const viewportAnchorX = Symbol("VttRegion.viewportAnchorX");
  const viewportAnchorY = Symbol("VttRegion.viewportAnchorY");
  const width$14 = Symbol("VttRegion.width");
  dart.setFieldSignature(html$.VttRegion, () => ({
    __proto__: dart.getFields(html$.VttRegion.__proto__),
    [$id]: dart.fieldType(core.String),
    [$lines]: dart.fieldType(core.int),
    [$regionAnchorX]: dart.fieldType(core.num),
    [$regionAnchorY]: dart.fieldType(core.num),
    [$scroll]: dart.fieldType(core.String),
    [$viewportAnchorX]: dart.fieldType(core.num),
    [$viewportAnchorY]: dart.fieldType(core.num),
    [$width]: dart.fieldType(core.num)
  }));
  dart.registerExtension("VTTRegion", html$.VttRegion);
  html$.WebSocket = class WebSocket$ extends html$.EventTarget {
    static new(url, protocols) {
      if (protocols === void 0) protocols = null;
      if (protocols != null) {
        return html$.WebSocket._create_1(url, protocols);
      }
      return html$.WebSocket._create_2(url);
    }
    static _create_1(url, protocols) {
      return new WebSocket(url, protocols);
    }
    static _create_2(url) {
      return new WebSocket(url);
    }
    static get supported() {
      return typeof window.WebSocket != "undefined";
    }
    get [$binaryType]() {
      return this.binaryType;
    }
    set [$binaryType](value) {
      this.binaryType = value;
    }
    get [$bufferedAmount]() {
      return this.bufferedAmount;
    }
    get [$extensions]() {
      return this.extensions;
    }
    get [$protocol]() {
      return this.protocol;
    }
    get [$readyState]() {
      return this.readyState;
    }
    get [$url]() {
      return this.url;
    }
    [$close](...args) {
      return this.close.apply(this, args);
    }
    [$send](...args) {
      return this.send.apply(this, args);
    }
    [$sendBlob](...args) {
      return this.send.apply(this, args);
    }
    [$sendByteBuffer](...args) {
      return this.send.apply(this, args);
    }
    [$sendString](...args) {
      return this.send.apply(this, args);
    }
    [$sendTypedData](...args) {
      return this.send.apply(this, args);
    }
    get [$onClose]() {
      return html$.WebSocket.closeEvent.forTarget(this);
    }
    get [$onError]() {
      return html$.WebSocket.errorEvent.forTarget(this);
    }
    get [$onMessage]() {
      return html$.WebSocket.messageEvent.forTarget(this);
    }
    get [$onOpen]() {
      return html$.WebSocket.openEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.WebSocket);
  const binaryType$0 = Symbol("WebSocket.binaryType");
  const bufferedAmount$ = Symbol("WebSocket.bufferedAmount");
  const extensions = Symbol("WebSocket.extensions");
  const protocol$6 = Symbol("WebSocket.protocol");
  const readyState$9 = Symbol("WebSocket.readyState");
  const url$5 = Symbol("WebSocket.url");
  dart.setMethodSignature(html$.WebSocket, () => ({
    __proto__: dart.getMethods(html$.WebSocket.__proto__),
    [$close]: dart.fnType(dart.void, [], [core.int, core.String]),
    [$send]: dart.fnType(dart.void, [dart.dynamic]),
    [$sendBlob]: dart.fnType(dart.void, [html$.Blob]),
    [$sendByteBuffer]: dart.fnType(dart.void, [typed_data.ByteBuffer]),
    [$sendString]: dart.fnType(dart.void, [core.String]),
    [$sendTypedData]: dart.fnType(dart.void, [typed_data.TypedData])
  }));
  dart.setGetterSignature(html$.WebSocket, () => ({
    __proto__: dart.getGetters(html$.WebSocket.__proto__),
    [$onClose]: async.Stream$(html$.CloseEvent),
    [$onError]: async.Stream$(html$.Event),
    [$onMessage]: async.Stream$(html$.MessageEvent),
    [$onOpen]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(html$.WebSocket, () => ({
    __proto__: dart.getFields(html$.WebSocket.__proto__),
    [$binaryType]: dart.fieldType(core.String),
    [$bufferedAmount]: dart.finalFieldType(core.int),
    [$extensions]: dart.finalFieldType(core.String),
    [$protocol]: dart.finalFieldType(core.String),
    [$readyState]: dart.finalFieldType(core.int),
    [$url]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.WebSocket, {
    /*html$.WebSocket.closeEvent*/get closeEvent() {
      return dart.const(new (EventStreamProviderOfCloseEvent()).new("close"));
    },
    /*html$.WebSocket.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    },
    /*html$.WebSocket.messageEvent*/get messageEvent() {
      return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
    },
    /*html$.WebSocket.openEvent*/get openEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("open"));
    },
    /*html$.WebSocket.CLOSED*/get CLOSED() {
      return 3;
    },
    /*html$.WebSocket.CLOSING*/get CLOSING() {
      return 2;
    },
    /*html$.WebSocket.CONNECTING*/get CONNECTING() {
      return 0;
    },
    /*html$.WebSocket.OPEN*/get OPEN() {
      return 1;
    }
  });
  dart.registerExtension("WebSocket", html$.WebSocket);
  const _deltaX = Symbol('_deltaX');
  const _deltaY = Symbol('_deltaY');
  const _wheelDelta = Symbol('_wheelDelta');
  const _wheelDeltaX = Symbol('_wheelDeltaX');
  const _hasInitMouseScrollEvent = Symbol('_hasInitMouseScrollEvent');
  const _initMouseScrollEvent = Symbol('_initMouseScrollEvent');
  const _hasInitWheelEvent = Symbol('_hasInitWheelEvent');
  const _initWheelEvent = Symbol('_initWheelEvent');
  html$.WheelEvent = class WheelEvent$ extends html$.MouseEvent {
    static new(type, opts) {
      let view = opts && 'view' in opts ? opts.view : null;
      let deltaX = opts && 'deltaX' in opts ? opts.deltaX : 0;
      let deltaY = opts && 'deltaY' in opts ? opts.deltaY : 0;
      let deltaZ = opts && 'deltaZ' in opts ? opts.deltaZ : 0;
      let deltaMode = opts && 'deltaMode' in opts ? opts.deltaMode : 0;
      let detail = opts && 'detail' in opts ? opts.detail : 0;
      let screenX = opts && 'screenX' in opts ? opts.screenX : 0;
      let screenY = opts && 'screenY' in opts ? opts.screenY : 0;
      let clientX = opts && 'clientX' in opts ? opts.clientX : 0;
      let clientY = opts && 'clientY' in opts ? opts.clientY : 0;
      let button = opts && 'button' in opts ? opts.button : 0;
      let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
      let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
      let ctrlKey = opts && 'ctrlKey' in opts ? opts.ctrlKey : false;
      let altKey = opts && 'altKey' in opts ? opts.altKey : false;
      let shiftKey = opts && 'shiftKey' in opts ? opts.shiftKey : false;
      let metaKey = opts && 'metaKey' in opts ? opts.metaKey : false;
      let relatedTarget = opts && 'relatedTarget' in opts ? opts.relatedTarget : null;
      let options = new (IdentityMapOfString$Object()).from(["view", view, "deltaMode", deltaMode, "deltaX", deltaX, "deltaY", deltaY, "deltaZ", deltaZ, "detail", detail, "screenX", screenX, "screenY", screenY, "clientX", clientX, "clientY", clientY, "button", button, "bubbles", canBubble, "cancelable", cancelable, "ctrlKey", ctrlKey, "altKey", altKey, "shiftKey", shiftKey, "metaKey", metaKey, "relatedTarget", relatedTarget]);
      if (view == null) {
        view = html$.window;
      }
      return new WheelEvent(type, html_common.convertDartToNative_Dictionary(options));
    }
    static __(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$.WheelEvent._create_1(type, eventInitDict_1);
      }
      return html$.WheelEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new WheelEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new WheelEvent(type);
    }
    get [_deltaX]() {
      return this.deltaX;
    }
    get [_deltaY]() {
      return this.deltaY;
    }
    get [$deltaZ]() {
      return this.deltaZ;
    }
    get [$deltaY]() {
      if (this.deltaY !== undefined) {
        return this[_deltaY];
      }
      dart.throw(new core.UnsupportedError.new("deltaY is not supported"));
    }
    get [$deltaX]() {
      if (this.deltaX !== undefined) {
        return this[_deltaX];
      }
      dart.throw(new core.UnsupportedError.new("deltaX is not supported"));
    }
    get [$deltaMode]() {
      if (!!this.deltaMode) {
        return this.deltaMode;
      }
      return 0;
    }
    get [_wheelDelta]() {
      return this.wheelDelta;
    }
    get [_wheelDeltaX]() {
      return this.wheelDeltaX;
    }
    get [_detail]() {
      return this.detail;
    }
    get [_hasInitMouseScrollEvent]() {
      return !!this.initMouseScrollEvent;
    }
    [_initMouseScrollEvent](...args) {
      return this.initMouseScrollEvent.apply(this, args);
    }
    get [_hasInitWheelEvent]() {
      return !!this.initWheelEvent;
    }
    [_initWheelEvent](...args) {
      return this.initWheelEvent.apply(this, args);
    }
  };
  dart.addTypeTests(html$.WheelEvent);
  const deltaZ = Symbol("WheelEvent.deltaZ");
  dart.setMethodSignature(html$.WheelEvent, () => ({
    __proto__: dart.getMethods(html$.WheelEvent.__proto__),
    [_initMouseScrollEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.int, core.int, core.int, core.int, core.int, core.bool, core.bool, core.bool, core.bool, core.int, html$.EventTarget, core.int]),
    [_initWheelEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.int, core.int, core.int, core.int, core.int, core.int, html$.EventTarget, core.String, core.int, core.int, core.int, core.int])
  }));
  dart.setGetterSignature(html$.WheelEvent, () => ({
    __proto__: dart.getGetters(html$.WheelEvent.__proto__),
    [$deltaY]: core.num,
    [$deltaX]: core.num,
    [$deltaMode]: core.int,
    [_wheelDelta]: core.num,
    [_wheelDeltaX]: core.num,
    [_detail]: core.num,
    [_hasInitMouseScrollEvent]: core.bool,
    [_hasInitWheelEvent]: core.bool
  }));
  dart.setFieldSignature(html$.WheelEvent, () => ({
    __proto__: dart.getFields(html$.WheelEvent.__proto__),
    [_deltaX]: dart.finalFieldType(core.num),
    [_deltaY]: dart.finalFieldType(core.num),
    [$deltaZ]: dart.finalFieldType(core.num)
  }));
  dart.defineLazy(html$.WheelEvent, {
    /*html$.WheelEvent.DOM_DELTA_LINE*/get DOM_DELTA_LINE() {
      return 1;
    },
    /*html$.WheelEvent.DOM_DELTA_PAGE*/get DOM_DELTA_PAGE() {
      return 2;
    },
    /*html$.WheelEvent.DOM_DELTA_PIXEL*/get DOM_DELTA_PIXEL() {
      return 0;
    }
  });
  dart.registerExtension("WheelEvent", html$.WheelEvent);
  const _open2 = Symbol('_open2');
  const _open3 = Symbol('_open3');
  const _location = Symbol('_location');
  const _ensureRequestAnimationFrame = Symbol('_ensureRequestAnimationFrame');
  const _requestAnimationFrame = Symbol('_requestAnimationFrame');
  const _cancelAnimationFrame = Symbol('_cancelAnimationFrame');
  const _requestFileSystem = Symbol('_requestFileSystem');
  const _get_opener = Symbol('_get_opener');
  const _pageXOffset = Symbol('_pageXOffset');
  const _pageYOffset = Symbol('_pageYOffset');
  const _get_parent = Symbol('_get_parent');
  const _get_self = Symbol('_get_self');
  const _get_top = Symbol('_get_top');
  const __getter___1 = Symbol('__getter___1');
  const __getter___2 = Symbol('__getter___2');
  const _openDatabase = Symbol('_openDatabase');
  const _requestIdleCallback_1 = Symbol('_requestIdleCallback_1');
  const _requestIdleCallback_2 = Symbol('_requestIdleCallback_2');
  const _scroll_4 = Symbol('_scroll_4');
  const _scroll_5 = Symbol('_scroll_5');
  const _scrollBy_4 = Symbol('_scrollBy_4');
  const _scrollBy_5 = Symbol('_scrollBy_5');
  const _scrollTo_4 = Symbol('_scrollTo_4');
  const _scrollTo_5 = Symbol('_scrollTo_5');
  const __requestFileSystem = Symbol('__requestFileSystem');
  const _resolveLocalFileSystemUrl = Symbol('_resolveLocalFileSystemUrl');
  html$.Window = class Window extends html$.EventTarget {
    get [$animationFrame]() {
      let completer = CompleterOfnum().sync();
      this[$requestAnimationFrame](dart.fn(time => {
        completer.complete(time);
      }, numToNull()));
      return completer.future;
    }
    get [$document]() {
      return this.document;
    }
    [_open2](url, name) {
      return this.open(url, name);
    }
    [_open3](url, name, options) {
      return this.open(url, name, options);
    }
    [$open](url, name, options) {
      if (options === void 0) options = null;
      if (options == null) {
        return html$._DOMWindowCrossFrame._createSafe(this[_open2](url, name));
      } else {
        return html$._DOMWindowCrossFrame._createSafe(this[_open3](url, name, options));
      }
    }
    get [$location]() {
      return html$.Location._check(this[_location]);
    }
    set [$location](value) {
      this[_location] = value;
    }
    get [_location]() {
      return this.location;
    }
    set [_location](value) {
      this.location = value;
    }
    [$requestAnimationFrame](callback) {
      this[_ensureRequestAnimationFrame]();
      return this[_requestAnimationFrame](html$._wrapZone(core.num, callback));
    }
    [$cancelAnimationFrame](id) {
      this[_ensureRequestAnimationFrame]();
      this[_cancelAnimationFrame](id);
    }
    [_requestAnimationFrame](...args) {
      return this.requestAnimationFrame.apply(this, args);
    }
    [_cancelAnimationFrame](...args) {
      return this.cancelAnimationFrame.apply(this, args);
    }
    [_ensureRequestAnimationFrame]() {
      if (!!(this.requestAnimationFrame && this.cancelAnimationFrame)) return;
      (function($this) {
        var vendors = ['ms', 'moz', 'webkit', 'o'];
        for (var i = 0; i < vendors.length && !$this.requestAnimationFrame; ++i) {
          $this.requestAnimationFrame = $this[vendors[i] + 'RequestAnimationFrame'];
          $this.cancelAnimationFrame = $this[vendors[i] + 'CancelAnimationFrame'] || $this[vendors[i] + 'CancelRequestAnimationFrame'];
        }
        if ($this.requestAnimationFrame && $this.cancelAnimationFrame) return;
        $this.requestAnimationFrame = function(callback) {
          return window.setTimeout(function() {
            callback(Date.now());
          }, 16);
        };
        $this.cancelAnimationFrame = function(id) {
          clearTimeout(id);
        };
      })(this);
    }
    get [$indexedDB]() {
      return this.indexedDB || this.webkitIndexedDB || this.mozIndexedDB;
    }
    get [$console]() {
      return html$.Console._safeConsole;
    }
    [$requestFileSystem](size, opts) {
      let persistent = opts && 'persistent' in opts ? opts.persistent : false;
      return this[_requestFileSystem](dart.test(persistent) ? 1 : 0, size);
    }
    static get supportsPointConversions() {
      return html$.DomPoint.supported;
    }
    get [$animationWorklet]() {
      return this.animationWorklet;
    }
    get [$applicationCache]() {
      return this.applicationCache;
    }
    get [$audioWorklet]() {
      return this.audioWorklet;
    }
    get [$caches]() {
      return this.caches;
    }
    get [$closed]() {
      return this.closed;
    }
    get [$cookieStore]() {
      return this.cookieStore;
    }
    get [$crypto]() {
      return this.crypto;
    }
    get [$customElements]() {
      return this.customElements;
    }
    get [$defaultStatus]() {
      return this.defaultStatus;
    }
    set [$defaultStatus](value) {
      this.defaultStatus = value;
    }
    get [$defaultstatus]() {
      return this.defaultstatus;
    }
    set [$defaultstatus](value) {
      this.defaultstatus = value;
    }
    get [$devicePixelRatio]() {
      return this.devicePixelRatio;
    }
    get [$external]() {
      return this.external;
    }
    get [$history]() {
      return this.history;
    }
    get [$innerHeight]() {
      return this.innerHeight;
    }
    get [$innerWidth]() {
      return this.innerWidth;
    }
    get [$isSecureContext]() {
      return this.isSecureContext;
    }
    get [$localStorage]() {
      return this.localStorage;
    }
    get [$locationbar]() {
      return this.locationbar;
    }
    get [$menubar]() {
      return this.menubar;
    }
    get [$name]() {
      return this.name;
    }
    set [$name](value) {
      this.name = value;
    }
    get [$navigator]() {
      return this.navigator;
    }
    get [$offscreenBuffering]() {
      return this.offscreenBuffering;
    }
    get [$opener]() {
      return html$._convertNativeToDart_Window(this[_get_opener]);
    }
    get [_get_opener]() {
      return this.opener;
    }
    set [$opener](value) {
      this.opener = value;
    }
    get [$orientation]() {
      return this.orientation;
    }
    get [$origin]() {
      return this.origin;
    }
    get [$outerHeight]() {
      return this.outerHeight;
    }
    get [$outerWidth]() {
      return this.outerWidth;
    }
    get [_pageXOffset]() {
      return this.pageXOffset;
    }
    get [_pageYOffset]() {
      return this.pageYOffset;
    }
    get [$parent]() {
      return html$._convertNativeToDart_Window(this[_get_parent]);
    }
    get [_get_parent]() {
      return this.parent;
    }
    get [$performance]() {
      return this.performance;
    }
    get [$screen]() {
      return this.screen;
    }
    get [$screenLeft]() {
      return this.screenLeft;
    }
    get [$screenTop]() {
      return this.screenTop;
    }
    get [$screenX]() {
      return this.screenX;
    }
    get [$screenY]() {
      return this.screenY;
    }
    get [$scrollbars]() {
      return this.scrollbars;
    }
    get [$self]() {
      return html$._convertNativeToDart_Window(this[_get_self]);
    }
    get [_get_self]() {
      return this.self;
    }
    get [$sessionStorage]() {
      return this.sessionStorage;
    }
    get [$speechSynthesis]() {
      return this.speechSynthesis;
    }
    get [$status]() {
      return this.status;
    }
    set [$status](value) {
      this.status = value;
    }
    get [$statusbar]() {
      return this.statusbar;
    }
    get [$styleMedia]() {
      return this.styleMedia;
    }
    get [$toolbar]() {
      return this.toolbar;
    }
    get [$top]() {
      return html$._convertNativeToDart_Window(this[_get_top]);
    }
    get [_get_top]() {
      return this.top;
    }
    get [$visualViewport]() {
      return this.visualViewport;
    }
    get [$window]() {
      return html$._convertNativeToDart_Window(this[_get_window]);
    }
    get [_get_window]() {
      return this.window;
    }
    [__getter__](index_OR_name) {
      if (core.int.is(index_OR_name)) {
        return html$._convertNativeToDart_Window(this[__getter___1](index_OR_name));
      }
      if (typeof index_OR_name == 'string') {
        return html$._convertNativeToDart_Window(this[__getter___2](index_OR_name));
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [__getter___1](...args) {
      return this.__getter__.apply(this, args);
    }
    [__getter___2](...args) {
      return this.__getter__.apply(this, args);
    }
    [$alert](...args) {
      return this.alert.apply(this, args);
    }
    [$cancelIdleCallback](...args) {
      return this.cancelIdleCallback.apply(this, args);
    }
    [$close](...args) {
      return this.close.apply(this, args);
    }
    [$confirm](...args) {
      return this.confirm.apply(this, args);
    }
    [$fetch](input, init) {
      if (init === void 0) init = null;
      let init_dict = null;
      if (init != null) {
        init_dict = html_common.convertDartToNative_Dictionary(init);
      }
      return html$.promiseToFuture(dart.dynamic, this.fetch(input, init_dict));
    }
    [$find](...args) {
      return this.find.apply(this, args);
    }
    [_getComputedStyle](...args) {
      return this.getComputedStyle.apply(this, args);
    }
    [$getComputedStyleMap](...args) {
      return this.getComputedStyleMap.apply(this, args);
    }
    [$getMatchedCssRules](...args) {
      return this.getMatchedCSSRules.apply(this, args);
    }
    [$getSelection](...args) {
      return this.getSelection.apply(this, args);
    }
    [$matchMedia](...args) {
      return this.matchMedia.apply(this, args);
    }
    [$moveBy](...args) {
      return this.moveBy.apply(this, args);
    }
    [_moveTo](...args) {
      return this.moveTo.apply(this, args);
    }
    [_openDatabase](...args) {
      return this.openDatabase.apply(this, args);
    }
    [$postMessage](message, targetOrigin, transfer) {
      if (transfer === void 0) transfer = null;
      if (transfer != null) {
        let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
        this[_postMessage_1](message_1, targetOrigin, transfer);
        return;
      }
      let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
      this[_postMessage_2](message_1, targetOrigin);
      return;
    }
    [_postMessage_1](...args) {
      return this.postMessage.apply(this, args);
    }
    [_postMessage_2](...args) {
      return this.postMessage.apply(this, args);
    }
    [$print](...args) {
      return this.print.apply(this, args);
    }
    [$requestIdleCallback](callback, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return this[_requestIdleCallback_1](callback, options_1);
      }
      return this[_requestIdleCallback_2](callback);
    }
    [_requestIdleCallback_1](...args) {
      return this.requestIdleCallback.apply(this, args);
    }
    [_requestIdleCallback_2](...args) {
      return this.requestIdleCallback.apply(this, args);
    }
    [$resizeBy](...args) {
      return this.resizeBy.apply(this, args);
    }
    [$resizeTo](...args) {
      return this.resizeTo.apply(this, args);
    }
    [$scroll](options_OR_x, y, scrollOptions) {
      if (options_OR_x === void 0) options_OR_x = null;
      if (y === void 0) y = null;
      if (scrollOptions === void 0) scrollOptions = null;
      if (options_OR_x == null && y == null && scrollOptions == null) {
        this[_scroll_1]();
        return;
      }
      if (core.Map.is(options_OR_x) && y == null && scrollOptions == null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
        this[_scroll_2](options_1);
        return;
      }
      if (typeof y == 'number' && typeof options_OR_x == 'number' && scrollOptions == null) {
        this[_scroll_3](options_OR_x, y);
        return;
      }
      if (core.int.is(y) && core.int.is(options_OR_x) && scrollOptions == null) {
        this[_scroll_4](options_OR_x, y);
        return;
      }
      if (scrollOptions != null && core.int.is(y) && core.int.is(options_OR_x)) {
        let scrollOptions_1 = html_common.convertDartToNative_Dictionary(scrollOptions);
        this[_scroll_5](options_OR_x, y, scrollOptions_1);
        return;
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_scroll_1](...args) {
      return this.scroll.apply(this, args);
    }
    [_scroll_2](...args) {
      return this.scroll.apply(this, args);
    }
    [_scroll_3](...args) {
      return this.scroll.apply(this, args);
    }
    [_scroll_4](...args) {
      return this.scroll.apply(this, args);
    }
    [_scroll_5](...args) {
      return this.scroll.apply(this, args);
    }
    [$scrollBy](options_OR_x, y, scrollOptions) {
      if (options_OR_x === void 0) options_OR_x = null;
      if (y === void 0) y = null;
      if (scrollOptions === void 0) scrollOptions = null;
      if (options_OR_x == null && y == null && scrollOptions == null) {
        this[_scrollBy_1]();
        return;
      }
      if (core.Map.is(options_OR_x) && y == null && scrollOptions == null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
        this[_scrollBy_2](options_1);
        return;
      }
      if (typeof y == 'number' && typeof options_OR_x == 'number' && scrollOptions == null) {
        this[_scrollBy_3](options_OR_x, y);
        return;
      }
      if (core.int.is(y) && core.int.is(options_OR_x) && scrollOptions == null) {
        this[_scrollBy_4](options_OR_x, y);
        return;
      }
      if (scrollOptions != null && core.int.is(y) && core.int.is(options_OR_x)) {
        let scrollOptions_1 = html_common.convertDartToNative_Dictionary(scrollOptions);
        this[_scrollBy_5](options_OR_x, y, scrollOptions_1);
        return;
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_scrollBy_1](...args) {
      return this.scrollBy.apply(this, args);
    }
    [_scrollBy_2](...args) {
      return this.scrollBy.apply(this, args);
    }
    [_scrollBy_3](...args) {
      return this.scrollBy.apply(this, args);
    }
    [_scrollBy_4](...args) {
      return this.scrollBy.apply(this, args);
    }
    [_scrollBy_5](...args) {
      return this.scrollBy.apply(this, args);
    }
    [$scrollTo](options_OR_x, y, scrollOptions) {
      if (options_OR_x === void 0) options_OR_x = null;
      if (y === void 0) y = null;
      if (scrollOptions === void 0) scrollOptions = null;
      if (options_OR_x == null && y == null && scrollOptions == null) {
        this[_scrollTo_1]();
        return;
      }
      if (core.Map.is(options_OR_x) && y == null && scrollOptions == null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
        this[_scrollTo_2](options_1);
        return;
      }
      if (typeof y == 'number' && typeof options_OR_x == 'number' && scrollOptions == null) {
        this[_scrollTo_3](options_OR_x, y);
        return;
      }
      if (core.int.is(y) && core.int.is(options_OR_x) && scrollOptions == null) {
        this[_scrollTo_4](options_OR_x, y);
        return;
      }
      if (scrollOptions != null && core.int.is(y) && core.int.is(options_OR_x)) {
        let scrollOptions_1 = html_common.convertDartToNative_Dictionary(scrollOptions);
        this[_scrollTo_5](options_OR_x, y, scrollOptions_1);
        return;
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_scrollTo_1](...args) {
      return this.scrollTo.apply(this, args);
    }
    [_scrollTo_2](...args) {
      return this.scrollTo.apply(this, args);
    }
    [_scrollTo_3](...args) {
      return this.scrollTo.apply(this, args);
    }
    [_scrollTo_4](...args) {
      return this.scrollTo.apply(this, args);
    }
    [_scrollTo_5](...args) {
      return this.scrollTo.apply(this, args);
    }
    [$stop](...args) {
      return this.stop.apply(this, args);
    }
    [__requestFileSystem](...args) {
      return this.webkitRequestFileSystem.apply(this, args);
    }
    [_requestFileSystem](type, size) {
      let completer = CompleterOfFileSystem().new();
      this[__requestFileSystem](type, size, dart.fn(value => {
        _js_helper.applyExtension("DOMFileSystem", value);
        _js_helper.applyExtension("DirectoryEntry", value.root);
        completer.complete(value);
      }, FileSystemToNull()), dart.fn(error => {
        completer.completeError(error);
      }, DomExceptionToNull()));
      return completer.future;
    }
    [_resolveLocalFileSystemUrl](...args) {
      return this.webkitResolveLocalFileSystemURL.apply(this, args);
    }
    [$resolveLocalFileSystemUrl](url) {
      let completer = CompleterOfEntry().new();
      this[_resolveLocalFileSystemUrl](url, dart.fn(value => {
        completer.complete(value);
      }, EntryToNull()), dart.fn(error => {
        completer.completeError(error);
      }, DomExceptionToNull()));
      return completer.future;
    }
    [$atob](...args) {
      return this.atob.apply(this, args);
    }
    [$btoa](...args) {
      return this.btoa.apply(this, args);
    }
    [_setInterval_String](...args) {
      return this.setInterval.apply(this, args);
    }
    [_setTimeout_String](...args) {
      return this.setTimeout.apply(this, args);
    }
    [_clearInterval](...args) {
      return this.clearInterval.apply(this, args);
    }
    [_clearTimeout](...args) {
      return this.clearTimeout.apply(this, args);
    }
    [_setInterval](...args) {
      return this.setInterval.apply(this, args);
    }
    [_setTimeout](...args) {
      return this.setTimeout.apply(this, args);
    }
    get [$onContentLoaded]() {
      return html$.Window.contentLoadedEvent.forTarget(this);
    }
    get [$onAbort]() {
      return html$.Element.abortEvent.forTarget(this);
    }
    get [$onBlur]() {
      return html$.Element.blurEvent.forTarget(this);
    }
    get [$onCanPlay]() {
      return html$.Element.canPlayEvent.forTarget(this);
    }
    get [$onCanPlayThrough]() {
      return html$.Element.canPlayThroughEvent.forTarget(this);
    }
    get [$onChange]() {
      return html$.Element.changeEvent.forTarget(this);
    }
    get [$onClick]() {
      return html$.Element.clickEvent.forTarget(this);
    }
    get [$onContextMenu]() {
      return html$.Element.contextMenuEvent.forTarget(this);
    }
    get [$onDoubleClick]() {
      return html$.Element.doubleClickEvent.forTarget(this);
    }
    get [$onDeviceMotion]() {
      return html$.Window.deviceMotionEvent.forTarget(this);
    }
    get [$onDeviceOrientation]() {
      return html$.Window.deviceOrientationEvent.forTarget(this);
    }
    get [$onDrag]() {
      return html$.Element.dragEvent.forTarget(this);
    }
    get [$onDragEnd]() {
      return html$.Element.dragEndEvent.forTarget(this);
    }
    get [$onDragEnter]() {
      return html$.Element.dragEnterEvent.forTarget(this);
    }
    get [$onDragLeave]() {
      return html$.Element.dragLeaveEvent.forTarget(this);
    }
    get [$onDragOver]() {
      return html$.Element.dragOverEvent.forTarget(this);
    }
    get [$onDragStart]() {
      return html$.Element.dragStartEvent.forTarget(this);
    }
    get [$onDrop]() {
      return html$.Element.dropEvent.forTarget(this);
    }
    get [$onDurationChange]() {
      return html$.Element.durationChangeEvent.forTarget(this);
    }
    get [$onEmptied]() {
      return html$.Element.emptiedEvent.forTarget(this);
    }
    get [$onEnded]() {
      return html$.Element.endedEvent.forTarget(this);
    }
    get [$onError]() {
      return html$.Element.errorEvent.forTarget(this);
    }
    get [$onFocus]() {
      return html$.Element.focusEvent.forTarget(this);
    }
    get [$onHashChange]() {
      return html$.Window.hashChangeEvent.forTarget(this);
    }
    get [$onInput]() {
      return html$.Element.inputEvent.forTarget(this);
    }
    get [$onInvalid]() {
      return html$.Element.invalidEvent.forTarget(this);
    }
    get [$onKeyDown]() {
      return html$.Element.keyDownEvent.forTarget(this);
    }
    get [$onKeyPress]() {
      return html$.Element.keyPressEvent.forTarget(this);
    }
    get [$onKeyUp]() {
      return html$.Element.keyUpEvent.forTarget(this);
    }
    get [$onLoad]() {
      return html$.Element.loadEvent.forTarget(this);
    }
    get [$onLoadedData]() {
      return html$.Element.loadedDataEvent.forTarget(this);
    }
    get [$onLoadedMetadata]() {
      return html$.Element.loadedMetadataEvent.forTarget(this);
    }
    get [$onLoadStart]() {
      return html$.Window.loadStartEvent.forTarget(this);
    }
    get [$onMessage]() {
      return html$.Window.messageEvent.forTarget(this);
    }
    get [$onMouseDown]() {
      return html$.Element.mouseDownEvent.forTarget(this);
    }
    get [$onMouseEnter]() {
      return html$.Element.mouseEnterEvent.forTarget(this);
    }
    get [$onMouseLeave]() {
      return html$.Element.mouseLeaveEvent.forTarget(this);
    }
    get [$onMouseMove]() {
      return html$.Element.mouseMoveEvent.forTarget(this);
    }
    get [$onMouseOut]() {
      return html$.Element.mouseOutEvent.forTarget(this);
    }
    get [$onMouseOver]() {
      return html$.Element.mouseOverEvent.forTarget(this);
    }
    get [$onMouseUp]() {
      return html$.Element.mouseUpEvent.forTarget(this);
    }
    get [$onMouseWheel]() {
      return html$.Element.mouseWheelEvent.forTarget(this);
    }
    get [$onOffline]() {
      return html$.Window.offlineEvent.forTarget(this);
    }
    get [$onOnline]() {
      return html$.Window.onlineEvent.forTarget(this);
    }
    get [$onPageHide]() {
      return html$.Window.pageHideEvent.forTarget(this);
    }
    get [$onPageShow]() {
      return html$.Window.pageShowEvent.forTarget(this);
    }
    get [$onPause]() {
      return html$.Element.pauseEvent.forTarget(this);
    }
    get [$onPlay]() {
      return html$.Element.playEvent.forTarget(this);
    }
    get [$onPlaying]() {
      return html$.Element.playingEvent.forTarget(this);
    }
    get [$onPopState]() {
      return html$.Window.popStateEvent.forTarget(this);
    }
    get [$onProgress]() {
      return html$.Window.progressEvent.forTarget(this);
    }
    get [$onRateChange]() {
      return html$.Element.rateChangeEvent.forTarget(this);
    }
    get [$onReset]() {
      return html$.Element.resetEvent.forTarget(this);
    }
    get [$onResize]() {
      return html$.Element.resizeEvent.forTarget(this);
    }
    get [$onScroll]() {
      return html$.Element.scrollEvent.forTarget(this);
    }
    get [$onSearch]() {
      return html$.Element.searchEvent.forTarget(this);
    }
    get [$onSeeked]() {
      return html$.Element.seekedEvent.forTarget(this);
    }
    get [$onSeeking]() {
      return html$.Element.seekingEvent.forTarget(this);
    }
    get [$onSelect]() {
      return html$.Element.selectEvent.forTarget(this);
    }
    get [$onStalled]() {
      return html$.Element.stalledEvent.forTarget(this);
    }
    get [$onStorage]() {
      return html$.Window.storageEvent.forTarget(this);
    }
    get [$onSubmit]() {
      return html$.Element.submitEvent.forTarget(this);
    }
    get [$onSuspend]() {
      return html$.Element.suspendEvent.forTarget(this);
    }
    get [$onTimeUpdate]() {
      return html$.Element.timeUpdateEvent.forTarget(this);
    }
    get [$onTouchCancel]() {
      return html$.Element.touchCancelEvent.forTarget(this);
    }
    get [$onTouchEnd]() {
      return html$.Element.touchEndEvent.forTarget(this);
    }
    get [$onTouchMove]() {
      return html$.Element.touchMoveEvent.forTarget(this);
    }
    get [$onTouchStart]() {
      return html$.Element.touchStartEvent.forTarget(this);
    }
    get [$onTransitionEnd]() {
      return html$.Element.transitionEndEvent.forTarget(this);
    }
    get [$onUnload]() {
      return html$.Window.unloadEvent.forTarget(this);
    }
    get [$onVolumeChange]() {
      return html$.Element.volumeChangeEvent.forTarget(this);
    }
    get [$onWaiting]() {
      return html$.Element.waitingEvent.forTarget(this);
    }
    get [$onAnimationEnd]() {
      return html$.Window.animationEndEvent.forTarget(this);
    }
    get [$onAnimationIteration]() {
      return html$.Window.animationIterationEvent.forTarget(this);
    }
    get [$onAnimationStart]() {
      return html$.Window.animationStartEvent.forTarget(this);
    }
    get [$onBeforeUnload]() {
      return html$.Window.beforeUnloadEvent.forTarget(this);
    }
    get [$onWheel]() {
      return html$.Element.wheelEvent.forTarget(this);
    }
    [$moveTo](p) {
      this[_moveTo](dart.asInt(p.x), dart.asInt(p.y));
    }
    [$openDatabase](name, version, displayName, estimatedSize, creationCallback) {
      if (creationCallback === void 0) creationCallback = null;
      let db = null;
      if (creationCallback == null)
        db = this[_openDatabase](name, version, displayName, estimatedSize);
      else
        db = this[_openDatabase](name, version, displayName, estimatedSize, creationCallback);
      _js_helper.applyExtension("Database", db);
      return web_sql.SqlDatabase._check(db);
    }
    get [$pageXOffset]() {
      return this.pageXOffset[$round]();
    }
    get [$pageYOffset]() {
      return this.pageYOffset[$round]();
    }
    get [$scrollX]() {
      return "scrollX" in this ? this.scrollX[$round]() : this[$document].documentElement[$scrollLeft];
    }
    get [$scrollY]() {
      return "scrollY" in this ? this.scrollY[$round]() : this[$document].documentElement[$scrollTop];
    }
  };
  dart.addTypeTests(html$.Window);
  const animationWorklet = Symbol("Window.animationWorklet");
  const applicationCache = Symbol("Window.applicationCache");
  const audioWorklet = Symbol("Window.audioWorklet");
  const caches$ = Symbol("Window.caches");
  const closed = Symbol("Window.closed");
  const cookieStore = Symbol("Window.cookieStore");
  const crypto$0 = Symbol("Window.crypto");
  const customElements = Symbol("Window.customElements");
  const defaultStatus = Symbol("Window.defaultStatus");
  const defaultstatus = Symbol("Window.defaultstatus");
  const devicePixelRatio$ = Symbol("Window.devicePixelRatio");
  const external = Symbol("Window.external");
  const history = Symbol("Window.history");
  const innerHeight = Symbol("Window.innerHeight");
  const innerWidth = Symbol("Window.innerWidth");
  const isSecureContext$ = Symbol("Window.isSecureContext");
  const localStorage = Symbol("Window.localStorage");
  const locationbar = Symbol("Window.locationbar");
  const menubar = Symbol("Window.menubar");
  const name$39 = Symbol("Window.name");
  const navigator$ = Symbol("Window.navigator");
  const offscreenBuffering = Symbol("Window.offscreenBuffering");
  const orientation$3 = Symbol("Window.orientation");
  const origin$8 = Symbol("Window.origin");
  const outerHeight = Symbol("Window.outerHeight");
  const outerWidth = Symbol("Window.outerWidth");
  const performance$ = Symbol("Window.performance");
  const screen = Symbol("Window.screen");
  const screenLeft = Symbol("Window.screenLeft");
  const screenTop = Symbol("Window.screenTop");
  const screenX = Symbol("Window.screenX");
  const screenY = Symbol("Window.screenY");
  const scrollbars = Symbol("Window.scrollbars");
  const sessionStorage = Symbol("Window.sessionStorage");
  const speechSynthesis = Symbol("Window.speechSynthesis");
  const status$3 = Symbol("Window.status");
  const statusbar = Symbol("Window.statusbar");
  const styleMedia = Symbol("Window.styleMedia");
  const toolbar = Symbol("Window.toolbar");
  const visualViewport = Symbol("Window.visualViewport");
  html$.Window[dart.implements] = () => [html$.WindowEventHandlers, html$.WindowBase, html$.GlobalEventHandlers, html$._WindowTimers, html$.WindowBase64];
  dart.setMethodSignature(html$.Window, () => ({
    __proto__: dart.getMethods(html$.Window.__proto__),
    [_open2]: dart.fnType(html$.WindowBase, [dart.dynamic, dart.dynamic]),
    [_open3]: dart.fnType(html$.WindowBase, [dart.dynamic, dart.dynamic, dart.dynamic]),
    [$open]: dart.fnType(html$.WindowBase, [core.String, core.String], [core.String]),
    [$requestAnimationFrame]: dart.fnType(core.int, [dart.fnType(dart.void, [core.num])]),
    [$cancelAnimationFrame]: dart.fnType(dart.void, [core.int]),
    [_requestAnimationFrame]: dart.fnType(core.int, [dart.fnType(dart.void, [core.num])]),
    [_cancelAnimationFrame]: dart.fnType(dart.void, [core.int]),
    [_ensureRequestAnimationFrame]: dart.fnType(dart.dynamic, []),
    [$requestFileSystem]: dart.fnType(async.Future$(html$.FileSystem), [core.int], {persistent: core.bool}),
    [__getter__]: dart.fnType(html$.WindowBase, [dart.dynamic]),
    [__getter___1]: dart.fnType(dart.dynamic, [core.int]),
    [__getter___2]: dart.fnType(dart.dynamic, [core.String]),
    [$alert]: dart.fnType(dart.void, [], [core.String]),
    [$cancelIdleCallback]: dart.fnType(dart.void, [core.int]),
    [$close]: dart.fnType(dart.void, []),
    [$confirm]: dart.fnType(core.bool, [], [core.String]),
    [$fetch]: dart.fnType(async.Future, [dart.dynamic], [core.Map]),
    [$find]: dart.fnType(core.bool, [core.String, core.bool, core.bool, core.bool, core.bool, core.bool, core.bool]),
    [_getComputedStyle]: dart.fnType(html$.CssStyleDeclaration, [html$.Element], [core.String]),
    [$getComputedStyleMap]: dart.fnType(html$.StylePropertyMapReadonly, [html$.Element, core.String]),
    [$getMatchedCssRules]: dart.fnType(core.List$(html$.CssRule), [html$.Element, core.String]),
    [$getSelection]: dart.fnType(html$.Selection, []),
    [$matchMedia]: dart.fnType(html$.MediaQueryList, [core.String]),
    [$moveBy]: dart.fnType(dart.void, [core.int, core.int]),
    [_moveTo]: dart.fnType(dart.void, [core.int, core.int]),
    [_openDatabase]: dart.fnType(web_sql.SqlDatabase, [core.String, core.String, core.String, core.int], [dart.fnType(dart.void, [web_sql.SqlDatabase])]),
    [$postMessage]: dart.fnType(dart.void, [dart.dynamic, core.String], [core.List$(core.Object)]),
    [_postMessage_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, core.List$(core.Object)]),
    [_postMessage_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic]),
    [$print]: dart.fnType(dart.void, []),
    [$requestIdleCallback]: dart.fnType(core.int, [dart.fnType(dart.void, [html$.IdleDeadline])], [core.Map]),
    [_requestIdleCallback_1]: dart.fnType(core.int, [dart.fnType(dart.void, [html$.IdleDeadline]), dart.dynamic]),
    [_requestIdleCallback_2]: dart.fnType(core.int, [dart.fnType(dart.void, [html$.IdleDeadline])]),
    [$resizeBy]: dart.fnType(dart.void, [core.int, core.int]),
    [$resizeTo]: dart.fnType(dart.void, [core.int, core.int]),
    [$scroll]: dart.fnType(dart.void, [], [dart.dynamic, dart.dynamic, core.Map]),
    [_scroll_1]: dart.fnType(dart.void, []),
    [_scroll_2]: dart.fnType(dart.void, [dart.dynamic]),
    [_scroll_3]: dart.fnType(dart.void, [core.num, core.num]),
    [_scroll_4]: dart.fnType(dart.void, [core.int, core.int]),
    [_scroll_5]: dart.fnType(dart.void, [core.int, core.int, dart.dynamic]),
    [$scrollBy]: dart.fnType(dart.void, [], [dart.dynamic, dart.dynamic, core.Map]),
    [_scrollBy_1]: dart.fnType(dart.void, []),
    [_scrollBy_2]: dart.fnType(dart.void, [dart.dynamic]),
    [_scrollBy_3]: dart.fnType(dart.void, [core.num, core.num]),
    [_scrollBy_4]: dart.fnType(dart.void, [core.int, core.int]),
    [_scrollBy_5]: dart.fnType(dart.void, [core.int, core.int, dart.dynamic]),
    [$scrollTo]: dart.fnType(dart.void, [], [dart.dynamic, dart.dynamic, core.Map]),
    [_scrollTo_1]: dart.fnType(dart.void, []),
    [_scrollTo_2]: dart.fnType(dart.void, [dart.dynamic]),
    [_scrollTo_3]: dart.fnType(dart.void, [core.num, core.num]),
    [_scrollTo_4]: dart.fnType(dart.void, [core.int, core.int]),
    [_scrollTo_5]: dart.fnType(dart.void, [core.int, core.int, dart.dynamic]),
    [$stop]: dart.fnType(dart.void, []),
    [__requestFileSystem]: dart.fnType(dart.void, [core.int, core.int, dart.fnType(dart.void, [html$.FileSystem])], [dart.fnType(dart.void, [html$.DomException])]),
    [_requestFileSystem]: dart.fnType(async.Future$(html$.FileSystem), [core.int, core.int]),
    [_resolveLocalFileSystemUrl]: dart.fnType(dart.void, [core.String, dart.fnType(dart.void, [html$.Entry])], [dart.fnType(dart.void, [html$.DomException])]),
    [$resolveLocalFileSystemUrl]: dart.fnType(async.Future$(html$.Entry), [core.String]),
    [$atob]: dart.fnType(core.String, [core.String]),
    [$btoa]: dart.fnType(core.String, [core.String]),
    [_setInterval_String]: dart.fnType(core.int, [core.String], [core.int, core.Object]),
    [_setTimeout_String]: dart.fnType(core.int, [core.String], [core.int, core.Object]),
    [_clearInterval]: dart.fnType(dart.void, [], [core.int]),
    [_clearTimeout]: dart.fnType(dart.void, [], [core.int]),
    [_setInterval]: dart.fnType(core.int, [core.Object], [core.int]),
    [_setTimeout]: dart.fnType(core.int, [core.Object], [core.int]),
    [$moveTo]: dart.fnType(dart.void, [math.Point$(core.num)]),
    [$openDatabase]: dart.fnType(web_sql.SqlDatabase, [core.String, core.String, core.String, core.int], [dart.fnType(dart.void, [web_sql.SqlDatabase])])
  }));
  dart.setGetterSignature(html$.Window, () => ({
    __proto__: dart.getGetters(html$.Window.__proto__),
    [$animationFrame]: async.Future$(core.num),
    [$document]: html$.Document,
    [$location]: html$.Location,
    [_location]: dart.dynamic,
    [$indexedDB]: indexed_db.IdbFactory,
    [$console]: html$.Console,
    [$opener]: html$.WindowBase,
    [$parent]: html$.WindowBase,
    [$self]: html$.WindowBase,
    [$top]: html$.WindowBase,
    [$window]: html$.WindowBase,
    [$onContentLoaded]: async.Stream$(html$.Event),
    [$onAbort]: async.Stream$(html$.Event),
    [$onBlur]: async.Stream$(html$.Event),
    [$onCanPlay]: async.Stream$(html$.Event),
    [$onCanPlayThrough]: async.Stream$(html$.Event),
    [$onChange]: async.Stream$(html$.Event),
    [$onClick]: async.Stream$(html$.MouseEvent),
    [$onContextMenu]: async.Stream$(html$.MouseEvent),
    [$onDoubleClick]: async.Stream$(html$.Event),
    [$onDeviceMotion]: async.Stream$(html$.DeviceMotionEvent),
    [$onDeviceOrientation]: async.Stream$(html$.DeviceOrientationEvent),
    [$onDrag]: async.Stream$(html$.MouseEvent),
    [$onDragEnd]: async.Stream$(html$.MouseEvent),
    [$onDragEnter]: async.Stream$(html$.MouseEvent),
    [$onDragLeave]: async.Stream$(html$.MouseEvent),
    [$onDragOver]: async.Stream$(html$.MouseEvent),
    [$onDragStart]: async.Stream$(html$.MouseEvent),
    [$onDrop]: async.Stream$(html$.MouseEvent),
    [$onDurationChange]: async.Stream$(html$.Event),
    [$onEmptied]: async.Stream$(html$.Event),
    [$onEnded]: async.Stream$(html$.Event),
    [$onError]: async.Stream$(html$.Event),
    [$onFocus]: async.Stream$(html$.Event),
    [$onHashChange]: async.Stream$(html$.Event),
    [$onInput]: async.Stream$(html$.Event),
    [$onInvalid]: async.Stream$(html$.Event),
    [$onKeyDown]: async.Stream$(html$.KeyboardEvent),
    [$onKeyPress]: async.Stream$(html$.KeyboardEvent),
    [$onKeyUp]: async.Stream$(html$.KeyboardEvent),
    [$onLoad]: async.Stream$(html$.Event),
    [$onLoadedData]: async.Stream$(html$.Event),
    [$onLoadedMetadata]: async.Stream$(html$.Event),
    [$onLoadStart]: async.Stream$(html$.Event),
    [$onMessage]: async.Stream$(html$.MessageEvent),
    [$onMouseDown]: async.Stream$(html$.MouseEvent),
    [$onMouseEnter]: async.Stream$(html$.MouseEvent),
    [$onMouseLeave]: async.Stream$(html$.MouseEvent),
    [$onMouseMove]: async.Stream$(html$.MouseEvent),
    [$onMouseOut]: async.Stream$(html$.MouseEvent),
    [$onMouseOver]: async.Stream$(html$.MouseEvent),
    [$onMouseUp]: async.Stream$(html$.MouseEvent),
    [$onMouseWheel]: async.Stream$(html$.WheelEvent),
    [$onOffline]: async.Stream$(html$.Event),
    [$onOnline]: async.Stream$(html$.Event),
    [$onPageHide]: async.Stream$(html$.Event),
    [$onPageShow]: async.Stream$(html$.Event),
    [$onPause]: async.Stream$(html$.Event),
    [$onPlay]: async.Stream$(html$.Event),
    [$onPlaying]: async.Stream$(html$.Event),
    [$onPopState]: async.Stream$(html$.PopStateEvent),
    [$onProgress]: async.Stream$(html$.Event),
    [$onRateChange]: async.Stream$(html$.Event),
    [$onReset]: async.Stream$(html$.Event),
    [$onResize]: async.Stream$(html$.Event),
    [$onScroll]: async.Stream$(html$.Event),
    [$onSearch]: async.Stream$(html$.Event),
    [$onSeeked]: async.Stream$(html$.Event),
    [$onSeeking]: async.Stream$(html$.Event),
    [$onSelect]: async.Stream$(html$.Event),
    [$onStalled]: async.Stream$(html$.Event),
    [$onStorage]: async.Stream$(html$.StorageEvent),
    [$onSubmit]: async.Stream$(html$.Event),
    [$onSuspend]: async.Stream$(html$.Event),
    [$onTimeUpdate]: async.Stream$(html$.Event),
    [$onTouchCancel]: async.Stream$(html$.TouchEvent),
    [$onTouchEnd]: async.Stream$(html$.TouchEvent),
    [$onTouchMove]: async.Stream$(html$.TouchEvent),
    [$onTouchStart]: async.Stream$(html$.TouchEvent),
    [$onTransitionEnd]: async.Stream$(html$.TransitionEvent),
    [$onUnload]: async.Stream$(html$.Event),
    [$onVolumeChange]: async.Stream$(html$.Event),
    [$onWaiting]: async.Stream$(html$.Event),
    [$onAnimationEnd]: async.Stream$(html$.AnimationEvent),
    [$onAnimationIteration]: async.Stream$(html$.AnimationEvent),
    [$onAnimationStart]: async.Stream$(html$.AnimationEvent),
    [$onBeforeUnload]: async.Stream$(html$.Event),
    [$onWheel]: async.Stream$(html$.WheelEvent),
    [$pageXOffset]: core.int,
    [$pageYOffset]: core.int,
    [$scrollX]: core.int,
    [$scrollY]: core.int
  }));
  dart.setSetterSignature(html$.Window, () => ({
    __proto__: dart.getSetters(html$.Window.__proto__),
    [$location]: html$.LocationBase,
    [_location]: dart.dynamic,
    [$opener]: html$.Window
  }));
  dart.setFieldSignature(html$.Window, () => ({
    __proto__: dart.getFields(html$.Window.__proto__),
    [$animationWorklet]: dart.finalFieldType(html$._Worklet),
    [$applicationCache]: dart.finalFieldType(html$.ApplicationCache),
    [$audioWorklet]: dart.finalFieldType(html$._Worklet),
    [$caches]: dart.finalFieldType(html$.CacheStorage),
    [$closed]: dart.finalFieldType(core.bool),
    [$cookieStore]: dart.finalFieldType(html$.CookieStore),
    [$crypto]: dart.finalFieldType(html$.Crypto),
    [$customElements]: dart.finalFieldType(html$.CustomElementRegistry),
    [$defaultStatus]: dart.fieldType(core.String),
    [$defaultstatus]: dart.fieldType(core.String),
    [$devicePixelRatio]: dart.finalFieldType(core.num),
    [$external]: dart.finalFieldType(html$.External),
    [$history]: dart.finalFieldType(html$.History),
    [$innerHeight]: dart.finalFieldType(core.int),
    [$innerWidth]: dart.finalFieldType(core.int),
    [$isSecureContext]: dart.finalFieldType(core.bool),
    [$localStorage]: dart.finalFieldType(html$.Storage),
    [$locationbar]: dart.finalFieldType(html$.BarProp),
    [$menubar]: dart.finalFieldType(html$.BarProp),
    [$name]: dart.fieldType(core.String),
    [$navigator]: dart.finalFieldType(html$.Navigator),
    [$offscreenBuffering]: dart.finalFieldType(core.bool),
    [_get_opener]: dart.finalFieldType(dart.dynamic),
    [$orientation]: dart.finalFieldType(core.int),
    [$origin]: dart.finalFieldType(core.String),
    [$outerHeight]: dart.finalFieldType(core.int),
    [$outerWidth]: dart.finalFieldType(core.int),
    [_pageXOffset]: dart.finalFieldType(core.num),
    [_pageYOffset]: dart.finalFieldType(core.num),
    [_get_parent]: dart.finalFieldType(dart.dynamic),
    [$performance]: dart.finalFieldType(html$.Performance),
    [$screen]: dart.finalFieldType(html$.Screen),
    [$screenLeft]: dart.finalFieldType(core.int),
    [$screenTop]: dart.finalFieldType(core.int),
    [$screenX]: dart.finalFieldType(core.int),
    [$screenY]: dart.finalFieldType(core.int),
    [$scrollbars]: dart.finalFieldType(html$.BarProp),
    [_get_self]: dart.finalFieldType(dart.dynamic),
    [$sessionStorage]: dart.finalFieldType(html$.Storage),
    [$speechSynthesis]: dart.finalFieldType(html$.SpeechSynthesis),
    [$status]: dart.fieldType(core.String),
    [$statusbar]: dart.finalFieldType(html$.BarProp),
    [$styleMedia]: dart.finalFieldType(html$.StyleMedia),
    [$toolbar]: dart.finalFieldType(html$.BarProp),
    [_get_top]: dart.finalFieldType(dart.dynamic),
    [$visualViewport]: dart.finalFieldType(html$.VisualViewport),
    [_get_window]: dart.finalFieldType(dart.dynamic)
  }));
  dart.defineLazy(html$.Window, {
    /*html$.Window.contentLoadedEvent*/get contentLoadedEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("DOMContentLoaded"));
    },
    /*html$.Window.deviceMotionEvent*/get deviceMotionEvent() {
      return dart.const(new (EventStreamProviderOfDeviceMotionEvent()).new("devicemotion"));
    },
    /*html$.Window.deviceOrientationEvent*/get deviceOrientationEvent() {
      return dart.const(new (EventStreamProviderOfDeviceOrientationEvent()).new("deviceorientation"));
    },
    /*html$.Window.hashChangeEvent*/get hashChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("hashchange"));
    },
    /*html$.Window.loadStartEvent*/get loadStartEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("loadstart"));
    },
    /*html$.Window.messageEvent*/get messageEvent() {
      return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
    },
    /*html$.Window.offlineEvent*/get offlineEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("offline"));
    },
    /*html$.Window.onlineEvent*/get onlineEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("online"));
    },
    /*html$.Window.pageHideEvent*/get pageHideEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("pagehide"));
    },
    /*html$.Window.pageShowEvent*/get pageShowEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("pageshow"));
    },
    /*html$.Window.popStateEvent*/get popStateEvent() {
      return dart.const(new (EventStreamProviderOfPopStateEvent()).new("popstate"));
    },
    /*html$.Window.progressEvent*/get progressEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("progress"));
    },
    /*html$.Window.storageEvent*/get storageEvent() {
      return dart.const(new (EventStreamProviderOfStorageEvent()).new("storage"));
    },
    /*html$.Window.unloadEvent*/get unloadEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("unload"));
    },
    /*html$.Window.animationEndEvent*/get animationEndEvent() {
      return dart.const(new (EventStreamProviderOfAnimationEvent()).new("webkitAnimationEnd"));
    },
    /*html$.Window.animationIterationEvent*/get animationIterationEvent() {
      return dart.const(new (EventStreamProviderOfAnimationEvent()).new("webkitAnimationIteration"));
    },
    /*html$.Window.animationStartEvent*/get animationStartEvent() {
      return dart.const(new (EventStreamProviderOfAnimationEvent()).new("webkitAnimationStart"));
    },
    /*html$.Window.PERSISTENT*/get PERSISTENT() {
      return 1;
    },
    /*html$.Window.TEMPORARY*/get TEMPORARY() {
      return 0;
    },
    /*html$.Window.beforeUnloadEvent*/get beforeUnloadEvent() {
      return dart.const(new html$._BeforeUnloadEventStreamProvider.new("beforeunload"));
    }
  });
  dart.registerExtension("Window", html$.Window);
  dart.registerExtension("DOMWindow", html$.Window);
  const _returnValue = Symbol('_returnValue');
  html$._WrappedEvent = class _WrappedEvent extends core.Object {
    get wrapped() {
      return this[wrapped$];
    }
    set wrapped(value) {
      super.wrapped = value;
    }
    get bubbles() {
      return this.wrapped.bubbles;
    }
    get cancelable() {
      return this.wrapped.cancelable;
    }
    get composed() {
      return this.wrapped.composed;
    }
    get currentTarget() {
      return this.wrapped[$currentTarget];
    }
    get defaultPrevented() {
      return this.wrapped.defaultPrevented;
    }
    get eventPhase() {
      return this.wrapped.eventPhase;
    }
    get isTrusted() {
      return this.wrapped.isTrusted;
    }
    get target() {
      return this.wrapped[$target];
    }
    get timeStamp() {
      return this.wrapped.timeStamp;
    }
    get type() {
      return this.wrapped.type;
    }
    [_initEvent](type, bubbles, cancelable) {
      if (bubbles === void 0) bubbles = null;
      if (cancelable === void 0) cancelable = null;
      dart.throw(new core.UnsupportedError.new("Cannot initialize this Event."));
    }
    preventDefault() {
      this.wrapped.preventDefault();
    }
    stopImmediatePropagation() {
      this.wrapped.stopImmediatePropagation();
    }
    stopPropagation() {
      this.wrapped.stopPropagation();
    }
    composedPath() {
      return this.wrapped.composedPath();
    }
    get matchingTarget() {
      if (this[_selector] == null) {
        dart.throw(new core.UnsupportedError.new("Cannot call matchingTarget if this Event did" + " not arise as a result of event delegation."));
      }
      let currentTarget = html$.Element._check(this.currentTarget);
      let target = html$.Element._check(this.target);
      let matchedTarget = null;
      do {
        if (dart.test(target[$matches](this[_selector]))) return target;
        target = target[$parent];
      } while (target != null && !dart.equals(target, currentTarget[$parent]));
      dart.throw(new core.StateError.new("No selector matched for populating matchedTarget."));
    }
    get path() {
      return ListOfNode()._check(this.wrapped[$path]);
    }
    get [_get_currentTarget]() {
      return this.wrapped[_get_currentTarget];
    }
    get [_get_target]() {
      return this.wrapped[_get_target];
    }
  };
  (html$._WrappedEvent.new = function(wrapped) {
    this[_selector] = null;
    this[wrapped$] = wrapped;
  }).prototype = html$._WrappedEvent.prototype;
  dart.addTypeTests(html$._WrappedEvent);
  const wrapped$ = Symbol("_WrappedEvent.wrapped");
  html$._WrappedEvent[dart.implements] = () => [html$.Event];
  dart.setMethodSignature(html$._WrappedEvent, () => ({
    __proto__: dart.getMethods(html$._WrappedEvent.__proto__),
    [_initEvent]: dart.fnType(dart.void, [core.String], [core.bool, core.bool]),
    preventDefault: dart.fnType(dart.void, []),
    [$preventDefault]: dart.fnType(dart.void, []),
    stopImmediatePropagation: dart.fnType(dart.void, []),
    [$stopImmediatePropagation]: dart.fnType(dart.void, []),
    stopPropagation: dart.fnType(dart.void, []),
    [$stopPropagation]: dart.fnType(dart.void, []),
    composedPath: dart.fnType(core.List$(html$.EventTarget), []),
    [$composedPath]: dart.fnType(core.List$(html$.EventTarget), [])
  }));
  dart.setGetterSignature(html$._WrappedEvent, () => ({
    __proto__: dart.getGetters(html$._WrappedEvent.__proto__),
    bubbles: core.bool,
    [$bubbles]: core.bool,
    cancelable: core.bool,
    [$cancelable]: core.bool,
    composed: core.bool,
    [$composed]: core.bool,
    currentTarget: html$.EventTarget,
    [$currentTarget]: html$.EventTarget,
    defaultPrevented: core.bool,
    [$defaultPrevented]: core.bool,
    eventPhase: core.int,
    [$eventPhase]: core.int,
    isTrusted: core.bool,
    [$isTrusted]: core.bool,
    target: html$.EventTarget,
    [$target]: html$.EventTarget,
    timeStamp: core.double,
    [$timeStamp]: core.double,
    type: core.String,
    [$type]: core.String,
    matchingTarget: html$.Element,
    [$matchingTarget]: html$.Element,
    path: core.List$(html$.Node),
    [$path]: core.List$(html$.Node),
    [_get_currentTarget]: dart.dynamic,
    [_get_target]: dart.dynamic
  }));
  dart.setFieldSignature(html$._WrappedEvent, () => ({
    __proto__: dart.getFields(html$._WrappedEvent.__proto__),
    wrapped: dart.finalFieldType(html$.Event),
    [_selector]: dart.fieldType(core.String)
  }));
  dart.defineExtensionMethods(html$._WrappedEvent, ['preventDefault', 'stopImmediatePropagation', 'stopPropagation', 'composedPath']);
  dart.defineExtensionAccessors(html$._WrappedEvent, [
    'bubbles',
    'cancelable',
    'composed',
    'currentTarget',
    'defaultPrevented',
    'eventPhase',
    'isTrusted',
    'target',
    'timeStamp',
    'type',
    'matchingTarget',
    'path'
  ]);
  html$._BeforeUnloadEvent = class _BeforeUnloadEvent extends html$._WrappedEvent {
    get returnValue() {
      return this[_returnValue];
    }
    set returnValue(value) {
      this[_returnValue] = value;
      if ("returnValue" in this.wrapped) {
        this.wrapped.returnValue = value;
      }
    }
  };
  (html$._BeforeUnloadEvent.new = function(base) {
    this[_returnValue] = null;
    html$._BeforeUnloadEvent.__proto__.new.call(this, base);
  }).prototype = html$._BeforeUnloadEvent.prototype;
  dart.addTypeTests(html$._BeforeUnloadEvent);
  html$._BeforeUnloadEvent[dart.implements] = () => [html$.BeforeUnloadEvent];
  dart.setGetterSignature(html$._BeforeUnloadEvent, () => ({
    __proto__: dart.getGetters(html$._BeforeUnloadEvent.__proto__),
    returnValue: core.String,
    [$returnValue]: core.String
  }));
  dart.setSetterSignature(html$._BeforeUnloadEvent, () => ({
    __proto__: dart.getSetters(html$._BeforeUnloadEvent.__proto__),
    returnValue: core.String,
    [$returnValue]: core.String
  }));
  dart.setFieldSignature(html$._BeforeUnloadEvent, () => ({
    __proto__: dart.getFields(html$._BeforeUnloadEvent.__proto__),
    [_returnValue]: dart.fieldType(core.String)
  }));
  dart.defineExtensionAccessors(html$._BeforeUnloadEvent, ['returnValue']);
  const _eventType = Symbol('_eventType');
  html$._BeforeUnloadEventStreamProvider = class _BeforeUnloadEventStreamProvider extends core.Object {
    forTarget(e, opts) {
      let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
      let stream = new (_EventStreamOfBeforeUnloadEvent()).new(e, this[_eventType], useCapture);
      let controller = StreamControllerOfBeforeUnloadEvent().new({sync: true});
      stream.listen(dart.fn(event => {
        let wrapped = new html$._BeforeUnloadEvent.new(event);
        controller.add(wrapped);
      }, BeforeUnloadEventToNull()));
      return controller.stream;
    }
    getEventType(target) {
      return this[_eventType];
    }
    forElement(e, opts) {
      let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
      return new (_ElementEventStreamImplOfBeforeUnloadEvent()).new(e, this[_eventType], useCapture);
    }
    [_forElementList](e, opts) {
      let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
      return new (_ElementListEventStreamImplOfBeforeUnloadEvent()).new(e, this[_eventType], useCapture);
    }
  };
  (html$._BeforeUnloadEventStreamProvider.new = function(eventType) {
    this[_eventType] = eventType;
  }).prototype = html$._BeforeUnloadEventStreamProvider.prototype;
  dart.addTypeTests(html$._BeforeUnloadEventStreamProvider);
  html$._BeforeUnloadEventStreamProvider[dart.implements] = () => [EventStreamProviderOfBeforeUnloadEvent()];
  dart.setMethodSignature(html$._BeforeUnloadEventStreamProvider, () => ({
    __proto__: dart.getMethods(html$._BeforeUnloadEventStreamProvider.__proto__),
    forTarget: dart.fnType(async.Stream$(html$.BeforeUnloadEvent), [html$.EventTarget], {useCapture: core.bool}),
    getEventType: dart.fnType(core.String, [html$.EventTarget]),
    forElement: dart.fnType(html$.ElementStream$(html$.BeforeUnloadEvent), [html$.Element], {useCapture: core.bool}),
    [_forElementList]: dart.fnType(html$.ElementStream$(html$.BeforeUnloadEvent), [html$.ElementList$(html$.Element)], {useCapture: core.bool})
  }));
  dart.setFieldSignature(html$._BeforeUnloadEventStreamProvider, () => ({
    __proto__: dart.getFields(html$._BeforeUnloadEventStreamProvider.__proto__),
    [_eventType]: dart.finalFieldType(core.String)
  }));
  html$.WindowBase64 = class WindowBase64 extends _interceptors.Interceptor {};
  dart.addTypeTests(html$.WindowBase64);
  html$.WindowClient = class WindowClient extends html$.Client {
    get [$focused]() {
      return this.focused;
    }
    get [$visibilityState]() {
      return this.visibilityState;
    }
    [$focus]() {
      return html$.promiseToFuture(html$.WindowClient, this.focus());
    }
    [$navigate](url) {
      return html$.promiseToFuture(html$.WindowClient, this.navigate(url));
    }
  };
  dart.addTypeTests(html$.WindowClient);
  const focused = Symbol("WindowClient.focused");
  const visibilityState = Symbol("WindowClient.visibilityState");
  dart.setMethodSignature(html$.WindowClient, () => ({
    __proto__: dart.getMethods(html$.WindowClient.__proto__),
    [$focus]: dart.fnType(async.Future$(html$.WindowClient), []),
    [$navigate]: dart.fnType(async.Future$(html$.WindowClient), [core.String])
  }));
  dart.setFieldSignature(html$.WindowClient, () => ({
    __proto__: dart.getFields(html$.WindowClient.__proto__),
    [$focused]: dart.finalFieldType(core.bool),
    [$visibilityState]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("WindowClient", html$.WindowClient);
  html$.WindowEventHandlers = class WindowEventHandlers extends html$.EventTarget {
    get onHashChange() {
      return html$.WindowEventHandlers.hashChangeEvent.forTarget(this);
    }
    get onMessage() {
      return html$.WindowEventHandlers.messageEvent.forTarget(this);
    }
    get onOffline() {
      return html$.WindowEventHandlers.offlineEvent.forTarget(this);
    }
    get onOnline() {
      return html$.WindowEventHandlers.onlineEvent.forTarget(this);
    }
    get onPopState() {
      return html$.WindowEventHandlers.popStateEvent.forTarget(this);
    }
    get onStorage() {
      return html$.WindowEventHandlers.storageEvent.forTarget(this);
    }
    get onUnload() {
      return html$.WindowEventHandlers.unloadEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.WindowEventHandlers);
  dart.setGetterSignature(html$.WindowEventHandlers, () => ({
    __proto__: dart.getGetters(html$.WindowEventHandlers.__proto__),
    onHashChange: async.Stream$(html$.Event),
    [$onHashChange]: async.Stream$(html$.Event),
    onMessage: async.Stream$(html$.MessageEvent),
    [$onMessage]: async.Stream$(html$.MessageEvent),
    onOffline: async.Stream$(html$.Event),
    [$onOffline]: async.Stream$(html$.Event),
    onOnline: async.Stream$(html$.Event),
    [$onOnline]: async.Stream$(html$.Event),
    onPopState: async.Stream$(html$.PopStateEvent),
    [$onPopState]: async.Stream$(html$.PopStateEvent),
    onStorage: async.Stream$(html$.StorageEvent),
    [$onStorage]: async.Stream$(html$.StorageEvent),
    onUnload: async.Stream$(html$.Event),
    [$onUnload]: async.Stream$(html$.Event)
  }));
  dart.defineExtensionAccessors(html$.WindowEventHandlers, [
    'onHashChange',
    'onMessage',
    'onOffline',
    'onOnline',
    'onPopState',
    'onStorage',
    'onUnload'
  ]);
  dart.defineLazy(html$.WindowEventHandlers, {
    /*html$.WindowEventHandlers.hashChangeEvent*/get hashChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("hashchange"));
    },
    /*html$.WindowEventHandlers.messageEvent*/get messageEvent() {
      return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
    },
    /*html$.WindowEventHandlers.offlineEvent*/get offlineEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("offline"));
    },
    /*html$.WindowEventHandlers.onlineEvent*/get onlineEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("online"));
    },
    /*html$.WindowEventHandlers.popStateEvent*/get popStateEvent() {
      return dart.const(new (EventStreamProviderOfPopStateEvent()).new("popstate"));
    },
    /*html$.WindowEventHandlers.storageEvent*/get storageEvent() {
      return dart.const(new (EventStreamProviderOfStorageEvent()).new("storage"));
    },
    /*html$.WindowEventHandlers.unloadEvent*/get unloadEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("unload"));
    }
  });
  html$.Worker = class Worker$ extends html$.EventTarget {
    static new(scriptUrl) {
      return html$.Worker._create_1(scriptUrl);
    }
    static _create_1(scriptUrl) {
      return new Worker(scriptUrl);
    }
    static get supported() {
      return typeof window.Worker != "undefined";
    }
    [$postMessage](...args) {
      return this.postMessage.apply(this, args);
    }
    [$terminate](...args) {
      return this.terminate.apply(this, args);
    }
    get [$onError]() {
      return html$.Worker.errorEvent.forTarget(this);
    }
    get [$onMessage]() {
      return html$.Worker.messageEvent.forTarget(this);
    }
  };
  dart.addTypeTests(html$.Worker);
  html$.Worker[dart.implements] = () => [html$.AbstractWorker];
  dart.setMethodSignature(html$.Worker, () => ({
    __proto__: dart.getMethods(html$.Worker.__proto__),
    [$postMessage]: dart.fnType(dart.void, [core.Object], [core.List$(core.Object)]),
    [$terminate]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(html$.Worker, () => ({
    __proto__: dart.getGetters(html$.Worker.__proto__),
    [$onError]: async.Stream$(html$.Event),
    [$onMessage]: async.Stream$(html$.MessageEvent)
  }));
  dart.defineLazy(html$.Worker, {
    /*html$.Worker.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    },
    /*html$.Worker.messageEvent*/get messageEvent() {
      return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
    }
  });
  dart.registerExtension("Worker", html$.Worker);
  html$.WorkerPerformance = class WorkerPerformance extends html$.EventTarget {
    get [$memory]() {
      return this.memory;
    }
    get [$timeOrigin]() {
      return this.timeOrigin;
    }
    [$clearMarks](...args) {
      return this.clearMarks.apply(this, args);
    }
    [$clearMeasures](...args) {
      return this.clearMeasures.apply(this, args);
    }
    [$clearResourceTimings](...args) {
      return this.clearResourceTimings.apply(this, args);
    }
    [$getEntries](...args) {
      return this.getEntries.apply(this, args);
    }
    [$getEntriesByName](...args) {
      return this.getEntriesByName.apply(this, args);
    }
    [$getEntriesByType](...args) {
      return this.getEntriesByType.apply(this, args);
    }
    [$mark](...args) {
      return this.mark.apply(this, args);
    }
    [$measure](...args) {
      return this.measure.apply(this, args);
    }
    [$now](...args) {
      return this.now.apply(this, args);
    }
    [$setResourceTimingBufferSize](...args) {
      return this.setResourceTimingBufferSize.apply(this, args);
    }
  };
  dart.addTypeTests(html$.WorkerPerformance);
  const memory$ = Symbol("WorkerPerformance.memory");
  const timeOrigin$ = Symbol("WorkerPerformance.timeOrigin");
  dart.setMethodSignature(html$.WorkerPerformance, () => ({
    __proto__: dart.getMethods(html$.WorkerPerformance.__proto__),
    [$clearMarks]: dart.fnType(dart.void, [core.String]),
    [$clearMeasures]: dart.fnType(dart.void, [core.String]),
    [$clearResourceTimings]: dart.fnType(dart.void, []),
    [$getEntries]: dart.fnType(core.List$(html$.PerformanceEntry), []),
    [$getEntriesByName]: dart.fnType(core.List$(html$.PerformanceEntry), [core.String, core.String]),
    [$getEntriesByType]: dart.fnType(core.List$(html$.PerformanceEntry), [core.String]),
    [$mark]: dart.fnType(dart.void, [core.String]),
    [$measure]: dart.fnType(dart.void, [core.String, core.String, core.String]),
    [$now]: dart.fnType(core.double, []),
    [$setResourceTimingBufferSize]: dart.fnType(dart.void, [core.int])
  }));
  dart.setFieldSignature(html$.WorkerPerformance, () => ({
    __proto__: dart.getFields(html$.WorkerPerformance.__proto__),
    [$memory]: dart.finalFieldType(html$.MemoryInfo),
    [$timeOrigin]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("WorkerPerformance", html$.WorkerPerformance);
  html$.WorkletAnimation = class WorkletAnimation$ extends _interceptors.Interceptor {
    static new(animatorName, effects, timelines, options) {
      let options_1 = html_common.convertDartToNative_SerializedScriptValue(options);
      return html$.WorkletAnimation._create_1(animatorName, effects, timelines, options_1);
    }
    static _create_1(animatorName, effects, timelines, options) {
      return new WorkletAnimation(animatorName, effects, timelines, options);
    }
    get [$playState]() {
      return this.playState;
    }
    [$cancel](...args) {
      return this.cancel.apply(this, args);
    }
    [$play](...args) {
      return this.play.apply(this, args);
    }
  };
  dart.addTypeTests(html$.WorkletAnimation);
  const playState$ = Symbol("WorkletAnimation.playState");
  dart.setMethodSignature(html$.WorkletAnimation, () => ({
    __proto__: dart.getMethods(html$.WorkletAnimation.__proto__),
    [$cancel]: dart.fnType(dart.void, []),
    [$play]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(html$.WorkletAnimation, () => ({
    __proto__: dart.getFields(html$.WorkletAnimation.__proto__),
    [$playState]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("WorkletAnimation", html$.WorkletAnimation);
  html$.XPathEvaluator = class XPathEvaluator$ extends _interceptors.Interceptor {
    static new() {
      return html$.XPathEvaluator._create_1();
    }
    static _create_1() {
      return new XPathEvaluator();
    }
    [$createExpression](...args) {
      return this.createExpression.apply(this, args);
    }
    [$createNSResolver](...args) {
      return this.createNSResolver.apply(this, args);
    }
    [$evaluate](...args) {
      return this.evaluate.apply(this, args);
    }
  };
  dart.addTypeTests(html$.XPathEvaluator);
  dart.setMethodSignature(html$.XPathEvaluator, () => ({
    __proto__: dart.getMethods(html$.XPathEvaluator.__proto__),
    [$createExpression]: dart.fnType(html$.XPathExpression, [core.String, html$.XPathNSResolver]),
    [$createNSResolver]: dart.fnType(html$.XPathNSResolver, [html$.Node]),
    [$evaluate]: dart.fnType(html$.XPathResult, [core.String, html$.Node, html$.XPathNSResolver], [core.int, core.Object])
  }));
  dart.registerExtension("XPathEvaluator", html$.XPathEvaluator);
  html$.XPathExpression = class XPathExpression extends _interceptors.Interceptor {
    [$evaluate](...args) {
      return this.evaluate.apply(this, args);
    }
  };
  dart.addTypeTests(html$.XPathExpression);
  dart.setMethodSignature(html$.XPathExpression, () => ({
    __proto__: dart.getMethods(html$.XPathExpression.__proto__),
    [$evaluate]: dart.fnType(html$.XPathResult, [html$.Node], [core.int, core.Object])
  }));
  dart.registerExtension("XPathExpression", html$.XPathExpression);
  html$.XPathNSResolver = class XPathNSResolver extends _interceptors.Interceptor {
    [$lookupNamespaceUri](...args) {
      return this.lookupNamespaceURI.apply(this, args);
    }
  };
  dart.addTypeTests(html$.XPathNSResolver);
  dart.setMethodSignature(html$.XPathNSResolver, () => ({
    __proto__: dart.getMethods(html$.XPathNSResolver.__proto__),
    [$lookupNamespaceUri]: dart.fnType(core.String, [core.String])
  }));
  dart.registerExtension("XPathNSResolver", html$.XPathNSResolver);
  html$.XPathResult = class XPathResult extends _interceptors.Interceptor {
    get [$booleanValue]() {
      return this.booleanValue;
    }
    get [$invalidIteratorState]() {
      return this.invalidIteratorState;
    }
    get [$numberValue]() {
      return this.numberValue;
    }
    get [$resultType]() {
      return this.resultType;
    }
    get [$singleNodeValue]() {
      return this.singleNodeValue;
    }
    get [$snapshotLength]() {
      return this.snapshotLength;
    }
    get [$stringValue]() {
      return this.stringValue;
    }
    [$iterateNext](...args) {
      return this.iterateNext.apply(this, args);
    }
    [$snapshotItem](...args) {
      return this.snapshotItem.apply(this, args);
    }
  };
  dart.addTypeTests(html$.XPathResult);
  const booleanValue = Symbol("XPathResult.booleanValue");
  const invalidIteratorState = Symbol("XPathResult.invalidIteratorState");
  const numberValue = Symbol("XPathResult.numberValue");
  const resultType = Symbol("XPathResult.resultType");
  const singleNodeValue = Symbol("XPathResult.singleNodeValue");
  const snapshotLength = Symbol("XPathResult.snapshotLength");
  const stringValue = Symbol("XPathResult.stringValue");
  dart.setMethodSignature(html$.XPathResult, () => ({
    __proto__: dart.getMethods(html$.XPathResult.__proto__),
    [$iterateNext]: dart.fnType(html$.Node, []),
    [$snapshotItem]: dart.fnType(html$.Node, [core.int])
  }));
  dart.setFieldSignature(html$.XPathResult, () => ({
    __proto__: dart.getFields(html$.XPathResult.__proto__),
    [$booleanValue]: dart.finalFieldType(core.bool),
    [$invalidIteratorState]: dart.finalFieldType(core.bool),
    [$numberValue]: dart.finalFieldType(core.num),
    [$resultType]: dart.finalFieldType(core.int),
    [$singleNodeValue]: dart.finalFieldType(html$.Node),
    [$snapshotLength]: dart.finalFieldType(core.int),
    [$stringValue]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(html$.XPathResult, {
    /*html$.XPathResult.ANY_TYPE*/get ANY_TYPE() {
      return 0;
    },
    /*html$.XPathResult.ANY_UNORDERED_NODE_TYPE*/get ANY_UNORDERED_NODE_TYPE() {
      return 8;
    },
    /*html$.XPathResult.BOOLEAN_TYPE*/get BOOLEAN_TYPE() {
      return 3;
    },
    /*html$.XPathResult.FIRST_ORDERED_NODE_TYPE*/get FIRST_ORDERED_NODE_TYPE() {
      return 9;
    },
    /*html$.XPathResult.NUMBER_TYPE*/get NUMBER_TYPE() {
      return 1;
    },
    /*html$.XPathResult.ORDERED_NODE_ITERATOR_TYPE*/get ORDERED_NODE_ITERATOR_TYPE() {
      return 5;
    },
    /*html$.XPathResult.ORDERED_NODE_SNAPSHOT_TYPE*/get ORDERED_NODE_SNAPSHOT_TYPE() {
      return 7;
    },
    /*html$.XPathResult.STRING_TYPE*/get STRING_TYPE() {
      return 2;
    },
    /*html$.XPathResult.UNORDERED_NODE_ITERATOR_TYPE*/get UNORDERED_NODE_ITERATOR_TYPE() {
      return 4;
    },
    /*html$.XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE*/get UNORDERED_NODE_SNAPSHOT_TYPE() {
      return 6;
    }
  });
  dart.registerExtension("XPathResult", html$.XPathResult);
  html$.XmlDocument = class XmlDocument extends html$.Document {};
  dart.addTypeTests(html$.XmlDocument);
  dart.registerExtension("XMLDocument", html$.XmlDocument);
  html$.XmlSerializer = class XmlSerializer extends _interceptors.Interceptor {
    static new() {
      return html$.XmlSerializer._create_1();
    }
    static _create_1() {
      return new XMLSerializer();
    }
    [$serializeToString](...args) {
      return this.serializeToString.apply(this, args);
    }
  };
  dart.addTypeTests(html$.XmlSerializer);
  dart.setMethodSignature(html$.XmlSerializer, () => ({
    __proto__: dart.getMethods(html$.XmlSerializer.__proto__),
    [$serializeToString]: dart.fnType(core.String, [html$.Node])
  }));
  dart.registerExtension("XMLSerializer", html$.XmlSerializer);
  html$.XsltProcessor = class XsltProcessor extends _interceptors.Interceptor {
    static new() {
      return html$.XsltProcessor._create_1();
    }
    static _create_1() {
      return new XSLTProcessor();
    }
    static get supported() {
      return !!window.XSLTProcessor;
    }
    [$clearParameters](...args) {
      return this.clearParameters.apply(this, args);
    }
    [$getParameter](...args) {
      return this.getParameter.apply(this, args);
    }
    [$importStylesheet](...args) {
      return this.importStylesheet.apply(this, args);
    }
    [$removeParameter](...args) {
      return this.removeParameter.apply(this, args);
    }
    [$reset](...args) {
      return this.reset.apply(this, args);
    }
    [$setParameter](...args) {
      return this.setParameter.apply(this, args);
    }
    [$transformToDocument](...args) {
      return this.transformToDocument.apply(this, args);
    }
    [$transformToFragment](...args) {
      return this.transformToFragment.apply(this, args);
    }
  };
  dart.addTypeTests(html$.XsltProcessor);
  dart.setMethodSignature(html$.XsltProcessor, () => ({
    __proto__: dart.getMethods(html$.XsltProcessor.__proto__),
    [$clearParameters]: dart.fnType(dart.void, []),
    [$getParameter]: dart.fnType(core.String, [core.String, core.String]),
    [$importStylesheet]: dart.fnType(dart.void, [html$.Node]),
    [$removeParameter]: dart.fnType(dart.void, [core.String, core.String]),
    [$reset]: dart.fnType(dart.void, []),
    [$setParameter]: dart.fnType(dart.void, [core.String, core.String, core.String]),
    [$transformToDocument]: dart.fnType(html$.Document, [html$.Node]),
    [$transformToFragment]: dart.fnType(html$.DocumentFragment, [html$.Node, html$.Document])
  }));
  dart.registerExtension("XSLTProcessor", html$.XsltProcessor);
  html$._Attr = class _Attr extends html$.Node {
    get [_localName]() {
      return this.localName;
    }
    get [$name]() {
      return this.name;
    }
    get [_namespaceUri]() {
      return this.namespaceURI;
    }
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
  };
  dart.addTypeTests(html$._Attr);
  dart.setFieldSignature(html$._Attr, () => ({
    __proto__: dart.getFields(html$._Attr.__proto__),
    [_localName]: dart.finalFieldType(core.String),
    [$name]: dart.finalFieldType(core.String),
    [_namespaceUri]: dart.finalFieldType(core.String),
    [$value]: dart.fieldType(core.String)
  }));
  dart.registerExtension("Attr", html$._Attr);
  html$._Bluetooth = class _Bluetooth extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._Bluetooth);
  dart.registerExtension("Bluetooth", html$._Bluetooth);
  html$._BluetoothCharacteristicProperties = class _BluetoothCharacteristicProperties extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._BluetoothCharacteristicProperties);
  dart.registerExtension("BluetoothCharacteristicProperties", html$._BluetoothCharacteristicProperties);
  html$._BluetoothDevice = class _BluetoothDevice extends html$.EventTarget {};
  dart.addTypeTests(html$._BluetoothDevice);
  dart.registerExtension("BluetoothDevice", html$._BluetoothDevice);
  html$._BluetoothRemoteGATTCharacteristic = class _BluetoothRemoteGATTCharacteristic extends html$.EventTarget {};
  dart.addTypeTests(html$._BluetoothRemoteGATTCharacteristic);
  dart.registerExtension("BluetoothRemoteGATTCharacteristic", html$._BluetoothRemoteGATTCharacteristic);
  html$._BluetoothRemoteGATTServer = class _BluetoothRemoteGATTServer extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._BluetoothRemoteGATTServer);
  dart.registerExtension("BluetoothRemoteGATTServer", html$._BluetoothRemoteGATTServer);
  html$._BluetoothRemoteGATTService = class _BluetoothRemoteGATTService extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._BluetoothRemoteGATTService);
  dart.registerExtension("BluetoothRemoteGATTService", html$._BluetoothRemoteGATTService);
  html$._BluetoothUUID = class _BluetoothUUID extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._BluetoothUUID);
  dart.registerExtension("BluetoothUUID", html$._BluetoothUUID);
  html$._BudgetService = class _BudgetService extends _interceptors.Interceptor {
    [$getBudget]() {
      return html$.promiseToFuture(html$.BudgetState, this.getBudget());
    }
    [$getCost](operation) {
      return html$.promiseToFuture(core.double, this.getCost(operation));
    }
    [$reserve](operation) {
      return html$.promiseToFuture(core.bool, this.reserve(operation));
    }
  };
  dart.addTypeTests(html$._BudgetService);
  dart.setMethodSignature(html$._BudgetService, () => ({
    __proto__: dart.getMethods(html$._BudgetService.__proto__),
    [$getBudget]: dart.fnType(async.Future$(html$.BudgetState), []),
    [$getCost]: dart.fnType(async.Future$(core.double), [core.String]),
    [$reserve]: dart.fnType(async.Future$(core.bool), [core.String])
  }));
  dart.registerExtension("BudgetService", html$._BudgetService);
  html$._Cache = class _Cache extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._Cache);
  dart.registerExtension("Cache", html$._Cache);
  html$._CanvasPath = class _CanvasPath extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._CanvasPath);
  html$._Clipboard = class _Clipboard extends html$.EventTarget {
    [$read]() {
      return html$.promiseToFuture(html$.DataTransfer, this.read());
    }
    [$readText]() {
      return html$.promiseToFuture(core.String, this.readText());
    }
    [$write](data) {
      return html$.promiseToFuture(dart.dynamic, this.write(data));
    }
    [$writeText](data) {
      return html$.promiseToFuture(dart.dynamic, this.writeText(data));
    }
  };
  dart.addTypeTests(html$._Clipboard);
  dart.setMethodSignature(html$._Clipboard, () => ({
    __proto__: dart.getMethods(html$._Clipboard.__proto__),
    [$read]: dart.fnType(async.Future$(html$.DataTransfer), []),
    [$readText]: dart.fnType(async.Future$(core.String), []),
    [$write]: dart.fnType(async.Future, [html$.DataTransfer]),
    [$writeText]: dart.fnType(async.Future, [core.String])
  }));
  dart.registerExtension("Clipboard", html$._Clipboard);
  const Interceptor_ListMixin$$8 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$8.new = function() {
    Interceptor_ListMixin$$8.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$8.prototype;
  dart.applyMixin(Interceptor_ListMixin$$8, collection.ListMixin$(html$.CssRule));
  const Interceptor_ImmutableListMixin$$8 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$8 {};
  (Interceptor_ImmutableListMixin$$8.new = function() {
    Interceptor_ImmutableListMixin$$8.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$8.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$8, html$.ImmutableListMixin$(html$.CssRule));
  html$._CssRuleList = class _CssRuleList extends Interceptor_ImmutableListMixin$$8 {
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[index];
    }
    [$_set](index, value) {
      html$.CssRule._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
  };
  html$._CssRuleList.prototype[dart.isList] = true;
  dart.addTypeTests(html$._CssRuleList);
  html$._CssRuleList[dart.implements] = () => [JavaScriptIndexingBehaviorOfCssRule(), ListOfCssRule()];
  dart.setMethodSignature(html$._CssRuleList, () => ({
    __proto__: dart.getMethods(html$._CssRuleList.__proto__),
    [$_get]: dart.fnType(html$.CssRule, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(html$.CssRule, [core.int]),
    [$item]: dart.fnType(html$.CssRule, [core.int])
  }));
  dart.setGetterSignature(html$._CssRuleList, () => ({
    __proto__: dart.getGetters(html$._CssRuleList.__proto__),
    [$length]: core.int,
    [$first]: html$.CssRule,
    [$last]: html$.CssRule,
    [$single]: html$.CssRule
  }));
  dart.setSetterSignature(html$._CssRuleList, () => ({
    __proto__: dart.getSetters(html$._CssRuleList.__proto__),
    [$length]: core.int
  }));
  dart.registerExtension("CSSRuleList", html$._CssRuleList);
  html$._DOMFileSystemSync = class _DOMFileSystemSync extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._DOMFileSystemSync);
  dart.registerExtension("DOMFileSystemSync", html$._DOMFileSystemSync);
  html$._EntrySync = class _EntrySync extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._EntrySync);
  dart.registerExtension("EntrySync", html$._EntrySync);
  html$._DirectoryEntrySync = class _DirectoryEntrySync extends html$._EntrySync {};
  dart.addTypeTests(html$._DirectoryEntrySync);
  dart.registerExtension("DirectoryEntrySync", html$._DirectoryEntrySync);
  html$._DirectoryReaderSync = class _DirectoryReaderSync extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._DirectoryReaderSync);
  dart.registerExtension("DirectoryReaderSync", html$._DirectoryReaderSync);
  html$._DocumentType = class _DocumentType extends html$.Node {};
  dart.addTypeTests(html$._DocumentType);
  html$._DocumentType[dart.implements] = () => [html$.ChildNode];
  dart.registerExtension("DocumentType", html$._DocumentType);
  html$._DomRect = class _DomRect extends html$.DomRectReadOnly {
    [$toString]() {
      return "Rectangle (" + dart.str(this[$left]) + ", " + dart.str(this[$top]) + ") " + dart.str(this[$width]) + " x " + dart.str(this[$height]);
    }
    [$_equals](other) {
      if (!RectangleOfnum().is(other)) return false;
      return core.identical(this[$left], dart.dload(other, 'left')) && core.identical(this[$top], dart.dload(other, 'top')) && core.identical(this[$width], dart.dload(other, 'width')) && core.identical(this[$height], dart.dload(other, 'height'));
    }
    get [$hashCode]() {
      return html$._JenkinsSmiHash.hash4(dart.hashCode(this[$left]), dart.hashCode(this[$top]), dart.hashCode(this[$width]), dart.hashCode(this[$height]));
    }
    [$intersection](other) {
      let x0 = math.max(core.num, this[$left], other[$left]);
      let x1 = math.min(core.num, dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(other[$left]) + dart.notNull(other[$width]));
      if (x0 <= x1) {
        let y0 = math.max(core.num, this[$top], other[$top]);
        let y1 = math.min(core.num, dart.notNull(this[$top]) + dart.notNull(this[$height]), dart.notNull(other[$top]) + dart.notNull(other[$height]));
        if (y0 <= y1) {
          return new (RectangleOfnum()).new(x0, y0, x1 - x0, y1 - y0);
        }
      }
      return null;
    }
    [$intersects](other) {
      return dart.notNull(this[$left]) <= dart.notNull(other[$left]) + dart.notNull(other[$width]) && dart.notNull(other[$left]) <= dart.notNull(this[$left]) + dart.notNull(this[$width]) && dart.notNull(this[$top]) <= dart.notNull(other[$top]) + dart.notNull(other[$height]) && dart.notNull(other[$top]) <= dart.notNull(this[$top]) + dart.notNull(this[$height]);
    }
    [$boundingBox](other) {
      let right = math.max(core.num, dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(other[$left]) + dart.notNull(other[$width]));
      let bottom = math.max(core.num, dart.notNull(this[$top]) + dart.notNull(this[$height]), dart.notNull(other[$top]) + dart.notNull(other[$height]));
      let left = math.min(core.num, this[$left], other[$left]);
      let top = math.min(core.num, this[$top], other[$top]);
      return new (RectangleOfnum()).new(left, top, right - left, bottom - top);
    }
    [$containsRectangle](another) {
      return dart.notNull(this[$left]) <= dart.notNull(another[$left]) && dart.notNull(this[$left]) + dart.notNull(this[$width]) >= dart.notNull(another[$left]) + dart.notNull(another[$width]) && dart.notNull(this[$top]) <= dart.notNull(another[$top]) && dart.notNull(this[$top]) + dart.notNull(this[$height]) >= dart.notNull(another[$top]) + dart.notNull(another[$height]);
    }
    [$containsPoint](another) {
      return dart.notNull(another.x) >= dart.notNull(this[$left]) && dart.notNull(another.x) <= dart.notNull(this[$left]) + dart.notNull(this[$width]) && dart.notNull(another.y) >= dart.notNull(this[$top]) && dart.notNull(another.y) <= dart.notNull(this[$top]) + dart.notNull(this[$height]);
    }
    get [$topLeft]() {
      return new (PointOfnum()).new(this[$left], this[$top]);
    }
    get [$topRight]() {
      return new (PointOfnum()).new(dart.notNull(this[$left]) + dart.notNull(this[$width]), this[$top]);
    }
    get [$bottomRight]() {
      return new (PointOfnum()).new(dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(this[$top]) + dart.notNull(this[$height]));
    }
    get [$bottomLeft]() {
      return new (PointOfnum()).new(this[$left], dart.notNull(this[$top]) + dart.notNull(this[$height]));
    }
    static new(x, y, width, height) {
      if (x === void 0) x = null;
      if (y === void 0) y = null;
      if (width === void 0) width = null;
      if (height === void 0) height = null;
      if (height != null) {
        return html$._DomRect._create_1(x, y, width, height);
      }
      if (width != null) {
        return html$._DomRect._create_2(x, y, width);
      }
      if (y != null) {
        return html$._DomRect._create_3(x, y);
      }
      if (x != null) {
        return html$._DomRect._create_4(x);
      }
      return html$._DomRect._create_5();
    }
    static _create_1(x, y, width, height) {
      return new DOMRect(x, y, width, height);
    }
    static _create_2(x, y, width) {
      return new DOMRect(x, y, width);
    }
    static _create_3(x, y) {
      return new DOMRect(x, y);
    }
    static _create_4(x) {
      return new DOMRect(x);
    }
    static _create_5() {
      return new DOMRect();
    }
    get [$height]() {
      return this.height;
    }
    set [$height](value) {
      this.height = value;
    }
    get [$width]() {
      return this.width;
    }
    set [$width](value) {
      this.width = value;
    }
    get [$x]() {
      return this.x;
    }
    set [$x](value) {
      this.x = value;
    }
    get [$y]() {
      return this.y;
    }
    set [$y](value) {
      this.y = value;
    }
  };
  dart.addTypeTests(html$._DomRect);
  html$._DomRect[dart.implements] = () => [RectangleOfnum()];
  dart.setSetterSignature(html$._DomRect, () => ({
    __proto__: dart.getSetters(html$._DomRect.__proto__),
    [$height]: core.num,
    [$width]: core.num,
    [$x]: core.num,
    [$y]: core.num
  }));
  dart.registerExtension("ClientRect", html$._DomRect);
  dart.registerExtension("DOMRect", html$._DomRect);
  html$._JenkinsSmiHash = class _JenkinsSmiHash extends core.Object {
    static combine(hash, value) {
      hash = 536870911 & dart.notNull(hash) + dart.notNull(value);
      hash = 536870911 & dart.notNull(hash) + ((524287 & dart.notNull(hash)) << 10);
      return (dart.notNull(hash) ^ hash[$rightShift](6)) >>> 0;
    }
    static finish(hash) {
      hash = 536870911 & dart.notNull(hash) + ((67108863 & dart.notNull(hash)) << 3);
      hash = (dart.notNull(hash) ^ hash[$rightShift](11)) >>> 0;
      return 536870911 & dart.notNull(hash) + ((16383 & dart.notNull(hash)) << 15);
    }
    static hash2(a, b) {
      return html$._JenkinsSmiHash.finish(html$._JenkinsSmiHash.combine(html$._JenkinsSmiHash.combine(0, core.int._check(a)), core.int._check(b)));
    }
    static hash4(a, b, c, d) {
      return html$._JenkinsSmiHash.finish(html$._JenkinsSmiHash.combine(html$._JenkinsSmiHash.combine(html$._JenkinsSmiHash.combine(html$._JenkinsSmiHash.combine(0, core.int._check(a)), core.int._check(b)), core.int._check(c)), core.int._check(d)));
    }
  };
  (html$._JenkinsSmiHash.new = function() {
  }).prototype = html$._JenkinsSmiHash.prototype;
  dart.addTypeTests(html$._JenkinsSmiHash);
  html$._FileEntrySync = class _FileEntrySync extends html$._EntrySync {};
  dart.addTypeTests(html$._FileEntrySync);
  dart.registerExtension("FileEntrySync", html$._FileEntrySync);
  html$._FileReaderSync = class _FileReaderSync extends _interceptors.Interceptor {
    static new() {
      return html$._FileReaderSync._create_1();
    }
    static _create_1() {
      return new FileReaderSync();
    }
  };
  dart.addTypeTests(html$._FileReaderSync);
  dart.registerExtension("FileReaderSync", html$._FileReaderSync);
  html$._FileWriterSync = class _FileWriterSync extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._FileWriterSync);
  dart.registerExtension("FileWriterSync", html$._FileWriterSync);
  const Interceptor_ListMixin$$9 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$9.new = function() {
    Interceptor_ListMixin$$9.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$9.prototype;
  dart.applyMixin(Interceptor_ListMixin$$9, collection.ListMixin$(html$.Gamepad));
  const Interceptor_ImmutableListMixin$$9 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$9 {};
  (Interceptor_ImmutableListMixin$$9.new = function() {
    Interceptor_ImmutableListMixin$$9.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$9.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$9, html$.ImmutableListMixin$(html$.Gamepad));
  html$._GamepadList = class _GamepadList extends Interceptor_ImmutableListMixin$$9 {
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[index];
    }
    [$_set](index, value) {
      html$.Gamepad._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
  };
  html$._GamepadList.prototype[dart.isList] = true;
  dart.addTypeTests(html$._GamepadList);
  html$._GamepadList[dart.implements] = () => [ListOfGamepad(), JavaScriptIndexingBehaviorOfGamepad()];
  dart.setMethodSignature(html$._GamepadList, () => ({
    __proto__: dart.getMethods(html$._GamepadList.__proto__),
    [$_get]: dart.fnType(html$.Gamepad, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(html$.Gamepad, [core.int]),
    [$item]: dart.fnType(html$.Gamepad, [core.int])
  }));
  dart.setGetterSignature(html$._GamepadList, () => ({
    __proto__: dart.getGetters(html$._GamepadList.__proto__),
    [$length]: core.int,
    [$first]: html$.Gamepad,
    [$last]: html$.Gamepad,
    [$single]: html$.Gamepad
  }));
  dart.setSetterSignature(html$._GamepadList, () => ({
    __proto__: dart.getSetters(html$._GamepadList.__proto__),
    [$length]: core.int
  }));
  dart.registerExtension("GamepadList", html$._GamepadList);
  html$._HTMLAllCollection = class _HTMLAllCollection extends _interceptors.Interceptor {
    [_item](...args) {
      return this.item.apply(this, args);
    }
  };
  dart.addTypeTests(html$._HTMLAllCollection);
  dart.setMethodSignature(html$._HTMLAllCollection, () => ({
    __proto__: dart.getMethods(html$._HTMLAllCollection.__proto__),
    [_item]: dart.fnType(html$.Element, [core.int])
  }));
  dart.registerExtension("HTMLAllCollection", html$._HTMLAllCollection);
  html$._HTMLDirectoryElement = class _HTMLDirectoryElement extends html$.HtmlElement {};
  (html$._HTMLDirectoryElement.created = function() {
    html$._HTMLDirectoryElement.__proto__.created.call(this);
  }).prototype = html$._HTMLDirectoryElement.prototype;
  dart.addTypeTests(html$._HTMLDirectoryElement);
  dart.registerExtension("HTMLDirectoryElement", html$._HTMLDirectoryElement);
  html$._HTMLFontElement = class _HTMLFontElement extends html$.HtmlElement {};
  (html$._HTMLFontElement.created = function() {
    html$._HTMLFontElement.__proto__.created.call(this);
  }).prototype = html$._HTMLFontElement.prototype;
  dart.addTypeTests(html$._HTMLFontElement);
  dart.registerExtension("HTMLFontElement", html$._HTMLFontElement);
  html$._HTMLFrameElement = class _HTMLFrameElement extends html$.HtmlElement {};
  (html$._HTMLFrameElement.created = function() {
    html$._HTMLFrameElement.__proto__.created.call(this);
  }).prototype = html$._HTMLFrameElement.prototype;
  dart.addTypeTests(html$._HTMLFrameElement);
  dart.registerExtension("HTMLFrameElement", html$._HTMLFrameElement);
  html$._HTMLFrameSetElement = class _HTMLFrameSetElement extends html$.HtmlElement {};
  (html$._HTMLFrameSetElement.created = function() {
    html$._HTMLFrameSetElement.__proto__.created.call(this);
  }).prototype = html$._HTMLFrameSetElement.prototype;
  dart.addTypeTests(html$._HTMLFrameSetElement);
  html$._HTMLFrameSetElement[dart.implements] = () => [html$.WindowEventHandlers];
  dart.registerExtension("HTMLFrameSetElement", html$._HTMLFrameSetElement);
  html$._HTMLMarqueeElement = class _HTMLMarqueeElement extends html$.HtmlElement {};
  (html$._HTMLMarqueeElement.created = function() {
    html$._HTMLMarqueeElement.__proto__.created.call(this);
  }).prototype = html$._HTMLMarqueeElement.prototype;
  dart.addTypeTests(html$._HTMLMarqueeElement);
  dart.registerExtension("HTMLMarqueeElement", html$._HTMLMarqueeElement);
  html$._Mojo = class _Mojo extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._Mojo);
  dart.registerExtension("Mojo", html$._Mojo);
  html$._MojoHandle = class _MojoHandle extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._MojoHandle);
  dart.registerExtension("MojoHandle", html$._MojoHandle);
  html$._MojoInterfaceInterceptor = class _MojoInterfaceInterceptor extends html$.EventTarget {
    static new(interfaceName, scope) {
      if (scope === void 0) scope = null;
      if (scope != null) {
        return html$._MojoInterfaceInterceptor._create_1(interfaceName, scope);
      }
      return html$._MojoInterfaceInterceptor._create_2(interfaceName);
    }
    static _create_1(interfaceName, scope) {
      return new MojoInterfaceInterceptor(interfaceName, scope);
    }
    static _create_2(interfaceName) {
      return new MojoInterfaceInterceptor(interfaceName);
    }
  };
  dart.addTypeTests(html$._MojoInterfaceInterceptor);
  dart.registerExtension("MojoInterfaceInterceptor", html$._MojoInterfaceInterceptor);
  html$._MojoInterfaceRequestEvent = class _MojoInterfaceRequestEvent extends html$.Event {
    static new(type, eventInitDict) {
      if (eventInitDict === void 0) eventInitDict = null;
      if (eventInitDict != null) {
        let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
        return html$._MojoInterfaceRequestEvent._create_1(type, eventInitDict_1);
      }
      return html$._MojoInterfaceRequestEvent._create_2(type);
    }
    static _create_1(type, eventInitDict) {
      return new MojoInterfaceRequestEvent(type, eventInitDict);
    }
    static _create_2(type) {
      return new MojoInterfaceRequestEvent(type);
    }
  };
  dart.addTypeTests(html$._MojoInterfaceRequestEvent);
  dart.registerExtension("MojoInterfaceRequestEvent", html$._MojoInterfaceRequestEvent);
  html$._MojoWatcher = class _MojoWatcher extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._MojoWatcher);
  dart.registerExtension("MojoWatcher", html$._MojoWatcher);
  html$._NFC = class _NFC extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._NFC);
  dart.registerExtension("NFC", html$._NFC);
  const Interceptor_ListMixin$$10 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$10.new = function() {
    Interceptor_ListMixin$$10.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$10.prototype;
  dart.applyMixin(Interceptor_ListMixin$$10, collection.ListMixin$(html$.Node));
  const Interceptor_ImmutableListMixin$$10 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$10 {};
  (Interceptor_ImmutableListMixin$$10.new = function() {
    Interceptor_ImmutableListMixin$$10.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$10.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$10, html$.ImmutableListMixin$(html$.Node));
  html$._NamedNodeMap = class _NamedNodeMap extends Interceptor_ImmutableListMixin$$10 {
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[index];
    }
    [$_set](index, value) {
      html$.Node._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [$getNamedItem](...args) {
      return this.getNamedItem.apply(this, args);
    }
    [$getNamedItemNS](...args) {
      return this.getNamedItemNS.apply(this, args);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
    [$removeNamedItem](...args) {
      return this.removeNamedItem.apply(this, args);
    }
    [$removeNamedItemNS](...args) {
      return this.removeNamedItemNS.apply(this, args);
    }
    [$setNamedItem](...args) {
      return this.setNamedItem.apply(this, args);
    }
    [$setNamedItemNS](...args) {
      return this.setNamedItemNS.apply(this, args);
    }
  };
  html$._NamedNodeMap.prototype[dart.isList] = true;
  dart.addTypeTests(html$._NamedNodeMap);
  html$._NamedNodeMap[dart.implements] = () => [JavaScriptIndexingBehaviorOfNode(), ListOfNode()];
  dart.setMethodSignature(html$._NamedNodeMap, () => ({
    __proto__: dart.getMethods(html$._NamedNodeMap.__proto__),
    [$_get]: dart.fnType(html$.Node, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(html$.Node, [core.int]),
    [$getNamedItem]: dart.fnType(html$._Attr, [core.String]),
    [$getNamedItemNS]: dart.fnType(html$._Attr, [core.String, core.String]),
    [$item]: dart.fnType(html$._Attr, [core.int]),
    [$removeNamedItem]: dart.fnType(html$._Attr, [core.String]),
    [$removeNamedItemNS]: dart.fnType(html$._Attr, [core.String, core.String]),
    [$setNamedItem]: dart.fnType(html$._Attr, [html$._Attr]),
    [$setNamedItemNS]: dart.fnType(html$._Attr, [html$._Attr])
  }));
  dart.setGetterSignature(html$._NamedNodeMap, () => ({
    __proto__: dart.getGetters(html$._NamedNodeMap.__proto__),
    [$length]: core.int,
    [$first]: html$.Node,
    [$last]: html$.Node,
    [$single]: html$.Node
  }));
  dart.setSetterSignature(html$._NamedNodeMap, () => ({
    __proto__: dart.getSetters(html$._NamedNodeMap.__proto__),
    [$length]: core.int
  }));
  dart.registerExtension("NamedNodeMap", html$._NamedNodeMap);
  dart.registerExtension("MozNamedAttrMap", html$._NamedNodeMap);
  html$._PagePopupController = class _PagePopupController extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._PagePopupController);
  dart.registerExtension("PagePopupController", html$._PagePopupController);
  html$._Report = class _Report extends _interceptors.Interceptor {
    get [$body]() {
      return this.body;
    }
    get [$type]() {
      return this.type;
    }
    get [$url]() {
      return this.url;
    }
  };
  dart.addTypeTests(html$._Report);
  dart.setFieldSignature(html$._Report, () => ({
    __proto__: dart.getFields(html$._Report.__proto__),
    [$body]: dart.finalFieldType(html$.ReportBody),
    [$type]: dart.finalFieldType(core.String),
    [$url]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("Report", html$._Report);
  html$._Request = class _Request extends html$.Body {
    static new(input, requestInitDict) {
      if (requestInitDict === void 0) requestInitDict = null;
      if (requestInitDict != null) {
        let requestInitDict_1 = html_common.convertDartToNative_Dictionary(requestInitDict);
        return html$._Request._create_1(input, requestInitDict_1);
      }
      return html$._Request._create_2(input);
    }
    static _create_1(input, requestInitDict) {
      return new Request(input, requestInitDict);
    }
    static _create_2(input) {
      return new Request(input);
    }
    get [$cache]() {
      return this.cache;
    }
    get [$credentials]() {
      return this.credentials;
    }
    get [$headers]() {
      return this.headers;
    }
    get [$integrity]() {
      return this.integrity;
    }
    get [$mode]() {
      return this.mode;
    }
    get [$redirect]() {
      return this.redirect;
    }
    get [$referrer]() {
      return this.referrer;
    }
    get [$referrerPolicy]() {
      return this.referrerPolicy;
    }
    get [$url]() {
      return this.url;
    }
    [$clone](...args) {
      return this.clone.apply(this, args);
    }
  };
  dart.addTypeTests(html$._Request);
  dart.setMethodSignature(html$._Request, () => ({
    __proto__: dart.getMethods(html$._Request.__proto__),
    [$clone]: dart.fnType(html$._Request, [])
  }));
  dart.setFieldSignature(html$._Request, () => ({
    __proto__: dart.getFields(html$._Request.__proto__),
    [$cache]: dart.finalFieldType(core.String),
    [$credentials]: dart.finalFieldType(core.String),
    [$headers]: dart.finalFieldType(html$.Headers),
    [$integrity]: dart.finalFieldType(core.String),
    [$mode]: dart.finalFieldType(core.String),
    [$redirect]: dart.finalFieldType(core.String),
    [$referrer]: dart.finalFieldType(core.String),
    [$referrerPolicy]: dart.finalFieldType(core.String),
    [$url]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("Request", html$._Request);
  html$._ResourceProgressEvent = class _ResourceProgressEvent extends html$.ProgressEvent {};
  dart.addTypeTests(html$._ResourceProgressEvent);
  dart.registerExtension("ResourceProgressEvent", html$._ResourceProgressEvent);
  html$._Response = class _Response extends html$.Body {
    static new(body, init) {
      if (body === void 0) body = null;
      if (init === void 0) init = null;
      if (init != null) {
        let init_1 = html_common.convertDartToNative_Dictionary(init);
        return html$._Response._create_1(body, init_1);
      }
      if (body != null) {
        return html$._Response._create_2(body);
      }
      return html$._Response._create_3();
    }
    static _create_1(body, init) {
      return new Response(body, init);
    }
    static _create_2(body) {
      return new Response(body);
    }
    static _create_3() {
      return new Response();
    }
  };
  dart.addTypeTests(html$._Response);
  dart.registerExtension("Response", html$._Response);
  const Interceptor_ListMixin$$11 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$11.new = function() {
    Interceptor_ListMixin$$11.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$11.prototype;
  dart.applyMixin(Interceptor_ListMixin$$11, collection.ListMixin$(html$.SpeechRecognitionResult));
  const Interceptor_ImmutableListMixin$$11 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$11 {};
  (Interceptor_ImmutableListMixin$$11.new = function() {
    Interceptor_ImmutableListMixin$$11.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$11.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$11, html$.ImmutableListMixin$(html$.SpeechRecognitionResult));
  html$._SpeechRecognitionResultList = class _SpeechRecognitionResultList extends Interceptor_ImmutableListMixin$$11 {
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[index];
    }
    [$_set](index, value) {
      html$.SpeechRecognitionResult._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
  };
  html$._SpeechRecognitionResultList.prototype[dart.isList] = true;
  dart.addTypeTests(html$._SpeechRecognitionResultList);
  html$._SpeechRecognitionResultList[dart.implements] = () => [JavaScriptIndexingBehaviorOfSpeechRecognitionResult(), ListOfSpeechRecognitionResult()];
  dart.setMethodSignature(html$._SpeechRecognitionResultList, () => ({
    __proto__: dart.getMethods(html$._SpeechRecognitionResultList.__proto__),
    [$_get]: dart.fnType(html$.SpeechRecognitionResult, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(html$.SpeechRecognitionResult, [core.int]),
    [$item]: dart.fnType(html$.SpeechRecognitionResult, [core.int])
  }));
  dart.setGetterSignature(html$._SpeechRecognitionResultList, () => ({
    __proto__: dart.getGetters(html$._SpeechRecognitionResultList.__proto__),
    [$length]: core.int,
    [$first]: html$.SpeechRecognitionResult,
    [$last]: html$.SpeechRecognitionResult,
    [$single]: html$.SpeechRecognitionResult
  }));
  dart.setSetterSignature(html$._SpeechRecognitionResultList, () => ({
    __proto__: dart.getSetters(html$._SpeechRecognitionResultList.__proto__),
    [$length]: core.int
  }));
  dart.registerExtension("SpeechRecognitionResultList", html$._SpeechRecognitionResultList);
  const Interceptor_ListMixin$$12 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$12.new = function() {
    Interceptor_ListMixin$$12.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$12.prototype;
  dart.applyMixin(Interceptor_ListMixin$$12, collection.ListMixin$(html$.StyleSheet));
  const Interceptor_ImmutableListMixin$$12 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$12 {};
  (Interceptor_ImmutableListMixin$$12.new = function() {
    Interceptor_ImmutableListMixin$$12.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$12.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$12, html$.ImmutableListMixin$(html$.StyleSheet));
  html$._StyleSheetList = class _StyleSheetList extends Interceptor_ImmutableListMixin$$12 {
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[index];
    }
    [$_set](index, value) {
      html$.StyleSheet._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [__getter__](...args) {
      return this.__getter__.apply(this, args);
    }
    [$item](...args) {
      return this.item.apply(this, args);
    }
  };
  html$._StyleSheetList.prototype[dart.isList] = true;
  dart.addTypeTests(html$._StyleSheetList);
  html$._StyleSheetList[dart.implements] = () => [ListOfStyleSheet(), JavaScriptIndexingBehaviorOfStyleSheet()];
  dart.setMethodSignature(html$._StyleSheetList, () => ({
    __proto__: dart.getMethods(html$._StyleSheetList.__proto__),
    [$_get]: dart.fnType(html$.StyleSheet, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(html$.StyleSheet, [core.int]),
    [__getter__]: dart.fnType(html$.CssStyleSheet, [core.String]),
    [$item]: dart.fnType(html$.StyleSheet, [core.int])
  }));
  dart.setGetterSignature(html$._StyleSheetList, () => ({
    __proto__: dart.getGetters(html$._StyleSheetList.__proto__),
    [$length]: core.int,
    [$first]: html$.StyleSheet,
    [$last]: html$.StyleSheet,
    [$single]: html$.StyleSheet
  }));
  dart.setSetterSignature(html$._StyleSheetList, () => ({
    __proto__: dart.getSetters(html$._StyleSheetList.__proto__),
    [$length]: core.int
  }));
  dart.registerExtension("StyleSheetList", html$._StyleSheetList);
  html$._SubtleCrypto = class _SubtleCrypto extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._SubtleCrypto);
  dart.registerExtension("SubtleCrypto", html$._SubtleCrypto);
  html$._USB = class _USB extends html$.EventTarget {};
  dart.addTypeTests(html$._USB);
  dart.registerExtension("USB", html$._USB);
  html$._USBAlternateInterface = class _USBAlternateInterface extends _interceptors.Interceptor {
    static new(deviceInterface, alternateSetting) {
      return html$._USBAlternateInterface._create_1(deviceInterface, alternateSetting);
    }
    static _create_1(deviceInterface, alternateSetting) {
      return new USBAlternateInterface(deviceInterface, alternateSetting);
    }
  };
  dart.addTypeTests(html$._USBAlternateInterface);
  dart.registerExtension("USBAlternateInterface", html$._USBAlternateInterface);
  html$._USBConfiguration = class _USBConfiguration extends _interceptors.Interceptor {
    static new(device, configurationValue) {
      return html$._USBConfiguration._create_1(device, configurationValue);
    }
    static _create_1(device, configurationValue) {
      return new USBConfiguration(device, configurationValue);
    }
  };
  dart.addTypeTests(html$._USBConfiguration);
  dart.registerExtension("USBConfiguration", html$._USBConfiguration);
  html$._USBConnectionEvent = class _USBConnectionEvent extends html$.Event {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$._USBConnectionEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new USBConnectionEvent(type, eventInitDict);
    }
  };
  dart.addTypeTests(html$._USBConnectionEvent);
  dart.registerExtension("USBConnectionEvent", html$._USBConnectionEvent);
  html$._USBDevice = class _USBDevice extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._USBDevice);
  dart.registerExtension("USBDevice", html$._USBDevice);
  html$._USBEndpoint = class _USBEndpoint extends _interceptors.Interceptor {
    static new(alternate, endpointNumber, direction) {
      return html$._USBEndpoint._create_1(alternate, endpointNumber, direction);
    }
    static _create_1(alternate, endpointNumber, direction) {
      return new USBEndpoint(alternate, endpointNumber, direction);
    }
  };
  dart.addTypeTests(html$._USBEndpoint);
  dart.registerExtension("USBEndpoint", html$._USBEndpoint);
  html$._USBInTransferResult = class _USBInTransferResult extends _interceptors.Interceptor {
    static new(status, data) {
      if (data === void 0) data = null;
      if (data != null) {
        return html$._USBInTransferResult._create_1(status, data);
      }
      return html$._USBInTransferResult._create_2(status);
    }
    static _create_1(status, data) {
      return new USBInTransferResult(status, data);
    }
    static _create_2(status) {
      return new USBInTransferResult(status);
    }
  };
  dart.addTypeTests(html$._USBInTransferResult);
  dart.registerExtension("USBInTransferResult", html$._USBInTransferResult);
  html$._USBInterface = class _USBInterface extends _interceptors.Interceptor {
    static new(configuration, interfaceNumber) {
      return html$._USBInterface._create_1(configuration, interfaceNumber);
    }
    static _create_1(configuration, interfaceNumber) {
      return new USBInterface(configuration, interfaceNumber);
    }
  };
  dart.addTypeTests(html$._USBInterface);
  dart.registerExtension("USBInterface", html$._USBInterface);
  html$._USBIsochronousInTransferPacket = class _USBIsochronousInTransferPacket extends _interceptors.Interceptor {
    static new(status, data) {
      if (data === void 0) data = null;
      if (data != null) {
        return html$._USBIsochronousInTransferPacket._create_1(status, data);
      }
      return html$._USBIsochronousInTransferPacket._create_2(status);
    }
    static _create_1(status, data) {
      return new USBIsochronousInTransferPacket(status, data);
    }
    static _create_2(status) {
      return new USBIsochronousInTransferPacket(status);
    }
  };
  dart.addTypeTests(html$._USBIsochronousInTransferPacket);
  dart.registerExtension("USBIsochronousInTransferPacket", html$._USBIsochronousInTransferPacket);
  html$._USBIsochronousInTransferResult = class _USBIsochronousInTransferResult extends _interceptors.Interceptor {
    static new(packets, data) {
      if (data === void 0) data = null;
      if (data != null) {
        return html$._USBIsochronousInTransferResult._create_1(packets, data);
      }
      return html$._USBIsochronousInTransferResult._create_2(packets);
    }
    static _create_1(packets, data) {
      return new USBIsochronousInTransferResult(packets, data);
    }
    static _create_2(packets) {
      return new USBIsochronousInTransferResult(packets);
    }
  };
  dart.addTypeTests(html$._USBIsochronousInTransferResult);
  dart.registerExtension("USBIsochronousInTransferResult", html$._USBIsochronousInTransferResult);
  html$._USBIsochronousOutTransferPacket = class _USBIsochronousOutTransferPacket extends _interceptors.Interceptor {
    static new(status, bytesWritten) {
      if (bytesWritten === void 0) bytesWritten = null;
      if (bytesWritten != null) {
        return html$._USBIsochronousOutTransferPacket._create_1(status, bytesWritten);
      }
      return html$._USBIsochronousOutTransferPacket._create_2(status);
    }
    static _create_1(status, bytesWritten) {
      return new USBIsochronousOutTransferPacket(status, bytesWritten);
    }
    static _create_2(status) {
      return new USBIsochronousOutTransferPacket(status);
    }
  };
  dart.addTypeTests(html$._USBIsochronousOutTransferPacket);
  dart.registerExtension("USBIsochronousOutTransferPacket", html$._USBIsochronousOutTransferPacket);
  html$._USBIsochronousOutTransferResult = class _USBIsochronousOutTransferResult extends _interceptors.Interceptor {
    static new(packets) {
      return html$._USBIsochronousOutTransferResult._create_1(packets);
    }
    static _create_1(packets) {
      return new USBIsochronousOutTransferResult(packets);
    }
  };
  dart.addTypeTests(html$._USBIsochronousOutTransferResult);
  dart.registerExtension("USBIsochronousOutTransferResult", html$._USBIsochronousOutTransferResult);
  html$._USBOutTransferResult = class _USBOutTransferResult extends _interceptors.Interceptor {
    static new(status, bytesWritten) {
      if (bytesWritten === void 0) bytesWritten = null;
      if (bytesWritten != null) {
        return html$._USBOutTransferResult._create_1(status, bytesWritten);
      }
      return html$._USBOutTransferResult._create_2(status);
    }
    static _create_1(status, bytesWritten) {
      return new USBOutTransferResult(status, bytesWritten);
    }
    static _create_2(status) {
      return new USBOutTransferResult(status);
    }
  };
  dart.addTypeTests(html$._USBOutTransferResult);
  dart.registerExtension("USBOutTransferResult", html$._USBOutTransferResult);
  html$._WindowTimers = class _WindowTimers extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._WindowTimers);
  html$._WorkerLocation = class _WorkerLocation extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._WorkerLocation);
  html$._WorkerLocation[dart.implements] = () => [html$.UrlUtilsReadOnly];
  dart.registerExtension("WorkerLocation", html$._WorkerLocation);
  html$._WorkerNavigator = class _WorkerNavigator extends html$.NavigatorConcurrentHardware {};
  dart.addTypeTests(html$._WorkerNavigator);
  html$._WorkerNavigator[dart.implements] = () => [html$.NavigatorOnLine, html$.NavigatorID];
  dart.registerExtension("WorkerNavigator", html$._WorkerNavigator);
  html$._Worklet = class _Worklet extends _interceptors.Interceptor {};
  dart.addTypeTests(html$._Worklet);
  dart.registerExtension("Worklet", html$._Worklet);
  const _matches = Symbol('_matches');
  html$._AttributeMap = class _AttributeMap extends collection.MapBase$(core.String, core.String) {
    addAll(other) {
      MapOfString$String()._check(other);
      other[$forEach](dart.fn((k, v) => {
        this._set(k, v);
      }, StringAndStringToNull()));
    }
    cast(K, V) {
      return core.Map.castFrom(core.String, core.String, K, V, this);
    }
    containsValue(value) {
      for (let v of this.values) {
        if (dart.equals(value, v)) {
          return true;
        }
      }
      return false;
    }
    putIfAbsent(key, ifAbsent) {
      core.String._check(key);
      VoidToString()._check(ifAbsent);
      if (!dart.test(this[$containsKey](key))) {
        this._set(key, ifAbsent());
      }
      return this._get(key);
    }
    clear() {
      for (let key of this.keys) {
        this[$remove](key);
      }
    }
    forEach(f) {
      for (let key of this.keys) {
        let value = this._get(key);
        f(key, value);
      }
    }
    get keys() {
      let attributes = this[_element$][_attributes$];
      let keys = JSArrayOfString().of([]);
      for (let i = 0, len = attributes[$length]; i < dart.notNull(len); i++) {
        let attr = html$._Attr._check(attributes[$_get](i));
        if (dart.test(this[_matches](attr))) {
          keys[$add](attr.name);
        }
      }
      return keys;
    }
    get values() {
      let attributes = this[_element$][_attributes$];
      let values = JSArrayOfString().of([]);
      for (let i = 0, len = attributes[$length]; i < dart.notNull(len); i++) {
        let attr = html$._Attr._check(attributes[$_get](i));
        if (dart.test(this[_matches](attr))) {
          values[$add](attr.value);
        }
      }
      return values;
    }
    get isEmpty() {
      return this[$length] === 0;
    }
    get isNotEmpty() {
      return !dart.test(this.isEmpty);
    }
  };
  (html$._AttributeMap.new = function(element) {
    this[_element$] = element;
  }).prototype = html$._AttributeMap.prototype;
  dart.addTypeTests(html$._AttributeMap);
  dart.setMethodSignature(html$._AttributeMap, () => ({
    __proto__: dart.getMethods(html$._AttributeMap.__proto__),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    cast: dart.gFnType((K, V) => [core.Map$(K, V), []]),
    [$cast]: dart.gFnType((K, V) => [core.Map$(K, V), []]),
    containsValue: dart.fnType(core.bool, [core.Object]),
    [$containsValue]: dart.fnType(core.bool, [core.Object]),
    putIfAbsent: dart.fnType(core.String, [core.Object, core.Object]),
    [$putIfAbsent]: dart.fnType(core.String, [core.Object, core.Object]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, []),
    forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, core.String])]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, core.String])])
  }));
  dart.setGetterSignature(html$._AttributeMap, () => ({
    __proto__: dart.getGetters(html$._AttributeMap.__proto__),
    keys: core.Iterable$(core.String),
    [$keys]: core.Iterable$(core.String),
    values: core.Iterable$(core.String),
    [$values]: core.Iterable$(core.String),
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    isNotEmpty: core.bool,
    [$isNotEmpty]: core.bool
  }));
  dart.setFieldSignature(html$._AttributeMap, () => ({
    __proto__: dart.getFields(html$._AttributeMap.__proto__),
    [_element$]: dart.finalFieldType(html$.Element)
  }));
  dart.defineExtensionMethods(html$._AttributeMap, [
    'addAll',
    'cast',
    'containsValue',
    'putIfAbsent',
    'clear',
    'forEach'
  ]);
  dart.defineExtensionAccessors(html$._AttributeMap, ['keys', 'values', 'isEmpty', 'isNotEmpty']);
  html$._ElementAttributeMap = class _ElementAttributeMap extends html$._AttributeMap {
    containsKey(key) {
      return this[_element$][_hasAttribute](core.String._check(key));
    }
    _get(key) {
      return this[_element$].getAttribute(core.String._check(key));
    }
    _set(key, value) {
      core.String._check(key);
      core.String._check(value);
      this[_element$].setAttribute(key, value);
      return value;
    }
    remove(key) {
      let value = this[_element$].getAttribute(core.String._check(key));
      this[_element$][_removeAttribute](core.String._check(key));
      return value;
    }
    get length() {
      return this.keys[$length];
    }
    [_matches](node) {
      return node[_namespaceUri] == null;
    }
  };
  (html$._ElementAttributeMap.new = function(element) {
    html$._ElementAttributeMap.__proto__.new.call(this, element);
  }).prototype = html$._ElementAttributeMap.prototype;
  dart.addTypeTests(html$._ElementAttributeMap);
  dart.setMethodSignature(html$._ElementAttributeMap, () => ({
    __proto__: dart.getMethods(html$._ElementAttributeMap.__proto__),
    containsKey: dart.fnType(core.bool, [core.Object]),
    [$containsKey]: dart.fnType(core.bool, [core.Object]),
    _get: dart.fnType(core.String, [core.Object]),
    [$_get]: dart.fnType(core.String, [core.Object]),
    _set: dart.fnType(dart.void, [core.Object, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
    remove: dart.fnType(core.String, [core.Object]),
    [$remove]: dart.fnType(core.String, [core.Object]),
    [_matches]: dart.fnType(core.bool, [html$._Attr])
  }));
  dart.setGetterSignature(html$._ElementAttributeMap, () => ({
    __proto__: dart.getGetters(html$._ElementAttributeMap.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.defineExtensionMethods(html$._ElementAttributeMap, ['containsKey', '_get', '_set', 'remove']);
  dart.defineExtensionAccessors(html$._ElementAttributeMap, ['length']);
  const _namespace = Symbol('_namespace');
  html$._NamespacedAttributeMap = class _NamespacedAttributeMap extends html$._AttributeMap {
    containsKey(key) {
      return this[_element$][_hasAttributeNS](this[_namespace], core.String._check(key));
    }
    _get(key) {
      return this[_element$].getAttributeNS(this[_namespace], core.String._check(key));
    }
    _set(key, value) {
      core.String._check(key);
      core.String._check(value);
      this[_element$].setAttributeNS(this[_namespace], key, value);
      return value;
    }
    remove(key) {
      let value = this._get(key);
      this[_element$][_removeAttributeNS](this[_namespace], core.String._check(key));
      return value;
    }
    get length() {
      return this.keys[$length];
    }
    [_matches](node) {
      return node[_namespaceUri] == this[_namespace];
    }
  };
  (html$._NamespacedAttributeMap.new = function(element, namespace) {
    this[_namespace] = namespace;
    html$._NamespacedAttributeMap.__proto__.new.call(this, element);
  }).prototype = html$._NamespacedAttributeMap.prototype;
  dart.addTypeTests(html$._NamespacedAttributeMap);
  dart.setMethodSignature(html$._NamespacedAttributeMap, () => ({
    __proto__: dart.getMethods(html$._NamespacedAttributeMap.__proto__),
    containsKey: dart.fnType(core.bool, [core.Object]),
    [$containsKey]: dart.fnType(core.bool, [core.Object]),
    _get: dart.fnType(core.String, [core.Object]),
    [$_get]: dart.fnType(core.String, [core.Object]),
    _set: dart.fnType(dart.void, [core.Object, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
    remove: dart.fnType(core.String, [core.Object]),
    [$remove]: dart.fnType(core.String, [core.Object]),
    [_matches]: dart.fnType(core.bool, [html$._Attr])
  }));
  dart.setGetterSignature(html$._NamespacedAttributeMap, () => ({
    __proto__: dart.getGetters(html$._NamespacedAttributeMap.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.setFieldSignature(html$._NamespacedAttributeMap, () => ({
    __proto__: dart.getFields(html$._NamespacedAttributeMap.__proto__),
    [_namespace]: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(html$._NamespacedAttributeMap, ['containsKey', '_get', '_set', 'remove']);
  dart.defineExtensionAccessors(html$._NamespacedAttributeMap, ['length']);
  const _attr = Symbol('_attr');
  const _strip = Symbol('_strip');
  const _toHyphenedName = Symbol('_toHyphenedName');
  const _toCamelCase = Symbol('_toCamelCase');
  html$._DataAttributeMap = class _DataAttributeMap extends collection.MapBase$(core.String, core.String) {
    addAll(other) {
      MapOfString$String()._check(other);
      other[$forEach](dart.fn((k, v) => {
        this._set(k, v);
      }, StringAndStringToNull()));
    }
    cast(K, V) {
      return core.Map.castFrom(core.String, core.String, K, V, this);
    }
    containsValue(value) {
      return this.values[$any](dart.fn(v => core.identical(v, value), StringTobool()));
    }
    containsKey(key) {
      return this[_attributes$][$containsKey](this[_attr](core.String._check(key)));
    }
    _get(key) {
      return this[_attributes$][$_get](this[_attr](core.String._check(key)));
    }
    _set(key, value) {
      core.String._check(key);
      core.String._check(value);
      this[_attributes$][$_set](this[_attr](key), value);
      return value;
    }
    putIfAbsent(key, ifAbsent) {
      core.String._check(key);
      VoidToString()._check(ifAbsent);
      return this[_attributes$][$putIfAbsent](this[_attr](key), ifAbsent);
    }
    remove(key) {
      return this[_attributes$][$remove](this[_attr](core.String._check(key)));
    }
    clear() {
      for (let key of this.keys) {
        this.remove(key);
      }
    }
    forEach(f) {
      this[_attributes$][$forEach](dart.fn((key, value) => {
        if (dart.test(this[_matches](key))) {
          f(this[_strip](key), value);
        }
      }, StringAndStringToNull()));
    }
    get keys() {
      let keys = JSArrayOfString().of([]);
      this[_attributes$][$forEach](dart.fn((key, value) => {
        if (dart.test(this[_matches](key))) {
          keys[$add](this[_strip](key));
        }
      }, StringAndStringToNull()));
      return keys;
    }
    get values() {
      let values = JSArrayOfString().of([]);
      this[_attributes$][$forEach](dart.fn((key, value) => {
        if (dart.test(this[_matches](key))) {
          values[$add](value);
        }
      }, StringAndStringToNull()));
      return values;
    }
    get length() {
      return this.keys[$length];
    }
    get isEmpty() {
      return this.length === 0;
    }
    get isNotEmpty() {
      return !dart.test(this.isEmpty);
    }
    [_attr](key) {
      return "data-" + dart.str(this[_toHyphenedName](key));
    }
    [_matches](key) {
      return key[$startsWith]("data-");
    }
    [_strip](key) {
      return this[_toCamelCase](key[$substring](5));
    }
    [_toCamelCase](hyphenedName, opts) {
      let startUppercase = opts && 'startUppercase' in opts ? opts.startUppercase : false;
      let segments = hyphenedName[$split]("-");
      let start = dart.test(startUppercase) ? 0 : 1;
      for (let i = start; i < dart.notNull(segments[$length]); i++) {
        let segment = segments[$_get](i);
        if (segment.length > 0) {
          segments[$_set](i, segment[$_get](0)[$toUpperCase]() + segment[$substring](1));
        }
      }
      return segments[$join]("");
    }
    [_toHyphenedName](word) {
      let sb = new core.StringBuffer.new();
      for (let i = 0; i < word.length; i++) {
        let lower = word[$_get](i)[$toLowerCase]();
        if (word[$_get](i) !== lower && i > 0) sb.write("-");
        sb.write(lower);
      }
      return sb.toString();
    }
  };
  (html$._DataAttributeMap.new = function(attributes) {
    this[_attributes$] = attributes;
  }).prototype = html$._DataAttributeMap.prototype;
  dart.addTypeTests(html$._DataAttributeMap);
  dart.setMethodSignature(html$._DataAttributeMap, () => ({
    __proto__: dart.getMethods(html$._DataAttributeMap.__proto__),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    cast: dart.gFnType((K, V) => [core.Map$(K, V), []]),
    [$cast]: dart.gFnType((K, V) => [core.Map$(K, V), []]),
    containsValue: dart.fnType(core.bool, [core.Object]),
    [$containsValue]: dart.fnType(core.bool, [core.Object]),
    containsKey: dart.fnType(core.bool, [core.Object]),
    [$containsKey]: dart.fnType(core.bool, [core.Object]),
    _get: dart.fnType(core.String, [core.Object]),
    [$_get]: dart.fnType(core.String, [core.Object]),
    _set: dart.fnType(dart.void, [core.Object, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
    putIfAbsent: dart.fnType(core.String, [core.Object, core.Object]),
    [$putIfAbsent]: dart.fnType(core.String, [core.Object, core.Object]),
    remove: dart.fnType(core.String, [core.Object]),
    [$remove]: dart.fnType(core.String, [core.Object]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, []),
    forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, core.String])]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, core.String])]),
    [_attr]: dart.fnType(core.String, [core.String]),
    [_matches]: dart.fnType(core.bool, [core.String]),
    [_strip]: dart.fnType(core.String, [core.String]),
    [_toCamelCase]: dart.fnType(core.String, [core.String], {startUppercase: core.bool}),
    [_toHyphenedName]: dart.fnType(core.String, [core.String])
  }));
  dart.setGetterSignature(html$._DataAttributeMap, () => ({
    __proto__: dart.getGetters(html$._DataAttributeMap.__proto__),
    keys: core.Iterable$(core.String),
    [$keys]: core.Iterable$(core.String),
    values: core.Iterable$(core.String),
    [$values]: core.Iterable$(core.String),
    length: core.int,
    [$length]: core.int,
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    isNotEmpty: core.bool,
    [$isNotEmpty]: core.bool
  }));
  dart.setFieldSignature(html$._DataAttributeMap, () => ({
    __proto__: dart.getFields(html$._DataAttributeMap.__proto__),
    [_attributes$]: dart.finalFieldType(MapOfString$String())
  }));
  dart.defineExtensionMethods(html$._DataAttributeMap, [
    'addAll',
    'cast',
    'containsValue',
    'containsKey',
    '_get',
    '_set',
    'putIfAbsent',
    'remove',
    'clear',
    'forEach'
  ]);
  dart.defineExtensionAccessors(html$._DataAttributeMap, [
    'keys',
    'values',
    'length',
    'isEmpty',
    'isNotEmpty'
  ]);
  html$.CanvasImageSource = class CanvasImageSource extends core.Object {};
  (html$.CanvasImageSource.new = function() {
  }).prototype = html$.CanvasImageSource.prototype;
  dart.addTypeTests(html$.CanvasImageSource);
  html$.WindowBase = class WindowBase extends core.Object {};
  (html$.WindowBase.new = function() {
  }).prototype = html$.WindowBase.prototype;
  dart.addTypeTests(html$.WindowBase);
  html$.WindowBase[dart.implements] = () => [html$.EventTarget];
  html$.LocationBase = class LocationBase extends core.Object {};
  (html$.LocationBase.new = function() {
  }).prototype = html$.LocationBase.prototype;
  dart.addTypeTests(html$.LocationBase);
  html$.HistoryBase = class HistoryBase extends core.Object {};
  (html$.HistoryBase.new = function() {
  }).prototype = html$.HistoryBase.prototype;
  dart.addTypeTests(html$.HistoryBase);
  html$.CssClassSet = class CssClassSet extends core.Object {};
  (html$.CssClassSet.new = function() {
  }).prototype = html$.CssClassSet.prototype;
  dart.addTypeTests(html$.CssClassSet);
  html$.CssClassSet[dart.implements] = () => [SetOfString()];
  const _addOrSubtractToBoxModel = Symbol('_addOrSubtractToBoxModel');
  html$.CssRect = class CssRect extends core.Object {
    set height(newHeight) {
      dart.throw(new core.UnsupportedError.new("Can only set height for content rect."));
    }
    set width(newWidth) {
      dart.throw(new core.UnsupportedError.new("Can only set width for content rect."));
    }
    [_addOrSubtractToBoxModel](dimensions, augmentingMeasurement) {
      let styles = this[_element$][$getComputedStyle]();
      let val = 0;
      for (let measurement of dimensions) {
        if (augmentingMeasurement == html$._MARGIN) {
          val = val + dart.notNull(new html$.Dimension.css(styles[$getPropertyValue](dart.str(augmentingMeasurement) + "-" + dart.str(measurement))).value);
        }
        if (augmentingMeasurement == html$._CONTENT) {
          val = val - dart.notNull(new html$.Dimension.css(styles[$getPropertyValue](dart.str(html$._PADDING) + "-" + dart.str(measurement))).value);
        }
        if (augmentingMeasurement != html$._MARGIN) {
          val = val - dart.notNull(new html$.Dimension.css(styles[$getPropertyValue]("border-" + dart.str(measurement) + "-width")).value);
        }
      }
      return val;
    }
    get right() {
      return dart.notNull(this.left) + dart.notNull(this.width);
    }
    get bottom() {
      return dart.notNull(this.top) + dart.notNull(this.height);
    }
    toString() {
      return "Rectangle (" + dart.str(this.left) + ", " + dart.str(this.top) + ") " + dart.str(this.width) + " x " + dart.str(this.height);
    }
    _equals(other) {
      if (!RectangleOfnum().is(other)) return false;
      return core.identical(this.left, dart.dload(other, 'left')) && core.identical(this.top, dart.dload(other, 'top')) && core.identical(this.right, dart.dload(other, 'right')) && core.identical(this.bottom, dart.dload(other, 'bottom'));
    }
    get hashCode() {
      return html$._JenkinsSmiHash.hash4(dart.hashCode(this.left), dart.hashCode(this.top), dart.hashCode(this.right), dart.hashCode(this.bottom));
    }
    intersection(other) {
      let x0 = math.max(core.num, this.left, other[$left]);
      let x1 = math.min(core.num, dart.notNull(this.left) + dart.notNull(this.width), dart.notNull(other[$left]) + dart.notNull(other[$width]));
      if (x0 <= x1) {
        let y0 = math.max(core.num, this.top, other[$top]);
        let y1 = math.min(core.num, dart.notNull(this.top) + dart.notNull(this.height), dart.notNull(other[$top]) + dart.notNull(other[$height]));
        if (y0 <= y1) {
          return new (RectangleOfnum()).new(x0, y0, x1 - x0, y1 - y0);
        }
      }
      return null;
    }
    intersects(other) {
      return dart.notNull(this.left) <= dart.notNull(other[$left]) + dart.notNull(other[$width]) && dart.notNull(other[$left]) <= dart.notNull(this.left) + dart.notNull(this.width) && dart.notNull(this.top) <= dart.notNull(other[$top]) + dart.notNull(other[$height]) && dart.notNull(other[$top]) <= dart.notNull(this.top) + dart.notNull(this.height);
    }
    boundingBox(other) {
      let right = math.max(core.num, dart.notNull(this.left) + dart.notNull(this.width), dart.notNull(other[$left]) + dart.notNull(other[$width]));
      let bottom = math.max(core.num, dart.notNull(this.top) + dart.notNull(this.height), dart.notNull(other[$top]) + dart.notNull(other[$height]));
      let left = math.min(core.num, this.left, other[$left]);
      let top = math.min(core.num, this.top, other[$top]);
      return new (RectangleOfnum()).new(left, top, right - left, bottom - top);
    }
    containsRectangle(another) {
      return dart.notNull(this.left) <= dart.notNull(another[$left]) && dart.notNull(this.left) + dart.notNull(this.width) >= dart.notNull(another[$left]) + dart.notNull(another[$width]) && dart.notNull(this.top) <= dart.notNull(another[$top]) && dart.notNull(this.top) + dart.notNull(this.height) >= dart.notNull(another[$top]) + dart.notNull(another[$height]);
    }
    containsPoint(another) {
      return dart.notNull(another.x) >= dart.notNull(this.left) && dart.notNull(another.x) <= dart.notNull(this.left) + dart.notNull(this.width) && dart.notNull(another.y) >= dart.notNull(this.top) && dart.notNull(another.y) <= dart.notNull(this.top) + dart.notNull(this.height);
    }
    get topLeft() {
      return new (PointOfnum()).new(this.left, this.top);
    }
    get topRight() {
      return new (PointOfnum()).new(dart.notNull(this.left) + dart.notNull(this.width), this.top);
    }
    get bottomRight() {
      return new (PointOfnum()).new(dart.notNull(this.left) + dart.notNull(this.width), dart.notNull(this.top) + dart.notNull(this.height));
    }
    get bottomLeft() {
      return new (PointOfnum()).new(this.left, dart.notNull(this.top) + dart.notNull(this.height));
    }
  };
  (html$.CssRect.new = function(element) {
    this[_element$] = element;
  }).prototype = html$.CssRect.prototype;
  dart.addTypeTests(html$.CssRect);
  html$.CssRect[dart.implements] = () => [RectangleOfnum()];
  dart.setMethodSignature(html$.CssRect, () => ({
    __proto__: dart.getMethods(html$.CssRect.__proto__),
    [_addOrSubtractToBoxModel]: dart.fnType(core.num, [core.List$(core.String), core.String]),
    intersection: dart.fnType(math.Rectangle$(core.num), [math.Rectangle$(core.num)]),
    [$intersection]: dart.fnType(math.Rectangle$(core.num), [math.Rectangle$(core.num)]),
    intersects: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
    [$intersects]: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
    boundingBox: dart.fnType(math.Rectangle$(core.num), [math.Rectangle$(core.num)]),
    [$boundingBox]: dart.fnType(math.Rectangle$(core.num), [math.Rectangle$(core.num)]),
    containsRectangle: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
    [$containsRectangle]: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
    containsPoint: dart.fnType(core.bool, [math.Point$(core.num)]),
    [$containsPoint]: dart.fnType(core.bool, [math.Point$(core.num)])
  }));
  dart.setGetterSignature(html$.CssRect, () => ({
    __proto__: dart.getGetters(html$.CssRect.__proto__),
    right: core.num,
    [$right]: core.num,
    bottom: core.num,
    [$bottom]: core.num,
    topLeft: math.Point$(core.num),
    [$topLeft]: math.Point$(core.num),
    topRight: math.Point$(core.num),
    [$topRight]: math.Point$(core.num),
    bottomRight: math.Point$(core.num),
    [$bottomRight]: math.Point$(core.num),
    bottomLeft: math.Point$(core.num),
    [$bottomLeft]: math.Point$(core.num)
  }));
  dart.setSetterSignature(html$.CssRect, () => ({
    __proto__: dart.getSetters(html$.CssRect.__proto__),
    height: dart.dynamic,
    [$height]: dart.dynamic,
    width: dart.dynamic,
    [$width]: dart.dynamic
  }));
  dart.setFieldSignature(html$.CssRect, () => ({
    __proto__: dart.getFields(html$.CssRect.__proto__),
    [_element$]: dart.fieldType(html$.Element)
  }));
  dart.defineExtensionMethods(html$.CssRect, [
    'toString',
    '_equals',
    'intersection',
    'intersects',
    'boundingBox',
    'containsRectangle',
    'containsPoint'
  ]);
  dart.defineExtensionAccessors(html$.CssRect, [
    'height',
    'width',
    'right',
    'bottom',
    'hashCode',
    'topLeft',
    'topRight',
    'bottomRight',
    'bottomLeft'
  ]);
  html$._ContentCssRect = class _ContentCssRect extends html$.CssRect {
    get height() {
      return dart.notNull(this[_element$][$offsetHeight]) + dart.notNull(this[_addOrSubtractToBoxModel](html$._HEIGHT, html$._CONTENT));
    }
    get width() {
      return dart.notNull(this[_element$][$offsetWidth]) + dart.notNull(this[_addOrSubtractToBoxModel](html$._WIDTH, html$._CONTENT));
    }
    set height(newHeight) {
      if (html$.Dimension.is(newHeight)) {
        let newHeightAsDimension = html$.Dimension._check(newHeight);
        if (dart.notNull(newHeightAsDimension.value) < 0) newHeight = new html$.Dimension.px(0);
        this[_element$].style[$height] = dart.toString(newHeight);
      } else if (typeof newHeight == 'number') {
        if (dart.dtest(dart.dsend(newHeight, '<', [0]))) newHeight = 0;
        this[_element$].style[$height] = dart.str(newHeight) + "px";
      } else {
        dart.throw(new core.ArgumentError.new("newHeight is not a Dimension or num"));
      }
    }
    set width(newWidth) {
      if (html$.Dimension.is(newWidth)) {
        let newWidthAsDimension = html$.Dimension._check(newWidth);
        if (dart.notNull(newWidthAsDimension.value) < 0) newWidth = new html$.Dimension.px(0);
        this[_element$].style[$width] = dart.toString(newWidth);
      } else if (typeof newWidth == 'number') {
        if (dart.dtest(dart.dsend(newWidth, '<', [0]))) newWidth = 0;
        this[_element$].style[$width] = dart.str(newWidth) + "px";
      } else {
        dart.throw(new core.ArgumentError.new("newWidth is not a Dimension or num"));
      }
    }
    get left() {
      return dart.notNull(this[_element$].getBoundingClientRect()[$left]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(["left"]), html$._CONTENT));
    }
    get top() {
      return dart.notNull(this[_element$].getBoundingClientRect()[$top]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(["top"]), html$._CONTENT));
    }
  };
  (html$._ContentCssRect.new = function(element) {
    html$._ContentCssRect.__proto__.new.call(this, element);
  }).prototype = html$._ContentCssRect.prototype;
  dart.addTypeTests(html$._ContentCssRect);
  dart.setGetterSignature(html$._ContentCssRect, () => ({
    __proto__: dart.getGetters(html$._ContentCssRect.__proto__),
    height: core.num,
    [$height]: core.num,
    width: core.num,
    [$width]: core.num,
    left: core.num,
    [$left]: core.num,
    top: core.num,
    [$top]: core.num
  }));
  dart.defineExtensionAccessors(html$._ContentCssRect, ['height', 'width', 'left', 'top']);
  const _elementList = Symbol('_elementList');
  html$._ContentCssListRect = class _ContentCssListRect extends html$._ContentCssRect {
    set height(newHeight) {
      this[_elementList][$forEach](dart.fn(e => e[$contentEdge].height = newHeight, ElementTodynamic()));
    }
    get height() {
      return super.height;
    }
    set width(newWidth) {
      this[_elementList][$forEach](dart.fn(e => e[$contentEdge].width = newWidth, ElementTodynamic()));
    }
    get width() {
      return super.width;
    }
  };
  (html$._ContentCssListRect.new = function(elementList) {
    this[_elementList] = null;
    html$._ContentCssListRect.__proto__.new.call(this, elementList[$first]);
    this[_elementList] = elementList;
  }).prototype = html$._ContentCssListRect.prototype;
  dart.addTypeTests(html$._ContentCssListRect);
  dart.setFieldSignature(html$._ContentCssListRect, () => ({
    __proto__: dart.getFields(html$._ContentCssListRect.__proto__),
    [_elementList]: dart.fieldType(ListOfElement())
  }));
  dart.defineExtensionAccessors(html$._ContentCssListRect, ['height', 'width']);
  html$._PaddingCssRect = class _PaddingCssRect extends html$.CssRect {
    get height() {
      return dart.notNull(this[_element$][$offsetHeight]) + dart.notNull(this[_addOrSubtractToBoxModel](html$._HEIGHT, html$._PADDING));
    }
    set height(value) {
      super.height = value;
    }
    get width() {
      return dart.notNull(this[_element$][$offsetWidth]) + dart.notNull(this[_addOrSubtractToBoxModel](html$._WIDTH, html$._PADDING));
    }
    set width(value) {
      super.width = value;
    }
    get left() {
      return dart.notNull(this[_element$].getBoundingClientRect()[$left]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(["left"]), html$._PADDING));
    }
    get top() {
      return dart.notNull(this[_element$].getBoundingClientRect()[$top]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(["top"]), html$._PADDING));
    }
  };
  (html$._PaddingCssRect.new = function(element) {
    html$._PaddingCssRect.__proto__.new.call(this, html$.Element._check(element));
  }).prototype = html$._PaddingCssRect.prototype;
  dart.addTypeTests(html$._PaddingCssRect);
  dart.setGetterSignature(html$._PaddingCssRect, () => ({
    __proto__: dart.getGetters(html$._PaddingCssRect.__proto__),
    height: core.num,
    [$height]: core.num,
    width: core.num,
    [$width]: core.num,
    left: core.num,
    [$left]: core.num,
    top: core.num,
    [$top]: core.num
  }));
  dart.defineExtensionAccessors(html$._PaddingCssRect, ['height', 'width', 'left', 'top']);
  html$._BorderCssRect = class _BorderCssRect extends html$.CssRect {
    get height() {
      return this[_element$][$offsetHeight];
    }
    set height(value) {
      super.height = value;
    }
    get width() {
      return this[_element$][$offsetWidth];
    }
    set width(value) {
      super.width = value;
    }
    get left() {
      return this[_element$].getBoundingClientRect()[$left];
    }
    get top() {
      return this[_element$].getBoundingClientRect()[$top];
    }
  };
  (html$._BorderCssRect.new = function(element) {
    html$._BorderCssRect.__proto__.new.call(this, html$.Element._check(element));
  }).prototype = html$._BorderCssRect.prototype;
  dart.addTypeTests(html$._BorderCssRect);
  dart.setGetterSignature(html$._BorderCssRect, () => ({
    __proto__: dart.getGetters(html$._BorderCssRect.__proto__),
    height: core.num,
    [$height]: core.num,
    width: core.num,
    [$width]: core.num,
    left: core.num,
    [$left]: core.num,
    top: core.num,
    [$top]: core.num
  }));
  dart.defineExtensionAccessors(html$._BorderCssRect, ['height', 'width', 'left', 'top']);
  html$._MarginCssRect = class _MarginCssRect extends html$.CssRect {
    get height() {
      return dart.notNull(this[_element$][$offsetHeight]) + dart.notNull(this[_addOrSubtractToBoxModel](html$._HEIGHT, html$._MARGIN));
    }
    set height(value) {
      super.height = value;
    }
    get width() {
      return dart.notNull(this[_element$][$offsetWidth]) + dart.notNull(this[_addOrSubtractToBoxModel](html$._WIDTH, html$._MARGIN));
    }
    set width(value) {
      super.width = value;
    }
    get left() {
      return dart.notNull(this[_element$].getBoundingClientRect()[$left]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(["left"]), html$._MARGIN));
    }
    get top() {
      return dart.notNull(this[_element$].getBoundingClientRect()[$top]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(["top"]), html$._MARGIN));
    }
  };
  (html$._MarginCssRect.new = function(element) {
    html$._MarginCssRect.__proto__.new.call(this, html$.Element._check(element));
  }).prototype = html$._MarginCssRect.prototype;
  dart.addTypeTests(html$._MarginCssRect);
  dart.setGetterSignature(html$._MarginCssRect, () => ({
    __proto__: dart.getGetters(html$._MarginCssRect.__proto__),
    height: core.num,
    [$height]: core.num,
    width: core.num,
    [$width]: core.num,
    left: core.num,
    [$left]: core.num,
    top: core.num,
    [$top]: core.num
  }));
  dart.defineExtensionAccessors(html$._MarginCssRect, ['height', 'width', 'left', 'top']);
  dart.defineLazy(html$, {
    /*html$._HEIGHT*/get _HEIGHT() {
      return JSArrayOfString().of(["top", "bottom"]);
    },
    /*html$._WIDTH*/get _WIDTH() {
      return JSArrayOfString().of(["right", "left"]);
    },
    /*html$._CONTENT*/get _CONTENT() {
      return "content";
    },
    /*html$._PADDING*/get _PADDING() {
      return "padding";
    },
    /*html$._MARGIN*/get _MARGIN() {
      return "margin";
    }
  });
  const _sets = Symbol('_sets');
  const _validateToken = Symbol('_validateToken');
  html_common.CssClassSetImpl = class CssClassSetImpl extends collection.SetBase$(core.String) {
    [_validateToken](value) {
      if (dart.test(html_common.CssClassSetImpl._validTokenRE.hasMatch(value))) return value;
      dart.throw(new core.ArgumentError.value(value, "value", "Not a valid class token"));
    }
    toString() {
      return this.readClasses().join(" ");
    }
    toggle(value, shouldAdd) {
      if (shouldAdd === void 0) shouldAdd = null;
      this[_validateToken](value);
      let s = this.readClasses();
      let result = false;
      if (shouldAdd == null) shouldAdd = !dart.test(s.contains(value));
      if (dart.test(shouldAdd)) {
        s.add(value);
        result = true;
      } else {
        s.remove(value);
      }
      this.writeClasses(s);
      return result;
    }
    get frozen() {
      return false;
    }
    get iterator() {
      return this.readClasses().iterator;
    }
    forEach(f) {
      this.readClasses().forEach(f);
    }
    join(separator) {
      if (separator === void 0) separator = "";
      return this.readClasses().join(separator);
    }
    map(T, f) {
      return core.Iterable$(T)._check(this.readClasses().map(T, f));
    }
    where(f) {
      return this.readClasses().where(f);
    }
    expand(T, f) {
      return core.Iterable$(T)._check(this.readClasses().expand(T, f));
    }
    every(f) {
      return this.readClasses().every(f);
    }
    any(f) {
      return this.readClasses().any(f);
    }
    get isEmpty() {
      return this.readClasses().isEmpty;
    }
    get isNotEmpty() {
      return this.readClasses().isNotEmpty;
    }
    get length() {
      return this.readClasses().length;
    }
    reduce(combine) {
      StringAndStringToString()._check(combine);
      return this.readClasses().reduce(combine);
    }
    fold(T, initialValue, combine) {
      return T._check(this.readClasses().fold(T, initialValue, combine));
    }
    contains(value) {
      if (!(typeof value == 'string')) return false;
      this[_validateToken](core.String._check(value));
      return this.readClasses().contains(value);
    }
    lookup(value) {
      return core.String._check(dart.test(this.contains(value)) ? value : null);
    }
    add(value) {
      core.String._check(value);
      this[_validateToken](value);
      return core.bool._check(this.modify(dart.fn(s => s.add(value), SetOfStringTobool())));
    }
    remove(value) {
      this[_validateToken](core.String._check(value));
      if (!(typeof value == 'string')) return false;
      let s = this.readClasses();
      let result = s.remove(value);
      this.writeClasses(s);
      return result;
    }
    addAll(iterable) {
      IterableOfString()._check(iterable);
      this.modify(dart.fn(s => s.addAll(IterableOfString()._check(iterable[$map](core.String, dart.bind(this, _validateToken)))), SetOfStringTovoid()));
    }
    removeAll(iterable) {
      this.modify(dart.fn(s => s.removeAll(iterable), SetOfStringTovoid()));
    }
    toggleAll(iterable, shouldAdd) {
      if (shouldAdd === void 0) shouldAdd = null;
      iterable[$forEach](dart.fn(e => this.toggle(e, shouldAdd), StringTobool()));
    }
    retainAll(iterable) {
      this.modify(dart.fn(s => s.retainAll(iterable), SetOfStringTovoid()));
    }
    removeWhere(test) {
      this.modify(dart.fn(s => s.removeWhere(test), SetOfStringTovoid()));
    }
    retainWhere(test) {
      this.modify(dart.fn(s => s.retainWhere(test), SetOfStringTovoid()));
    }
    containsAll(collection) {
      return this.readClasses().containsAll(collection);
    }
    intersection(other) {
      return this.readClasses().intersection(other);
    }
    union(other) {
      SetOfString()._check(other);
      return this.readClasses().union(other);
    }
    difference(other) {
      return this.readClasses().difference(other);
    }
    get first() {
      return this.readClasses().first;
    }
    get last() {
      return this.readClasses().last;
    }
    get single() {
      return this.readClasses().single;
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      return this.readClasses().toList({growable: growable});
    }
    toSet() {
      return this.readClasses().toSet();
    }
    take(n) {
      return this.readClasses().take(n);
    }
    takeWhile(test) {
      return this.readClasses().takeWhile(test);
    }
    skip(n) {
      return this.readClasses().skip(n);
    }
    skipWhile(test) {
      return this.readClasses().skipWhile(test);
    }
    firstWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToString()._check(orElse);
      return this.readClasses().firstWhere(test, {orElse: orElse});
    }
    lastWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToString()._check(orElse);
      return this.readClasses().lastWhere(test, {orElse: orElse});
    }
    singleWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToString()._check(orElse);
      return this.readClasses().singleWhere(test, {orElse: orElse});
    }
    elementAt(index) {
      return this.readClasses().elementAt(index);
    }
    clear() {
      this.modify(dart.fn(s => s.clear(), SetOfStringTovoid()));
    }
    modify(f) {
      let s = this.readClasses();
      let ret = f(s);
      this.writeClasses(s);
      return ret;
    }
  };
  (html_common.CssClassSetImpl.new = function() {
  }).prototype = html_common.CssClassSetImpl.prototype;
  dart.addTypeTests(html_common.CssClassSetImpl);
  html_common.CssClassSetImpl[dart.implements] = () => [html$.CssClassSet];
  dart.setMethodSignature(html_common.CssClassSetImpl, () => ({
    __proto__: dart.getMethods(html_common.CssClassSetImpl.__proto__),
    [_validateToken]: dart.fnType(core.String, [core.String]),
    toString: dart.fnType(core.String, []),
    [$toString]: dart.fnType(core.String, []),
    toggle: dart.fnType(core.bool, [core.String], [core.bool]),
    forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String])]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String])]),
    join: dart.fnType(core.String, [], [core.String]),
    [$join]: dart.fnType(core.String, [], [core.String]),
    map: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [core.String])]]),
    [$map]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [core.String])]]),
    where: dart.fnType(core.Iterable$(core.String), [dart.fnType(core.bool, [core.String])]),
    [$where]: dart.fnType(core.Iterable$(core.String), [dart.fnType(core.bool, [core.String])]),
    expand: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [core.String])]]),
    [$expand]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [core.String])]]),
    every: dart.fnType(core.bool, [dart.fnType(core.bool, [core.String])]),
    [$every]: dart.fnType(core.bool, [dart.fnType(core.bool, [core.String])]),
    any: dart.fnType(core.bool, [dart.fnType(core.bool, [core.String])]),
    [$any]: dart.fnType(core.bool, [dart.fnType(core.bool, [core.String])]),
    reduce: dart.fnType(core.String, [core.Object]),
    [$reduce]: dart.fnType(core.String, [core.Object]),
    fold: dart.gFnType(T => [T, [T, dart.fnType(T, [T, core.String])]]),
    [$fold]: dart.gFnType(T => [T, [T, dart.fnType(T, [T, core.String])]]),
    contains: dart.fnType(core.bool, [core.Object]),
    [$contains]: dart.fnType(core.bool, [core.Object]),
    lookup: dart.fnType(core.String, [core.Object]),
    add: dart.fnType(core.bool, [core.Object]),
    remove: dart.fnType(core.bool, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    removeAll: dart.fnType(dart.void, [core.Iterable$(core.Object)]),
    toggleAll: dart.fnType(dart.void, [core.Iterable$(core.String)], [core.bool]),
    retainAll: dart.fnType(dart.void, [core.Iterable$(core.Object)]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [core.String])]),
    retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [core.String])]),
    containsAll: dart.fnType(core.bool, [core.Iterable$(core.Object)]),
    intersection: dart.fnType(core.Set$(core.String), [core.Set$(core.Object)]),
    union: dart.fnType(core.Set$(core.String), [core.Object]),
    difference: dart.fnType(core.Set$(core.String), [core.Set$(core.Object)]),
    toList: dart.fnType(core.List$(core.String), [], {growable: core.bool}),
    [$toList]: dart.fnType(core.List$(core.String), [], {growable: core.bool}),
    toSet: dart.fnType(core.Set$(core.String), []),
    [$toSet]: dart.fnType(core.Set$(core.String), []),
    take: dart.fnType(core.Iterable$(core.String), [core.int]),
    [$take]: dart.fnType(core.Iterable$(core.String), [core.int]),
    takeWhile: dart.fnType(core.Iterable$(core.String), [dart.fnType(core.bool, [core.String])]),
    [$takeWhile]: dart.fnType(core.Iterable$(core.String), [dart.fnType(core.bool, [core.String])]),
    skip: dart.fnType(core.Iterable$(core.String), [core.int]),
    [$skip]: dart.fnType(core.Iterable$(core.String), [core.int]),
    skipWhile: dart.fnType(core.Iterable$(core.String), [dart.fnType(core.bool, [core.String])]),
    [$skipWhile]: dart.fnType(core.Iterable$(core.String), [dart.fnType(core.bool, [core.String])]),
    firstWhere: dart.fnType(core.String, [dart.fnType(core.bool, [core.String])], {orElse: core.Object}),
    [$firstWhere]: dart.fnType(core.String, [dart.fnType(core.bool, [core.String])], {orElse: core.Object}),
    lastWhere: dart.fnType(core.String, [dart.fnType(core.bool, [core.String])], {orElse: core.Object}),
    [$lastWhere]: dart.fnType(core.String, [dart.fnType(core.bool, [core.String])], {orElse: core.Object}),
    singleWhere: dart.fnType(core.String, [dart.fnType(core.bool, [core.String])], {orElse: core.Object}),
    [$singleWhere]: dart.fnType(core.String, [dart.fnType(core.bool, [core.String])], {orElse: core.Object}),
    elementAt: dart.fnType(core.String, [core.int]),
    [$elementAt]: dart.fnType(core.String, [core.int]),
    clear: dart.fnType(dart.void, []),
    modify: dart.fnType(dart.dynamic, [dart.fnType(dart.dynamic, [core.Set$(core.String)])])
  }));
  dart.setGetterSignature(html_common.CssClassSetImpl, () => ({
    __proto__: dart.getGetters(html_common.CssClassSetImpl.__proto__),
    frozen: core.bool,
    iterator: core.Iterator$(core.String),
    [$iterator]: core.Iterator$(core.String),
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    isNotEmpty: core.bool,
    [$isNotEmpty]: core.bool,
    length: core.int,
    [$length]: core.int,
    first: core.String,
    [$first]: core.String,
    last: core.String,
    [$last]: core.String,
    single: core.String,
    [$single]: core.String
  }));
  dart.defineExtensionMethods(html_common.CssClassSetImpl, [
    'toString',
    'forEach',
    'join',
    'map',
    'where',
    'expand',
    'every',
    'any',
    'reduce',
    'fold',
    'contains',
    'toList',
    'toSet',
    'take',
    'takeWhile',
    'skip',
    'skipWhile',
    'firstWhere',
    'lastWhere',
    'singleWhere',
    'elementAt'
  ]);
  dart.defineExtensionAccessors(html_common.CssClassSetImpl, [
    'iterator',
    'isEmpty',
    'isNotEmpty',
    'length',
    'first',
    'last',
    'single'
  ]);
  dart.defineLazy(html_common.CssClassSetImpl, {
    /*html_common.CssClassSetImpl._validTokenRE*/get _validTokenRE() {
      return core.RegExp.new("^\\S+$");
    }
  });
  html$._MultiElementCssClassSet = class _MultiElementCssClassSet extends html_common.CssClassSetImpl {
    static new(elements) {
      return new html$._MultiElementCssClassSet.__(elements, ListOfCssClassSetImpl().from(elements[$map](dart.dynamic, dart.fn(e => e[$classes], ElementToCssClassSet()))));
    }
    readClasses() {
      let s = new (_IdentityHashSetOfString()).new();
      this[_sets][$forEach](dart.fn(e => s.addAll(e.readClasses()), CssClassSetImplTovoid()));
      return s;
    }
    writeClasses(s) {
      let classes = s.join(" ");
      for (let e of this[_elementIterable]) {
        e.className = classes;
      }
    }
    modify(f) {
      this[_sets][$forEach](dart.fn(e => e.modify(f), CssClassSetImplTodynamic()));
    }
    toggle(value, shouldAdd) {
      if (shouldAdd === void 0) shouldAdd = null;
      return core.bool._check(this[_sets][$fold](core.bool, false, dart.fn((changed, e) => dart.test(e.toggle(value, shouldAdd)) || dart.test(changed), boolAndCssClassSetImplTobool())));
    }
    remove(value) {
      return core.bool._check(this[_sets][$fold](core.bool, false, dart.fn((changed, e) => dart.test(e.remove(value)) || dart.test(changed), boolAndCssClassSetImplTobool())));
    }
  };
  (html$._MultiElementCssClassSet.__ = function(elementIterable, sets) {
    this[_elementIterable] = elementIterable;
    this[_sets] = sets;
  }).prototype = html$._MultiElementCssClassSet.prototype;
  dart.addTypeTests(html$._MultiElementCssClassSet);
  dart.setMethodSignature(html$._MultiElementCssClassSet, () => ({
    __proto__: dart.getMethods(html$._MultiElementCssClassSet.__proto__),
    readClasses: dart.fnType(core.Set$(core.String), []),
    writeClasses: dart.fnType(dart.void, [core.Set$(core.String)])
  }));
  dart.setFieldSignature(html$._MultiElementCssClassSet, () => ({
    __proto__: dart.getFields(html$._MultiElementCssClassSet.__proto__),
    [_elementIterable]: dart.finalFieldType(IterableOfElement()),
    [_sets]: dart.finalFieldType(ListOfCssClassSetImpl())
  }));
  html$._ElementCssClassSet = class _ElementCssClassSet extends html_common.CssClassSetImpl {
    readClasses() {
      let s = new (_IdentityHashSetOfString()).new();
      let classname = this[_element$].className;
      for (let name of classname[$split](" ")) {
        let trimmed = name[$trim]();
        if (!trimmed[$isEmpty]) {
          s.add(trimmed);
        }
      }
      return s;
    }
    writeClasses(s) {
      this[_element$].className = s.join(" ");
    }
    get length() {
      return html$._ElementCssClassSet._classListLength(html$._ElementCssClassSet._classListOf(this[_element$]));
    }
    get isEmpty() {
      return this.length === 0;
    }
    get isNotEmpty() {
      return this.length !== 0;
    }
    clear() {
      this[_element$].className = "";
    }
    contains(value) {
      return html$._ElementCssClassSet._contains(this[_element$], value);
    }
    add(value) {
      core.String._check(value);
      return html$._ElementCssClassSet._add(this[_element$], value);
    }
    remove(value) {
      return typeof value == 'string' && dart.test(html$._ElementCssClassSet._remove(this[_element$], value));
    }
    toggle(value, shouldAdd) {
      if (shouldAdd === void 0) shouldAdd = null;
      return html$._ElementCssClassSet._toggle(this[_element$], value, shouldAdd);
    }
    addAll(iterable) {
      IterableOfString()._check(iterable);
      html$._ElementCssClassSet._addAll(this[_element$], iterable);
    }
    removeAll(iterable) {
      html$._ElementCssClassSet._removeAll(this[_element$], IterableOfString()._check(iterable));
    }
    retainAll(iterable) {
      html$._ElementCssClassSet._removeWhere(this[_element$], dart.bind(iterable[$toSet](), 'contains'), false);
    }
    removeWhere(test) {
      html$._ElementCssClassSet._removeWhere(this[_element$], test, true);
    }
    retainWhere(test) {
      html$._ElementCssClassSet._removeWhere(this[_element$], test, false);
    }
    static _contains(_element, value) {
      return typeof value == 'string' && dart.test(html$._ElementCssClassSet._classListContains(html$._ElementCssClassSet._classListOf(_element), value));
    }
    static _add(_element, value) {
      let list = html$._ElementCssClassSet._classListOf(_element);
      let added = !dart.test(html$._ElementCssClassSet._classListContainsBeforeAddOrRemove(list, value));
      html$._ElementCssClassSet._classListAdd(list, value);
      return added;
    }
    static _remove(_element, value) {
      let list = html$._ElementCssClassSet._classListOf(_element);
      let removed = html$._ElementCssClassSet._classListContainsBeforeAddOrRemove(list, value);
      html$._ElementCssClassSet._classListRemove(list, value);
      return removed;
    }
    static _toggle(_element, value, shouldAdd) {
      return shouldAdd == null ? html$._ElementCssClassSet._toggleDefault(_element, value) : html$._ElementCssClassSet._toggleOnOff(_element, value, shouldAdd);
    }
    static _toggleDefault(_element, value) {
      let list = html$._ElementCssClassSet._classListOf(_element);
      return html$._ElementCssClassSet._classListToggle1(list, value);
    }
    static _toggleOnOff(_element, value, shouldAdd) {
      let list = html$._ElementCssClassSet._classListOf(_element);
      if (dart.test(shouldAdd)) {
        html$._ElementCssClassSet._classListAdd(list, value);
        return true;
      } else {
        html$._ElementCssClassSet._classListRemove(list, value);
        return false;
      }
    }
    static _addAll(_element, iterable) {
      let list = html$._ElementCssClassSet._classListOf(_element);
      for (let value of iterable) {
        html$._ElementCssClassSet._classListAdd(list, value);
      }
    }
    static _removeAll(_element, iterable) {
      let list = html$._ElementCssClassSet._classListOf(_element);
      for (let value of iterable) {
        html$._ElementCssClassSet._classListRemove(list, value);
      }
    }
    static _removeWhere(_element, test, doRemove) {
      let list = html$._ElementCssClassSet._classListOf(_element);
      let i = 0;
      while (i < dart.notNull(html$._ElementCssClassSet._classListLength(list))) {
        let item = list.item(i);
        if (doRemove == test(item)) {
          html$._ElementCssClassSet._classListRemove(list, item);
        } else {
          ++i;
        }
      }
    }
    static _classListOf(e) {
      return e.classList;
    }
    static _classListLength(list) {
      return list.length;
    }
    static _classListContains(list, value) {
      return list.contains(value);
    }
    static _classListContainsBeforeAddOrRemove(list, value) {
      return list.contains(value);
    }
    static _classListAdd(list, value) {
      list.add(value);
    }
    static _classListRemove(list, value) {
      list.remove(value);
    }
    static _classListToggle1(list, value) {
      return list.toggle(value);
    }
    static _classListToggle2(list, value, shouldAdd) {
      return list.toggle(value, shouldAdd);
    }
  };
  (html$._ElementCssClassSet.new = function(element) {
    this[_element$] = element;
  }).prototype = html$._ElementCssClassSet.prototype;
  dart.addTypeTests(html$._ElementCssClassSet);
  dart.setMethodSignature(html$._ElementCssClassSet, () => ({
    __proto__: dart.getMethods(html$._ElementCssClassSet.__proto__),
    readClasses: dart.fnType(core.Set$(core.String), []),
    writeClasses: dart.fnType(dart.void, [core.Set$(core.String)]),
    add: dart.fnType(core.bool, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object])
  }));
  dart.setFieldSignature(html$._ElementCssClassSet, () => ({
    __proto__: dart.getFields(html$._ElementCssClassSet.__proto__),
    [_element$]: dart.finalFieldType(html$.Element)
  }));
  dart.defineExtensionMethods(html$._ElementCssClassSet, ['contains']);
  dart.defineExtensionAccessors(html$._ElementCssClassSet, ['length', 'isEmpty', 'isNotEmpty']);
  const _unit = Symbol('_unit');
  html$.Dimension = class Dimension extends core.Object {
    toString() {
      return dart.str(this[_value$3]) + dart.str(this[_unit]);
    }
    get value() {
      return this[_value$3];
    }
  };
  (html$.Dimension.percent = function(value) {
    this[_value$3] = value;
    this[_unit] = "%";
  }).prototype = html$.Dimension.prototype;
  (html$.Dimension.px = function(value) {
    this[_value$3] = value;
    this[_unit] = "px";
  }).prototype = html$.Dimension.prototype;
  (html$.Dimension.pc = function(value) {
    this[_value$3] = value;
    this[_unit] = "pc";
  }).prototype = html$.Dimension.prototype;
  (html$.Dimension.pt = function(value) {
    this[_value$3] = value;
    this[_unit] = "pt";
  }).prototype = html$.Dimension.prototype;
  (html$.Dimension.inch = function(value) {
    this[_value$3] = value;
    this[_unit] = "in";
  }).prototype = html$.Dimension.prototype;
  (html$.Dimension.cm = function(value) {
    this[_value$3] = value;
    this[_unit] = "cm";
  }).prototype = html$.Dimension.prototype;
  (html$.Dimension.mm = function(value) {
    this[_value$3] = value;
    this[_unit] = "mm";
  }).prototype = html$.Dimension.prototype;
  (html$.Dimension.em = function(value) {
    this[_value$3] = value;
    this[_unit] = "em";
  }).prototype = html$.Dimension.prototype;
  (html$.Dimension.ex = function(value) {
    this[_value$3] = value;
    this[_unit] = "ex";
  }).prototype = html$.Dimension.prototype;
  (html$.Dimension.css = function(cssValue) {
    this[_value$3] = null;
    this[_unit] = null;
    if (cssValue === "") cssValue = "0px";
    if (cssValue[$endsWith]("%")) {
      this[_unit] = "%";
    } else {
      this[_unit] = cssValue[$substring](cssValue.length - 2);
    }
    if (cssValue[$contains](".")) {
      this[_value$3] = core.double.parse(cssValue[$substring](0, cssValue.length - this[_unit].length));
    } else {
      this[_value$3] = core.int.parse(cssValue[$substring](0, cssValue.length - this[_unit].length));
    }
  }).prototype = html$.Dimension.prototype;
  dart.addTypeTests(html$.Dimension);
  dart.setGetterSignature(html$.Dimension, () => ({
    __proto__: dart.getGetters(html$.Dimension.__proto__),
    value: core.num
  }));
  dart.setFieldSignature(html$.Dimension, () => ({
    __proto__: dart.getFields(html$.Dimension.__proto__),
    [_value$3]: dart.fieldType(core.num),
    [_unit]: dart.fieldType(core.String)
  }));
  dart.defineExtensionMethods(html$.Dimension, ['toString']);
  const _is_EventStreamProvider_default = Symbol('_is_EventStreamProvider_default');
  html$.EventStreamProvider$ = dart.generic(T => {
    let _EventStreamOfT = () => (_EventStreamOfT = dart.constFn(html$._EventStream$(T)))();
    let _ElementEventStreamImplOfT = () => (_ElementEventStreamImplOfT = dart.constFn(html$._ElementEventStreamImpl$(T)))();
    let _ElementListEventStreamImplOfT = () => (_ElementListEventStreamImplOfT = dart.constFn(html$._ElementListEventStreamImpl$(T)))();
    class EventStreamProvider extends core.Object {
      forTarget(e, opts) {
        let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
        return new (_EventStreamOfT()).new(e, this[_eventType], useCapture);
      }
      forElement(e, opts) {
        let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
        return new (_ElementEventStreamImplOfT()).new(e, this[_eventType], useCapture);
      }
      [_forElementList](e, opts) {
        let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
        return new (_ElementListEventStreamImplOfT()).new(e, this[_eventType], useCapture);
      }
      getEventType(target) {
        return this[_eventType];
      }
    }
    (EventStreamProvider.new = function(eventType) {
      this[_eventType] = eventType;
    }).prototype = EventStreamProvider.prototype;
    dart.addTypeTests(EventStreamProvider);
    EventStreamProvider.prototype[_is_EventStreamProvider_default] = true;
    dart.setMethodSignature(EventStreamProvider, () => ({
      __proto__: dart.getMethods(EventStreamProvider.__proto__),
      forTarget: dart.fnType(async.Stream$(T), [html$.EventTarget], {useCapture: core.bool}),
      forElement: dart.fnType(html$.ElementStream$(T), [html$.Element], {useCapture: core.bool}),
      [_forElementList]: dart.fnType(html$.ElementStream$(T), [html$.ElementList$(html$.Element)], {useCapture: core.bool}),
      getEventType: dart.fnType(core.String, [html$.EventTarget])
    }));
    dart.setFieldSignature(EventStreamProvider, () => ({
      __proto__: dart.getFields(EventStreamProvider.__proto__),
      [_eventType]: dart.finalFieldType(core.String)
    }));
    return EventStreamProvider;
  });
  html$.EventStreamProvider = html$.EventStreamProvider$();
  dart.addTypeTests(html$.EventStreamProvider, _is_EventStreamProvider_default);
  const _is_ElementStream_default = Symbol('_is_ElementStream_default');
  html$.ElementStream$ = dart.generic(T => {
    let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
    class ElementStream extends core.Object {}
    (ElementStream.new = function() {
    }).prototype = ElementStream.prototype;
    ElementStream.prototype[dart.isStream] = true;
    dart.addTypeTests(ElementStream);
    ElementStream.prototype[_is_ElementStream_default] = true;
    ElementStream[dart.implements] = () => [StreamOfT()];
    return ElementStream;
  });
  html$.ElementStream = html$.ElementStream$();
  dart.addTypeTests(html$.ElementStream, _is_ElementStream_default);
  const _target$0 = Symbol('_target');
  const _useCapture = Symbol('_useCapture');
  const _is__EventStream_default = Symbol('_is__EventStream_default');
  html$._EventStream$ = dart.generic(T => {
    let _EventStreamSubscriptionOfT = () => (_EventStreamSubscriptionOfT = dart.constFn(html$._EventStreamSubscription$(T)))();
    class _EventStream extends async.Stream$(T) {
      asBroadcastStream(opts) {
        let onListen = opts && 'onListen' in opts ? opts.onListen : null;
        let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
        return this;
      }
      get isBroadcast() {
        return true;
      }
      listen(onData, opts) {
        let onError = opts && 'onError' in opts ? opts.onError : null;
        let onDone = opts && 'onDone' in opts ? opts.onDone : null;
        let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
        return new (_EventStreamSubscriptionOfT()).new(this[_target$0], this[_eventType], onData, this[_useCapture]);
      }
    }
    (_EventStream.new = function(target, eventType, useCapture) {
      this[_target$0] = target;
      this[_eventType] = eventType;
      this[_useCapture] = useCapture;
      _EventStream.__proto__.new.call(this);
    }).prototype = _EventStream.prototype;
    dart.addTypeTests(_EventStream);
    _EventStream.prototype[_is__EventStream_default] = true;
    dart.setMethodSignature(_EventStream, () => ({
      __proto__: dart.getMethods(_EventStream.__proto__),
      listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool})
    }));
    dart.setFieldSignature(_EventStream, () => ({
      __proto__: dart.getFields(_EventStream.__proto__),
      [_target$0]: dart.finalFieldType(html$.EventTarget),
      [_eventType]: dart.finalFieldType(core.String),
      [_useCapture]: dart.finalFieldType(core.bool)
    }));
    return _EventStream;
  });
  html$._EventStream = html$._EventStream$();
  dart.addTypeTests(html$._EventStream, _is__EventStream_default);
  html$._matchesWithAncestors = function(event, selector) {
    let target = event[$target];
    return html$.Element.is(target) ? target[$matchesWithAncestors](selector) : false;
  };
  const _is__ElementEventStreamImpl_default = Symbol('_is__ElementEventStreamImpl_default');
  html$._ElementEventStreamImpl$ = dart.generic(T => {
    let TToT = () => (TToT = dart.constFn(dart.fnType(T, [T])))();
    let TTobool = () => (TTobool = dart.constFn(dart.fnType(core.bool, [T])))();
    let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
    let _EventStreamSubscriptionOfT = () => (_EventStreamSubscriptionOfT = dart.constFn(html$._EventStreamSubscription$(T)))();
    let ElementStreamOfT = () => (ElementStreamOfT = dart.constFn(html$.ElementStream$(T)))();
    class _ElementEventStreamImpl extends html$._EventStream$(T) {
      matches(selector) {
        return StreamOfT()._check(this.where(dart.fn(event => html$._matchesWithAncestors(event, selector), TTobool())).map(T, dart.fn(e => {
          e[_selector] = selector;
          return e;
        }, TToT())));
      }
      capture(onData) {
        return new (_EventStreamSubscriptionOfT()).new(this[_target$0], this[_eventType], onData, true);
      }
    }
    (_ElementEventStreamImpl.new = function(target, eventType, useCapture) {
      _ElementEventStreamImpl.__proto__.new.call(this, html$.EventTarget._check(target), core.String._check(eventType), core.bool._check(useCapture));
    }).prototype = _ElementEventStreamImpl.prototype;
    dart.addTypeTests(_ElementEventStreamImpl);
    _ElementEventStreamImpl.prototype[_is__ElementEventStreamImpl_default] = true;
    _ElementEventStreamImpl[dart.implements] = () => [ElementStreamOfT()];
    dart.setMethodSignature(_ElementEventStreamImpl, () => ({
      __proto__: dart.getMethods(_ElementEventStreamImpl.__proto__),
      matches: dart.fnType(async.Stream$(T), [core.String]),
      capture: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])])
    }));
    return _ElementEventStreamImpl;
  });
  html$._ElementEventStreamImpl = html$._ElementEventStreamImpl$();
  dart.addTypeTests(html$._ElementEventStreamImpl, _is__ElementEventStreamImpl_default);
  const _targetList = Symbol('_targetList');
  const _is__ElementListEventStreamImpl_default = Symbol('_is__ElementListEventStreamImpl_default');
  html$._ElementListEventStreamImpl$ = dart.generic(T => {
    let TToT = () => (TToT = dart.constFn(dart.fnType(T, [T])))();
    let TTobool = () => (TTobool = dart.constFn(dart.fnType(core.bool, [T])))();
    let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
    let _StreamPoolOfT = () => (_StreamPoolOfT = dart.constFn(html$._StreamPool$(T)))();
    let _EventStreamOfT = () => (_EventStreamOfT = dart.constFn(html$._EventStream$(T)))();
    let ElementStreamOfT = () => (ElementStreamOfT = dart.constFn(html$.ElementStream$(T)))();
    class _ElementListEventStreamImpl extends async.Stream$(T) {
      matches(selector) {
        return StreamOfT()._check(this.where(dart.fn(event => html$._matchesWithAncestors(event, selector), TTobool())).map(T, dart.fn(e => {
          e[_selector] = selector;
          return e;
        }, TToT())));
      }
      listen(onData, opts) {
        let onError = opts && 'onError' in opts ? opts.onError : null;
        let onDone = opts && 'onDone' in opts ? opts.onDone : null;
        let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
        let pool = new (_StreamPoolOfT()).broadcast();
        for (let target of this[_targetList]) {
          pool.add(new (_EventStreamOfT()).new(target, this[_eventType], this[_useCapture]));
        }
        return pool.stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
      }
      capture(onData) {
        let pool = new (_StreamPoolOfT()).broadcast();
        for (let target of this[_targetList]) {
          pool.add(new (_EventStreamOfT()).new(target, this[_eventType], true));
        }
        return pool.stream.listen(onData);
      }
      asBroadcastStream(opts) {
        let onListen = opts && 'onListen' in opts ? opts.onListen : null;
        let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
        return this;
      }
      get isBroadcast() {
        return true;
      }
    }
    (_ElementListEventStreamImpl.new = function(targetList, eventType, useCapture) {
      this[_targetList] = targetList;
      this[_eventType] = eventType;
      this[_useCapture] = useCapture;
      _ElementListEventStreamImpl.__proto__.new.call(this);
    }).prototype = _ElementListEventStreamImpl.prototype;
    dart.addTypeTests(_ElementListEventStreamImpl);
    _ElementListEventStreamImpl.prototype[_is__ElementListEventStreamImpl_default] = true;
    _ElementListEventStreamImpl[dart.implements] = () => [ElementStreamOfT()];
    dart.setMethodSignature(_ElementListEventStreamImpl, () => ({
      __proto__: dart.getMethods(_ElementListEventStreamImpl.__proto__),
      matches: dart.fnType(async.Stream$(T), [core.String]),
      listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
      capture: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])])
    }));
    dart.setFieldSignature(_ElementListEventStreamImpl, () => ({
      __proto__: dart.getFields(_ElementListEventStreamImpl.__proto__),
      [_targetList]: dart.finalFieldType(IterableOfElement()),
      [_useCapture]: dart.finalFieldType(core.bool),
      [_eventType]: dart.finalFieldType(core.String)
    }));
    return _ElementListEventStreamImpl;
  });
  html$._ElementListEventStreamImpl = html$._ElementListEventStreamImpl$();
  dart.addTypeTests(html$._ElementListEventStreamImpl, _is__ElementListEventStreamImpl_default);
  const _onData$1 = Symbol('_onData');
  const _pauseCount$ = Symbol('_pauseCount');
  const _tryResume = Symbol('_tryResume');
  const _canceled = Symbol('_canceled');
  const _unlisten = Symbol('_unlisten');
  const _is__EventStreamSubscription_default = Symbol('_is__EventStreamSubscription_default');
  html$._EventStreamSubscription$ = dart.generic(T => {
    class _EventStreamSubscription extends async.StreamSubscription$(T) {
      cancel() {
        if (dart.test(this[_canceled])) return null;
        this[_unlisten]();
        this[_target$0] = null;
        this[_onData$1] = null;
        return null;
      }
      get [_canceled]() {
        return this[_target$0] == null;
      }
      onData(handleData) {
        if (dart.test(this[_canceled])) {
          dart.throw(new core.StateError.new("Subscription has been canceled."));
        }
        this[_unlisten]();
        this[_onData$1] = html$._wrapZone(html$.Event, EventTovoid()._check(handleData));
        this[_tryResume]();
      }
      onError(handleError) {}
      onDone(handleDone) {}
      pause(resumeSignal) {
        if (resumeSignal === void 0) resumeSignal = null;
        if (dart.test(this[_canceled])) return;
        this[_pauseCount$] = dart.notNull(this[_pauseCount$]) + 1;
        this[_unlisten]();
        if (resumeSignal != null) {
          resumeSignal.whenComplete(dart.bind(this, 'resume'));
        }
      }
      get isPaused() {
        return dart.notNull(this[_pauseCount$]) > 0;
      }
      resume() {
        if (dart.test(this[_canceled]) || !dart.test(this.isPaused)) return;
        this[_pauseCount$] = dart.notNull(this[_pauseCount$]) - 1;
        this[_tryResume]();
      }
      [_tryResume]() {
        if (this[_onData$1] != null && !dart.test(this.isPaused)) {
          this[_target$0][$addEventListener](this[_eventType], this[_onData$1], this[_useCapture]);
        }
      }
      [_unlisten]() {
        if (this[_onData$1] != null) {
          this[_target$0][$removeEventListener](this[_eventType], this[_onData$1], this[_useCapture]);
        }
      }
      asFuture(E, futureValue) {
        if (futureValue === void 0) futureValue = null;
        let completer = async.Completer$(E).new();
        return completer.future;
      }
    }
    (_EventStreamSubscription.new = function(target, eventType, onData, useCapture) {
      this[_pauseCount$] = 0;
      this[_target$0] = target;
      this[_eventType] = eventType;
      this[_useCapture] = useCapture;
      this[_onData$1] = onData == null ? null : html$._wrapZone(html$.Event, dart.fn(e => dart.dcall(onData, [e]), EventTodynamic()));
      this[_tryResume]();
    }).prototype = _EventStreamSubscription.prototype;
    dart.addTypeTests(_EventStreamSubscription);
    _EventStreamSubscription.prototype[_is__EventStreamSubscription_default] = true;
    dart.setMethodSignature(_EventStreamSubscription, () => ({
      __proto__: dart.getMethods(_EventStreamSubscription.__proto__),
      cancel: dart.fnType(async.Future, []),
      onData: dart.fnType(dart.void, [dart.fnType(dart.void, [T])]),
      onError: dart.fnType(dart.void, [core.Function]),
      onDone: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
      pause: dart.fnType(dart.void, [], [async.Future]),
      resume: dart.fnType(dart.void, []),
      [_tryResume]: dart.fnType(dart.void, []),
      [_unlisten]: dart.fnType(dart.void, []),
      asFuture: dart.gFnType(E => [async.Future$(E), [], [E]])
    }));
    dart.setGetterSignature(_EventStreamSubscription, () => ({
      __proto__: dart.getGetters(_EventStreamSubscription.__proto__),
      [_canceled]: core.bool,
      isPaused: core.bool
    }));
    dart.setFieldSignature(_EventStreamSubscription, () => ({
      __proto__: dart.getFields(_EventStreamSubscription.__proto__),
      [_pauseCount$]: dart.fieldType(core.int),
      [_target$0]: dart.fieldType(html$.EventTarget),
      [_eventType]: dart.finalFieldType(core.String),
      [_onData$1]: dart.fieldType(EventTodynamic()),
      [_useCapture]: dart.finalFieldType(core.bool)
    }));
    return _EventStreamSubscription;
  });
  html$._EventStreamSubscription = html$._EventStreamSubscription$();
  dart.addTypeTests(html$._EventStreamSubscription, _is__EventStreamSubscription_default);
  const _is_CustomStream_default = Symbol('_is_CustomStream_default');
  html$.CustomStream$ = dart.generic(T => {
    let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
    class CustomStream extends core.Object {}
    (CustomStream.new = function() {
    }).prototype = CustomStream.prototype;
    CustomStream.prototype[dart.isStream] = true;
    dart.addTypeTests(CustomStream);
    CustomStream.prototype[_is_CustomStream_default] = true;
    CustomStream[dart.implements] = () => [StreamOfT()];
    return CustomStream;
  });
  html$.CustomStream = html$.CustomStream$();
  dart.addTypeTests(html$.CustomStream, _is_CustomStream_default);
  const _streamController = Symbol('_streamController');
  const _type$1 = Symbol('_type');
  const _is__CustomEventStreamImpl_default = Symbol('_is__CustomEventStreamImpl_default');
  html$._CustomEventStreamImpl$ = dart.generic(T => {
    let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
    let CustomStreamOfT = () => (CustomStreamOfT = dart.constFn(html$.CustomStream$(T)))();
    class _CustomEventStreamImpl extends async.Stream$(T) {
      listen(onData, opts) {
        let onError = opts && 'onError' in opts ? opts.onError : null;
        let onDone = opts && 'onDone' in opts ? opts.onDone : null;
        let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
        return this[_streamController].stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
      }
      asBroadcastStream(opts) {
        let onListen = opts && 'onListen' in opts ? opts.onListen : null;
        let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
        return this[_streamController].stream;
      }
      get isBroadcast() {
        return true;
      }
      add(event) {
        T._check(event);
        if (event.type == this[_type$1]) this[_streamController].add(event);
      }
    }
    (_CustomEventStreamImpl.new = function(type) {
      this[_streamController] = null;
      this[_type$1] = null;
      _CustomEventStreamImpl.__proto__.new.call(this);
      this[_type$1] = type;
      this[_streamController] = StreamControllerOfT().broadcast({sync: true});
    }).prototype = _CustomEventStreamImpl.prototype;
    dart.addTypeTests(_CustomEventStreamImpl);
    _CustomEventStreamImpl.prototype[_is__CustomEventStreamImpl_default] = true;
    _CustomEventStreamImpl[dart.implements] = () => [CustomStreamOfT()];
    dart.setMethodSignature(_CustomEventStreamImpl, () => ({
      __proto__: dart.getMethods(_CustomEventStreamImpl.__proto__),
      listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
      add: dart.fnType(dart.void, [core.Object])
    }));
    dart.setFieldSignature(_CustomEventStreamImpl, () => ({
      __proto__: dart.getFields(_CustomEventStreamImpl.__proto__),
      [_streamController]: dart.fieldType(StreamControllerOfT()),
      [_type$1]: dart.fieldType(core.String)
    }));
    return _CustomEventStreamImpl;
  });
  html$._CustomEventStreamImpl = html$._CustomEventStreamImpl$();
  dart.addTypeTests(html$._CustomEventStreamImpl, _is__CustomEventStreamImpl_default);
  const _parent$ = Symbol('_parent');
  const _shadowAltKey = Symbol('_shadowAltKey');
  const _shadowCharCode = Symbol('_shadowCharCode');
  const _shadowKeyCode = Symbol('_shadowKeyCode');
  const _currentTarget = Symbol('_currentTarget');
  const _realAltKey = Symbol('_realAltKey');
  const _realCharCode = Symbol('_realCharCode');
  const _realKeyCode = Symbol('_realKeyCode');
  const _shadowKeyIdentifier = Symbol('_shadowKeyIdentifier');
  const _keyIdentifier = Symbol('_keyIdentifier');
  html$.KeyEvent = class KeyEvent extends html$._WrappedEvent {
    get keyCode() {
      return this[_shadowKeyCode];
    }
    get charCode() {
      return this.type === "keypress" ? this[_shadowCharCode] : 0;
    }
    get altKey() {
      return this[_shadowAltKey];
    }
    get which() {
      return this.keyCode;
    }
    get [_realKeyCode]() {
      return this[_parent$].keyCode;
    }
    get [_realCharCode]() {
      return this[_parent$].charCode;
    }
    get [_realAltKey]() {
      return this[_parent$].altKey;
    }
    get sourceCapabilities() {
      return this[sourceCapabilities$];
    }
    set sourceCapabilities(value) {
      super.sourceCapabilities = value;
    }
    static _makeRecord() {
      let interceptor = _foreign_helper.JS_INTERCEPTOR_CONSTANT(dart.wrapType(html$.KeyboardEvent));
      return _js_helper.makeLeafDispatchRecord(interceptor);
    }
    static new(type, opts) {
      let view = opts && 'view' in opts ? opts.view : null;
      let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
      let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
      let keyCode = opts && 'keyCode' in opts ? opts.keyCode : 0;
      let charCode = opts && 'charCode' in opts ? opts.charCode : 0;
      let location = opts && 'location' in opts ? opts.location : 1;
      let ctrlKey = opts && 'ctrlKey' in opts ? opts.ctrlKey : false;
      let altKey = opts && 'altKey' in opts ? opts.altKey : false;
      let shiftKey = opts && 'shiftKey' in opts ? opts.shiftKey : false;
      let metaKey = opts && 'metaKey' in opts ? opts.metaKey : false;
      let currentTarget = opts && 'currentTarget' in opts ? opts.currentTarget : null;
      if (view == null) {
        view = html$.window;
      }
      let eventObj = null;
      eventObj = html$.Event.eventType("KeyboardEvent", type, {canBubble: canBubble, cancelable: cancelable});
      Object.defineProperty(eventObj, 'keyCode', {
        get: function() {
          return this.keyCodeVal;
        }
      });
      Object.defineProperty(eventObj, 'which', {
        get: function() {
          return this.keyCodeVal;
        }
      });
      Object.defineProperty(eventObj, 'charCode', {
        get: function() {
          return this.charCodeVal;
        }
      });
      let keyIdentifier = html$.KeyEvent._convertToHexString(charCode, keyCode);
      dart.dsend(eventObj, _initKeyboardEvent, [type, canBubble, cancelable, view, keyIdentifier, location, ctrlKey, altKey, shiftKey, metaKey]);
      eventObj.keyCodeVal = keyCode;
      eventObj.charCodeVal = charCode;
      _interceptors.setDispatchProperty(eventObj, html$.KeyEvent._keyboardEventDispatchRecord);
      let keyEvent = new html$.KeyEvent.wrap(html$.KeyboardEvent._check(eventObj));
      if (keyEvent[_currentTarget] == null) {
        keyEvent[_currentTarget] = currentTarget == null ? html$.window : currentTarget;
      }
      return keyEvent;
    }
    static get canUseDispatchEvent() {
      return typeof document.body.dispatchEvent == "function" && document.body.dispatchEvent.length > 0;
    }
    get currentTarget() {
      return this[_currentTarget];
    }
    static _convertToHexString(charCode, keyCode) {
      if (charCode !== -1) {
        let hex = charCode[$toRadixString](16);
        let sb = new core.StringBuffer.new("U+");
        for (let i = 0; i < 4 - hex.length; i++)
          sb.write("0");
        sb.write(hex);
        return sb.toString();
      } else {
        return html$.KeyCode._convertKeyCodeToKeyName(keyCode);
      }
    }
    get code() {
      return this[_parent$].code;
    }
    get ctrlKey() {
      return this[_parent$].ctrlKey;
    }
    get detail() {
      return this[_parent$].detail;
    }
    get isComposing() {
      return this[_parent$].isComposing;
    }
    get key() {
      return this[_parent$].key;
    }
    get location() {
      return this[_parent$].location;
    }
    get metaKey() {
      return this[_parent$].metaKey;
    }
    get shiftKey() {
      return this[_parent$].shiftKey;
    }
    get view() {
      return html$.Window._check(this[_parent$][$view]);
    }
    [_initUIEvent](type, canBubble, cancelable, view, detail) {
      dart.throw(new core.UnsupportedError.new("Cannot initialize a UI Event from a KeyEvent."));
    }
    get [_shadowKeyIdentifier]() {
      return this[_parent$].keyIdentifier;
    }
    get [_charCode]() {
      return this.charCode;
    }
    get [_keyCode]() {
      return this.keyCode;
    }
    get [_which]() {
      return this.which;
    }
    get [_keyIdentifier]() {
      dart.throw(new core.UnsupportedError.new("keyIdentifier is unsupported."));
    }
    [_initKeyboardEvent](type, canBubble, cancelable, view, keyIdentifier, location, ctrlKey, altKey, shiftKey, metaKey) {
      dart.throw(new core.UnsupportedError.new("Cannot initialize a KeyboardEvent from a KeyEvent."));
    }
    getModifierState(keyArgument) {
      return dart.throw(new core.UnimplementedError.new());
    }
    get repeat() {
      return dart.throw(new core.UnimplementedError.new());
    }
    get isComposed() {
      return dart.throw(new core.UnimplementedError.new());
    }
    get [_get_view]() {
      return dart.throw(new core.UnimplementedError.new());
    }
  };
  (html$.KeyEvent.wrap = function(parent) {
    this[_parent$] = null;
    this[_shadowAltKey] = null;
    this[_shadowCharCode] = null;
    this[_shadowKeyCode] = null;
    this[_currentTarget] = null;
    this[sourceCapabilities$] = null;
    html$.KeyEvent.__proto__.new.call(this, parent);
    this[_parent$] = parent;
    this[_shadowAltKey] = this[_realAltKey];
    this[_shadowCharCode] = this[_realCharCode];
    this[_shadowKeyCode] = this[_realKeyCode];
    this[_currentTarget] = this[_parent$][$currentTarget];
  }).prototype = html$.KeyEvent.prototype;
  dart.addTypeTests(html$.KeyEvent);
  const sourceCapabilities$ = Symbol("KeyEvent.sourceCapabilities");
  html$.KeyEvent[dart.implements] = () => [html$.KeyboardEvent];
  dart.setMethodSignature(html$.KeyEvent, () => ({
    __proto__: dart.getMethods(html$.KeyEvent.__proto__),
    [_initUIEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.int]),
    [_initKeyboardEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.String, core.int, core.bool, core.bool, core.bool, core.bool]),
    getModifierState: dart.fnType(core.bool, [core.String]),
    [$getModifierState]: dart.fnType(core.bool, [core.String])
  }));
  dart.setGetterSignature(html$.KeyEvent, () => ({
    __proto__: dart.getGetters(html$.KeyEvent.__proto__),
    keyCode: core.int,
    [$keyCode]: core.int,
    charCode: core.int,
    [$charCode]: core.int,
    altKey: core.bool,
    [$altKey]: core.bool,
    which: core.int,
    [$which]: core.int,
    [_realKeyCode]: core.int,
    [_realCharCode]: core.int,
    [_realAltKey]: core.bool,
    code: core.String,
    [$code]: core.String,
    ctrlKey: core.bool,
    [$ctrlKey]: core.bool,
    detail: core.int,
    [$detail]: core.int,
    isComposing: core.bool,
    [$isComposing]: core.bool,
    key: core.String,
    [$key]: core.String,
    location: core.int,
    [$location]: core.int,
    metaKey: core.bool,
    [$metaKey]: core.bool,
    shiftKey: core.bool,
    [$shiftKey]: core.bool,
    view: html$.Window,
    [$view]: html$.Window,
    [_shadowKeyIdentifier]: core.String,
    [_charCode]: core.int,
    [_keyCode]: core.int,
    [_which]: core.int,
    [_keyIdentifier]: core.String,
    repeat: core.bool,
    [$repeat]: core.bool,
    isComposed: core.bool,
    [_get_view]: dart.dynamic
  }));
  dart.setFieldSignature(html$.KeyEvent, () => ({
    __proto__: dart.getFields(html$.KeyEvent.__proto__),
    [_parent$]: dart.fieldType(html$.KeyboardEvent),
    [_shadowAltKey]: dart.fieldType(core.bool),
    [_shadowCharCode]: dart.fieldType(core.int),
    [_shadowKeyCode]: dart.fieldType(core.int),
    [_currentTarget]: dart.fieldType(html$.EventTarget),
    sourceCapabilities: dart.finalFieldType(html$.InputDeviceCapabilities)
  }));
  dart.defineExtensionMethods(html$.KeyEvent, ['getModifierState']);
  dart.defineExtensionAccessors(html$.KeyEvent, [
    'keyCode',
    'charCode',
    'altKey',
    'which',
    'currentTarget',
    'code',
    'ctrlKey',
    'detail',
    'isComposing',
    'key',
    'location',
    'metaKey',
    'shiftKey',
    'view',
    'repeat',
    'sourceCapabilities'
  ]);
  dart.defineLazy(html$.KeyEvent, {
    /*html$.KeyEvent._keyboardEventDispatchRecord*/get _keyboardEventDispatchRecord() {
      return html$.KeyEvent._makeRecord();
    },
    /*html$.KeyEvent.keyDownEvent*/get keyDownEvent() {
      return new html$._KeyboardEventHandler.new("keydown");
    },
    set keyDownEvent(_) {},
    /*html$.KeyEvent.keyUpEvent*/get keyUpEvent() {
      return new html$._KeyboardEventHandler.new("keyup");
    },
    set keyUpEvent(_) {},
    /*html$.KeyEvent.keyPressEvent*/get keyPressEvent() {
      return new html$._KeyboardEventHandler.new("keypress");
    },
    set keyPressEvent(_) {}
  });
  html$._CustomKeyEventStreamImpl = class _CustomKeyEventStreamImpl extends html$._CustomEventStreamImpl$(html$.KeyEvent) {
    add(event) {
      html$.KeyEvent._check(event);
      if (event.type == this[_type$1]) {
        event.currentTarget.dispatchEvent(event[_parent$]);
        this[_streamController].add(event);
      }
    }
  };
  (html$._CustomKeyEventStreamImpl.new = function(type) {
    html$._CustomKeyEventStreamImpl.__proto__.new.call(this, type);
  }).prototype = html$._CustomKeyEventStreamImpl.prototype;
  dart.addTypeTests(html$._CustomKeyEventStreamImpl);
  html$._CustomKeyEventStreamImpl[dart.implements] = () => [CustomStreamOfKeyEvent()];
  dart.setMethodSignature(html$._CustomKeyEventStreamImpl, () => ({
    __proto__: dart.getMethods(html$._CustomKeyEventStreamImpl.__proto__),
    add: dart.fnType(dart.void, [core.Object])
  }));
  const _controller$0 = Symbol('_controller');
  const _subscriptions = Symbol('_subscriptions');
  const _is__StreamPool_default = Symbol('_is__StreamPool_default');
  html$._StreamPool$ = dart.generic(T => {
    let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
    let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
    let LinkedMapOfStreamOfT$StreamSubscriptionOfT = () => (LinkedMapOfStreamOfT$StreamSubscriptionOfT = dart.constFn(_js_helper.LinkedMap$(StreamOfT(), StreamSubscriptionOfT())))();
    let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
    let MapOfStreamOfT$StreamSubscriptionOfT = () => (MapOfStreamOfT$StreamSubscriptionOfT = dart.constFn(core.Map$(StreamOfT(), StreamSubscriptionOfT())))();
    class _StreamPool extends core.Object {
      get stream() {
        return this[_controller$0].stream;
      }
      add(stream) {
        StreamOfT()._check(stream);
        if (dart.test(this[_subscriptions][$containsKey](stream))) return;
        this[_subscriptions][$_set](stream, stream.listen(dart.bind(this[_controller$0], 'add'), {onError: dart.bind(this[_controller$0], 'addError'), onDone: dart.fn(() => this.remove(stream), VoidTovoid())}));
      }
      remove(stream) {
        StreamOfT()._check(stream);
        let subscription = this[_subscriptions][$remove](stream);
        if (subscription != null) subscription.cancel();
      }
      close() {
        for (let subscription of this[_subscriptions][$values]) {
          subscription.cancel();
        }
        this[_subscriptions][$clear]();
        this[_controller$0].close();
      }
    }
    (_StreamPool.broadcast = function() {
      this[_controller$0] = null;
      this[_subscriptions] = new (LinkedMapOfStreamOfT$StreamSubscriptionOfT()).new();
      this[_controller$0] = StreamControllerOfT().broadcast({sync: true, onCancel: dart.bind(this, 'close')});
    }).prototype = _StreamPool.prototype;
    dart.addTypeTests(_StreamPool);
    _StreamPool.prototype[_is__StreamPool_default] = true;
    dart.setMethodSignature(_StreamPool, () => ({
      __proto__: dart.getMethods(_StreamPool.__proto__),
      add: dart.fnType(dart.void, [core.Object]),
      remove: dart.fnType(dart.void, [core.Object]),
      close: dart.fnType(dart.void, [])
    }));
    dart.setGetterSignature(_StreamPool, () => ({
      __proto__: dart.getGetters(_StreamPool.__proto__),
      stream: async.Stream$(T)
    }));
    dart.setFieldSignature(_StreamPool, () => ({
      __proto__: dart.getFields(_StreamPool.__proto__),
      [_controller$0]: dart.fieldType(StreamControllerOfT()),
      [_subscriptions]: dart.fieldType(MapOfStreamOfT$StreamSubscriptionOfT())
    }));
    return _StreamPool;
  });
  html$._StreamPool = html$._StreamPool$();
  dart.addTypeTests(html$._StreamPool, _is__StreamPool_default);
  const _eventTypeGetter = Symbol('_eventTypeGetter');
  const _is__CustomEventStreamProvider_default = Symbol('_is__CustomEventStreamProvider_default');
  html$._CustomEventStreamProvider$ = dart.generic(T => {
    let _EventStreamOfT = () => (_EventStreamOfT = dart.constFn(html$._EventStream$(T)))();
    let _ElementEventStreamImplOfT = () => (_ElementEventStreamImplOfT = dart.constFn(html$._ElementEventStreamImpl$(T)))();
    let _ElementListEventStreamImplOfT = () => (_ElementListEventStreamImplOfT = dart.constFn(html$._ElementListEventStreamImpl$(T)))();
    let EventStreamProviderOfT = () => (EventStreamProviderOfT = dart.constFn(html$.EventStreamProvider$(T)))();
    class _CustomEventStreamProvider extends core.Object {
      forTarget(e, opts) {
        let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
        return new (_EventStreamOfT()).new(e, core.String._check(dart.dcall(this[_eventTypeGetter], [e])), useCapture);
      }
      forElement(e, opts) {
        let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
        return new (_ElementEventStreamImplOfT()).new(e, dart.dcall(this[_eventTypeGetter], [e]), useCapture);
      }
      [_forElementList](e, opts) {
        let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
        return new (_ElementListEventStreamImplOfT()).new(e, core.String._check(dart.dcall(this[_eventTypeGetter], [e])), useCapture);
      }
      getEventType(target) {
        return core.String._check(dart.dcall(this[_eventTypeGetter], [target]));
      }
      get [_eventType]() {
        return dart.throw(new core.UnsupportedError.new("Access type through getEventType method."));
      }
    }
    (_CustomEventStreamProvider.new = function(eventTypeGetter) {
      this[_eventTypeGetter] = eventTypeGetter;
    }).prototype = _CustomEventStreamProvider.prototype;
    dart.addTypeTests(_CustomEventStreamProvider);
    _CustomEventStreamProvider.prototype[_is__CustomEventStreamProvider_default] = true;
    _CustomEventStreamProvider[dart.implements] = () => [EventStreamProviderOfT()];
    dart.setMethodSignature(_CustomEventStreamProvider, () => ({
      __proto__: dart.getMethods(_CustomEventStreamProvider.__proto__),
      forTarget: dart.fnType(async.Stream$(T), [html$.EventTarget], {useCapture: core.bool}),
      forElement: dart.fnType(html$.ElementStream$(T), [html$.Element], {useCapture: core.bool}),
      [_forElementList]: dart.fnType(html$.ElementStream$(T), [html$.ElementList$(html$.Element)], {useCapture: core.bool}),
      getEventType: dart.fnType(core.String, [html$.EventTarget])
    }));
    dart.setGetterSignature(_CustomEventStreamProvider, () => ({
      __proto__: dart.getGetters(_CustomEventStreamProvider.__proto__),
      [_eventType]: core.String
    }));
    dart.setFieldSignature(_CustomEventStreamProvider, () => ({
      __proto__: dart.getFields(_CustomEventStreamProvider.__proto__),
      [_eventTypeGetter]: dart.finalFieldType(dart.dynamic)
    }));
    return _CustomEventStreamProvider;
  });
  html$._CustomEventStreamProvider = html$._CustomEventStreamProvider$();
  dart.addTypeTests(html$._CustomEventStreamProvider, _is__CustomEventStreamProvider_default);
  html$._Html5NodeValidator = class _Html5NodeValidator extends core.Object {
    allowsElement(element) {
      return html$._Html5NodeValidator._allowedElements.contains(html$.Element._safeTagName(element));
    }
    allowsAttribute(element, attributeName, value) {
      let tagName = html$.Element._safeTagName(element);
      let validator = html$._Html5NodeValidator._attributeValidators[$_get](dart.str(tagName) + "::" + dart.str(attributeName));
      if (validator == null) {
        validator = html$._Html5NodeValidator._attributeValidators[$_get]("*::" + dart.str(attributeName));
      }
      if (validator == null) {
        return false;
      }
      return core.bool._check(dart.dcall(validator, [element, attributeName, value, this]));
    }
    static _standardAttributeValidator(element, attributeName, value, context) {
      return true;
    }
    static _uriAttributeValidator(element, attributeName, value, context) {
      return context.uriPolicy.allowsUri(value);
    }
  };
  (html$._Html5NodeValidator.new = function(opts) {
    let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
    this.uriPolicy = uriPolicy != null ? uriPolicy : html$.UriPolicy.new();
    if (dart.test(html$._Html5NodeValidator._attributeValidators[$isEmpty])) {
      for (let attr of html$._Html5NodeValidator._standardAttributes) {
        html$._Html5NodeValidator._attributeValidators[$_set](attr, dart.fn(html$._Html5NodeValidator._standardAttributeValidator, ElementAndStringAndString__Tobool()));
      }
      for (let attr of html$._Html5NodeValidator._uriAttributes) {
        html$._Html5NodeValidator._attributeValidators[$_set](attr, dart.fn(html$._Html5NodeValidator._uriAttributeValidator, ElementAndStringAndString__Tobool()));
      }
    }
  }).prototype = html$._Html5NodeValidator.prototype;
  dart.addTypeTests(html$._Html5NodeValidator);
  html$._Html5NodeValidator[dart.implements] = () => [html$.NodeValidator];
  dart.setMethodSignature(html$._Html5NodeValidator, () => ({
    __proto__: dart.getMethods(html$._Html5NodeValidator.__proto__),
    allowsElement: dart.fnType(core.bool, [html$.Element]),
    allowsAttribute: dart.fnType(core.bool, [html$.Element, core.String, core.String])
  }));
  dart.setFieldSignature(html$._Html5NodeValidator, () => ({
    __proto__: dart.getFields(html$._Html5NodeValidator.__proto__),
    uriPolicy: dart.finalFieldType(html$.UriPolicy)
  }));
  dart.defineLazy(html$._Html5NodeValidator, {
    /*html$._Html5NodeValidator._allowedElements*/get _allowedElements() {
      return SetOfString().from(["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"]);
    },
    /*html$._Html5NodeValidator._standardAttributes*/get _standardAttributes() {
      return dart.constList(["*::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::autofocus", "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"], core.String);
    },
    /*html$._Html5NodeValidator._uriAttributes*/get _uriAttributes() {
      return dart.constList(["A::href", "AREA::href", "BLOCKQUOTE::cite", "BODY::background", "COMMAND::icon", "DEL::cite", "FORM::action", "IMG::src", "INPUT::src", "INS::cite", "Q::cite", "VIDEO::poster"], core.String);
    },
    /*html$._Html5NodeValidator._attributeValidators*/get _attributeValidators() {
      return new (IdentityMapOfString$Function()).new();
    }
  });
  html$.KeyCode = class KeyCode extends core.Object {
    static isCharacterKey(keyCode) {
      if (dart.notNull(keyCode) >= 48 && dart.notNull(keyCode) <= 57 || dart.notNull(keyCode) >= 96 && dart.notNull(keyCode) <= 106 || dart.notNull(keyCode) >= 65 && dart.notNull(keyCode) <= 90) {
        return true;
      }
      if (dart.test(html_common.Device.isWebKit) && keyCode === 0) {
        return true;
      }
      return keyCode === 32 || keyCode === 63 || keyCode === 107 || keyCode === 109 || keyCode === 110 || keyCode === 111 || keyCode === 186 || keyCode === 59 || keyCode === 189 || keyCode === 187 || keyCode === 61 || keyCode === 188 || keyCode === 190 || keyCode === 191 || keyCode === 192 || keyCode === 222 || keyCode === 219 || keyCode === 220 || keyCode === 221;
    }
    static _convertKeyCodeToKeyName(keyCode) {
      switch (keyCode) {
        case html$.KeyCode.ALT:
        {
          return html$._KeyName.ALT;
        }
        case html$.KeyCode.BACKSPACE:
        {
          return html$._KeyName.BACKSPACE;
        }
        case html$.KeyCode.CAPS_LOCK:
        {
          return html$._KeyName.CAPS_LOCK;
        }
        case html$.KeyCode.CTRL:
        {
          return html$._KeyName.CONTROL;
        }
        case html$.KeyCode.DELETE:
        {
          return html$._KeyName.DEL;
        }
        case html$.KeyCode.DOWN:
        {
          return html$._KeyName.DOWN;
        }
        case html$.KeyCode.END:
        {
          return html$._KeyName.END;
        }
        case html$.KeyCode.ENTER:
        {
          return html$._KeyName.ENTER;
        }
        case html$.KeyCode.ESC:
        {
          return html$._KeyName.ESC;
        }
        case html$.KeyCode.F1:
        {
          return html$._KeyName.F1;
        }
        case html$.KeyCode.F2:
        {
          return html$._KeyName.F2;
        }
        case html$.KeyCode.F3:
        {
          return html$._KeyName.F3;
        }
        case html$.KeyCode.F4:
        {
          return html$._KeyName.F4;
        }
        case html$.KeyCode.F5:
        {
          return html$._KeyName.F5;
        }
        case html$.KeyCode.F6:
        {
          return html$._KeyName.F6;
        }
        case html$.KeyCode.F7:
        {
          return html$._KeyName.F7;
        }
        case html$.KeyCode.F8:
        {
          return html$._KeyName.F8;
        }
        case html$.KeyCode.F9:
        {
          return html$._KeyName.F9;
        }
        case html$.KeyCode.F10:
        {
          return html$._KeyName.F10;
        }
        case html$.KeyCode.F11:
        {
          return html$._KeyName.F11;
        }
        case html$.KeyCode.F12:
        {
          return html$._KeyName.F12;
        }
        case html$.KeyCode.HOME:
        {
          return html$._KeyName.HOME;
        }
        case html$.KeyCode.INSERT:
        {
          return html$._KeyName.INSERT;
        }
        case html$.KeyCode.LEFT:
        {
          return html$._KeyName.LEFT;
        }
        case html$.KeyCode.META:
        {
          return html$._KeyName.META;
        }
        case html$.KeyCode.NUMLOCK:
        {
          return html$._KeyName.NUM_LOCK;
        }
        case html$.KeyCode.PAGE_DOWN:
        {
          return html$._KeyName.PAGE_DOWN;
        }
        case html$.KeyCode.PAGE_UP:
        {
          return html$._KeyName.PAGE_UP;
        }
        case html$.KeyCode.PAUSE:
        {
          return html$._KeyName.PAUSE;
        }
        case html$.KeyCode.PRINT_SCREEN:
        {
          return html$._KeyName.PRINT_SCREEN;
        }
        case html$.KeyCode.RIGHT:
        {
          return html$._KeyName.RIGHT;
        }
        case html$.KeyCode.SCROLL_LOCK:
        {
          return html$._KeyName.SCROLL;
        }
        case html$.KeyCode.SHIFT:
        {
          return html$._KeyName.SHIFT;
        }
        case html$.KeyCode.SPACE:
        {
          return html$._KeyName.SPACEBAR;
        }
        case html$.KeyCode.TAB:
        {
          return html$._KeyName.TAB;
        }
        case html$.KeyCode.UP:
        {
          return html$._KeyName.UP;
        }
        case html$.KeyCode.WIN_IME:
        case html$.KeyCode.WIN_KEY:
        case html$.KeyCode.WIN_KEY_LEFT:
        case html$.KeyCode.WIN_KEY_RIGHT:
        {
          return html$._KeyName.WIN;
        }
        default:
        {
          return html$._KeyName.UNIDENTIFIED;
        }
      }
      return html$._KeyName.UNIDENTIFIED;
    }
  };
  (html$.KeyCode.new = function() {
  }).prototype = html$.KeyCode.prototype;
  dart.addTypeTests(html$.KeyCode);
  dart.defineLazy(html$.KeyCode, {
    /*html$.KeyCode.WIN_KEY_FF_LINUX*/get WIN_KEY_FF_LINUX() {
      return 0;
    },
    /*html$.KeyCode.MAC_ENTER*/get MAC_ENTER() {
      return 3;
    },
    /*html$.KeyCode.BACKSPACE*/get BACKSPACE() {
      return 8;
    },
    /*html$.KeyCode.TAB*/get TAB() {
      return 9;
    },
    /*html$.KeyCode.NUM_CENTER*/get NUM_CENTER() {
      return 12;
    },
    /*html$.KeyCode.ENTER*/get ENTER() {
      return 13;
    },
    /*html$.KeyCode.SHIFT*/get SHIFT() {
      return 16;
    },
    /*html$.KeyCode.CTRL*/get CTRL() {
      return 17;
    },
    /*html$.KeyCode.ALT*/get ALT() {
      return 18;
    },
    /*html$.KeyCode.PAUSE*/get PAUSE() {
      return 19;
    },
    /*html$.KeyCode.CAPS_LOCK*/get CAPS_LOCK() {
      return 20;
    },
    /*html$.KeyCode.ESC*/get ESC() {
      return 27;
    },
    /*html$.KeyCode.SPACE*/get SPACE() {
      return 32;
    },
    /*html$.KeyCode.PAGE_UP*/get PAGE_UP() {
      return 33;
    },
    /*html$.KeyCode.PAGE_DOWN*/get PAGE_DOWN() {
      return 34;
    },
    /*html$.KeyCode.END*/get END() {
      return 35;
    },
    /*html$.KeyCode.HOME*/get HOME() {
      return 36;
    },
    /*html$.KeyCode.LEFT*/get LEFT() {
      return 37;
    },
    /*html$.KeyCode.UP*/get UP() {
      return 38;
    },
    /*html$.KeyCode.RIGHT*/get RIGHT() {
      return 39;
    },
    /*html$.KeyCode.DOWN*/get DOWN() {
      return 40;
    },
    /*html$.KeyCode.NUM_NORTH_EAST*/get NUM_NORTH_EAST() {
      return 33;
    },
    /*html$.KeyCode.NUM_SOUTH_EAST*/get NUM_SOUTH_EAST() {
      return 34;
    },
    /*html$.KeyCode.NUM_SOUTH_WEST*/get NUM_SOUTH_WEST() {
      return 35;
    },
    /*html$.KeyCode.NUM_NORTH_WEST*/get NUM_NORTH_WEST() {
      return 36;
    },
    /*html$.KeyCode.NUM_WEST*/get NUM_WEST() {
      return 37;
    },
    /*html$.KeyCode.NUM_NORTH*/get NUM_NORTH() {
      return 38;
    },
    /*html$.KeyCode.NUM_EAST*/get NUM_EAST() {
      return 39;
    },
    /*html$.KeyCode.NUM_SOUTH*/get NUM_SOUTH() {
      return 40;
    },
    /*html$.KeyCode.PRINT_SCREEN*/get PRINT_SCREEN() {
      return 44;
    },
    /*html$.KeyCode.INSERT*/get INSERT() {
      return 45;
    },
    /*html$.KeyCode.NUM_INSERT*/get NUM_INSERT() {
      return 45;
    },
    /*html$.KeyCode.DELETE*/get DELETE() {
      return 46;
    },
    /*html$.KeyCode.NUM_DELETE*/get NUM_DELETE() {
      return 46;
    },
    /*html$.KeyCode.ZERO*/get ZERO() {
      return 48;
    },
    /*html$.KeyCode.ONE*/get ONE() {
      return 49;
    },
    /*html$.KeyCode.TWO*/get TWO() {
      return 50;
    },
    /*html$.KeyCode.THREE*/get THREE() {
      return 51;
    },
    /*html$.KeyCode.FOUR*/get FOUR() {
      return 52;
    },
    /*html$.KeyCode.FIVE*/get FIVE() {
      return 53;
    },
    /*html$.KeyCode.SIX*/get SIX() {
      return 54;
    },
    /*html$.KeyCode.SEVEN*/get SEVEN() {
      return 55;
    },
    /*html$.KeyCode.EIGHT*/get EIGHT() {
      return 56;
    },
    /*html$.KeyCode.NINE*/get NINE() {
      return 57;
    },
    /*html$.KeyCode.FF_SEMICOLON*/get FF_SEMICOLON() {
      return 59;
    },
    /*html$.KeyCode.FF_EQUALS*/get FF_EQUALS() {
      return 61;
    },
    /*html$.KeyCode.QUESTION_MARK*/get QUESTION_MARK() {
      return 63;
    },
    /*html$.KeyCode.A*/get A() {
      return 65;
    },
    /*html$.KeyCode.B*/get B() {
      return 66;
    },
    /*html$.KeyCode.C*/get C() {
      return 67;
    },
    /*html$.KeyCode.D*/get D() {
      return 68;
    },
    /*html$.KeyCode.E*/get E() {
      return 69;
    },
    /*html$.KeyCode.F*/get F() {
      return 70;
    },
    /*html$.KeyCode.G*/get G() {
      return 71;
    },
    /*html$.KeyCode.H*/get H() {
      return 72;
    },
    /*html$.KeyCode.I*/get I() {
      return 73;
    },
    /*html$.KeyCode.J*/get J() {
      return 74;
    },
    /*html$.KeyCode.K*/get K() {
      return 75;
    },
    /*html$.KeyCode.L*/get L() {
      return 76;
    },
    /*html$.KeyCode.M*/get M() {
      return 77;
    },
    /*html$.KeyCode.N*/get N() {
      return 78;
    },
    /*html$.KeyCode.O*/get O() {
      return 79;
    },
    /*html$.KeyCode.P*/get P() {
      return 80;
    },
    /*html$.KeyCode.Q*/get Q() {
      return 81;
    },
    /*html$.KeyCode.R*/get R() {
      return 82;
    },
    /*html$.KeyCode.S*/get S() {
      return 83;
    },
    /*html$.KeyCode.T*/get T() {
      return 84;
    },
    /*html$.KeyCode.U*/get U() {
      return 85;
    },
    /*html$.KeyCode.V*/get V() {
      return 86;
    },
    /*html$.KeyCode.W*/get W() {
      return 87;
    },
    /*html$.KeyCode.X*/get X() {
      return 88;
    },
    /*html$.KeyCode.Y*/get Y() {
      return 89;
    },
    /*html$.KeyCode.Z*/get Z() {
      return 90;
    },
    /*html$.KeyCode.META*/get META() {
      return 91;
    },
    /*html$.KeyCode.WIN_KEY_LEFT*/get WIN_KEY_LEFT() {
      return 91;
    },
    /*html$.KeyCode.WIN_KEY_RIGHT*/get WIN_KEY_RIGHT() {
      return 92;
    },
    /*html$.KeyCode.CONTEXT_MENU*/get CONTEXT_MENU() {
      return 93;
    },
    /*html$.KeyCode.NUM_ZERO*/get NUM_ZERO() {
      return 96;
    },
    /*html$.KeyCode.NUM_ONE*/get NUM_ONE() {
      return 97;
    },
    /*html$.KeyCode.NUM_TWO*/get NUM_TWO() {
      return 98;
    },
    /*html$.KeyCode.NUM_THREE*/get NUM_THREE() {
      return 99;
    },
    /*html$.KeyCode.NUM_FOUR*/get NUM_FOUR() {
      return 100;
    },
    /*html$.KeyCode.NUM_FIVE*/get NUM_FIVE() {
      return 101;
    },
    /*html$.KeyCode.NUM_SIX*/get NUM_SIX() {
      return 102;
    },
    /*html$.KeyCode.NUM_SEVEN*/get NUM_SEVEN() {
      return 103;
    },
    /*html$.KeyCode.NUM_EIGHT*/get NUM_EIGHT() {
      return 104;
    },
    /*html$.KeyCode.NUM_NINE*/get NUM_NINE() {
      return 105;
    },
    /*html$.KeyCode.NUM_MULTIPLY*/get NUM_MULTIPLY() {
      return 106;
    },
    /*html$.KeyCode.NUM_PLUS*/get NUM_PLUS() {
      return 107;
    },
    /*html$.KeyCode.NUM_MINUS*/get NUM_MINUS() {
      return 109;
    },
    /*html$.KeyCode.NUM_PERIOD*/get NUM_PERIOD() {
      return 110;
    },
    /*html$.KeyCode.NUM_DIVISION*/get NUM_DIVISION() {
      return 111;
    },
    /*html$.KeyCode.F1*/get F1() {
      return 112;
    },
    /*html$.KeyCode.F2*/get F2() {
      return 113;
    },
    /*html$.KeyCode.F3*/get F3() {
      return 114;
    },
    /*html$.KeyCode.F4*/get F4() {
      return 115;
    },
    /*html$.KeyCode.F5*/get F5() {
      return 116;
    },
    /*html$.KeyCode.F6*/get F6() {
      return 117;
    },
    /*html$.KeyCode.F7*/get F7() {
      return 118;
    },
    /*html$.KeyCode.F8*/get F8() {
      return 119;
    },
    /*html$.KeyCode.F9*/get F9() {
      return 120;
    },
    /*html$.KeyCode.F10*/get F10() {
      return 121;
    },
    /*html$.KeyCode.F11*/get F11() {
      return 122;
    },
    /*html$.KeyCode.F12*/get F12() {
      return 123;
    },
    /*html$.KeyCode.NUMLOCK*/get NUMLOCK() {
      return 144;
    },
    /*html$.KeyCode.SCROLL_LOCK*/get SCROLL_LOCK() {
      return 145;
    },
    /*html$.KeyCode.FIRST_MEDIA_KEY*/get FIRST_MEDIA_KEY() {
      return 166;
    },
    /*html$.KeyCode.LAST_MEDIA_KEY*/get LAST_MEDIA_KEY() {
      return 183;
    },
    /*html$.KeyCode.SEMICOLON*/get SEMICOLON() {
      return 186;
    },
    /*html$.KeyCode.DASH*/get DASH() {
      return 189;
    },
    /*html$.KeyCode.EQUALS*/get EQUALS() {
      return 187;
    },
    /*html$.KeyCode.COMMA*/get COMMA() {
      return 188;
    },
    /*html$.KeyCode.PERIOD*/get PERIOD() {
      return 190;
    },
    /*html$.KeyCode.SLASH*/get SLASH() {
      return 191;
    },
    /*html$.KeyCode.APOSTROPHE*/get APOSTROPHE() {
      return 192;
    },
    /*html$.KeyCode.TILDE*/get TILDE() {
      return 192;
    },
    /*html$.KeyCode.SINGLE_QUOTE*/get SINGLE_QUOTE() {
      return 222;
    },
    /*html$.KeyCode.OPEN_SQUARE_BRACKET*/get OPEN_SQUARE_BRACKET() {
      return 219;
    },
    /*html$.KeyCode.BACKSLASH*/get BACKSLASH() {
      return 220;
    },
    /*html$.KeyCode.CLOSE_SQUARE_BRACKET*/get CLOSE_SQUARE_BRACKET() {
      return 221;
    },
    /*html$.KeyCode.WIN_KEY*/get WIN_KEY() {
      return 224;
    },
    /*html$.KeyCode.MAC_FF_META*/get MAC_FF_META() {
      return 224;
    },
    /*html$.KeyCode.WIN_IME*/get WIN_IME() {
      return 229;
    },
    /*html$.KeyCode.UNKNOWN*/get UNKNOWN() {
      return -1;
    }
  });
  html$.KeyLocation = class KeyLocation extends core.Object {};
  (html$.KeyLocation.new = function() {
  }).prototype = html$.KeyLocation.prototype;
  dart.addTypeTests(html$.KeyLocation);
  dart.defineLazy(html$.KeyLocation, {
    /*html$.KeyLocation.STANDARD*/get STANDARD() {
      return 0;
    },
    /*html$.KeyLocation.LEFT*/get LEFT() {
      return 1;
    },
    /*html$.KeyLocation.RIGHT*/get RIGHT() {
      return 2;
    },
    /*html$.KeyLocation.NUMPAD*/get NUMPAD() {
      return 3;
    },
    /*html$.KeyLocation.MOBILE*/get MOBILE() {
      return 4;
    },
    /*html$.KeyLocation.JOYSTICK*/get JOYSTICK() {
      return 5;
    }
  });
  html$._KeyName = class _KeyName extends core.Object {};
  (html$._KeyName.new = function() {
  }).prototype = html$._KeyName.prototype;
  dart.addTypeTests(html$._KeyName);
  dart.defineLazy(html$._KeyName, {
    /*html$._KeyName.ACCEPT*/get ACCEPT() {
      return "Accept";
    },
    /*html$._KeyName.ADD*/get ADD() {
      return "Add";
    },
    /*html$._KeyName.AGAIN*/get AGAIN() {
      return "Again";
    },
    /*html$._KeyName.ALL_CANDIDATES*/get ALL_CANDIDATES() {
      return "AllCandidates";
    },
    /*html$._KeyName.ALPHANUMERIC*/get ALPHANUMERIC() {
      return "Alphanumeric";
    },
    /*html$._KeyName.ALT*/get ALT() {
      return "Alt";
    },
    /*html$._KeyName.ALT_GRAPH*/get ALT_GRAPH() {
      return "AltGraph";
    },
    /*html$._KeyName.APPS*/get APPS() {
      return "Apps";
    },
    /*html$._KeyName.ATTN*/get ATTN() {
      return "Attn";
    },
    /*html$._KeyName.BROWSER_BACK*/get BROWSER_BACK() {
      return "BrowserBack";
    },
    /*html$._KeyName.BROWSER_FAVORTIES*/get BROWSER_FAVORTIES() {
      return "BrowserFavorites";
    },
    /*html$._KeyName.BROWSER_FORWARD*/get BROWSER_FORWARD() {
      return "BrowserForward";
    },
    /*html$._KeyName.BROWSER_NAME*/get BROWSER_NAME() {
      return "BrowserHome";
    },
    /*html$._KeyName.BROWSER_REFRESH*/get BROWSER_REFRESH() {
      return "BrowserRefresh";
    },
    /*html$._KeyName.BROWSER_SEARCH*/get BROWSER_SEARCH() {
      return "BrowserSearch";
    },
    /*html$._KeyName.BROWSER_STOP*/get BROWSER_STOP() {
      return "BrowserStop";
    },
    /*html$._KeyName.CAMERA*/get CAMERA() {
      return "Camera";
    },
    /*html$._KeyName.CAPS_LOCK*/get CAPS_LOCK() {
      return "CapsLock";
    },
    /*html$._KeyName.CLEAR*/get CLEAR() {
      return "Clear";
    },
    /*html$._KeyName.CODE_INPUT*/get CODE_INPUT() {
      return "CodeInput";
    },
    /*html$._KeyName.COMPOSE*/get COMPOSE() {
      return "Compose";
    },
    /*html$._KeyName.CONTROL*/get CONTROL() {
      return "Control";
    },
    /*html$._KeyName.CRSEL*/get CRSEL() {
      return "Crsel";
    },
    /*html$._KeyName.CONVERT*/get CONVERT() {
      return "Convert";
    },
    /*html$._KeyName.COPY*/get COPY() {
      return "Copy";
    },
    /*html$._KeyName.CUT*/get CUT() {
      return "Cut";
    },
    /*html$._KeyName.DECIMAL*/get DECIMAL() {
      return "Decimal";
    },
    /*html$._KeyName.DIVIDE*/get DIVIDE() {
      return "Divide";
    },
    /*html$._KeyName.DOWN*/get DOWN() {
      return "Down";
    },
    /*html$._KeyName.DOWN_LEFT*/get DOWN_LEFT() {
      return "DownLeft";
    },
    /*html$._KeyName.DOWN_RIGHT*/get DOWN_RIGHT() {
      return "DownRight";
    },
    /*html$._KeyName.EJECT*/get EJECT() {
      return "Eject";
    },
    /*html$._KeyName.END*/get END() {
      return "End";
    },
    /*html$._KeyName.ENTER*/get ENTER() {
      return "Enter";
    },
    /*html$._KeyName.ERASE_EOF*/get ERASE_EOF() {
      return "EraseEof";
    },
    /*html$._KeyName.EXECUTE*/get EXECUTE() {
      return "Execute";
    },
    /*html$._KeyName.EXSEL*/get EXSEL() {
      return "Exsel";
    },
    /*html$._KeyName.FN*/get FN() {
      return "Fn";
    },
    /*html$._KeyName.F1*/get F1() {
      return "F1";
    },
    /*html$._KeyName.F2*/get F2() {
      return "F2";
    },
    /*html$._KeyName.F3*/get F3() {
      return "F3";
    },
    /*html$._KeyName.F4*/get F4() {
      return "F4";
    },
    /*html$._KeyName.F5*/get F5() {
      return "F5";
    },
    /*html$._KeyName.F6*/get F6() {
      return "F6";
    },
    /*html$._KeyName.F7*/get F7() {
      return "F7";
    },
    /*html$._KeyName.F8*/get F8() {
      return "F8";
    },
    /*html$._KeyName.F9*/get F9() {
      return "F9";
    },
    /*html$._KeyName.F10*/get F10() {
      return "F10";
    },
    /*html$._KeyName.F11*/get F11() {
      return "F11";
    },
    /*html$._KeyName.F12*/get F12() {
      return "F12";
    },
    /*html$._KeyName.F13*/get F13() {
      return "F13";
    },
    /*html$._KeyName.F14*/get F14() {
      return "F14";
    },
    /*html$._KeyName.F15*/get F15() {
      return "F15";
    },
    /*html$._KeyName.F16*/get F16() {
      return "F16";
    },
    /*html$._KeyName.F17*/get F17() {
      return "F17";
    },
    /*html$._KeyName.F18*/get F18() {
      return "F18";
    },
    /*html$._KeyName.F19*/get F19() {
      return "F19";
    },
    /*html$._KeyName.F20*/get F20() {
      return "F20";
    },
    /*html$._KeyName.F21*/get F21() {
      return "F21";
    },
    /*html$._KeyName.F22*/get F22() {
      return "F22";
    },
    /*html$._KeyName.F23*/get F23() {
      return "F23";
    },
    /*html$._KeyName.F24*/get F24() {
      return "F24";
    },
    /*html$._KeyName.FINAL_MODE*/get FINAL_MODE() {
      return "FinalMode";
    },
    /*html$._KeyName.FIND*/get FIND() {
      return "Find";
    },
    /*html$._KeyName.FULL_WIDTH*/get FULL_WIDTH() {
      return "FullWidth";
    },
    /*html$._KeyName.HALF_WIDTH*/get HALF_WIDTH() {
      return "HalfWidth";
    },
    /*html$._KeyName.HANGUL_MODE*/get HANGUL_MODE() {
      return "HangulMode";
    },
    /*html$._KeyName.HANJA_MODE*/get HANJA_MODE() {
      return "HanjaMode";
    },
    /*html$._KeyName.HELP*/get HELP() {
      return "Help";
    },
    /*html$._KeyName.HIRAGANA*/get HIRAGANA() {
      return "Hiragana";
    },
    /*html$._KeyName.HOME*/get HOME() {
      return "Home";
    },
    /*html$._KeyName.INSERT*/get INSERT() {
      return "Insert";
    },
    /*html$._KeyName.JAPANESE_HIRAGANA*/get JAPANESE_HIRAGANA() {
      return "JapaneseHiragana";
    },
    /*html$._KeyName.JAPANESE_KATAKANA*/get JAPANESE_KATAKANA() {
      return "JapaneseKatakana";
    },
    /*html$._KeyName.JAPANESE_ROMAJI*/get JAPANESE_ROMAJI() {
      return "JapaneseRomaji";
    },
    /*html$._KeyName.JUNJA_MODE*/get JUNJA_MODE() {
      return "JunjaMode";
    },
    /*html$._KeyName.KANA_MODE*/get KANA_MODE() {
      return "KanaMode";
    },
    /*html$._KeyName.KANJI_MODE*/get KANJI_MODE() {
      return "KanjiMode";
    },
    /*html$._KeyName.KATAKANA*/get KATAKANA() {
      return "Katakana";
    },
    /*html$._KeyName.LAUNCH_APPLICATION_1*/get LAUNCH_APPLICATION_1() {
      return "LaunchApplication1";
    },
    /*html$._KeyName.LAUNCH_APPLICATION_2*/get LAUNCH_APPLICATION_2() {
      return "LaunchApplication2";
    },
    /*html$._KeyName.LAUNCH_MAIL*/get LAUNCH_MAIL() {
      return "LaunchMail";
    },
    /*html$._KeyName.LEFT*/get LEFT() {
      return "Left";
    },
    /*html$._KeyName.MENU*/get MENU() {
      return "Menu";
    },
    /*html$._KeyName.META*/get META() {
      return "Meta";
    },
    /*html$._KeyName.MEDIA_NEXT_TRACK*/get MEDIA_NEXT_TRACK() {
      return "MediaNextTrack";
    },
    /*html$._KeyName.MEDIA_PAUSE_PLAY*/get MEDIA_PAUSE_PLAY() {
      return "MediaPlayPause";
    },
    /*html$._KeyName.MEDIA_PREVIOUS_TRACK*/get MEDIA_PREVIOUS_TRACK() {
      return "MediaPreviousTrack";
    },
    /*html$._KeyName.MEDIA_STOP*/get MEDIA_STOP() {
      return "MediaStop";
    },
    /*html$._KeyName.MODE_CHANGE*/get MODE_CHANGE() {
      return "ModeChange";
    },
    /*html$._KeyName.NEXT_CANDIDATE*/get NEXT_CANDIDATE() {
      return "NextCandidate";
    },
    /*html$._KeyName.NON_CONVERT*/get NON_CONVERT() {
      return "Nonconvert";
    },
    /*html$._KeyName.NUM_LOCK*/get NUM_LOCK() {
      return "NumLock";
    },
    /*html$._KeyName.PAGE_DOWN*/get PAGE_DOWN() {
      return "PageDown";
    },
    /*html$._KeyName.PAGE_UP*/get PAGE_UP() {
      return "PageUp";
    },
    /*html$._KeyName.PASTE*/get PASTE() {
      return "Paste";
    },
    /*html$._KeyName.PAUSE*/get PAUSE() {
      return "Pause";
    },
    /*html$._KeyName.PLAY*/get PLAY() {
      return "Play";
    },
    /*html$._KeyName.POWER*/get POWER() {
      return "Power";
    },
    /*html$._KeyName.PREVIOUS_CANDIDATE*/get PREVIOUS_CANDIDATE() {
      return "PreviousCandidate";
    },
    /*html$._KeyName.PRINT_SCREEN*/get PRINT_SCREEN() {
      return "PrintScreen";
    },
    /*html$._KeyName.PROCESS*/get PROCESS() {
      return "Process";
    },
    /*html$._KeyName.PROPS*/get PROPS() {
      return "Props";
    },
    /*html$._KeyName.RIGHT*/get RIGHT() {
      return "Right";
    },
    /*html$._KeyName.ROMAN_CHARACTERS*/get ROMAN_CHARACTERS() {
      return "RomanCharacters";
    },
    /*html$._KeyName.SCROLL*/get SCROLL() {
      return "Scroll";
    },
    /*html$._KeyName.SELECT*/get SELECT() {
      return "Select";
    },
    /*html$._KeyName.SELECT_MEDIA*/get SELECT_MEDIA() {
      return "SelectMedia";
    },
    /*html$._KeyName.SEPARATOR*/get SEPARATOR() {
      return "Separator";
    },
    /*html$._KeyName.SHIFT*/get SHIFT() {
      return "Shift";
    },
    /*html$._KeyName.SOFT_1*/get SOFT_1() {
      return "Soft1";
    },
    /*html$._KeyName.SOFT_2*/get SOFT_2() {
      return "Soft2";
    },
    /*html$._KeyName.SOFT_3*/get SOFT_3() {
      return "Soft3";
    },
    /*html$._KeyName.SOFT_4*/get SOFT_4() {
      return "Soft4";
    },
    /*html$._KeyName.STOP*/get STOP() {
      return "Stop";
    },
    /*html$._KeyName.SUBTRACT*/get SUBTRACT() {
      return "Subtract";
    },
    /*html$._KeyName.SYMBOL_LOCK*/get SYMBOL_LOCK() {
      return "SymbolLock";
    },
    /*html$._KeyName.UP*/get UP() {
      return "Up";
    },
    /*html$._KeyName.UP_LEFT*/get UP_LEFT() {
      return "UpLeft";
    },
    /*html$._KeyName.UP_RIGHT*/get UP_RIGHT() {
      return "UpRight";
    },
    /*html$._KeyName.UNDO*/get UNDO() {
      return "Undo";
    },
    /*html$._KeyName.VOLUME_DOWN*/get VOLUME_DOWN() {
      return "VolumeDown";
    },
    /*html$._KeyName.VOLUMN_MUTE*/get VOLUMN_MUTE() {
      return "VolumeMute";
    },
    /*html$._KeyName.VOLUMN_UP*/get VOLUMN_UP() {
      return "VolumeUp";
    },
    /*html$._KeyName.WIN*/get WIN() {
      return "Win";
    },
    /*html$._KeyName.ZOOM*/get ZOOM() {
      return "Zoom";
    },
    /*html$._KeyName.BACKSPACE*/get BACKSPACE() {
      return "Backspace";
    },
    /*html$._KeyName.TAB*/get TAB() {
      return "Tab";
    },
    /*html$._KeyName.CANCEL*/get CANCEL() {
      return "Cancel";
    },
    /*html$._KeyName.ESC*/get ESC() {
      return "Esc";
    },
    /*html$._KeyName.SPACEBAR*/get SPACEBAR() {
      return "Spacebar";
    },
    /*html$._KeyName.DEL*/get DEL() {
      return "Del";
    },
    /*html$._KeyName.DEAD_GRAVE*/get DEAD_GRAVE() {
      return "DeadGrave";
    },
    /*html$._KeyName.DEAD_EACUTE*/get DEAD_EACUTE() {
      return "DeadEacute";
    },
    /*html$._KeyName.DEAD_CIRCUMFLEX*/get DEAD_CIRCUMFLEX() {
      return "DeadCircumflex";
    },
    /*html$._KeyName.DEAD_TILDE*/get DEAD_TILDE() {
      return "DeadTilde";
    },
    /*html$._KeyName.DEAD_MACRON*/get DEAD_MACRON() {
      return "DeadMacron";
    },
    /*html$._KeyName.DEAD_BREVE*/get DEAD_BREVE() {
      return "DeadBreve";
    },
    /*html$._KeyName.DEAD_ABOVE_DOT*/get DEAD_ABOVE_DOT() {
      return "DeadAboveDot";
    },
    /*html$._KeyName.DEAD_UMLAUT*/get DEAD_UMLAUT() {
      return "DeadUmlaut";
    },
    /*html$._KeyName.DEAD_ABOVE_RING*/get DEAD_ABOVE_RING() {
      return "DeadAboveRing";
    },
    /*html$._KeyName.DEAD_DOUBLEACUTE*/get DEAD_DOUBLEACUTE() {
      return "DeadDoubleacute";
    },
    /*html$._KeyName.DEAD_CARON*/get DEAD_CARON() {
      return "DeadCaron";
    },
    /*html$._KeyName.DEAD_CEDILLA*/get DEAD_CEDILLA() {
      return "DeadCedilla";
    },
    /*html$._KeyName.DEAD_OGONEK*/get DEAD_OGONEK() {
      return "DeadOgonek";
    },
    /*html$._KeyName.DEAD_IOTA*/get DEAD_IOTA() {
      return "DeadIota";
    },
    /*html$._KeyName.DEAD_VOICED_SOUND*/get DEAD_VOICED_SOUND() {
      return "DeadVoicedSound";
    },
    /*html$._KeyName.DEC_SEMIVOICED_SOUND*/get DEC_SEMIVOICED_SOUND() {
      return "DeadSemivoicedSound";
    },
    /*html$._KeyName.UNIDENTIFIED*/get UNIDENTIFIED() {
      return "Unidentified";
    }
  });
  const _stream$0 = Symbol('_stream');
  const _keyDownList = Symbol('_keyDownList');
  const _capsLockOn = Symbol('_capsLockOn');
  const _determineKeyCodeForKeypress = Symbol('_determineKeyCodeForKeypress');
  const _findCharCodeKeyDown = Symbol('_findCharCodeKeyDown');
  const _firesKeyPressEvent = Symbol('_firesKeyPressEvent');
  const _normalizeKeyCodes = Symbol('_normalizeKeyCodes');
  html$._KeyboardEventHandler = class _KeyboardEventHandler extends html$.EventStreamProvider$(html$.KeyEvent) {
    forTarget(e, opts) {
      let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
      let handler = new html$._KeyboardEventHandler.initializeAllEventListeners(this[_type$1], e);
      return handler[_stream$0];
    }
    get [_capsLockOn]() {
      return this[_keyDownList][$any](dart.fn(element => element.keyCode === html$.KeyCode.CAPS_LOCK, KeyEventTobool()));
    }
    [_determineKeyCodeForKeypress](event) {
      for (let prevEvent of this[_keyDownList]) {
        if (prevEvent[_shadowCharCode] == event.charCode) {
          return prevEvent.keyCode;
        }
        if ((dart.test(event.shiftKey) || dart.test(this[_capsLockOn])) && dart.notNull(event.charCode) >= dart.notNull("A"[$codeUnits][$_get](0)) && dart.notNull(event.charCode) <= dart.notNull("Z"[$codeUnits][$_get](0)) && dart.notNull(event.charCode) + dart.notNull(html$._KeyboardEventHandler._ROMAN_ALPHABET_OFFSET) === prevEvent[_shadowCharCode]) {
          return prevEvent.keyCode;
        }
      }
      return html$.KeyCode.UNKNOWN;
    }
    [_findCharCodeKeyDown](event) {
      if (event.location === 3) {
        switch (event.keyCode) {
          case html$.KeyCode.NUM_ZERO:
          {
            return html$.KeyCode.ZERO;
          }
          case html$.KeyCode.NUM_ONE:
          {
            return html$.KeyCode.ONE;
          }
          case html$.KeyCode.NUM_TWO:
          {
            return html$.KeyCode.TWO;
          }
          case html$.KeyCode.NUM_THREE:
          {
            return html$.KeyCode.THREE;
          }
          case html$.KeyCode.NUM_FOUR:
          {
            return html$.KeyCode.FOUR;
          }
          case html$.KeyCode.NUM_FIVE:
          {
            return html$.KeyCode.FIVE;
          }
          case html$.KeyCode.NUM_SIX:
          {
            return html$.KeyCode.SIX;
          }
          case html$.KeyCode.NUM_SEVEN:
          {
            return html$.KeyCode.SEVEN;
          }
          case html$.KeyCode.NUM_EIGHT:
          {
            return html$.KeyCode.EIGHT;
          }
          case html$.KeyCode.NUM_NINE:
          {
            return html$.KeyCode.NINE;
          }
          case html$.KeyCode.NUM_MULTIPLY:
          {
            return 42;
          }
          case html$.KeyCode.NUM_PLUS:
          {
            return 43;
          }
          case html$.KeyCode.NUM_MINUS:
          {
            return 45;
          }
          case html$.KeyCode.NUM_PERIOD:
          {
            return 46;
          }
          case html$.KeyCode.NUM_DIVISION:
          {
            return 47;
          }
        }
      } else if (dart.notNull(event.keyCode) >= 65 && dart.notNull(event.keyCode) <= 90) {
        return dart.notNull(event.keyCode) + dart.notNull(html$._KeyboardEventHandler._ROMAN_ALPHABET_OFFSET);
      }
      switch (event.keyCode) {
        case html$.KeyCode.SEMICOLON:
        {
          return html$.KeyCode.FF_SEMICOLON;
        }
        case html$.KeyCode.EQUALS:
        {
          return html$.KeyCode.FF_EQUALS;
        }
        case html$.KeyCode.COMMA:
        {
          return 44;
        }
        case html$.KeyCode.DASH:
        {
          return 45;
        }
        case html$.KeyCode.PERIOD:
        {
          return 46;
        }
        case html$.KeyCode.SLASH:
        {
          return 47;
        }
        case html$.KeyCode.APOSTROPHE:
        {
          return 96;
        }
        case html$.KeyCode.OPEN_SQUARE_BRACKET:
        {
          return 91;
        }
        case html$.KeyCode.BACKSLASH:
        {
          return 92;
        }
        case html$.KeyCode.CLOSE_SQUARE_BRACKET:
        {
          return 93;
        }
        case html$.KeyCode.SINGLE_QUOTE:
        {
          return 39;
        }
      }
      return event.keyCode;
    }
    [_firesKeyPressEvent](event) {
      if (!dart.test(html_common.Device.isIE) && !dart.test(html_common.Device.isWebKit)) {
        return true;
      }
      if (html_common.Device.userAgent[$contains]("Mac") && dart.test(event.altKey)) {
        return html$.KeyCode.isCharacterKey(event.keyCode);
      }
      if (dart.test(event.altKey) && !dart.test(event.ctrlKey)) {
        return false;
      }
      if (!dart.test(event.shiftKey) && (this[_keyDownList][$last].keyCode === html$.KeyCode.CTRL || this[_keyDownList][$last].keyCode === html$.KeyCode.ALT || html_common.Device.userAgent[$contains]("Mac") && this[_keyDownList][$last].keyCode === html$.KeyCode.META)) {
        return false;
      }
      if (dart.test(html_common.Device.isWebKit) && dart.test(event.ctrlKey) && dart.test(event.shiftKey) && (event.keyCode === html$.KeyCode.BACKSLASH || event.keyCode === html$.KeyCode.OPEN_SQUARE_BRACKET || event.keyCode === html$.KeyCode.CLOSE_SQUARE_BRACKET || event.keyCode === html$.KeyCode.TILDE || event.keyCode === html$.KeyCode.SEMICOLON || event.keyCode === html$.KeyCode.DASH || event.keyCode === html$.KeyCode.EQUALS || event.keyCode === html$.KeyCode.COMMA || event.keyCode === html$.KeyCode.PERIOD || event.keyCode === html$.KeyCode.SLASH || event.keyCode === html$.KeyCode.APOSTROPHE || event.keyCode === html$.KeyCode.SINGLE_QUOTE)) {
        return false;
      }
      switch (event.keyCode) {
        case html$.KeyCode.ENTER:
        {
          return !dart.test(html_common.Device.isIE);
        }
        case html$.KeyCode.ESC:
        {
          return !dart.test(html_common.Device.isWebKit);
        }
      }
      return html$.KeyCode.isCharacterKey(event.keyCode);
    }
    [_normalizeKeyCodes](event) {
      if (dart.test(html_common.Device.isFirefox)) {
        switch (event.keyCode) {
          case html$.KeyCode.FF_EQUALS:
          {
            return html$.KeyCode.EQUALS;
          }
          case html$.KeyCode.FF_SEMICOLON:
          {
            return html$.KeyCode.SEMICOLON;
          }
          case html$.KeyCode.MAC_FF_META:
          {
            return html$.KeyCode.META;
          }
          case html$.KeyCode.WIN_KEY_FF_LINUX:
          {
            return html$.KeyCode.WIN_KEY;
          }
        }
      }
      return event.keyCode;
    }
    processKeyDown(e) {
      if (dart.notNull(this[_keyDownList][$length]) > 0 && (this[_keyDownList][$last].keyCode === html$.KeyCode.CTRL && !dart.test(e.ctrlKey) || this[_keyDownList][$last].keyCode === html$.KeyCode.ALT && !dart.test(e.altKey) || html_common.Device.userAgent[$contains]("Mac") && this[_keyDownList][$last].keyCode === html$.KeyCode.META && !dart.test(e.metaKey))) {
        this[_keyDownList][$clear]();
      }
      let event = new html$.KeyEvent.wrap(e);
      event[_shadowKeyCode] = this[_normalizeKeyCodes](event);
      event[_shadowCharCode] = this[_findCharCodeKeyDown](event);
      if (dart.notNull(this[_keyDownList][$length]) > 0 && event.keyCode != this[_keyDownList][$last].keyCode && !dart.test(this[_firesKeyPressEvent](event))) {
        this.processKeyPress(e);
      }
      this[_keyDownList][$add](event);
      this[_stream$0].add(event);
    }
    processKeyPress(event) {
      let e = new html$.KeyEvent.wrap(event);
      if (dart.test(html_common.Device.isIE)) {
        if (e.keyCode === html$.KeyCode.ENTER || e.keyCode === html$.KeyCode.ESC) {
          e[_shadowCharCode] = 0;
        } else {
          e[_shadowCharCode] = e.keyCode;
        }
      } else if (dart.test(html_common.Device.isOpera)) {
        e[_shadowCharCode] = dart.test(html$.KeyCode.isCharacterKey(e.keyCode)) ? e.keyCode : 0;
      }
      e[_shadowKeyCode] = this[_determineKeyCodeForKeypress](e);
      if (e[_shadowKeyIdentifier] != null && dart.test(html$._KeyboardEventHandler._keyIdentifier[$containsKey](e[_shadowKeyIdentifier]))) {
        e[_shadowKeyCode] = html$._KeyboardEventHandler._keyIdentifier[$_get](e[_shadowKeyIdentifier]);
      }
      e[_shadowAltKey] = this[_keyDownList][$any](dart.fn(element => element.altKey, KeyEventTobool()));
      this[_stream$0].add(e);
    }
    processKeyUp(event) {
      let e = new html$.KeyEvent.wrap(event);
      let toRemove = null;
      for (let key of this[_keyDownList]) {
        if (key.keyCode == e.keyCode) {
          toRemove = key;
        }
      }
      if (toRemove != null) {
        this[_keyDownList][$removeWhere](dart.fn(element => dart.equals(element, toRemove), KeyEventTobool()));
      } else if (dart.notNull(this[_keyDownList][$length]) > 0) {
        this[_keyDownList][$removeLast]();
      }
      this[_stream$0].add(e);
    }
  };
  (html$._KeyboardEventHandler.new = function(type) {
    this[_keyDownList] = JSArrayOfKeyEvent().of([]);
    this[_type$1] = type;
    this[_stream$0] = new html$._CustomKeyEventStreamImpl.new("event");
    this[_target$0] = null;
    html$._KeyboardEventHandler.__proto__.new.call(this, "KeyEvent");
  }).prototype = html$._KeyboardEventHandler.prototype;
  (html$._KeyboardEventHandler.initializeAllEventListeners = function(type, target) {
    this[_keyDownList] = JSArrayOfKeyEvent().of([]);
    this[_stream$0] = null;
    this[_type$1] = type;
    this[_target$0] = target;
    html$._KeyboardEventHandler.__proto__.new.call(this, "KeyEvent");
    html$.Element.keyDownEvent.forTarget(this[_target$0], {useCapture: true}).listen(dart.bind(this, 'processKeyDown'));
    html$.Element.keyPressEvent.forTarget(this[_target$0], {useCapture: true}).listen(dart.bind(this, 'processKeyPress'));
    html$.Element.keyUpEvent.forTarget(this[_target$0], {useCapture: true}).listen(dart.bind(this, 'processKeyUp'));
    this[_stream$0] = new html$._CustomKeyEventStreamImpl.new(this[_type$1]);
  }).prototype = html$._KeyboardEventHandler.prototype;
  dart.addTypeTests(html$._KeyboardEventHandler);
  dart.setMethodSignature(html$._KeyboardEventHandler, () => ({
    __proto__: dart.getMethods(html$._KeyboardEventHandler.__proto__),
    forTarget: dart.fnType(html$.CustomStream$(html$.KeyEvent), [html$.EventTarget], {useCapture: core.bool}),
    [_determineKeyCodeForKeypress]: dart.fnType(core.int, [html$.KeyboardEvent]),
    [_findCharCodeKeyDown]: dart.fnType(core.int, [html$.KeyboardEvent]),
    [_firesKeyPressEvent]: dart.fnType(core.bool, [html$.KeyEvent]),
    [_normalizeKeyCodes]: dart.fnType(core.int, [html$.KeyboardEvent]),
    processKeyDown: dart.fnType(dart.void, [html$.KeyboardEvent]),
    processKeyPress: dart.fnType(dart.void, [html$.KeyboardEvent]),
    processKeyUp: dart.fnType(dart.void, [html$.KeyboardEvent])
  }));
  dart.setGetterSignature(html$._KeyboardEventHandler, () => ({
    __proto__: dart.getGetters(html$._KeyboardEventHandler.__proto__),
    [_capsLockOn]: core.bool
  }));
  dart.setFieldSignature(html$._KeyboardEventHandler, () => ({
    __proto__: dart.getFields(html$._KeyboardEventHandler.__proto__),
    [_keyDownList]: dart.finalFieldType(ListOfKeyEvent()),
    [_type$1]: dart.finalFieldType(core.String),
    [_target$0]: dart.finalFieldType(html$.EventTarget),
    [_stream$0]: dart.fieldType(html$._CustomKeyEventStreamImpl)
  }));
  dart.defineLazy(html$._KeyboardEventHandler, {
    /*html$._KeyboardEventHandler._ROMAN_ALPHABET_OFFSET*/get _ROMAN_ALPHABET_OFFSET() {
      return dart.notNull("a"[$codeUnits][$_get](0)) - dart.notNull("A"[$codeUnits][$_get](0));
    },
    /*html$._KeyboardEventHandler._EVENT_TYPE*/get _EVENT_TYPE() {
      return "KeyEvent";
    },
    /*html$._KeyboardEventHandler._keyIdentifier*/get _keyIdentifier() {
      return dart.constMap(core.String, core.int, ["Up", html$.KeyCode.UP, "Down", html$.KeyCode.DOWN, "Left", html$.KeyCode.LEFT, "Right", html$.KeyCode.RIGHT, "Enter", html$.KeyCode.ENTER, "F1", html$.KeyCode.F1, "F2", html$.KeyCode.F2, "F3", html$.KeyCode.F3, "F4", html$.KeyCode.F4, "F5", html$.KeyCode.F5, "F6", html$.KeyCode.F6, "F7", html$.KeyCode.F7, "F8", html$.KeyCode.F8, "F9", html$.KeyCode.F9, "F10", html$.KeyCode.F10, "F11", html$.KeyCode.F11, "F12", html$.KeyCode.F12, "U+007F", html$.KeyCode.DELETE, "Home", html$.KeyCode.HOME, "End", html$.KeyCode.END, "PageUp", html$.KeyCode.PAGE_UP, "PageDown", html$.KeyCode.PAGE_DOWN, "Insert", html$.KeyCode.INSERT]);
    }
  });
  html$.KeyboardEventStream = class KeyboardEventStream extends core.Object {
    static onKeyPress(target) {
      return new html$._KeyboardEventHandler.new("keypress").forTarget(target);
    }
    static onKeyUp(target) {
      return new html$._KeyboardEventHandler.new("keyup").forTarget(target);
    }
    static onKeyDown(target) {
      return new html$._KeyboardEventHandler.new("keydown").forTarget(target);
    }
  };
  (html$.KeyboardEventStream.new = function() {
  }).prototype = html$.KeyboardEventStream.prototype;
  dart.addTypeTests(html$.KeyboardEventStream);
  const _validators = Symbol('_validators');
  html$.NodeValidatorBuilder = class NodeValidatorBuilder extends core.Object {
    allowNavigation(uriPolicy) {
      if (uriPolicy === void 0) uriPolicy = null;
      if (uriPolicy == null) {
        uriPolicy = html$.UriPolicy.new();
      }
      this.add(html$._SimpleNodeValidator.allowNavigation(uriPolicy));
    }
    allowImages(uriPolicy) {
      if (uriPolicy === void 0) uriPolicy = null;
      if (uriPolicy == null) {
        uriPolicy = html$.UriPolicy.new();
      }
      this.add(html$._SimpleNodeValidator.allowImages(uriPolicy));
    }
    allowTextElements() {
      this.add(html$._SimpleNodeValidator.allowTextElements());
    }
    allowInlineStyles(opts) {
      let tagName = opts && 'tagName' in opts ? opts.tagName : null;
      if (tagName == null) {
        tagName = "*";
      } else {
        tagName = tagName[$toUpperCase]();
      }
      this.add(new html$._SimpleNodeValidator.new(null, {allowedAttributes: JSArrayOfString().of([dart.str(tagName) + "::style"])}));
    }
    allowHtml5(opts) {
      let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
      this.add(new html$._Html5NodeValidator.new({uriPolicy: uriPolicy}));
    }
    allowSvg() {
      this.add(new html$._SvgNodeValidator.new());
    }
    allowCustomElement(tagName, opts) {
      let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
      let attributes = opts && 'attributes' in opts ? opts.attributes : null;
      let uriAttributes = opts && 'uriAttributes' in opts ? opts.uriAttributes : null;
      let tagNameUpper = tagName[$toUpperCase]();
      let attrs = IterableOfString()._check(attributes == null ? null : attributes[$map](core.String, dart.fn(name => tagNameUpper + "::" + name[$toLowerCase](), StringToString())));
      let uriAttrs = IterableOfString()._check(uriAttributes == null ? null : uriAttributes[$map](core.String, dart.fn(name => tagNameUpper + "::" + name[$toLowerCase](), StringToString())));
      if (uriPolicy == null) {
        uriPolicy = html$.UriPolicy.new();
      }
      this.add(new html$._CustomElementNodeValidator.new(uriPolicy, JSArrayOfString().of([tagNameUpper]), attrs, uriAttrs, false, true));
    }
    allowTagExtension(tagName, baseName, opts) {
      let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
      let attributes = opts && 'attributes' in opts ? opts.attributes : null;
      let uriAttributes = opts && 'uriAttributes' in opts ? opts.uriAttributes : null;
      let baseNameUpper = baseName[$toUpperCase]();
      let tagNameUpper = tagName[$toUpperCase]();
      let attrs = IterableOfString()._check(attributes == null ? null : attributes[$map](core.String, dart.fn(name => baseNameUpper + "::" + name[$toLowerCase](), StringToString())));
      let uriAttrs = IterableOfString()._check(uriAttributes == null ? null : uriAttributes[$map](core.String, dart.fn(name => baseNameUpper + "::" + name[$toLowerCase](), StringToString())));
      if (uriPolicy == null) {
        uriPolicy = html$.UriPolicy.new();
      }
      this.add(new html$._CustomElementNodeValidator.new(uriPolicy, JSArrayOfString().of([tagNameUpper, baseNameUpper]), attrs, uriAttrs, true, false));
    }
    allowElement(tagName, opts) {
      let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
      let attributes = opts && 'attributes' in opts ? opts.attributes : null;
      let uriAttributes = opts && 'uriAttributes' in opts ? opts.uriAttributes : null;
      this.allowCustomElement(tagName, {uriPolicy: uriPolicy, attributes: attributes, uriAttributes: uriAttributes});
    }
    allowTemplating() {
      this.add(new html$._TemplatingNodeValidator.new());
    }
    add(validator) {
      this[_validators][$add](validator);
    }
    allowsElement(element) {
      return this[_validators][$any](dart.fn(v => v.allowsElement(element), NodeValidatorTobool()));
    }
    allowsAttribute(element, attributeName, value) {
      return this[_validators][$any](dart.fn(v => v.allowsAttribute(element, attributeName, value), NodeValidatorTobool()));
    }
  };
  (html$.NodeValidatorBuilder.new = function() {
    this[_validators] = JSArrayOfNodeValidator().of([]);
  }).prototype = html$.NodeValidatorBuilder.prototype;
  (html$.NodeValidatorBuilder.common = function() {
    this[_validators] = JSArrayOfNodeValidator().of([]);
    this.allowHtml5();
    this.allowTemplating();
  }).prototype = html$.NodeValidatorBuilder.prototype;
  dart.addTypeTests(html$.NodeValidatorBuilder);
  html$.NodeValidatorBuilder[dart.implements] = () => [html$.NodeValidator];
  dart.setMethodSignature(html$.NodeValidatorBuilder, () => ({
    __proto__: dart.getMethods(html$.NodeValidatorBuilder.__proto__),
    allowNavigation: dart.fnType(dart.void, [], [html$.UriPolicy]),
    allowImages: dart.fnType(dart.void, [], [html$.UriPolicy]),
    allowTextElements: dart.fnType(dart.void, []),
    allowInlineStyles: dart.fnType(dart.void, [], {tagName: core.String}),
    allowHtml5: dart.fnType(dart.void, [], {uriPolicy: html$.UriPolicy}),
    allowSvg: dart.fnType(dart.void, []),
    allowCustomElement: dart.fnType(dart.void, [core.String], {uriPolicy: html$.UriPolicy, attributes: core.Iterable$(core.String), uriAttributes: core.Iterable$(core.String)}),
    allowTagExtension: dart.fnType(dart.void, [core.String, core.String], {uriPolicy: html$.UriPolicy, attributes: core.Iterable$(core.String), uriAttributes: core.Iterable$(core.String)}),
    allowElement: dart.fnType(dart.void, [core.String], {uriPolicy: html$.UriPolicy, attributes: core.Iterable$(core.String), uriAttributes: core.Iterable$(core.String)}),
    allowTemplating: dart.fnType(dart.void, []),
    add: dart.fnType(dart.void, [html$.NodeValidator]),
    allowsElement: dart.fnType(core.bool, [html$.Element]),
    allowsAttribute: dart.fnType(core.bool, [html$.Element, core.String, core.String])
  }));
  dart.setFieldSignature(html$.NodeValidatorBuilder, () => ({
    __proto__: dart.getFields(html$.NodeValidatorBuilder.__proto__),
    [_validators]: dart.finalFieldType(ListOfNodeValidator())
  }));
  let const$70;
  let const$71;
  let const$72;
  let const$73;
  let const$74;
  let const$75;
  let const$76;
  let const$77;
  let const$78;
  let const$79;
  html$._SimpleNodeValidator = class _SimpleNodeValidator extends core.Object {
    static allowNavigation(uriPolicy) {
      return new html$._SimpleNodeValidator.new(uriPolicy, {allowedElements: const$73 || (const$73 = dart.constList(["A", "FORM"], core.String)), allowedAttributes: const$74 || (const$74 = dart.constList(["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"], core.String)), allowedUriAttributes: const$75 || (const$75 = dart.constList(["A::href", "FORM::action"], core.String))});
    }
    static allowImages(uriPolicy) {
      return new html$._SimpleNodeValidator.new(uriPolicy, {allowedElements: const$76 || (const$76 = dart.constList(["IMG"], core.String)), allowedAttributes: const$77 || (const$77 = dart.constList(["IMG::align", "IMG::alt", "IMG::border", "IMG::height", "IMG::hspace", "IMG::ismap", "IMG::name", "IMG::usemap", "IMG::vspace", "IMG::width"], core.String)), allowedUriAttributes: const$78 || (const$78 = dart.constList(["IMG::src"], core.String))});
    }
    static allowTextElements() {
      return new html$._SimpleNodeValidator.new(null, {allowedElements: const$79 || (const$79 = dart.constList(["B", "BLOCKQUOTE", "BR", "EM", "H1", "H2", "H3", "H4", "H5", "H6", "HR", "I", "LI", "OL", "P", "SPAN", "UL"], core.String))});
    }
    allowsElement(element) {
      return this.allowedElements.contains(html$.Element._safeTagName(element));
    }
    allowsAttribute(element, attributeName, value) {
      let tagName = html$.Element._safeTagName(element);
      if (dart.test(this.allowedUriAttributes.contains(dart.str(tagName) + "::" + dart.str(attributeName)))) {
        return this.uriPolicy.allowsUri(value);
      } else if (dart.test(this.allowedUriAttributes.contains("*::" + dart.str(attributeName)))) {
        return this.uriPolicy.allowsUri(value);
      } else if (dart.test(this.allowedAttributes.contains(dart.str(tagName) + "::" + dart.str(attributeName)))) {
        return true;
      } else if (dart.test(this.allowedAttributes.contains("*::" + dart.str(attributeName)))) {
        return true;
      } else if (dart.test(this.allowedAttributes.contains(dart.str(tagName) + "::*"))) {
        return true;
      } else if (dart.test(this.allowedAttributes.contains("*::*"))) {
        return true;
      }
      return false;
    }
  };
  (html$._SimpleNodeValidator.new = function(uriPolicy, opts) {
    let allowedElements = opts && 'allowedElements' in opts ? opts.allowedElements : null;
    let allowedAttributes = opts && 'allowedAttributes' in opts ? opts.allowedAttributes : null;
    let allowedUriAttributes = opts && 'allowedUriAttributes' in opts ? opts.allowedUriAttributes : null;
    this.allowedElements = new (_IdentityHashSetOfString()).new();
    this.allowedAttributes = new (_IdentityHashSetOfString()).new();
    this.allowedUriAttributes = new (_IdentityHashSetOfString()).new();
    this.uriPolicy = uriPolicy;
    this.allowedElements.addAll(allowedElements != null ? allowedElements : const$70 || (const$70 = dart.constList([], core.String)));
    allowedAttributes = allowedAttributes != null ? allowedAttributes : const$71 || (const$71 = dart.constList([], core.String));
    allowedUriAttributes = allowedUriAttributes != null ? allowedUriAttributes : const$72 || (const$72 = dart.constList([], core.String));
    let legalAttributes = allowedAttributes[$where](dart.fn(x => !dart.test(html$._Html5NodeValidator._uriAttributes[$contains](x)), StringTobool()));
    let extraUriAttributes = allowedAttributes[$where](dart.fn(x => html$._Html5NodeValidator._uriAttributes[$contains](x), StringTobool()));
    this.allowedAttributes.addAll(legalAttributes);
    this.allowedUriAttributes.addAll(allowedUriAttributes);
    this.allowedUriAttributes.addAll(extraUriAttributes);
  }).prototype = html$._SimpleNodeValidator.prototype;
  dart.addTypeTests(html$._SimpleNodeValidator);
  html$._SimpleNodeValidator[dart.implements] = () => [html$.NodeValidator];
  dart.setMethodSignature(html$._SimpleNodeValidator, () => ({
    __proto__: dart.getMethods(html$._SimpleNodeValidator.__proto__),
    allowsElement: dart.fnType(core.bool, [html$.Element]),
    allowsAttribute: dart.fnType(core.bool, [html$.Element, core.String, core.String])
  }));
  dart.setFieldSignature(html$._SimpleNodeValidator, () => ({
    __proto__: dart.getFields(html$._SimpleNodeValidator.__proto__),
    allowedElements: dart.finalFieldType(SetOfString()),
    allowedAttributes: dart.finalFieldType(SetOfString()),
    allowedUriAttributes: dart.finalFieldType(SetOfString()),
    uriPolicy: dart.finalFieldType(html$.UriPolicy)
  }));
  html$._CustomElementNodeValidator = class _CustomElementNodeValidator extends html$._SimpleNodeValidator {
    allowsElement(element) {
      if (dart.test(this.allowTypeExtension)) {
        let isAttr = element[$attributes][$_get]("is");
        if (isAttr != null) {
          return dart.test(this.allowedElements.contains(isAttr[$toUpperCase]())) && dart.test(this.allowedElements.contains(html$.Element._safeTagName(element)));
        }
      }
      return dart.test(this.allowCustomTag) && dart.test(this.allowedElements.contains(html$.Element._safeTagName(element)));
    }
    allowsAttribute(element, attributeName, value) {
      if (dart.test(this.allowsElement(element))) {
        if (dart.test(this.allowTypeExtension) && attributeName === "is" && dart.test(this.allowedElements.contains(value[$toUpperCase]()))) {
          return true;
        }
        return super.allowsAttribute(element, attributeName, value);
      }
      return false;
    }
  };
  (html$._CustomElementNodeValidator.new = function(uriPolicy, allowedElements, allowedAttributes, allowedUriAttributes, allowTypeExtension, allowCustomTag) {
    this.allowTypeExtension = allowTypeExtension === true;
    this.allowCustomTag = allowCustomTag === true;
    html$._CustomElementNodeValidator.__proto__.new.call(this, uriPolicy, {allowedElements: allowedElements, allowedAttributes: allowedAttributes, allowedUriAttributes: allowedUriAttributes});
  }).prototype = html$._CustomElementNodeValidator.prototype;
  dart.addTypeTests(html$._CustomElementNodeValidator);
  dart.setFieldSignature(html$._CustomElementNodeValidator, () => ({
    __proto__: dart.getFields(html$._CustomElementNodeValidator.__proto__),
    allowTypeExtension: dart.finalFieldType(core.bool),
    allowCustomTag: dart.finalFieldType(core.bool)
  }));
  const _templateAttrs = Symbol('_templateAttrs');
  html$._TemplatingNodeValidator = class _TemplatingNodeValidator extends html$._SimpleNodeValidator {
    allowsAttribute(element, attributeName, value) {
      if (dart.test(super.allowsAttribute(element, attributeName, value))) {
        return true;
      }
      if (attributeName === "template" && value === "") {
        return true;
      }
      if (element[$attributes][$_get]("template") === "") {
        return this[_templateAttrs].contains(attributeName);
      }
      return false;
    }
  };
  (html$._TemplatingNodeValidator.new = function() {
    this[_templateAttrs] = SetOfString().from(html$._TemplatingNodeValidator._TEMPLATE_ATTRS);
    html$._TemplatingNodeValidator.__proto__.new.call(this, null, {allowedElements: JSArrayOfString().of(["TEMPLATE"]), allowedAttributes: IterableOfString()._check(html$._TemplatingNodeValidator._TEMPLATE_ATTRS[$map](core.String, dart.fn(attr => "TEMPLATE::" + dart.str(attr), StringToString())))});
  }).prototype = html$._TemplatingNodeValidator.prototype;
  dart.addTypeTests(html$._TemplatingNodeValidator);
  dart.setFieldSignature(html$._TemplatingNodeValidator, () => ({
    __proto__: dart.getFields(html$._TemplatingNodeValidator.__proto__),
    [_templateAttrs]: dart.finalFieldType(SetOfString())
  }));
  dart.defineLazy(html$._TemplatingNodeValidator, {
    /*html$._TemplatingNodeValidator._TEMPLATE_ATTRS*/get _TEMPLATE_ATTRS() {
      return dart.constList(["bind", "if", "ref", "repeat", "syntax"], core.String);
    }
  });
  html$._SvgNodeValidator = class _SvgNodeValidator extends core.Object {
    allowsElement(element) {
      if (svg$.ScriptElement.is(element)) {
        return false;
      }
      if (svg$.SvgElement.is(element) && html$.Element._safeTagName(element) === "foreignObject") {
        return false;
      }
      if (svg$.SvgElement.is(element)) {
        return true;
      }
      return false;
    }
    allowsAttribute(element, attributeName, value) {
      if (attributeName === "is" || attributeName[$startsWith]("on")) {
        return false;
      }
      return this.allowsElement(element);
    }
  };
  (html$._SvgNodeValidator.new = function() {
  }).prototype = html$._SvgNodeValidator.prototype;
  dart.addTypeTests(html$._SvgNodeValidator);
  html$._SvgNodeValidator[dart.implements] = () => [html$.NodeValidator];
  dart.setMethodSignature(html$._SvgNodeValidator, () => ({
    __proto__: dart.getMethods(html$._SvgNodeValidator.__proto__),
    allowsElement: dart.fnType(core.bool, [html$.Element]),
    allowsAttribute: dart.fnType(core.bool, [html$.Element, core.String, core.String])
  }));
  html$.ReadyState = class ReadyState extends core.Object {};
  (html$.ReadyState.new = function() {
  }).prototype = html$.ReadyState.prototype;
  dart.addTypeTests(html$.ReadyState);
  dart.defineLazy(html$.ReadyState, {
    /*html$.ReadyState.LOADING*/get LOADING() {
      return "loading";
    },
    /*html$.ReadyState.INTERACTIVE*/get INTERACTIVE() {
      return "interactive";
    },
    /*html$.ReadyState.COMPLETE*/get COMPLETE() {
      return "complete";
    }
  });
  const _list$1 = Symbol('_list');
  const _is__WrappedList_default = Symbol('_is__WrappedList_default');
  html$._WrappedList$ = dart.generic(E => {
    let _WrappedIteratorOfE = () => (_WrappedIteratorOfE = dart.constFn(html$._WrappedIterator$(E)))();
    let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
    class _WrappedList extends collection.ListBase$(E) {
      get iterator() {
        return new (_WrappedIteratorOfE()).new(this[_list$1][$iterator]);
      }
      get length() {
        return this[_list$1][$length];
      }
      add(element) {
        E._check(element);
        this[_list$1][$add](element);
      }
      remove(element) {
        return this[_list$1][$remove](element);
      }
      clear() {
        this[_list$1][$clear]();
      }
      _get(index) {
        return E._check(this[_list$1][$_get](index));
      }
      _set(index, value) {
        E._check(value);
        this[_list$1][$_set](index, value);
        return value;
      }
      set length(newLength) {
        this[_list$1][$length] = newLength;
      }
      sort(compare) {
        if (compare === void 0) compare = null;
        this[_list$1][$sort](dart.fn((a, b) => compare(E._check(a), E._check(b)), NodeAndNodeToint()));
      }
      indexOf(element, start) {
        if (start === void 0) start = 0;
        return this[_list$1][$indexOf](html$.Node._check(element), start);
      }
      lastIndexOf(element, start) {
        if (start === void 0) start = null;
        return this[_list$1][$lastIndexOf](html$.Node._check(element), start);
      }
      insert(index, element) {
        E._check(element);
        return this[_list$1][$insert](index, element);
      }
      removeAt(index) {
        return E._check(this[_list$1][$removeAt](index));
      }
      setRange(start, end, iterable, skipCount) {
        IterableOfE()._check(iterable);
        if (skipCount === void 0) skipCount = 0;
        this[_list$1][$setRange](start, end, iterable, skipCount);
      }
      removeRange(start, end) {
        this[_list$1][$removeRange](start, end);
      }
      replaceRange(start, end, iterable) {
        IterableOfE()._check(iterable);
        this[_list$1][$replaceRange](start, end, iterable);
      }
      fillRange(start, end, fillValue) {
        if (fillValue === void 0) fillValue = null;
        E._check(fillValue);
        this[_list$1][$fillRange](start, end, fillValue);
      }
      get rawList() {
        return this[_list$1];
      }
    }
    (_WrappedList.new = function(list) {
      this[_list$1] = list;
    }).prototype = _WrappedList.prototype;
    dart.addTypeTests(_WrappedList);
    _WrappedList.prototype[_is__WrappedList_default] = true;
    _WrappedList[dart.implements] = () => [html_common.NodeListWrapper];
    dart.setMethodSignature(_WrappedList, () => ({
      __proto__: dart.getMethods(_WrappedList.__proto__),
      add: dart.fnType(dart.void, [core.Object]),
      [$add]: dart.fnType(dart.void, [core.Object]),
      _get: dart.fnType(E, [core.int]),
      [$_get]: dart.fnType(E, [core.int]),
      _set: dart.fnType(dart.void, [core.int, core.Object]),
      [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
      insert: dart.fnType(dart.void, [core.int, core.Object]),
      [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
      setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
      [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
      replaceRange: dart.fnType(dart.void, [core.int, core.int, core.Object]),
      [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object]),
      fillRange: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
      [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object])
    }));
    dart.setGetterSignature(_WrappedList, () => ({
      __proto__: dart.getGetters(_WrappedList.__proto__),
      length: core.int,
      [$length]: core.int,
      rawList: core.List$(html$.Node)
    }));
    dart.setSetterSignature(_WrappedList, () => ({
      __proto__: dart.getSetters(_WrappedList.__proto__),
      length: core.int,
      [$length]: core.int
    }));
    dart.setFieldSignature(_WrappedList, () => ({
      __proto__: dart.getFields(_WrappedList.__proto__),
      [_list$1]: dart.finalFieldType(ListOfNode())
    }));
    dart.defineExtensionMethods(_WrappedList, [
      'add',
      'remove',
      'clear',
      '_get',
      '_set',
      'sort',
      'indexOf',
      'lastIndexOf',
      'insert',
      'removeAt',
      'setRange',
      'removeRange',
      'replaceRange',
      'fillRange'
    ]);
    dart.defineExtensionAccessors(_WrappedList, ['iterator', 'length']);
    return _WrappedList;
  });
  html$._WrappedList = html$._WrappedList$();
  dart.addTypeTests(html$._WrappedList, _is__WrappedList_default);
  const _iterator$1 = Symbol('_iterator');
  const _is__WrappedIterator_default = Symbol('_is__WrappedIterator_default');
  html$._WrappedIterator$ = dart.generic(E => {
    let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
    class _WrappedIterator extends core.Object {
      moveNext() {
        return this[_iterator$1].moveNext();
      }
      get current() {
        return E._check(this[_iterator$1].current);
      }
    }
    (_WrappedIterator.new = function(iterator) {
      this[_iterator$1] = iterator;
    }).prototype = _WrappedIterator.prototype;
    dart.addTypeTests(_WrappedIterator);
    _WrappedIterator.prototype[_is__WrappedIterator_default] = true;
    _WrappedIterator[dart.implements] = () => [IteratorOfE()];
    dart.setMethodSignature(_WrappedIterator, () => ({
      __proto__: dart.getMethods(_WrappedIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(_WrappedIterator, () => ({
      __proto__: dart.getGetters(_WrappedIterator.__proto__),
      current: E
    }));
    dart.setFieldSignature(_WrappedIterator, () => ({
      __proto__: dart.getFields(_WrappedIterator.__proto__),
      [_iterator$1]: dart.fieldType(IteratorOfNode())
    }));
    return _WrappedIterator;
  });
  html$._WrappedIterator = html$._WrappedIterator$();
  dart.addTypeTests(html$._WrappedIterator, _is__WrappedIterator_default);
  html$._HttpRequestUtils = class _HttpRequestUtils extends core.Object {
    static get(url, onComplete, withCredentials) {
      let request = html$.HttpRequest.new();
      request.open("GET", url, {async: true});
      request.withCredentials = withCredentials;
      request[$onReadyStateChange].listen(dart.fn(e => {
        if (request.readyState === html$.HttpRequest.DONE) {
          onComplete(request);
        }
      }, EventToNull()));
      request.send();
      return request;
    }
  };
  (html$._HttpRequestUtils.new = function() {
  }).prototype = html$._HttpRequestUtils.prototype;
  dart.addTypeTests(html$._HttpRequestUtils);
  const _array = Symbol('_array');
  const _current$2 = Symbol('_current');
  const _is_FixedSizeListIterator_default = Symbol('_is_FixedSizeListIterator_default');
  html$.FixedSizeListIterator$ = dart.generic(T => {
    let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
    let ListOfT = () => (ListOfT = dart.constFn(core.List$(T)))();
    class FixedSizeListIterator extends core.Object {
      moveNext() {
        let nextPosition = dart.notNull(this[_position$1]) + 1;
        if (nextPosition < dart.notNull(this[_length$2])) {
          this[_current$2] = this[_array][$_get](nextPosition);
          this[_position$1] = nextPosition;
          return true;
        }
        this[_current$2] = null;
        this[_position$1] = this[_length$2];
        return false;
      }
      get current() {
        return this[_current$2];
      }
    }
    (FixedSizeListIterator.new = function(array) {
      this[_current$2] = null;
      this[_array] = array;
      this[_position$1] = -1;
      this[_length$2] = array[$length];
    }).prototype = FixedSizeListIterator.prototype;
    dart.addTypeTests(FixedSizeListIterator);
    FixedSizeListIterator.prototype[_is_FixedSizeListIterator_default] = true;
    FixedSizeListIterator[dart.implements] = () => [IteratorOfT()];
    dart.setMethodSignature(FixedSizeListIterator, () => ({
      __proto__: dart.getMethods(FixedSizeListIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(FixedSizeListIterator, () => ({
      __proto__: dart.getGetters(FixedSizeListIterator.__proto__),
      current: T
    }));
    dart.setFieldSignature(FixedSizeListIterator, () => ({
      __proto__: dart.getFields(FixedSizeListIterator.__proto__),
      [_array]: dart.finalFieldType(ListOfT()),
      [_length$2]: dart.finalFieldType(core.int),
      [_position$1]: dart.fieldType(core.int),
      [_current$2]: dart.fieldType(T)
    }));
    return FixedSizeListIterator;
  });
  html$.FixedSizeListIterator = html$.FixedSizeListIterator$();
  dart.addTypeTests(html$.FixedSizeListIterator, _is_FixedSizeListIterator_default);
  const _is__VariableSizeListIterator_default = Symbol('_is__VariableSizeListIterator_default');
  html$._VariableSizeListIterator$ = dart.generic(T => {
    let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
    let ListOfT = () => (ListOfT = dart.constFn(core.List$(T)))();
    class _VariableSizeListIterator extends core.Object {
      moveNext() {
        let nextPosition = dart.notNull(this[_position$1]) + 1;
        if (nextPosition < dart.notNull(this[_array][$length])) {
          this[_current$2] = this[_array][$_get](nextPosition);
          this[_position$1] = nextPosition;
          return true;
        }
        this[_current$2] = null;
        this[_position$1] = this[_array][$length];
        return false;
      }
      get current() {
        return this[_current$2];
      }
    }
    (_VariableSizeListIterator.new = function(array) {
      this[_current$2] = null;
      this[_array] = array;
      this[_position$1] = -1;
    }).prototype = _VariableSizeListIterator.prototype;
    dart.addTypeTests(_VariableSizeListIterator);
    _VariableSizeListIterator.prototype[_is__VariableSizeListIterator_default] = true;
    _VariableSizeListIterator[dart.implements] = () => [IteratorOfT()];
    dart.setMethodSignature(_VariableSizeListIterator, () => ({
      __proto__: dart.getMethods(_VariableSizeListIterator.__proto__),
      moveNext: dart.fnType(core.bool, [])
    }));
    dart.setGetterSignature(_VariableSizeListIterator, () => ({
      __proto__: dart.getGetters(_VariableSizeListIterator.__proto__),
      current: T
    }));
    dart.setFieldSignature(_VariableSizeListIterator, () => ({
      __proto__: dart.getFields(_VariableSizeListIterator.__proto__),
      [_array]: dart.finalFieldType(ListOfT()),
      [_position$1]: dart.fieldType(core.int),
      [_current$2]: dart.fieldType(T)
    }));
    return _VariableSizeListIterator;
  });
  html$._VariableSizeListIterator = html$._VariableSizeListIterator$();
  dart.addTypeTests(html$._VariableSizeListIterator, _is__VariableSizeListIterator_default);
  const _isConsoleDefined = Symbol('_isConsoleDefined');
  html$.Console = class Console extends core.Object {
    get [_isConsoleDefined]() {
      return typeof console != "undefined";
    }
    get memory() {
      return dart.test(this[_isConsoleDefined]) ? window.console.memory : null;
    }
    assertCondition(condition, arg) {
      return dart.test(this[_isConsoleDefined]) ? window.console.assertCondition(condition, arg) : null;
    }
    clear(arg) {
      return dart.test(this[_isConsoleDefined]) ? window.console.clear(arg) : null;
    }
    count(arg) {
      return dart.test(this[_isConsoleDefined]) ? window.console.count(arg) : null;
    }
    debug(arg) {
      return dart.test(this[_isConsoleDefined]) ? window.console.debug(arg) : null;
    }
    dir(arg) {
      return dart.test(this[_isConsoleDefined]) ? window.console.dir(arg) : null;
    }
    dirxml(arg) {
      return dart.test(this[_isConsoleDefined]) ? window.console.dirxml(arg) : null;
    }
    error(arg) {
      return dart.test(this[_isConsoleDefined]) ? window.console.error(arg) : null;
    }
    group(arg) {
      return dart.test(this[_isConsoleDefined]) ? window.console.group(arg) : null;
    }
    groupCollapsed(arg) {
      return dart.test(this[_isConsoleDefined]) ? window.console.groupCollapsed(arg) : null;
    }
    groupEnd() {
      return dart.test(this[_isConsoleDefined]) ? window.console.groupEnd() : null;
    }
    info(arg) {
      return dart.test(this[_isConsoleDefined]) ? window.console.info(arg) : null;
    }
    log(arg) {
      return dart.test(this[_isConsoleDefined]) ? window.console.log(arg) : null;
    }
    markTimeline(arg) {
      return dart.test(this[_isConsoleDefined]) ? window.console.markTimeline(arg) : null;
    }
    profile(title) {
      return dart.test(this[_isConsoleDefined]) ? window.console.profile(title) : null;
    }
    profileEnd(title) {
      return dart.test(this[_isConsoleDefined]) ? window.console.profileEnd(title) : null;
    }
    table(arg) {
      return dart.test(this[_isConsoleDefined]) ? window.console.table(arg) : null;
    }
    time(title) {
      return dart.test(this[_isConsoleDefined]) ? window.console.time(title) : null;
    }
    timeEnd(title) {
      return dart.test(this[_isConsoleDefined]) ? window.console.timeEnd(title) : null;
    }
    timeStamp(arg) {
      return dart.test(this[_isConsoleDefined]) ? window.console.timeStamp(arg) : null;
    }
    trace(arg) {
      return dart.test(this[_isConsoleDefined]) ? window.console.trace(arg) : null;
    }
    warn(arg) {
      return dart.test(this[_isConsoleDefined]) ? window.console.warn(arg) : null;
    }
  };
  (html$.Console._safe = function() {
  }).prototype = html$.Console.prototype;
  dart.addTypeTests(html$.Console);
  dart.setMethodSignature(html$.Console, () => ({
    __proto__: dart.getMethods(html$.Console.__proto__),
    assertCondition: dart.fnType(dart.void, [core.bool, core.Object]),
    clear: dart.fnType(dart.void, [core.Object]),
    count: dart.fnType(dart.void, [core.Object]),
    debug: dart.fnType(dart.void, [core.Object]),
    dir: dart.fnType(dart.void, [core.Object]),
    dirxml: dart.fnType(dart.void, [core.Object]),
    error: dart.fnType(dart.void, [core.Object]),
    group: dart.fnType(dart.void, [core.Object]),
    groupCollapsed: dart.fnType(dart.void, [core.Object]),
    groupEnd: dart.fnType(dart.void, []),
    info: dart.fnType(dart.void, [core.Object]),
    log: dart.fnType(dart.void, [core.Object]),
    markTimeline: dart.fnType(dart.void, [core.Object]),
    profile: dart.fnType(dart.void, [core.String]),
    profileEnd: dart.fnType(dart.void, [core.String]),
    table: dart.fnType(dart.void, [core.Object]),
    time: dart.fnType(dart.void, [core.String]),
    timeEnd: dart.fnType(dart.void, [core.String]),
    timeStamp: dart.fnType(dart.void, [core.Object]),
    trace: dart.fnType(dart.void, [core.Object]),
    warn: dart.fnType(dart.void, [core.Object])
  }));
  dart.setGetterSignature(html$.Console, () => ({
    __proto__: dart.getGetters(html$.Console.__proto__),
    [_isConsoleDefined]: core.bool,
    memory: html$.MemoryInfo
  }));
  dart.defineLazy(html$.Console, {
    /*html$.Console._safeConsole*/get _safeConsole() {
      return dart.const(new html$.Console._safe());
    }
  });
  html$._convertNativeToDart_Window = function(win) {
    if (win == null) return null;
    return html$._DOMWindowCrossFrame._createSafe(win);
  };
  html$._convertNativeToDart_EventTarget = function(e) {
    if (e == null) {
      return null;
    }
    if ("postMessage" in e) {
      let window = html$._DOMWindowCrossFrame._createSafe(e);
      if (html$.EventTarget.is(window)) {
        return window;
      }
      return null;
    } else
      return html$.EventTarget._check(e);
  };
  const _window = Symbol('_window');
  html$._convertDartToNative_EventTarget = function(e) {
    if (html$._DOMWindowCrossFrame.is(e)) {
      return html$.EventTarget._check(e[_window]);
    } else {
      return html$.EventTarget._check(e);
    }
  };
  html$._convertNativeToDart_XHR_Response = function(o) {
    if (html$.Document.is(o)) {
      return o;
    }
    return html_common.convertNativeToDart_SerializedScriptValue(o);
  };
  html$._callConstructor = function(constructor, interceptor) {
    return dart.fn(receiver => {
      _js_helper.setNativeSubclassDispatchRecord(receiver, interceptor);
      receiver.constructor = receiver.__proto__.constructor;
      return constructor(receiver);
    }, dynamicTodynamic());
  };
  html$._callAttached = function(receiver) {
    return dart.dsend(receiver, 'attached', []);
  };
  html$._callDetached = function(receiver) {
    return dart.dsend(receiver, 'detached', []);
  };
  html$._callAttributeChanged = function(receiver, name, oldValue, newValue) {
    return dart.dsend(receiver, 'attributeChanged', [name, oldValue, newValue]);
  };
  html$._makeCallbackMethod = function(callback) {
    return (function(invokeCallback) {
      return function() {
        return invokeCallback(this);
      };
    })(_js_helper.convertDartClosureToJS(dart.dynamic, callback, 1));
  };
  html$._makeCallbackMethod3 = function(callback) {
    return (function(invokeCallback) {
      return function(arg1, arg2, arg3) {
        return invokeCallback(this, arg1, arg2, arg3);
      };
    })(_js_helper.convertDartClosureToJS(dart.dynamic, callback, 4));
  };
  html$._checkExtendsNativeClassOrTemplate = function(element, extendsTag, baseClassName) {
    if (!(element instanceof window[baseClassName]) && !(extendsTag === "template" && element instanceof window.HTMLUnknownElement)) {
      dart.throw(new core.UnsupportedError.new("extendsTag does not match base native class"));
    }
  };
  html$._registerCustomElement = function(context, document, tag, options) {
    if (options === void 0) options = null;
    let extendsTagName = "";
    let type = null;
    if (options != null) {
      extendsTagName = core.String._check(options[$_get]("extends"));
      type = core.Type._check(options[$_get]("prototype"));
    }
    let interceptorClass = _interceptors.findInterceptorConstructorForType(type);
    if (interceptorClass == null) {
      dart.throw(new core.ArgumentError.new(type));
    }
    let interceptor = interceptorClass.prototype;
    let constructor = _interceptors.findConstructorForNativeSubclassType(type, "created");
    if (constructor == null) {
      dart.throw(new core.ArgumentError.new(dart.str(type) + " has no constructor called 'created'"));
    }
    _interceptors.getNativeInterceptor(html$.Element.tag("article"));
    let baseClassName = core.String._check(_js_helper.findDispatchTagForInterceptorClass(interceptorClass));
    if (baseClassName == null) {
      dart.throw(new core.ArgumentError.new(type));
    }
    if (extendsTagName == null) {
      if (baseClassName !== "HTMLElement") {
        dart.throw(new core.UnsupportedError.new("Class must provide extendsTag if base " + "native class is not HtmlElement"));
      }
    } else {
      let element = dart.dsend(document, 'createElement', [extendsTagName]);
      html$._checkExtendsNativeClassOrTemplate(html$.Element._check(element), extendsTagName, baseClassName);
    }
    let baseConstructor = context[baseClassName];
    let properties = {};
    properties.createdCallback = {value: html$._makeCallbackMethod(html$._callConstructor(constructor, interceptor))};
    properties.attachedCallback = {value: html$._makeCallbackMethod(html$._callAttached)};
    properties.detachedCallback = {value: html$._makeCallbackMethod(html$._callDetached)};
    properties.attributeChangedCallback = {value: html$._makeCallbackMethod3(html$._callAttributeChanged)};
    let baseProto = baseConstructor.prototype;
    let proto = Object.create(baseProto, properties);
    _js_helper.setNativeSubclassDispatchRecord(proto, interceptor);
    let opts = {prototype: proto};
    if (extendsTagName != null) {
      opts.extends = extendsTagName;
    }
    return document.registerElement(tag, opts);
  };
  html$._initializeCustomElement = function(e) {
  };
  const _interceptor = Symbol('_interceptor');
  const _constructor = Symbol('_constructor');
  const _nativeType = Symbol('_nativeType');
  html$._JSElementUpgrader = class _JSElementUpgrader extends core.Object {
    upgrade(element) {
      if (!dart.equals(dart.runtimeType(element), this[_nativeType])) {
        if (!dart.equals(this[_nativeType], dart.wrapType(html$.HtmlElement)) || !dart.equals(dart.runtimeType(element), dart.wrapType(html$.UnknownElement))) {
          dart.throw(new core.ArgumentError.new("element is not subclass of " + dart.str(this[_nativeType])));
        }
      }
      _js_helper.setNativeSubclassDispatchRecord(element, this[_interceptor]);
      this[_constructor](element);
      return element;
    }
  };
  (html$._JSElementUpgrader.new = function(document, type, extendsTag) {
    this[_interceptor] = null;
    this[_constructor] = null;
    this[_nativeType] = null;
    let interceptorClass = _interceptors.findInterceptorConstructorForType(type);
    if (interceptorClass == null) {
      dart.throw(new core.ArgumentError.new(type));
    }
    this[_constructor] = _interceptors.findConstructorForNativeSubclassType(type, "created");
    if (this[_constructor] == null) {
      dart.throw(new core.ArgumentError.new(dart.str(type) + " has no constructor called 'created'"));
    }
    _interceptors.getNativeInterceptor(html$.Element.tag("article"));
    let baseClassName = _js_helper.findDispatchTagForInterceptorClass(interceptorClass);
    if (baseClassName == null) {
      dart.throw(new core.ArgumentError.new(type));
    }
    if (extendsTag == null) {
      if (!dart.equals(baseClassName, "HTMLElement")) {
        dart.throw(new core.UnsupportedError.new("Class must provide extendsTag if base " + "native class is not HtmlElement"));
      }
      this[_nativeType] = dart.wrapType(html$.HtmlElement);
    } else {
      let element = document[$createElement](extendsTag);
      html$._checkExtendsNativeClassOrTemplate(element, extendsTag, core.String._check(baseClassName));
      this[_nativeType] = dart.runtimeType(element);
    }
    this[_interceptor] = interceptorClass.prototype;
  }).prototype = html$._JSElementUpgrader.prototype;
  dart.addTypeTests(html$._JSElementUpgrader);
  html$._JSElementUpgrader[dart.implements] = () => [html$.ElementUpgrader];
  dart.setMethodSignature(html$._JSElementUpgrader, () => ({
    __proto__: dart.getMethods(html$._JSElementUpgrader.__proto__),
    upgrade: dart.fnType(html$.Element, [html$.Element])
  }));
  dart.setFieldSignature(html$._JSElementUpgrader, () => ({
    __proto__: dart.getFields(html$._JSElementUpgrader.__proto__),
    [_interceptor]: dart.fieldType(dart.dynamic),
    [_constructor]: dart.fieldType(dart.dynamic),
    [_nativeType]: dart.fieldType(dart.dynamic)
  }));
  html$._DOMWindowCrossFrame = class _DOMWindowCrossFrame extends core.Object {
    get history() {
      return html$._HistoryCrossFrame._createSafe(this[_window].history);
    }
    get location() {
      return html$._LocationCrossFrame._createSafe(this[_window].location);
    }
    get closed() {
      return this[_window].closed;
    }
    get opener() {
      return html$._DOMWindowCrossFrame._createSafe(this[_window].opener);
    }
    get parent() {
      return html$._DOMWindowCrossFrame._createSafe(this[_window].parent);
    }
    get top() {
      return html$._DOMWindowCrossFrame._createSafe(this[_window].top);
    }
    close() {
      return this[_window].close();
    }
    postMessage(message, targetOrigin, messagePorts) {
      if (messagePorts === void 0) messagePorts = null;
      if (messagePorts == null) {
        this[_window].postMessage(html_common.convertDartToNative_SerializedScriptValue(message), targetOrigin);
      } else {
        this[_window].postMessage(html_common.convertDartToNative_SerializedScriptValue(message), targetOrigin, messagePorts);
      }
    }
    static _createSafe(w) {
      if (core.identical(w, html$.window)) {
        return html$.WindowBase._check(w);
      } else {
        _js_helper.registerGlobalObject(w);
        return new html$._DOMWindowCrossFrame.new(w);
      }
    }
    get on() {
      return dart.throw(new core.UnsupportedError.new("You can only attach EventListeners to your own window."));
    }
    [_addEventListener](type, listener, useCapture) {
      if (useCapture === void 0) useCapture = null;
      return dart.throw(new core.UnsupportedError.new("You can only attach EventListeners to your own window."));
    }
    addEventListener(type, listener, useCapture) {
      if (useCapture === void 0) useCapture = null;
      return dart.throw(new core.UnsupportedError.new("You can only attach EventListeners to your own window."));
    }
    dispatchEvent(event) {
      return dart.throw(new core.UnsupportedError.new("You can only attach EventListeners to your own window."));
    }
    [_removeEventListener](type, listener, useCapture) {
      if (useCapture === void 0) useCapture = null;
      return dart.throw(new core.UnsupportedError.new("You can only attach EventListeners to your own window."));
    }
    removeEventListener(type, listener, useCapture) {
      if (useCapture === void 0) useCapture = null;
      return dart.throw(new core.UnsupportedError.new("You can only attach EventListeners to your own window."));
    }
  };
  (html$._DOMWindowCrossFrame.new = function(window) {
    this[_window] = window;
  }).prototype = html$._DOMWindowCrossFrame.prototype;
  dart.addTypeTests(html$._DOMWindowCrossFrame);
  html$._DOMWindowCrossFrame[dart.implements] = () => [html$.WindowBase];
  dart.setMethodSignature(html$._DOMWindowCrossFrame, () => ({
    __proto__: dart.getMethods(html$._DOMWindowCrossFrame.__proto__),
    close: dart.fnType(dart.void, []),
    [$close]: dart.fnType(dart.void, []),
    postMessage: dart.fnType(dart.void, [dart.dynamic, core.String], [core.List]),
    [$postMessage]: dart.fnType(dart.void, [dart.dynamic, core.String], [core.List]),
    [_addEventListener]: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool]),
    addEventListener: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool]),
    [$addEventListener]: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool]),
    dispatchEvent: dart.fnType(core.bool, [html$.Event]),
    [$dispatchEvent]: dart.fnType(core.bool, [html$.Event]),
    [_removeEventListener]: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool]),
    removeEventListener: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool]),
    [$removeEventListener]: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool])
  }));
  dart.setGetterSignature(html$._DOMWindowCrossFrame, () => ({
    __proto__: dart.getGetters(html$._DOMWindowCrossFrame.__proto__),
    history: html$.HistoryBase,
    [$history]: html$.HistoryBase,
    location: html$.LocationBase,
    [$location]: html$.LocationBase,
    closed: core.bool,
    [$closed]: core.bool,
    opener: html$.WindowBase,
    [$opener]: html$.WindowBase,
    parent: html$.WindowBase,
    [$parent]: html$.WindowBase,
    top: html$.WindowBase,
    [$top]: html$.WindowBase,
    on: html$.Events,
    [$on]: html$.Events
  }));
  dart.setFieldSignature(html$._DOMWindowCrossFrame, () => ({
    __proto__: dart.getFields(html$._DOMWindowCrossFrame.__proto__),
    [_window]: dart.finalFieldType(dart.dynamic)
  }));
  dart.defineExtensionMethods(html$._DOMWindowCrossFrame, [
    'close',
    'postMessage',
    'addEventListener',
    'dispatchEvent',
    'removeEventListener'
  ]);
  dart.defineExtensionAccessors(html$._DOMWindowCrossFrame, [
    'history',
    'location',
    'closed',
    'opener',
    'parent',
    'top',
    'on'
  ]);
  html$._LocationCrossFrame = class _LocationCrossFrame extends core.Object {
    set href(val) {
      return html$._LocationCrossFrame._setHref(this[_location], val);
    }
    static _setHref(location, val) {
      location.href = val;
    }
    static _createSafe(location) {
      if (core.identical(location, html$.window[$location])) {
        return html$.LocationBase._check(location);
      } else {
        return new html$._LocationCrossFrame.new(location);
      }
    }
  };
  (html$._LocationCrossFrame.new = function(location) {
    this[_location] = location;
  }).prototype = html$._LocationCrossFrame.prototype;
  dart.addTypeTests(html$._LocationCrossFrame);
  html$._LocationCrossFrame[dart.implements] = () => [html$.LocationBase];
  dart.setSetterSignature(html$._LocationCrossFrame, () => ({
    __proto__: dart.getSetters(html$._LocationCrossFrame.__proto__),
    href: core.String,
    [$href]: core.String
  }));
  dart.setFieldSignature(html$._LocationCrossFrame, () => ({
    __proto__: dart.getFields(html$._LocationCrossFrame.__proto__),
    [_location]: dart.fieldType(dart.dynamic)
  }));
  dart.defineExtensionAccessors(html$._LocationCrossFrame, ['href']);
  const _history = Symbol('_history');
  html$._HistoryCrossFrame = class _HistoryCrossFrame extends core.Object {
    back() {
      return this[_history].back();
    }
    forward() {
      return this[_history].forward();
    }
    go(distance) {
      return this[_history].go(distance);
    }
    static _createSafe(h) {
      if (core.identical(h, html$.window.history)) {
        return html$.HistoryBase._check(h);
      } else {
        return new html$._HistoryCrossFrame.new(h);
      }
    }
  };
  (html$._HistoryCrossFrame.new = function(history) {
    this[_history] = history;
  }).prototype = html$._HistoryCrossFrame.prototype;
  dart.addTypeTests(html$._HistoryCrossFrame);
  html$._HistoryCrossFrame[dart.implements] = () => [html$.HistoryBase];
  dart.setMethodSignature(html$._HistoryCrossFrame, () => ({
    __proto__: dart.getMethods(html$._HistoryCrossFrame.__proto__),
    back: dart.fnType(dart.void, []),
    [$back]: dart.fnType(dart.void, []),
    forward: dart.fnType(dart.void, []),
    [$forward]: dart.fnType(dart.void, []),
    go: dart.fnType(dart.void, [core.int]),
    [$go]: dart.fnType(dart.void, [core.int])
  }));
  dart.setFieldSignature(html$._HistoryCrossFrame, () => ({
    __proto__: dart.getFields(html$._HistoryCrossFrame.__proto__),
    [_history]: dart.fieldType(dart.dynamic)
  }));
  dart.defineExtensionMethods(html$._HistoryCrossFrame, ['back', 'forward', 'go']);
  html$.Platform = class Platform extends core.Object {};
  (html$.Platform.new = function() {
  }).prototype = html$.Platform.prototype;
  dart.addTypeTests(html$.Platform);
  dart.defineLazy(html$.Platform, {
    /*html$.Platform.supportsTypedData*/get supportsTypedData() {
      return !!window.ArrayBuffer;
    },
    /*html$.Platform.supportsSimd*/get supportsSimd() {
      return false;
    }
  });
  html$._wrapZone = function(T, callback) {
    if (dart.equals(async.Zone.current, async.Zone.root)) return callback;
    if (callback == null) return null;
    return async.Zone.current.bindUnaryCallbackGuarded(T, callback);
  };
  html$._wrapBinaryZone = function(T1, T2, callback) {
    if (dart.equals(async.Zone.current, async.Zone.root)) return callback;
    if (callback == null) return null;
    return async.Zone.current.bindBinaryCallbackGuarded(T1, T2, callback);
  };
  html$.querySelector = function(selectors) {
    return html$.document.querySelector(selectors);
  };
  html$.querySelectorAll = function(T, selectors) {
    return html$.document[$querySelectorAll](T, selectors);
  };
  html$.ElementUpgrader = class ElementUpgrader extends core.Object {};
  (html$.ElementUpgrader.new = function() {
  }).prototype = html$.ElementUpgrader.prototype;
  dart.addTypeTests(html$.ElementUpgrader);
  html$.NodeValidator = class NodeValidator extends core.Object {
    static new(opts) {
      let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
      return new html$._Html5NodeValidator.new({uriPolicy: uriPolicy});
    }
    static throws(base) {
      return new html$._ThrowsNodeValidator.new(base);
    }
  };
  (html$.NodeValidator[dart.mixinNew] = function() {
  }).prototype = html$.NodeValidator.prototype;
  dart.addTypeTests(html$.NodeValidator);
  html$.NodeTreeSanitizer = class NodeTreeSanitizer extends core.Object {
    static new(validator) {
      return new html$._ValidatingTreeSanitizer.new(validator);
    }
  };
  (html$.NodeTreeSanitizer[dart.mixinNew] = function() {
  }).prototype = html$.NodeTreeSanitizer.prototype;
  dart.addTypeTests(html$.NodeTreeSanitizer);
  dart.defineLazy(html$.NodeTreeSanitizer, {
    /*html$.NodeTreeSanitizer.trusted*/get trusted() {
      return dart.const(new html$._TrustedHtmlTreeSanitizer.new());
    }
  });
  html$._TrustedHtmlTreeSanitizer = class _TrustedHtmlTreeSanitizer extends core.Object {
    sanitizeTree(node) {}
  };
  (html$._TrustedHtmlTreeSanitizer.new = function() {
  }).prototype = html$._TrustedHtmlTreeSanitizer.prototype;
  dart.addTypeTests(html$._TrustedHtmlTreeSanitizer);
  html$._TrustedHtmlTreeSanitizer[dart.implements] = () => [html$.NodeTreeSanitizer];
  dart.setMethodSignature(html$._TrustedHtmlTreeSanitizer, () => ({
    __proto__: dart.getMethods(html$._TrustedHtmlTreeSanitizer.__proto__),
    sanitizeTree: dart.fnType(dart.void, [html$.Node])
  }));
  html$.UriPolicy = class UriPolicy extends core.Object {
    static new() {
      return new html$._SameOriginUriPolicy.new();
    }
  };
  (html$.UriPolicy[dart.mixinNew] = function() {
  }).prototype = html$.UriPolicy.prototype;
  dart.addTypeTests(html$.UriPolicy);
  const _hiddenAnchor = Symbol('_hiddenAnchor');
  const _loc = Symbol('_loc');
  html$._SameOriginUriPolicy = class _SameOriginUriPolicy extends core.Object {
    allowsUri(uri) {
      this[_hiddenAnchor].href = uri;
      return this[_hiddenAnchor].hostname == this[_loc].hostname && this[_hiddenAnchor].port == this[_loc].port && this[_hiddenAnchor].protocol == this[_loc].protocol || this[_hiddenAnchor].hostname === "" && this[_hiddenAnchor].port === "" && (this[_hiddenAnchor].protocol === ":" || this[_hiddenAnchor].protocol === "");
    }
  };
  (html$._SameOriginUriPolicy.new = function() {
    this[_hiddenAnchor] = html$.AnchorElement.new();
    this[_loc] = html$.window[$location];
  }).prototype = html$._SameOriginUriPolicy.prototype;
  dart.addTypeTests(html$._SameOriginUriPolicy);
  html$._SameOriginUriPolicy[dart.implements] = () => [html$.UriPolicy];
  dart.setMethodSignature(html$._SameOriginUriPolicy, () => ({
    __proto__: dart.getMethods(html$._SameOriginUriPolicy.__proto__),
    allowsUri: dart.fnType(core.bool, [core.String])
  }));
  dart.setFieldSignature(html$._SameOriginUriPolicy, () => ({
    __proto__: dart.getFields(html$._SameOriginUriPolicy.__proto__),
    [_hiddenAnchor]: dart.finalFieldType(html$.AnchorElement),
    [_loc]: dart.finalFieldType(html$.Location)
  }));
  html$._ThrowsNodeValidator = class _ThrowsNodeValidator extends core.Object {
    allowsElement(element) {
      if (!dart.test(this.validator.allowsElement(element))) {
        dart.throw(new core.ArgumentError.new(html$.Element._safeTagName(element)));
      }
      return true;
    }
    allowsAttribute(element, attributeName, value) {
      if (!dart.test(this.validator.allowsAttribute(element, attributeName, value))) {
        dart.throw(new core.ArgumentError.new(dart.str(html$.Element._safeTagName(element)) + "[" + dart.str(attributeName) + "=\"" + dart.str(value) + "\"]"));
      }
    }
  };
  (html$._ThrowsNodeValidator.new = function(validator) {
    this.validator = validator;
  }).prototype = html$._ThrowsNodeValidator.prototype;
  dart.addTypeTests(html$._ThrowsNodeValidator);
  html$._ThrowsNodeValidator[dart.implements] = () => [html$.NodeValidator];
  dart.setMethodSignature(html$._ThrowsNodeValidator, () => ({
    __proto__: dart.getMethods(html$._ThrowsNodeValidator.__proto__),
    allowsElement: dart.fnType(core.bool, [html$.Element]),
    allowsAttribute: dart.fnType(core.bool, [html$.Element, core.String, core.String])
  }));
  dart.setFieldSignature(html$._ThrowsNodeValidator, () => ({
    __proto__: dart.getFields(html$._ThrowsNodeValidator.__proto__),
    validator: dart.finalFieldType(html$.NodeValidator)
  }));
  const _removeNode = Symbol('_removeNode');
  const _sanitizeElement = Symbol('_sanitizeElement');
  const _sanitizeUntrustedElement = Symbol('_sanitizeUntrustedElement');
  html$._ValidatingTreeSanitizer = class _ValidatingTreeSanitizer extends core.Object {
    sanitizeTree(node) {
      const walk = (function(node, parent) {
        this.sanitizeNode(node, parent);
        let child = node.lastChild;
        while (null != child) {
          let nextChild = null;
          try {
            nextChild = child[$previousNode];
          } catch (e$) {
            let e = dart.getThrown(e$);
            this[_removeNode](child, node);
            child = null;
            nextChild = node.lastChild;
          }
          if (child != null) walk(child, node);
          child = html$.Node._check(nextChild);
        }
      }).bind(this);
      dart.fn(walk, NodeAndNodeTovoid());
      walk(node, null);
    }
    [_removeNode](node, parent) {
      if (parent == null) {
        node[$remove]();
      } else {
        parent[_removeChild](node);
      }
    }
    [_sanitizeUntrustedElement](element, parent) {
      let corrupted = true;
      let attrs = null;
      let isAttr = null;
      try {
        attrs = dart.dload(element, 'attributes');
        isAttr = dart.dindex(attrs, "is");
        let corruptedTest1 = html$.Element._hasCorruptedAttributes(html$.Element._check(element));
        corrupted = dart.test(corruptedTest1) ? true : html$.Element._hasCorruptedAttributesAdditionalCheck(html$.Element._check(element));
      } catch (e$) {
        let e = dart.getThrown(e$);
      }
      let elementText = "element unprintable";
      try {
        elementText = dart.toString(element);
      } catch (e$0) {
        let e = dart.getThrown(e$0);
      }
      try {
        let elementTagName = html$.Element._safeTagName(element);
        this[_sanitizeElement](html$.Element._check(element), parent, corrupted, elementText, elementTagName, core.Map._check(attrs), core.String._check(isAttr));
      } catch (e$1) {
        let ex = dart.getThrown(e$1);
        if (core.ArgumentError.is(ex)) {
          dart.rethrow(e$1);
        } else {
          let e = ex;
          this[_removeNode](html$.Node._check(element), parent);
          html$.window[$console].warn("Removing corrupted element " + dart.str(elementText));
        }
      }
    }
    [_sanitizeElement](element, parent, corrupted, text, tag, attrs, isAttr) {
      if (false !== corrupted) {
        this[_removeNode](element, parent);
        html$.window[$console].warn("Removing element due to corrupted attributes on <" + dart.str(text) + ">");
        return;
      }
      if (!dart.test(this.validator.allowsElement(element))) {
        this[_removeNode](element, parent);
        html$.window[$console].warn("Removing disallowed element <" + dart.str(tag) + "> from " + dart.str(parent));
        return;
      }
      if (isAttr != null) {
        if (!dart.test(this.validator.allowsAttribute(element, "is", isAttr))) {
          this[_removeNode](element, parent);
          html$.window[$console].warn("Removing disallowed type extension " + ("<" + dart.str(tag) + " is=\"" + dart.str(isAttr) + "\">"));
          return;
        }
      }
      let keys = attrs[$keys][$toList]();
      for (let i = dart.notNull(attrs[$length]) - 1; i >= 0; --i) {
        let name = keys[$_get](i);
        if (!dart.test(this.validator.allowsAttribute(element, core.String._check(dart.dsend(name, 'toLowerCase', [])), core.String._check(attrs[$_get](name))))) {
          html$.window[$console].warn("Removing disallowed attribute " + ("<" + dart.str(tag) + " " + dart.str(name) + "=\"" + dart.str(attrs[$_get](name)) + "\">"));
          attrs[$remove](name);
        }
      }
      if (html$.TemplateElement.is(element)) {
        let template = element;
        this.sanitizeTree(template.content);
      }
    }
    sanitizeNode(node, parent) {
      switch (node.nodeType) {
        case html$.Node.ELEMENT_NODE:
        {
          this[_sanitizeUntrustedElement](node, parent);
          break;
        }
        case html$.Node.COMMENT_NODE:
        case html$.Node.DOCUMENT_FRAGMENT_NODE:
        case html$.Node.TEXT_NODE:
        case html$.Node.CDATA_SECTION_NODE:
        {
          break;
        }
        default:
        {
          this[_removeNode](node, parent);
        }
      }
    }
  };
  (html$._ValidatingTreeSanitizer.new = function(validator) {
    this.validator = validator;
  }).prototype = html$._ValidatingTreeSanitizer.prototype;
  dart.addTypeTests(html$._ValidatingTreeSanitizer);
  html$._ValidatingTreeSanitizer[dart.implements] = () => [html$.NodeTreeSanitizer];
  dart.setMethodSignature(html$._ValidatingTreeSanitizer, () => ({
    __proto__: dart.getMethods(html$._ValidatingTreeSanitizer.__proto__),
    sanitizeTree: dart.fnType(dart.void, [html$.Node]),
    [_removeNode]: dart.fnType(dart.void, [html$.Node, html$.Node]),
    [_sanitizeUntrustedElement]: dart.fnType(dart.void, [dart.dynamic, html$.Node]),
    [_sanitizeElement]: dart.fnType(dart.void, [html$.Element, html$.Node, core.bool, core.String, core.String, core.Map, core.String]),
    sanitizeNode: dart.fnType(dart.void, [html$.Node, html$.Node])
  }));
  dart.setFieldSignature(html$._ValidatingTreeSanitizer, () => ({
    __proto__: dart.getFields(html$._ValidatingTreeSanitizer.__proto__),
    validator: dart.fieldType(html$.NodeValidator)
  }));
  html_common.convertDartToNative_SerializedScriptValue = function(value) {
    return html_common.convertDartToNative_PrepareForStructuredClone(value);
  };
  html_common.convertNativeToDart_SerializedScriptValue = function(object) {
    return html_common.convertNativeToDart_AcceptStructuredClone(object, {mustCopy: true});
  };
  html_common._StructuredClone = class _StructuredClone extends core.Object {
    findSlot(value) {
      let length = this.values[$length];
      for (let i = 0; i < dart.notNull(length); i++) {
        if (core.identical(this.values[$_get](i), value)) return i;
      }
      this.values[$add](value);
      this.copies[$add](null);
      return length;
    }
    readSlot(i) {
      return this.copies[$_get](i);
    }
    writeSlot(i, x) {
      this.copies[$_set](i, x);
    }
    cleanupSlots() {}
    walk(e) {
      if (e == null) return e;
      if (typeof e == 'boolean') return e;
      if (typeof e == 'number') return e;
      if (typeof e == 'string') return e;
      if (core.DateTime.is(e)) {
        return html_common.convertDartToNative_DateTime(e);
      }
      if (core.RegExp.is(e)) {
        dart.throw(new core.UnimplementedError.new("structured clone of RegExp"));
      }
      if (html$.File.is(e)) return e;
      if (html$.Blob.is(e)) return e;
      if (html$.FileList.is(e)) return e;
      if (html$.ImageData.is(e)) return e;
      if (dart.test(this.cloneNotRequired(e))) return e;
      if (core.Map.is(e)) {
        let slot = this.findSlot(e);
        let copy = this.readSlot(slot);
        if (copy != null) return copy;
        copy = this.newJsMap();
        this.writeSlot(slot, copy);
        e[$forEach](dart.fn((key, value) => {
          this.putIntoMap(copy, key, this.walk(value));
        }, dynamicAnddynamicToNull()));
        return copy;
      }
      if (core.List.is(e)) {
        let slot = this.findSlot(e);
        let copy = this.readSlot(slot);
        if (copy != null) return copy;
        copy = this.copyList(e, slot);
        return copy;
      }
      dart.throw(new core.UnimplementedError.new("structured clone of other type"));
    }
    copyList(e, slot) {
      let i = 0;
      let length = e[$length];
      let copy = this.newJsList(length);
      this.writeSlot(slot, copy);
      for (; i < dart.notNull(length); i++) {
        copy[$_set](i, this.walk(e[$_get](i)));
      }
      return copy;
    }
    convertDartToNative_PrepareForStructuredClone(value) {
      let copy = this.walk(value);
      this.cleanupSlots();
      return copy;
    }
  };
  (html_common._StructuredClone.new = function() {
    this.values = [];
    this.copies = [];
  }).prototype = html_common._StructuredClone.prototype;
  dart.addTypeTests(html_common._StructuredClone);
  dart.setMethodSignature(html_common._StructuredClone, () => ({
    __proto__: dart.getMethods(html_common._StructuredClone.__proto__),
    findSlot: dart.fnType(core.int, [dart.dynamic]),
    readSlot: dart.fnType(dart.dynamic, [core.int]),
    writeSlot: dart.fnType(dart.dynamic, [core.int, dart.dynamic]),
    cleanupSlots: dart.fnType(dart.dynamic, []),
    walk: dart.fnType(dart.dynamic, [dart.dynamic]),
    copyList: dart.fnType(core.List, [core.List, core.int]),
    convertDartToNative_PrepareForStructuredClone: dart.fnType(dart.dynamic, [dart.dynamic])
  }));
  dart.setFieldSignature(html_common._StructuredClone, () => ({
    __proto__: dart.getFields(html_common._StructuredClone.__proto__),
    values: dart.fieldType(core.List),
    copies: dart.fieldType(core.List)
  }));
  html_common._AcceptStructuredClone = class _AcceptStructuredClone extends core.Object {
    findSlot(value) {
      let length = this.values[$length];
      for (let i = 0; i < dart.notNull(length); i++) {
        if (dart.test(this.identicalInJs(this.values[$_get](i), value))) return i;
      }
      this.values[$add](value);
      this.copies[$add](null);
      return length;
    }
    readSlot(i) {
      return this.copies[$_get](i);
    }
    writeSlot(i, x) {
      this.copies[$_set](i, x);
    }
    walk(e) {
      if (e == null) return e;
      if (typeof e == 'boolean') return e;
      if (typeof e == 'number') return e;
      if (typeof e == 'string') return e;
      if (dart.test(html_common.isJavaScriptDate(e))) {
        return html_common.convertNativeToDart_DateTime(e);
      }
      if (dart.test(html_common.isJavaScriptRegExp(e))) {
        dart.throw(new core.UnimplementedError.new("structured clone of RegExp"));
      }
      if (dart.test(html_common.isJavaScriptPromise(e))) {
        return html_common.convertNativePromiseToDartFuture(e);
      }
      if (dart.test(html_common.isJavaScriptSimpleObject(e))) {
        let slot = this.findSlot(e);
        let copy = this.readSlot(slot);
        if (copy != null) return copy;
        copy = new _js_helper.LinkedMap.new();
        this.writeSlot(slot, copy);
        this.forEachJsField(e, dart.fn((key, value) => dart.dsetindex(copy, key, this.walk(value)), dynamicAnddynamicTodynamic()));
        return copy;
      }
      if (dart.test(html_common.isJavaScriptArray(e))) {
        let l = e;
        let slot = this.findSlot(l);
        let copy = this.readSlot(slot);
        if (copy != null) return copy;
        let length = core.int._check(dart.dload(l, 'length'));
        copy = dart.test(this.mustCopy) ? this.newDartList(length) : l;
        this.writeSlot(slot, copy);
        for (let i = 0; i < dart.notNull(length); i++) {
          dart.dsetindex(copy, i, this.walk(dart.dindex(l, i)));
        }
        return copy;
      }
      return e;
    }
    convertNativeToDart_AcceptStructuredClone(object, opts) {
      let mustCopy = opts && 'mustCopy' in opts ? opts.mustCopy : false;
      this.mustCopy = core.bool._check(mustCopy);
      let copy = this.walk(object);
      return copy;
    }
  };
  (html_common._AcceptStructuredClone.new = function() {
    this.values = [];
    this.copies = [];
    this.mustCopy = false;
  }).prototype = html_common._AcceptStructuredClone.prototype;
  dart.addTypeTests(html_common._AcceptStructuredClone);
  dart.setMethodSignature(html_common._AcceptStructuredClone, () => ({
    __proto__: dart.getMethods(html_common._AcceptStructuredClone.__proto__),
    findSlot: dart.fnType(core.int, [dart.dynamic]),
    readSlot: dart.fnType(dart.dynamic, [core.int]),
    writeSlot: dart.fnType(dart.dynamic, [core.int, dart.dynamic]),
    walk: dart.fnType(dart.dynamic, [dart.dynamic]),
    convertNativeToDart_AcceptStructuredClone: dart.fnType(dart.dynamic, [dart.dynamic], {mustCopy: dart.dynamic})
  }));
  dart.setFieldSignature(html_common._AcceptStructuredClone, () => ({
    __proto__: dart.getFields(html_common._AcceptStructuredClone.__proto__),
    values: dart.fieldType(core.List),
    copies: dart.fieldType(core.List),
    mustCopy: dart.fieldType(core.bool)
  }));
  html_common.ContextAttributes = class ContextAttributes extends core.Object {
    get alpha() {
      return this[alpha$0];
    }
    set alpha(value) {
      this[alpha$0] = value;
    }
    get antialias() {
      return this[antialias$];
    }
    set antialias(value) {
      this[antialias$] = value;
    }
    get depth() {
      return this[depth$];
    }
    set depth(value) {
      this[depth$] = value;
    }
    get premultipliedAlpha() {
      return this[premultipliedAlpha$];
    }
    set premultipliedAlpha(value) {
      this[premultipliedAlpha$] = value;
    }
    get preserveDrawingBuffer() {
      return this[preserveDrawingBuffer$];
    }
    set preserveDrawingBuffer(value) {
      this[preserveDrawingBuffer$] = value;
    }
    get stencil() {
      return this[stencil$];
    }
    set stencil(value) {
      this[stencil$] = value;
    }
    get failIfMajorPerformanceCaveat() {
      return this[failIfMajorPerformanceCaveat$];
    }
    set failIfMajorPerformanceCaveat(value) {
      this[failIfMajorPerformanceCaveat$] = value;
    }
  };
  (html_common.ContextAttributes.new = function(alpha, antialias, depth, failIfMajorPerformanceCaveat, premultipliedAlpha, preserveDrawingBuffer, stencil) {
    this[alpha$0] = alpha;
    this[antialias$] = antialias;
    this[depth$] = depth;
    this[failIfMajorPerformanceCaveat$] = failIfMajorPerformanceCaveat;
    this[premultipliedAlpha$] = premultipliedAlpha;
    this[preserveDrawingBuffer$] = preserveDrawingBuffer;
    this[stencil$] = stencil;
  }).prototype = html_common.ContextAttributes.prototype;
  dart.addTypeTests(html_common.ContextAttributes);
  const alpha$0 = Symbol("ContextAttributes.alpha");
  const antialias$ = Symbol("ContextAttributes.antialias");
  const depth$ = Symbol("ContextAttributes.depth");
  const premultipliedAlpha$ = Symbol("ContextAttributes.premultipliedAlpha");
  const preserveDrawingBuffer$ = Symbol("ContextAttributes.preserveDrawingBuffer");
  const stencil$ = Symbol("ContextAttributes.stencil");
  const failIfMajorPerformanceCaveat$ = Symbol("ContextAttributes.failIfMajorPerformanceCaveat");
  dart.setFieldSignature(html_common.ContextAttributes, () => ({
    __proto__: dart.getFields(html_common.ContextAttributes.__proto__),
    alpha: dart.fieldType(core.bool),
    antialias: dart.fieldType(core.bool),
    depth: dart.fieldType(core.bool),
    premultipliedAlpha: dart.fieldType(core.bool),
    preserveDrawingBuffer: dart.fieldType(core.bool),
    stencil: dart.fieldType(core.bool),
    failIfMajorPerformanceCaveat: dart.fieldType(core.bool)
  }));
  html_common.convertNativeToDart_ContextAttributes = function(nativeContextAttributes) {
    return new html_common.ContextAttributes.new(nativeContextAttributes.alpha, nativeContextAttributes.antialias, nativeContextAttributes.depth, nativeContextAttributes.failIfMajorPerformanceCaveat, nativeContextAttributes.premultipliedAlpha, nativeContextAttributes.preserveDrawingBuffer, nativeContextAttributes.stencil);
  };
  html_common._TypedImageData = class _TypedImageData extends core.Object {
    get data() {
      return this[data$9];
    }
    set data(value) {
      super.data = value;
    }
    get height() {
      return this[height$13];
    }
    set height(value) {
      super.height = value;
    }
    get width() {
      return this[width$15];
    }
    set width(value) {
      super.width = value;
    }
  };
  (html_common._TypedImageData.new = function(data, height, width) {
    this[data$9] = data;
    this[height$13] = height;
    this[width$15] = width;
  }).prototype = html_common._TypedImageData.prototype;
  dart.addTypeTests(html_common._TypedImageData);
  const data$9 = Symbol("_TypedImageData.data");
  const height$13 = Symbol("_TypedImageData.height");
  const width$15 = Symbol("_TypedImageData.width");
  html_common._TypedImageData[dart.implements] = () => [html$.ImageData];
  dart.setFieldSignature(html_common._TypedImageData, () => ({
    __proto__: dart.getFields(html_common._TypedImageData.__proto__),
    data: dart.finalFieldType(typed_data.Uint8ClampedList),
    height: dart.finalFieldType(core.int),
    width: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionAccessors(html_common._TypedImageData, ['data', 'height', 'width']);
  html_common.convertNativeToDart_ImageData = function(nativeImageData) {
    0;
    if (html$.ImageData.is(nativeImageData)) {
      let data = nativeImageData.data;
      if (data.constructor === Array) {
        if (typeof CanvasPixelArray !== "undefined") {
          data.constructor = CanvasPixelArray;
          data.BYTES_PER_ELEMENT = 1;
        }
      }
      return nativeImageData;
    }
    return new html_common._TypedImageData.new(nativeImageData.data, nativeImageData.height, nativeImageData.width);
  };
  html_common.convertDartToNative_ImageData = function(imageData) {
    if (html_common._TypedImageData.is(imageData)) {
      return {data: imageData.data, height: imageData.height, width: imageData.width};
    }
    return imageData;
  };
  html_common.convertNativeToDart_Dictionary = function(object) {
    if (object == null) return null;
    let dict = new (IdentityMapOfString$dynamic()).new();
    let keys = Object.getOwnPropertyNames(object);
    for (let key of core.Iterable._check(keys)) {
      dict[$_set](core.String._check(key), object[key]);
    }
    return dict;
  };
  html_common.convertDartToNative_Dictionary = function(dict, postCreate) {
    if (postCreate === void 0) postCreate = null;
    if (dict == null) return null;
    let object = {};
    if (postCreate != null) {
      postCreate(object);
    }
    dict[$forEach](dart.fn((key, value) => {
      object[key] = value;
    }, dynamicAnddynamicToNull()));
    return object;
  };
  html_common.convertDartToNative_StringArray = function(input) {
    return input;
  };
  html_common.convertNativeToDart_DateTime = function(date) {
    let millisSinceEpoch = date.getTime();
    return new core.DateTime.fromMillisecondsSinceEpoch(millisSinceEpoch, {isUtc: true});
  };
  html_common.convertDartToNative_DateTime = function(date) {
    return new Date(date.millisecondsSinceEpoch);
  };
  html_common.convertDartToNative_PrepareForStructuredClone = function(value) {
    return new html_common._StructuredCloneDart2Js.new().convertDartToNative_PrepareForStructuredClone(value);
  };
  html_common.convertNativeToDart_AcceptStructuredClone = function(object, opts) {
    let mustCopy = opts && 'mustCopy' in opts ? opts.mustCopy : false;
    return new html_common._AcceptStructuredCloneDart2Js.new().convertNativeToDart_AcceptStructuredClone(object, {mustCopy: mustCopy});
  };
  html_common._StructuredCloneDart2Js = class _StructuredCloneDart2Js extends html_common._StructuredClone {
    newJsMap() {
      return {};
    }
    putIntoMap(map, key, value) {
      return map[key] = value;
    }
    newJsList(length) {
      return new Array(length);
    }
    cloneNotRequired(e) {
      return _native_typed_data.NativeByteBuffer.is(e) || _native_typed_data.NativeTypedData.is(e);
    }
  };
  (html_common._StructuredCloneDart2Js.new = function() {
    html_common._StructuredCloneDart2Js.__proto__.new.call(this);
  }).prototype = html_common._StructuredCloneDart2Js.prototype;
  dart.addTypeTests(html_common._StructuredCloneDart2Js);
  dart.setMethodSignature(html_common._StructuredCloneDart2Js, () => ({
    __proto__: dart.getMethods(html_common._StructuredCloneDart2Js.__proto__),
    newJsMap: dart.fnType(dart.dynamic, []),
    putIntoMap: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
    newJsList: dart.fnType(core.List, [dart.dynamic]),
    cloneNotRequired: dart.fnType(core.bool, [dart.dynamic])
  }));
  html_common._AcceptStructuredCloneDart2Js = class _AcceptStructuredCloneDart2Js extends html_common._AcceptStructuredClone {
    newJsList(length) {
      return new Array(length);
    }
    newDartList(length) {
      return this.newJsList(length);
    }
    identicalInJs(a, b) {
      return core.identical(a, b);
    }
    forEachJsField(object, action) {
      for (let key of Object.keys(object)) {
        action(key, object[key]);
      }
    }
  };
  (html_common._AcceptStructuredCloneDart2Js.new = function() {
    html_common._AcceptStructuredCloneDart2Js.__proto__.new.call(this);
  }).prototype = html_common._AcceptStructuredCloneDart2Js.prototype;
  dart.addTypeTests(html_common._AcceptStructuredCloneDart2Js);
  dart.setMethodSignature(html_common._AcceptStructuredCloneDart2Js, () => ({
    __proto__: dart.getMethods(html_common._AcceptStructuredCloneDart2Js.__proto__),
    newJsList: dart.fnType(core.List, [dart.dynamic]),
    newDartList: dart.fnType(core.List, [dart.dynamic]),
    identicalInJs: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
    forEachJsField: dart.fnType(dart.void, [dart.dynamic, dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic])])
  }));
  html_common.isJavaScriptDate = function(value) {
    return value instanceof Date;
  };
  html_common.isJavaScriptRegExp = function(value) {
    return value instanceof RegExp;
  };
  html_common.isJavaScriptArray = function(value) {
    return value instanceof Array;
  };
  html_common.isJavaScriptSimpleObject = function(value) {
    let proto = Object.getPrototypeOf(value);
    return proto === Object.prototype || proto === null;
  };
  html_common.isImmutableJavaScriptArray = function(value) {
    return !!value.immutable$list;
  };
  html_common.isJavaScriptPromise = function(value) {
    return typeof Promise != "undefined" && value instanceof Promise;
  };
  html_common.convertNativePromiseToDartFuture = function(promise) {
    let completer = async.Completer.new();
    let then = _js_helper.convertDartClosureToJS(dynamicTovoid(), dart.fn(result => completer.complete(result), dynamicTovoid()), 1);
    let error = _js_helper.convertDartClosureToJS(dynamicTovoid(), dart.fn(result => completer.completeError(result), dynamicTovoid()), 1);
    let newPromise = promise.then(then).catch(error);
    return completer.future;
  };
  dart.defineLazy(html_common, {
    /*html_common._serializedScriptValue*/get _serializedScriptValue() {
      return "num|String|bool|" + "JSExtendableArray|=Object|" + "Blob|File|NativeByteBuffer|NativeTypedData";
    },
    /*html_common.annotation_Creates_SerializedScriptValue*/get annotation_Creates_SerializedScriptValue() {
      return dart.const(new _js_helper.Creates.new("num|String|bool|JSExtendableArray|=Object|Blob|File|NativeByteBuffer|NativeTypedData"));
    },
    /*html_common.annotation_Returns_SerializedScriptValue*/get annotation_Returns_SerializedScriptValue() {
      return dart.const(new _js_helper.Returns.new("num|String|bool|JSExtendableArray|=Object|Blob|File|NativeByteBuffer|NativeTypedData"));
    }
  });
  html_common.Device = class Device extends core.Object {
    static get userAgent() {
      return html$.window.navigator.userAgent;
    }
    static get isOpera() {
      if (html_common.Device._isOpera == null) {
        html_common.Device._isOpera = html_common.Device.userAgent[$contains]("Opera", 0);
      }
      return html_common.Device._isOpera;
    }
    static get isIE() {
      if (html_common.Device._isIE == null) {
        html_common.Device._isIE = !dart.test(html_common.Device.isOpera) && html_common.Device.userAgent[$contains]("Trident/", 0);
      }
      return html_common.Device._isIE;
    }
    static get isFirefox() {
      if (html_common.Device._isFirefox == null) {
        html_common.Device._isFirefox = html_common.Device.userAgent[$contains]("Firefox", 0);
      }
      return html_common.Device._isFirefox;
    }
    static get isWebKit() {
      if (html_common.Device._isWebKit == null) {
        html_common.Device._isWebKit = !dart.test(html_common.Device.isOpera) && html_common.Device.userAgent[$contains]("WebKit", 0);
      }
      return html_common.Device._isWebKit;
    }
    static get cssPrefix() {
      let prefix = html_common.Device._cachedCssPrefix;
      if (prefix != null) return prefix;
      if (dart.test(html_common.Device.isFirefox)) {
        prefix = "-moz-";
      } else if (dart.test(html_common.Device.isIE)) {
        prefix = "-ms-";
      } else if (dart.test(html_common.Device.isOpera)) {
        prefix = "-o-";
      } else {
        prefix = "-webkit-";
      }
      return html_common.Device._cachedCssPrefix = prefix;
    }
    static get propertyPrefix() {
      let prefix = html_common.Device._cachedPropertyPrefix;
      if (prefix != null) return prefix;
      if (dart.test(html_common.Device.isFirefox)) {
        prefix = "moz";
      } else if (dart.test(html_common.Device.isIE)) {
        prefix = "ms";
      } else if (dart.test(html_common.Device.isOpera)) {
        prefix = "o";
      } else {
        prefix = "webkit";
      }
      return html_common.Device._cachedPropertyPrefix = prefix;
    }
    static isEventTypeSupported(eventType) {
      try {
        let e = html$.Event.eventType(eventType, "");
        return html$.Event.is(e);
      } catch (e$) {
        let _ = dart.getThrown(e$);
      }
      return false;
    }
  };
  (html_common.Device.new = function() {
  }).prototype = html_common.Device.prototype;
  dart.addTypeTests(html_common.Device);
  dart.defineLazy(html_common.Device, {
    /*html_common.Device._isOpera*/get _isOpera() {
      return null;
    },
    set _isOpera(_) {},
    /*html_common.Device._isIE*/get _isIE() {
      return null;
    },
    set _isIE(_) {},
    /*html_common.Device._isFirefox*/get _isFirefox() {
      return null;
    },
    set _isFirefox(_) {},
    /*html_common.Device._isWebKit*/get _isWebKit() {
      return null;
    },
    set _isWebKit(_) {},
    /*html_common.Device._cachedCssPrefix*/get _cachedCssPrefix() {
      return null;
    },
    set _cachedCssPrefix(_) {},
    /*html_common.Device._cachedPropertyPrefix*/get _cachedPropertyPrefix() {
      return null;
    },
    set _cachedPropertyPrefix(_) {}
  });
  const _childNodes = Symbol('_childNodes');
  const _node = Symbol('_node');
  const _iterable$0 = Symbol('_iterable');
  const _filtered = Symbol('_filtered');
  html_common.FilteredElementList = class FilteredElementList extends collection.ListBase$(html$.Element) {
    get [_iterable$0]() {
      return IterableOfElement()._check(this[_childNodes][$where](dart.fn(n => html$.Element.is(n), NodeTobool()))[$map](html$.Element, dart.fn(n => html$.Element.as(n), NodeToElement())));
    }
    get [_filtered]() {
      return ListOfElement().from(this[_iterable$0], {growable: false});
    }
    forEach(f) {
      this[_filtered][$forEach](f);
    }
    _set(index, value) {
      html$.Element._check(value);
      this._get(index)[$replaceWith](value);
      return value;
    }
    set length(newLength) {
      let len = this.length;
      if (dart.notNull(newLength) >= dart.notNull(len)) {
        return;
      } else if (dart.notNull(newLength) < 0) {
        dart.throw(new core.ArgumentError.new("Invalid list length"));
      }
      this.removeRange(newLength, len);
    }
    add(value) {
      html$.Element._check(value);
      this[_childNodes][$add](value);
    }
    addAll(iterable) {
      IterableOfElement()._check(iterable);
      for (let element of iterable) {
        this.add(element);
      }
    }
    contains(needle) {
      if (!html$.Element.is(needle)) return false;
      let element = html$.Element._check(needle);
      return dart.equals(element.parentNode, this[_node]);
    }
    get reversed() {
      return this[_filtered][$reversed];
    }
    sort(compare) {
      if (compare === void 0) compare = null;
      dart.throw(new core.UnsupportedError.new("Cannot sort filtered list"));
    }
    setRange(start, end, iterable, skipCount) {
      IterableOfElement()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      dart.throw(new core.UnsupportedError.new("Cannot setRange on filtered list"));
    }
    fillRange(start, end, fillValue) {
      if (fillValue === void 0) fillValue = null;
      html$.Element._check(fillValue);
      dart.throw(new core.UnsupportedError.new("Cannot fillRange on filtered list"));
    }
    replaceRange(start, end, iterable) {
      IterableOfElement()._check(iterable);
      dart.throw(new core.UnsupportedError.new("Cannot replaceRange on filtered list"));
    }
    removeRange(start, end) {
      core.List.from(this[_iterable$0][$skip](start)[$take](dart.notNull(end) - dart.notNull(start)))[$forEach](dart.fn(el => dart.dsend(el, 'remove', []), dynamicTodynamic()));
    }
    clear() {
      this[_childNodes][$clear]();
    }
    removeLast() {
      let result = this[_iterable$0][$last];
      if (result != null) {
        result[$remove]();
      }
      return result;
    }
    insert(index, value) {
      html$.Element._check(value);
      if (index == this.length) {
        this.add(value);
      } else {
        let element = this[_iterable$0][$elementAt](index);
        element.parentNode.insertBefore(value, element);
      }
    }
    insertAll(index, iterable) {
      IterableOfElement()._check(iterable);
      if (index == this.length) {
        this.addAll(iterable);
      } else {
        let element = this[_iterable$0][$elementAt](index);
        element.parentNode[$insertAllBefore](iterable, element);
      }
    }
    removeAt(index) {
      let result = this._get(index);
      result[$remove]();
      return result;
    }
    remove(element) {
      if (!html$.Element.is(element)) return false;
      if (dart.test(this.contains(element))) {
        html$.Element.as(element)[$remove]();
        return true;
      } else {
        return false;
      }
    }
    get length() {
      return this[_iterable$0][$length];
    }
    _get(index) {
      return this[_iterable$0][$elementAt](index);
    }
    get iterator() {
      return this[_filtered][$iterator];
    }
    get rawList() {
      return this[_node].childNodes;
    }
  };
  (html_common.FilteredElementList.new = function(node) {
    this[_childNodes] = node[$nodes];
    this[_node] = node;
  }).prototype = html_common.FilteredElementList.prototype;
  dart.addTypeTests(html_common.FilteredElementList);
  html_common.FilteredElementList[dart.implements] = () => [html_common.NodeListWrapper];
  dart.setMethodSignature(html_common.FilteredElementList, () => ({
    __proto__: dart.getMethods(html_common.FilteredElementList.__proto__),
    forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.Element])]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.Element])]),
    _set: dart.fnType(dart.void, [core.int, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    add: dart.fnType(dart.void, [core.Object]),
    [$add]: dart.fnType(dart.void, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    contains: dart.fnType(core.bool, [core.Object]),
    [$contains]: dart.fnType(core.bool, [core.Object]),
    sort: dart.fnType(dart.void, [], [dart.fnType(core.int, [html$.Element, html$.Element])]),
    [$sort]: dart.fnType(dart.void, [], [dart.fnType(core.int, [html$.Element, html$.Element])]),
    setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    fillRange: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
    [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
    replaceRange: dart.fnType(dart.void, [core.int, core.int, core.Object]),
    [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object]),
    removeRange: dart.fnType(dart.void, [core.int, core.int]),
    [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, []),
    removeLast: dart.fnType(html$.Element, []),
    [$removeLast]: dart.fnType(html$.Element, []),
    insert: dart.fnType(dart.void, [core.int, core.Object]),
    [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
    insertAll: dart.fnType(dart.void, [core.int, core.Object]),
    [$insertAll]: dart.fnType(dart.void, [core.int, core.Object]),
    removeAt: dart.fnType(html$.Element, [core.int]),
    [$removeAt]: dart.fnType(html$.Element, [core.int]),
    remove: dart.fnType(core.bool, [core.Object]),
    [$remove]: dart.fnType(core.bool, [core.Object]),
    _get: dart.fnType(html$.Element, [core.int]),
    [$_get]: dart.fnType(html$.Element, [core.int])
  }));
  dart.setGetterSignature(html_common.FilteredElementList, () => ({
    __proto__: dart.getGetters(html_common.FilteredElementList.__proto__),
    [_iterable$0]: core.Iterable$(html$.Element),
    [_filtered]: core.List$(html$.Element),
    reversed: core.Iterable$(html$.Element),
    [$reversed]: core.Iterable$(html$.Element),
    length: core.int,
    [$length]: core.int,
    iterator: core.Iterator$(html$.Element),
    [$iterator]: core.Iterator$(html$.Element),
    rawList: core.List$(html$.Node)
  }));
  dart.setSetterSignature(html_common.FilteredElementList, () => ({
    __proto__: dart.getSetters(html_common.FilteredElementList.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.setFieldSignature(html_common.FilteredElementList, () => ({
    __proto__: dart.getFields(html_common.FilteredElementList.__proto__),
    [_node]: dart.finalFieldType(html$.Node),
    [_childNodes]: dart.finalFieldType(ListOfNode())
  }));
  dart.defineExtensionMethods(html_common.FilteredElementList, [
    'forEach',
    '_set',
    'add',
    'addAll',
    'contains',
    'sort',
    'setRange',
    'fillRange',
    'replaceRange',
    'removeRange',
    'clear',
    'removeLast',
    'insert',
    'insertAll',
    'removeAt',
    'remove',
    '_get'
  ]);
  dart.defineExtensionAccessors(html_common.FilteredElementList, ['length', 'reversed', 'iterator']);
  html_common.Lists = class Lists extends core.Object {
    static indexOf(a, element, startIndex, endIndex) {
      if (dart.notNull(startIndex) >= dart.notNull(a[$length])) {
        return -1;
      }
      if (dart.notNull(startIndex) < 0) {
        startIndex = 0;
      }
      for (let i = startIndex; dart.notNull(i) < dart.notNull(endIndex); i = dart.notNull(i) + 1) {
        if (dart.equals(a[$_get](i), element)) {
          return i;
        }
      }
      return -1;
    }
    static lastIndexOf(a, element, startIndex) {
      if (dart.notNull(startIndex) < 0) {
        return -1;
      }
      if (dart.notNull(startIndex) >= dart.notNull(a[$length])) {
        startIndex = dart.notNull(a[$length]) - 1;
      }
      for (let i = startIndex; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
        if (dart.equals(a[$_get](i), element)) {
          return i;
        }
      }
      return -1;
    }
    static getRange(a, start, end, accumulator) {
      if (dart.notNull(start) < 0) dart.throw(new core.RangeError.value(start));
      if (dart.notNull(end) < dart.notNull(start)) dart.throw(new core.RangeError.value(end));
      if (dart.notNull(end) > dart.notNull(a[$length])) dart.throw(new core.RangeError.value(end));
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        accumulator[$add](a[$_get](i));
      }
      return accumulator;
    }
  };
  (html_common.Lists.new = function() {
  }).prototype = html_common.Lists.prototype;
  dart.addTypeTests(html_common.Lists);
  html_common.NodeListWrapper = class NodeListWrapper extends core.Object {};
  (html_common.NodeListWrapper.new = function() {
  }).prototype = html_common.NodeListWrapper.prototype;
  dart.addTypeTests(html_common.NodeListWrapper);
  svg$._SvgElementFactoryProvider = class _SvgElementFactoryProvider extends core.Object {
    static createSvgElement_tag(tag) {
      let temp = html$.document[$createElementNS]("http://www.w3.org/2000/svg", tag);
      return svg$.SvgElement._check(temp);
    }
  };
  (svg$._SvgElementFactoryProvider.new = function() {
  }).prototype = svg$._SvgElementFactoryProvider.prototype;
  dart.addTypeTests(svg$._SvgElementFactoryProvider);
  const _children$ = Symbol('_children');
  const _svgClassName = Symbol('_svgClassName');
  svg$.SvgElement = class SvgElement extends html$.Element {
    static tag(tag) {
      return svg$.SvgElement._check(html$.document[$createElementNS]("http://www.w3.org/2000/svg", tag));
    }
    static svg(svg, opts) {
      let validator = opts && 'validator' in opts ? opts.validator : null;
      let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
      if (validator == null && treeSanitizer == null) {
        validator = new html$.NodeValidatorBuilder.common();
        validator.allowSvg();
      }
      let match = svg$.SvgElement._START_TAG_REGEXP.firstMatch(svg);
      let parentElement = null;
      if (match != null && match.group(1)[$toLowerCase]() === "svg") {
        parentElement = html$.document.body;
      } else {
        parentElement = svg$.SvgSvgElement.new();
      }
      let fragment = dart.dsend(parentElement, 'createFragment', [svg], {validator: validator, treeSanitizer: treeSanitizer});
      return svg$.SvgElement._check(dart.dload(dart.dsend(dart.dload(fragment, 'nodes'), 'where', [dart.fn(e => svg$.SvgElement.is(e), dynamicTobool())]), 'single'));
    }
    get [$classes]() {
      return new svg$.AttributeClassSet.new(this);
    }
    set [$classes](value) {
      super[$classes] = value;
    }
    get [$children]() {
      return new html_common.FilteredElementList.new(this);
    }
    set [$children](value) {
      let children = this[$children];
      children[$clear]();
      children[$addAll](value);
    }
    get [$outerHtml]() {
      let container = html$.DivElement.new();
      let cloned = svg$.SvgElement._check(this[$clone](true));
      container[$children][$add](cloned);
      return container[$innerHtml];
    }
    get [$innerHtml]() {
      let container = html$.DivElement.new();
      let cloned = svg$.SvgElement._check(this[$clone](true));
      container[$children][$addAll](cloned[$children]);
      return container[$innerHtml];
    }
    set [$innerHtml](value) {
      this[$setInnerHtml](value);
    }
    [$createFragment](svg, opts) {
      let validator = opts && 'validator' in opts ? opts.validator : null;
      let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
      if (treeSanitizer == null) {
        if (validator == null) {
          validator = new html$.NodeValidatorBuilder.common();
          validator.allowSvg();
        }
        treeSanitizer = html$.NodeTreeSanitizer.new(validator);
      }
      let html = "<svg version=\"1.1\">" + dart.str(svg) + "</svg>";
      let fragment = html$.document.body[$createFragment](html, {treeSanitizer: treeSanitizer});
      let svgFragment = html$.DocumentFragment.new();
      let root = fragment[$nodes][$single];
      while (root.firstChild != null) {
        svgFragment[$append](root.firstChild);
      }
      return svgFragment;
    }
    [$insertAdjacentText](where, text) {
      dart.throw(new core.UnsupportedError.new("Cannot invoke insertAdjacentText on SVG."));
    }
    [$insertAdjacentHtml](where, text, opts) {
      let validator = opts && 'validator' in opts ? opts.validator : null;
      let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
      dart.throw(new core.UnsupportedError.new("Cannot invoke insertAdjacentHtml on SVG."));
    }
    [$insertAdjacentElement](where, element) {
      dart.throw(new core.UnsupportedError.new("Cannot invoke insertAdjacentElement on SVG."));
    }
    get [_children$]() {
      dart.throw(new core.UnsupportedError.new("Cannot get _children on SVG."));
    }
    get [$isContentEditable]() {
      return false;
    }
    [$click]() {
      dart.throw(new core.UnsupportedError.new("Cannot invoke click SVG."));
    }
    static isTagSupported(tag) {
      let e = svg$.SvgElement.tag(tag);
      return svg$.SvgElement.is(e) && !html$.UnknownElement.is(e);
    }
    get [_svgClassName]() {
      return this.className;
    }
    get [$ownerSvgElement]() {
      return this.ownerSVGElement;
    }
    get [$viewportElement]() {
      return this.viewportElement;
    }
    [$blur](...args) {
      return this.blur.apply(this, args);
    }
    [$focus](...args) {
      return this.focus.apply(this, args);
    }
    get [$nonce]() {
      return this.nonce;
    }
    set [$nonce](value) {
      this.nonce = value;
    }
    get [$onAbort]() {
      return svg$.SvgElement.abortEvent.forElement(this);
    }
    get [$onBlur]() {
      return svg$.SvgElement.blurEvent.forElement(this);
    }
    get [$onCanPlay]() {
      return svg$.SvgElement.canPlayEvent.forElement(this);
    }
    get [$onCanPlayThrough]() {
      return svg$.SvgElement.canPlayThroughEvent.forElement(this);
    }
    get [$onChange]() {
      return svg$.SvgElement.changeEvent.forElement(this);
    }
    get [$onClick]() {
      return svg$.SvgElement.clickEvent.forElement(this);
    }
    get [$onContextMenu]() {
      return svg$.SvgElement.contextMenuEvent.forElement(this);
    }
    get [$onDoubleClick]() {
      return svg$.SvgElement.doubleClickEvent.forElement(this);
    }
    get [$onDrag]() {
      return svg$.SvgElement.dragEvent.forElement(this);
    }
    get [$onDragEnd]() {
      return svg$.SvgElement.dragEndEvent.forElement(this);
    }
    get [$onDragEnter]() {
      return svg$.SvgElement.dragEnterEvent.forElement(this);
    }
    get [$onDragLeave]() {
      return svg$.SvgElement.dragLeaveEvent.forElement(this);
    }
    get [$onDragOver]() {
      return svg$.SvgElement.dragOverEvent.forElement(this);
    }
    get [$onDragStart]() {
      return svg$.SvgElement.dragStartEvent.forElement(this);
    }
    get [$onDrop]() {
      return svg$.SvgElement.dropEvent.forElement(this);
    }
    get [$onDurationChange]() {
      return svg$.SvgElement.durationChangeEvent.forElement(this);
    }
    get [$onEmptied]() {
      return svg$.SvgElement.emptiedEvent.forElement(this);
    }
    get [$onEnded]() {
      return svg$.SvgElement.endedEvent.forElement(this);
    }
    get [$onError]() {
      return svg$.SvgElement.errorEvent.forElement(this);
    }
    get [$onFocus]() {
      return svg$.SvgElement.focusEvent.forElement(this);
    }
    get [$onInput]() {
      return svg$.SvgElement.inputEvent.forElement(this);
    }
    get [$onInvalid]() {
      return svg$.SvgElement.invalidEvent.forElement(this);
    }
    get [$onKeyDown]() {
      return svg$.SvgElement.keyDownEvent.forElement(this);
    }
    get [$onKeyPress]() {
      return svg$.SvgElement.keyPressEvent.forElement(this);
    }
    get [$onKeyUp]() {
      return svg$.SvgElement.keyUpEvent.forElement(this);
    }
    get [$onLoad]() {
      return svg$.SvgElement.loadEvent.forElement(this);
    }
    get [$onLoadedData]() {
      return svg$.SvgElement.loadedDataEvent.forElement(this);
    }
    get [$onLoadedMetadata]() {
      return svg$.SvgElement.loadedMetadataEvent.forElement(this);
    }
    get [$onMouseDown]() {
      return svg$.SvgElement.mouseDownEvent.forElement(this);
    }
    get [$onMouseEnter]() {
      return svg$.SvgElement.mouseEnterEvent.forElement(this);
    }
    get [$onMouseLeave]() {
      return svg$.SvgElement.mouseLeaveEvent.forElement(this);
    }
    get [$onMouseMove]() {
      return svg$.SvgElement.mouseMoveEvent.forElement(this);
    }
    get [$onMouseOut]() {
      return svg$.SvgElement.mouseOutEvent.forElement(this);
    }
    get [$onMouseOver]() {
      return svg$.SvgElement.mouseOverEvent.forElement(this);
    }
    get [$onMouseUp]() {
      return svg$.SvgElement.mouseUpEvent.forElement(this);
    }
    get [$onMouseWheel]() {
      return svg$.SvgElement.mouseWheelEvent.forElement(this);
    }
    get [$onPause]() {
      return svg$.SvgElement.pauseEvent.forElement(this);
    }
    get [$onPlay]() {
      return svg$.SvgElement.playEvent.forElement(this);
    }
    get [$onPlaying]() {
      return svg$.SvgElement.playingEvent.forElement(this);
    }
    get [$onRateChange]() {
      return svg$.SvgElement.rateChangeEvent.forElement(this);
    }
    get [$onReset]() {
      return svg$.SvgElement.resetEvent.forElement(this);
    }
    get [$onResize]() {
      return svg$.SvgElement.resizeEvent.forElement(this);
    }
    get [$onScroll]() {
      return svg$.SvgElement.scrollEvent.forElement(this);
    }
    get [$onSeeked]() {
      return svg$.SvgElement.seekedEvent.forElement(this);
    }
    get [$onSeeking]() {
      return svg$.SvgElement.seekingEvent.forElement(this);
    }
    get [$onSelect]() {
      return svg$.SvgElement.selectEvent.forElement(this);
    }
    get [$onStalled]() {
      return svg$.SvgElement.stalledEvent.forElement(this);
    }
    get [$onSubmit]() {
      return svg$.SvgElement.submitEvent.forElement(this);
    }
    get [$onSuspend]() {
      return svg$.SvgElement.suspendEvent.forElement(this);
    }
    get [$onTimeUpdate]() {
      return svg$.SvgElement.timeUpdateEvent.forElement(this);
    }
    get [$onTouchCancel]() {
      return svg$.SvgElement.touchCancelEvent.forElement(this);
    }
    get [$onTouchEnd]() {
      return svg$.SvgElement.touchEndEvent.forElement(this);
    }
    get [$onTouchMove]() {
      return svg$.SvgElement.touchMoveEvent.forElement(this);
    }
    get [$onTouchStart]() {
      return svg$.SvgElement.touchStartEvent.forElement(this);
    }
    get [$onVolumeChange]() {
      return svg$.SvgElement.volumeChangeEvent.forElement(this);
    }
    get [$onWaiting]() {
      return svg$.SvgElement.waitingEvent.forElement(this);
    }
    get [$onWheel]() {
      return svg$.SvgElement.wheelEvent.forElement(this);
    }
  };
  (svg$.SvgElement.created = function() {
    this[ownerSvgElement] = null;
    this[viewportElement] = null;
    this[nonce$0] = null;
    svg$.SvgElement.__proto__.created.call(this);
  }).prototype = svg$.SvgElement.prototype;
  dart.addTypeTests(svg$.SvgElement);
  const ownerSvgElement = Symbol("SvgElement.ownerSvgElement");
  const viewportElement = Symbol("SvgElement.viewportElement");
  const nonce$0 = Symbol("SvgElement.nonce");
  svg$.SvgElement[dart.implements] = () => [html$.GlobalEventHandlers, html$.NoncedElement];
  dart.setGetterSignature(svg$.SvgElement, () => ({
    __proto__: dart.getGetters(svg$.SvgElement.__proto__),
    [_children$]: html$.HtmlCollection,
    [_svgClassName]: svg$.AnimatedString
  }));
  dart.setFieldSignature(svg$.SvgElement, () => ({
    __proto__: dart.getFields(svg$.SvgElement.__proto__),
    [$ownerSvgElement]: dart.finalFieldType(svg$.SvgSvgElement),
    [$viewportElement]: dart.finalFieldType(svg$.SvgElement),
    [$nonce]: dart.fieldType(core.String)
  }));
  dart.defineLazy(svg$.SvgElement, {
    /*svg$.SvgElement._START_TAG_REGEXP*/get _START_TAG_REGEXP() {
      return core.RegExp.new("<(\\w+)");
    },
    /*svg$.SvgElement.abortEvent*/get abortEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("abort"));
    },
    /*svg$.SvgElement.blurEvent*/get blurEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("blur"));
    },
    /*svg$.SvgElement.canPlayEvent*/get canPlayEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("canplay"));
    },
    /*svg$.SvgElement.canPlayThroughEvent*/get canPlayThroughEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("canplaythrough"));
    },
    /*svg$.SvgElement.changeEvent*/get changeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("change"));
    },
    /*svg$.SvgElement.clickEvent*/get clickEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("click"));
    },
    /*svg$.SvgElement.contextMenuEvent*/get contextMenuEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("contextmenu"));
    },
    /*svg$.SvgElement.doubleClickEvent*/get doubleClickEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("dblclick"));
    },
    /*svg$.SvgElement.dragEvent*/get dragEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("drag"));
    },
    /*svg$.SvgElement.dragEndEvent*/get dragEndEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragend"));
    },
    /*svg$.SvgElement.dragEnterEvent*/get dragEnterEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragenter"));
    },
    /*svg$.SvgElement.dragLeaveEvent*/get dragLeaveEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragleave"));
    },
    /*svg$.SvgElement.dragOverEvent*/get dragOverEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragover"));
    },
    /*svg$.SvgElement.dragStartEvent*/get dragStartEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragstart"));
    },
    /*svg$.SvgElement.dropEvent*/get dropEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("drop"));
    },
    /*svg$.SvgElement.durationChangeEvent*/get durationChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("durationchange"));
    },
    /*svg$.SvgElement.emptiedEvent*/get emptiedEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("emptied"));
    },
    /*svg$.SvgElement.endedEvent*/get endedEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("ended"));
    },
    /*svg$.SvgElement.errorEvent*/get errorEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("error"));
    },
    /*svg$.SvgElement.focusEvent*/get focusEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("focus"));
    },
    /*svg$.SvgElement.inputEvent*/get inputEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("input"));
    },
    /*svg$.SvgElement.invalidEvent*/get invalidEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("invalid"));
    },
    /*svg$.SvgElement.keyDownEvent*/get keyDownEvent() {
      return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keydown"));
    },
    /*svg$.SvgElement.keyPressEvent*/get keyPressEvent() {
      return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keypress"));
    },
    /*svg$.SvgElement.keyUpEvent*/get keyUpEvent() {
      return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keyup"));
    },
    /*svg$.SvgElement.loadEvent*/get loadEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("load"));
    },
    /*svg$.SvgElement.loadedDataEvent*/get loadedDataEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("loadeddata"));
    },
    /*svg$.SvgElement.loadedMetadataEvent*/get loadedMetadataEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("loadedmetadata"));
    },
    /*svg$.SvgElement.mouseDownEvent*/get mouseDownEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mousedown"));
    },
    /*svg$.SvgElement.mouseEnterEvent*/get mouseEnterEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseenter"));
    },
    /*svg$.SvgElement.mouseLeaveEvent*/get mouseLeaveEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseleave"));
    },
    /*svg$.SvgElement.mouseMoveEvent*/get mouseMoveEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mousemove"));
    },
    /*svg$.SvgElement.mouseOutEvent*/get mouseOutEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseout"));
    },
    /*svg$.SvgElement.mouseOverEvent*/get mouseOverEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseover"));
    },
    /*svg$.SvgElement.mouseUpEvent*/get mouseUpEvent() {
      return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseup"));
    },
    /*svg$.SvgElement.mouseWheelEvent*/get mouseWheelEvent() {
      return dart.const(new (EventStreamProviderOfWheelEvent()).new("mousewheel"));
    },
    /*svg$.SvgElement.pauseEvent*/get pauseEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("pause"));
    },
    /*svg$.SvgElement.playEvent*/get playEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("play"));
    },
    /*svg$.SvgElement.playingEvent*/get playingEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("playing"));
    },
    /*svg$.SvgElement.rateChangeEvent*/get rateChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("ratechange"));
    },
    /*svg$.SvgElement.resetEvent*/get resetEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("reset"));
    },
    /*svg$.SvgElement.resizeEvent*/get resizeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("resize"));
    },
    /*svg$.SvgElement.scrollEvent*/get scrollEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("scroll"));
    },
    /*svg$.SvgElement.seekedEvent*/get seekedEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("seeked"));
    },
    /*svg$.SvgElement.seekingEvent*/get seekingEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("seeking"));
    },
    /*svg$.SvgElement.selectEvent*/get selectEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("select"));
    },
    /*svg$.SvgElement.stalledEvent*/get stalledEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("stalled"));
    },
    /*svg$.SvgElement.submitEvent*/get submitEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("submit"));
    },
    /*svg$.SvgElement.suspendEvent*/get suspendEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("suspend"));
    },
    /*svg$.SvgElement.timeUpdateEvent*/get timeUpdateEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("timeupdate"));
    },
    /*svg$.SvgElement.touchCancelEvent*/get touchCancelEvent() {
      return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchcancel"));
    },
    /*svg$.SvgElement.touchEndEvent*/get touchEndEvent() {
      return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchend"));
    },
    /*svg$.SvgElement.touchMoveEvent*/get touchMoveEvent() {
      return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchmove"));
    },
    /*svg$.SvgElement.touchStartEvent*/get touchStartEvent() {
      return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchstart"));
    },
    /*svg$.SvgElement.volumeChangeEvent*/get volumeChangeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("volumechange"));
    },
    /*svg$.SvgElement.waitingEvent*/get waitingEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("waiting"));
    },
    /*svg$.SvgElement.wheelEvent*/get wheelEvent() {
      return dart.const(new (EventStreamProviderOfWheelEvent()).new("wheel"));
    }
  });
  dart.registerExtension("SVGElement", svg$.SvgElement);
  svg$.GraphicsElement = class GraphicsElement extends svg$.SvgElement {
    get [$farthestViewportElement]() {
      return this.farthestViewportElement;
    }
    get [$nearestViewportElement]() {
      return this.nearestViewportElement;
    }
    get [$transform]() {
      return this.transform;
    }
    [$getBBox](...args) {
      return this.getBBox.apply(this, args);
    }
    [$getCtm](...args) {
      return this.getCTM.apply(this, args);
    }
    [$getScreenCtm](...args) {
      return this.getScreenCTM.apply(this, args);
    }
    get [$requiredExtensions]() {
      return this.requiredExtensions;
    }
    get [$systemLanguage]() {
      return this.systemLanguage;
    }
  };
  (svg$.GraphicsElement.created = function() {
    this[farthestViewportElement] = null;
    this[nearestViewportElement] = null;
    this[transform] = null;
    this[requiredExtensions] = null;
    this[systemLanguage] = null;
    svg$.GraphicsElement.__proto__.created.call(this);
  }).prototype = svg$.GraphicsElement.prototype;
  dart.addTypeTests(svg$.GraphicsElement);
  const farthestViewportElement = Symbol("GraphicsElement.farthestViewportElement");
  const nearestViewportElement = Symbol("GraphicsElement.nearestViewportElement");
  const transform = Symbol("GraphicsElement.transform");
  const requiredExtensions = Symbol("GraphicsElement.requiredExtensions");
  const systemLanguage = Symbol("GraphicsElement.systemLanguage");
  svg$.GraphicsElement[dart.implements] = () => [svg$.Tests];
  dart.setMethodSignature(svg$.GraphicsElement, () => ({
    __proto__: dart.getMethods(svg$.GraphicsElement.__proto__),
    [$getBBox]: dart.fnType(svg$.Rect, []),
    [$getCtm]: dart.fnType(svg$.Matrix, []),
    [$getScreenCtm]: dart.fnType(svg$.Matrix, [])
  }));
  dart.setFieldSignature(svg$.GraphicsElement, () => ({
    __proto__: dart.getFields(svg$.GraphicsElement.__proto__),
    [$farthestViewportElement]: dart.finalFieldType(svg$.SvgElement),
    [$nearestViewportElement]: dart.finalFieldType(svg$.SvgElement),
    [$transform]: dart.finalFieldType(svg$.AnimatedTransformList),
    [$requiredExtensions]: dart.finalFieldType(svg$.StringList),
    [$systemLanguage]: dart.finalFieldType(svg$.StringList)
  }));
  dart.registerExtension("SVGGraphicsElement", svg$.GraphicsElement);
  svg$.AElement = class AElement extends svg$.GraphicsElement {
    static new() {
      return svg$.AElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("a"));
    }
    get [$target]() {
      return this.target;
    }
    get [$href]() {
      return this.href;
    }
  };
  (svg$.AElement.created = function() {
    this[target$7] = null;
    this[href$8] = null;
    svg$.AElement.__proto__.created.call(this);
  }).prototype = svg$.AElement.prototype;
  dart.addTypeTests(svg$.AElement);
  const target$7 = Symbol("AElement.target");
  const href$8 = Symbol("AElement.href");
  svg$.AElement[dart.implements] = () => [svg$.UriReference];
  dart.setFieldSignature(svg$.AElement, () => ({
    __proto__: dart.getFields(svg$.AElement.__proto__),
    [$target]: dart.finalFieldType(svg$.AnimatedString),
    [$href]: dart.finalFieldType(svg$.AnimatedString)
  }));
  dart.registerExtension("SVGAElement", svg$.AElement);
  svg$.Angle = class Angle extends _interceptors.Interceptor {
    get [$unitType]() {
      return this.unitType;
    }
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
    get [$valueAsString]() {
      return this.valueAsString;
    }
    set [$valueAsString](value) {
      this.valueAsString = value;
    }
    get [$valueInSpecifiedUnits]() {
      return this.valueInSpecifiedUnits;
    }
    set [$valueInSpecifiedUnits](value) {
      this.valueInSpecifiedUnits = value;
    }
    [$convertToSpecifiedUnits](...args) {
      return this.convertToSpecifiedUnits.apply(this, args);
    }
    [$newValueSpecifiedUnits](...args) {
      return this.newValueSpecifiedUnits.apply(this, args);
    }
  };
  dart.addTypeTests(svg$.Angle);
  const unitType = Symbol("Angle.unitType");
  const value$17 = Symbol("Angle.value");
  const valueAsString = Symbol("Angle.valueAsString");
  const valueInSpecifiedUnits = Symbol("Angle.valueInSpecifiedUnits");
  dart.setMethodSignature(svg$.Angle, () => ({
    __proto__: dart.getMethods(svg$.Angle.__proto__),
    [$convertToSpecifiedUnits]: dart.fnType(dart.void, [core.int]),
    [$newValueSpecifiedUnits]: dart.fnType(dart.void, [core.int, core.num])
  }));
  dart.setFieldSignature(svg$.Angle, () => ({
    __proto__: dart.getFields(svg$.Angle.__proto__),
    [$unitType]: dart.finalFieldType(core.int),
    [$value]: dart.fieldType(core.num),
    [$valueAsString]: dart.fieldType(core.String),
    [$valueInSpecifiedUnits]: dart.fieldType(core.num)
  }));
  dart.defineLazy(svg$.Angle, {
    /*svg$.Angle.SVG_ANGLETYPE_DEG*/get SVG_ANGLETYPE_DEG() {
      return 2;
    },
    /*svg$.Angle.SVG_ANGLETYPE_GRAD*/get SVG_ANGLETYPE_GRAD() {
      return 4;
    },
    /*svg$.Angle.SVG_ANGLETYPE_RAD*/get SVG_ANGLETYPE_RAD() {
      return 3;
    },
    /*svg$.Angle.SVG_ANGLETYPE_UNKNOWN*/get SVG_ANGLETYPE_UNKNOWN() {
      return 0;
    },
    /*svg$.Angle.SVG_ANGLETYPE_UNSPECIFIED*/get SVG_ANGLETYPE_UNSPECIFIED() {
      return 1;
    }
  });
  dart.registerExtension("SVGAngle", svg$.Angle);
  svg$.AnimationElement = class AnimationElement extends svg$.SvgElement {
    static new() {
      return svg$.AnimationElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("animation"));
    }
    get [$targetElement]() {
      return this.targetElement;
    }
    [$beginElement](...args) {
      return this.beginElement.apply(this, args);
    }
    [$beginElementAt](...args) {
      return this.beginElementAt.apply(this, args);
    }
    [$endElement](...args) {
      return this.endElement.apply(this, args);
    }
    [$endElementAt](...args) {
      return this.endElementAt.apply(this, args);
    }
    [$getCurrentTime](...args) {
      return this.getCurrentTime.apply(this, args);
    }
    [$getSimpleDuration](...args) {
      return this.getSimpleDuration.apply(this, args);
    }
    [$getStartTime](...args) {
      return this.getStartTime.apply(this, args);
    }
    get [$requiredExtensions]() {
      return this.requiredExtensions;
    }
    get [$systemLanguage]() {
      return this.systemLanguage;
    }
  };
  (svg$.AnimationElement.created = function() {
    this[targetElement] = null;
    this[requiredExtensions$] = null;
    this[systemLanguage$] = null;
    svg$.AnimationElement.__proto__.created.call(this);
  }).prototype = svg$.AnimationElement.prototype;
  dart.addTypeTests(svg$.AnimationElement);
  const targetElement = Symbol("AnimationElement.targetElement");
  const requiredExtensions$ = Symbol("AnimationElement.requiredExtensions");
  const systemLanguage$ = Symbol("AnimationElement.systemLanguage");
  svg$.AnimationElement[dart.implements] = () => [svg$.Tests];
  dart.setMethodSignature(svg$.AnimationElement, () => ({
    __proto__: dart.getMethods(svg$.AnimationElement.__proto__),
    [$beginElement]: dart.fnType(dart.void, []),
    [$beginElementAt]: dart.fnType(dart.void, [core.num]),
    [$endElement]: dart.fnType(dart.void, []),
    [$endElementAt]: dart.fnType(dart.void, [core.num]),
    [$getCurrentTime]: dart.fnType(core.double, []),
    [$getSimpleDuration]: dart.fnType(core.double, []),
    [$getStartTime]: dart.fnType(core.double, [])
  }));
  dart.setFieldSignature(svg$.AnimationElement, () => ({
    __proto__: dart.getFields(svg$.AnimationElement.__proto__),
    [$targetElement]: dart.finalFieldType(svg$.SvgElement),
    [$requiredExtensions]: dart.finalFieldType(svg$.StringList),
    [$systemLanguage]: dart.finalFieldType(svg$.StringList)
  }));
  dart.registerExtension("SVGAnimationElement", svg$.AnimationElement);
  svg$.AnimateElement = class AnimateElement extends svg$.AnimationElement {
    static new() {
      return svg$.AnimateElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("animate"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("animate")) && svg$.AnimateElement.is(svg$.SvgElement.tag("animate"));
    }
  };
  (svg$.AnimateElement.created = function() {
    svg$.AnimateElement.__proto__.created.call(this);
  }).prototype = svg$.AnimateElement.prototype;
  dart.addTypeTests(svg$.AnimateElement);
  dart.registerExtension("SVGAnimateElement", svg$.AnimateElement);
  svg$.AnimateMotionElement = class AnimateMotionElement extends svg$.AnimationElement {
    static new() {
      return svg$.AnimateMotionElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("animateMotion"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("animateMotion")) && svg$.AnimateMotionElement.is(svg$.SvgElement.tag("animateMotion"));
    }
  };
  (svg$.AnimateMotionElement.created = function() {
    svg$.AnimateMotionElement.__proto__.created.call(this);
  }).prototype = svg$.AnimateMotionElement.prototype;
  dart.addTypeTests(svg$.AnimateMotionElement);
  dart.registerExtension("SVGAnimateMotionElement", svg$.AnimateMotionElement);
  svg$.AnimateTransformElement = class AnimateTransformElement extends svg$.AnimationElement {
    static new() {
      return svg$.AnimateTransformElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("animateTransform"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("animateTransform")) && svg$.AnimateTransformElement.is(svg$.SvgElement.tag("animateTransform"));
    }
  };
  (svg$.AnimateTransformElement.created = function() {
    svg$.AnimateTransformElement.__proto__.created.call(this);
  }).prototype = svg$.AnimateTransformElement.prototype;
  dart.addTypeTests(svg$.AnimateTransformElement);
  dart.registerExtension("SVGAnimateTransformElement", svg$.AnimateTransformElement);
  svg$.AnimatedAngle = class AnimatedAngle extends _interceptors.Interceptor {
    get [$animVal]() {
      return this.animVal;
    }
    get [$baseVal]() {
      return this.baseVal;
    }
  };
  dart.addTypeTests(svg$.AnimatedAngle);
  const animVal = Symbol("AnimatedAngle.animVal");
  const baseVal = Symbol("AnimatedAngle.baseVal");
  dart.setFieldSignature(svg$.AnimatedAngle, () => ({
    __proto__: dart.getFields(svg$.AnimatedAngle.__proto__),
    [$animVal]: dart.finalFieldType(svg$.Angle),
    [$baseVal]: dart.finalFieldType(svg$.Angle)
  }));
  dart.registerExtension("SVGAnimatedAngle", svg$.AnimatedAngle);
  svg$.AnimatedBoolean = class AnimatedBoolean extends _interceptors.Interceptor {
    get [$animVal]() {
      return this.animVal;
    }
    get [$baseVal]() {
      return this.baseVal;
    }
    set [$baseVal](value) {
      this.baseVal = value;
    }
  };
  dart.addTypeTests(svg$.AnimatedBoolean);
  const animVal$ = Symbol("AnimatedBoolean.animVal");
  const baseVal$ = Symbol("AnimatedBoolean.baseVal");
  dart.setFieldSignature(svg$.AnimatedBoolean, () => ({
    __proto__: dart.getFields(svg$.AnimatedBoolean.__proto__),
    [$animVal]: dart.finalFieldType(core.bool),
    [$baseVal]: dart.fieldType(core.bool)
  }));
  dart.registerExtension("SVGAnimatedBoolean", svg$.AnimatedBoolean);
  svg$.AnimatedEnumeration = class AnimatedEnumeration extends _interceptors.Interceptor {
    get [$animVal]() {
      return this.animVal;
    }
    get [$baseVal]() {
      return this.baseVal;
    }
    set [$baseVal](value) {
      this.baseVal = value;
    }
  };
  dart.addTypeTests(svg$.AnimatedEnumeration);
  const animVal$0 = Symbol("AnimatedEnumeration.animVal");
  const baseVal$0 = Symbol("AnimatedEnumeration.baseVal");
  dart.setFieldSignature(svg$.AnimatedEnumeration, () => ({
    __proto__: dart.getFields(svg$.AnimatedEnumeration.__proto__),
    [$animVal]: dart.finalFieldType(core.int),
    [$baseVal]: dart.fieldType(core.int)
  }));
  dart.registerExtension("SVGAnimatedEnumeration", svg$.AnimatedEnumeration);
  svg$.AnimatedInteger = class AnimatedInteger extends _interceptors.Interceptor {
    get [$animVal]() {
      return this.animVal;
    }
    get [$baseVal]() {
      return this.baseVal;
    }
    set [$baseVal](value) {
      this.baseVal = value;
    }
  };
  dart.addTypeTests(svg$.AnimatedInteger);
  const animVal$1 = Symbol("AnimatedInteger.animVal");
  const baseVal$1 = Symbol("AnimatedInteger.baseVal");
  dart.setFieldSignature(svg$.AnimatedInteger, () => ({
    __proto__: dart.getFields(svg$.AnimatedInteger.__proto__),
    [$animVal]: dart.finalFieldType(core.int),
    [$baseVal]: dart.fieldType(core.int)
  }));
  dart.registerExtension("SVGAnimatedInteger", svg$.AnimatedInteger);
  svg$.AnimatedLength = class AnimatedLength extends _interceptors.Interceptor {
    get [$animVal]() {
      return this.animVal;
    }
    get [$baseVal]() {
      return this.baseVal;
    }
  };
  dart.addTypeTests(svg$.AnimatedLength);
  const animVal$2 = Symbol("AnimatedLength.animVal");
  const baseVal$2 = Symbol("AnimatedLength.baseVal");
  dart.setFieldSignature(svg$.AnimatedLength, () => ({
    __proto__: dart.getFields(svg$.AnimatedLength.__proto__),
    [$animVal]: dart.finalFieldType(svg$.Length),
    [$baseVal]: dart.finalFieldType(svg$.Length)
  }));
  dart.registerExtension("SVGAnimatedLength", svg$.AnimatedLength);
  svg$.AnimatedLengthList = class AnimatedLengthList extends _interceptors.Interceptor {
    get [$animVal]() {
      return this.animVal;
    }
    get [$baseVal]() {
      return this.baseVal;
    }
  };
  dart.addTypeTests(svg$.AnimatedLengthList);
  const animVal$3 = Symbol("AnimatedLengthList.animVal");
  const baseVal$3 = Symbol("AnimatedLengthList.baseVal");
  dart.setFieldSignature(svg$.AnimatedLengthList, () => ({
    __proto__: dart.getFields(svg$.AnimatedLengthList.__proto__),
    [$animVal]: dart.finalFieldType(svg$.LengthList),
    [$baseVal]: dart.finalFieldType(svg$.LengthList)
  }));
  dart.registerExtension("SVGAnimatedLengthList", svg$.AnimatedLengthList);
  svg$.AnimatedNumber = class AnimatedNumber extends _interceptors.Interceptor {
    get [$animVal]() {
      return this.animVal;
    }
    get [$baseVal]() {
      return this.baseVal;
    }
    set [$baseVal](value) {
      this.baseVal = value;
    }
  };
  dart.addTypeTests(svg$.AnimatedNumber);
  const animVal$4 = Symbol("AnimatedNumber.animVal");
  const baseVal$4 = Symbol("AnimatedNumber.baseVal");
  dart.setFieldSignature(svg$.AnimatedNumber, () => ({
    __proto__: dart.getFields(svg$.AnimatedNumber.__proto__),
    [$animVal]: dart.finalFieldType(core.num),
    [$baseVal]: dart.fieldType(core.num)
  }));
  dart.registerExtension("SVGAnimatedNumber", svg$.AnimatedNumber);
  svg$.AnimatedNumberList = class AnimatedNumberList extends _interceptors.Interceptor {
    get [$animVal]() {
      return this.animVal;
    }
    get [$baseVal]() {
      return this.baseVal;
    }
  };
  dart.addTypeTests(svg$.AnimatedNumberList);
  const animVal$5 = Symbol("AnimatedNumberList.animVal");
  const baseVal$5 = Symbol("AnimatedNumberList.baseVal");
  dart.setFieldSignature(svg$.AnimatedNumberList, () => ({
    __proto__: dart.getFields(svg$.AnimatedNumberList.__proto__),
    [$animVal]: dart.finalFieldType(svg$.NumberList),
    [$baseVal]: dart.finalFieldType(svg$.NumberList)
  }));
  dart.registerExtension("SVGAnimatedNumberList", svg$.AnimatedNumberList);
  svg$.AnimatedPreserveAspectRatio = class AnimatedPreserveAspectRatio extends _interceptors.Interceptor {
    get [$animVal]() {
      return this.animVal;
    }
    get [$baseVal]() {
      return this.baseVal;
    }
  };
  dart.addTypeTests(svg$.AnimatedPreserveAspectRatio);
  const animVal$6 = Symbol("AnimatedPreserveAspectRatio.animVal");
  const baseVal$6 = Symbol("AnimatedPreserveAspectRatio.baseVal");
  dart.setFieldSignature(svg$.AnimatedPreserveAspectRatio, () => ({
    __proto__: dart.getFields(svg$.AnimatedPreserveAspectRatio.__proto__),
    [$animVal]: dart.finalFieldType(svg$.PreserveAspectRatio),
    [$baseVal]: dart.finalFieldType(svg$.PreserveAspectRatio)
  }));
  dart.registerExtension("SVGAnimatedPreserveAspectRatio", svg$.AnimatedPreserveAspectRatio);
  svg$.AnimatedRect = class AnimatedRect extends _interceptors.Interceptor {
    get [$animVal]() {
      return this.animVal;
    }
    get [$baseVal]() {
      return this.baseVal;
    }
  };
  dart.addTypeTests(svg$.AnimatedRect);
  const animVal$7 = Symbol("AnimatedRect.animVal");
  const baseVal$7 = Symbol("AnimatedRect.baseVal");
  dart.setFieldSignature(svg$.AnimatedRect, () => ({
    __proto__: dart.getFields(svg$.AnimatedRect.__proto__),
    [$animVal]: dart.finalFieldType(svg$.Rect),
    [$baseVal]: dart.finalFieldType(svg$.Rect)
  }));
  dart.registerExtension("SVGAnimatedRect", svg$.AnimatedRect);
  svg$.AnimatedString = class AnimatedString extends _interceptors.Interceptor {
    get [$animVal]() {
      return this.animVal;
    }
    get [$baseVal]() {
      return this.baseVal;
    }
    set [$baseVal](value) {
      this.baseVal = value;
    }
  };
  dart.addTypeTests(svg$.AnimatedString);
  const animVal$8 = Symbol("AnimatedString.animVal");
  const baseVal$8 = Symbol("AnimatedString.baseVal");
  dart.setFieldSignature(svg$.AnimatedString, () => ({
    __proto__: dart.getFields(svg$.AnimatedString.__proto__),
    [$animVal]: dart.finalFieldType(core.String),
    [$baseVal]: dart.fieldType(core.String)
  }));
  dart.registerExtension("SVGAnimatedString", svg$.AnimatedString);
  svg$.AnimatedTransformList = class AnimatedTransformList extends _interceptors.Interceptor {
    get [$animVal]() {
      return this.animVal;
    }
    get [$baseVal]() {
      return this.baseVal;
    }
  };
  dart.addTypeTests(svg$.AnimatedTransformList);
  const animVal$9 = Symbol("AnimatedTransformList.animVal");
  const baseVal$9 = Symbol("AnimatedTransformList.baseVal");
  dart.setFieldSignature(svg$.AnimatedTransformList, () => ({
    __proto__: dart.getFields(svg$.AnimatedTransformList.__proto__),
    [$animVal]: dart.finalFieldType(svg$.TransformList),
    [$baseVal]: dart.finalFieldType(svg$.TransformList)
  }));
  dart.registerExtension("SVGAnimatedTransformList", svg$.AnimatedTransformList);
  svg$.GeometryElement = class GeometryElement extends svg$.GraphicsElement {
    get [$pathLength]() {
      return this.pathLength;
    }
    [$getPointAtLength](...args) {
      return this.getPointAtLength.apply(this, args);
    }
    [$getTotalLength](...args) {
      return this.getTotalLength.apply(this, args);
    }
    [$isPointInFill](...args) {
      return this.isPointInFill.apply(this, args);
    }
    [$isPointInStroke](...args) {
      return this.isPointInStroke.apply(this, args);
    }
  };
  (svg$.GeometryElement.created = function() {
    this[pathLength] = null;
    svg$.GeometryElement.__proto__.created.call(this);
  }).prototype = svg$.GeometryElement.prototype;
  dart.addTypeTests(svg$.GeometryElement);
  const pathLength = Symbol("GeometryElement.pathLength");
  dart.setMethodSignature(svg$.GeometryElement, () => ({
    __proto__: dart.getMethods(svg$.GeometryElement.__proto__),
    [$getPointAtLength]: dart.fnType(svg$.Point, [core.num]),
    [$getTotalLength]: dart.fnType(core.double, []),
    [$isPointInFill]: dart.fnType(core.bool, [svg$.Point]),
    [$isPointInStroke]: dart.fnType(core.bool, [svg$.Point])
  }));
  dart.setFieldSignature(svg$.GeometryElement, () => ({
    __proto__: dart.getFields(svg$.GeometryElement.__proto__),
    [$pathLength]: dart.finalFieldType(svg$.AnimatedNumber)
  }));
  dart.registerExtension("SVGGeometryElement", svg$.GeometryElement);
  svg$.CircleElement = class CircleElement extends svg$.GeometryElement {
    static new() {
      return svg$.CircleElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("circle"));
    }
    get [$cx]() {
      return this.cx;
    }
    get [$cy]() {
      return this.cy;
    }
    get [$r]() {
      return this.r;
    }
  };
  (svg$.CircleElement.created = function() {
    this[cx] = null;
    this[cy] = null;
    this[r] = null;
    svg$.CircleElement.__proto__.created.call(this);
  }).prototype = svg$.CircleElement.prototype;
  dart.addTypeTests(svg$.CircleElement);
  const cx = Symbol("CircleElement.cx");
  const cy = Symbol("CircleElement.cy");
  const r = Symbol("CircleElement.r");
  dart.setFieldSignature(svg$.CircleElement, () => ({
    __proto__: dart.getFields(svg$.CircleElement.__proto__),
    [$cx]: dart.finalFieldType(svg$.AnimatedLength),
    [$cy]: dart.finalFieldType(svg$.AnimatedLength),
    [$r]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.registerExtension("SVGCircleElement", svg$.CircleElement);
  svg$.ClipPathElement = class ClipPathElement extends svg$.GraphicsElement {
    static new() {
      return svg$.ClipPathElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("clipPath"));
    }
    get [$clipPathUnits]() {
      return this.clipPathUnits;
    }
  };
  (svg$.ClipPathElement.created = function() {
    this[clipPathUnits] = null;
    svg$.ClipPathElement.__proto__.created.call(this);
  }).prototype = svg$.ClipPathElement.prototype;
  dart.addTypeTests(svg$.ClipPathElement);
  const clipPathUnits = Symbol("ClipPathElement.clipPathUnits");
  dart.setFieldSignature(svg$.ClipPathElement, () => ({
    __proto__: dart.getFields(svg$.ClipPathElement.__proto__),
    [$clipPathUnits]: dart.finalFieldType(svg$.AnimatedEnumeration)
  }));
  dart.registerExtension("SVGClipPathElement", svg$.ClipPathElement);
  svg$.DefsElement = class DefsElement extends svg$.GraphicsElement {
    static new() {
      return svg$.DefsElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("defs"));
    }
  };
  (svg$.DefsElement.created = function() {
    svg$.DefsElement.__proto__.created.call(this);
  }).prototype = svg$.DefsElement.prototype;
  dart.addTypeTests(svg$.DefsElement);
  dart.registerExtension("SVGDefsElement", svg$.DefsElement);
  svg$.DescElement = class DescElement extends svg$.SvgElement {
    static new() {
      return svg$.DescElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("desc"));
    }
  };
  (svg$.DescElement.created = function() {
    svg$.DescElement.__proto__.created.call(this);
  }).prototype = svg$.DescElement.prototype;
  dart.addTypeTests(svg$.DescElement);
  dart.registerExtension("SVGDescElement", svg$.DescElement);
  svg$.DiscardElement = class DiscardElement extends svg$.SvgElement {};
  (svg$.DiscardElement.created = function() {
    svg$.DiscardElement.__proto__.created.call(this);
  }).prototype = svg$.DiscardElement.prototype;
  dart.addTypeTests(svg$.DiscardElement);
  dart.registerExtension("SVGDiscardElement", svg$.DiscardElement);
  svg$.EllipseElement = class EllipseElement extends svg$.GeometryElement {
    static new() {
      return svg$.EllipseElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("ellipse"));
    }
    get [$cx]() {
      return this.cx;
    }
    get [$cy]() {
      return this.cy;
    }
    get [$rx]() {
      return this.rx;
    }
    get [$ry]() {
      return this.ry;
    }
  };
  (svg$.EllipseElement.created = function() {
    this[cx$] = null;
    this[cy$] = null;
    this[rx] = null;
    this[ry] = null;
    svg$.EllipseElement.__proto__.created.call(this);
  }).prototype = svg$.EllipseElement.prototype;
  dart.addTypeTests(svg$.EllipseElement);
  const cx$ = Symbol("EllipseElement.cx");
  const cy$ = Symbol("EllipseElement.cy");
  const rx = Symbol("EllipseElement.rx");
  const ry = Symbol("EllipseElement.ry");
  dart.setFieldSignature(svg$.EllipseElement, () => ({
    __proto__: dart.getFields(svg$.EllipseElement.__proto__),
    [$cx]: dart.finalFieldType(svg$.AnimatedLength),
    [$cy]: dart.finalFieldType(svg$.AnimatedLength),
    [$rx]: dart.finalFieldType(svg$.AnimatedLength),
    [$ry]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.registerExtension("SVGEllipseElement", svg$.EllipseElement);
  svg$.FEBlendElement = class FEBlendElement extends svg$.SvgElement {
    static new() {
      return svg$.FEBlendElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feBlend"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feBlend")) && svg$.FEBlendElement.is(svg$.SvgElement.tag("feBlend"));
    }
    get [$in1]() {
      return this.in1;
    }
    get [$in2]() {
      return this.in2;
    }
    get [$mode]() {
      return this.mode;
    }
    get [$height]() {
      return this.height;
    }
    get [$result]() {
      return this.result;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.FEBlendElement.created = function() {
    this[in1] = null;
    this[in2] = null;
    this[mode$4] = null;
    this[height$14] = null;
    this[result] = null;
    this[width$16] = null;
    this[x$7] = null;
    this[y$6] = null;
    svg$.FEBlendElement.__proto__.created.call(this);
  }).prototype = svg$.FEBlendElement.prototype;
  dart.addTypeTests(svg$.FEBlendElement);
  const in1 = Symbol("FEBlendElement.in1");
  const in2 = Symbol("FEBlendElement.in2");
  const mode$4 = Symbol("FEBlendElement.mode");
  const height$14 = Symbol("FEBlendElement.height");
  const result = Symbol("FEBlendElement.result");
  const width$16 = Symbol("FEBlendElement.width");
  const x$7 = Symbol("FEBlendElement.x");
  const y$6 = Symbol("FEBlendElement.y");
  svg$.FEBlendElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
  dart.setFieldSignature(svg$.FEBlendElement, () => ({
    __proto__: dart.getFields(svg$.FEBlendElement.__proto__),
    [$in1]: dart.finalFieldType(svg$.AnimatedString),
    [$in2]: dart.finalFieldType(svg$.AnimatedString),
    [$mode]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$result]: dart.finalFieldType(svg$.AnimatedString),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.defineLazy(svg$.FEBlendElement, {
    /*svg$.FEBlendElement.SVG_FEBLEND_MODE_DARKEN*/get SVG_FEBLEND_MODE_DARKEN() {
      return 4;
    },
    /*svg$.FEBlendElement.SVG_FEBLEND_MODE_LIGHTEN*/get SVG_FEBLEND_MODE_LIGHTEN() {
      return 5;
    },
    /*svg$.FEBlendElement.SVG_FEBLEND_MODE_MULTIPLY*/get SVG_FEBLEND_MODE_MULTIPLY() {
      return 2;
    },
    /*svg$.FEBlendElement.SVG_FEBLEND_MODE_NORMAL*/get SVG_FEBLEND_MODE_NORMAL() {
      return 1;
    },
    /*svg$.FEBlendElement.SVG_FEBLEND_MODE_SCREEN*/get SVG_FEBLEND_MODE_SCREEN() {
      return 3;
    },
    /*svg$.FEBlendElement.SVG_FEBLEND_MODE_UNKNOWN*/get SVG_FEBLEND_MODE_UNKNOWN() {
      return 0;
    }
  });
  dart.registerExtension("SVGFEBlendElement", svg$.FEBlendElement);
  svg$.FEColorMatrixElement = class FEColorMatrixElement extends svg$.SvgElement {
    static new() {
      return svg$.FEColorMatrixElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feColorMatrix"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feColorMatrix")) && svg$.FEColorMatrixElement.is(svg$.SvgElement.tag("feColorMatrix"));
    }
    get [$in1]() {
      return this.in1;
    }
    get [$type]() {
      return this.type;
    }
    get [$values]() {
      return this.values;
    }
    get [$height]() {
      return this.height;
    }
    get [$result]() {
      return this.result;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.FEColorMatrixElement.created = function() {
    this[in1$] = null;
    this[type$37] = null;
    this[values] = null;
    this[height$15] = null;
    this[result$] = null;
    this[width$17] = null;
    this[x$8] = null;
    this[y$7] = null;
    svg$.FEColorMatrixElement.__proto__.created.call(this);
  }).prototype = svg$.FEColorMatrixElement.prototype;
  dart.addTypeTests(svg$.FEColorMatrixElement);
  const in1$ = Symbol("FEColorMatrixElement.in1");
  const type$37 = Symbol("FEColorMatrixElement.type");
  const values = Symbol("FEColorMatrixElement.values");
  const height$15 = Symbol("FEColorMatrixElement.height");
  const result$ = Symbol("FEColorMatrixElement.result");
  const width$17 = Symbol("FEColorMatrixElement.width");
  const x$8 = Symbol("FEColorMatrixElement.x");
  const y$7 = Symbol("FEColorMatrixElement.y");
  svg$.FEColorMatrixElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
  dart.setFieldSignature(svg$.FEColorMatrixElement, () => ({
    __proto__: dart.getFields(svg$.FEColorMatrixElement.__proto__),
    [$in1]: dart.finalFieldType(svg$.AnimatedString),
    [$type]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$values]: dart.finalFieldType(svg$.AnimatedNumberList),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$result]: dart.finalFieldType(svg$.AnimatedString),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.defineLazy(svg$.FEColorMatrixElement, {
    /*svg$.FEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_HUEROTATE*/get SVG_FECOLORMATRIX_TYPE_HUEROTATE() {
      return 3;
    },
    /*svg$.FEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA*/get SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA() {
      return 4;
    },
    /*svg$.FEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_MATRIX*/get SVG_FECOLORMATRIX_TYPE_MATRIX() {
      return 1;
    },
    /*svg$.FEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE*/get SVG_FECOLORMATRIX_TYPE_SATURATE() {
      return 2;
    },
    /*svg$.FEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_UNKNOWN*/get SVG_FECOLORMATRIX_TYPE_UNKNOWN() {
      return 0;
    }
  });
  dart.registerExtension("SVGFEColorMatrixElement", svg$.FEColorMatrixElement);
  svg$.FEComponentTransferElement = class FEComponentTransferElement extends svg$.SvgElement {
    static new() {
      return svg$.FEComponentTransferElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feComponentTransfer"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feComponentTransfer")) && svg$.FEComponentTransferElement.is(svg$.SvgElement.tag("feComponentTransfer"));
    }
    get [$in1]() {
      return this.in1;
    }
    get [$height]() {
      return this.height;
    }
    get [$result]() {
      return this.result;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.FEComponentTransferElement.created = function() {
    this[in1$0] = null;
    this[height$16] = null;
    this[result$0] = null;
    this[width$18] = null;
    this[x$9] = null;
    this[y$8] = null;
    svg$.FEComponentTransferElement.__proto__.created.call(this);
  }).prototype = svg$.FEComponentTransferElement.prototype;
  dart.addTypeTests(svg$.FEComponentTransferElement);
  const in1$0 = Symbol("FEComponentTransferElement.in1");
  const height$16 = Symbol("FEComponentTransferElement.height");
  const result$0 = Symbol("FEComponentTransferElement.result");
  const width$18 = Symbol("FEComponentTransferElement.width");
  const x$9 = Symbol("FEComponentTransferElement.x");
  const y$8 = Symbol("FEComponentTransferElement.y");
  svg$.FEComponentTransferElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
  dart.setFieldSignature(svg$.FEComponentTransferElement, () => ({
    __proto__: dart.getFields(svg$.FEComponentTransferElement.__proto__),
    [$in1]: dart.finalFieldType(svg$.AnimatedString),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$result]: dart.finalFieldType(svg$.AnimatedString),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.registerExtension("SVGFEComponentTransferElement", svg$.FEComponentTransferElement);
  svg$.FECompositeElement = class FECompositeElement extends svg$.SvgElement {
    get [$in1]() {
      return this.in1;
    }
    get [$in2]() {
      return this.in2;
    }
    get [$k1]() {
      return this.k1;
    }
    get [$k2]() {
      return this.k2;
    }
    get [$k3]() {
      return this.k3;
    }
    get [$k4]() {
      return this.k4;
    }
    get [$operator]() {
      return this.operator;
    }
    get [$height]() {
      return this.height;
    }
    get [$result]() {
      return this.result;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.FECompositeElement.created = function() {
    this[in1$1] = null;
    this[in2$] = null;
    this[k1] = null;
    this[k2] = null;
    this[k3] = null;
    this[k4] = null;
    this[operator] = null;
    this[height$17] = null;
    this[result$1] = null;
    this[width$19] = null;
    this[x$10] = null;
    this[y$9] = null;
    svg$.FECompositeElement.__proto__.created.call(this);
  }).prototype = svg$.FECompositeElement.prototype;
  dart.addTypeTests(svg$.FECompositeElement);
  const in1$1 = Symbol("FECompositeElement.in1");
  const in2$ = Symbol("FECompositeElement.in2");
  const k1 = Symbol("FECompositeElement.k1");
  const k2 = Symbol("FECompositeElement.k2");
  const k3 = Symbol("FECompositeElement.k3");
  const k4 = Symbol("FECompositeElement.k4");
  const operator = Symbol("FECompositeElement.operator");
  const height$17 = Symbol("FECompositeElement.height");
  const result$1 = Symbol("FECompositeElement.result");
  const width$19 = Symbol("FECompositeElement.width");
  const x$10 = Symbol("FECompositeElement.x");
  const y$9 = Symbol("FECompositeElement.y");
  svg$.FECompositeElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
  dart.setFieldSignature(svg$.FECompositeElement, () => ({
    __proto__: dart.getFields(svg$.FECompositeElement.__proto__),
    [$in1]: dart.finalFieldType(svg$.AnimatedString),
    [$in2]: dart.finalFieldType(svg$.AnimatedString),
    [$k1]: dart.finalFieldType(svg$.AnimatedNumber),
    [$k2]: dart.finalFieldType(svg$.AnimatedNumber),
    [$k3]: dart.finalFieldType(svg$.AnimatedNumber),
    [$k4]: dart.finalFieldType(svg$.AnimatedNumber),
    [$operator]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$result]: dart.finalFieldType(svg$.AnimatedString),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.defineLazy(svg$.FECompositeElement, {
    /*svg$.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_ARITHMETIC*/get SVG_FECOMPOSITE_OPERATOR_ARITHMETIC() {
      return 6;
    },
    /*svg$.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_ATOP*/get SVG_FECOMPOSITE_OPERATOR_ATOP() {
      return 4;
    },
    /*svg$.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_IN*/get SVG_FECOMPOSITE_OPERATOR_IN() {
      return 2;
    },
    /*svg$.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_OUT*/get SVG_FECOMPOSITE_OPERATOR_OUT() {
      return 3;
    },
    /*svg$.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_OVER*/get SVG_FECOMPOSITE_OPERATOR_OVER() {
      return 1;
    },
    /*svg$.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_UNKNOWN*/get SVG_FECOMPOSITE_OPERATOR_UNKNOWN() {
      return 0;
    },
    /*svg$.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_XOR*/get SVG_FECOMPOSITE_OPERATOR_XOR() {
      return 5;
    }
  });
  dart.registerExtension("SVGFECompositeElement", svg$.FECompositeElement);
  svg$.FEConvolveMatrixElement = class FEConvolveMatrixElement extends svg$.SvgElement {
    static new() {
      return svg$.FEConvolveMatrixElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feConvolveMatrix"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feConvolveMatrix")) && svg$.FEConvolveMatrixElement.is(svg$.SvgElement.tag("feConvolveMatrix"));
    }
    get [$bias]() {
      return this.bias;
    }
    get [$divisor]() {
      return this.divisor;
    }
    get [$edgeMode]() {
      return this.edgeMode;
    }
    get [$in1]() {
      return this.in1;
    }
    get [$kernelMatrix]() {
      return this.kernelMatrix;
    }
    get [$kernelUnitLengthX]() {
      return this.kernelUnitLengthX;
    }
    get [$kernelUnitLengthY]() {
      return this.kernelUnitLengthY;
    }
    get [$orderX]() {
      return this.orderX;
    }
    get [$orderY]() {
      return this.orderY;
    }
    get [$preserveAlpha]() {
      return this.preserveAlpha;
    }
    get [$targetX]() {
      return this.targetX;
    }
    get [$targetY]() {
      return this.targetY;
    }
    get [$height]() {
      return this.height;
    }
    get [$result]() {
      return this.result;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.FEConvolveMatrixElement.created = function() {
    this[bias] = null;
    this[divisor] = null;
    this[edgeMode] = null;
    this[in1$2] = null;
    this[kernelMatrix] = null;
    this[kernelUnitLengthX] = null;
    this[kernelUnitLengthY] = null;
    this[orderX] = null;
    this[orderY] = null;
    this[preserveAlpha] = null;
    this[targetX] = null;
    this[targetY] = null;
    this[height$18] = null;
    this[result$2] = null;
    this[width$20] = null;
    this[x$11] = null;
    this[y$10] = null;
    svg$.FEConvolveMatrixElement.__proto__.created.call(this);
  }).prototype = svg$.FEConvolveMatrixElement.prototype;
  dart.addTypeTests(svg$.FEConvolveMatrixElement);
  const bias = Symbol("FEConvolveMatrixElement.bias");
  const divisor = Symbol("FEConvolveMatrixElement.divisor");
  const edgeMode = Symbol("FEConvolveMatrixElement.edgeMode");
  const in1$2 = Symbol("FEConvolveMatrixElement.in1");
  const kernelMatrix = Symbol("FEConvolveMatrixElement.kernelMatrix");
  const kernelUnitLengthX = Symbol("FEConvolveMatrixElement.kernelUnitLengthX");
  const kernelUnitLengthY = Symbol("FEConvolveMatrixElement.kernelUnitLengthY");
  const orderX = Symbol("FEConvolveMatrixElement.orderX");
  const orderY = Symbol("FEConvolveMatrixElement.orderY");
  const preserveAlpha = Symbol("FEConvolveMatrixElement.preserveAlpha");
  const targetX = Symbol("FEConvolveMatrixElement.targetX");
  const targetY = Symbol("FEConvolveMatrixElement.targetY");
  const height$18 = Symbol("FEConvolveMatrixElement.height");
  const result$2 = Symbol("FEConvolveMatrixElement.result");
  const width$20 = Symbol("FEConvolveMatrixElement.width");
  const x$11 = Symbol("FEConvolveMatrixElement.x");
  const y$10 = Symbol("FEConvolveMatrixElement.y");
  svg$.FEConvolveMatrixElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
  dart.setFieldSignature(svg$.FEConvolveMatrixElement, () => ({
    __proto__: dart.getFields(svg$.FEConvolveMatrixElement.__proto__),
    [$bias]: dart.finalFieldType(svg$.AnimatedNumber),
    [$divisor]: dart.finalFieldType(svg$.AnimatedNumber),
    [$edgeMode]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$in1]: dart.finalFieldType(svg$.AnimatedString),
    [$kernelMatrix]: dart.finalFieldType(svg$.AnimatedNumberList),
    [$kernelUnitLengthX]: dart.finalFieldType(svg$.AnimatedNumber),
    [$kernelUnitLengthY]: dart.finalFieldType(svg$.AnimatedNumber),
    [$orderX]: dart.finalFieldType(svg$.AnimatedInteger),
    [$orderY]: dart.finalFieldType(svg$.AnimatedInteger),
    [$preserveAlpha]: dart.finalFieldType(svg$.AnimatedBoolean),
    [$targetX]: dart.finalFieldType(svg$.AnimatedInteger),
    [$targetY]: dart.finalFieldType(svg$.AnimatedInteger),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$result]: dart.finalFieldType(svg$.AnimatedString),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.defineLazy(svg$.FEConvolveMatrixElement, {
    /*svg$.FEConvolveMatrixElement.SVG_EDGEMODE_DUPLICATE*/get SVG_EDGEMODE_DUPLICATE() {
      return 1;
    },
    /*svg$.FEConvolveMatrixElement.SVG_EDGEMODE_NONE*/get SVG_EDGEMODE_NONE() {
      return 3;
    },
    /*svg$.FEConvolveMatrixElement.SVG_EDGEMODE_UNKNOWN*/get SVG_EDGEMODE_UNKNOWN() {
      return 0;
    },
    /*svg$.FEConvolveMatrixElement.SVG_EDGEMODE_WRAP*/get SVG_EDGEMODE_WRAP() {
      return 2;
    }
  });
  dart.registerExtension("SVGFEConvolveMatrixElement", svg$.FEConvolveMatrixElement);
  svg$.FEDiffuseLightingElement = class FEDiffuseLightingElement extends svg$.SvgElement {
    static new() {
      return svg$.FEDiffuseLightingElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feDiffuseLighting"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feDiffuseLighting")) && svg$.FEDiffuseLightingElement.is(svg$.SvgElement.tag("feDiffuseLighting"));
    }
    get [$diffuseConstant]() {
      return this.diffuseConstant;
    }
    get [$in1]() {
      return this.in1;
    }
    get [$kernelUnitLengthX]() {
      return this.kernelUnitLengthX;
    }
    get [$kernelUnitLengthY]() {
      return this.kernelUnitLengthY;
    }
    get [$surfaceScale]() {
      return this.surfaceScale;
    }
    get [$height]() {
      return this.height;
    }
    get [$result]() {
      return this.result;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.FEDiffuseLightingElement.created = function() {
    this[diffuseConstant] = null;
    this[in1$3] = null;
    this[kernelUnitLengthX$] = null;
    this[kernelUnitLengthY$] = null;
    this[surfaceScale] = null;
    this[height$19] = null;
    this[result$3] = null;
    this[width$21] = null;
    this[x$12] = null;
    this[y$11] = null;
    svg$.FEDiffuseLightingElement.__proto__.created.call(this);
  }).prototype = svg$.FEDiffuseLightingElement.prototype;
  dart.addTypeTests(svg$.FEDiffuseLightingElement);
  const diffuseConstant = Symbol("FEDiffuseLightingElement.diffuseConstant");
  const in1$3 = Symbol("FEDiffuseLightingElement.in1");
  const kernelUnitLengthX$ = Symbol("FEDiffuseLightingElement.kernelUnitLengthX");
  const kernelUnitLengthY$ = Symbol("FEDiffuseLightingElement.kernelUnitLengthY");
  const surfaceScale = Symbol("FEDiffuseLightingElement.surfaceScale");
  const height$19 = Symbol("FEDiffuseLightingElement.height");
  const result$3 = Symbol("FEDiffuseLightingElement.result");
  const width$21 = Symbol("FEDiffuseLightingElement.width");
  const x$12 = Symbol("FEDiffuseLightingElement.x");
  const y$11 = Symbol("FEDiffuseLightingElement.y");
  svg$.FEDiffuseLightingElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
  dart.setFieldSignature(svg$.FEDiffuseLightingElement, () => ({
    __proto__: dart.getFields(svg$.FEDiffuseLightingElement.__proto__),
    [$diffuseConstant]: dart.finalFieldType(svg$.AnimatedNumber),
    [$in1]: dart.finalFieldType(svg$.AnimatedString),
    [$kernelUnitLengthX]: dart.finalFieldType(svg$.AnimatedNumber),
    [$kernelUnitLengthY]: dart.finalFieldType(svg$.AnimatedNumber),
    [$surfaceScale]: dart.finalFieldType(svg$.AnimatedNumber),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$result]: dart.finalFieldType(svg$.AnimatedString),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.registerExtension("SVGFEDiffuseLightingElement", svg$.FEDiffuseLightingElement);
  svg$.FEDisplacementMapElement = class FEDisplacementMapElement extends svg$.SvgElement {
    static new() {
      return svg$.FEDisplacementMapElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feDisplacementMap"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feDisplacementMap")) && svg$.FEDisplacementMapElement.is(svg$.SvgElement.tag("feDisplacementMap"));
    }
    get [$in1]() {
      return this.in1;
    }
    get [$in2]() {
      return this.in2;
    }
    get [$scale]() {
      return this.scale;
    }
    get [$xChannelSelector]() {
      return this.xChannelSelector;
    }
    get [$yChannelSelector]() {
      return this.yChannelSelector;
    }
    get [$height]() {
      return this.height;
    }
    get [$result]() {
      return this.result;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.FEDisplacementMapElement.created = function() {
    this[in1$4] = null;
    this[in2$0] = null;
    this[scale$] = null;
    this[xChannelSelector] = null;
    this[yChannelSelector] = null;
    this[height$20] = null;
    this[result$4] = null;
    this[width$22] = null;
    this[x$13] = null;
    this[y$12] = null;
    svg$.FEDisplacementMapElement.__proto__.created.call(this);
  }).prototype = svg$.FEDisplacementMapElement.prototype;
  dart.addTypeTests(svg$.FEDisplacementMapElement);
  const in1$4 = Symbol("FEDisplacementMapElement.in1");
  const in2$0 = Symbol("FEDisplacementMapElement.in2");
  const scale$ = Symbol("FEDisplacementMapElement.scale");
  const xChannelSelector = Symbol("FEDisplacementMapElement.xChannelSelector");
  const yChannelSelector = Symbol("FEDisplacementMapElement.yChannelSelector");
  const height$20 = Symbol("FEDisplacementMapElement.height");
  const result$4 = Symbol("FEDisplacementMapElement.result");
  const width$22 = Symbol("FEDisplacementMapElement.width");
  const x$13 = Symbol("FEDisplacementMapElement.x");
  const y$12 = Symbol("FEDisplacementMapElement.y");
  svg$.FEDisplacementMapElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
  dart.setFieldSignature(svg$.FEDisplacementMapElement, () => ({
    __proto__: dart.getFields(svg$.FEDisplacementMapElement.__proto__),
    [$in1]: dart.finalFieldType(svg$.AnimatedString),
    [$in2]: dart.finalFieldType(svg$.AnimatedString),
    [$scale]: dart.finalFieldType(svg$.AnimatedNumber),
    [$xChannelSelector]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$yChannelSelector]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$result]: dart.finalFieldType(svg$.AnimatedString),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.defineLazy(svg$.FEDisplacementMapElement, {
    /*svg$.FEDisplacementMapElement.SVG_CHANNEL_A*/get SVG_CHANNEL_A() {
      return 4;
    },
    /*svg$.FEDisplacementMapElement.SVG_CHANNEL_B*/get SVG_CHANNEL_B() {
      return 3;
    },
    /*svg$.FEDisplacementMapElement.SVG_CHANNEL_G*/get SVG_CHANNEL_G() {
      return 2;
    },
    /*svg$.FEDisplacementMapElement.SVG_CHANNEL_R*/get SVG_CHANNEL_R() {
      return 1;
    },
    /*svg$.FEDisplacementMapElement.SVG_CHANNEL_UNKNOWN*/get SVG_CHANNEL_UNKNOWN() {
      return 0;
    }
  });
  dart.registerExtension("SVGFEDisplacementMapElement", svg$.FEDisplacementMapElement);
  svg$.FEDistantLightElement = class FEDistantLightElement extends svg$.SvgElement {
    static new() {
      return svg$.FEDistantLightElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feDistantLight"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feDistantLight")) && svg$.FEDistantLightElement.is(svg$.SvgElement.tag("feDistantLight"));
    }
    get [$azimuth]() {
      return this.azimuth;
    }
    get [$elevation]() {
      return this.elevation;
    }
  };
  (svg$.FEDistantLightElement.created = function() {
    this[azimuth] = null;
    this[elevation] = null;
    svg$.FEDistantLightElement.__proto__.created.call(this);
  }).prototype = svg$.FEDistantLightElement.prototype;
  dart.addTypeTests(svg$.FEDistantLightElement);
  const azimuth = Symbol("FEDistantLightElement.azimuth");
  const elevation = Symbol("FEDistantLightElement.elevation");
  dart.setFieldSignature(svg$.FEDistantLightElement, () => ({
    __proto__: dart.getFields(svg$.FEDistantLightElement.__proto__),
    [$azimuth]: dart.finalFieldType(svg$.AnimatedNumber),
    [$elevation]: dart.finalFieldType(svg$.AnimatedNumber)
  }));
  dart.registerExtension("SVGFEDistantLightElement", svg$.FEDistantLightElement);
  svg$.FEFloodElement = class FEFloodElement extends svg$.SvgElement {
    static new() {
      return svg$.FEFloodElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feFlood"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feFlood")) && svg$.FEFloodElement.is(svg$.SvgElement.tag("feFlood"));
    }
    get [$height]() {
      return this.height;
    }
    get [$result]() {
      return this.result;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.FEFloodElement.created = function() {
    this[height$21] = null;
    this[result$5] = null;
    this[width$23] = null;
    this[x$14] = null;
    this[y$13] = null;
    svg$.FEFloodElement.__proto__.created.call(this);
  }).prototype = svg$.FEFloodElement.prototype;
  dart.addTypeTests(svg$.FEFloodElement);
  const height$21 = Symbol("FEFloodElement.height");
  const result$5 = Symbol("FEFloodElement.result");
  const width$23 = Symbol("FEFloodElement.width");
  const x$14 = Symbol("FEFloodElement.x");
  const y$13 = Symbol("FEFloodElement.y");
  svg$.FEFloodElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
  dart.setFieldSignature(svg$.FEFloodElement, () => ({
    __proto__: dart.getFields(svg$.FEFloodElement.__proto__),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$result]: dart.finalFieldType(svg$.AnimatedString),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.registerExtension("SVGFEFloodElement", svg$.FEFloodElement);
  svg$._SVGComponentTransferFunctionElement = class _SVGComponentTransferFunctionElement extends svg$.SvgElement {};
  (svg$._SVGComponentTransferFunctionElement.created = function() {
    svg$._SVGComponentTransferFunctionElement.__proto__.created.call(this);
  }).prototype = svg$._SVGComponentTransferFunctionElement.prototype;
  dart.addTypeTests(svg$._SVGComponentTransferFunctionElement);
  dart.registerExtension("SVGComponentTransferFunctionElement", svg$._SVGComponentTransferFunctionElement);
  svg$.FEFuncAElement = class FEFuncAElement extends svg$._SVGComponentTransferFunctionElement {
    static new() {
      return svg$.FEFuncAElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feFuncA"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feFuncA")) && svg$.FEFuncAElement.is(svg$.SvgElement.tag("feFuncA"));
    }
  };
  (svg$.FEFuncAElement.created = function() {
    svg$.FEFuncAElement.__proto__.created.call(this);
  }).prototype = svg$.FEFuncAElement.prototype;
  dart.addTypeTests(svg$.FEFuncAElement);
  dart.registerExtension("SVGFEFuncAElement", svg$.FEFuncAElement);
  svg$.FEFuncBElement = class FEFuncBElement extends svg$._SVGComponentTransferFunctionElement {
    static new() {
      return svg$.FEFuncBElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feFuncB"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feFuncB")) && svg$.FEFuncBElement.is(svg$.SvgElement.tag("feFuncB"));
    }
  };
  (svg$.FEFuncBElement.created = function() {
    svg$.FEFuncBElement.__proto__.created.call(this);
  }).prototype = svg$.FEFuncBElement.prototype;
  dart.addTypeTests(svg$.FEFuncBElement);
  dart.registerExtension("SVGFEFuncBElement", svg$.FEFuncBElement);
  svg$.FEFuncGElement = class FEFuncGElement extends svg$._SVGComponentTransferFunctionElement {
    static new() {
      return svg$.FEFuncGElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feFuncG"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feFuncG")) && svg$.FEFuncGElement.is(svg$.SvgElement.tag("feFuncG"));
    }
  };
  (svg$.FEFuncGElement.created = function() {
    svg$.FEFuncGElement.__proto__.created.call(this);
  }).prototype = svg$.FEFuncGElement.prototype;
  dart.addTypeTests(svg$.FEFuncGElement);
  dart.registerExtension("SVGFEFuncGElement", svg$.FEFuncGElement);
  svg$.FEFuncRElement = class FEFuncRElement extends svg$._SVGComponentTransferFunctionElement {
    static new() {
      return svg$.FEFuncRElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feFuncR"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feFuncR")) && svg$.FEFuncRElement.is(svg$.SvgElement.tag("feFuncR"));
    }
  };
  (svg$.FEFuncRElement.created = function() {
    svg$.FEFuncRElement.__proto__.created.call(this);
  }).prototype = svg$.FEFuncRElement.prototype;
  dart.addTypeTests(svg$.FEFuncRElement);
  dart.registerExtension("SVGFEFuncRElement", svg$.FEFuncRElement);
  svg$.FEGaussianBlurElement = class FEGaussianBlurElement extends svg$.SvgElement {
    static new() {
      return svg$.FEGaussianBlurElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feGaussianBlur"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feGaussianBlur")) && svg$.FEGaussianBlurElement.is(svg$.SvgElement.tag("feGaussianBlur"));
    }
    get [$in1]() {
      return this.in1;
    }
    get [$stdDeviationX]() {
      return this.stdDeviationX;
    }
    get [$stdDeviationY]() {
      return this.stdDeviationY;
    }
    [$setStdDeviation](...args) {
      return this.setStdDeviation.apply(this, args);
    }
    get [$height]() {
      return this.height;
    }
    get [$result]() {
      return this.result;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.FEGaussianBlurElement.created = function() {
    this[in1$5] = null;
    this[stdDeviationX] = null;
    this[stdDeviationY] = null;
    this[height$22] = null;
    this[result$6] = null;
    this[width$24] = null;
    this[x$15] = null;
    this[y$14] = null;
    svg$.FEGaussianBlurElement.__proto__.created.call(this);
  }).prototype = svg$.FEGaussianBlurElement.prototype;
  dart.addTypeTests(svg$.FEGaussianBlurElement);
  const in1$5 = Symbol("FEGaussianBlurElement.in1");
  const stdDeviationX = Symbol("FEGaussianBlurElement.stdDeviationX");
  const stdDeviationY = Symbol("FEGaussianBlurElement.stdDeviationY");
  const height$22 = Symbol("FEGaussianBlurElement.height");
  const result$6 = Symbol("FEGaussianBlurElement.result");
  const width$24 = Symbol("FEGaussianBlurElement.width");
  const x$15 = Symbol("FEGaussianBlurElement.x");
  const y$14 = Symbol("FEGaussianBlurElement.y");
  svg$.FEGaussianBlurElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
  dart.setMethodSignature(svg$.FEGaussianBlurElement, () => ({
    __proto__: dart.getMethods(svg$.FEGaussianBlurElement.__proto__),
    [$setStdDeviation]: dart.fnType(dart.void, [core.num, core.num])
  }));
  dart.setFieldSignature(svg$.FEGaussianBlurElement, () => ({
    __proto__: dart.getFields(svg$.FEGaussianBlurElement.__proto__),
    [$in1]: dart.finalFieldType(svg$.AnimatedString),
    [$stdDeviationX]: dart.finalFieldType(svg$.AnimatedNumber),
    [$stdDeviationY]: dart.finalFieldType(svg$.AnimatedNumber),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$result]: dart.finalFieldType(svg$.AnimatedString),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.registerExtension("SVGFEGaussianBlurElement", svg$.FEGaussianBlurElement);
  svg$.FEImageElement = class FEImageElement extends svg$.SvgElement {
    static new() {
      return svg$.FEImageElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feImage"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feImage")) && svg$.FEImageElement.is(svg$.SvgElement.tag("feImage"));
    }
    get [$preserveAspectRatio]() {
      return this.preserveAspectRatio;
    }
    get [$height]() {
      return this.height;
    }
    get [$result]() {
      return this.result;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
    get [$href]() {
      return this.href;
    }
  };
  (svg$.FEImageElement.created = function() {
    this[preserveAspectRatio] = null;
    this[height$23] = null;
    this[result$7] = null;
    this[width$25] = null;
    this[x$16] = null;
    this[y$15] = null;
    this[href$9] = null;
    svg$.FEImageElement.__proto__.created.call(this);
  }).prototype = svg$.FEImageElement.prototype;
  dart.addTypeTests(svg$.FEImageElement);
  const preserveAspectRatio = Symbol("FEImageElement.preserveAspectRatio");
  const height$23 = Symbol("FEImageElement.height");
  const result$7 = Symbol("FEImageElement.result");
  const width$25 = Symbol("FEImageElement.width");
  const x$16 = Symbol("FEImageElement.x");
  const y$15 = Symbol("FEImageElement.y");
  const href$9 = Symbol("FEImageElement.href");
  svg$.FEImageElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes, svg$.UriReference];
  dart.setFieldSignature(svg$.FEImageElement, () => ({
    __proto__: dart.getFields(svg$.FEImageElement.__proto__),
    [$preserveAspectRatio]: dart.finalFieldType(svg$.AnimatedPreserveAspectRatio),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$result]: dart.finalFieldType(svg$.AnimatedString),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength),
    [$href]: dart.finalFieldType(svg$.AnimatedString)
  }));
  dart.registerExtension("SVGFEImageElement", svg$.FEImageElement);
  svg$.FEMergeElement = class FEMergeElement extends svg$.SvgElement {
    static new() {
      return svg$.FEMergeElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feMerge"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feMerge")) && svg$.FEMergeElement.is(svg$.SvgElement.tag("feMerge"));
    }
    get [$height]() {
      return this.height;
    }
    get [$result]() {
      return this.result;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.FEMergeElement.created = function() {
    this[height$24] = null;
    this[result$8] = null;
    this[width$26] = null;
    this[x$17] = null;
    this[y$16] = null;
    svg$.FEMergeElement.__proto__.created.call(this);
  }).prototype = svg$.FEMergeElement.prototype;
  dart.addTypeTests(svg$.FEMergeElement);
  const height$24 = Symbol("FEMergeElement.height");
  const result$8 = Symbol("FEMergeElement.result");
  const width$26 = Symbol("FEMergeElement.width");
  const x$17 = Symbol("FEMergeElement.x");
  const y$16 = Symbol("FEMergeElement.y");
  svg$.FEMergeElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
  dart.setFieldSignature(svg$.FEMergeElement, () => ({
    __proto__: dart.getFields(svg$.FEMergeElement.__proto__),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$result]: dart.finalFieldType(svg$.AnimatedString),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.registerExtension("SVGFEMergeElement", svg$.FEMergeElement);
  svg$.FEMergeNodeElement = class FEMergeNodeElement extends svg$.SvgElement {
    static new() {
      return svg$.FEMergeNodeElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feMergeNode"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feMergeNode")) && svg$.FEMergeNodeElement.is(svg$.SvgElement.tag("feMergeNode"));
    }
    get [$in1]() {
      return this.in1;
    }
  };
  (svg$.FEMergeNodeElement.created = function() {
    this[in1$6] = null;
    svg$.FEMergeNodeElement.__proto__.created.call(this);
  }).prototype = svg$.FEMergeNodeElement.prototype;
  dart.addTypeTests(svg$.FEMergeNodeElement);
  const in1$6 = Symbol("FEMergeNodeElement.in1");
  dart.setFieldSignature(svg$.FEMergeNodeElement, () => ({
    __proto__: dart.getFields(svg$.FEMergeNodeElement.__proto__),
    [$in1]: dart.finalFieldType(svg$.AnimatedString)
  }));
  dart.registerExtension("SVGFEMergeNodeElement", svg$.FEMergeNodeElement);
  svg$.FEMorphologyElement = class FEMorphologyElement extends svg$.SvgElement {
    get [$in1]() {
      return this.in1;
    }
    get [$operator]() {
      return this.operator;
    }
    get [$radiusX]() {
      return this.radiusX;
    }
    get [$radiusY]() {
      return this.radiusY;
    }
    get [$height]() {
      return this.height;
    }
    get [$result]() {
      return this.result;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.FEMorphologyElement.created = function() {
    this[in1$7] = null;
    this[operator$] = null;
    this[radiusX] = null;
    this[radiusY] = null;
    this[height$25] = null;
    this[result$9] = null;
    this[width$27] = null;
    this[x$18] = null;
    this[y$17] = null;
    svg$.FEMorphologyElement.__proto__.created.call(this);
  }).prototype = svg$.FEMorphologyElement.prototype;
  dart.addTypeTests(svg$.FEMorphologyElement);
  const in1$7 = Symbol("FEMorphologyElement.in1");
  const operator$ = Symbol("FEMorphologyElement.operator");
  const radiusX = Symbol("FEMorphologyElement.radiusX");
  const radiusY = Symbol("FEMorphologyElement.radiusY");
  const height$25 = Symbol("FEMorphologyElement.height");
  const result$9 = Symbol("FEMorphologyElement.result");
  const width$27 = Symbol("FEMorphologyElement.width");
  const x$18 = Symbol("FEMorphologyElement.x");
  const y$17 = Symbol("FEMorphologyElement.y");
  svg$.FEMorphologyElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
  dart.setFieldSignature(svg$.FEMorphologyElement, () => ({
    __proto__: dart.getFields(svg$.FEMorphologyElement.__proto__),
    [$in1]: dart.finalFieldType(svg$.AnimatedString),
    [$operator]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$radiusX]: dart.finalFieldType(svg$.AnimatedNumber),
    [$radiusY]: dart.finalFieldType(svg$.AnimatedNumber),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$result]: dart.finalFieldType(svg$.AnimatedString),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.defineLazy(svg$.FEMorphologyElement, {
    /*svg$.FEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_DILATE*/get SVG_MORPHOLOGY_OPERATOR_DILATE() {
      return 2;
    },
    /*svg$.FEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_ERODE*/get SVG_MORPHOLOGY_OPERATOR_ERODE() {
      return 1;
    },
    /*svg$.FEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_UNKNOWN*/get SVG_MORPHOLOGY_OPERATOR_UNKNOWN() {
      return 0;
    }
  });
  dart.registerExtension("SVGFEMorphologyElement", svg$.FEMorphologyElement);
  svg$.FEOffsetElement = class FEOffsetElement extends svg$.SvgElement {
    static new() {
      return svg$.FEOffsetElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feOffset"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feOffset")) && svg$.FEOffsetElement.is(svg$.SvgElement.tag("feOffset"));
    }
    get [$dx]() {
      return this.dx;
    }
    get [$dy]() {
      return this.dy;
    }
    get [$in1]() {
      return this.in1;
    }
    get [$height]() {
      return this.height;
    }
    get [$result]() {
      return this.result;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.FEOffsetElement.created = function() {
    this[dx] = null;
    this[dy] = null;
    this[in1$8] = null;
    this[height$26] = null;
    this[result$10] = null;
    this[width$28] = null;
    this[x$19] = null;
    this[y$18] = null;
    svg$.FEOffsetElement.__proto__.created.call(this);
  }).prototype = svg$.FEOffsetElement.prototype;
  dart.addTypeTests(svg$.FEOffsetElement);
  const dx = Symbol("FEOffsetElement.dx");
  const dy = Symbol("FEOffsetElement.dy");
  const in1$8 = Symbol("FEOffsetElement.in1");
  const height$26 = Symbol("FEOffsetElement.height");
  const result$10 = Symbol("FEOffsetElement.result");
  const width$28 = Symbol("FEOffsetElement.width");
  const x$19 = Symbol("FEOffsetElement.x");
  const y$18 = Symbol("FEOffsetElement.y");
  svg$.FEOffsetElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
  dart.setFieldSignature(svg$.FEOffsetElement, () => ({
    __proto__: dart.getFields(svg$.FEOffsetElement.__proto__),
    [$dx]: dart.finalFieldType(svg$.AnimatedNumber),
    [$dy]: dart.finalFieldType(svg$.AnimatedNumber),
    [$in1]: dart.finalFieldType(svg$.AnimatedString),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$result]: dart.finalFieldType(svg$.AnimatedString),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.registerExtension("SVGFEOffsetElement", svg$.FEOffsetElement);
  svg$.FEPointLightElement = class FEPointLightElement extends svg$.SvgElement {
    static new() {
      return svg$.FEPointLightElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("fePointLight"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("fePointLight")) && svg$.FEPointLightElement.is(svg$.SvgElement.tag("fePointLight"));
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
    get [$z]() {
      return this.z;
    }
  };
  (svg$.FEPointLightElement.created = function() {
    this[x$20] = null;
    this[y$19] = null;
    this[z$6] = null;
    svg$.FEPointLightElement.__proto__.created.call(this);
  }).prototype = svg$.FEPointLightElement.prototype;
  dart.addTypeTests(svg$.FEPointLightElement);
  const x$20 = Symbol("FEPointLightElement.x");
  const y$19 = Symbol("FEPointLightElement.y");
  const z$6 = Symbol("FEPointLightElement.z");
  dart.setFieldSignature(svg$.FEPointLightElement, () => ({
    __proto__: dart.getFields(svg$.FEPointLightElement.__proto__),
    [$x]: dart.finalFieldType(svg$.AnimatedNumber),
    [$y]: dart.finalFieldType(svg$.AnimatedNumber),
    [$z]: dart.finalFieldType(svg$.AnimatedNumber)
  }));
  dart.registerExtension("SVGFEPointLightElement", svg$.FEPointLightElement);
  svg$.FESpecularLightingElement = class FESpecularLightingElement extends svg$.SvgElement {
    static new() {
      return svg$.FESpecularLightingElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feSpecularLighting"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feSpecularLighting")) && svg$.FESpecularLightingElement.is(svg$.SvgElement.tag("feSpecularLighting"));
    }
    get [$in1]() {
      return this.in1;
    }
    get [$kernelUnitLengthX]() {
      return this.kernelUnitLengthX;
    }
    get [$kernelUnitLengthY]() {
      return this.kernelUnitLengthY;
    }
    get [$specularConstant]() {
      return this.specularConstant;
    }
    get [$specularExponent]() {
      return this.specularExponent;
    }
    get [$surfaceScale]() {
      return this.surfaceScale;
    }
    get [$height]() {
      return this.height;
    }
    get [$result]() {
      return this.result;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.FESpecularLightingElement.created = function() {
    this[in1$9] = null;
    this[kernelUnitLengthX$0] = null;
    this[kernelUnitLengthY$0] = null;
    this[specularConstant] = null;
    this[specularExponent] = null;
    this[surfaceScale$] = null;
    this[height$27] = null;
    this[result$11] = null;
    this[width$29] = null;
    this[x$21] = null;
    this[y$20] = null;
    svg$.FESpecularLightingElement.__proto__.created.call(this);
  }).prototype = svg$.FESpecularLightingElement.prototype;
  dart.addTypeTests(svg$.FESpecularLightingElement);
  const in1$9 = Symbol("FESpecularLightingElement.in1");
  const kernelUnitLengthX$0 = Symbol("FESpecularLightingElement.kernelUnitLengthX");
  const kernelUnitLengthY$0 = Symbol("FESpecularLightingElement.kernelUnitLengthY");
  const specularConstant = Symbol("FESpecularLightingElement.specularConstant");
  const specularExponent = Symbol("FESpecularLightingElement.specularExponent");
  const surfaceScale$ = Symbol("FESpecularLightingElement.surfaceScale");
  const height$27 = Symbol("FESpecularLightingElement.height");
  const result$11 = Symbol("FESpecularLightingElement.result");
  const width$29 = Symbol("FESpecularLightingElement.width");
  const x$21 = Symbol("FESpecularLightingElement.x");
  const y$20 = Symbol("FESpecularLightingElement.y");
  svg$.FESpecularLightingElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
  dart.setFieldSignature(svg$.FESpecularLightingElement, () => ({
    __proto__: dart.getFields(svg$.FESpecularLightingElement.__proto__),
    [$in1]: dart.finalFieldType(svg$.AnimatedString),
    [$kernelUnitLengthX]: dart.finalFieldType(svg$.AnimatedNumber),
    [$kernelUnitLengthY]: dart.finalFieldType(svg$.AnimatedNumber),
    [$specularConstant]: dart.finalFieldType(svg$.AnimatedNumber),
    [$specularExponent]: dart.finalFieldType(svg$.AnimatedNumber),
    [$surfaceScale]: dart.finalFieldType(svg$.AnimatedNumber),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$result]: dart.finalFieldType(svg$.AnimatedString),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.registerExtension("SVGFESpecularLightingElement", svg$.FESpecularLightingElement);
  svg$.FESpotLightElement = class FESpotLightElement extends svg$.SvgElement {
    static new() {
      return svg$.FESpotLightElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feSpotLight"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feSpotLight")) && svg$.FESpotLightElement.is(svg$.SvgElement.tag("feSpotLight"));
    }
    get [$limitingConeAngle]() {
      return this.limitingConeAngle;
    }
    get [$pointsAtX]() {
      return this.pointsAtX;
    }
    get [$pointsAtY]() {
      return this.pointsAtY;
    }
    get [$pointsAtZ]() {
      return this.pointsAtZ;
    }
    get [$specularExponent]() {
      return this.specularExponent;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
    get [$z]() {
      return this.z;
    }
  };
  (svg$.FESpotLightElement.created = function() {
    this[limitingConeAngle] = null;
    this[pointsAtX] = null;
    this[pointsAtY] = null;
    this[pointsAtZ] = null;
    this[specularExponent$] = null;
    this[x$22] = null;
    this[y$21] = null;
    this[z$7] = null;
    svg$.FESpotLightElement.__proto__.created.call(this);
  }).prototype = svg$.FESpotLightElement.prototype;
  dart.addTypeTests(svg$.FESpotLightElement);
  const limitingConeAngle = Symbol("FESpotLightElement.limitingConeAngle");
  const pointsAtX = Symbol("FESpotLightElement.pointsAtX");
  const pointsAtY = Symbol("FESpotLightElement.pointsAtY");
  const pointsAtZ = Symbol("FESpotLightElement.pointsAtZ");
  const specularExponent$ = Symbol("FESpotLightElement.specularExponent");
  const x$22 = Symbol("FESpotLightElement.x");
  const y$21 = Symbol("FESpotLightElement.y");
  const z$7 = Symbol("FESpotLightElement.z");
  dart.setFieldSignature(svg$.FESpotLightElement, () => ({
    __proto__: dart.getFields(svg$.FESpotLightElement.__proto__),
    [$limitingConeAngle]: dart.finalFieldType(svg$.AnimatedNumber),
    [$pointsAtX]: dart.finalFieldType(svg$.AnimatedNumber),
    [$pointsAtY]: dart.finalFieldType(svg$.AnimatedNumber),
    [$pointsAtZ]: dart.finalFieldType(svg$.AnimatedNumber),
    [$specularExponent]: dart.finalFieldType(svg$.AnimatedNumber),
    [$x]: dart.finalFieldType(svg$.AnimatedNumber),
    [$y]: dart.finalFieldType(svg$.AnimatedNumber),
    [$z]: dart.finalFieldType(svg$.AnimatedNumber)
  }));
  dart.registerExtension("SVGFESpotLightElement", svg$.FESpotLightElement);
  svg$.FETileElement = class FETileElement extends svg$.SvgElement {
    static new() {
      return svg$.FETileElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feTile"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feTile")) && svg$.FETileElement.is(svg$.SvgElement.tag("feTile"));
    }
    get [$in1]() {
      return this.in1;
    }
    get [$height]() {
      return this.height;
    }
    get [$result]() {
      return this.result;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.FETileElement.created = function() {
    this[in1$10] = null;
    this[height$28] = null;
    this[result$12] = null;
    this[width$30] = null;
    this[x$23] = null;
    this[y$22] = null;
    svg$.FETileElement.__proto__.created.call(this);
  }).prototype = svg$.FETileElement.prototype;
  dart.addTypeTests(svg$.FETileElement);
  const in1$10 = Symbol("FETileElement.in1");
  const height$28 = Symbol("FETileElement.height");
  const result$12 = Symbol("FETileElement.result");
  const width$30 = Symbol("FETileElement.width");
  const x$23 = Symbol("FETileElement.x");
  const y$22 = Symbol("FETileElement.y");
  svg$.FETileElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
  dart.setFieldSignature(svg$.FETileElement, () => ({
    __proto__: dart.getFields(svg$.FETileElement.__proto__),
    [$in1]: dart.finalFieldType(svg$.AnimatedString),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$result]: dart.finalFieldType(svg$.AnimatedString),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.registerExtension("SVGFETileElement", svg$.FETileElement);
  svg$.FETurbulenceElement = class FETurbulenceElement extends svg$.SvgElement {
    static new() {
      return svg$.FETurbulenceElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feTurbulence"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("feTurbulence")) && svg$.FETurbulenceElement.is(svg$.SvgElement.tag("feTurbulence"));
    }
    get [$baseFrequencyX]() {
      return this.baseFrequencyX;
    }
    get [$baseFrequencyY]() {
      return this.baseFrequencyY;
    }
    get [$numOctaves]() {
      return this.numOctaves;
    }
    get [$seed]() {
      return this.seed;
    }
    get [$stitchTiles]() {
      return this.stitchTiles;
    }
    get [$type]() {
      return this.type;
    }
    get [$height]() {
      return this.height;
    }
    get [$result]() {
      return this.result;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.FETurbulenceElement.created = function() {
    this[baseFrequencyX] = null;
    this[baseFrequencyY] = null;
    this[numOctaves] = null;
    this[seed] = null;
    this[stitchTiles] = null;
    this[type$38] = null;
    this[height$29] = null;
    this[result$13] = null;
    this[width$31] = null;
    this[x$24] = null;
    this[y$23] = null;
    svg$.FETurbulenceElement.__proto__.created.call(this);
  }).prototype = svg$.FETurbulenceElement.prototype;
  dart.addTypeTests(svg$.FETurbulenceElement);
  const baseFrequencyX = Symbol("FETurbulenceElement.baseFrequencyX");
  const baseFrequencyY = Symbol("FETurbulenceElement.baseFrequencyY");
  const numOctaves = Symbol("FETurbulenceElement.numOctaves");
  const seed = Symbol("FETurbulenceElement.seed");
  const stitchTiles = Symbol("FETurbulenceElement.stitchTiles");
  const type$38 = Symbol("FETurbulenceElement.type");
  const height$29 = Symbol("FETurbulenceElement.height");
  const result$13 = Symbol("FETurbulenceElement.result");
  const width$31 = Symbol("FETurbulenceElement.width");
  const x$24 = Symbol("FETurbulenceElement.x");
  const y$23 = Symbol("FETurbulenceElement.y");
  svg$.FETurbulenceElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
  dart.setFieldSignature(svg$.FETurbulenceElement, () => ({
    __proto__: dart.getFields(svg$.FETurbulenceElement.__proto__),
    [$baseFrequencyX]: dart.finalFieldType(svg$.AnimatedNumber),
    [$baseFrequencyY]: dart.finalFieldType(svg$.AnimatedNumber),
    [$numOctaves]: dart.finalFieldType(svg$.AnimatedInteger),
    [$seed]: dart.finalFieldType(svg$.AnimatedNumber),
    [$stitchTiles]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$type]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$result]: dart.finalFieldType(svg$.AnimatedString),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.defineLazy(svg$.FETurbulenceElement, {
    /*svg$.FETurbulenceElement.SVG_STITCHTYPE_NOSTITCH*/get SVG_STITCHTYPE_NOSTITCH() {
      return 2;
    },
    /*svg$.FETurbulenceElement.SVG_STITCHTYPE_STITCH*/get SVG_STITCHTYPE_STITCH() {
      return 1;
    },
    /*svg$.FETurbulenceElement.SVG_STITCHTYPE_UNKNOWN*/get SVG_STITCHTYPE_UNKNOWN() {
      return 0;
    },
    /*svg$.FETurbulenceElement.SVG_TURBULENCE_TYPE_FRACTALNOISE*/get SVG_TURBULENCE_TYPE_FRACTALNOISE() {
      return 1;
    },
    /*svg$.FETurbulenceElement.SVG_TURBULENCE_TYPE_TURBULENCE*/get SVG_TURBULENCE_TYPE_TURBULENCE() {
      return 2;
    },
    /*svg$.FETurbulenceElement.SVG_TURBULENCE_TYPE_UNKNOWN*/get SVG_TURBULENCE_TYPE_UNKNOWN() {
      return 0;
    }
  });
  dart.registerExtension("SVGFETurbulenceElement", svg$.FETurbulenceElement);
  svg$.FilterElement = class FilterElement extends svg$.SvgElement {
    static new() {
      return svg$.FilterElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("filter"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("filter")) && svg$.FilterElement.is(svg$.SvgElement.tag("filter"));
    }
    get [$filterUnits]() {
      return this.filterUnits;
    }
    get [$height]() {
      return this.height;
    }
    get [$primitiveUnits]() {
      return this.primitiveUnits;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
    get [$href]() {
      return this.href;
    }
  };
  (svg$.FilterElement.created = function() {
    this[filterUnits] = null;
    this[height$30] = null;
    this[primitiveUnits] = null;
    this[width$32] = null;
    this[x$25] = null;
    this[y$24] = null;
    this[href$10] = null;
    svg$.FilterElement.__proto__.created.call(this);
  }).prototype = svg$.FilterElement.prototype;
  dart.addTypeTests(svg$.FilterElement);
  const filterUnits = Symbol("FilterElement.filterUnits");
  const height$30 = Symbol("FilterElement.height");
  const primitiveUnits = Symbol("FilterElement.primitiveUnits");
  const width$32 = Symbol("FilterElement.width");
  const x$25 = Symbol("FilterElement.x");
  const y$24 = Symbol("FilterElement.y");
  const href$10 = Symbol("FilterElement.href");
  svg$.FilterElement[dart.implements] = () => [svg$.UriReference];
  dart.setFieldSignature(svg$.FilterElement, () => ({
    __proto__: dart.getFields(svg$.FilterElement.__proto__),
    [$filterUnits]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$primitiveUnits]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength),
    [$href]: dart.finalFieldType(svg$.AnimatedString)
  }));
  dart.registerExtension("SVGFilterElement", svg$.FilterElement);
  svg$.FilterPrimitiveStandardAttributes = class FilterPrimitiveStandardAttributes extends _interceptors.Interceptor {
    get height() {
      return this[height$31];
    }
    set height(value) {
      super.height = value;
    }
    get result() {
      return this[result$14];
    }
    set result(value) {
      super.result = value;
    }
    get width() {
      return this[width$33];
    }
    set width(value) {
      super.width = value;
    }
    get x() {
      return this[x$26];
    }
    set x(value) {
      super.x = value;
    }
    get y() {
      return this[y$25];
    }
    set y(value) {
      super.y = value;
    }
  };
  dart.addTypeTests(svg$.FilterPrimitiveStandardAttributes);
  const height$31 = Symbol("FilterPrimitiveStandardAttributes.height");
  const result$14 = Symbol("FilterPrimitiveStandardAttributes.result");
  const width$33 = Symbol("FilterPrimitiveStandardAttributes.width");
  const x$26 = Symbol("FilterPrimitiveStandardAttributes.x");
  const y$25 = Symbol("FilterPrimitiveStandardAttributes.y");
  dart.setFieldSignature(svg$.FilterPrimitiveStandardAttributes, () => ({
    __proto__: dart.getFields(svg$.FilterPrimitiveStandardAttributes.__proto__),
    height: dart.finalFieldType(svg$.AnimatedLength),
    result: dart.finalFieldType(svg$.AnimatedString),
    width: dart.finalFieldType(svg$.AnimatedLength),
    x: dart.finalFieldType(svg$.AnimatedLength),
    y: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.defineExtensionAccessors(svg$.FilterPrimitiveStandardAttributes, [
    'height',
    'result',
    'width',
    'x',
    'y'
  ]);
  svg$.FitToViewBox = class FitToViewBox extends _interceptors.Interceptor {
    get preserveAspectRatio() {
      return this[preserveAspectRatio$];
    }
    set preserveAspectRatio(value) {
      super.preserveAspectRatio = value;
    }
    get viewBox() {
      return this[viewBox];
    }
    set viewBox(value) {
      super.viewBox = value;
    }
  };
  dart.addTypeTests(svg$.FitToViewBox);
  const preserveAspectRatio$ = Symbol("FitToViewBox.preserveAspectRatio");
  const viewBox = Symbol("FitToViewBox.viewBox");
  dart.setFieldSignature(svg$.FitToViewBox, () => ({
    __proto__: dart.getFields(svg$.FitToViewBox.__proto__),
    preserveAspectRatio: dart.finalFieldType(svg$.AnimatedPreserveAspectRatio),
    viewBox: dart.finalFieldType(svg$.AnimatedRect)
  }));
  dart.defineExtensionAccessors(svg$.FitToViewBox, ['preserveAspectRatio', 'viewBox']);
  svg$.ForeignObjectElement = class ForeignObjectElement extends svg$.GraphicsElement {
    static new() {
      return svg$.ForeignObjectElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("foreignObject"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("foreignObject")) && svg$.ForeignObjectElement.is(svg$.SvgElement.tag("foreignObject"));
    }
    get [$height]() {
      return this.height;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.ForeignObjectElement.created = function() {
    this[height$32] = null;
    this[width$34] = null;
    this[x$27] = null;
    this[y$26] = null;
    svg$.ForeignObjectElement.__proto__.created.call(this);
  }).prototype = svg$.ForeignObjectElement.prototype;
  dart.addTypeTests(svg$.ForeignObjectElement);
  const height$32 = Symbol("ForeignObjectElement.height");
  const width$34 = Symbol("ForeignObjectElement.width");
  const x$27 = Symbol("ForeignObjectElement.x");
  const y$26 = Symbol("ForeignObjectElement.y");
  dart.setFieldSignature(svg$.ForeignObjectElement, () => ({
    __proto__: dart.getFields(svg$.ForeignObjectElement.__proto__),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.registerExtension("SVGForeignObjectElement", svg$.ForeignObjectElement);
  svg$.GElement = class GElement extends svg$.GraphicsElement {
    static new() {
      return svg$.GElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("g"));
    }
  };
  (svg$.GElement.created = function() {
    svg$.GElement.__proto__.created.call(this);
  }).prototype = svg$.GElement.prototype;
  dart.addTypeTests(svg$.GElement);
  dart.registerExtension("SVGGElement", svg$.GElement);
  svg$.ImageElement = class ImageElement extends svg$.GraphicsElement {
    static new() {
      return svg$.ImageElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("image"));
    }
    get [$async]() {
      return this.async;
    }
    set [$async](value) {
      this.async = value;
    }
    get [$height]() {
      return this.height;
    }
    get [$preserveAspectRatio]() {
      return this.preserveAspectRatio;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
    [$decode]() {
      return html$.promiseToFuture(dart.dynamic, this.decode());
    }
    get [$href]() {
      return this.href;
    }
  };
  (svg$.ImageElement.created = function() {
    this[async$1] = null;
    this[height$33] = null;
    this[preserveAspectRatio$0] = null;
    this[width$35] = null;
    this[x$28] = null;
    this[y$27] = null;
    this[href$11] = null;
    svg$.ImageElement.__proto__.created.call(this);
  }).prototype = svg$.ImageElement.prototype;
  dart.addTypeTests(svg$.ImageElement);
  const async$1 = Symbol("ImageElement.async");
  const height$33 = Symbol("ImageElement.height");
  const preserveAspectRatio$0 = Symbol("ImageElement.preserveAspectRatio");
  const width$35 = Symbol("ImageElement.width");
  const x$28 = Symbol("ImageElement.x");
  const y$27 = Symbol("ImageElement.y");
  const href$11 = Symbol("ImageElement.href");
  svg$.ImageElement[dart.implements] = () => [svg$.UriReference];
  dart.setMethodSignature(svg$.ImageElement, () => ({
    __proto__: dart.getMethods(svg$.ImageElement.__proto__),
    [$decode]: dart.fnType(async.Future, [])
  }));
  dart.setFieldSignature(svg$.ImageElement, () => ({
    __proto__: dart.getFields(svg$.ImageElement.__proto__),
    [$async]: dart.fieldType(core.String),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$preserveAspectRatio]: dart.finalFieldType(svg$.AnimatedPreserveAspectRatio),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength),
    [$href]: dart.finalFieldType(svg$.AnimatedString)
  }));
  dart.registerExtension("SVGImageElement", svg$.ImageElement);
  svg$.Length = class Length extends _interceptors.Interceptor {
    get [$unitType]() {
      return this.unitType;
    }
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
    get [$valueAsString]() {
      return this.valueAsString;
    }
    set [$valueAsString](value) {
      this.valueAsString = value;
    }
    get [$valueInSpecifiedUnits]() {
      return this.valueInSpecifiedUnits;
    }
    set [$valueInSpecifiedUnits](value) {
      this.valueInSpecifiedUnits = value;
    }
    [$convertToSpecifiedUnits](...args) {
      return this.convertToSpecifiedUnits.apply(this, args);
    }
    [$newValueSpecifiedUnits](...args) {
      return this.newValueSpecifiedUnits.apply(this, args);
    }
  };
  dart.addTypeTests(svg$.Length);
  const unitType$ = Symbol("Length.unitType");
  const value$18 = Symbol("Length.value");
  const valueAsString$ = Symbol("Length.valueAsString");
  const valueInSpecifiedUnits$ = Symbol("Length.valueInSpecifiedUnits");
  dart.setMethodSignature(svg$.Length, () => ({
    __proto__: dart.getMethods(svg$.Length.__proto__),
    [$convertToSpecifiedUnits]: dart.fnType(dart.void, [core.int]),
    [$newValueSpecifiedUnits]: dart.fnType(dart.void, [core.int, core.num])
  }));
  dart.setFieldSignature(svg$.Length, () => ({
    __proto__: dart.getFields(svg$.Length.__proto__),
    [$unitType]: dart.finalFieldType(core.int),
    [$value]: dart.fieldType(core.num),
    [$valueAsString]: dart.fieldType(core.String),
    [$valueInSpecifiedUnits]: dart.fieldType(core.num)
  }));
  dart.defineLazy(svg$.Length, {
    /*svg$.Length.SVG_LENGTHTYPE_CM*/get SVG_LENGTHTYPE_CM() {
      return 6;
    },
    /*svg$.Length.SVG_LENGTHTYPE_EMS*/get SVG_LENGTHTYPE_EMS() {
      return 3;
    },
    /*svg$.Length.SVG_LENGTHTYPE_EXS*/get SVG_LENGTHTYPE_EXS() {
      return 4;
    },
    /*svg$.Length.SVG_LENGTHTYPE_IN*/get SVG_LENGTHTYPE_IN() {
      return 8;
    },
    /*svg$.Length.SVG_LENGTHTYPE_MM*/get SVG_LENGTHTYPE_MM() {
      return 7;
    },
    /*svg$.Length.SVG_LENGTHTYPE_NUMBER*/get SVG_LENGTHTYPE_NUMBER() {
      return 1;
    },
    /*svg$.Length.SVG_LENGTHTYPE_PC*/get SVG_LENGTHTYPE_PC() {
      return 10;
    },
    /*svg$.Length.SVG_LENGTHTYPE_PERCENTAGE*/get SVG_LENGTHTYPE_PERCENTAGE() {
      return 2;
    },
    /*svg$.Length.SVG_LENGTHTYPE_PT*/get SVG_LENGTHTYPE_PT() {
      return 9;
    },
    /*svg$.Length.SVG_LENGTHTYPE_PX*/get SVG_LENGTHTYPE_PX() {
      return 5;
    },
    /*svg$.Length.SVG_LENGTHTYPE_UNKNOWN*/get SVG_LENGTHTYPE_UNKNOWN() {
      return 0;
    }
  });
  dart.registerExtension("SVGLength", svg$.Length);
  const __setter__$ = Symbol('__setter__');
  const Interceptor_ListMixin$$13 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$13.new = function() {
    Interceptor_ListMixin$$13.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$13.prototype;
  dart.applyMixin(Interceptor_ListMixin$$13, collection.ListMixin$(svg$.Length));
  const Interceptor_ImmutableListMixin$$13 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$13 {};
  (Interceptor_ImmutableListMixin$$13.new = function() {
    Interceptor_ImmutableListMixin$$13.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$13.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$13, html$.ImmutableListMixin$(svg$.Length));
  svg$.LengthList = class LengthList extends Interceptor_ImmutableListMixin$$13 {
    get [$length]() {
      return this.length;
    }
    get [$numberOfItems]() {
      return this.numberOfItems;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this.getItem(index);
    }
    [$_set](index, value) {
      svg$.Length._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [__setter__$](...args) {
      return this.__setter__.apply(this, args);
    }
    [$appendItem](...args) {
      return this.appendItem.apply(this, args);
    }
    [$clear](...args) {
      return this.clear.apply(this, args);
    }
    [$getItem](...args) {
      return this.getItem.apply(this, args);
    }
    [$initialize](...args) {
      return this.initialize.apply(this, args);
    }
    [$insertItemBefore](...args) {
      return this.insertItemBefore.apply(this, args);
    }
    [$removeItem](...args) {
      return this.removeItem.apply(this, args);
    }
    [$replaceItem](...args) {
      return this.replaceItem.apply(this, args);
    }
  };
  svg$.LengthList.prototype[dart.isList] = true;
  dart.addTypeTests(svg$.LengthList);
  const numberOfItems = Symbol("LengthList.numberOfItems");
  svg$.LengthList[dart.implements] = () => [ListOfLength()];
  dart.setMethodSignature(svg$.LengthList, () => ({
    __proto__: dart.getMethods(svg$.LengthList.__proto__),
    [$_get]: dart.fnType(svg$.Length, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(svg$.Length, [core.int]),
    [__setter__$]: dart.fnType(dart.void, [core.int, svg$.Length]),
    [$appendItem]: dart.fnType(svg$.Length, [svg$.Length]),
    [$clear]: dart.fnType(dart.void, []),
    [$getItem]: dart.fnType(svg$.Length, [core.int]),
    [$initialize]: dart.fnType(svg$.Length, [svg$.Length]),
    [$insertItemBefore]: dart.fnType(svg$.Length, [svg$.Length, core.int]),
    [$removeItem]: dart.fnType(svg$.Length, [core.int]),
    [$replaceItem]: dart.fnType(svg$.Length, [svg$.Length, core.int])
  }));
  dart.setGetterSignature(svg$.LengthList, () => ({
    __proto__: dart.getGetters(svg$.LengthList.__proto__),
    [$length]: core.int,
    [$first]: svg$.Length,
    [$last]: svg$.Length,
    [$single]: svg$.Length
  }));
  dart.setSetterSignature(svg$.LengthList, () => ({
    __proto__: dart.getSetters(svg$.LengthList.__proto__),
    [$length]: core.int
  }));
  dart.setFieldSignature(svg$.LengthList, () => ({
    __proto__: dart.getFields(svg$.LengthList.__proto__),
    [$numberOfItems]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("SVGLengthList", svg$.LengthList);
  svg$.LineElement = class LineElement extends svg$.GeometryElement {
    static new() {
      return svg$.LineElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("line"));
    }
    get [$x1]() {
      return this.x1;
    }
    get [$x2]() {
      return this.x2;
    }
    get [$y1]() {
      return this.y1;
    }
    get [$y2]() {
      return this.y2;
    }
  };
  (svg$.LineElement.created = function() {
    this[x1] = null;
    this[x2] = null;
    this[y1] = null;
    this[y2] = null;
    svg$.LineElement.__proto__.created.call(this);
  }).prototype = svg$.LineElement.prototype;
  dart.addTypeTests(svg$.LineElement);
  const x1 = Symbol("LineElement.x1");
  const x2 = Symbol("LineElement.x2");
  const y1 = Symbol("LineElement.y1");
  const y2 = Symbol("LineElement.y2");
  dart.setFieldSignature(svg$.LineElement, () => ({
    __proto__: dart.getFields(svg$.LineElement.__proto__),
    [$x1]: dart.finalFieldType(svg$.AnimatedLength),
    [$x2]: dart.finalFieldType(svg$.AnimatedLength),
    [$y1]: dart.finalFieldType(svg$.AnimatedLength),
    [$y2]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.registerExtension("SVGLineElement", svg$.LineElement);
  svg$._GradientElement = class _GradientElement extends svg$.SvgElement {
    get [$gradientTransform]() {
      return this.gradientTransform;
    }
    get [$gradientUnits]() {
      return this.gradientUnits;
    }
    get [$spreadMethod]() {
      return this.spreadMethod;
    }
    get [$href]() {
      return this.href;
    }
  };
  (svg$._GradientElement.created = function() {
    this[gradientTransform] = null;
    this[gradientUnits] = null;
    this[spreadMethod] = null;
    this[href$12] = null;
    svg$._GradientElement.__proto__.created.call(this);
  }).prototype = svg$._GradientElement.prototype;
  dart.addTypeTests(svg$._GradientElement);
  const gradientTransform = Symbol("_GradientElement.gradientTransform");
  const gradientUnits = Symbol("_GradientElement.gradientUnits");
  const spreadMethod = Symbol("_GradientElement.spreadMethod");
  const href$12 = Symbol("_GradientElement.href");
  svg$._GradientElement[dart.implements] = () => [svg$.UriReference];
  dart.setFieldSignature(svg$._GradientElement, () => ({
    __proto__: dart.getFields(svg$._GradientElement.__proto__),
    [$gradientTransform]: dart.finalFieldType(svg$.AnimatedTransformList),
    [$gradientUnits]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$spreadMethod]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$href]: dart.finalFieldType(svg$.AnimatedString)
  }));
  dart.defineLazy(svg$._GradientElement, {
    /*svg$._GradientElement.SVG_SPREADMETHOD_PAD*/get SVG_SPREADMETHOD_PAD() {
      return 1;
    },
    /*svg$._GradientElement.SVG_SPREADMETHOD_REFLECT*/get SVG_SPREADMETHOD_REFLECT() {
      return 2;
    },
    /*svg$._GradientElement.SVG_SPREADMETHOD_REPEAT*/get SVG_SPREADMETHOD_REPEAT() {
      return 3;
    },
    /*svg$._GradientElement.SVG_SPREADMETHOD_UNKNOWN*/get SVG_SPREADMETHOD_UNKNOWN() {
      return 0;
    }
  });
  dart.registerExtension("SVGGradientElement", svg$._GradientElement);
  svg$.LinearGradientElement = class LinearGradientElement extends svg$._GradientElement {
    static new() {
      return svg$.LinearGradientElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("linearGradient"));
    }
    get [$x1]() {
      return this.x1;
    }
    get [$x2]() {
      return this.x2;
    }
    get [$y1]() {
      return this.y1;
    }
    get [$y2]() {
      return this.y2;
    }
  };
  (svg$.LinearGradientElement.created = function() {
    this[x1$] = null;
    this[x2$] = null;
    this[y1$] = null;
    this[y2$] = null;
    svg$.LinearGradientElement.__proto__.created.call(this);
  }).prototype = svg$.LinearGradientElement.prototype;
  dart.addTypeTests(svg$.LinearGradientElement);
  const x1$ = Symbol("LinearGradientElement.x1");
  const x2$ = Symbol("LinearGradientElement.x2");
  const y1$ = Symbol("LinearGradientElement.y1");
  const y2$ = Symbol("LinearGradientElement.y2");
  dart.setFieldSignature(svg$.LinearGradientElement, () => ({
    __proto__: dart.getFields(svg$.LinearGradientElement.__proto__),
    [$x1]: dart.finalFieldType(svg$.AnimatedLength),
    [$x2]: dart.finalFieldType(svg$.AnimatedLength),
    [$y1]: dart.finalFieldType(svg$.AnimatedLength),
    [$y2]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.registerExtension("SVGLinearGradientElement", svg$.LinearGradientElement);
  svg$.MarkerElement = class MarkerElement extends svg$.SvgElement {
    static new() {
      return svg$.MarkerElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("marker"));
    }
    get [$markerHeight]() {
      return this.markerHeight;
    }
    get [$markerUnits]() {
      return this.markerUnits;
    }
    get [$markerWidth]() {
      return this.markerWidth;
    }
    get [$orientAngle]() {
      return this.orientAngle;
    }
    get [$orientType]() {
      return this.orientType;
    }
    get [$refX]() {
      return this.refX;
    }
    get [$refY]() {
      return this.refY;
    }
    [$setOrientToAngle](...args) {
      return this.setOrientToAngle.apply(this, args);
    }
    [$setOrientToAuto](...args) {
      return this.setOrientToAuto.apply(this, args);
    }
    get [$preserveAspectRatio]() {
      return this.preserveAspectRatio;
    }
    get [$viewBox]() {
      return this.viewBox;
    }
  };
  (svg$.MarkerElement.created = function() {
    this[markerHeight] = null;
    this[markerUnits] = null;
    this[markerWidth] = null;
    this[orientAngle] = null;
    this[orientType] = null;
    this[refX] = null;
    this[refY] = null;
    this[preserveAspectRatio$1] = null;
    this[viewBox$] = null;
    svg$.MarkerElement.__proto__.created.call(this);
  }).prototype = svg$.MarkerElement.prototype;
  dart.addTypeTests(svg$.MarkerElement);
  const markerHeight = Symbol("MarkerElement.markerHeight");
  const markerUnits = Symbol("MarkerElement.markerUnits");
  const markerWidth = Symbol("MarkerElement.markerWidth");
  const orientAngle = Symbol("MarkerElement.orientAngle");
  const orientType = Symbol("MarkerElement.orientType");
  const refX = Symbol("MarkerElement.refX");
  const refY = Symbol("MarkerElement.refY");
  const preserveAspectRatio$1 = Symbol("MarkerElement.preserveAspectRatio");
  const viewBox$ = Symbol("MarkerElement.viewBox");
  svg$.MarkerElement[dart.implements] = () => [svg$.FitToViewBox];
  dart.setMethodSignature(svg$.MarkerElement, () => ({
    __proto__: dart.getMethods(svg$.MarkerElement.__proto__),
    [$setOrientToAngle]: dart.fnType(dart.void, [svg$.Angle]),
    [$setOrientToAuto]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(svg$.MarkerElement, () => ({
    __proto__: dart.getFields(svg$.MarkerElement.__proto__),
    [$markerHeight]: dart.finalFieldType(svg$.AnimatedLength),
    [$markerUnits]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$markerWidth]: dart.finalFieldType(svg$.AnimatedLength),
    [$orientAngle]: dart.finalFieldType(svg$.AnimatedAngle),
    [$orientType]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$refX]: dart.finalFieldType(svg$.AnimatedLength),
    [$refY]: dart.finalFieldType(svg$.AnimatedLength),
    [$preserveAspectRatio]: dart.finalFieldType(svg$.AnimatedPreserveAspectRatio),
    [$viewBox]: dart.finalFieldType(svg$.AnimatedRect)
  }));
  dart.defineLazy(svg$.MarkerElement, {
    /*svg$.MarkerElement.SVG_MARKERUNITS_STROKEWIDTH*/get SVG_MARKERUNITS_STROKEWIDTH() {
      return 2;
    },
    /*svg$.MarkerElement.SVG_MARKERUNITS_UNKNOWN*/get SVG_MARKERUNITS_UNKNOWN() {
      return 0;
    },
    /*svg$.MarkerElement.SVG_MARKERUNITS_USERSPACEONUSE*/get SVG_MARKERUNITS_USERSPACEONUSE() {
      return 1;
    },
    /*svg$.MarkerElement.SVG_MARKER_ORIENT_ANGLE*/get SVG_MARKER_ORIENT_ANGLE() {
      return 2;
    },
    /*svg$.MarkerElement.SVG_MARKER_ORIENT_AUTO*/get SVG_MARKER_ORIENT_AUTO() {
      return 1;
    },
    /*svg$.MarkerElement.SVG_MARKER_ORIENT_UNKNOWN*/get SVG_MARKER_ORIENT_UNKNOWN() {
      return 0;
    }
  });
  dart.registerExtension("SVGMarkerElement", svg$.MarkerElement);
  svg$.MaskElement = class MaskElement extends svg$.SvgElement {
    static new() {
      return svg$.MaskElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("mask"));
    }
    get [$height]() {
      return this.height;
    }
    get [$maskContentUnits]() {
      return this.maskContentUnits;
    }
    get [$maskUnits]() {
      return this.maskUnits;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
    get [$requiredExtensions]() {
      return this.requiredExtensions;
    }
    get [$systemLanguage]() {
      return this.systemLanguage;
    }
  };
  (svg$.MaskElement.created = function() {
    this[height$34] = null;
    this[maskContentUnits] = null;
    this[maskUnits] = null;
    this[width$36] = null;
    this[x$29] = null;
    this[y$28] = null;
    this[requiredExtensions$0] = null;
    this[systemLanguage$0] = null;
    svg$.MaskElement.__proto__.created.call(this);
  }).prototype = svg$.MaskElement.prototype;
  dart.addTypeTests(svg$.MaskElement);
  const height$34 = Symbol("MaskElement.height");
  const maskContentUnits = Symbol("MaskElement.maskContentUnits");
  const maskUnits = Symbol("MaskElement.maskUnits");
  const width$36 = Symbol("MaskElement.width");
  const x$29 = Symbol("MaskElement.x");
  const y$28 = Symbol("MaskElement.y");
  const requiredExtensions$0 = Symbol("MaskElement.requiredExtensions");
  const systemLanguage$0 = Symbol("MaskElement.systemLanguage");
  svg$.MaskElement[dart.implements] = () => [svg$.Tests];
  dart.setFieldSignature(svg$.MaskElement, () => ({
    __proto__: dart.getFields(svg$.MaskElement.__proto__),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$maskContentUnits]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$maskUnits]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength),
    [$requiredExtensions]: dart.finalFieldType(svg$.StringList),
    [$systemLanguage]: dart.finalFieldType(svg$.StringList)
  }));
  dart.registerExtension("SVGMaskElement", svg$.MaskElement);
  svg$.Matrix = class Matrix extends _interceptors.Interceptor {
    get [$a]() {
      return this.a;
    }
    set [$a](value) {
      this.a = value;
    }
    get [$b]() {
      return this.b;
    }
    set [$b](value) {
      this.b = value;
    }
    get [$c]() {
      return this.c;
    }
    set [$c](value) {
      this.c = value;
    }
    get [$d]() {
      return this.d;
    }
    set [$d](value) {
      this.d = value;
    }
    get [$e]() {
      return this.e;
    }
    set [$e](value) {
      this.e = value;
    }
    get [$f]() {
      return this.f;
    }
    set [$f](value) {
      this.f = value;
    }
    [$flipX](...args) {
      return this.flipX.apply(this, args);
    }
    [$flipY](...args) {
      return this.flipY.apply(this, args);
    }
    [$inverse](...args) {
      return this.inverse.apply(this, args);
    }
    [$multiply](...args) {
      return this.multiply.apply(this, args);
    }
    [$rotate](...args) {
      return this.rotate.apply(this, args);
    }
    [$rotateFromVector](...args) {
      return this.rotateFromVector.apply(this, args);
    }
    [$scale](...args) {
      return this.scale.apply(this, args);
    }
    [$scaleNonUniform](...args) {
      return this.scaleNonUniform.apply(this, args);
    }
    [$skewX](...args) {
      return this.skewX.apply(this, args);
    }
    [$skewY](...args) {
      return this.skewY.apply(this, args);
    }
    [$translate](...args) {
      return this.translate.apply(this, args);
    }
  };
  dart.addTypeTests(svg$.Matrix);
  const a = Symbol("Matrix.a");
  const b = Symbol("Matrix.b");
  const c = Symbol("Matrix.c");
  const d = Symbol("Matrix.d");
  const e = Symbol("Matrix.e");
  const f = Symbol("Matrix.f");
  dart.setMethodSignature(svg$.Matrix, () => ({
    __proto__: dart.getMethods(svg$.Matrix.__proto__),
    [$flipX]: dart.fnType(svg$.Matrix, []),
    [$flipY]: dart.fnType(svg$.Matrix, []),
    [$inverse]: dart.fnType(svg$.Matrix, []),
    [$multiply]: dart.fnType(svg$.Matrix, [svg$.Matrix]),
    [$rotate]: dart.fnType(svg$.Matrix, [core.num]),
    [$rotateFromVector]: dart.fnType(svg$.Matrix, [core.num, core.num]),
    [$scale]: dart.fnType(svg$.Matrix, [core.num]),
    [$scaleNonUniform]: dart.fnType(svg$.Matrix, [core.num, core.num]),
    [$skewX]: dart.fnType(svg$.Matrix, [core.num]),
    [$skewY]: dart.fnType(svg$.Matrix, [core.num]),
    [$translate]: dart.fnType(svg$.Matrix, [core.num, core.num])
  }));
  dart.setFieldSignature(svg$.Matrix, () => ({
    __proto__: dart.getFields(svg$.Matrix.__proto__),
    [$a]: dart.fieldType(core.num),
    [$b]: dart.fieldType(core.num),
    [$c]: dart.fieldType(core.num),
    [$d]: dart.fieldType(core.num),
    [$e]: dart.fieldType(core.num),
    [$f]: dart.fieldType(core.num)
  }));
  dart.registerExtension("SVGMatrix", svg$.Matrix);
  svg$.MetadataElement = class MetadataElement extends svg$.SvgElement {};
  (svg$.MetadataElement.created = function() {
    svg$.MetadataElement.__proto__.created.call(this);
  }).prototype = svg$.MetadataElement.prototype;
  dart.addTypeTests(svg$.MetadataElement);
  dart.registerExtension("SVGMetadataElement", svg$.MetadataElement);
  svg$.Number = class Number extends _interceptors.Interceptor {
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
  };
  dart.addTypeTests(svg$.Number);
  const value$19 = Symbol("Number.value");
  dart.setFieldSignature(svg$.Number, () => ({
    __proto__: dart.getFields(svg$.Number.__proto__),
    [$value]: dart.fieldType(core.num)
  }));
  dart.registerExtension("SVGNumber", svg$.Number);
  const Interceptor_ListMixin$$14 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$14.new = function() {
    Interceptor_ListMixin$$14.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$14.prototype;
  dart.applyMixin(Interceptor_ListMixin$$14, collection.ListMixin$(svg$.Number));
  const Interceptor_ImmutableListMixin$$14 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$14 {};
  (Interceptor_ImmutableListMixin$$14.new = function() {
    Interceptor_ImmutableListMixin$$14.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$14.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$14, html$.ImmutableListMixin$(svg$.Number));
  svg$.NumberList = class NumberList extends Interceptor_ImmutableListMixin$$14 {
    get [$length]() {
      return this.length;
    }
    get [$numberOfItems]() {
      return this.numberOfItems;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this.getItem(index);
    }
    [$_set](index, value) {
      svg$.Number._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [__setter__$](...args) {
      return this.__setter__.apply(this, args);
    }
    [$appendItem](...args) {
      return this.appendItem.apply(this, args);
    }
    [$clear](...args) {
      return this.clear.apply(this, args);
    }
    [$getItem](...args) {
      return this.getItem.apply(this, args);
    }
    [$initialize](...args) {
      return this.initialize.apply(this, args);
    }
    [$insertItemBefore](...args) {
      return this.insertItemBefore.apply(this, args);
    }
    [$removeItem](...args) {
      return this.removeItem.apply(this, args);
    }
    [$replaceItem](...args) {
      return this.replaceItem.apply(this, args);
    }
  };
  svg$.NumberList.prototype[dart.isList] = true;
  dart.addTypeTests(svg$.NumberList);
  const numberOfItems$ = Symbol("NumberList.numberOfItems");
  svg$.NumberList[dart.implements] = () => [ListOfNumber()];
  dart.setMethodSignature(svg$.NumberList, () => ({
    __proto__: dart.getMethods(svg$.NumberList.__proto__),
    [$_get]: dart.fnType(svg$.Number, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(svg$.Number, [core.int]),
    [__setter__$]: dart.fnType(dart.void, [core.int, svg$.Number]),
    [$appendItem]: dart.fnType(svg$.Number, [svg$.Number]),
    [$clear]: dart.fnType(dart.void, []),
    [$getItem]: dart.fnType(svg$.Number, [core.int]),
    [$initialize]: dart.fnType(svg$.Number, [svg$.Number]),
    [$insertItemBefore]: dart.fnType(svg$.Number, [svg$.Number, core.int]),
    [$removeItem]: dart.fnType(svg$.Number, [core.int]),
    [$replaceItem]: dart.fnType(svg$.Number, [svg$.Number, core.int])
  }));
  dart.setGetterSignature(svg$.NumberList, () => ({
    __proto__: dart.getGetters(svg$.NumberList.__proto__),
    [$length]: core.int,
    [$first]: svg$.Number,
    [$last]: svg$.Number,
    [$single]: svg$.Number
  }));
  dart.setSetterSignature(svg$.NumberList, () => ({
    __proto__: dart.getSetters(svg$.NumberList.__proto__),
    [$length]: core.int
  }));
  dart.setFieldSignature(svg$.NumberList, () => ({
    __proto__: dart.getFields(svg$.NumberList.__proto__),
    [$numberOfItems]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("SVGNumberList", svg$.NumberList);
  svg$.PathElement = class PathElement extends svg$.GeometryElement {
    static new() {
      return svg$.PathElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("path"));
    }
  };
  (svg$.PathElement.created = function() {
    svg$.PathElement.__proto__.created.call(this);
  }).prototype = svg$.PathElement.prototype;
  dart.addTypeTests(svg$.PathElement);
  dart.registerExtension("SVGPathElement", svg$.PathElement);
  svg$.PatternElement = class PatternElement extends svg$.SvgElement {
    static new() {
      return svg$.PatternElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("pattern"));
    }
    get [$height]() {
      return this.height;
    }
    get [$patternContentUnits]() {
      return this.patternContentUnits;
    }
    get [$patternTransform]() {
      return this.patternTransform;
    }
    get [$patternUnits]() {
      return this.patternUnits;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
    get [$preserveAspectRatio]() {
      return this.preserveAspectRatio;
    }
    get [$viewBox]() {
      return this.viewBox;
    }
    get [$requiredExtensions]() {
      return this.requiredExtensions;
    }
    get [$systemLanguage]() {
      return this.systemLanguage;
    }
    get [$href]() {
      return this.href;
    }
  };
  (svg$.PatternElement.created = function() {
    this[height$35] = null;
    this[patternContentUnits] = null;
    this[patternTransform] = null;
    this[patternUnits] = null;
    this[width$37] = null;
    this[x$30] = null;
    this[y$29] = null;
    this[preserveAspectRatio$2] = null;
    this[viewBox$0] = null;
    this[requiredExtensions$1] = null;
    this[systemLanguage$1] = null;
    this[href$13] = null;
    svg$.PatternElement.__proto__.created.call(this);
  }).prototype = svg$.PatternElement.prototype;
  dart.addTypeTests(svg$.PatternElement);
  const height$35 = Symbol("PatternElement.height");
  const patternContentUnits = Symbol("PatternElement.patternContentUnits");
  const patternTransform = Symbol("PatternElement.patternTransform");
  const patternUnits = Symbol("PatternElement.patternUnits");
  const width$37 = Symbol("PatternElement.width");
  const x$30 = Symbol("PatternElement.x");
  const y$29 = Symbol("PatternElement.y");
  const preserveAspectRatio$2 = Symbol("PatternElement.preserveAspectRatio");
  const viewBox$0 = Symbol("PatternElement.viewBox");
  const requiredExtensions$1 = Symbol("PatternElement.requiredExtensions");
  const systemLanguage$1 = Symbol("PatternElement.systemLanguage");
  const href$13 = Symbol("PatternElement.href");
  svg$.PatternElement[dart.implements] = () => [svg$.FitToViewBox, svg$.UriReference, svg$.Tests];
  dart.setFieldSignature(svg$.PatternElement, () => ({
    __proto__: dart.getFields(svg$.PatternElement.__proto__),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$patternContentUnits]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$patternTransform]: dart.finalFieldType(svg$.AnimatedTransformList),
    [$patternUnits]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength),
    [$preserveAspectRatio]: dart.finalFieldType(svg$.AnimatedPreserveAspectRatio),
    [$viewBox]: dart.finalFieldType(svg$.AnimatedRect),
    [$requiredExtensions]: dart.finalFieldType(svg$.StringList),
    [$systemLanguage]: dart.finalFieldType(svg$.StringList),
    [$href]: dart.finalFieldType(svg$.AnimatedString)
  }));
  dart.registerExtension("SVGPatternElement", svg$.PatternElement);
  svg$.Point = class Point extends _interceptors.Interceptor {
    get [$x]() {
      return this.x;
    }
    set [$x](value) {
      this.x = value;
    }
    get [$y]() {
      return this.y;
    }
    set [$y](value) {
      this.y = value;
    }
    [$matrixTransform](...args) {
      return this.matrixTransform.apply(this, args);
    }
  };
  dart.addTypeTests(svg$.Point);
  const x$31 = Symbol("Point.x");
  const y$30 = Symbol("Point.y");
  dart.setMethodSignature(svg$.Point, () => ({
    __proto__: dart.getMethods(svg$.Point.__proto__),
    [$matrixTransform]: dart.fnType(svg$.Point, [svg$.Matrix])
  }));
  dart.setFieldSignature(svg$.Point, () => ({
    __proto__: dart.getFields(svg$.Point.__proto__),
    [$x]: dart.fieldType(core.num),
    [$y]: dart.fieldType(core.num)
  }));
  dart.registerExtension("SVGPoint", svg$.Point);
  svg$.PointList = class PointList extends _interceptors.Interceptor {
    get [$length]() {
      return this.length;
    }
    get [$numberOfItems]() {
      return this.numberOfItems;
    }
    [__setter__$](...args) {
      return this.__setter__.apply(this, args);
    }
    [$appendItem](...args) {
      return this.appendItem.apply(this, args);
    }
    [$clear](...args) {
      return this.clear.apply(this, args);
    }
    [$getItem](...args) {
      return this.getItem.apply(this, args);
    }
    [$initialize](...args) {
      return this.initialize.apply(this, args);
    }
    [$insertItemBefore](...args) {
      return this.insertItemBefore.apply(this, args);
    }
    [$removeItem](...args) {
      return this.removeItem.apply(this, args);
    }
    [$replaceItem](...args) {
      return this.replaceItem.apply(this, args);
    }
  };
  dart.addTypeTests(svg$.PointList);
  const length$17 = Symbol("PointList.length");
  const numberOfItems$0 = Symbol("PointList.numberOfItems");
  dart.setMethodSignature(svg$.PointList, () => ({
    __proto__: dart.getMethods(svg$.PointList.__proto__),
    [__setter__$]: dart.fnType(dart.void, [core.int, svg$.Point]),
    [$appendItem]: dart.fnType(svg$.Point, [svg$.Point]),
    [$clear]: dart.fnType(dart.void, []),
    [$getItem]: dart.fnType(svg$.Point, [core.int]),
    [$initialize]: dart.fnType(svg$.Point, [svg$.Point]),
    [$insertItemBefore]: dart.fnType(svg$.Point, [svg$.Point, core.int]),
    [$removeItem]: dart.fnType(svg$.Point, [core.int]),
    [$replaceItem]: dart.fnType(svg$.Point, [svg$.Point, core.int])
  }));
  dart.setFieldSignature(svg$.PointList, () => ({
    __proto__: dart.getFields(svg$.PointList.__proto__),
    [$length]: dart.finalFieldType(core.int),
    [$numberOfItems]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("SVGPointList", svg$.PointList);
  svg$.PolygonElement = class PolygonElement extends svg$.GeometryElement {
    static new() {
      return svg$.PolygonElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("polygon"));
    }
    get [$animatedPoints]() {
      return this.animatedPoints;
    }
    get [$points]() {
      return this.points;
    }
  };
  (svg$.PolygonElement.created = function() {
    this[animatedPoints] = null;
    this[points] = null;
    svg$.PolygonElement.__proto__.created.call(this);
  }).prototype = svg$.PolygonElement.prototype;
  dart.addTypeTests(svg$.PolygonElement);
  const animatedPoints = Symbol("PolygonElement.animatedPoints");
  const points = Symbol("PolygonElement.points");
  dart.setFieldSignature(svg$.PolygonElement, () => ({
    __proto__: dart.getFields(svg$.PolygonElement.__proto__),
    [$animatedPoints]: dart.finalFieldType(svg$.PointList),
    [$points]: dart.finalFieldType(svg$.PointList)
  }));
  dart.registerExtension("SVGPolygonElement", svg$.PolygonElement);
  svg$.PolylineElement = class PolylineElement extends svg$.GeometryElement {
    static new() {
      return svg$.PolylineElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("polyline"));
    }
    get [$animatedPoints]() {
      return this.animatedPoints;
    }
    get [$points]() {
      return this.points;
    }
  };
  (svg$.PolylineElement.created = function() {
    this[animatedPoints$] = null;
    this[points$] = null;
    svg$.PolylineElement.__proto__.created.call(this);
  }).prototype = svg$.PolylineElement.prototype;
  dart.addTypeTests(svg$.PolylineElement);
  const animatedPoints$ = Symbol("PolylineElement.animatedPoints");
  const points$ = Symbol("PolylineElement.points");
  dart.setFieldSignature(svg$.PolylineElement, () => ({
    __proto__: dart.getFields(svg$.PolylineElement.__proto__),
    [$animatedPoints]: dart.finalFieldType(svg$.PointList),
    [$points]: dart.finalFieldType(svg$.PointList)
  }));
  dart.registerExtension("SVGPolylineElement", svg$.PolylineElement);
  svg$.PreserveAspectRatio = class PreserveAspectRatio extends _interceptors.Interceptor {
    get [$align]() {
      return this.align;
    }
    set [$align](value) {
      this.align = value;
    }
    get [$meetOrSlice]() {
      return this.meetOrSlice;
    }
    set [$meetOrSlice](value) {
      this.meetOrSlice = value;
    }
  };
  dart.addTypeTests(svg$.PreserveAspectRatio);
  const align$ = Symbol("PreserveAspectRatio.align");
  const meetOrSlice = Symbol("PreserveAspectRatio.meetOrSlice");
  dart.setFieldSignature(svg$.PreserveAspectRatio, () => ({
    __proto__: dart.getFields(svg$.PreserveAspectRatio.__proto__),
    [$align]: dart.fieldType(core.int),
    [$meetOrSlice]: dart.fieldType(core.int)
  }));
  dart.defineLazy(svg$.PreserveAspectRatio, {
    /*svg$.PreserveAspectRatio.SVG_MEETORSLICE_MEET*/get SVG_MEETORSLICE_MEET() {
      return 1;
    },
    /*svg$.PreserveAspectRatio.SVG_MEETORSLICE_SLICE*/get SVG_MEETORSLICE_SLICE() {
      return 2;
    },
    /*svg$.PreserveAspectRatio.SVG_MEETORSLICE_UNKNOWN*/get SVG_MEETORSLICE_UNKNOWN() {
      return 0;
    },
    /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE*/get SVG_PRESERVEASPECTRATIO_NONE() {
      return 1;
    },
    /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_UNKNOWN*/get SVG_PRESERVEASPECTRATIO_UNKNOWN() {
      return 0;
    },
    /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMAX*/get SVG_PRESERVEASPECTRATIO_XMAXYMAX() {
      return 10;
    },
    /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMID*/get SVG_PRESERVEASPECTRATIO_XMAXYMID() {
      return 7;
    },
    /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMIN*/get SVG_PRESERVEASPECTRATIO_XMAXYMIN() {
      return 4;
    },
    /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMAX*/get SVG_PRESERVEASPECTRATIO_XMIDYMAX() {
      return 9;
    },
    /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMID*/get SVG_PRESERVEASPECTRATIO_XMIDYMID() {
      return 6;
    },
    /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMIN*/get SVG_PRESERVEASPECTRATIO_XMIDYMIN() {
      return 3;
    },
    /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMAX*/get SVG_PRESERVEASPECTRATIO_XMINYMAX() {
      return 8;
    },
    /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMID*/get SVG_PRESERVEASPECTRATIO_XMINYMID() {
      return 5;
    },
    /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMIN*/get SVG_PRESERVEASPECTRATIO_XMINYMIN() {
      return 2;
    }
  });
  dart.registerExtension("SVGPreserveAspectRatio", svg$.PreserveAspectRatio);
  svg$.RadialGradientElement = class RadialGradientElement extends svg$._GradientElement {
    static new() {
      return svg$.RadialGradientElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("radialGradient"));
    }
    get [$cx]() {
      return this.cx;
    }
    get [$cy]() {
      return this.cy;
    }
    get [$fr]() {
      return this.fr;
    }
    get [$fx]() {
      return this.fx;
    }
    get [$fy]() {
      return this.fy;
    }
    get [$r]() {
      return this.r;
    }
  };
  (svg$.RadialGradientElement.created = function() {
    this[cx$0] = null;
    this[cy$0] = null;
    this[fr] = null;
    this[fx] = null;
    this[fy] = null;
    this[r$] = null;
    svg$.RadialGradientElement.__proto__.created.call(this);
  }).prototype = svg$.RadialGradientElement.prototype;
  dart.addTypeTests(svg$.RadialGradientElement);
  const cx$0 = Symbol("RadialGradientElement.cx");
  const cy$0 = Symbol("RadialGradientElement.cy");
  const fr = Symbol("RadialGradientElement.fr");
  const fx = Symbol("RadialGradientElement.fx");
  const fy = Symbol("RadialGradientElement.fy");
  const r$ = Symbol("RadialGradientElement.r");
  dart.setFieldSignature(svg$.RadialGradientElement, () => ({
    __proto__: dart.getFields(svg$.RadialGradientElement.__proto__),
    [$cx]: dart.finalFieldType(svg$.AnimatedLength),
    [$cy]: dart.finalFieldType(svg$.AnimatedLength),
    [$fr]: dart.finalFieldType(svg$.AnimatedLength),
    [$fx]: dart.finalFieldType(svg$.AnimatedLength),
    [$fy]: dart.finalFieldType(svg$.AnimatedLength),
    [$r]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.registerExtension("SVGRadialGradientElement", svg$.RadialGradientElement);
  svg$.Rect = class Rect extends _interceptors.Interceptor {
    get [$height]() {
      return this.height;
    }
    set [$height](value) {
      this.height = value;
    }
    get [$width]() {
      return this.width;
    }
    set [$width](value) {
      this.width = value;
    }
    get [$x]() {
      return this.x;
    }
    set [$x](value) {
      this.x = value;
    }
    get [$y]() {
      return this.y;
    }
    set [$y](value) {
      this.y = value;
    }
  };
  dart.addTypeTests(svg$.Rect);
  const height$36 = Symbol("Rect.height");
  const width$38 = Symbol("Rect.width");
  const x$32 = Symbol("Rect.x");
  const y$31 = Symbol("Rect.y");
  dart.setFieldSignature(svg$.Rect, () => ({
    __proto__: dart.getFields(svg$.Rect.__proto__),
    [$height]: dart.fieldType(core.num),
    [$width]: dart.fieldType(core.num),
    [$x]: dart.fieldType(core.num),
    [$y]: dart.fieldType(core.num)
  }));
  dart.registerExtension("SVGRect", svg$.Rect);
  svg$.RectElement = class RectElement extends svg$.GeometryElement {
    static new() {
      return svg$.RectElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("rect"));
    }
    get [$height]() {
      return this.height;
    }
    get [$rx]() {
      return this.rx;
    }
    get [$ry]() {
      return this.ry;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.RectElement.created = function() {
    this[height$37] = null;
    this[rx$] = null;
    this[ry$] = null;
    this[width$39] = null;
    this[x$33] = null;
    this[y$32] = null;
    svg$.RectElement.__proto__.created.call(this);
  }).prototype = svg$.RectElement.prototype;
  dart.addTypeTests(svg$.RectElement);
  const height$37 = Symbol("RectElement.height");
  const rx$ = Symbol("RectElement.rx");
  const ry$ = Symbol("RectElement.ry");
  const width$39 = Symbol("RectElement.width");
  const x$33 = Symbol("RectElement.x");
  const y$32 = Symbol("RectElement.y");
  dart.setFieldSignature(svg$.RectElement, () => ({
    __proto__: dart.getFields(svg$.RectElement.__proto__),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$rx]: dart.finalFieldType(svg$.AnimatedLength),
    [$ry]: dart.finalFieldType(svg$.AnimatedLength),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.registerExtension("SVGRectElement", svg$.RectElement);
  svg$.ScriptElement = class ScriptElement extends svg$.SvgElement {
    static new() {
      return svg$.ScriptElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("script"));
    }
    get [$type]() {
      return this.type;
    }
    set [$type](value) {
      this.type = value;
    }
    get [$href]() {
      return this.href;
    }
  };
  (svg$.ScriptElement.created = function() {
    this[type$39] = null;
    this[href$14] = null;
    svg$.ScriptElement.__proto__.created.call(this);
  }).prototype = svg$.ScriptElement.prototype;
  dart.addTypeTests(svg$.ScriptElement);
  const type$39 = Symbol("ScriptElement.type");
  const href$14 = Symbol("ScriptElement.href");
  svg$.ScriptElement[dart.implements] = () => [svg$.UriReference];
  dart.setFieldSignature(svg$.ScriptElement, () => ({
    __proto__: dart.getFields(svg$.ScriptElement.__proto__),
    [$type]: dart.fieldType(core.String),
    [$href]: dart.finalFieldType(svg$.AnimatedString)
  }));
  dart.registerExtension("SVGScriptElement", svg$.ScriptElement);
  svg$.SetElement = class SetElement extends svg$.AnimationElement {
    static new() {
      return svg$.SetElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("set"));
    }
    static get supported() {
      return dart.test(svg$.SvgElement.isTagSupported("set")) && svg$.SetElement.is(svg$.SvgElement.tag("set"));
    }
  };
  (svg$.SetElement.created = function() {
    svg$.SetElement.__proto__.created.call(this);
  }).prototype = svg$.SetElement.prototype;
  dart.addTypeTests(svg$.SetElement);
  dart.registerExtension("SVGSetElement", svg$.SetElement);
  svg$.StopElement = class StopElement extends svg$.SvgElement {
    static new() {
      return svg$.StopElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("stop"));
    }
    get [$gradientOffset]() {
      return this.offset;
    }
  };
  (svg$.StopElement.created = function() {
    this[gradientOffset] = null;
    svg$.StopElement.__proto__.created.call(this);
  }).prototype = svg$.StopElement.prototype;
  dart.addTypeTests(svg$.StopElement);
  const gradientOffset = Symbol("StopElement.gradientOffset");
  dart.setFieldSignature(svg$.StopElement, () => ({
    __proto__: dart.getFields(svg$.StopElement.__proto__),
    [$gradientOffset]: dart.finalFieldType(svg$.AnimatedNumber)
  }));
  dart.registerExtension("SVGStopElement", svg$.StopElement);
  const Interceptor_ListMixin$$15 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$15.new = function() {
    Interceptor_ListMixin$$15.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$15.prototype;
  dart.applyMixin(Interceptor_ListMixin$$15, collection.ListMixin$(core.String));
  const Interceptor_ImmutableListMixin$$15 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$15 {};
  (Interceptor_ImmutableListMixin$$15.new = function() {
    Interceptor_ImmutableListMixin$$15.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$15.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$15, html$.ImmutableListMixin$(core.String));
  svg$.StringList = class StringList extends Interceptor_ImmutableListMixin$$15 {
    get [$length]() {
      return this.length;
    }
    get [$numberOfItems]() {
      return this.numberOfItems;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this.getItem(index);
    }
    [$_set](index, value) {
      core.String._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [__setter__$](...args) {
      return this.__setter__.apply(this, args);
    }
    [$appendItem](...args) {
      return this.appendItem.apply(this, args);
    }
    [$clear](...args) {
      return this.clear.apply(this, args);
    }
    [$getItem](...args) {
      return this.getItem.apply(this, args);
    }
    [$initialize](...args) {
      return this.initialize.apply(this, args);
    }
    [$insertItemBefore](...args) {
      return this.insertItemBefore.apply(this, args);
    }
    [$removeItem](...args) {
      return this.removeItem.apply(this, args);
    }
    [$replaceItem](...args) {
      return this.replaceItem.apply(this, args);
    }
  };
  svg$.StringList.prototype[dart.isList] = true;
  dart.addTypeTests(svg$.StringList);
  const numberOfItems$1 = Symbol("StringList.numberOfItems");
  svg$.StringList[dart.implements] = () => [ListOfString()];
  dart.setMethodSignature(svg$.StringList, () => ({
    __proto__: dart.getMethods(svg$.StringList.__proto__),
    [$_get]: dart.fnType(core.String, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(core.String, [core.int]),
    [__setter__$]: dart.fnType(dart.void, [core.int, core.String]),
    [$appendItem]: dart.fnType(core.String, [core.String]),
    [$clear]: dart.fnType(dart.void, []),
    [$getItem]: dart.fnType(core.String, [core.int]),
    [$initialize]: dart.fnType(core.String, [core.String]),
    [$insertItemBefore]: dart.fnType(core.String, [core.String, core.int]),
    [$removeItem]: dart.fnType(core.String, [core.int]),
    [$replaceItem]: dart.fnType(core.String, [core.String, core.int])
  }));
  dart.setGetterSignature(svg$.StringList, () => ({
    __proto__: dart.getGetters(svg$.StringList.__proto__),
    [$length]: core.int,
    [$first]: core.String,
    [$last]: core.String,
    [$single]: core.String
  }));
  dart.setSetterSignature(svg$.StringList, () => ({
    __proto__: dart.getSetters(svg$.StringList.__proto__),
    [$length]: core.int
  }));
  dart.setFieldSignature(svg$.StringList, () => ({
    __proto__: dart.getFields(svg$.StringList.__proto__),
    [$numberOfItems]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("SVGStringList", svg$.StringList);
  svg$.StyleElement = class StyleElement extends svg$.SvgElement {
    static new() {
      return svg$.StyleElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("style"));
    }
    get [$disabled]() {
      return this.disabled;
    }
    set [$disabled](value) {
      this.disabled = value;
    }
    get [$media]() {
      return this.media;
    }
    set [$media](value) {
      this.media = value;
    }
    get [$sheet]() {
      return this.sheet;
    }
    get [$type]() {
      return this.type;
    }
    set [$type](value) {
      this.type = value;
    }
  };
  (svg$.StyleElement.created = function() {
    this[disabled$10] = null;
    this[media$6] = null;
    this[sheet$1] = null;
    this[type$40] = null;
    svg$.StyleElement.__proto__.created.call(this);
  }).prototype = svg$.StyleElement.prototype;
  dart.addTypeTests(svg$.StyleElement);
  const disabled$10 = Symbol("StyleElement.disabled");
  const media$6 = Symbol("StyleElement.media");
  const sheet$1 = Symbol("StyleElement.sheet");
  const type$40 = Symbol("StyleElement.type");
  dart.setFieldSignature(svg$.StyleElement, () => ({
    __proto__: dart.getFields(svg$.StyleElement.__proto__),
    [$disabled]: dart.fieldType(core.bool),
    [$media]: dart.fieldType(core.String),
    [$sheet]: dart.finalFieldType(html$.StyleSheet),
    [$type]: dart.fieldType(core.String)
  }));
  dart.registerExtension("SVGStyleElement", svg$.StyleElement);
  const _element$0 = Symbol('_element');
  svg$.AttributeClassSet = class AttributeClassSet extends html_common.CssClassSetImpl {
    readClasses() {
      let classname = this[_element$0][$attributes][$_get]("class");
      if (svg$.AnimatedString.is(classname)) {
        classname = svg$.AnimatedString.as(classname).baseVal;
      }
      let s = new (_IdentityHashSetOfString()).new();
      if (classname == null) {
        return s;
      }
      for (let name of classname[$split](" ")) {
        let trimmed = name[$trim]();
        if (!trimmed[$isEmpty]) {
          s.add(trimmed);
        }
      }
      return s;
    }
    writeClasses(s) {
      this[_element$0].setAttribute("class", s.join(" "));
    }
  };
  (svg$.AttributeClassSet.new = function(element) {
    this[_element$0] = element;
  }).prototype = svg$.AttributeClassSet.prototype;
  dart.addTypeTests(svg$.AttributeClassSet);
  dart.setMethodSignature(svg$.AttributeClassSet, () => ({
    __proto__: dart.getMethods(svg$.AttributeClassSet.__proto__),
    readClasses: dart.fnType(core.Set$(core.String), []),
    writeClasses: dart.fnType(dart.void, [core.Set])
  }));
  dart.setFieldSignature(svg$.AttributeClassSet, () => ({
    __proto__: dart.getFields(svg$.AttributeClassSet.__proto__),
    [_element$0]: dart.finalFieldType(html$.Element)
  }));
  svg$.SvgSvgElement = class SvgSvgElement extends svg$.GraphicsElement {
    static new() {
      let el = svg$.SvgElement.tag("svg");
      el[$attributes][$_set]("version", "1.1");
      return svg$.SvgSvgElement._check(el);
    }
    get [$currentScale]() {
      return this.currentScale;
    }
    set [$currentScale](value) {
      this.currentScale = value;
    }
    get [$currentTranslate]() {
      return this.currentTranslate;
    }
    get [$height]() {
      return this.height;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
    [$animationsPaused](...args) {
      return this.animationsPaused.apply(this, args);
    }
    [$checkEnclosure](...args) {
      return this.checkEnclosure.apply(this, args);
    }
    [$checkIntersection](...args) {
      return this.checkIntersection.apply(this, args);
    }
    [$createSvgAngle](...args) {
      return this.createSVGAngle.apply(this, args);
    }
    [$createSvgLength](...args) {
      return this.createSVGLength.apply(this, args);
    }
    [$createSvgMatrix](...args) {
      return this.createSVGMatrix.apply(this, args);
    }
    [$createSvgNumber](...args) {
      return this.createSVGNumber.apply(this, args);
    }
    [$createSvgPoint](...args) {
      return this.createSVGPoint.apply(this, args);
    }
    [$createSvgRect](...args) {
      return this.createSVGRect.apply(this, args);
    }
    [$createSvgTransform](...args) {
      return this.createSVGTransform.apply(this, args);
    }
    [$createSvgTransformFromMatrix](...args) {
      return this.createSVGTransformFromMatrix.apply(this, args);
    }
    [$deselectAll](...args) {
      return this.deselectAll.apply(this, args);
    }
    [$forceRedraw](...args) {
      return this.forceRedraw.apply(this, args);
    }
    [$getCurrentTime](...args) {
      return this.getCurrentTime.apply(this, args);
    }
    [$getElementById](...args) {
      return this.getElementById.apply(this, args);
    }
    [$getEnclosureList](...args) {
      return this.getEnclosureList.apply(this, args);
    }
    [$getIntersectionList](...args) {
      return this.getIntersectionList.apply(this, args);
    }
    [$pauseAnimations](...args) {
      return this.pauseAnimations.apply(this, args);
    }
    [$setCurrentTime](...args) {
      return this.setCurrentTime.apply(this, args);
    }
    [$suspendRedraw](...args) {
      return this.suspendRedraw.apply(this, args);
    }
    [$unpauseAnimations](...args) {
      return this.unpauseAnimations.apply(this, args);
    }
    [$unsuspendRedraw](...args) {
      return this.unsuspendRedraw.apply(this, args);
    }
    [$unsuspendRedrawAll](...args) {
      return this.unsuspendRedrawAll.apply(this, args);
    }
    get [$preserveAspectRatio]() {
      return this.preserveAspectRatio;
    }
    get [$viewBox]() {
      return this.viewBox;
    }
    get [$zoomAndPan]() {
      return this.zoomAndPan;
    }
    set [$zoomAndPan](value) {
      this.zoomAndPan = value;
    }
  };
  (svg$.SvgSvgElement.created = function() {
    this[currentScale] = null;
    this[currentTranslate] = null;
    this[height$38] = null;
    this[width$40] = null;
    this[x$34] = null;
    this[y$33] = null;
    this[preserveAspectRatio$3] = null;
    this[viewBox$1] = null;
    this[zoomAndPan] = null;
    svg$.SvgSvgElement.__proto__.created.call(this);
  }).prototype = svg$.SvgSvgElement.prototype;
  dart.addTypeTests(svg$.SvgSvgElement);
  const currentScale = Symbol("SvgSvgElement.currentScale");
  const currentTranslate = Symbol("SvgSvgElement.currentTranslate");
  const height$38 = Symbol("SvgSvgElement.height");
  const width$40 = Symbol("SvgSvgElement.width");
  const x$34 = Symbol("SvgSvgElement.x");
  const y$33 = Symbol("SvgSvgElement.y");
  const preserveAspectRatio$3 = Symbol("SvgSvgElement.preserveAspectRatio");
  const viewBox$1 = Symbol("SvgSvgElement.viewBox");
  const zoomAndPan = Symbol("SvgSvgElement.zoomAndPan");
  svg$.SvgSvgElement[dart.implements] = () => [svg$.FitToViewBox, svg$.ZoomAndPan];
  dart.setMethodSignature(svg$.SvgSvgElement, () => ({
    __proto__: dart.getMethods(svg$.SvgSvgElement.__proto__),
    [$animationsPaused]: dart.fnType(core.bool, []),
    [$checkEnclosure]: dart.fnType(core.bool, [svg$.SvgElement, svg$.Rect]),
    [$checkIntersection]: dart.fnType(core.bool, [svg$.SvgElement, svg$.Rect]),
    [$createSvgAngle]: dart.fnType(svg$.Angle, []),
    [$createSvgLength]: dart.fnType(svg$.Length, []),
    [$createSvgMatrix]: dart.fnType(svg$.Matrix, []),
    [$createSvgNumber]: dart.fnType(svg$.Number, []),
    [$createSvgPoint]: dart.fnType(svg$.Point, []),
    [$createSvgRect]: dart.fnType(svg$.Rect, []),
    [$createSvgTransform]: dart.fnType(svg$.Transform, []),
    [$createSvgTransformFromMatrix]: dart.fnType(svg$.Transform, [svg$.Matrix]),
    [$deselectAll]: dart.fnType(dart.void, []),
    [$forceRedraw]: dart.fnType(dart.void, []),
    [$getCurrentTime]: dart.fnType(core.double, []),
    [$getElementById]: dart.fnType(html$.Element, [core.String]),
    [$getEnclosureList]: dart.fnType(core.List$(html$.Node), [svg$.Rect, svg$.SvgElement]),
    [$getIntersectionList]: dart.fnType(core.List$(html$.Node), [svg$.Rect, svg$.SvgElement]),
    [$pauseAnimations]: dart.fnType(dart.void, []),
    [$setCurrentTime]: dart.fnType(dart.void, [core.num]),
    [$suspendRedraw]: dart.fnType(core.int, [core.int]),
    [$unpauseAnimations]: dart.fnType(dart.void, []),
    [$unsuspendRedraw]: dart.fnType(dart.void, [core.int]),
    [$unsuspendRedrawAll]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(svg$.SvgSvgElement, () => ({
    __proto__: dart.getFields(svg$.SvgSvgElement.__proto__),
    [$currentScale]: dart.fieldType(core.num),
    [$currentTranslate]: dart.finalFieldType(svg$.Point),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength),
    [$preserveAspectRatio]: dart.finalFieldType(svg$.AnimatedPreserveAspectRatio),
    [$viewBox]: dart.finalFieldType(svg$.AnimatedRect),
    [$zoomAndPan]: dart.fieldType(core.int)
  }));
  dart.registerExtension("SVGSVGElement", svg$.SvgSvgElement);
  svg$.SwitchElement = class SwitchElement extends svg$.GraphicsElement {
    static new() {
      return svg$.SwitchElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("switch"));
    }
  };
  (svg$.SwitchElement.created = function() {
    svg$.SwitchElement.__proto__.created.call(this);
  }).prototype = svg$.SwitchElement.prototype;
  dart.addTypeTests(svg$.SwitchElement);
  dart.registerExtension("SVGSwitchElement", svg$.SwitchElement);
  svg$.SymbolElement = class SymbolElement extends svg$.SvgElement {
    static new() {
      return svg$.SymbolElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("symbol"));
    }
    get [$preserveAspectRatio]() {
      return this.preserveAspectRatio;
    }
    get [$viewBox]() {
      return this.viewBox;
    }
  };
  (svg$.SymbolElement.created = function() {
    this[preserveAspectRatio$4] = null;
    this[viewBox$2] = null;
    svg$.SymbolElement.__proto__.created.call(this);
  }).prototype = svg$.SymbolElement.prototype;
  dart.addTypeTests(svg$.SymbolElement);
  const preserveAspectRatio$4 = Symbol("SymbolElement.preserveAspectRatio");
  const viewBox$2 = Symbol("SymbolElement.viewBox");
  svg$.SymbolElement[dart.implements] = () => [svg$.FitToViewBox];
  dart.setFieldSignature(svg$.SymbolElement, () => ({
    __proto__: dart.getFields(svg$.SymbolElement.__proto__),
    [$preserveAspectRatio]: dart.finalFieldType(svg$.AnimatedPreserveAspectRatio),
    [$viewBox]: dart.finalFieldType(svg$.AnimatedRect)
  }));
  dart.registerExtension("SVGSymbolElement", svg$.SymbolElement);
  svg$.TextContentElement = class TextContentElement extends svg$.GraphicsElement {
    get [$lengthAdjust]() {
      return this.lengthAdjust;
    }
    get [$textLength]() {
      return this.textLength;
    }
    [$getCharNumAtPosition](...args) {
      return this.getCharNumAtPosition.apply(this, args);
    }
    [$getComputedTextLength](...args) {
      return this.getComputedTextLength.apply(this, args);
    }
    [$getEndPositionOfChar](...args) {
      return this.getEndPositionOfChar.apply(this, args);
    }
    [$getExtentOfChar](...args) {
      return this.getExtentOfChar.apply(this, args);
    }
    [$getNumberOfChars](...args) {
      return this.getNumberOfChars.apply(this, args);
    }
    [$getRotationOfChar](...args) {
      return this.getRotationOfChar.apply(this, args);
    }
    [$getStartPositionOfChar](...args) {
      return this.getStartPositionOfChar.apply(this, args);
    }
    [$getSubStringLength](...args) {
      return this.getSubStringLength.apply(this, args);
    }
    [$selectSubString](...args) {
      return this.selectSubString.apply(this, args);
    }
  };
  (svg$.TextContentElement.created = function() {
    this[lengthAdjust] = null;
    this[textLength$] = null;
    svg$.TextContentElement.__proto__.created.call(this);
  }).prototype = svg$.TextContentElement.prototype;
  dart.addTypeTests(svg$.TextContentElement);
  const lengthAdjust = Symbol("TextContentElement.lengthAdjust");
  const textLength$ = Symbol("TextContentElement.textLength");
  dart.setMethodSignature(svg$.TextContentElement, () => ({
    __proto__: dart.getMethods(svg$.TextContentElement.__proto__),
    [$getCharNumAtPosition]: dart.fnType(core.int, [svg$.Point]),
    [$getComputedTextLength]: dart.fnType(core.double, []),
    [$getEndPositionOfChar]: dart.fnType(svg$.Point, [core.int]),
    [$getExtentOfChar]: dart.fnType(svg$.Rect, [core.int]),
    [$getNumberOfChars]: dart.fnType(core.int, []),
    [$getRotationOfChar]: dart.fnType(core.double, [core.int]),
    [$getStartPositionOfChar]: dart.fnType(svg$.Point, [core.int]),
    [$getSubStringLength]: dart.fnType(core.double, [core.int, core.int]),
    [$selectSubString]: dart.fnType(dart.void, [core.int, core.int])
  }));
  dart.setFieldSignature(svg$.TextContentElement, () => ({
    __proto__: dart.getFields(svg$.TextContentElement.__proto__),
    [$lengthAdjust]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$textLength]: dart.finalFieldType(svg$.AnimatedLength)
  }));
  dart.defineLazy(svg$.TextContentElement, {
    /*svg$.TextContentElement.LENGTHADJUST_SPACING*/get LENGTHADJUST_SPACING() {
      return 1;
    },
    /*svg$.TextContentElement.LENGTHADJUST_SPACINGANDGLYPHS*/get LENGTHADJUST_SPACINGANDGLYPHS() {
      return 2;
    },
    /*svg$.TextContentElement.LENGTHADJUST_UNKNOWN*/get LENGTHADJUST_UNKNOWN() {
      return 0;
    }
  });
  dart.registerExtension("SVGTextContentElement", svg$.TextContentElement);
  svg$.TextPositioningElement = class TextPositioningElement extends svg$.TextContentElement {
    get [$dx]() {
      return this.dx;
    }
    get [$dy]() {
      return this.dy;
    }
    get [$rotate]() {
      return this.rotate;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
  };
  (svg$.TextPositioningElement.created = function() {
    this[dx$] = null;
    this[dy$] = null;
    this[rotate] = null;
    this[x$35] = null;
    this[y$34] = null;
    svg$.TextPositioningElement.__proto__.created.call(this);
  }).prototype = svg$.TextPositioningElement.prototype;
  dart.addTypeTests(svg$.TextPositioningElement);
  const dx$ = Symbol("TextPositioningElement.dx");
  const dy$ = Symbol("TextPositioningElement.dy");
  const rotate = Symbol("TextPositioningElement.rotate");
  const x$35 = Symbol("TextPositioningElement.x");
  const y$34 = Symbol("TextPositioningElement.y");
  dart.setFieldSignature(svg$.TextPositioningElement, () => ({
    __proto__: dart.getFields(svg$.TextPositioningElement.__proto__),
    [$dx]: dart.finalFieldType(svg$.AnimatedLengthList),
    [$dy]: dart.finalFieldType(svg$.AnimatedLengthList),
    [$rotate]: dart.finalFieldType(svg$.AnimatedNumberList),
    [$x]: dart.finalFieldType(svg$.AnimatedLengthList),
    [$y]: dart.finalFieldType(svg$.AnimatedLengthList)
  }));
  dart.registerExtension("SVGTextPositioningElement", svg$.TextPositioningElement);
  svg$.TSpanElement = class TSpanElement extends svg$.TextPositioningElement {
    static new() {
      return svg$.TSpanElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("tspan"));
    }
  };
  (svg$.TSpanElement.created = function() {
    svg$.TSpanElement.__proto__.created.call(this);
  }).prototype = svg$.TSpanElement.prototype;
  dart.addTypeTests(svg$.TSpanElement);
  dart.registerExtension("SVGTSpanElement", svg$.TSpanElement);
  svg$.Tests = class Tests extends _interceptors.Interceptor {
    get requiredExtensions() {
      return this[requiredExtensions$2];
    }
    set requiredExtensions(value) {
      super.requiredExtensions = value;
    }
    get systemLanguage() {
      return this[systemLanguage$2];
    }
    set systemLanguage(value) {
      super.systemLanguage = value;
    }
  };
  dart.addTypeTests(svg$.Tests);
  const requiredExtensions$2 = Symbol("Tests.requiredExtensions");
  const systemLanguage$2 = Symbol("Tests.systemLanguage");
  dart.setFieldSignature(svg$.Tests, () => ({
    __proto__: dart.getFields(svg$.Tests.__proto__),
    requiredExtensions: dart.finalFieldType(svg$.StringList),
    systemLanguage: dart.finalFieldType(svg$.StringList)
  }));
  dart.defineExtensionAccessors(svg$.Tests, ['requiredExtensions', 'systemLanguage']);
  svg$.TextElement = class TextElement extends svg$.TextPositioningElement {
    static new() {
      return svg$.TextElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("text"));
    }
  };
  (svg$.TextElement.created = function() {
    svg$.TextElement.__proto__.created.call(this);
  }).prototype = svg$.TextElement.prototype;
  dart.addTypeTests(svg$.TextElement);
  dart.registerExtension("SVGTextElement", svg$.TextElement);
  svg$.TextPathElement = class TextPathElement extends svg$.TextContentElement {
    get [$method]() {
      return this.method;
    }
    get [$spacing]() {
      return this.spacing;
    }
    get [$startOffset]() {
      return this.startOffset;
    }
    get [$href]() {
      return this.href;
    }
  };
  (svg$.TextPathElement.created = function() {
    this[method$] = null;
    this[spacing] = null;
    this[startOffset$0] = null;
    this[href$15] = null;
    svg$.TextPathElement.__proto__.created.call(this);
  }).prototype = svg$.TextPathElement.prototype;
  dart.addTypeTests(svg$.TextPathElement);
  const method$ = Symbol("TextPathElement.method");
  const spacing = Symbol("TextPathElement.spacing");
  const startOffset$0 = Symbol("TextPathElement.startOffset");
  const href$15 = Symbol("TextPathElement.href");
  svg$.TextPathElement[dart.implements] = () => [svg$.UriReference];
  dart.setFieldSignature(svg$.TextPathElement, () => ({
    __proto__: dart.getFields(svg$.TextPathElement.__proto__),
    [$method]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$spacing]: dart.finalFieldType(svg$.AnimatedEnumeration),
    [$startOffset]: dart.finalFieldType(svg$.AnimatedLength),
    [$href]: dart.finalFieldType(svg$.AnimatedString)
  }));
  dart.defineLazy(svg$.TextPathElement, {
    /*svg$.TextPathElement.TEXTPATH_METHODTYPE_ALIGN*/get TEXTPATH_METHODTYPE_ALIGN() {
      return 1;
    },
    /*svg$.TextPathElement.TEXTPATH_METHODTYPE_STRETCH*/get TEXTPATH_METHODTYPE_STRETCH() {
      return 2;
    },
    /*svg$.TextPathElement.TEXTPATH_METHODTYPE_UNKNOWN*/get TEXTPATH_METHODTYPE_UNKNOWN() {
      return 0;
    },
    /*svg$.TextPathElement.TEXTPATH_SPACINGTYPE_AUTO*/get TEXTPATH_SPACINGTYPE_AUTO() {
      return 1;
    },
    /*svg$.TextPathElement.TEXTPATH_SPACINGTYPE_EXACT*/get TEXTPATH_SPACINGTYPE_EXACT() {
      return 2;
    },
    /*svg$.TextPathElement.TEXTPATH_SPACINGTYPE_UNKNOWN*/get TEXTPATH_SPACINGTYPE_UNKNOWN() {
      return 0;
    }
  });
  dart.registerExtension("SVGTextPathElement", svg$.TextPathElement);
  svg$.TitleElement = class TitleElement extends svg$.SvgElement {
    static new() {
      return svg$.TitleElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("title"));
    }
  };
  (svg$.TitleElement.created = function() {
    svg$.TitleElement.__proto__.created.call(this);
  }).prototype = svg$.TitleElement.prototype;
  dart.addTypeTests(svg$.TitleElement);
  dart.registerExtension("SVGTitleElement", svg$.TitleElement);
  svg$.Transform = class Transform extends _interceptors.Interceptor {
    get [$angle]() {
      return this.angle;
    }
    get [$matrix]() {
      return this.matrix;
    }
    get [$type]() {
      return this.type;
    }
    [$setMatrix](...args) {
      return this.setMatrix.apply(this, args);
    }
    [$setRotate](...args) {
      return this.setRotate.apply(this, args);
    }
    [$setScale](...args) {
      return this.setScale.apply(this, args);
    }
    [$setSkewX](...args) {
      return this.setSkewX.apply(this, args);
    }
    [$setSkewY](...args) {
      return this.setSkewY.apply(this, args);
    }
    [$setTranslate](...args) {
      return this.setTranslate.apply(this, args);
    }
  };
  dart.addTypeTests(svg$.Transform);
  const angle$0 = Symbol("Transform.angle");
  const matrix$ = Symbol("Transform.matrix");
  const type$41 = Symbol("Transform.type");
  dart.setMethodSignature(svg$.Transform, () => ({
    __proto__: dart.getMethods(svg$.Transform.__proto__),
    [$setMatrix]: dart.fnType(dart.void, [svg$.Matrix]),
    [$setRotate]: dart.fnType(dart.void, [core.num, core.num, core.num]),
    [$setScale]: dart.fnType(dart.void, [core.num, core.num]),
    [$setSkewX]: dart.fnType(dart.void, [core.num]),
    [$setSkewY]: dart.fnType(dart.void, [core.num]),
    [$setTranslate]: dart.fnType(dart.void, [core.num, core.num])
  }));
  dart.setFieldSignature(svg$.Transform, () => ({
    __proto__: dart.getFields(svg$.Transform.__proto__),
    [$angle]: dart.finalFieldType(core.num),
    [$matrix]: dart.finalFieldType(svg$.Matrix),
    [$type]: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(svg$.Transform, {
    /*svg$.Transform.SVG_TRANSFORM_MATRIX*/get SVG_TRANSFORM_MATRIX() {
      return 1;
    },
    /*svg$.Transform.SVG_TRANSFORM_ROTATE*/get SVG_TRANSFORM_ROTATE() {
      return 4;
    },
    /*svg$.Transform.SVG_TRANSFORM_SCALE*/get SVG_TRANSFORM_SCALE() {
      return 3;
    },
    /*svg$.Transform.SVG_TRANSFORM_SKEWX*/get SVG_TRANSFORM_SKEWX() {
      return 5;
    },
    /*svg$.Transform.SVG_TRANSFORM_SKEWY*/get SVG_TRANSFORM_SKEWY() {
      return 6;
    },
    /*svg$.Transform.SVG_TRANSFORM_TRANSLATE*/get SVG_TRANSFORM_TRANSLATE() {
      return 2;
    },
    /*svg$.Transform.SVG_TRANSFORM_UNKNOWN*/get SVG_TRANSFORM_UNKNOWN() {
      return 0;
    }
  });
  dart.registerExtension("SVGTransform", svg$.Transform);
  const Interceptor_ListMixin$$16 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$16.new = function() {
    Interceptor_ListMixin$$16.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$16.prototype;
  dart.applyMixin(Interceptor_ListMixin$$16, collection.ListMixin$(svg$.Transform));
  const Interceptor_ImmutableListMixin$$16 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$16 {};
  (Interceptor_ImmutableListMixin$$16.new = function() {
    Interceptor_ImmutableListMixin$$16.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$16.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$16, html$.ImmutableListMixin$(svg$.Transform));
  svg$.TransformList = class TransformList extends Interceptor_ImmutableListMixin$$16 {
    get [$length]() {
      return this.length;
    }
    get [$numberOfItems]() {
      return this.numberOfItems;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this.getItem(index);
    }
    [$_set](index, value) {
      svg$.Transform._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [__setter__$](...args) {
      return this.__setter__.apply(this, args);
    }
    [$appendItem](...args) {
      return this.appendItem.apply(this, args);
    }
    [$clear](...args) {
      return this.clear.apply(this, args);
    }
    [$consolidate](...args) {
      return this.consolidate.apply(this, args);
    }
    [$createSvgTransformFromMatrix](...args) {
      return this.createSVGTransformFromMatrix.apply(this, args);
    }
    [$getItem](...args) {
      return this.getItem.apply(this, args);
    }
    [$initialize](...args) {
      return this.initialize.apply(this, args);
    }
    [$insertItemBefore](...args) {
      return this.insertItemBefore.apply(this, args);
    }
    [$removeItem](...args) {
      return this.removeItem.apply(this, args);
    }
    [$replaceItem](...args) {
      return this.replaceItem.apply(this, args);
    }
  };
  svg$.TransformList.prototype[dart.isList] = true;
  dart.addTypeTests(svg$.TransformList);
  const numberOfItems$2 = Symbol("TransformList.numberOfItems");
  svg$.TransformList[dart.implements] = () => [ListOfTransform()];
  dart.setMethodSignature(svg$.TransformList, () => ({
    __proto__: dart.getMethods(svg$.TransformList.__proto__),
    [$_get]: dart.fnType(svg$.Transform, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(svg$.Transform, [core.int]),
    [__setter__$]: dart.fnType(dart.void, [core.int, svg$.Transform]),
    [$appendItem]: dart.fnType(svg$.Transform, [svg$.Transform]),
    [$clear]: dart.fnType(dart.void, []),
    [$consolidate]: dart.fnType(svg$.Transform, []),
    [$createSvgTransformFromMatrix]: dart.fnType(svg$.Transform, [svg$.Matrix]),
    [$getItem]: dart.fnType(svg$.Transform, [core.int]),
    [$initialize]: dart.fnType(svg$.Transform, [svg$.Transform]),
    [$insertItemBefore]: dart.fnType(svg$.Transform, [svg$.Transform, core.int]),
    [$removeItem]: dart.fnType(svg$.Transform, [core.int]),
    [$replaceItem]: dart.fnType(svg$.Transform, [svg$.Transform, core.int])
  }));
  dart.setGetterSignature(svg$.TransformList, () => ({
    __proto__: dart.getGetters(svg$.TransformList.__proto__),
    [$length]: core.int,
    [$first]: svg$.Transform,
    [$last]: svg$.Transform,
    [$single]: svg$.Transform
  }));
  dart.setSetterSignature(svg$.TransformList, () => ({
    __proto__: dart.getSetters(svg$.TransformList.__proto__),
    [$length]: core.int
  }));
  dart.setFieldSignature(svg$.TransformList, () => ({
    __proto__: dart.getFields(svg$.TransformList.__proto__),
    [$numberOfItems]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("SVGTransformList", svg$.TransformList);
  svg$.UnitTypes = class UnitTypes extends _interceptors.Interceptor {};
  dart.addTypeTests(svg$.UnitTypes);
  dart.defineLazy(svg$.UnitTypes, {
    /*svg$.UnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX*/get SVG_UNIT_TYPE_OBJECTBOUNDINGBOX() {
      return 2;
    },
    /*svg$.UnitTypes.SVG_UNIT_TYPE_UNKNOWN*/get SVG_UNIT_TYPE_UNKNOWN() {
      return 0;
    },
    /*svg$.UnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE*/get SVG_UNIT_TYPE_USERSPACEONUSE() {
      return 1;
    }
  });
  dart.registerExtension("SVGUnitTypes", svg$.UnitTypes);
  svg$.UriReference = class UriReference extends _interceptors.Interceptor {
    get href() {
      return this[href$16];
    }
    set href(value) {
      super.href = value;
    }
  };
  dart.addTypeTests(svg$.UriReference);
  const href$16 = Symbol("UriReference.href");
  dart.setFieldSignature(svg$.UriReference, () => ({
    __proto__: dart.getFields(svg$.UriReference.__proto__),
    href: dart.finalFieldType(svg$.AnimatedString)
  }));
  dart.defineExtensionAccessors(svg$.UriReference, ['href']);
  svg$.UseElement = class UseElement extends svg$.GraphicsElement {
    static new() {
      return svg$.UseElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("use"));
    }
    get [$height]() {
      return this.height;
    }
    get [$width]() {
      return this.width;
    }
    get [$x]() {
      return this.x;
    }
    get [$y]() {
      return this.y;
    }
    get [$href]() {
      return this.href;
    }
  };
  (svg$.UseElement.created = function() {
    this[height$39] = null;
    this[width$41] = null;
    this[x$36] = null;
    this[y$35] = null;
    this[href$17] = null;
    svg$.UseElement.__proto__.created.call(this);
  }).prototype = svg$.UseElement.prototype;
  dart.addTypeTests(svg$.UseElement);
  const height$39 = Symbol("UseElement.height");
  const width$41 = Symbol("UseElement.width");
  const x$36 = Symbol("UseElement.x");
  const y$35 = Symbol("UseElement.y");
  const href$17 = Symbol("UseElement.href");
  svg$.UseElement[dart.implements] = () => [svg$.UriReference];
  dart.setFieldSignature(svg$.UseElement, () => ({
    __proto__: dart.getFields(svg$.UseElement.__proto__),
    [$height]: dart.finalFieldType(svg$.AnimatedLength),
    [$width]: dart.finalFieldType(svg$.AnimatedLength),
    [$x]: dart.finalFieldType(svg$.AnimatedLength),
    [$y]: dart.finalFieldType(svg$.AnimatedLength),
    [$href]: dart.finalFieldType(svg$.AnimatedString)
  }));
  dart.registerExtension("SVGUseElement", svg$.UseElement);
  svg$.ViewElement = class ViewElement extends svg$.SvgElement {
    static new() {
      return svg$.ViewElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("view"));
    }
    get [$preserveAspectRatio]() {
      return this.preserveAspectRatio;
    }
    get [$viewBox]() {
      return this.viewBox;
    }
    get [$zoomAndPan]() {
      return this.zoomAndPan;
    }
    set [$zoomAndPan](value) {
      this.zoomAndPan = value;
    }
  };
  (svg$.ViewElement.created = function() {
    this[preserveAspectRatio$5] = null;
    this[viewBox$3] = null;
    this[zoomAndPan$] = null;
    svg$.ViewElement.__proto__.created.call(this);
  }).prototype = svg$.ViewElement.prototype;
  dart.addTypeTests(svg$.ViewElement);
  const preserveAspectRatio$5 = Symbol("ViewElement.preserveAspectRatio");
  const viewBox$3 = Symbol("ViewElement.viewBox");
  const zoomAndPan$ = Symbol("ViewElement.zoomAndPan");
  svg$.ViewElement[dart.implements] = () => [svg$.FitToViewBox, svg$.ZoomAndPan];
  dart.setFieldSignature(svg$.ViewElement, () => ({
    __proto__: dart.getFields(svg$.ViewElement.__proto__),
    [$preserveAspectRatio]: dart.finalFieldType(svg$.AnimatedPreserveAspectRatio),
    [$viewBox]: dart.finalFieldType(svg$.AnimatedRect),
    [$zoomAndPan]: dart.fieldType(core.int)
  }));
  dart.registerExtension("SVGViewElement", svg$.ViewElement);
  svg$.ZoomAndPan = class ZoomAndPan extends _interceptors.Interceptor {
    get zoomAndPan() {
      return this[zoomAndPan$0];
    }
    set zoomAndPan(value) {
      this[zoomAndPan$0] = value;
    }
  };
  dart.addTypeTests(svg$.ZoomAndPan);
  const zoomAndPan$0 = Symbol("ZoomAndPan.zoomAndPan");
  dart.setFieldSignature(svg$.ZoomAndPan, () => ({
    __proto__: dart.getFields(svg$.ZoomAndPan.__proto__),
    zoomAndPan: dart.fieldType(core.int)
  }));
  dart.defineExtensionAccessors(svg$.ZoomAndPan, ['zoomAndPan']);
  dart.defineLazy(svg$.ZoomAndPan, {
    /*svg$.ZoomAndPan.SVG_ZOOMANDPAN_DISABLE*/get SVG_ZOOMANDPAN_DISABLE() {
      return 1;
    },
    /*svg$.ZoomAndPan.SVG_ZOOMANDPAN_MAGNIFY*/get SVG_ZOOMANDPAN_MAGNIFY() {
      return 2;
    },
    /*svg$.ZoomAndPan.SVG_ZOOMANDPAN_UNKNOWN*/get SVG_ZOOMANDPAN_UNKNOWN() {
      return 0;
    }
  });
  svg$._SVGFEDropShadowElement = class _SVGFEDropShadowElement extends svg$.SvgElement {};
  (svg$._SVGFEDropShadowElement.created = function() {
    svg$._SVGFEDropShadowElement.__proto__.created.call(this);
  }).prototype = svg$._SVGFEDropShadowElement.prototype;
  dart.addTypeTests(svg$._SVGFEDropShadowElement);
  svg$._SVGFEDropShadowElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
  dart.registerExtension("SVGFEDropShadowElement", svg$._SVGFEDropShadowElement);
  svg$._SVGMPathElement = class _SVGMPathElement extends svg$.SvgElement {
    static new() {
      return svg$._SVGMPathElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("mpath"));
    }
  };
  (svg$._SVGMPathElement.created = function() {
    svg$._SVGMPathElement.__proto__.created.call(this);
  }).prototype = svg$._SVGMPathElement.prototype;
  dart.addTypeTests(svg$._SVGMPathElement);
  svg$._SVGMPathElement[dart.implements] = () => [svg$.UriReference];
  dart.registerExtension("SVGMPathElement", svg$._SVGMPathElement);
  const _connect = Symbol('_connect');
  web_audio.AudioNode = class AudioNode extends html$.EventTarget {
    get [$channelCount]() {
      return this.channelCount;
    }
    set [$channelCount](value) {
      this.channelCount = value;
    }
    get [$channelCountMode]() {
      return this.channelCountMode;
    }
    set [$channelCountMode](value) {
      this.channelCountMode = value;
    }
    get [$channelInterpretation]() {
      return this.channelInterpretation;
    }
    set [$channelInterpretation](value) {
      this.channelInterpretation = value;
    }
    get [$context]() {
      return this.context;
    }
    get [$numberOfInputs]() {
      return this.numberOfInputs;
    }
    get [$numberOfOutputs]() {
      return this.numberOfOutputs;
    }
    [_connect](...args) {
      return this.connect.apply(this, args);
    }
    [$disconnect](...args) {
      return this.disconnect.apply(this, args);
    }
    [$connectNode](destination, output, input) {
      if (output === void 0) output = 0;
      if (input === void 0) input = 0;
      this[_connect](destination, output, input);
    }
    [$connectParam](destination, output) {
      if (output === void 0) output = 0;
      this[_connect](destination, output);
    }
  };
  dart.addTypeTests(web_audio.AudioNode);
  const channelCount = Symbol("AudioNode.channelCount");
  const channelCountMode = Symbol("AudioNode.channelCountMode");
  const channelInterpretation = Symbol("AudioNode.channelInterpretation");
  const context = Symbol("AudioNode.context");
  const numberOfInputs = Symbol("AudioNode.numberOfInputs");
  const numberOfOutputs = Symbol("AudioNode.numberOfOutputs");
  dart.setMethodSignature(web_audio.AudioNode, () => ({
    __proto__: dart.getMethods(web_audio.AudioNode.__proto__),
    [_connect]: dart.fnType(web_audio.AudioNode, [dart.dynamic], [core.int, core.int]),
    [$disconnect]: dart.fnType(dart.void, [], [dart.dynamic, core.int, core.int]),
    [$connectNode]: dart.fnType(dart.void, [web_audio.AudioNode], [core.int, core.int]),
    [$connectParam]: dart.fnType(dart.void, [web_audio.AudioParam], [core.int])
  }));
  dart.setFieldSignature(web_audio.AudioNode, () => ({
    __proto__: dart.getFields(web_audio.AudioNode.__proto__),
    [$channelCount]: dart.fieldType(core.int),
    [$channelCountMode]: dart.fieldType(core.String),
    [$channelInterpretation]: dart.fieldType(core.String),
    [$context]: dart.finalFieldType(web_audio.BaseAudioContext),
    [$numberOfInputs]: dart.finalFieldType(core.int),
    [$numberOfOutputs]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("AudioNode", web_audio.AudioNode);
  web_audio.AnalyserNode = class AnalyserNode$ extends web_audio.AudioNode {
    static new(context, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return web_audio.AnalyserNode._create_1(context, options_1);
      }
      return web_audio.AnalyserNode._create_2(context);
    }
    static _create_1(context, options) {
      return new AnalyserNode(context, options);
    }
    static _create_2(context) {
      return new AnalyserNode(context);
    }
    get [$fftSize]() {
      return this.fftSize;
    }
    set [$fftSize](value) {
      this.fftSize = value;
    }
    get [$frequencyBinCount]() {
      return this.frequencyBinCount;
    }
    get [$maxDecibels]() {
      return this.maxDecibels;
    }
    set [$maxDecibels](value) {
      this.maxDecibels = value;
    }
    get [$minDecibels]() {
      return this.minDecibels;
    }
    set [$minDecibels](value) {
      this.minDecibels = value;
    }
    get [$smoothingTimeConstant]() {
      return this.smoothingTimeConstant;
    }
    set [$smoothingTimeConstant](value) {
      this.smoothingTimeConstant = value;
    }
    [$getByteFrequencyData](...args) {
      return this.getByteFrequencyData.apply(this, args);
    }
    [$getByteTimeDomainData](...args) {
      return this.getByteTimeDomainData.apply(this, args);
    }
    [$getFloatFrequencyData](...args) {
      return this.getFloatFrequencyData.apply(this, args);
    }
    [$getFloatTimeDomainData](...args) {
      return this.getFloatTimeDomainData.apply(this, args);
    }
  };
  dart.addTypeTests(web_audio.AnalyserNode);
  const fftSize = Symbol("AnalyserNode.fftSize");
  const frequencyBinCount = Symbol("AnalyserNode.frequencyBinCount");
  const maxDecibels = Symbol("AnalyserNode.maxDecibels");
  const minDecibels = Symbol("AnalyserNode.minDecibels");
  const smoothingTimeConstant = Symbol("AnalyserNode.smoothingTimeConstant");
  dart.setMethodSignature(web_audio.AnalyserNode, () => ({
    __proto__: dart.getMethods(web_audio.AnalyserNode.__proto__),
    [$getByteFrequencyData]: dart.fnType(dart.void, [typed_data.Uint8List]),
    [$getByteTimeDomainData]: dart.fnType(dart.void, [typed_data.Uint8List]),
    [$getFloatFrequencyData]: dart.fnType(dart.void, [typed_data.Float32List]),
    [$getFloatTimeDomainData]: dart.fnType(dart.void, [typed_data.Float32List])
  }));
  dart.setFieldSignature(web_audio.AnalyserNode, () => ({
    __proto__: dart.getFields(web_audio.AnalyserNode.__proto__),
    [$fftSize]: dart.fieldType(core.int),
    [$frequencyBinCount]: dart.finalFieldType(core.int),
    [$maxDecibels]: dart.fieldType(core.num),
    [$minDecibels]: dart.fieldType(core.num),
    [$smoothingTimeConstant]: dart.fieldType(core.num)
  }));
  dart.registerExtension("AnalyserNode", web_audio.AnalyserNode);
  dart.registerExtension("RealtimeAnalyserNode", web_audio.AnalyserNode);
  web_audio.AudioBuffer = class AudioBuffer$ extends _interceptors.Interceptor {
    static new(options) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.AudioBuffer._create_1(options_1);
    }
    static _create_1(options) {
      return new AudioBuffer(options);
    }
    get [$duration]() {
      return this.duration;
    }
    get [$length]() {
      return this.length;
    }
    get [$numberOfChannels]() {
      return this.numberOfChannels;
    }
    get [$sampleRate]() {
      return this.sampleRate;
    }
    [$copyFromChannel](...args) {
      return this.copyFromChannel.apply(this, args);
    }
    [$copyToChannel](...args) {
      return this.copyToChannel.apply(this, args);
    }
    [$getChannelData](...args) {
      return this.getChannelData.apply(this, args);
    }
  };
  dart.addTypeTests(web_audio.AudioBuffer);
  const duration$5 = Symbol("AudioBuffer.duration");
  const length$18 = Symbol("AudioBuffer.length");
  const numberOfChannels = Symbol("AudioBuffer.numberOfChannels");
  const sampleRate = Symbol("AudioBuffer.sampleRate");
  dart.setMethodSignature(web_audio.AudioBuffer, () => ({
    __proto__: dart.getMethods(web_audio.AudioBuffer.__proto__),
    [$copyFromChannel]: dart.fnType(dart.void, [typed_data.Float32List, core.int], [core.int]),
    [$copyToChannel]: dart.fnType(dart.void, [typed_data.Float32List, core.int], [core.int]),
    [$getChannelData]: dart.fnType(typed_data.Float32List, [core.int])
  }));
  dart.setFieldSignature(web_audio.AudioBuffer, () => ({
    __proto__: dart.getFields(web_audio.AudioBuffer.__proto__),
    [$duration]: dart.finalFieldType(core.num),
    [$length]: dart.finalFieldType(core.int),
    [$numberOfChannels]: dart.finalFieldType(core.int),
    [$sampleRate]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("AudioBuffer", web_audio.AudioBuffer);
  web_audio.AudioScheduledSourceNode = class AudioScheduledSourceNode extends web_audio.AudioNode {
    [$start2](...args) {
      return this.start.apply(this, args);
    }
    [$stop](...args) {
      return this.stop.apply(this, args);
    }
    get [$onEnded]() {
      return web_audio.AudioScheduledSourceNode.endedEvent.forTarget(this);
    }
  };
  dart.addTypeTests(web_audio.AudioScheduledSourceNode);
  dart.setMethodSignature(web_audio.AudioScheduledSourceNode, () => ({
    __proto__: dart.getMethods(web_audio.AudioScheduledSourceNode.__proto__),
    [$start2]: dart.fnType(dart.void, [], [core.num]),
    [$stop]: dart.fnType(dart.void, [], [core.num])
  }));
  dart.setGetterSignature(web_audio.AudioScheduledSourceNode, () => ({
    __proto__: dart.getGetters(web_audio.AudioScheduledSourceNode.__proto__),
    [$onEnded]: async.Stream$(html$.Event)
  }));
  dart.defineLazy(web_audio.AudioScheduledSourceNode, {
    /*web_audio.AudioScheduledSourceNode.endedEvent*/get endedEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("ended"));
    }
  });
  dart.registerExtension("AudioScheduledSourceNode", web_audio.AudioScheduledSourceNode);
  web_audio.AudioBufferSourceNode = class AudioBufferSourceNode$ extends web_audio.AudioScheduledSourceNode {
    static new(context, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return web_audio.AudioBufferSourceNode._create_1(context, options_1);
      }
      return web_audio.AudioBufferSourceNode._create_2(context);
    }
    static _create_1(context, options) {
      return new AudioBufferSourceNode(context, options);
    }
    static _create_2(context) {
      return new AudioBufferSourceNode(context);
    }
    get [$buffer]() {
      return this.buffer;
    }
    set [$buffer](value) {
      this.buffer = value;
    }
    get [$detune]() {
      return this.detune;
    }
    get [$loop]() {
      return this.loop;
    }
    set [$loop](value) {
      this.loop = value;
    }
    get [$loopEnd]() {
      return this.loopEnd;
    }
    set [$loopEnd](value) {
      this.loopEnd = value;
    }
    get [$loopStart]() {
      return this.loopStart;
    }
    set [$loopStart](value) {
      this.loopStart = value;
    }
    get [$playbackRate]() {
      return this.playbackRate;
    }
    [$start](...args) {
      return this.start.apply(this, args);
    }
  };
  dart.addTypeTests(web_audio.AudioBufferSourceNode);
  const buffer = Symbol("AudioBufferSourceNode.buffer");
  const detune = Symbol("AudioBufferSourceNode.detune");
  const loop$ = Symbol("AudioBufferSourceNode.loop");
  const loopEnd = Symbol("AudioBufferSourceNode.loopEnd");
  const loopStart = Symbol("AudioBufferSourceNode.loopStart");
  const playbackRate$0 = Symbol("AudioBufferSourceNode.playbackRate");
  dart.setMethodSignature(web_audio.AudioBufferSourceNode, () => ({
    __proto__: dart.getMethods(web_audio.AudioBufferSourceNode.__proto__),
    [$start]: dart.fnType(dart.void, [], [core.num, core.num, core.num])
  }));
  dart.setFieldSignature(web_audio.AudioBufferSourceNode, () => ({
    __proto__: dart.getFields(web_audio.AudioBufferSourceNode.__proto__),
    [$buffer]: dart.fieldType(web_audio.AudioBuffer),
    [$detune]: dart.finalFieldType(web_audio.AudioParam),
    [$loop]: dart.fieldType(core.bool),
    [$loopEnd]: dart.fieldType(core.num),
    [$loopStart]: dart.fieldType(core.num),
    [$playbackRate]: dart.finalFieldType(web_audio.AudioParam)
  }));
  dart.registerExtension("AudioBufferSourceNode", web_audio.AudioBufferSourceNode);
  const _getOutputTimestamp_1 = Symbol('_getOutputTimestamp_1');
  const _decodeAudioData = Symbol('_decodeAudioData');
  const _createPeriodicWave_1 = Symbol('_createPeriodicWave_1');
  const _createPeriodicWave_2 = Symbol('_createPeriodicWave_2');
  web_audio.BaseAudioContext = class BaseAudioContext extends html$.EventTarget {
    get [$currentTime]() {
      return this.currentTime;
    }
    get [$destination]() {
      return this.destination;
    }
    get [$listener]() {
      return this.listener;
    }
    get [$sampleRate]() {
      return this.sampleRate;
    }
    get [$state]() {
      return this.state;
    }
    [$createAnalyser](...args) {
      return this.createAnalyser.apply(this, args);
    }
    [$createBiquadFilter](...args) {
      return this.createBiquadFilter.apply(this, args);
    }
    [$createBuffer](...args) {
      return this.createBuffer.apply(this, args);
    }
    [$createBufferSource](...args) {
      return this.createBufferSource.apply(this, args);
    }
    [$createChannelMerger](...args) {
      return this.createChannelMerger.apply(this, args);
    }
    [$createChannelSplitter](...args) {
      return this.createChannelSplitter.apply(this, args);
    }
    [$createConstantSource](...args) {
      return this.createConstantSource.apply(this, args);
    }
    [$createConvolver](...args) {
      return this.createConvolver.apply(this, args);
    }
    [$createDelay](...args) {
      return this.createDelay.apply(this, args);
    }
    [$createDynamicsCompressor](...args) {
      return this.createDynamicsCompressor.apply(this, args);
    }
    [$createGain](...args) {
      return this.createGain.apply(this, args);
    }
    [$createIirFilter](...args) {
      return this.createIIRFilter.apply(this, args);
    }
    [$createMediaElementSource](...args) {
      return this.createMediaElementSource.apply(this, args);
    }
    [$createMediaStreamDestination](...args) {
      return this.createMediaStreamDestination.apply(this, args);
    }
    [$createMediaStreamSource](...args) {
      return this.createMediaStreamSource.apply(this, args);
    }
    [$createOscillator](...args) {
      return this.createOscillator.apply(this, args);
    }
    [$createPanner](...args) {
      return this.createPanner.apply(this, args);
    }
    [$createPeriodicWave](real, imag, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return this[_createPeriodicWave_1](real, imag, options_1);
      }
      return this[_createPeriodicWave_2](real, imag);
    }
    [_createPeriodicWave_1](...args) {
      return this.createPeriodicWave.apply(this, args);
    }
    [_createPeriodicWave_2](...args) {
      return this.createPeriodicWave.apply(this, args);
    }
    [$createScriptProcessor](...args) {
      return this.createScriptProcessor.apply(this, args);
    }
    [$createStereoPanner](...args) {
      return this.createStereoPanner.apply(this, args);
    }
    [$createWaveShaper](...args) {
      return this.createWaveShaper.apply(this, args);
    }
    [$decodeAudioData](audioData, successCallback, errorCallback) {
      if (successCallback === void 0) successCallback = null;
      if (errorCallback === void 0) errorCallback = null;
      return html$.promiseToFuture(web_audio.AudioBuffer, this.decodeAudioData(audioData, successCallback, errorCallback));
    }
    [$resume]() {
      return html$.promiseToFuture(dart.dynamic, this.resume());
    }
  };
  dart.addTypeTests(web_audio.BaseAudioContext);
  const currentTime$2 = Symbol("BaseAudioContext.currentTime");
  const destination = Symbol("BaseAudioContext.destination");
  const listener = Symbol("BaseAudioContext.listener");
  const sampleRate$ = Symbol("BaseAudioContext.sampleRate");
  const state$6 = Symbol("BaseAudioContext.state");
  dart.setMethodSignature(web_audio.BaseAudioContext, () => ({
    __proto__: dart.getMethods(web_audio.BaseAudioContext.__proto__),
    [$createAnalyser]: dart.fnType(web_audio.AnalyserNode, []),
    [$createBiquadFilter]: dart.fnType(web_audio.BiquadFilterNode, []),
    [$createBuffer]: dart.fnType(web_audio.AudioBuffer, [core.int, core.int, core.num]),
    [$createBufferSource]: dart.fnType(web_audio.AudioBufferSourceNode, []),
    [$createChannelMerger]: dart.fnType(web_audio.ChannelMergerNode, [], [core.int]),
    [$createChannelSplitter]: dart.fnType(web_audio.ChannelSplitterNode, [], [core.int]),
    [$createConstantSource]: dart.fnType(web_audio.ConstantSourceNode, []),
    [$createConvolver]: dart.fnType(web_audio.ConvolverNode, []),
    [$createDelay]: dart.fnType(web_audio.DelayNode, [], [core.num]),
    [$createDynamicsCompressor]: dart.fnType(web_audio.DynamicsCompressorNode, []),
    [$createGain]: dart.fnType(web_audio.GainNode, []),
    [$createIirFilter]: dart.fnType(web_audio.IirFilterNode, [core.List$(core.num), core.List$(core.num)]),
    [$createMediaElementSource]: dart.fnType(web_audio.MediaElementAudioSourceNode, [html$.MediaElement]),
    [$createMediaStreamDestination]: dart.fnType(web_audio.MediaStreamAudioDestinationNode, []),
    [$createMediaStreamSource]: dart.fnType(web_audio.MediaStreamAudioSourceNode, [html$.MediaStream]),
    [$createOscillator]: dart.fnType(web_audio.OscillatorNode, []),
    [$createPanner]: dart.fnType(web_audio.PannerNode, []),
    [$createPeriodicWave]: dart.fnType(web_audio.PeriodicWave, [core.List$(core.num), core.List$(core.num)], [core.Map]),
    [_createPeriodicWave_1]: dart.fnType(web_audio.PeriodicWave, [core.List$(core.num), core.List$(core.num), dart.dynamic]),
    [_createPeriodicWave_2]: dart.fnType(web_audio.PeriodicWave, [core.List$(core.num), core.List$(core.num)]),
    [$createScriptProcessor]: dart.fnType(web_audio.ScriptProcessorNode, [], [core.int, core.int, core.int]),
    [$createStereoPanner]: dart.fnType(web_audio.StereoPannerNode, []),
    [$createWaveShaper]: dart.fnType(web_audio.WaveShaperNode, []),
    [$decodeAudioData]: dart.fnType(async.Future$(web_audio.AudioBuffer), [typed_data.ByteBuffer], [dart.fnType(dart.void, [web_audio.AudioBuffer]), dart.fnType(dart.void, [html$.DomException])]),
    [$resume]: dart.fnType(async.Future, [])
  }));
  dart.setFieldSignature(web_audio.BaseAudioContext, () => ({
    __proto__: dart.getFields(web_audio.BaseAudioContext.__proto__),
    [$currentTime]: dart.finalFieldType(core.num),
    [$destination]: dart.finalFieldType(web_audio.AudioDestinationNode),
    [$listener]: dart.finalFieldType(web_audio.AudioListener),
    [$sampleRate]: dart.finalFieldType(core.num),
    [$state]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("BaseAudioContext", web_audio.BaseAudioContext);
  web_audio.AudioContext = class AudioContext extends web_audio.BaseAudioContext {
    static get supported() {
      return !!(window.AudioContext || window.webkitAudioContext);
    }
    get [$baseLatency]() {
      return this.baseLatency;
    }
    [$close]() {
      return html$.promiseToFuture(dart.dynamic, this.close());
    }
    [$getOutputTimestamp]() {
      return html_common.convertNativeToDart_Dictionary(this[_getOutputTimestamp_1]());
    }
    [_getOutputTimestamp_1](...args) {
      return this.getOutputTimestamp.apply(this, args);
    }
    [$suspend]() {
      return html$.promiseToFuture(dart.dynamic, this.suspend());
    }
    static new() {
      return new (window.AudioContext || window.webkitAudioContext)();
    }
    [$createGain]() {
      if (this.createGain !== undefined) {
        return this.createGain();
      } else {
        return this.createGainNode();
      }
    }
    [$createScriptProcessor](bufferSize, numberOfInputChannels, numberOfOutputChannels) {
      if (bufferSize === void 0) bufferSize = null;
      if (numberOfInputChannels === void 0) numberOfInputChannels = null;
      if (numberOfOutputChannels === void 0) numberOfOutputChannels = null;
      let func = this.createScriptProcessor || this.createJavaScriptNode;
      if (numberOfOutputChannels != null) {
        return func.call(this, bufferSize, numberOfInputChannels, numberOfOutputChannels);
      } else if (numberOfInputChannels != null) {
        return func.call(this, bufferSize, numberOfInputChannels);
      } else if (bufferSize != null) {
        return func.call(this, bufferSize);
      } else {
        return func.call(this);
      }
    }
    [_decodeAudioData](...args) {
      return this.decodeAudioData.apply(this, args);
    }
    [$decodeAudioData](audioData, successCallback, errorCallback) {
      if (successCallback === void 0) successCallback = null;
      if (errorCallback === void 0) errorCallback = null;
      if (successCallback != null && errorCallback != null) {
        return FutureOfAudioBuffer()._check(this[_decodeAudioData](audioData, successCallback, errorCallback));
      }
      let completer = CompleterOfAudioBuffer().new();
      this[_decodeAudioData](audioData, dart.fn(value => {
        completer.complete(value);
      }, AudioBufferToNull()), dart.fn(error => {
        if (error == null) {
          completer.completeError("");
        } else {
          completer.completeError(error);
        }
      }, DomExceptionToNull()));
      return completer.future;
    }
  };
  dart.addTypeTests(web_audio.AudioContext);
  const baseLatency = Symbol("AudioContext.baseLatency");
  dart.setMethodSignature(web_audio.AudioContext, () => ({
    __proto__: dart.getMethods(web_audio.AudioContext.__proto__),
    [$close]: dart.fnType(async.Future, []),
    [$getOutputTimestamp]: dart.fnType(core.Map, []),
    [_getOutputTimestamp_1]: dart.fnType(dart.dynamic, []),
    [$suspend]: dart.fnType(async.Future, []),
    [_decodeAudioData]: dart.fnType(async.Future, [typed_data.ByteBuffer], [dart.fnType(dart.void, [web_audio.AudioBuffer]), dart.fnType(dart.void, [html$.DomException])])
  }));
  dart.setFieldSignature(web_audio.AudioContext, () => ({
    __proto__: dart.getFields(web_audio.AudioContext.__proto__),
    [$baseLatency]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("AudioContext", web_audio.AudioContext);
  dart.registerExtension("webkitAudioContext", web_audio.AudioContext);
  web_audio.AudioDestinationNode = class AudioDestinationNode extends web_audio.AudioNode {
    get [$maxChannelCount]() {
      return this.maxChannelCount;
    }
  };
  dart.addTypeTests(web_audio.AudioDestinationNode);
  const maxChannelCount = Symbol("AudioDestinationNode.maxChannelCount");
  dart.setFieldSignature(web_audio.AudioDestinationNode, () => ({
    __proto__: dart.getFields(web_audio.AudioDestinationNode.__proto__),
    [$maxChannelCount]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("AudioDestinationNode", web_audio.AudioDestinationNode);
  web_audio.AudioListener = class AudioListener extends _interceptors.Interceptor {
    get [$forwardX]() {
      return this.forwardX;
    }
    get [$forwardY]() {
      return this.forwardY;
    }
    get [$forwardZ]() {
      return this.forwardZ;
    }
    get [$positionX]() {
      return this.positionX;
    }
    get [$positionY]() {
      return this.positionY;
    }
    get [$positionZ]() {
      return this.positionZ;
    }
    get [$upX]() {
      return this.upX;
    }
    get [$upY]() {
      return this.upY;
    }
    get [$upZ]() {
      return this.upZ;
    }
    [$setOrientation](...args) {
      return this.setOrientation.apply(this, args);
    }
    [$setPosition](...args) {
      return this.setPosition.apply(this, args);
    }
  };
  dart.addTypeTests(web_audio.AudioListener);
  const forwardX = Symbol("AudioListener.forwardX");
  const forwardY = Symbol("AudioListener.forwardY");
  const forwardZ = Symbol("AudioListener.forwardZ");
  const positionX$ = Symbol("AudioListener.positionX");
  const positionY$ = Symbol("AudioListener.positionY");
  const positionZ = Symbol("AudioListener.positionZ");
  const upX = Symbol("AudioListener.upX");
  const upY = Symbol("AudioListener.upY");
  const upZ = Symbol("AudioListener.upZ");
  dart.setMethodSignature(web_audio.AudioListener, () => ({
    __proto__: dart.getMethods(web_audio.AudioListener.__proto__),
    [$setOrientation]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
    [$setPosition]: dart.fnType(dart.void, [core.num, core.num, core.num])
  }));
  dart.setFieldSignature(web_audio.AudioListener, () => ({
    __proto__: dart.getFields(web_audio.AudioListener.__proto__),
    [$forwardX]: dart.finalFieldType(web_audio.AudioParam),
    [$forwardY]: dart.finalFieldType(web_audio.AudioParam),
    [$forwardZ]: dart.finalFieldType(web_audio.AudioParam),
    [$positionX]: dart.finalFieldType(web_audio.AudioParam),
    [$positionY]: dart.finalFieldType(web_audio.AudioParam),
    [$positionZ]: dart.finalFieldType(web_audio.AudioParam),
    [$upX]: dart.finalFieldType(web_audio.AudioParam),
    [$upY]: dart.finalFieldType(web_audio.AudioParam),
    [$upZ]: dart.finalFieldType(web_audio.AudioParam)
  }));
  dart.registerExtension("AudioListener", web_audio.AudioListener);
  web_audio.AudioParam = class AudioParam extends _interceptors.Interceptor {
    get [$defaultValue]() {
      return this.defaultValue;
    }
    get [$maxValue]() {
      return this.maxValue;
    }
    get [$minValue]() {
      return this.minValue;
    }
    get [$value]() {
      return this.value;
    }
    set [$value](value) {
      this.value = value;
    }
    [$cancelAndHoldAtTime](...args) {
      return this.cancelAndHoldAtTime.apply(this, args);
    }
    [$cancelScheduledValues](...args) {
      return this.cancelScheduledValues.apply(this, args);
    }
    [$exponentialRampToValueAtTime](...args) {
      return this.exponentialRampToValueAtTime.apply(this, args);
    }
    [$linearRampToValueAtTime](...args) {
      return this.linearRampToValueAtTime.apply(this, args);
    }
    [$setTargetAtTime](...args) {
      return this.setTargetAtTime.apply(this, args);
    }
    [$setValueAtTime](...args) {
      return this.setValueAtTime.apply(this, args);
    }
    [$setValueCurveAtTime](...args) {
      return this.setValueCurveAtTime.apply(this, args);
    }
  };
  dart.addTypeTests(web_audio.AudioParam);
  const defaultValue$3 = Symbol("AudioParam.defaultValue");
  const maxValue = Symbol("AudioParam.maxValue");
  const minValue = Symbol("AudioParam.minValue");
  const value$20 = Symbol("AudioParam.value");
  dart.setMethodSignature(web_audio.AudioParam, () => ({
    __proto__: dart.getMethods(web_audio.AudioParam.__proto__),
    [$cancelAndHoldAtTime]: dart.fnType(web_audio.AudioParam, [core.num]),
    [$cancelScheduledValues]: dart.fnType(web_audio.AudioParam, [core.num]),
    [$exponentialRampToValueAtTime]: dart.fnType(web_audio.AudioParam, [core.num, core.num]),
    [$linearRampToValueAtTime]: dart.fnType(web_audio.AudioParam, [core.num, core.num]),
    [$setTargetAtTime]: dart.fnType(web_audio.AudioParam, [core.num, core.num, core.num]),
    [$setValueAtTime]: dart.fnType(web_audio.AudioParam, [core.num, core.num]),
    [$setValueCurveAtTime]: dart.fnType(web_audio.AudioParam, [core.List$(core.num), core.num, core.num])
  }));
  dart.setFieldSignature(web_audio.AudioParam, () => ({
    __proto__: dart.getFields(web_audio.AudioParam.__proto__),
    [$defaultValue]: dart.finalFieldType(core.num),
    [$maxValue]: dart.finalFieldType(core.num),
    [$minValue]: dart.finalFieldType(core.num),
    [$value]: dart.fieldType(core.num)
  }));
  dart.registerExtension("AudioParam", web_audio.AudioParam);
  const _getItem$ = Symbol('_getItem');
  const Interceptor_MapMixin$$2 = class Interceptor_MapMixin extends _interceptors.Interceptor {};
  (Interceptor_MapMixin$$2.new = function() {
    Interceptor_MapMixin$$2.__proto__.new.call(this);
  }).prototype = Interceptor_MapMixin$$2.prototype;
  dart.applyMixin(Interceptor_MapMixin$$2, collection.MapMixin$(core.String, dart.dynamic));
  web_audio.AudioParamMap = class AudioParamMap extends Interceptor_MapMixin$$2 {
    [_getItem$](key) {
      return html_common.convertNativeToDart_Dictionary(this.get(key));
    }
    [$addAll](other) {
      MapOfString$dynamic()._check(other);
      dart.throw(new core.UnsupportedError.new("Not supported"));
    }
    [$containsValue](value) {
      return this[$values][$any](dart.fn(e => dart.equals(e, value), MapTobool()));
    }
    [$containsKey](key) {
      return this[_getItem$](core.String._check(key)) != null;
    }
    [$_get](key) {
      return this[_getItem$](core.String._check(key));
    }
    [$forEach](f) {
      let entries = this.entries();
      while (true) {
        let entry = entries.next();
        if (entry.done) return;
        f(entry.value[0], html_common.convertNativeToDart_Dictionary(entry.value[1]));
      }
    }
    get [$keys]() {
      let keys = JSArrayOfString().of([]);
      this[$forEach](dart.fn((k, v) => keys[$add](k), StringAnddynamicTovoid()));
      return keys;
    }
    get [$values]() {
      let values = JSArrayOfMap().of([]);
      this[$forEach](dart.fn((k, v) => values[$add](core.Map._check(v)), StringAnddynamicTovoid()));
      return values;
    }
    get [$length]() {
      return this.size;
    }
    get [$isEmpty]() {
      return this[$length] === 0;
    }
    get [$isNotEmpty]() {
      return !dart.test(this[$isEmpty]);
    }
    [$_set](key, value) {
      core.String._check(key);
      dart.throw(new core.UnsupportedError.new("Not supported"));
      return value;
    }
    [$putIfAbsent](key, ifAbsent) {
      core.String._check(key);
      dart.throw(new core.UnsupportedError.new("Not supported"));
    }
    [$remove](key) {
      dart.throw(new core.UnsupportedError.new("Not supported"));
    }
    [$clear]() {
      dart.throw(new core.UnsupportedError.new("Not supported"));
    }
  };
  dart.addTypeTests(web_audio.AudioParamMap);
  dart.setMethodSignature(web_audio.AudioParamMap, () => ({
    __proto__: dart.getMethods(web_audio.AudioParamMap.__proto__),
    [_getItem$]: dart.fnType(core.Map, [core.String]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    [$containsValue]: dart.fnType(core.bool, [dart.dynamic]),
    [$containsKey]: dart.fnType(core.bool, [dart.dynamic]),
    [$_get]: dart.fnType(core.Map, [dart.dynamic]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, dart.dynamic])]),
    [$_set]: dart.fnType(dart.void, [core.Object, dart.dynamic]),
    [$putIfAbsent]: dart.fnType(dart.dynamic, [core.Object, dart.fnType(dart.dynamic, [])]),
    [$remove]: dart.fnType(core.String, [dart.dynamic]),
    [$clear]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(web_audio.AudioParamMap, () => ({
    __proto__: dart.getGetters(web_audio.AudioParamMap.__proto__),
    [$keys]: core.Iterable$(core.String),
    [$values]: core.Iterable$(core.Map),
    [$length]: core.int,
    [$isEmpty]: core.bool,
    [$isNotEmpty]: core.bool
  }));
  dart.registerExtension("AudioParamMap", web_audio.AudioParamMap);
  web_audio.AudioProcessingEvent = class AudioProcessingEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return web_audio.AudioProcessingEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new AudioProcessingEvent(type, eventInitDict);
    }
    get [$inputBuffer]() {
      return this.inputBuffer;
    }
    get [$outputBuffer]() {
      return this.outputBuffer;
    }
    get [$playbackTime]() {
      return this.playbackTime;
    }
  };
  dart.addTypeTests(web_audio.AudioProcessingEvent);
  const inputBuffer = Symbol("AudioProcessingEvent.inputBuffer");
  const outputBuffer = Symbol("AudioProcessingEvent.outputBuffer");
  const playbackTime = Symbol("AudioProcessingEvent.playbackTime");
  dart.setFieldSignature(web_audio.AudioProcessingEvent, () => ({
    __proto__: dart.getFields(web_audio.AudioProcessingEvent.__proto__),
    [$inputBuffer]: dart.finalFieldType(web_audio.AudioBuffer),
    [$outputBuffer]: dart.finalFieldType(web_audio.AudioBuffer),
    [$playbackTime]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("AudioProcessingEvent", web_audio.AudioProcessingEvent);
  web_audio.AudioTrack = class AudioTrack extends _interceptors.Interceptor {
    get [$enabled]() {
      return this.enabled;
    }
    set [$enabled](value) {
      this.enabled = value;
    }
    get [$id]() {
      return this.id;
    }
    get [$kind]() {
      return this.kind;
    }
    get [$label]() {
      return this.label;
    }
    get [$language]() {
      return this.language;
    }
    get [$sourceBuffer]() {
      return this.sourceBuffer;
    }
  };
  dart.addTypeTests(web_audio.AudioTrack);
  const enabled$ = Symbol("AudioTrack.enabled");
  const id$18 = Symbol("AudioTrack.id");
  const kind$4 = Symbol("AudioTrack.kind");
  const label$8 = Symbol("AudioTrack.label");
  const language$2 = Symbol("AudioTrack.language");
  const sourceBuffer$ = Symbol("AudioTrack.sourceBuffer");
  dart.setFieldSignature(web_audio.AudioTrack, () => ({
    __proto__: dart.getFields(web_audio.AudioTrack.__proto__),
    [$enabled]: dart.fieldType(core.bool),
    [$id]: dart.finalFieldType(core.String),
    [$kind]: dart.finalFieldType(core.String),
    [$label]: dart.finalFieldType(core.String),
    [$language]: dart.finalFieldType(core.String),
    [$sourceBuffer]: dart.finalFieldType(html$.SourceBuffer)
  }));
  dart.registerExtension("AudioTrack", web_audio.AudioTrack);
  const __getter__$ = Symbol('__getter__');
  web_audio.AudioTrackList = class AudioTrackList extends html$.EventTarget {
    get [$length]() {
      return this.length;
    }
    [__getter__$](...args) {
      return this.__getter__.apply(this, args);
    }
    [$getTrackById](...args) {
      return this.getTrackById.apply(this, args);
    }
    get [$onChange]() {
      return web_audio.AudioTrackList.changeEvent.forTarget(this);
    }
  };
  dart.addTypeTests(web_audio.AudioTrackList);
  const length$19 = Symbol("AudioTrackList.length");
  dart.setMethodSignature(web_audio.AudioTrackList, () => ({
    __proto__: dart.getMethods(web_audio.AudioTrackList.__proto__),
    [__getter__$]: dart.fnType(web_audio.AudioTrack, [core.int]),
    [$getTrackById]: dart.fnType(web_audio.AudioTrack, [core.String])
  }));
  dart.setGetterSignature(web_audio.AudioTrackList, () => ({
    __proto__: dart.getGetters(web_audio.AudioTrackList.__proto__),
    [$onChange]: async.Stream$(html$.Event)
  }));
  dart.setFieldSignature(web_audio.AudioTrackList, () => ({
    __proto__: dart.getFields(web_audio.AudioTrackList.__proto__),
    [$length]: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(web_audio.AudioTrackList, {
    /*web_audio.AudioTrackList.changeEvent*/get changeEvent() {
      return dart.const(new (EventStreamProviderOfEvent()).new("change"));
    }
  });
  dart.registerExtension("AudioTrackList", web_audio.AudioTrackList);
  web_audio.AudioWorkletGlobalScope = class AudioWorkletGlobalScope extends html$.WorkletGlobalScope {
    get [$currentTime]() {
      return this.currentTime;
    }
    get [$sampleRate]() {
      return this.sampleRate;
    }
    [$registerProcessor](...args) {
      return this.registerProcessor.apply(this, args);
    }
  };
  dart.addTypeTests(web_audio.AudioWorkletGlobalScope);
  const currentTime$3 = Symbol("AudioWorkletGlobalScope.currentTime");
  const sampleRate$0 = Symbol("AudioWorkletGlobalScope.sampleRate");
  dart.setMethodSignature(web_audio.AudioWorkletGlobalScope, () => ({
    __proto__: dart.getMethods(web_audio.AudioWorkletGlobalScope.__proto__),
    [$registerProcessor]: dart.fnType(dart.void, [core.String, core.Object])
  }));
  dart.setFieldSignature(web_audio.AudioWorkletGlobalScope, () => ({
    __proto__: dart.getFields(web_audio.AudioWorkletGlobalScope.__proto__),
    [$currentTime]: dart.finalFieldType(core.num),
    [$sampleRate]: dart.finalFieldType(core.num)
  }));
  dart.registerExtension("AudioWorkletGlobalScope", web_audio.AudioWorkletGlobalScope);
  web_audio.AudioWorkletNode = class AudioWorkletNode$ extends web_audio.AudioNode {
    static new(context, name, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return web_audio.AudioWorkletNode._create_1(context, name, options_1);
      }
      return web_audio.AudioWorkletNode._create_2(context, name);
    }
    static _create_1(context, name, options) {
      return new AudioWorkletNode(context, name, options);
    }
    static _create_2(context, name) {
      return new AudioWorkletNode(context, name);
    }
    get [$parameters]() {
      return this.parameters;
    }
  };
  dart.addTypeTests(web_audio.AudioWorkletNode);
  const parameters = Symbol("AudioWorkletNode.parameters");
  dart.setFieldSignature(web_audio.AudioWorkletNode, () => ({
    __proto__: dart.getFields(web_audio.AudioWorkletNode.__proto__),
    [$parameters]: dart.finalFieldType(web_audio.AudioParamMap)
  }));
  dart.registerExtension("AudioWorkletNode", web_audio.AudioWorkletNode);
  web_audio.AudioWorkletProcessor = class AudioWorkletProcessor extends _interceptors.Interceptor {};
  dart.addTypeTests(web_audio.AudioWorkletProcessor);
  dart.registerExtension("AudioWorkletProcessor", web_audio.AudioWorkletProcessor);
  web_audio.BiquadFilterNode = class BiquadFilterNode$ extends web_audio.AudioNode {
    static new(context, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return web_audio.BiquadFilterNode._create_1(context, options_1);
      }
      return web_audio.BiquadFilterNode._create_2(context);
    }
    static _create_1(context, options) {
      return new BiquadFilterNode(context, options);
    }
    static _create_2(context) {
      return new BiquadFilterNode(context);
    }
    get [$Q]() {
      return this.Q;
    }
    get [$detune]() {
      return this.detune;
    }
    get [$frequency]() {
      return this.frequency;
    }
    get [$gain]() {
      return this.gain;
    }
    get [$type]() {
      return this.type;
    }
    set [$type](value) {
      this.type = value;
    }
    [$getFrequencyResponse](...args) {
      return this.getFrequencyResponse.apply(this, args);
    }
  };
  dart.addTypeTests(web_audio.BiquadFilterNode);
  const Q = Symbol("BiquadFilterNode.Q");
  const detune$ = Symbol("BiquadFilterNode.detune");
  const frequency = Symbol("BiquadFilterNode.frequency");
  const gain = Symbol("BiquadFilterNode.gain");
  const type$42 = Symbol("BiquadFilterNode.type");
  dart.setMethodSignature(web_audio.BiquadFilterNode, () => ({
    __proto__: dart.getMethods(web_audio.BiquadFilterNode.__proto__),
    [$getFrequencyResponse]: dart.fnType(dart.void, [typed_data.Float32List, typed_data.Float32List, typed_data.Float32List])
  }));
  dart.setFieldSignature(web_audio.BiquadFilterNode, () => ({
    __proto__: dart.getFields(web_audio.BiquadFilterNode.__proto__),
    [$Q]: dart.finalFieldType(web_audio.AudioParam),
    [$detune]: dart.finalFieldType(web_audio.AudioParam),
    [$frequency]: dart.finalFieldType(web_audio.AudioParam),
    [$gain]: dart.finalFieldType(web_audio.AudioParam),
    [$type]: dart.fieldType(core.String)
  }));
  dart.registerExtension("BiquadFilterNode", web_audio.BiquadFilterNode);
  web_audio.ChannelMergerNode = class ChannelMergerNode$ extends web_audio.AudioNode {
    static new(context, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return web_audio.ChannelMergerNode._create_1(context, options_1);
      }
      return web_audio.ChannelMergerNode._create_2(context);
    }
    static _create_1(context, options) {
      return new ChannelMergerNode(context, options);
    }
    static _create_2(context) {
      return new ChannelMergerNode(context);
    }
  };
  dart.addTypeTests(web_audio.ChannelMergerNode);
  dart.registerExtension("ChannelMergerNode", web_audio.ChannelMergerNode);
  dart.registerExtension("AudioChannelMerger", web_audio.ChannelMergerNode);
  web_audio.ChannelSplitterNode = class ChannelSplitterNode$ extends web_audio.AudioNode {
    static new(context, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return web_audio.ChannelSplitterNode._create_1(context, options_1);
      }
      return web_audio.ChannelSplitterNode._create_2(context);
    }
    static _create_1(context, options) {
      return new ChannelSplitterNode(context, options);
    }
    static _create_2(context) {
      return new ChannelSplitterNode(context);
    }
  };
  dart.addTypeTests(web_audio.ChannelSplitterNode);
  dart.registerExtension("ChannelSplitterNode", web_audio.ChannelSplitterNode);
  dart.registerExtension("AudioChannelSplitter", web_audio.ChannelSplitterNode);
  web_audio.ConstantSourceNode = class ConstantSourceNode$ extends web_audio.AudioScheduledSourceNode {
    static new(context, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return web_audio.ConstantSourceNode._create_1(context, options_1);
      }
      return web_audio.ConstantSourceNode._create_2(context);
    }
    static _create_1(context, options) {
      return new ConstantSourceNode(context, options);
    }
    static _create_2(context) {
      return new ConstantSourceNode(context);
    }
    get [$offset]() {
      return this.offset;
    }
  };
  dart.addTypeTests(web_audio.ConstantSourceNode);
  const offset$0 = Symbol("ConstantSourceNode.offset");
  dart.setFieldSignature(web_audio.ConstantSourceNode, () => ({
    __proto__: dart.getFields(web_audio.ConstantSourceNode.__proto__),
    [$offset]: dart.finalFieldType(web_audio.AudioParam)
  }));
  dart.registerExtension("ConstantSourceNode", web_audio.ConstantSourceNode);
  web_audio.ConvolverNode = class ConvolverNode$ extends web_audio.AudioNode {
    static new(context, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return web_audio.ConvolverNode._create_1(context, options_1);
      }
      return web_audio.ConvolverNode._create_2(context);
    }
    static _create_1(context, options) {
      return new ConvolverNode(context, options);
    }
    static _create_2(context) {
      return new ConvolverNode(context);
    }
    get [$buffer]() {
      return this.buffer;
    }
    set [$buffer](value) {
      this.buffer = value;
    }
    get [$normalize]() {
      return this.normalize;
    }
    set [$normalize](value) {
      this.normalize = value;
    }
  };
  dart.addTypeTests(web_audio.ConvolverNode);
  const buffer$ = Symbol("ConvolverNode.buffer");
  const normalize = Symbol("ConvolverNode.normalize");
  dart.setFieldSignature(web_audio.ConvolverNode, () => ({
    __proto__: dart.getFields(web_audio.ConvolverNode.__proto__),
    [$buffer]: dart.fieldType(web_audio.AudioBuffer),
    [$normalize]: dart.fieldType(core.bool)
  }));
  dart.registerExtension("ConvolverNode", web_audio.ConvolverNode);
  web_audio.DelayNode = class DelayNode$ extends web_audio.AudioNode {
    static new(context, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return web_audio.DelayNode._create_1(context, options_1);
      }
      return web_audio.DelayNode._create_2(context);
    }
    static _create_1(context, options) {
      return new DelayNode(context, options);
    }
    static _create_2(context) {
      return new DelayNode(context);
    }
    get [$delayTime]() {
      return this.delayTime;
    }
  };
  dart.addTypeTests(web_audio.DelayNode);
  const delayTime = Symbol("DelayNode.delayTime");
  dart.setFieldSignature(web_audio.DelayNode, () => ({
    __proto__: dart.getFields(web_audio.DelayNode.__proto__),
    [$delayTime]: dart.finalFieldType(web_audio.AudioParam)
  }));
  dart.registerExtension("DelayNode", web_audio.DelayNode);
  web_audio.DynamicsCompressorNode = class DynamicsCompressorNode$ extends web_audio.AudioNode {
    static new(context, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return web_audio.DynamicsCompressorNode._create_1(context, options_1);
      }
      return web_audio.DynamicsCompressorNode._create_2(context);
    }
    static _create_1(context, options) {
      return new DynamicsCompressorNode(context, options);
    }
    static _create_2(context) {
      return new DynamicsCompressorNode(context);
    }
    get [$attack]() {
      return this.attack;
    }
    get [$knee]() {
      return this.knee;
    }
    get [$ratio]() {
      return this.ratio;
    }
    get [$reduction]() {
      return this.reduction;
    }
    get [$release]() {
      return this.release;
    }
    get [$threshold]() {
      return this.threshold;
    }
  };
  dart.addTypeTests(web_audio.DynamicsCompressorNode);
  const attack = Symbol("DynamicsCompressorNode.attack");
  const knee = Symbol("DynamicsCompressorNode.knee");
  const ratio = Symbol("DynamicsCompressorNode.ratio");
  const reduction = Symbol("DynamicsCompressorNode.reduction");
  const release = Symbol("DynamicsCompressorNode.release");
  const threshold = Symbol("DynamicsCompressorNode.threshold");
  dart.setFieldSignature(web_audio.DynamicsCompressorNode, () => ({
    __proto__: dart.getFields(web_audio.DynamicsCompressorNode.__proto__),
    [$attack]: dart.finalFieldType(web_audio.AudioParam),
    [$knee]: dart.finalFieldType(web_audio.AudioParam),
    [$ratio]: dart.finalFieldType(web_audio.AudioParam),
    [$reduction]: dart.finalFieldType(core.num),
    [$release]: dart.finalFieldType(web_audio.AudioParam),
    [$threshold]: dart.finalFieldType(web_audio.AudioParam)
  }));
  dart.registerExtension("DynamicsCompressorNode", web_audio.DynamicsCompressorNode);
  web_audio.GainNode = class GainNode$ extends web_audio.AudioNode {
    static new(context, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return web_audio.GainNode._create_1(context, options_1);
      }
      return web_audio.GainNode._create_2(context);
    }
    static _create_1(context, options) {
      return new GainNode(context, options);
    }
    static _create_2(context) {
      return new GainNode(context);
    }
    get [$gain]() {
      return this.gain;
    }
  };
  dart.addTypeTests(web_audio.GainNode);
  const gain$ = Symbol("GainNode.gain");
  dart.setFieldSignature(web_audio.GainNode, () => ({
    __proto__: dart.getFields(web_audio.GainNode.__proto__),
    [$gain]: dart.finalFieldType(web_audio.AudioParam)
  }));
  dart.registerExtension("GainNode", web_audio.GainNode);
  dart.registerExtension("AudioGainNode", web_audio.GainNode);
  web_audio.IirFilterNode = class IirFilterNode extends web_audio.AudioNode {
    static new(context, options) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.IirFilterNode._create_1(context, options_1);
    }
    static _create_1(context, options) {
      return new IIRFilterNode(context, options);
    }
    [$getFrequencyResponse](...args) {
      return this.getFrequencyResponse.apply(this, args);
    }
  };
  dart.addTypeTests(web_audio.IirFilterNode);
  dart.setMethodSignature(web_audio.IirFilterNode, () => ({
    __proto__: dart.getMethods(web_audio.IirFilterNode.__proto__),
    [$getFrequencyResponse]: dart.fnType(dart.void, [typed_data.Float32List, typed_data.Float32List, typed_data.Float32List])
  }));
  dart.registerExtension("IIRFilterNode", web_audio.IirFilterNode);
  web_audio.MediaElementAudioSourceNode = class MediaElementAudioSourceNode$ extends web_audio.AudioNode {
    static new(context, options) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.MediaElementAudioSourceNode._create_1(context, options_1);
    }
    static _create_1(context, options) {
      return new MediaElementAudioSourceNode(context, options);
    }
    get [$mediaElement]() {
      return this.mediaElement;
    }
  };
  dart.addTypeTests(web_audio.MediaElementAudioSourceNode);
  const mediaElement = Symbol("MediaElementAudioSourceNode.mediaElement");
  dart.setFieldSignature(web_audio.MediaElementAudioSourceNode, () => ({
    __proto__: dart.getFields(web_audio.MediaElementAudioSourceNode.__proto__),
    [$mediaElement]: dart.finalFieldType(html$.MediaElement)
  }));
  dart.registerExtension("MediaElementAudioSourceNode", web_audio.MediaElementAudioSourceNode);
  web_audio.MediaStreamAudioDestinationNode = class MediaStreamAudioDestinationNode$ extends web_audio.AudioNode {
    static new(context, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return web_audio.MediaStreamAudioDestinationNode._create_1(context, options_1);
      }
      return web_audio.MediaStreamAudioDestinationNode._create_2(context);
    }
    static _create_1(context, options) {
      return new MediaStreamAudioDestinationNode(context, options);
    }
    static _create_2(context) {
      return new MediaStreamAudioDestinationNode(context);
    }
    get [$stream]() {
      return this.stream;
    }
  };
  dart.addTypeTests(web_audio.MediaStreamAudioDestinationNode);
  const stream$0 = Symbol("MediaStreamAudioDestinationNode.stream");
  dart.setFieldSignature(web_audio.MediaStreamAudioDestinationNode, () => ({
    __proto__: dart.getFields(web_audio.MediaStreamAudioDestinationNode.__proto__),
    [$stream]: dart.finalFieldType(html$.MediaStream)
  }));
  dart.registerExtension("MediaStreamAudioDestinationNode", web_audio.MediaStreamAudioDestinationNode);
  web_audio.MediaStreamAudioSourceNode = class MediaStreamAudioSourceNode$ extends web_audio.AudioNode {
    static new(context, options) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.MediaStreamAudioSourceNode._create_1(context, options_1);
    }
    static _create_1(context, options) {
      return new MediaStreamAudioSourceNode(context, options);
    }
    get [$mediaStream]() {
      return this.mediaStream;
    }
  };
  dart.addTypeTests(web_audio.MediaStreamAudioSourceNode);
  const mediaStream = Symbol("MediaStreamAudioSourceNode.mediaStream");
  dart.setFieldSignature(web_audio.MediaStreamAudioSourceNode, () => ({
    __proto__: dart.getFields(web_audio.MediaStreamAudioSourceNode.__proto__),
    [$mediaStream]: dart.finalFieldType(html$.MediaStream)
  }));
  dart.registerExtension("MediaStreamAudioSourceNode", web_audio.MediaStreamAudioSourceNode);
  web_audio.OfflineAudioCompletionEvent = class OfflineAudioCompletionEvent$ extends html$.Event {
    static new(type, eventInitDict) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return web_audio.OfflineAudioCompletionEvent._create_1(type, eventInitDict_1);
    }
    static _create_1(type, eventInitDict) {
      return new OfflineAudioCompletionEvent(type, eventInitDict);
    }
    get [$renderedBuffer]() {
      return this.renderedBuffer;
    }
  };
  dart.addTypeTests(web_audio.OfflineAudioCompletionEvent);
  const renderedBuffer = Symbol("OfflineAudioCompletionEvent.renderedBuffer");
  dart.setFieldSignature(web_audio.OfflineAudioCompletionEvent, () => ({
    __proto__: dart.getFields(web_audio.OfflineAudioCompletionEvent.__proto__),
    [$renderedBuffer]: dart.finalFieldType(web_audio.AudioBuffer)
  }));
  dart.registerExtension("OfflineAudioCompletionEvent", web_audio.OfflineAudioCompletionEvent);
  web_audio.OfflineAudioContext = class OfflineAudioContext$ extends web_audio.BaseAudioContext {
    static new(numberOfChannels_OR_options, numberOfFrames, sampleRate) {
      if (numberOfFrames === void 0) numberOfFrames = null;
      if (sampleRate === void 0) sampleRate = null;
      if (typeof sampleRate == 'number' && core.int.is(numberOfFrames) && core.int.is(numberOfChannels_OR_options)) {
        return web_audio.OfflineAudioContext._create_1(numberOfChannels_OR_options, numberOfFrames, sampleRate);
      }
      if (core.Map.is(numberOfChannels_OR_options) && numberOfFrames == null && sampleRate == null) {
        let options_1 = html_common.convertDartToNative_Dictionary(numberOfChannels_OR_options);
        return web_audio.OfflineAudioContext._create_2(options_1);
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    static _create_1(numberOfChannels_OR_options, numberOfFrames, sampleRate) {
      return new OfflineAudioContext(numberOfChannels_OR_options, numberOfFrames, sampleRate);
    }
    static _create_2(numberOfChannels_OR_options) {
      return new OfflineAudioContext(numberOfChannels_OR_options);
    }
    get [$length]() {
      return this.length;
    }
    [$startRendering]() {
      return html$.promiseToFuture(web_audio.AudioBuffer, this.startRendering());
    }
    [$suspendFor](suspendTime) {
      return html$.promiseToFuture(dart.dynamic, this.suspendFor(suspendTime));
    }
  };
  dart.addTypeTests(web_audio.OfflineAudioContext);
  const length$20 = Symbol("OfflineAudioContext.length");
  dart.setMethodSignature(web_audio.OfflineAudioContext, () => ({
    __proto__: dart.getMethods(web_audio.OfflineAudioContext.__proto__),
    [$startRendering]: dart.fnType(async.Future$(web_audio.AudioBuffer), []),
    [$suspendFor]: dart.fnType(async.Future, [core.num])
  }));
  dart.setFieldSignature(web_audio.OfflineAudioContext, () => ({
    __proto__: dart.getFields(web_audio.OfflineAudioContext.__proto__),
    [$length]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("OfflineAudioContext", web_audio.OfflineAudioContext);
  web_audio.OscillatorNode = class OscillatorNode$ extends web_audio.AudioScheduledSourceNode {
    static new(context, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return web_audio.OscillatorNode._create_1(context, options_1);
      }
      return web_audio.OscillatorNode._create_2(context);
    }
    static _create_1(context, options) {
      return new OscillatorNode(context, options);
    }
    static _create_2(context) {
      return new OscillatorNode(context);
    }
    get [$detune]() {
      return this.detune;
    }
    get [$frequency]() {
      return this.frequency;
    }
    get [$type]() {
      return this.type;
    }
    set [$type](value) {
      this.type = value;
    }
    [$setPeriodicWave](...args) {
      return this.setPeriodicWave.apply(this, args);
    }
  };
  dart.addTypeTests(web_audio.OscillatorNode);
  const detune$0 = Symbol("OscillatorNode.detune");
  const frequency$ = Symbol("OscillatorNode.frequency");
  const type$43 = Symbol("OscillatorNode.type");
  dart.setMethodSignature(web_audio.OscillatorNode, () => ({
    __proto__: dart.getMethods(web_audio.OscillatorNode.__proto__),
    [$setPeriodicWave]: dart.fnType(dart.void, [web_audio.PeriodicWave])
  }));
  dart.setFieldSignature(web_audio.OscillatorNode, () => ({
    __proto__: dart.getFields(web_audio.OscillatorNode.__proto__),
    [$detune]: dart.finalFieldType(web_audio.AudioParam),
    [$frequency]: dart.finalFieldType(web_audio.AudioParam),
    [$type]: dart.fieldType(core.String)
  }));
  dart.registerExtension("OscillatorNode", web_audio.OscillatorNode);
  dart.registerExtension("Oscillator", web_audio.OscillatorNode);
  web_audio.PannerNode = class PannerNode$ extends web_audio.AudioNode {
    static new(context, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return web_audio.PannerNode._create_1(context, options_1);
      }
      return web_audio.PannerNode._create_2(context);
    }
    static _create_1(context, options) {
      return new PannerNode(context, options);
    }
    static _create_2(context) {
      return new PannerNode(context);
    }
    get [$coneInnerAngle]() {
      return this.coneInnerAngle;
    }
    set [$coneInnerAngle](value) {
      this.coneInnerAngle = value;
    }
    get [$coneOuterAngle]() {
      return this.coneOuterAngle;
    }
    set [$coneOuterAngle](value) {
      this.coneOuterAngle = value;
    }
    get [$coneOuterGain]() {
      return this.coneOuterGain;
    }
    set [$coneOuterGain](value) {
      this.coneOuterGain = value;
    }
    get [$distanceModel]() {
      return this.distanceModel;
    }
    set [$distanceModel](value) {
      this.distanceModel = value;
    }
    get [$maxDistance]() {
      return this.maxDistance;
    }
    set [$maxDistance](value) {
      this.maxDistance = value;
    }
    get [$orientationX]() {
      return this.orientationX;
    }
    get [$orientationY]() {
      return this.orientationY;
    }
    get [$orientationZ]() {
      return this.orientationZ;
    }
    get [$panningModel]() {
      return this.panningModel;
    }
    set [$panningModel](value) {
      this.panningModel = value;
    }
    get [$positionX]() {
      return this.positionX;
    }
    get [$positionY]() {
      return this.positionY;
    }
    get [$positionZ]() {
      return this.positionZ;
    }
    get [$refDistance]() {
      return this.refDistance;
    }
    set [$refDistance](value) {
      this.refDistance = value;
    }
    get [$rolloffFactor]() {
      return this.rolloffFactor;
    }
    set [$rolloffFactor](value) {
      this.rolloffFactor = value;
    }
    [$setOrientation](...args) {
      return this.setOrientation.apply(this, args);
    }
    [$setPosition](...args) {
      return this.setPosition.apply(this, args);
    }
  };
  dart.addTypeTests(web_audio.PannerNode);
  const coneInnerAngle = Symbol("PannerNode.coneInnerAngle");
  const coneOuterAngle = Symbol("PannerNode.coneOuterAngle");
  const coneOuterGain = Symbol("PannerNode.coneOuterGain");
  const distanceModel = Symbol("PannerNode.distanceModel");
  const maxDistance = Symbol("PannerNode.maxDistance");
  const orientationX = Symbol("PannerNode.orientationX");
  const orientationY = Symbol("PannerNode.orientationY");
  const orientationZ = Symbol("PannerNode.orientationZ");
  const panningModel = Symbol("PannerNode.panningModel");
  const positionX$0 = Symbol("PannerNode.positionX");
  const positionY$0 = Symbol("PannerNode.positionY");
  const positionZ$ = Symbol("PannerNode.positionZ");
  const refDistance = Symbol("PannerNode.refDistance");
  const rolloffFactor = Symbol("PannerNode.rolloffFactor");
  dart.setMethodSignature(web_audio.PannerNode, () => ({
    __proto__: dart.getMethods(web_audio.PannerNode.__proto__),
    [$setOrientation]: dart.fnType(dart.void, [core.num, core.num, core.num]),
    [$setPosition]: dart.fnType(dart.void, [core.num, core.num, core.num])
  }));
  dart.setFieldSignature(web_audio.PannerNode, () => ({
    __proto__: dart.getFields(web_audio.PannerNode.__proto__),
    [$coneInnerAngle]: dart.fieldType(core.num),
    [$coneOuterAngle]: dart.fieldType(core.num),
    [$coneOuterGain]: dart.fieldType(core.num),
    [$distanceModel]: dart.fieldType(core.String),
    [$maxDistance]: dart.fieldType(core.num),
    [$orientationX]: dart.finalFieldType(web_audio.AudioParam),
    [$orientationY]: dart.finalFieldType(web_audio.AudioParam),
    [$orientationZ]: dart.finalFieldType(web_audio.AudioParam),
    [$panningModel]: dart.fieldType(core.String),
    [$positionX]: dart.finalFieldType(web_audio.AudioParam),
    [$positionY]: dart.finalFieldType(web_audio.AudioParam),
    [$positionZ]: dart.finalFieldType(web_audio.AudioParam),
    [$refDistance]: dart.fieldType(core.num),
    [$rolloffFactor]: dart.fieldType(core.num)
  }));
  dart.registerExtension("PannerNode", web_audio.PannerNode);
  dart.registerExtension("AudioPannerNode", web_audio.PannerNode);
  dart.registerExtension("webkitAudioPannerNode", web_audio.PannerNode);
  web_audio.PeriodicWave = class PeriodicWave$ extends _interceptors.Interceptor {
    static new(context, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return web_audio.PeriodicWave._create_1(context, options_1);
      }
      return web_audio.PeriodicWave._create_2(context);
    }
    static _create_1(context, options) {
      return new PeriodicWave(context, options);
    }
    static _create_2(context) {
      return new PeriodicWave(context);
    }
  };
  dart.addTypeTests(web_audio.PeriodicWave);
  dart.registerExtension("PeriodicWave", web_audio.PeriodicWave);
  web_audio.ScriptProcessorNode = class ScriptProcessorNode extends web_audio.AudioNode {
    get [$bufferSize]() {
      return this.bufferSize;
    }
    [$setEventListener](...args) {
      return this.setEventListener.apply(this, args);
    }
    get [$onAudioProcess]() {
      return web_audio.ScriptProcessorNode.audioProcessEvent.forTarget(this);
    }
  };
  dart.addTypeTests(web_audio.ScriptProcessorNode);
  const bufferSize = Symbol("ScriptProcessorNode.bufferSize");
  dart.setMethodSignature(web_audio.ScriptProcessorNode, () => ({
    __proto__: dart.getMethods(web_audio.ScriptProcessorNode.__proto__),
    [$setEventListener]: dart.fnType(dart.void, [dart.fnType(dart.dynamic, [html$.Event])])
  }));
  dart.setGetterSignature(web_audio.ScriptProcessorNode, () => ({
    __proto__: dart.getGetters(web_audio.ScriptProcessorNode.__proto__),
    [$onAudioProcess]: async.Stream$(web_audio.AudioProcessingEvent)
  }));
  dart.setFieldSignature(web_audio.ScriptProcessorNode, () => ({
    __proto__: dart.getFields(web_audio.ScriptProcessorNode.__proto__),
    [$bufferSize]: dart.finalFieldType(core.int)
  }));
  dart.defineLazy(web_audio.ScriptProcessorNode, {
    /*web_audio.ScriptProcessorNode.audioProcessEvent*/get audioProcessEvent() {
      return dart.const(new (EventStreamProviderOfAudioProcessingEvent()).new("audioprocess"));
    }
  });
  dart.registerExtension("ScriptProcessorNode", web_audio.ScriptProcessorNode);
  dart.registerExtension("JavaScriptAudioNode", web_audio.ScriptProcessorNode);
  web_audio.StereoPannerNode = class StereoPannerNode$ extends web_audio.AudioNode {
    static new(context, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return web_audio.StereoPannerNode._create_1(context, options_1);
      }
      return web_audio.StereoPannerNode._create_2(context);
    }
    static _create_1(context, options) {
      return new StereoPannerNode(context, options);
    }
    static _create_2(context) {
      return new StereoPannerNode(context);
    }
    get [$pan]() {
      return this.pan;
    }
  };
  dart.addTypeTests(web_audio.StereoPannerNode);
  const pan = Symbol("StereoPannerNode.pan");
  dart.setFieldSignature(web_audio.StereoPannerNode, () => ({
    __proto__: dart.getFields(web_audio.StereoPannerNode.__proto__),
    [$pan]: dart.finalFieldType(web_audio.AudioParam)
  }));
  dart.registerExtension("StereoPannerNode", web_audio.StereoPannerNode);
  web_audio.WaveShaperNode = class WaveShaperNode$ extends web_audio.AudioNode {
    static new(context, options) {
      if (options === void 0) options = null;
      if (options != null) {
        let options_1 = html_common.convertDartToNative_Dictionary(options);
        return web_audio.WaveShaperNode._create_1(context, options_1);
      }
      return web_audio.WaveShaperNode._create_2(context);
    }
    static _create_1(context, options) {
      return new WaveShaperNode(context, options);
    }
    static _create_2(context) {
      return new WaveShaperNode(context);
    }
    get [$curve]() {
      return this.curve;
    }
    set [$curve](value) {
      this.curve = value;
    }
    get [$oversample]() {
      return this.oversample;
    }
    set [$oversample](value) {
      this.oversample = value;
    }
  };
  dart.addTypeTests(web_audio.WaveShaperNode);
  const curve = Symbol("WaveShaperNode.curve");
  const oversample = Symbol("WaveShaperNode.oversample");
  dart.setFieldSignature(web_audio.WaveShaperNode, () => ({
    __proto__: dart.getFields(web_audio.WaveShaperNode.__proto__),
    [$curve]: dart.fieldType(typed_data.Float32List),
    [$oversample]: dart.fieldType(core.String)
  }));
  dart.registerExtension("WaveShaperNode", web_audio.WaveShaperNode);
  web_gl.ActiveInfo = class ActiveInfo extends _interceptors.Interceptor {
    get [$name]() {
      return this.name;
    }
    get [$size]() {
      return this.size;
    }
    get [$type]() {
      return this.type;
    }
  };
  dart.addTypeTests(web_gl.ActiveInfo);
  const name$40 = Symbol("ActiveInfo.name");
  const size$7 = Symbol("ActiveInfo.size");
  const type$44 = Symbol("ActiveInfo.type");
  dart.setFieldSignature(web_gl.ActiveInfo, () => ({
    __proto__: dart.getFields(web_gl.ActiveInfo.__proto__),
    [$name]: dart.finalFieldType(core.String),
    [$size]: dart.finalFieldType(core.int),
    [$type]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("WebGLActiveInfo", web_gl.ActiveInfo);
  web_gl.AngleInstancedArrays = class AngleInstancedArrays extends _interceptors.Interceptor {
    [$drawArraysInstancedAngle](...args) {
      return this.drawArraysInstancedANGLE.apply(this, args);
    }
    [$drawElementsInstancedAngle](...args) {
      return this.drawElementsInstancedANGLE.apply(this, args);
    }
    [$vertexAttribDivisorAngle](...args) {
      return this.vertexAttribDivisorANGLE.apply(this, args);
    }
  };
  dart.addTypeTests(web_gl.AngleInstancedArrays);
  dart.setMethodSignature(web_gl.AngleInstancedArrays, () => ({
    __proto__: dart.getMethods(web_gl.AngleInstancedArrays.__proto__),
    [$drawArraysInstancedAngle]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
    [$drawElementsInstancedAngle]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int]),
    [$vertexAttribDivisorAngle]: dart.fnType(dart.void, [core.int, core.int])
  }));
  dart.defineLazy(web_gl.AngleInstancedArrays, {
    /*web_gl.AngleInstancedArrays.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE*/get VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE() {
      return 35070;
    }
  });
  dart.registerExtension("ANGLEInstancedArrays", web_gl.AngleInstancedArrays);
  dart.registerExtension("ANGLE_instanced_arrays", web_gl.AngleInstancedArrays);
  web_gl.Buffer = class Buffer extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.Buffer);
  dart.registerExtension("WebGLBuffer", web_gl.Buffer);
  web_gl.Canvas = class Canvas extends _interceptors.Interceptor {
    get [$canvas]() {
      return this.canvas;
    }
    get [$offscreenCanvas]() {
      return this.canvas;
    }
  };
  dart.addTypeTests(web_gl.Canvas);
  const canvas$2 = Symbol("Canvas.canvas");
  const offscreenCanvas = Symbol("Canvas.offscreenCanvas");
  dart.setFieldSignature(web_gl.Canvas, () => ({
    __proto__: dart.getFields(web_gl.Canvas.__proto__),
    [$canvas]: dart.finalFieldType(html$.CanvasElement),
    [$offscreenCanvas]: dart.finalFieldType(html$.OffscreenCanvas)
  }));
  dart.registerExtension("WebGLCanvas", web_gl.Canvas);
  web_gl.ColorBufferFloat = class ColorBufferFloat extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.ColorBufferFloat);
  dart.registerExtension("WebGLColorBufferFloat", web_gl.ColorBufferFloat);
  web_gl.CompressedTextureAstc = class CompressedTextureAstc extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.CompressedTextureAstc);
  dart.defineLazy(web_gl.CompressedTextureAstc, {
    /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_10x10_KHR*/get COMPRESSED_RGBA_ASTC_10x10_KHR() {
      return 37819;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_10x5_KHR*/get COMPRESSED_RGBA_ASTC_10x5_KHR() {
      return 37816;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_10x6_KHR*/get COMPRESSED_RGBA_ASTC_10x6_KHR() {
      return 37817;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_10x8_KHR*/get COMPRESSED_RGBA_ASTC_10x8_KHR() {
      return 37818;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_12x10_KHR*/get COMPRESSED_RGBA_ASTC_12x10_KHR() {
      return 37820;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_12x12_KHR*/get COMPRESSED_RGBA_ASTC_12x12_KHR() {
      return 37821;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_4x4_KHR*/get COMPRESSED_RGBA_ASTC_4x4_KHR() {
      return 37808;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_5x4_KHR*/get COMPRESSED_RGBA_ASTC_5x4_KHR() {
      return 37809;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_5x5_KHR*/get COMPRESSED_RGBA_ASTC_5x5_KHR() {
      return 37810;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_6x5_KHR*/get COMPRESSED_RGBA_ASTC_6x5_KHR() {
      return 37811;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_6x6_KHR*/get COMPRESSED_RGBA_ASTC_6x6_KHR() {
      return 37812;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_8x5_KHR*/get COMPRESSED_RGBA_ASTC_8x5_KHR() {
      return 37813;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_8x6_KHR*/get COMPRESSED_RGBA_ASTC_8x6_KHR() {
      return 37814;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_8x8_KHR*/get COMPRESSED_RGBA_ASTC_8x8_KHR() {
      return 37815;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR() {
      return 37851;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR() {
      return 37848;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR() {
      return 37849;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR() {
      return 37850;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR() {
      return 37852;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR() {
      return 37853;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR() {
      return 37840;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR() {
      return 37841;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR() {
      return 37842;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR() {
      return 37843;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR() {
      return 37844;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR() {
      return 37845;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR() {
      return 37846;
    },
    /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR() {
      return 37847;
    }
  });
  dart.registerExtension("WebGLCompressedTextureASTC", web_gl.CompressedTextureAstc);
  web_gl.CompressedTextureAtc = class CompressedTextureAtc extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.CompressedTextureAtc);
  dart.defineLazy(web_gl.CompressedTextureAtc, {
    /*web_gl.CompressedTextureAtc.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL*/get COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL() {
      return 35987;
    },
    /*web_gl.CompressedTextureAtc.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL*/get COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL() {
      return 34798;
    },
    /*web_gl.CompressedTextureAtc.COMPRESSED_RGB_ATC_WEBGL*/get COMPRESSED_RGB_ATC_WEBGL() {
      return 35986;
    }
  });
  dart.registerExtension("WebGLCompressedTextureATC", web_gl.CompressedTextureAtc);
  dart.registerExtension("WEBGL_compressed_texture_atc", web_gl.CompressedTextureAtc);
  web_gl.CompressedTextureETC1 = class CompressedTextureETC1 extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.CompressedTextureETC1);
  dart.defineLazy(web_gl.CompressedTextureETC1, {
    /*web_gl.CompressedTextureETC1.COMPRESSED_RGB_ETC1_WEBGL*/get COMPRESSED_RGB_ETC1_WEBGL() {
      return 36196;
    }
  });
  dart.registerExtension("WebGLCompressedTextureETC1", web_gl.CompressedTextureETC1);
  dart.registerExtension("WEBGL_compressed_texture_etc1", web_gl.CompressedTextureETC1);
  web_gl.CompressedTextureEtc = class CompressedTextureEtc extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.CompressedTextureEtc);
  dart.defineLazy(web_gl.CompressedTextureEtc, {
    /*web_gl.CompressedTextureEtc.COMPRESSED_R11_EAC*/get COMPRESSED_R11_EAC() {
      return 37488;
    },
    /*web_gl.CompressedTextureEtc.COMPRESSED_RG11_EAC*/get COMPRESSED_RG11_EAC() {
      return 37490;
    },
    /*web_gl.CompressedTextureEtc.COMPRESSED_RGB8_ETC2*/get COMPRESSED_RGB8_ETC2() {
      return 37492;
    },
    /*web_gl.CompressedTextureEtc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2*/get COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2() {
      return 37494;
    },
    /*web_gl.CompressedTextureEtc.COMPRESSED_RGBA8_ETC2_EAC*/get COMPRESSED_RGBA8_ETC2_EAC() {
      return 37496;
    },
    /*web_gl.CompressedTextureEtc.COMPRESSED_SIGNED_R11_EAC*/get COMPRESSED_SIGNED_R11_EAC() {
      return 37489;
    },
    /*web_gl.CompressedTextureEtc.COMPRESSED_SIGNED_RG11_EAC*/get COMPRESSED_SIGNED_RG11_EAC() {
      return 37491;
    },
    /*web_gl.CompressedTextureEtc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC*/get COMPRESSED_SRGB8_ALPHA8_ETC2_EAC() {
      return 37497;
    },
    /*web_gl.CompressedTextureEtc.COMPRESSED_SRGB8_ETC2*/get COMPRESSED_SRGB8_ETC2() {
      return 37493;
    },
    /*web_gl.CompressedTextureEtc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2*/get COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2() {
      return 37495;
    }
  });
  dart.registerExtension("WebGLCompressedTextureETC", web_gl.CompressedTextureEtc);
  web_gl.CompressedTexturePvrtc = class CompressedTexturePvrtc extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.CompressedTexturePvrtc);
  dart.defineLazy(web_gl.CompressedTexturePvrtc, {
    /*web_gl.CompressedTexturePvrtc.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG*/get COMPRESSED_RGBA_PVRTC_2BPPV1_IMG() {
      return 35843;
    },
    /*web_gl.CompressedTexturePvrtc.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG*/get COMPRESSED_RGBA_PVRTC_4BPPV1_IMG() {
      return 35842;
    },
    /*web_gl.CompressedTexturePvrtc.COMPRESSED_RGB_PVRTC_2BPPV1_IMG*/get COMPRESSED_RGB_PVRTC_2BPPV1_IMG() {
      return 35841;
    },
    /*web_gl.CompressedTexturePvrtc.COMPRESSED_RGB_PVRTC_4BPPV1_IMG*/get COMPRESSED_RGB_PVRTC_4BPPV1_IMG() {
      return 35840;
    }
  });
  dart.registerExtension("WebGLCompressedTexturePVRTC", web_gl.CompressedTexturePvrtc);
  dart.registerExtension("WEBGL_compressed_texture_pvrtc", web_gl.CompressedTexturePvrtc);
  web_gl.CompressedTextureS3TC = class CompressedTextureS3TC extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.CompressedTextureS3TC);
  dart.defineLazy(web_gl.CompressedTextureS3TC, {
    /*web_gl.CompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT1_EXT*/get COMPRESSED_RGBA_S3TC_DXT1_EXT() {
      return 33777;
    },
    /*web_gl.CompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT3_EXT*/get COMPRESSED_RGBA_S3TC_DXT3_EXT() {
      return 33778;
    },
    /*web_gl.CompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT5_EXT*/get COMPRESSED_RGBA_S3TC_DXT5_EXT() {
      return 33779;
    },
    /*web_gl.CompressedTextureS3TC.COMPRESSED_RGB_S3TC_DXT1_EXT*/get COMPRESSED_RGB_S3TC_DXT1_EXT() {
      return 33776;
    }
  });
  dart.registerExtension("WebGLCompressedTextureS3TC", web_gl.CompressedTextureS3TC);
  dart.registerExtension("WEBGL_compressed_texture_s3tc", web_gl.CompressedTextureS3TC);
  web_gl.CompressedTextureS3TCsRgb = class CompressedTextureS3TCsRgb extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.CompressedTextureS3TCsRgb);
  dart.defineLazy(web_gl.CompressedTextureS3TCsRgb, {
    /*web_gl.CompressedTextureS3TCsRgb.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT*/get COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT() {
      return 35917;
    },
    /*web_gl.CompressedTextureS3TCsRgb.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT*/get COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT() {
      return 35918;
    },
    /*web_gl.CompressedTextureS3TCsRgb.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT*/get COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT() {
      return 35919;
    },
    /*web_gl.CompressedTextureS3TCsRgb.COMPRESSED_SRGB_S3TC_DXT1_EXT*/get COMPRESSED_SRGB_S3TC_DXT1_EXT() {
      return 35916;
    }
  });
  dart.registerExtension("WebGLCompressedTextureS3TCsRGB", web_gl.CompressedTextureS3TCsRgb);
  web_gl.ContextEvent = class ContextEvent extends html$.Event {
    static new(type, eventInit) {
      if (eventInit === void 0) eventInit = null;
      if (eventInit != null) {
        let eventInit_1 = html_common.convertDartToNative_Dictionary(eventInit);
        return web_gl.ContextEvent._create_1(type, eventInit_1);
      }
      return web_gl.ContextEvent._create_2(type);
    }
    static _create_1(type, eventInit) {
      return new WebGLContextEvent(type, eventInit);
    }
    static _create_2(type) {
      return new WebGLContextEvent(type);
    }
    get [$statusMessage]() {
      return this.statusMessage;
    }
  };
  dart.addTypeTests(web_gl.ContextEvent);
  const statusMessage = Symbol("ContextEvent.statusMessage");
  dart.setFieldSignature(web_gl.ContextEvent, () => ({
    __proto__: dart.getFields(web_gl.ContextEvent.__proto__),
    [$statusMessage]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("WebGLContextEvent", web_gl.ContextEvent);
  web_gl.DebugRendererInfo = class DebugRendererInfo extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.DebugRendererInfo);
  dart.defineLazy(web_gl.DebugRendererInfo, {
    /*web_gl.DebugRendererInfo.UNMASKED_RENDERER_WEBGL*/get UNMASKED_RENDERER_WEBGL() {
      return 37446;
    },
    /*web_gl.DebugRendererInfo.UNMASKED_VENDOR_WEBGL*/get UNMASKED_VENDOR_WEBGL() {
      return 37445;
    }
  });
  dart.registerExtension("WebGLDebugRendererInfo", web_gl.DebugRendererInfo);
  dart.registerExtension("WEBGL_debug_renderer_info", web_gl.DebugRendererInfo);
  web_gl.DebugShaders = class DebugShaders extends _interceptors.Interceptor {
    [$getTranslatedShaderSource](...args) {
      return this.getTranslatedShaderSource.apply(this, args);
    }
  };
  dart.addTypeTests(web_gl.DebugShaders);
  dart.setMethodSignature(web_gl.DebugShaders, () => ({
    __proto__: dart.getMethods(web_gl.DebugShaders.__proto__),
    [$getTranslatedShaderSource]: dart.fnType(core.String, [web_gl.Shader])
  }));
  dart.registerExtension("WebGLDebugShaders", web_gl.DebugShaders);
  dart.registerExtension("WEBGL_debug_shaders", web_gl.DebugShaders);
  web_gl.DepthTexture = class DepthTexture extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.DepthTexture);
  dart.defineLazy(web_gl.DepthTexture, {
    /*web_gl.DepthTexture.UNSIGNED_INT_24_8_WEBGL*/get UNSIGNED_INT_24_8_WEBGL() {
      return 34042;
    }
  });
  dart.registerExtension("WebGLDepthTexture", web_gl.DepthTexture);
  dart.registerExtension("WEBGL_depth_texture", web_gl.DepthTexture);
  web_gl.DrawBuffers = class DrawBuffers extends _interceptors.Interceptor {
    [$drawBuffersWebgl](...args) {
      return this.drawBuffersWEBGL.apply(this, args);
    }
  };
  dart.addTypeTests(web_gl.DrawBuffers);
  dart.setMethodSignature(web_gl.DrawBuffers, () => ({
    __proto__: dart.getMethods(web_gl.DrawBuffers.__proto__),
    [$drawBuffersWebgl]: dart.fnType(dart.void, [core.List$(core.int)])
  }));
  dart.registerExtension("WebGLDrawBuffers", web_gl.DrawBuffers);
  dart.registerExtension("WEBGL_draw_buffers", web_gl.DrawBuffers);
  web_gl.EXTsRgb = class EXTsRgb extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.EXTsRgb);
  dart.defineLazy(web_gl.EXTsRgb, {
    /*web_gl.EXTsRgb.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT*/get FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT() {
      return 33296;
    },
    /*web_gl.EXTsRgb.SRGB8_ALPHA8_EXT*/get SRGB8_ALPHA8_EXT() {
      return 35907;
    },
    /*web_gl.EXTsRgb.SRGB_ALPHA_EXT*/get SRGB_ALPHA_EXT() {
      return 35906;
    },
    /*web_gl.EXTsRgb.SRGB_EXT*/get SRGB_EXT() {
      return 35904;
    }
  });
  dart.registerExtension("EXTsRGB", web_gl.EXTsRgb);
  dart.registerExtension("EXT_sRGB", web_gl.EXTsRgb);
  web_gl.ExtBlendMinMax = class ExtBlendMinMax extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.ExtBlendMinMax);
  dart.defineLazy(web_gl.ExtBlendMinMax, {
    /*web_gl.ExtBlendMinMax.MAX_EXT*/get MAX_EXT() {
      return 32776;
    },
    /*web_gl.ExtBlendMinMax.MIN_EXT*/get MIN_EXT() {
      return 32775;
    }
  });
  dart.registerExtension("EXTBlendMinMax", web_gl.ExtBlendMinMax);
  dart.registerExtension("EXT_blend_minmax", web_gl.ExtBlendMinMax);
  web_gl.ExtColorBufferFloat = class ExtColorBufferFloat extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.ExtColorBufferFloat);
  dart.registerExtension("EXTColorBufferFloat", web_gl.ExtColorBufferFloat);
  web_gl.ExtColorBufferHalfFloat = class ExtColorBufferHalfFloat extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.ExtColorBufferHalfFloat);
  dart.registerExtension("EXTColorBufferHalfFloat", web_gl.ExtColorBufferHalfFloat);
  web_gl.ExtDisjointTimerQuery = class ExtDisjointTimerQuery extends _interceptors.Interceptor {
    [$beginQueryExt](...args) {
      return this.beginQueryEXT.apply(this, args);
    }
    [$createQueryExt](...args) {
      return this.createQueryEXT.apply(this, args);
    }
    [$deleteQueryExt](...args) {
      return this.deleteQueryEXT.apply(this, args);
    }
    [$endQueryExt](...args) {
      return this.endQueryEXT.apply(this, args);
    }
    [$getQueryExt](...args) {
      return this.getQueryEXT.apply(this, args);
    }
    [$getQueryObjectExt](...args) {
      return this.getQueryObjectEXT.apply(this, args);
    }
    [$isQueryExt](...args) {
      return this.isQueryEXT.apply(this, args);
    }
    [$queryCounterExt](...args) {
      return this.queryCounterEXT.apply(this, args);
    }
  };
  dart.addTypeTests(web_gl.ExtDisjointTimerQuery);
  dart.setMethodSignature(web_gl.ExtDisjointTimerQuery, () => ({
    __proto__: dart.getMethods(web_gl.ExtDisjointTimerQuery.__proto__),
    [$beginQueryExt]: dart.fnType(dart.void, [core.int, web_gl.TimerQueryExt]),
    [$createQueryExt]: dart.fnType(web_gl.TimerQueryExt, []),
    [$deleteQueryExt]: dart.fnType(dart.void, [web_gl.TimerQueryExt]),
    [$endQueryExt]: dart.fnType(dart.void, [core.int]),
    [$getQueryExt]: dart.fnType(core.Object, [core.int, core.int]),
    [$getQueryObjectExt]: dart.fnType(core.Object, [web_gl.TimerQueryExt, core.int]),
    [$isQueryExt]: dart.fnType(core.bool, [web_gl.TimerQueryExt]),
    [$queryCounterExt]: dart.fnType(dart.void, [web_gl.TimerQueryExt, core.int])
  }));
  dart.defineLazy(web_gl.ExtDisjointTimerQuery, {
    /*web_gl.ExtDisjointTimerQuery.CURRENT_QUERY_EXT*/get CURRENT_QUERY_EXT() {
      return 34917;
    },
    /*web_gl.ExtDisjointTimerQuery.GPU_DISJOINT_EXT*/get GPU_DISJOINT_EXT() {
      return 36795;
    },
    /*web_gl.ExtDisjointTimerQuery.QUERY_COUNTER_BITS_EXT*/get QUERY_COUNTER_BITS_EXT() {
      return 34916;
    },
    /*web_gl.ExtDisjointTimerQuery.QUERY_RESULT_AVAILABLE_EXT*/get QUERY_RESULT_AVAILABLE_EXT() {
      return 34919;
    },
    /*web_gl.ExtDisjointTimerQuery.QUERY_RESULT_EXT*/get QUERY_RESULT_EXT() {
      return 34918;
    },
    /*web_gl.ExtDisjointTimerQuery.TIMESTAMP_EXT*/get TIMESTAMP_EXT() {
      return 36392;
    },
    /*web_gl.ExtDisjointTimerQuery.TIME_ELAPSED_EXT*/get TIME_ELAPSED_EXT() {
      return 35007;
    }
  });
  dart.registerExtension("EXTDisjointTimerQuery", web_gl.ExtDisjointTimerQuery);
  web_gl.ExtDisjointTimerQueryWebGL2 = class ExtDisjointTimerQueryWebGL2 extends _interceptors.Interceptor {
    [$queryCounterExt](...args) {
      return this.queryCounterEXT.apply(this, args);
    }
  };
  dart.addTypeTests(web_gl.ExtDisjointTimerQueryWebGL2);
  dart.setMethodSignature(web_gl.ExtDisjointTimerQueryWebGL2, () => ({
    __proto__: dart.getMethods(web_gl.ExtDisjointTimerQueryWebGL2.__proto__),
    [$queryCounterExt]: dart.fnType(dart.void, [web_gl.Query, core.int])
  }));
  dart.defineLazy(web_gl.ExtDisjointTimerQueryWebGL2, {
    /*web_gl.ExtDisjointTimerQueryWebGL2.GPU_DISJOINT_EXT*/get GPU_DISJOINT_EXT() {
      return 36795;
    },
    /*web_gl.ExtDisjointTimerQueryWebGL2.QUERY_COUNTER_BITS_EXT*/get QUERY_COUNTER_BITS_EXT() {
      return 34916;
    },
    /*web_gl.ExtDisjointTimerQueryWebGL2.TIMESTAMP_EXT*/get TIMESTAMP_EXT() {
      return 36392;
    },
    /*web_gl.ExtDisjointTimerQueryWebGL2.TIME_ELAPSED_EXT*/get TIME_ELAPSED_EXT() {
      return 35007;
    }
  });
  dart.registerExtension("EXTDisjointTimerQueryWebGL2", web_gl.ExtDisjointTimerQueryWebGL2);
  web_gl.ExtFragDepth = class ExtFragDepth extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.ExtFragDepth);
  dart.registerExtension("EXTFragDepth", web_gl.ExtFragDepth);
  dart.registerExtension("EXT_frag_depth", web_gl.ExtFragDepth);
  web_gl.ExtShaderTextureLod = class ExtShaderTextureLod extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.ExtShaderTextureLod);
  dart.registerExtension("EXTShaderTextureLOD", web_gl.ExtShaderTextureLod);
  dart.registerExtension("EXT_shader_texture_lod", web_gl.ExtShaderTextureLod);
  web_gl.ExtTextureFilterAnisotropic = class ExtTextureFilterAnisotropic extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.ExtTextureFilterAnisotropic);
  dart.defineLazy(web_gl.ExtTextureFilterAnisotropic, {
    /*web_gl.ExtTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT*/get MAX_TEXTURE_MAX_ANISOTROPY_EXT() {
      return 34047;
    },
    /*web_gl.ExtTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT*/get TEXTURE_MAX_ANISOTROPY_EXT() {
      return 34046;
    }
  });
  dart.registerExtension("EXTTextureFilterAnisotropic", web_gl.ExtTextureFilterAnisotropic);
  dart.registerExtension("EXT_texture_filter_anisotropic", web_gl.ExtTextureFilterAnisotropic);
  web_gl.Framebuffer = class Framebuffer extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.Framebuffer);
  dart.registerExtension("WebGLFramebuffer", web_gl.Framebuffer);
  web_gl.GetBufferSubDataAsync = class GetBufferSubDataAsync extends _interceptors.Interceptor {
    [$getBufferSubDataAsync](target, srcByteOffset, dstData, dstOffset, length) {
      if (dstOffset === void 0) dstOffset = null;
      if (length === void 0) length = null;
      return html$.promiseToFuture(dart.dynamic, this.getBufferSubDataAsync(target, srcByteOffset, dstData, dstOffset, length));
    }
  };
  dart.addTypeTests(web_gl.GetBufferSubDataAsync);
  dart.setMethodSignature(web_gl.GetBufferSubDataAsync, () => ({
    __proto__: dart.getMethods(web_gl.GetBufferSubDataAsync.__proto__),
    [$getBufferSubDataAsync]: dart.fnType(async.Future, [core.int, core.int, typed_data.TypedData], [core.int, core.int])
  }));
  dart.registerExtension("WebGLGetBufferSubDataAsync", web_gl.GetBufferSubDataAsync);
  web_gl.LoseContext = class LoseContext extends _interceptors.Interceptor {
    [$loseContext](...args) {
      return this.loseContext.apply(this, args);
    }
    [$restoreContext](...args) {
      return this.restoreContext.apply(this, args);
    }
  };
  dart.addTypeTests(web_gl.LoseContext);
  dart.setMethodSignature(web_gl.LoseContext, () => ({
    __proto__: dart.getMethods(web_gl.LoseContext.__proto__),
    [$loseContext]: dart.fnType(dart.void, []),
    [$restoreContext]: dart.fnType(dart.void, [])
  }));
  dart.registerExtension("WebGLLoseContext", web_gl.LoseContext);
  dart.registerExtension("WebGLExtensionLoseContext", web_gl.LoseContext);
  dart.registerExtension("WEBGL_lose_context", web_gl.LoseContext);
  web_gl.OesElementIndexUint = class OesElementIndexUint extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.OesElementIndexUint);
  dart.registerExtension("OESElementIndexUint", web_gl.OesElementIndexUint);
  dart.registerExtension("OES_element_index_uint", web_gl.OesElementIndexUint);
  web_gl.OesStandardDerivatives = class OesStandardDerivatives extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.OesStandardDerivatives);
  dart.defineLazy(web_gl.OesStandardDerivatives, {
    /*web_gl.OesStandardDerivatives.FRAGMENT_SHADER_DERIVATIVE_HINT_OES*/get FRAGMENT_SHADER_DERIVATIVE_HINT_OES() {
      return 35723;
    }
  });
  dart.registerExtension("OESStandardDerivatives", web_gl.OesStandardDerivatives);
  dart.registerExtension("OES_standard_derivatives", web_gl.OesStandardDerivatives);
  web_gl.OesTextureFloat = class OesTextureFloat extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.OesTextureFloat);
  dart.registerExtension("OESTextureFloat", web_gl.OesTextureFloat);
  dart.registerExtension("OES_texture_float", web_gl.OesTextureFloat);
  web_gl.OesTextureFloatLinear = class OesTextureFloatLinear extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.OesTextureFloatLinear);
  dart.registerExtension("OESTextureFloatLinear", web_gl.OesTextureFloatLinear);
  dart.registerExtension("OES_texture_float_linear", web_gl.OesTextureFloatLinear);
  web_gl.OesTextureHalfFloat = class OesTextureHalfFloat extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.OesTextureHalfFloat);
  dart.defineLazy(web_gl.OesTextureHalfFloat, {
    /*web_gl.OesTextureHalfFloat.HALF_FLOAT_OES*/get HALF_FLOAT_OES() {
      return 36193;
    }
  });
  dart.registerExtension("OESTextureHalfFloat", web_gl.OesTextureHalfFloat);
  dart.registerExtension("OES_texture_half_float", web_gl.OesTextureHalfFloat);
  web_gl.OesTextureHalfFloatLinear = class OesTextureHalfFloatLinear extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.OesTextureHalfFloatLinear);
  dart.registerExtension("OESTextureHalfFloatLinear", web_gl.OesTextureHalfFloatLinear);
  dart.registerExtension("OES_texture_half_float_linear", web_gl.OesTextureHalfFloatLinear);
  web_gl.OesVertexArrayObject = class OesVertexArrayObject extends _interceptors.Interceptor {
    [$bindVertexArray](...args) {
      return this.bindVertexArrayOES.apply(this, args);
    }
    [$createVertexArray](...args) {
      return this.createVertexArrayOES.apply(this, args);
    }
    [$deleteVertexArray](...args) {
      return this.deleteVertexArrayOES.apply(this, args);
    }
    [$isVertexArray](...args) {
      return this.isVertexArrayOES.apply(this, args);
    }
  };
  dart.addTypeTests(web_gl.OesVertexArrayObject);
  dart.setMethodSignature(web_gl.OesVertexArrayObject, () => ({
    __proto__: dart.getMethods(web_gl.OesVertexArrayObject.__proto__),
    [$bindVertexArray]: dart.fnType(dart.void, [web_gl.VertexArrayObjectOes]),
    [$createVertexArray]: dart.fnType(web_gl.VertexArrayObjectOes, []),
    [$deleteVertexArray]: dart.fnType(dart.void, [web_gl.VertexArrayObjectOes]),
    [$isVertexArray]: dart.fnType(core.bool, [web_gl.VertexArrayObjectOes])
  }));
  dart.defineLazy(web_gl.OesVertexArrayObject, {
    /*web_gl.OesVertexArrayObject.VERTEX_ARRAY_BINDING_OES*/get VERTEX_ARRAY_BINDING_OES() {
      return 34229;
    }
  });
  dart.registerExtension("OESVertexArrayObject", web_gl.OesVertexArrayObject);
  dart.registerExtension("OES_vertex_array_object", web_gl.OesVertexArrayObject);
  web_gl.Program = class Program extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.Program);
  dart.registerExtension("WebGLProgram", web_gl.Program);
  web_gl.Query = class Query extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.Query);
  dart.registerExtension("WebGLQuery", web_gl.Query);
  web_gl.Renderbuffer = class Renderbuffer extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.Renderbuffer);
  dart.registerExtension("WebGLRenderbuffer", web_gl.Renderbuffer);
  const _getContextAttributes_1$ = Symbol('_getContextAttributes_1');
  const _readPixels = Symbol('_readPixels');
  const _texImage2D_1 = Symbol('_texImage2D_1');
  const _texImage2D_2 = Symbol('_texImage2D_2');
  const _texImage2D_3 = Symbol('_texImage2D_3');
  const _texImage2D_4 = Symbol('_texImage2D_4');
  const _texImage2D_5 = Symbol('_texImage2D_5');
  const _texImage2D_6 = Symbol('_texImage2D_6');
  const _texSubImage2D_1 = Symbol('_texSubImage2D_1');
  const _texSubImage2D_2 = Symbol('_texSubImage2D_2');
  const _texSubImage2D_3 = Symbol('_texSubImage2D_3');
  const _texSubImage2D_4 = Symbol('_texSubImage2D_4');
  const _texSubImage2D_5 = Symbol('_texSubImage2D_5');
  const _texSubImage2D_6 = Symbol('_texSubImage2D_6');
  web_gl.RenderingContext = class RenderingContext extends _interceptors.Interceptor {
    static get supported() {
      return !!window.WebGLRenderingContext;
    }
    get [$canvas]() {
      return this.canvas;
    }
    get [$drawingBufferHeight]() {
      return this.drawingBufferHeight;
    }
    get [$drawingBufferWidth]() {
      return this.drawingBufferWidth;
    }
    [$activeTexture](...args) {
      return this.activeTexture.apply(this, args);
    }
    [$attachShader](...args) {
      return this.attachShader.apply(this, args);
    }
    [$bindAttribLocation](...args) {
      return this.bindAttribLocation.apply(this, args);
    }
    [$bindBuffer](...args) {
      return this.bindBuffer.apply(this, args);
    }
    [$bindFramebuffer](...args) {
      return this.bindFramebuffer.apply(this, args);
    }
    [$bindRenderbuffer](...args) {
      return this.bindRenderbuffer.apply(this, args);
    }
    [$bindTexture](...args) {
      return this.bindTexture.apply(this, args);
    }
    [$blendColor](...args) {
      return this.blendColor.apply(this, args);
    }
    [$blendEquation](...args) {
      return this.blendEquation.apply(this, args);
    }
    [$blendEquationSeparate](...args) {
      return this.blendEquationSeparate.apply(this, args);
    }
    [$blendFunc](...args) {
      return this.blendFunc.apply(this, args);
    }
    [$blendFuncSeparate](...args) {
      return this.blendFuncSeparate.apply(this, args);
    }
    [$bufferData](...args) {
      return this.bufferData.apply(this, args);
    }
    [$bufferSubData](...args) {
      return this.bufferSubData.apply(this, args);
    }
    [$checkFramebufferStatus](...args) {
      return this.checkFramebufferStatus.apply(this, args);
    }
    [$clear](...args) {
      return this.clear.apply(this, args);
    }
    [$clearColor](...args) {
      return this.clearColor.apply(this, args);
    }
    [$clearDepth](...args) {
      return this.clearDepth.apply(this, args);
    }
    [$clearStencil](...args) {
      return this.clearStencil.apply(this, args);
    }
    [$colorMask](...args) {
      return this.colorMask.apply(this, args);
    }
    [$commit]() {
      return html$.promiseToFuture(dart.dynamic, this.commit());
    }
    [$compileShader](...args) {
      return this.compileShader.apply(this, args);
    }
    [$compressedTexImage2D](...args) {
      return this.compressedTexImage2D.apply(this, args);
    }
    [$compressedTexSubImage2D](...args) {
      return this.compressedTexSubImage2D.apply(this, args);
    }
    [$copyTexImage2D](...args) {
      return this.copyTexImage2D.apply(this, args);
    }
    [$copyTexSubImage2D](...args) {
      return this.copyTexSubImage2D.apply(this, args);
    }
    [$createBuffer](...args) {
      return this.createBuffer.apply(this, args);
    }
    [$createFramebuffer](...args) {
      return this.createFramebuffer.apply(this, args);
    }
    [$createProgram](...args) {
      return this.createProgram.apply(this, args);
    }
    [$createRenderbuffer](...args) {
      return this.createRenderbuffer.apply(this, args);
    }
    [$createShader](...args) {
      return this.createShader.apply(this, args);
    }
    [$createTexture](...args) {
      return this.createTexture.apply(this, args);
    }
    [$cullFace](...args) {
      return this.cullFace.apply(this, args);
    }
    [$deleteBuffer](...args) {
      return this.deleteBuffer.apply(this, args);
    }
    [$deleteFramebuffer](...args) {
      return this.deleteFramebuffer.apply(this, args);
    }
    [$deleteProgram](...args) {
      return this.deleteProgram.apply(this, args);
    }
    [$deleteRenderbuffer](...args) {
      return this.deleteRenderbuffer.apply(this, args);
    }
    [$deleteShader](...args) {
      return this.deleteShader.apply(this, args);
    }
    [$deleteTexture](...args) {
      return this.deleteTexture.apply(this, args);
    }
    [$depthFunc](...args) {
      return this.depthFunc.apply(this, args);
    }
    [$depthMask](...args) {
      return this.depthMask.apply(this, args);
    }
    [$depthRange](...args) {
      return this.depthRange.apply(this, args);
    }
    [$detachShader](...args) {
      return this.detachShader.apply(this, args);
    }
    [$disable](...args) {
      return this.disable.apply(this, args);
    }
    [$disableVertexAttribArray](...args) {
      return this.disableVertexAttribArray.apply(this, args);
    }
    [$drawArrays](...args) {
      return this.drawArrays.apply(this, args);
    }
    [$drawElements](...args) {
      return this.drawElements.apply(this, args);
    }
    [$enable](...args) {
      return this.enable.apply(this, args);
    }
    [$enableVertexAttribArray](...args) {
      return this.enableVertexAttribArray.apply(this, args);
    }
    [$finish](...args) {
      return this.finish.apply(this, args);
    }
    [$flush](...args) {
      return this.flush.apply(this, args);
    }
    [$framebufferRenderbuffer](...args) {
      return this.framebufferRenderbuffer.apply(this, args);
    }
    [$framebufferTexture2D](...args) {
      return this.framebufferTexture2D.apply(this, args);
    }
    [$frontFace](...args) {
      return this.frontFace.apply(this, args);
    }
    [$generateMipmap](...args) {
      return this.generateMipmap.apply(this, args);
    }
    [$getActiveAttrib](...args) {
      return this.getActiveAttrib.apply(this, args);
    }
    [$getActiveUniform](...args) {
      return this.getActiveUniform.apply(this, args);
    }
    [$getAttachedShaders](...args) {
      return this.getAttachedShaders.apply(this, args);
    }
    [$getAttribLocation](...args) {
      return this.getAttribLocation.apply(this, args);
    }
    [$getBufferParameter](...args) {
      return this.getBufferParameter.apply(this, args);
    }
    [$getContextAttributes]() {
      return html_common.convertNativeToDart_Dictionary(this[_getContextAttributes_1$]());
    }
    [_getContextAttributes_1$](...args) {
      return this.getContextAttributes.apply(this, args);
    }
    [$getError](...args) {
      return this.getError.apply(this, args);
    }
    [$getExtension](...args) {
      return this.getExtension.apply(this, args);
    }
    [$getFramebufferAttachmentParameter](...args) {
      return this.getFramebufferAttachmentParameter.apply(this, args);
    }
    [$getParameter](...args) {
      return this.getParameter.apply(this, args);
    }
    [$getProgramInfoLog](...args) {
      return this.getProgramInfoLog.apply(this, args);
    }
    [$getProgramParameter](...args) {
      return this.getProgramParameter.apply(this, args);
    }
    [$getRenderbufferParameter](...args) {
      return this.getRenderbufferParameter.apply(this, args);
    }
    [$getShaderInfoLog](...args) {
      return this.getShaderInfoLog.apply(this, args);
    }
    [$getShaderParameter](...args) {
      return this.getShaderParameter.apply(this, args);
    }
    [$getShaderPrecisionFormat](...args) {
      return this.getShaderPrecisionFormat.apply(this, args);
    }
    [$getShaderSource](...args) {
      return this.getShaderSource.apply(this, args);
    }
    [$getSupportedExtensions](...args) {
      return this.getSupportedExtensions.apply(this, args);
    }
    [$getTexParameter](...args) {
      return this.getTexParameter.apply(this, args);
    }
    [$getUniform](...args) {
      return this.getUniform.apply(this, args);
    }
    [$getUniformLocation](...args) {
      return this.getUniformLocation.apply(this, args);
    }
    [$getVertexAttrib](...args) {
      return this.getVertexAttrib.apply(this, args);
    }
    [$getVertexAttribOffset](...args) {
      return this.getVertexAttribOffset.apply(this, args);
    }
    [$hint](...args) {
      return this.hint.apply(this, args);
    }
    [$isBuffer](...args) {
      return this.isBuffer.apply(this, args);
    }
    [$isContextLost](...args) {
      return this.isContextLost.apply(this, args);
    }
    [$isEnabled](...args) {
      return this.isEnabled.apply(this, args);
    }
    [$isFramebuffer](...args) {
      return this.isFramebuffer.apply(this, args);
    }
    [$isProgram](...args) {
      return this.isProgram.apply(this, args);
    }
    [$isRenderbuffer](...args) {
      return this.isRenderbuffer.apply(this, args);
    }
    [$isShader](...args) {
      return this.isShader.apply(this, args);
    }
    [$isTexture](...args) {
      return this.isTexture.apply(this, args);
    }
    [$lineWidth](...args) {
      return this.lineWidth.apply(this, args);
    }
    [$linkProgram](...args) {
      return this.linkProgram.apply(this, args);
    }
    [$pixelStorei](...args) {
      return this.pixelStorei.apply(this, args);
    }
    [$polygonOffset](...args) {
      return this.polygonOffset.apply(this, args);
    }
    [_readPixels](...args) {
      return this.readPixels.apply(this, args);
    }
    [$renderbufferStorage](...args) {
      return this.renderbufferStorage.apply(this, args);
    }
    [$sampleCoverage](...args) {
      return this.sampleCoverage.apply(this, args);
    }
    [$scissor](...args) {
      return this.scissor.apply(this, args);
    }
    [$shaderSource](...args) {
      return this.shaderSource.apply(this, args);
    }
    [$stencilFunc](...args) {
      return this.stencilFunc.apply(this, args);
    }
    [$stencilFuncSeparate](...args) {
      return this.stencilFuncSeparate.apply(this, args);
    }
    [$stencilMask](...args) {
      return this.stencilMask.apply(this, args);
    }
    [$stencilMaskSeparate](...args) {
      return this.stencilMaskSeparate.apply(this, args);
    }
    [$stencilOp](...args) {
      return this.stencilOp.apply(this, args);
    }
    [$stencilOpSeparate](...args) {
      return this.stencilOpSeparate.apply(this, args);
    }
    [$texImage2D](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels) {
      if (format === void 0) format = null;
      if (type === void 0) type = null;
      if (pixels === void 0) pixels = null;
      if (type != null && format != null && core.int.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video)) {
        this[_texImage2D_1](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels);
        return;
      }
      if (html$.ImageData.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
        let pixels_1 = html_common.convertDartToNative_ImageData(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
        this[_texImage2D_2](target, level, internalformat, format_OR_width, height_OR_type, pixels_1);
        return;
      }
      if (html$.ImageElement.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
        this[_texImage2D_3](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
        return;
      }
      if (html$.CanvasElement.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
        this[_texImage2D_4](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
        return;
      }
      if (html$.VideoElement.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
        this[_texImage2D_5](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
        return;
      }
      if (html$.ImageBitmap.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
        this[_texImage2D_6](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
        return;
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_texImage2D_1](...args) {
      return this.texImage2D.apply(this, args);
    }
    [_texImage2D_2](...args) {
      return this.texImage2D.apply(this, args);
    }
    [_texImage2D_3](...args) {
      return this.texImage2D.apply(this, args);
    }
    [_texImage2D_4](...args) {
      return this.texImage2D.apply(this, args);
    }
    [_texImage2D_5](...args) {
      return this.texImage2D.apply(this, args);
    }
    [_texImage2D_6](...args) {
      return this.texImage2D.apply(this, args);
    }
    [$texParameterf](...args) {
      return this.texParameterf.apply(this, args);
    }
    [$texParameteri](...args) {
      return this.texParameteri.apply(this, args);
    }
    [$texSubImage2D](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels) {
      if (type === void 0) type = null;
      if (pixels === void 0) pixels = null;
      if (type != null && core.int.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video)) {
        this[_texSubImage2D_1](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels);
        return;
      }
      if (html$.ImageData.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
        let pixels_1 = html_common.convertDartToNative_ImageData(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
        this[_texSubImage2D_2](target, level, xoffset, yoffset, format_OR_width, height_OR_type, pixels_1);
        return;
      }
      if (html$.ImageElement.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
        this[_texSubImage2D_3](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
        return;
      }
      if (html$.CanvasElement.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
        this[_texSubImage2D_4](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
        return;
      }
      if (html$.VideoElement.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
        this[_texSubImage2D_5](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
        return;
      }
      if (html$.ImageBitmap.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
        this[_texSubImage2D_6](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
        return;
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_texSubImage2D_1](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [_texSubImage2D_2](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [_texSubImage2D_3](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [_texSubImage2D_4](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [_texSubImage2D_5](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [_texSubImage2D_6](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [$uniform1f](...args) {
      return this.uniform1f.apply(this, args);
    }
    [$uniform1fv](...args) {
      return this.uniform1fv.apply(this, args);
    }
    [$uniform1i](...args) {
      return this.uniform1i.apply(this, args);
    }
    [$uniform1iv](...args) {
      return this.uniform1iv.apply(this, args);
    }
    [$uniform2f](...args) {
      return this.uniform2f.apply(this, args);
    }
    [$uniform2fv](...args) {
      return this.uniform2fv.apply(this, args);
    }
    [$uniform2i](...args) {
      return this.uniform2i.apply(this, args);
    }
    [$uniform2iv](...args) {
      return this.uniform2iv.apply(this, args);
    }
    [$uniform3f](...args) {
      return this.uniform3f.apply(this, args);
    }
    [$uniform3fv](...args) {
      return this.uniform3fv.apply(this, args);
    }
    [$uniform3i](...args) {
      return this.uniform3i.apply(this, args);
    }
    [$uniform3iv](...args) {
      return this.uniform3iv.apply(this, args);
    }
    [$uniform4f](...args) {
      return this.uniform4f.apply(this, args);
    }
    [$uniform4fv](...args) {
      return this.uniform4fv.apply(this, args);
    }
    [$uniform4i](...args) {
      return this.uniform4i.apply(this, args);
    }
    [$uniform4iv](...args) {
      return this.uniform4iv.apply(this, args);
    }
    [$uniformMatrix2fv](...args) {
      return this.uniformMatrix2fv.apply(this, args);
    }
    [$uniformMatrix3fv](...args) {
      return this.uniformMatrix3fv.apply(this, args);
    }
    [$uniformMatrix4fv](...args) {
      return this.uniformMatrix4fv.apply(this, args);
    }
    [$useProgram](...args) {
      return this.useProgram.apply(this, args);
    }
    [$validateProgram](...args) {
      return this.validateProgram.apply(this, args);
    }
    [$vertexAttrib1f](...args) {
      return this.vertexAttrib1f.apply(this, args);
    }
    [$vertexAttrib1fv](...args) {
      return this.vertexAttrib1fv.apply(this, args);
    }
    [$vertexAttrib2f](...args) {
      return this.vertexAttrib2f.apply(this, args);
    }
    [$vertexAttrib2fv](...args) {
      return this.vertexAttrib2fv.apply(this, args);
    }
    [$vertexAttrib3f](...args) {
      return this.vertexAttrib3f.apply(this, args);
    }
    [$vertexAttrib3fv](...args) {
      return this.vertexAttrib3fv.apply(this, args);
    }
    [$vertexAttrib4f](...args) {
      return this.vertexAttrib4f.apply(this, args);
    }
    [$vertexAttrib4fv](...args) {
      return this.vertexAttrib4fv.apply(this, args);
    }
    [$vertexAttribPointer](...args) {
      return this.vertexAttribPointer.apply(this, args);
    }
    [$viewport](...args) {
      return this.viewport.apply(this, args);
    }
    [$readPixels](x, y, width, height, format, type, pixels) {
      this[_readPixels](x, y, width, height, format, type, pixels);
    }
    [$texImage2DUntyped](targetTexture, levelOfDetail, internalFormat, format, type, data) {
      this[$texImage2D](targetTexture, levelOfDetail, internalFormat, format, type, data);
    }
    [$texImage2DTyped](targetTexture, levelOfDetail, internalFormat, width, height, border, format, type, data) {
      this[$texImage2D](targetTexture, levelOfDetail, internalFormat, width, height, border, format, type, data);
    }
    [$texSubImage2DUntyped](targetTexture, levelOfDetail, xOffset, yOffset, format, type, data) {
      this[$texSubImage2D](targetTexture, levelOfDetail, xOffset, yOffset, format, type, data);
    }
    [$texSubImage2DTyped](targetTexture, levelOfDetail, xOffset, yOffset, width, height, border, format, type, data) {
      this[$texSubImage2D](targetTexture, levelOfDetail, xOffset, yOffset, width, height, format, type, data);
    }
    [$bufferDataTyped](target, data, usage) {
      this.bufferData(target, data, usage);
    }
    [$bufferSubDataTyped](target, offset, data) {
      this.bufferSubData(target, offset, data);
    }
  };
  dart.addTypeTests(web_gl.RenderingContext);
  const canvas$3 = Symbol("RenderingContext.canvas");
  const drawingBufferHeight = Symbol("RenderingContext.drawingBufferHeight");
  const drawingBufferWidth = Symbol("RenderingContext.drawingBufferWidth");
  web_gl.RenderingContext[dart.implements] = () => [html$.CanvasRenderingContext];
  dart.setMethodSignature(web_gl.RenderingContext, () => ({
    __proto__: dart.getMethods(web_gl.RenderingContext.__proto__),
    [$activeTexture]: dart.fnType(dart.void, [core.int]),
    [$attachShader]: dart.fnType(dart.void, [web_gl.Program, web_gl.Shader]),
    [$bindAttribLocation]: dart.fnType(dart.void, [web_gl.Program, core.int, core.String]),
    [$bindBuffer]: dart.fnType(dart.void, [core.int, web_gl.Buffer]),
    [$bindFramebuffer]: dart.fnType(dart.void, [core.int, web_gl.Framebuffer]),
    [$bindRenderbuffer]: dart.fnType(dart.void, [core.int, web_gl.Renderbuffer]),
    [$bindTexture]: dart.fnType(dart.void, [core.int, web_gl.Texture]),
    [$blendColor]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$blendEquation]: dart.fnType(dart.void, [core.int]),
    [$blendEquationSeparate]: dart.fnType(dart.void, [core.int, core.int]),
    [$blendFunc]: dart.fnType(dart.void, [core.int, core.int]),
    [$blendFuncSeparate]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
    [$bufferData]: dart.fnType(dart.void, [core.int, dart.dynamic, core.int]),
    [$bufferSubData]: dart.fnType(dart.void, [core.int, core.int, dart.dynamic]),
    [$checkFramebufferStatus]: dart.fnType(core.int, [core.int]),
    [$clear]: dart.fnType(dart.void, [core.int]),
    [$clearColor]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$clearDepth]: dart.fnType(dart.void, [core.num]),
    [$clearStencil]: dart.fnType(dart.void, [core.int]),
    [$colorMask]: dart.fnType(dart.void, [core.bool, core.bool, core.bool, core.bool]),
    [$commit]: dart.fnType(async.Future, []),
    [$compileShader]: dart.fnType(dart.void, [web_gl.Shader]),
    [$compressedTexImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
    [$compressedTexSubImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
    [$copyTexImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
    [$copyTexSubImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
    [$createBuffer]: dart.fnType(web_gl.Buffer, []),
    [$createFramebuffer]: dart.fnType(web_gl.Framebuffer, []),
    [$createProgram]: dart.fnType(web_gl.Program, []),
    [$createRenderbuffer]: dart.fnType(web_gl.Renderbuffer, []),
    [$createShader]: dart.fnType(web_gl.Shader, [core.int]),
    [$createTexture]: dart.fnType(web_gl.Texture, []),
    [$cullFace]: dart.fnType(dart.void, [core.int]),
    [$deleteBuffer]: dart.fnType(dart.void, [web_gl.Buffer]),
    [$deleteFramebuffer]: dart.fnType(dart.void, [web_gl.Framebuffer]),
    [$deleteProgram]: dart.fnType(dart.void, [web_gl.Program]),
    [$deleteRenderbuffer]: dart.fnType(dart.void, [web_gl.Renderbuffer]),
    [$deleteShader]: dart.fnType(dart.void, [web_gl.Shader]),
    [$deleteTexture]: dart.fnType(dart.void, [web_gl.Texture]),
    [$depthFunc]: dart.fnType(dart.void, [core.int]),
    [$depthMask]: dart.fnType(dart.void, [core.bool]),
    [$depthRange]: dart.fnType(dart.void, [core.num, core.num]),
    [$detachShader]: dart.fnType(dart.void, [web_gl.Program, web_gl.Shader]),
    [$disable]: dart.fnType(dart.void, [core.int]),
    [$disableVertexAttribArray]: dart.fnType(dart.void, [core.int]),
    [$drawArrays]: dart.fnType(dart.void, [core.int, core.int, core.int]),
    [$drawElements]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
    [$enable]: dart.fnType(dart.void, [core.int]),
    [$enableVertexAttribArray]: dart.fnType(dart.void, [core.int]),
    [$finish]: dart.fnType(dart.void, []),
    [$flush]: dart.fnType(dart.void, []),
    [$framebufferRenderbuffer]: dart.fnType(dart.void, [core.int, core.int, core.int, web_gl.Renderbuffer]),
    [$framebufferTexture2D]: dart.fnType(dart.void, [core.int, core.int, core.int, web_gl.Texture, core.int]),
    [$frontFace]: dart.fnType(dart.void, [core.int]),
    [$generateMipmap]: dart.fnType(dart.void, [core.int]),
    [$getActiveAttrib]: dart.fnType(web_gl.ActiveInfo, [web_gl.Program, core.int]),
    [$getActiveUniform]: dart.fnType(web_gl.ActiveInfo, [web_gl.Program, core.int]),
    [$getAttachedShaders]: dart.fnType(core.List$(web_gl.Shader), [web_gl.Program]),
    [$getAttribLocation]: dart.fnType(core.int, [web_gl.Program, core.String]),
    [$getBufferParameter]: dart.fnType(core.Object, [core.int, core.int]),
    [$getContextAttributes]: dart.fnType(core.Map, []),
    [_getContextAttributes_1$]: dart.fnType(dart.dynamic, []),
    [$getError]: dart.fnType(core.int, []),
    [$getExtension]: dart.fnType(core.Object, [core.String]),
    [$getFramebufferAttachmentParameter]: dart.fnType(core.Object, [core.int, core.int, core.int]),
    [$getParameter]: dart.fnType(core.Object, [core.int]),
    [$getProgramInfoLog]: dart.fnType(core.String, [web_gl.Program]),
    [$getProgramParameter]: dart.fnType(core.Object, [web_gl.Program, core.int]),
    [$getRenderbufferParameter]: dart.fnType(core.Object, [core.int, core.int]),
    [$getShaderInfoLog]: dart.fnType(core.String, [web_gl.Shader]),
    [$getShaderParameter]: dart.fnType(core.Object, [web_gl.Shader, core.int]),
    [$getShaderPrecisionFormat]: dart.fnType(web_gl.ShaderPrecisionFormat, [core.int, core.int]),
    [$getShaderSource]: dart.fnType(core.String, [web_gl.Shader]),
    [$getSupportedExtensions]: dart.fnType(core.List$(core.String), []),
    [$getTexParameter]: dart.fnType(core.Object, [core.int, core.int]),
    [$getUniform]: dart.fnType(core.Object, [web_gl.Program, web_gl.UniformLocation]),
    [$getUniformLocation]: dart.fnType(web_gl.UniformLocation, [web_gl.Program, core.String]),
    [$getVertexAttrib]: dart.fnType(core.Object, [core.int, core.int]),
    [$getVertexAttribOffset]: dart.fnType(core.int, [core.int, core.int]),
    [$hint]: dart.fnType(dart.void, [core.int, core.int]),
    [$isBuffer]: dart.fnType(core.bool, [web_gl.Buffer]),
    [$isContextLost]: dart.fnType(core.bool, []),
    [$isEnabled]: dart.fnType(core.bool, [core.int]),
    [$isFramebuffer]: dart.fnType(core.bool, [web_gl.Framebuffer]),
    [$isProgram]: dart.fnType(core.bool, [web_gl.Program]),
    [$isRenderbuffer]: dart.fnType(core.bool, [web_gl.Renderbuffer]),
    [$isShader]: dart.fnType(core.bool, [web_gl.Shader]),
    [$isTexture]: dart.fnType(core.bool, [web_gl.Texture]),
    [$lineWidth]: dart.fnType(dart.void, [core.num]),
    [$linkProgram]: dart.fnType(dart.void, [web_gl.Program]),
    [$pixelStorei]: dart.fnType(dart.void, [core.int, core.int]),
    [$polygonOffset]: dart.fnType(dart.void, [core.num, core.num]),
    [_readPixels]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
    [$renderbufferStorage]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
    [$sampleCoverage]: dart.fnType(dart.void, [core.num, core.bool]),
    [$scissor]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
    [$shaderSource]: dart.fnType(dart.void, [web_gl.Shader, core.String]),
    [$stencilFunc]: dart.fnType(dart.void, [core.int, core.int, core.int]),
    [$stencilFuncSeparate]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
    [$stencilMask]: dart.fnType(dart.void, [core.int]),
    [$stencilMaskSeparate]: dart.fnType(dart.void, [core.int, core.int]),
    [$stencilOp]: dart.fnType(dart.void, [core.int, core.int, core.int]),
    [$stencilOpSeparate]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
    [$texImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int, core.int, typed_data.TypedData]),
    [_texImage2D_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int, dart.dynamic, dart.dynamic, typed_data.TypedData]),
    [_texImage2D_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_texImage2D_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageElement]),
    [_texImage2D_4]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.CanvasElement]),
    [_texImage2D_5]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.VideoElement]),
    [_texImage2D_6]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageBitmap]),
    [$texParameterf]: dart.fnType(dart.void, [core.int, core.int, core.num]),
    [$texParameteri]: dart.fnType(dart.void, [core.int, core.int, core.int]),
    [$texSubImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int, typed_data.TypedData]),
    [_texSubImage2D_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int, dart.dynamic, typed_data.TypedData]),
    [_texSubImage2D_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_texSubImage2D_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageElement]),
    [_texSubImage2D_4]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.CanvasElement]),
    [_texSubImage2D_5]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.VideoElement]),
    [_texSubImage2D_6]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageBitmap]),
    [$uniform1f]: dart.fnType(dart.void, [web_gl.UniformLocation, core.num]),
    [$uniform1fv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
    [$uniform1i]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int]),
    [$uniform1iv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
    [$uniform2f]: dart.fnType(dart.void, [web_gl.UniformLocation, core.num, core.num]),
    [$uniform2fv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
    [$uniform2i]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int]),
    [$uniform2iv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
    [$uniform3f]: dart.fnType(dart.void, [web_gl.UniformLocation, core.num, core.num, core.num]),
    [$uniform3fv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
    [$uniform3i]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int, core.int]),
    [$uniform3iv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
    [$uniform4f]: dart.fnType(dart.void, [web_gl.UniformLocation, core.num, core.num, core.num, core.num]),
    [$uniform4fv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
    [$uniform4i]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int, core.int, core.int]),
    [$uniform4iv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
    [$uniformMatrix2fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic]),
    [$uniformMatrix3fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic]),
    [$uniformMatrix4fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic]),
    [$useProgram]: dart.fnType(dart.void, [web_gl.Program]),
    [$validateProgram]: dart.fnType(dart.void, [web_gl.Program]),
    [$vertexAttrib1f]: dart.fnType(dart.void, [core.int, core.num]),
    [$vertexAttrib1fv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
    [$vertexAttrib2f]: dart.fnType(dart.void, [core.int, core.num, core.num]),
    [$vertexAttrib2fv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
    [$vertexAttrib3f]: dart.fnType(dart.void, [core.int, core.num, core.num, core.num]),
    [$vertexAttrib3fv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
    [$vertexAttrib4f]: dart.fnType(dart.void, [core.int, core.num, core.num, core.num, core.num]),
    [$vertexAttrib4fv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
    [$vertexAttribPointer]: dart.fnType(dart.void, [core.int, core.int, core.int, core.bool, core.int, core.int]),
    [$viewport]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
    [$readPixels]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
    [$texImage2DUntyped]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, dart.dynamic]),
    [$texImage2DTyped]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
    [$texSubImage2DUntyped]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic]),
    [$texSubImage2DTyped]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
    [$bufferDataTyped]: dart.fnType(dart.void, [core.int, typed_data.TypedData, core.int]),
    [$bufferSubDataTyped]: dart.fnType(dart.void, [core.int, core.int, typed_data.TypedData])
  }));
  dart.setFieldSignature(web_gl.RenderingContext, () => ({
    __proto__: dart.getFields(web_gl.RenderingContext.__proto__),
    [$canvas]: dart.finalFieldType(html$.CanvasElement),
    [$drawingBufferHeight]: dart.finalFieldType(core.int),
    [$drawingBufferWidth]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("WebGLRenderingContext", web_gl.RenderingContext);
  const _getUniformIndices_1 = Symbol('_getUniformIndices_1');
  const _texImage2D2_1 = Symbol('_texImage2D2_1');
  const _texImage2D2_2 = Symbol('_texImage2D2_2');
  const _texImage2D2_3 = Symbol('_texImage2D2_3');
  const _texImage2D2_4 = Symbol('_texImage2D2_4');
  const _texImage2D2_5 = Symbol('_texImage2D2_5');
  const _texImage2D2_6 = Symbol('_texImage2D2_6');
  const _texImage2D2_7 = Symbol('_texImage2D2_7');
  const _texImage3D_1 = Symbol('_texImage3D_1');
  const _texImage3D_2 = Symbol('_texImage3D_2');
  const _texImage3D_3 = Symbol('_texImage3D_3');
  const _texImage3D_4 = Symbol('_texImage3D_4');
  const _texImage3D_5 = Symbol('_texImage3D_5');
  const _texImage3D_6 = Symbol('_texImage3D_6');
  const _texImage3D_7 = Symbol('_texImage3D_7');
  const _texImage3D_8 = Symbol('_texImage3D_8');
  const _texSubImage2D2_1 = Symbol('_texSubImage2D2_1');
  const _texSubImage2D2_2 = Symbol('_texSubImage2D2_2');
  const _texSubImage2D2_3 = Symbol('_texSubImage2D2_3');
  const _texSubImage2D2_4 = Symbol('_texSubImage2D2_4');
  const _texSubImage2D2_5 = Symbol('_texSubImage2D2_5');
  const _texSubImage2D2_6 = Symbol('_texSubImage2D2_6');
  const _texSubImage2D2_7 = Symbol('_texSubImage2D2_7');
  const _texSubImage3D_1 = Symbol('_texSubImage3D_1');
  const _texSubImage3D_2 = Symbol('_texSubImage3D_2');
  const _texSubImage3D_3 = Symbol('_texSubImage3D_3');
  const _texSubImage3D_4 = Symbol('_texSubImage3D_4');
  const _texSubImage3D_5 = Symbol('_texSubImage3D_5');
  const _texSubImage3D_6 = Symbol('_texSubImage3D_6');
  const _texSubImage3D_7 = Symbol('_texSubImage3D_7');
  const _texSubImage3D_8 = Symbol('_texSubImage3D_8');
  const _transformFeedbackVaryings_1 = Symbol('_transformFeedbackVaryings_1');
  web_gl.RenderingContext2 = class RenderingContext2 extends _interceptors.Interceptor {
    get [$canvas]() {
      return this.canvas;
    }
    [$beginQuery](...args) {
      return this.beginQuery.apply(this, args);
    }
    [$beginTransformFeedback](...args) {
      return this.beginTransformFeedback.apply(this, args);
    }
    [$bindBufferBase](...args) {
      return this.bindBufferBase.apply(this, args);
    }
    [$bindBufferRange](...args) {
      return this.bindBufferRange.apply(this, args);
    }
    [$bindSampler](...args) {
      return this.bindSampler.apply(this, args);
    }
    [$bindTransformFeedback](...args) {
      return this.bindTransformFeedback.apply(this, args);
    }
    [$bindVertexArray](...args) {
      return this.bindVertexArray.apply(this, args);
    }
    [$blitFramebuffer](...args) {
      return this.blitFramebuffer.apply(this, args);
    }
    [$bufferData2](...args) {
      return this.bufferData.apply(this, args);
    }
    [$bufferSubData2](...args) {
      return this.bufferSubData.apply(this, args);
    }
    [$clearBufferfi](...args) {
      return this.clearBufferfi.apply(this, args);
    }
    [$clearBufferfv](...args) {
      return this.clearBufferfv.apply(this, args);
    }
    [$clearBufferiv](...args) {
      return this.clearBufferiv.apply(this, args);
    }
    [$clearBufferuiv](...args) {
      return this.clearBufferuiv.apply(this, args);
    }
    [$clientWaitSync](...args) {
      return this.clientWaitSync.apply(this, args);
    }
    [$compressedTexImage2D2](...args) {
      return this.compressedTexImage2D.apply(this, args);
    }
    [$compressedTexImage2D3](...args) {
      return this.compressedTexImage2D.apply(this, args);
    }
    [$compressedTexImage3D](...args) {
      return this.compressedTexImage3D.apply(this, args);
    }
    [$compressedTexImage3D2](...args) {
      return this.compressedTexImage3D.apply(this, args);
    }
    [$compressedTexSubImage2D2](...args) {
      return this.compressedTexSubImage2D.apply(this, args);
    }
    [$compressedTexSubImage2D3](...args) {
      return this.compressedTexSubImage2D.apply(this, args);
    }
    [$compressedTexSubImage3D](...args) {
      return this.compressedTexSubImage3D.apply(this, args);
    }
    [$compressedTexSubImage3D2](...args) {
      return this.compressedTexSubImage3D.apply(this, args);
    }
    [$copyBufferSubData](...args) {
      return this.copyBufferSubData.apply(this, args);
    }
    [$copyTexSubImage3D](...args) {
      return this.copyTexSubImage3D.apply(this, args);
    }
    [$createQuery](...args) {
      return this.createQuery.apply(this, args);
    }
    [$createSampler](...args) {
      return this.createSampler.apply(this, args);
    }
    [$createTransformFeedback](...args) {
      return this.createTransformFeedback.apply(this, args);
    }
    [$createVertexArray](...args) {
      return this.createVertexArray.apply(this, args);
    }
    [$deleteQuery](...args) {
      return this.deleteQuery.apply(this, args);
    }
    [$deleteSampler](...args) {
      return this.deleteSampler.apply(this, args);
    }
    [$deleteSync](...args) {
      return this.deleteSync.apply(this, args);
    }
    [$deleteTransformFeedback](...args) {
      return this.deleteTransformFeedback.apply(this, args);
    }
    [$deleteVertexArray](...args) {
      return this.deleteVertexArray.apply(this, args);
    }
    [$drawArraysInstanced](...args) {
      return this.drawArraysInstanced.apply(this, args);
    }
    [$drawBuffers](...args) {
      return this.drawBuffers.apply(this, args);
    }
    [$drawElementsInstanced](...args) {
      return this.drawElementsInstanced.apply(this, args);
    }
    [$drawRangeElements](...args) {
      return this.drawRangeElements.apply(this, args);
    }
    [$endQuery](...args) {
      return this.endQuery.apply(this, args);
    }
    [$endTransformFeedback](...args) {
      return this.endTransformFeedback.apply(this, args);
    }
    [$fenceSync](...args) {
      return this.fenceSync.apply(this, args);
    }
    [$framebufferTextureLayer](...args) {
      return this.framebufferTextureLayer.apply(this, args);
    }
    [$getActiveUniformBlockName](...args) {
      return this.getActiveUniformBlockName.apply(this, args);
    }
    [$getActiveUniformBlockParameter](...args) {
      return this.getActiveUniformBlockParameter.apply(this, args);
    }
    [$getActiveUniforms](...args) {
      return this.getActiveUniforms.apply(this, args);
    }
    [$getBufferSubData](...args) {
      return this.getBufferSubData.apply(this, args);
    }
    [$getFragDataLocation](...args) {
      return this.getFragDataLocation.apply(this, args);
    }
    [$getIndexedParameter](...args) {
      return this.getIndexedParameter.apply(this, args);
    }
    [$getInternalformatParameter](...args) {
      return this.getInternalformatParameter.apply(this, args);
    }
    [$getQuery](...args) {
      return this.getQuery.apply(this, args);
    }
    [$getQueryParameter](...args) {
      return this.getQueryParameter.apply(this, args);
    }
    [$getSamplerParameter](...args) {
      return this.getSamplerParameter.apply(this, args);
    }
    [$getSyncParameter](...args) {
      return this.getSyncParameter.apply(this, args);
    }
    [$getTransformFeedbackVarying](...args) {
      return this.getTransformFeedbackVarying.apply(this, args);
    }
    [$getUniformBlockIndex](...args) {
      return this.getUniformBlockIndex.apply(this, args);
    }
    [$getUniformIndices](program, uniformNames) {
      let uniformNames_1 = html_common.convertDartToNative_StringArray(uniformNames);
      return this[_getUniformIndices_1](program, uniformNames_1);
    }
    [_getUniformIndices_1](...args) {
      return this.getUniformIndices.apply(this, args);
    }
    [$invalidateFramebuffer](...args) {
      return this.invalidateFramebuffer.apply(this, args);
    }
    [$invalidateSubFramebuffer](...args) {
      return this.invalidateSubFramebuffer.apply(this, args);
    }
    [$isQuery](...args) {
      return this.isQuery.apply(this, args);
    }
    [$isSampler](...args) {
      return this.isSampler.apply(this, args);
    }
    [$isSync](...args) {
      return this.isSync.apply(this, args);
    }
    [$isTransformFeedback](...args) {
      return this.isTransformFeedback.apply(this, args);
    }
    [$isVertexArray](...args) {
      return this.isVertexArray.apply(this, args);
    }
    [$pauseTransformFeedback](...args) {
      return this.pauseTransformFeedback.apply(this, args);
    }
    [$readBuffer](...args) {
      return this.readBuffer.apply(this, args);
    }
    [$readPixels2](...args) {
      return this.readPixels.apply(this, args);
    }
    [$renderbufferStorageMultisample](...args) {
      return this.renderbufferStorageMultisample.apply(this, args);
    }
    [$resumeTransformFeedback](...args) {
      return this.resumeTransformFeedback.apply(this, args);
    }
    [$samplerParameterf](...args) {
      return this.samplerParameterf.apply(this, args);
    }
    [$samplerParameteri](...args) {
      return this.samplerParameteri.apply(this, args);
    }
    [$texImage2D2](target, level, internalformat, width, height, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video, srcOffset) {
      if (srcOffset === void 0) srcOffset = null;
      if (core.int.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
        this[_texImage2D2_1](target, level, internalformat, width, height, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
        return;
      }
      if (html$.ImageData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
        let data_1 = html_common.convertDartToNative_ImageData(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
        this[_texImage2D2_2](target, level, internalformat, width, height, border, format, type, data_1);
        return;
      }
      if (html$.ImageElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
        this[_texImage2D2_3](target, level, internalformat, width, height, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
        return;
      }
      if (html$.CanvasElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
        this[_texImage2D2_4](target, level, internalformat, width, height, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
        return;
      }
      if (html$.VideoElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
        this[_texImage2D2_5](target, level, internalformat, width, height, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
        return;
      }
      if (html$.ImageBitmap.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
        this[_texImage2D2_6](target, level, internalformat, width, height, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
        return;
      }
      if (srcOffset != null && typed_data.TypedData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video)) {
        this[_texImage2D2_7](target, level, internalformat, width, height, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video, srcOffset);
        return;
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_texImage2D2_1](...args) {
      return this.texImage2D.apply(this, args);
    }
    [_texImage2D2_2](...args) {
      return this.texImage2D.apply(this, args);
    }
    [_texImage2D2_3](...args) {
      return this.texImage2D.apply(this, args);
    }
    [_texImage2D2_4](...args) {
      return this.texImage2D.apply(this, args);
    }
    [_texImage2D2_5](...args) {
      return this.texImage2D.apply(this, args);
    }
    [_texImage2D2_6](...args) {
      return this.texImage2D.apply(this, args);
    }
    [_texImage2D2_7](...args) {
      return this.texImage2D.apply(this, args);
    }
    [$texImage3D](target, level, internalformat, width, height, depth, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video, srcOffset) {
      if (srcOffset === void 0) srcOffset = null;
      if (core.int.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
        this[_texImage3D_1](target, level, internalformat, width, height, depth, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
        return;
      }
      if (html$.ImageData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
        let data_1 = html_common.convertDartToNative_ImageData(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
        this[_texImage3D_2](target, level, internalformat, width, height, depth, border, format, type, data_1);
        return;
      }
      if (html$.ImageElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
        this[_texImage3D_3](target, level, internalformat, width, height, depth, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
        return;
      }
      if (html$.CanvasElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
        this[_texImage3D_4](target, level, internalformat, width, height, depth, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
        return;
      }
      if (html$.VideoElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
        this[_texImage3D_5](target, level, internalformat, width, height, depth, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
        return;
      }
      if (html$.ImageBitmap.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
        this[_texImage3D_6](target, level, internalformat, width, height, depth, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
        return;
      }
      if ((typed_data.TypedData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) || bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video == null) && srcOffset == null) {
        this[_texImage3D_7](target, level, internalformat, width, height, depth, border, format, type, typed_data.TypedData._check(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video));
        return;
      }
      if (srcOffset != null && typed_data.TypedData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video)) {
        this[_texImage3D_8](target, level, internalformat, width, height, depth, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video, srcOffset);
        return;
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_texImage3D_1](...args) {
      return this.texImage3D.apply(this, args);
    }
    [_texImage3D_2](...args) {
      return this.texImage3D.apply(this, args);
    }
    [_texImage3D_3](...args) {
      return this.texImage3D.apply(this, args);
    }
    [_texImage3D_4](...args) {
      return this.texImage3D.apply(this, args);
    }
    [_texImage3D_5](...args) {
      return this.texImage3D.apply(this, args);
    }
    [_texImage3D_6](...args) {
      return this.texImage3D.apply(this, args);
    }
    [_texImage3D_7](...args) {
      return this.texImage3D.apply(this, args);
    }
    [_texImage3D_8](...args) {
      return this.texImage3D.apply(this, args);
    }
    [$texStorage2D](...args) {
      return this.texStorage2D.apply(this, args);
    }
    [$texStorage3D](...args) {
      return this.texStorage3D.apply(this, args);
    }
    [$texSubImage2D2](target, level, xoffset, yoffset, width, height, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video, srcOffset) {
      if (srcOffset === void 0) srcOffset = null;
      if (core.int.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
        this[_texSubImage2D2_1](target, level, xoffset, yoffset, width, height, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
        return;
      }
      if (html$.ImageData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
        let data_1 = html_common.convertDartToNative_ImageData(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
        this[_texSubImage2D2_2](target, level, xoffset, yoffset, width, height, format, type, data_1);
        return;
      }
      if (html$.ImageElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
        this[_texSubImage2D2_3](target, level, xoffset, yoffset, width, height, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
        return;
      }
      if (html$.CanvasElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
        this[_texSubImage2D2_4](target, level, xoffset, yoffset, width, height, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
        return;
      }
      if (html$.VideoElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
        this[_texSubImage2D2_5](target, level, xoffset, yoffset, width, height, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
        return;
      }
      if (html$.ImageBitmap.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
        this[_texSubImage2D2_6](target, level, xoffset, yoffset, width, height, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
        return;
      }
      if (srcOffset != null && typed_data.TypedData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video)) {
        this[_texSubImage2D2_7](target, level, xoffset, yoffset, width, height, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video, srcOffset);
        return;
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_texSubImage2D2_1](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [_texSubImage2D2_2](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [_texSubImage2D2_3](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [_texSubImage2D2_4](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [_texSubImage2D2_5](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [_texSubImage2D2_6](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [_texSubImage2D2_7](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [$texSubImage3D](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video, srcOffset) {
      if (srcOffset === void 0) srcOffset = null;
      if (core.int.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
        this[_texSubImage3D_1](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
        return;
      }
      if (html$.ImageData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
        let data_1 = html_common.convertDartToNative_ImageData(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
        this[_texSubImage3D_2](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data_1);
        return;
      }
      if (html$.ImageElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
        this[_texSubImage3D_3](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
        return;
      }
      if (html$.CanvasElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
        this[_texSubImage3D_4](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
        return;
      }
      if (html$.VideoElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
        this[_texSubImage3D_5](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
        return;
      }
      if (html$.ImageBitmap.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
        this[_texSubImage3D_6](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
        return;
      }
      if (typed_data.TypedData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
        this[_texSubImage3D_7](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
        return;
      }
      if (srcOffset != null && typed_data.TypedData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video)) {
        this[_texSubImage3D_8](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video, srcOffset);
        return;
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_texSubImage3D_1](...args) {
      return this.texSubImage3D.apply(this, args);
    }
    [_texSubImage3D_2](...args) {
      return this.texSubImage3D.apply(this, args);
    }
    [_texSubImage3D_3](...args) {
      return this.texSubImage3D.apply(this, args);
    }
    [_texSubImage3D_4](...args) {
      return this.texSubImage3D.apply(this, args);
    }
    [_texSubImage3D_5](...args) {
      return this.texSubImage3D.apply(this, args);
    }
    [_texSubImage3D_6](...args) {
      return this.texSubImage3D.apply(this, args);
    }
    [_texSubImage3D_7](...args) {
      return this.texSubImage3D.apply(this, args);
    }
    [_texSubImage3D_8](...args) {
      return this.texSubImage3D.apply(this, args);
    }
    [$transformFeedbackVaryings](program, varyings, bufferMode) {
      let varyings_1 = html_common.convertDartToNative_StringArray(varyings);
      this[_transformFeedbackVaryings_1](program, varyings_1, bufferMode);
      return;
    }
    [_transformFeedbackVaryings_1](...args) {
      return this.transformFeedbackVaryings.apply(this, args);
    }
    [$uniform1fv2](...args) {
      return this.uniform1fv.apply(this, args);
    }
    [$uniform1iv2](...args) {
      return this.uniform1iv.apply(this, args);
    }
    [$uniform1ui](...args) {
      return this.uniform1ui.apply(this, args);
    }
    [$uniform1uiv](...args) {
      return this.uniform1uiv.apply(this, args);
    }
    [$uniform2fv2](...args) {
      return this.uniform2fv.apply(this, args);
    }
    [$uniform2iv2](...args) {
      return this.uniform2iv.apply(this, args);
    }
    [$uniform2ui](...args) {
      return this.uniform2ui.apply(this, args);
    }
    [$uniform2uiv](...args) {
      return this.uniform2uiv.apply(this, args);
    }
    [$uniform3fv2](...args) {
      return this.uniform3fv.apply(this, args);
    }
    [$uniform3iv2](...args) {
      return this.uniform3iv.apply(this, args);
    }
    [$uniform3ui](...args) {
      return this.uniform3ui.apply(this, args);
    }
    [$uniform3uiv](...args) {
      return this.uniform3uiv.apply(this, args);
    }
    [$uniform4fv2](...args) {
      return this.uniform4fv.apply(this, args);
    }
    [$uniform4iv2](...args) {
      return this.uniform4iv.apply(this, args);
    }
    [$uniform4ui](...args) {
      return this.uniform4ui.apply(this, args);
    }
    [$uniform4uiv](...args) {
      return this.uniform4uiv.apply(this, args);
    }
    [$uniformBlockBinding](...args) {
      return this.uniformBlockBinding.apply(this, args);
    }
    [$uniformMatrix2fv2](...args) {
      return this.uniformMatrix2fv.apply(this, args);
    }
    [$uniformMatrix2x3fv](...args) {
      return this.uniformMatrix2x3fv.apply(this, args);
    }
    [$uniformMatrix2x4fv](...args) {
      return this.uniformMatrix2x4fv.apply(this, args);
    }
    [$uniformMatrix3fv2](...args) {
      return this.uniformMatrix3fv.apply(this, args);
    }
    [$uniformMatrix3x2fv](...args) {
      return this.uniformMatrix3x2fv.apply(this, args);
    }
    [$uniformMatrix3x4fv](...args) {
      return this.uniformMatrix3x4fv.apply(this, args);
    }
    [$uniformMatrix4fv2](...args) {
      return this.uniformMatrix4fv.apply(this, args);
    }
    [$uniformMatrix4x2fv](...args) {
      return this.uniformMatrix4x2fv.apply(this, args);
    }
    [$uniformMatrix4x3fv](...args) {
      return this.uniformMatrix4x3fv.apply(this, args);
    }
    [$vertexAttribDivisor](...args) {
      return this.vertexAttribDivisor.apply(this, args);
    }
    [$vertexAttribI4i](...args) {
      return this.vertexAttribI4i.apply(this, args);
    }
    [$vertexAttribI4iv](...args) {
      return this.vertexAttribI4iv.apply(this, args);
    }
    [$vertexAttribI4ui](...args) {
      return this.vertexAttribI4ui.apply(this, args);
    }
    [$vertexAttribI4uiv](...args) {
      return this.vertexAttribI4uiv.apply(this, args);
    }
    [$vertexAttribIPointer](...args) {
      return this.vertexAttribIPointer.apply(this, args);
    }
    [$waitSync](...args) {
      return this.waitSync.apply(this, args);
    }
    get [$drawingBufferHeight]() {
      return this.drawingBufferHeight;
    }
    get [$drawingBufferWidth]() {
      return this.drawingBufferWidth;
    }
    [$activeTexture](...args) {
      return this.activeTexture.apply(this, args);
    }
    [$attachShader](...args) {
      return this.attachShader.apply(this, args);
    }
    [$bindAttribLocation](...args) {
      return this.bindAttribLocation.apply(this, args);
    }
    [$bindBuffer](...args) {
      return this.bindBuffer.apply(this, args);
    }
    [$bindFramebuffer](...args) {
      return this.bindFramebuffer.apply(this, args);
    }
    [$bindRenderbuffer](...args) {
      return this.bindRenderbuffer.apply(this, args);
    }
    [$bindTexture](...args) {
      return this.bindTexture.apply(this, args);
    }
    [$blendColor](...args) {
      return this.blendColor.apply(this, args);
    }
    [$blendEquation](...args) {
      return this.blendEquation.apply(this, args);
    }
    [$blendEquationSeparate](...args) {
      return this.blendEquationSeparate.apply(this, args);
    }
    [$blendFunc](...args) {
      return this.blendFunc.apply(this, args);
    }
    [$blendFuncSeparate](...args) {
      return this.blendFuncSeparate.apply(this, args);
    }
    [$bufferData](...args) {
      return this.bufferData.apply(this, args);
    }
    [$bufferSubData](...args) {
      return this.bufferSubData.apply(this, args);
    }
    [$checkFramebufferStatus](...args) {
      return this.checkFramebufferStatus.apply(this, args);
    }
    [$clear](...args) {
      return this.clear.apply(this, args);
    }
    [$clearColor](...args) {
      return this.clearColor.apply(this, args);
    }
    [$clearDepth](...args) {
      return this.clearDepth.apply(this, args);
    }
    [$clearStencil](...args) {
      return this.clearStencil.apply(this, args);
    }
    [$colorMask](...args) {
      return this.colorMask.apply(this, args);
    }
    [$commit]() {
      return html$.promiseToFuture(dart.dynamic, this.commit());
    }
    [$compileShader](...args) {
      return this.compileShader.apply(this, args);
    }
    [$compressedTexImage2D](...args) {
      return this.compressedTexImage2D.apply(this, args);
    }
    [$compressedTexSubImage2D](...args) {
      return this.compressedTexSubImage2D.apply(this, args);
    }
    [$copyTexImage2D](...args) {
      return this.copyTexImage2D.apply(this, args);
    }
    [$copyTexSubImage2D](...args) {
      return this.copyTexSubImage2D.apply(this, args);
    }
    [$createBuffer](...args) {
      return this.createBuffer.apply(this, args);
    }
    [$createFramebuffer](...args) {
      return this.createFramebuffer.apply(this, args);
    }
    [$createProgram](...args) {
      return this.createProgram.apply(this, args);
    }
    [$createRenderbuffer](...args) {
      return this.createRenderbuffer.apply(this, args);
    }
    [$createShader](...args) {
      return this.createShader.apply(this, args);
    }
    [$createTexture](...args) {
      return this.createTexture.apply(this, args);
    }
    [$cullFace](...args) {
      return this.cullFace.apply(this, args);
    }
    [$deleteBuffer](...args) {
      return this.deleteBuffer.apply(this, args);
    }
    [$deleteFramebuffer](...args) {
      return this.deleteFramebuffer.apply(this, args);
    }
    [$deleteProgram](...args) {
      return this.deleteProgram.apply(this, args);
    }
    [$deleteRenderbuffer](...args) {
      return this.deleteRenderbuffer.apply(this, args);
    }
    [$deleteShader](...args) {
      return this.deleteShader.apply(this, args);
    }
    [$deleteTexture](...args) {
      return this.deleteTexture.apply(this, args);
    }
    [$depthFunc](...args) {
      return this.depthFunc.apply(this, args);
    }
    [$depthMask](...args) {
      return this.depthMask.apply(this, args);
    }
    [$depthRange](...args) {
      return this.depthRange.apply(this, args);
    }
    [$detachShader](...args) {
      return this.detachShader.apply(this, args);
    }
    [$disable](...args) {
      return this.disable.apply(this, args);
    }
    [$disableVertexAttribArray](...args) {
      return this.disableVertexAttribArray.apply(this, args);
    }
    [$drawArrays](...args) {
      return this.drawArrays.apply(this, args);
    }
    [$drawElements](...args) {
      return this.drawElements.apply(this, args);
    }
    [$enable](...args) {
      return this.enable.apply(this, args);
    }
    [$enableVertexAttribArray](...args) {
      return this.enableVertexAttribArray.apply(this, args);
    }
    [$finish](...args) {
      return this.finish.apply(this, args);
    }
    [$flush](...args) {
      return this.flush.apply(this, args);
    }
    [$framebufferRenderbuffer](...args) {
      return this.framebufferRenderbuffer.apply(this, args);
    }
    [$framebufferTexture2D](...args) {
      return this.framebufferTexture2D.apply(this, args);
    }
    [$frontFace](...args) {
      return this.frontFace.apply(this, args);
    }
    [$generateMipmap](...args) {
      return this.generateMipmap.apply(this, args);
    }
    [$getActiveAttrib](...args) {
      return this.getActiveAttrib.apply(this, args);
    }
    [$getActiveUniform](...args) {
      return this.getActiveUniform.apply(this, args);
    }
    [$getAttachedShaders](...args) {
      return this.getAttachedShaders.apply(this, args);
    }
    [$getAttribLocation](...args) {
      return this.getAttribLocation.apply(this, args);
    }
    [$getBufferParameter](...args) {
      return this.getBufferParameter.apply(this, args);
    }
    [$getContextAttributes]() {
      return html_common.convertNativeToDart_Dictionary(this[_getContextAttributes_1$]());
    }
    [_getContextAttributes_1$](...args) {
      return this.getContextAttributes.apply(this, args);
    }
    [$getError](...args) {
      return this.getError.apply(this, args);
    }
    [$getExtension](...args) {
      return this.getExtension.apply(this, args);
    }
    [$getFramebufferAttachmentParameter](...args) {
      return this.getFramebufferAttachmentParameter.apply(this, args);
    }
    [$getParameter](...args) {
      return this.getParameter.apply(this, args);
    }
    [$getProgramInfoLog](...args) {
      return this.getProgramInfoLog.apply(this, args);
    }
    [$getProgramParameter](...args) {
      return this.getProgramParameter.apply(this, args);
    }
    [$getRenderbufferParameter](...args) {
      return this.getRenderbufferParameter.apply(this, args);
    }
    [$getShaderInfoLog](...args) {
      return this.getShaderInfoLog.apply(this, args);
    }
    [$getShaderParameter](...args) {
      return this.getShaderParameter.apply(this, args);
    }
    [$getShaderPrecisionFormat](...args) {
      return this.getShaderPrecisionFormat.apply(this, args);
    }
    [$getShaderSource](...args) {
      return this.getShaderSource.apply(this, args);
    }
    [$getSupportedExtensions](...args) {
      return this.getSupportedExtensions.apply(this, args);
    }
    [$getTexParameter](...args) {
      return this.getTexParameter.apply(this, args);
    }
    [$getUniform](...args) {
      return this.getUniform.apply(this, args);
    }
    [$getUniformLocation](...args) {
      return this.getUniformLocation.apply(this, args);
    }
    [$getVertexAttrib](...args) {
      return this.getVertexAttrib.apply(this, args);
    }
    [$getVertexAttribOffset](...args) {
      return this.getVertexAttribOffset.apply(this, args);
    }
    [$hint](...args) {
      return this.hint.apply(this, args);
    }
    [$isBuffer](...args) {
      return this.isBuffer.apply(this, args);
    }
    [$isContextLost](...args) {
      return this.isContextLost.apply(this, args);
    }
    [$isEnabled](...args) {
      return this.isEnabled.apply(this, args);
    }
    [$isFramebuffer](...args) {
      return this.isFramebuffer.apply(this, args);
    }
    [$isProgram](...args) {
      return this.isProgram.apply(this, args);
    }
    [$isRenderbuffer](...args) {
      return this.isRenderbuffer.apply(this, args);
    }
    [$isShader](...args) {
      return this.isShader.apply(this, args);
    }
    [$isTexture](...args) {
      return this.isTexture.apply(this, args);
    }
    [$lineWidth](...args) {
      return this.lineWidth.apply(this, args);
    }
    [$linkProgram](...args) {
      return this.linkProgram.apply(this, args);
    }
    [$pixelStorei](...args) {
      return this.pixelStorei.apply(this, args);
    }
    [$polygonOffset](...args) {
      return this.polygonOffset.apply(this, args);
    }
    [_readPixels](...args) {
      return this.readPixels.apply(this, args);
    }
    [$renderbufferStorage](...args) {
      return this.renderbufferStorage.apply(this, args);
    }
    [$sampleCoverage](...args) {
      return this.sampleCoverage.apply(this, args);
    }
    [$scissor](...args) {
      return this.scissor.apply(this, args);
    }
    [$shaderSource](...args) {
      return this.shaderSource.apply(this, args);
    }
    [$stencilFunc](...args) {
      return this.stencilFunc.apply(this, args);
    }
    [$stencilFuncSeparate](...args) {
      return this.stencilFuncSeparate.apply(this, args);
    }
    [$stencilMask](...args) {
      return this.stencilMask.apply(this, args);
    }
    [$stencilMaskSeparate](...args) {
      return this.stencilMaskSeparate.apply(this, args);
    }
    [$stencilOp](...args) {
      return this.stencilOp.apply(this, args);
    }
    [$stencilOpSeparate](...args) {
      return this.stencilOpSeparate.apply(this, args);
    }
    [$texImage2D](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels) {
      if (format === void 0) format = null;
      if (type === void 0) type = null;
      if (pixels === void 0) pixels = null;
      if (type != null && format != null && core.int.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video)) {
        this[_texImage2D_1](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels);
        return;
      }
      if (html$.ImageData.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
        let pixels_1 = html_common.convertDartToNative_ImageData(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
        this[_texImage2D_2](target, level, internalformat, format_OR_width, height_OR_type, pixels_1);
        return;
      }
      if (html$.ImageElement.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
        this[_texImage2D_3](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
        return;
      }
      if (html$.CanvasElement.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
        this[_texImage2D_4](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
        return;
      }
      if (html$.VideoElement.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
        this[_texImage2D_5](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
        return;
      }
      if (html$.ImageBitmap.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
        this[_texImage2D_6](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
        return;
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_texImage2D_1](...args) {
      return this.texImage2D.apply(this, args);
    }
    [_texImage2D_2](...args) {
      return this.texImage2D.apply(this, args);
    }
    [_texImage2D_3](...args) {
      return this.texImage2D.apply(this, args);
    }
    [_texImage2D_4](...args) {
      return this.texImage2D.apply(this, args);
    }
    [_texImage2D_5](...args) {
      return this.texImage2D.apply(this, args);
    }
    [_texImage2D_6](...args) {
      return this.texImage2D.apply(this, args);
    }
    [$texParameterf](...args) {
      return this.texParameterf.apply(this, args);
    }
    [$texParameteri](...args) {
      return this.texParameteri.apply(this, args);
    }
    [$texSubImage2D](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels) {
      if (type === void 0) type = null;
      if (pixels === void 0) pixels = null;
      if (type != null && core.int.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video)) {
        this[_texSubImage2D_1](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels);
        return;
      }
      if (html$.ImageData.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
        let pixels_1 = html_common.convertDartToNative_ImageData(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
        this[_texSubImage2D_2](target, level, xoffset, yoffset, format_OR_width, height_OR_type, pixels_1);
        return;
      }
      if (html$.ImageElement.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
        this[_texSubImage2D_3](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
        return;
      }
      if (html$.CanvasElement.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
        this[_texSubImage2D_4](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
        return;
      }
      if (html$.VideoElement.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
        this[_texSubImage2D_5](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
        return;
      }
      if (html$.ImageBitmap.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
        this[_texSubImage2D_6](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
        return;
      }
      dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
    }
    [_texSubImage2D_1](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [_texSubImage2D_2](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [_texSubImage2D_3](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [_texSubImage2D_4](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [_texSubImage2D_5](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [_texSubImage2D_6](...args) {
      return this.texSubImage2D.apply(this, args);
    }
    [$uniform1f](...args) {
      return this.uniform1f.apply(this, args);
    }
    [$uniform1fv](...args) {
      return this.uniform1fv.apply(this, args);
    }
    [$uniform1i](...args) {
      return this.uniform1i.apply(this, args);
    }
    [$uniform1iv](...args) {
      return this.uniform1iv.apply(this, args);
    }
    [$uniform2f](...args) {
      return this.uniform2f.apply(this, args);
    }
    [$uniform2fv](...args) {
      return this.uniform2fv.apply(this, args);
    }
    [$uniform2i](...args) {
      return this.uniform2i.apply(this, args);
    }
    [$uniform2iv](...args) {
      return this.uniform2iv.apply(this, args);
    }
    [$uniform3f](...args) {
      return this.uniform3f.apply(this, args);
    }
    [$uniform3fv](...args) {
      return this.uniform3fv.apply(this, args);
    }
    [$uniform3i](...args) {
      return this.uniform3i.apply(this, args);
    }
    [$uniform3iv](...args) {
      return this.uniform3iv.apply(this, args);
    }
    [$uniform4f](...args) {
      return this.uniform4f.apply(this, args);
    }
    [$uniform4fv](...args) {
      return this.uniform4fv.apply(this, args);
    }
    [$uniform4i](...args) {
      return this.uniform4i.apply(this, args);
    }
    [$uniform4iv](...args) {
      return this.uniform4iv.apply(this, args);
    }
    [$uniformMatrix2fv](...args) {
      return this.uniformMatrix2fv.apply(this, args);
    }
    [$uniformMatrix3fv](...args) {
      return this.uniformMatrix3fv.apply(this, args);
    }
    [$uniformMatrix4fv](...args) {
      return this.uniformMatrix4fv.apply(this, args);
    }
    [$useProgram](...args) {
      return this.useProgram.apply(this, args);
    }
    [$validateProgram](...args) {
      return this.validateProgram.apply(this, args);
    }
    [$vertexAttrib1f](...args) {
      return this.vertexAttrib1f.apply(this, args);
    }
    [$vertexAttrib1fv](...args) {
      return this.vertexAttrib1fv.apply(this, args);
    }
    [$vertexAttrib2f](...args) {
      return this.vertexAttrib2f.apply(this, args);
    }
    [$vertexAttrib2fv](...args) {
      return this.vertexAttrib2fv.apply(this, args);
    }
    [$vertexAttrib3f](...args) {
      return this.vertexAttrib3f.apply(this, args);
    }
    [$vertexAttrib3fv](...args) {
      return this.vertexAttrib3fv.apply(this, args);
    }
    [$vertexAttrib4f](...args) {
      return this.vertexAttrib4f.apply(this, args);
    }
    [$vertexAttrib4fv](...args) {
      return this.vertexAttrib4fv.apply(this, args);
    }
    [$vertexAttribPointer](...args) {
      return this.vertexAttribPointer.apply(this, args);
    }
    [$viewport](...args) {
      return this.viewport.apply(this, args);
    }
    [$readPixels](x, y, width, height, format, type, pixels) {
      this[_readPixels](x, y, width, height, format, type, pixels);
    }
  };
  dart.addTypeTests(web_gl.RenderingContext2);
  const canvas$4 = Symbol("RenderingContext2.canvas");
  const drawingBufferHeight$ = Symbol("RenderingContext2.drawingBufferHeight");
  const drawingBufferWidth$ = Symbol("RenderingContext2.drawingBufferWidth");
  web_gl.RenderingContext2[dart.implements] = () => [web_gl._WebGL2RenderingContextBase, web_gl._WebGLRenderingContextBase];
  dart.setMethodSignature(web_gl.RenderingContext2, () => ({
    __proto__: dart.getMethods(web_gl.RenderingContext2.__proto__),
    [$beginQuery]: dart.fnType(dart.void, [core.int, web_gl.Query]),
    [$beginTransformFeedback]: dart.fnType(dart.void, [core.int]),
    [$bindBufferBase]: dart.fnType(dart.void, [core.int, core.int, web_gl.Buffer]),
    [$bindBufferRange]: dart.fnType(dart.void, [core.int, core.int, web_gl.Buffer, core.int, core.int]),
    [$bindSampler]: dart.fnType(dart.void, [core.int, web_gl.Sampler]),
    [$bindTransformFeedback]: dart.fnType(dart.void, [core.int, web_gl.TransformFeedback]),
    [$bindVertexArray]: dart.fnType(dart.void, [web_gl.VertexArrayObject]),
    [$blitFramebuffer]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
    [$bufferData2]: dart.fnType(dart.void, [core.int, typed_data.TypedData, core.int, core.int], [core.int]),
    [$bufferSubData2]: dart.fnType(dart.void, [core.int, core.int, typed_data.TypedData, core.int], [core.int]),
    [$clearBufferfi]: dart.fnType(dart.void, [core.int, core.int, core.num, core.int]),
    [$clearBufferfv]: dart.fnType(dart.void, [core.int, core.int, dart.dynamic], [core.int]),
    [$clearBufferiv]: dart.fnType(dart.void, [core.int, core.int, dart.dynamic], [core.int]),
    [$clearBufferuiv]: dart.fnType(dart.void, [core.int, core.int, dart.dynamic], [core.int]),
    [$clientWaitSync]: dart.fnType(core.int, [web_gl.Sync, core.int, core.int]),
    [$compressedTexImage2D2]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData, core.int], [core.int]),
    [$compressedTexImage2D3]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
    [$compressedTexImage3D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData], [core.int, core.int]),
    [$compressedTexImage3D2]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
    [$compressedTexSubImage2D2]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData, core.int], [core.int]),
    [$compressedTexSubImage2D3]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
    [$compressedTexSubImage3D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData], [core.int, core.int]),
    [$compressedTexSubImage3D2]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
    [$copyBufferSubData]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int]),
    [$copyTexSubImage3D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
    [$createQuery]: dart.fnType(web_gl.Query, []),
    [$createSampler]: dart.fnType(web_gl.Sampler, []),
    [$createTransformFeedback]: dart.fnType(web_gl.TransformFeedback, []),
    [$createVertexArray]: dart.fnType(web_gl.VertexArrayObject, []),
    [$deleteQuery]: dart.fnType(dart.void, [web_gl.Query]),
    [$deleteSampler]: dart.fnType(dart.void, [web_gl.Sampler]),
    [$deleteSync]: dart.fnType(dart.void, [web_gl.Sync]),
    [$deleteTransformFeedback]: dart.fnType(dart.void, [web_gl.TransformFeedback]),
    [$deleteVertexArray]: dart.fnType(dart.void, [web_gl.VertexArrayObject]),
    [$drawArraysInstanced]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
    [$drawBuffers]: dart.fnType(dart.void, [core.List$(core.int)]),
    [$drawElementsInstanced]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int]),
    [$drawRangeElements]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int]),
    [$endQuery]: dart.fnType(dart.void, [core.int]),
    [$endTransformFeedback]: dart.fnType(dart.void, []),
    [$fenceSync]: dart.fnType(web_gl.Sync, [core.int, core.int]),
    [$framebufferTextureLayer]: dart.fnType(dart.void, [core.int, core.int, web_gl.Texture, core.int, core.int]),
    [$getActiveUniformBlockName]: dart.fnType(core.String, [web_gl.Program, core.int]),
    [$getActiveUniformBlockParameter]: dart.fnType(core.Object, [web_gl.Program, core.int, core.int]),
    [$getActiveUniforms]: dart.fnType(core.Object, [web_gl.Program, core.List$(core.int), core.int]),
    [$getBufferSubData]: dart.fnType(dart.void, [core.int, core.int, typed_data.TypedData], [core.int, core.int]),
    [$getFragDataLocation]: dart.fnType(core.int, [web_gl.Program, core.String]),
    [$getIndexedParameter]: dart.fnType(core.Object, [core.int, core.int]),
    [$getInternalformatParameter]: dart.fnType(core.Object, [core.int, core.int, core.int]),
    [$getQuery]: dart.fnType(core.Object, [core.int, core.int]),
    [$getQueryParameter]: dart.fnType(core.Object, [web_gl.Query, core.int]),
    [$getSamplerParameter]: dart.fnType(core.Object, [web_gl.Sampler, core.int]),
    [$getSyncParameter]: dart.fnType(core.Object, [web_gl.Sync, core.int]),
    [$getTransformFeedbackVarying]: dart.fnType(web_gl.ActiveInfo, [web_gl.Program, core.int]),
    [$getUniformBlockIndex]: dart.fnType(core.int, [web_gl.Program, core.String]),
    [$getUniformIndices]: dart.fnType(core.List$(core.int), [web_gl.Program, core.List$(core.String)]),
    [_getUniformIndices_1]: dart.fnType(core.List$(core.int), [web_gl.Program, core.List]),
    [$invalidateFramebuffer]: dart.fnType(dart.void, [core.int, core.List$(core.int)]),
    [$invalidateSubFramebuffer]: dart.fnType(dart.void, [core.int, core.List$(core.int), core.int, core.int, core.int, core.int]),
    [$isQuery]: dart.fnType(core.bool, [web_gl.Query]),
    [$isSampler]: dart.fnType(core.bool, [web_gl.Sampler]),
    [$isSync]: dart.fnType(core.bool, [web_gl.Sync]),
    [$isTransformFeedback]: dart.fnType(core.bool, [web_gl.TransformFeedback]),
    [$isVertexArray]: dart.fnType(core.bool, [web_gl.VertexArrayObject]),
    [$pauseTransformFeedback]: dart.fnType(dart.void, []),
    [$readBuffer]: dart.fnType(dart.void, [core.int]),
    [$readPixels2]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int]),
    [$renderbufferStorageMultisample]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int]),
    [$resumeTransformFeedback]: dart.fnType(dart.void, []),
    [$samplerParameterf]: dart.fnType(dart.void, [web_gl.Sampler, core.int, core.num]),
    [$samplerParameteri]: dart.fnType(dart.void, [web_gl.Sampler, core.int, core.int]),
    [$texImage2D2]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int]),
    [_texImage2D2_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int]),
    [_texImage2D2_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_texImage2D2_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageElement]),
    [_texImage2D2_4]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.CanvasElement]),
    [_texImage2D2_5]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.VideoElement]),
    [_texImage2D2_6]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageBitmap]),
    [_texImage2D2_7]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, typed_data.TypedData, dart.dynamic]),
    [$texImage3D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int]),
    [_texImage3D_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int]),
    [_texImage3D_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_texImage3D_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageElement]),
    [_texImage3D_4]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.CanvasElement]),
    [_texImage3D_5]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.VideoElement]),
    [_texImage3D_6]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageBitmap]),
    [_texImage3D_7]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, typed_data.TypedData]),
    [_texImage3D_8]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, typed_data.TypedData, dart.dynamic]),
    [$texStorage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int]),
    [$texStorage3D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int]),
    [$texSubImage2D2]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int]),
    [_texSubImage2D2_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int]),
    [_texSubImage2D2_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_texSubImage2D2_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageElement]),
    [_texSubImage2D2_4]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.CanvasElement]),
    [_texSubImage2D2_5]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.VideoElement]),
    [_texSubImage2D2_6]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageBitmap]),
    [_texSubImage2D2_7]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, typed_data.TypedData, dart.dynamic]),
    [$texSubImage3D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int]),
    [_texSubImage3D_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int]),
    [_texSubImage3D_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_texSubImage3D_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageElement]),
    [_texSubImage3D_4]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.CanvasElement]),
    [_texSubImage3D_5]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.VideoElement]),
    [_texSubImage3D_6]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageBitmap]),
    [_texSubImage3D_7]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, typed_data.TypedData]),
    [_texSubImage3D_8]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, typed_data.TypedData, dart.dynamic]),
    [$transformFeedbackVaryings]: dart.fnType(dart.void, [web_gl.Program, core.List$(core.String), core.int]),
    [_transformFeedbackVaryings_1]: dart.fnType(dart.void, [web_gl.Program, core.List, dart.dynamic]),
    [$uniform1fv2]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic, core.int], [core.int]),
    [$uniform1iv2]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic, core.int], [core.int]),
    [$uniform1ui]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int]),
    [$uniform1uiv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic], [core.int, core.int]),
    [$uniform2fv2]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic, core.int], [core.int]),
    [$uniform2iv2]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic, core.int], [core.int]),
    [$uniform2ui]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int]),
    [$uniform2uiv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic], [core.int, core.int]),
    [$uniform3fv2]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic, core.int], [core.int]),
    [$uniform3iv2]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic, core.int], [core.int]),
    [$uniform3ui]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int, core.int]),
    [$uniform3uiv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic], [core.int, core.int]),
    [$uniform4fv2]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic, core.int], [core.int]),
    [$uniform4iv2]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic, core.int], [core.int]),
    [$uniform4ui]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int, core.int, core.int]),
    [$uniform4uiv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic], [core.int, core.int]),
    [$uniformBlockBinding]: dart.fnType(dart.void, [web_gl.Program, core.int, core.int]),
    [$uniformMatrix2fv2]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic, core.int], [core.int]),
    [$uniformMatrix2x3fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic], [core.int, core.int]),
    [$uniformMatrix2x4fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic], [core.int, core.int]),
    [$uniformMatrix3fv2]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic, core.int], [core.int]),
    [$uniformMatrix3x2fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic], [core.int, core.int]),
    [$uniformMatrix3x4fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic], [core.int, core.int]),
    [$uniformMatrix4fv2]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic, core.int], [core.int]),
    [$uniformMatrix4x2fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic], [core.int, core.int]),
    [$uniformMatrix4x3fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic], [core.int, core.int]),
    [$vertexAttribDivisor]: dart.fnType(dart.void, [core.int, core.int]),
    [$vertexAttribI4i]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int]),
    [$vertexAttribI4iv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
    [$vertexAttribI4ui]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int]),
    [$vertexAttribI4uiv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
    [$vertexAttribIPointer]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int]),
    [$waitSync]: dart.fnType(dart.void, [web_gl.Sync, core.int, core.int]),
    [$activeTexture]: dart.fnType(dart.void, [core.int]),
    [$attachShader]: dart.fnType(dart.void, [web_gl.Program, web_gl.Shader]),
    [$bindAttribLocation]: dart.fnType(dart.void, [web_gl.Program, core.int, core.String]),
    [$bindBuffer]: dart.fnType(dart.void, [core.int, web_gl.Buffer]),
    [$bindFramebuffer]: dart.fnType(dart.void, [core.int, web_gl.Framebuffer]),
    [$bindRenderbuffer]: dart.fnType(dart.void, [core.int, web_gl.Renderbuffer]),
    [$bindTexture]: dart.fnType(dart.void, [core.int, web_gl.Texture]),
    [$blendColor]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$blendEquation]: dart.fnType(dart.void, [core.int]),
    [$blendEquationSeparate]: dart.fnType(dart.void, [core.int, core.int]),
    [$blendFunc]: dart.fnType(dart.void, [core.int, core.int]),
    [$blendFuncSeparate]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
    [$bufferData]: dart.fnType(dart.void, [core.int, dart.dynamic, core.int]),
    [$bufferSubData]: dart.fnType(dart.void, [core.int, core.int, dart.dynamic]),
    [$checkFramebufferStatus]: dart.fnType(core.int, [core.int]),
    [$clear]: dart.fnType(dart.void, [core.int]),
    [$clearColor]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
    [$clearDepth]: dart.fnType(dart.void, [core.num]),
    [$clearStencil]: dart.fnType(dart.void, [core.int]),
    [$colorMask]: dart.fnType(dart.void, [core.bool, core.bool, core.bool, core.bool]),
    [$commit]: dart.fnType(async.Future, []),
    [$compileShader]: dart.fnType(dart.void, [web_gl.Shader]),
    [$compressedTexImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
    [$compressedTexSubImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
    [$copyTexImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
    [$copyTexSubImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
    [$createBuffer]: dart.fnType(web_gl.Buffer, []),
    [$createFramebuffer]: dart.fnType(web_gl.Framebuffer, []),
    [$createProgram]: dart.fnType(web_gl.Program, []),
    [$createRenderbuffer]: dart.fnType(web_gl.Renderbuffer, []),
    [$createShader]: dart.fnType(web_gl.Shader, [core.int]),
    [$createTexture]: dart.fnType(web_gl.Texture, []),
    [$cullFace]: dart.fnType(dart.void, [core.int]),
    [$deleteBuffer]: dart.fnType(dart.void, [web_gl.Buffer]),
    [$deleteFramebuffer]: dart.fnType(dart.void, [web_gl.Framebuffer]),
    [$deleteProgram]: dart.fnType(dart.void, [web_gl.Program]),
    [$deleteRenderbuffer]: dart.fnType(dart.void, [web_gl.Renderbuffer]),
    [$deleteShader]: dart.fnType(dart.void, [web_gl.Shader]),
    [$deleteTexture]: dart.fnType(dart.void, [web_gl.Texture]),
    [$depthFunc]: dart.fnType(dart.void, [core.int]),
    [$depthMask]: dart.fnType(dart.void, [core.bool]),
    [$depthRange]: dart.fnType(dart.void, [core.num, core.num]),
    [$detachShader]: dart.fnType(dart.void, [web_gl.Program, web_gl.Shader]),
    [$disable]: dart.fnType(dart.void, [core.int]),
    [$disableVertexAttribArray]: dart.fnType(dart.void, [core.int]),
    [$drawArrays]: dart.fnType(dart.void, [core.int, core.int, core.int]),
    [$drawElements]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
    [$enable]: dart.fnType(dart.void, [core.int]),
    [$enableVertexAttribArray]: dart.fnType(dart.void, [core.int]),
    [$finish]: dart.fnType(dart.void, []),
    [$flush]: dart.fnType(dart.void, []),
    [$framebufferRenderbuffer]: dart.fnType(dart.void, [core.int, core.int, core.int, web_gl.Renderbuffer]),
    [$framebufferTexture2D]: dart.fnType(dart.void, [core.int, core.int, core.int, web_gl.Texture, core.int]),
    [$frontFace]: dart.fnType(dart.void, [core.int]),
    [$generateMipmap]: dart.fnType(dart.void, [core.int]),
    [$getActiveAttrib]: dart.fnType(web_gl.ActiveInfo, [web_gl.Program, core.int]),
    [$getActiveUniform]: dart.fnType(web_gl.ActiveInfo, [web_gl.Program, core.int]),
    [$getAttachedShaders]: dart.fnType(core.List$(web_gl.Shader), [web_gl.Program]),
    [$getAttribLocation]: dart.fnType(core.int, [web_gl.Program, core.String]),
    [$getBufferParameter]: dart.fnType(core.Object, [core.int, core.int]),
    [$getContextAttributes]: dart.fnType(core.Map, []),
    [_getContextAttributes_1$]: dart.fnType(dart.dynamic, []),
    [$getError]: dart.fnType(core.int, []),
    [$getExtension]: dart.fnType(core.Object, [core.String]),
    [$getFramebufferAttachmentParameter]: dart.fnType(core.Object, [core.int, core.int, core.int]),
    [$getParameter]: dart.fnType(core.Object, [core.int]),
    [$getProgramInfoLog]: dart.fnType(core.String, [web_gl.Program]),
    [$getProgramParameter]: dart.fnType(core.Object, [web_gl.Program, core.int]),
    [$getRenderbufferParameter]: dart.fnType(core.Object, [core.int, core.int]),
    [$getShaderInfoLog]: dart.fnType(core.String, [web_gl.Shader]),
    [$getShaderParameter]: dart.fnType(core.Object, [web_gl.Shader, core.int]),
    [$getShaderPrecisionFormat]: dart.fnType(web_gl.ShaderPrecisionFormat, [core.int, core.int]),
    [$getShaderSource]: dart.fnType(core.String, [web_gl.Shader]),
    [$getSupportedExtensions]: dart.fnType(core.List$(core.String), []),
    [$getTexParameter]: dart.fnType(core.Object, [core.int, core.int]),
    [$getUniform]: dart.fnType(core.Object, [web_gl.Program, web_gl.UniformLocation]),
    [$getUniformLocation]: dart.fnType(web_gl.UniformLocation, [web_gl.Program, core.String]),
    [$getVertexAttrib]: dart.fnType(core.Object, [core.int, core.int]),
    [$getVertexAttribOffset]: dart.fnType(core.int, [core.int, core.int]),
    [$hint]: dart.fnType(dart.void, [core.int, core.int]),
    [$isBuffer]: dart.fnType(core.bool, [web_gl.Buffer]),
    [$isContextLost]: dart.fnType(core.bool, []),
    [$isEnabled]: dart.fnType(core.bool, [core.int]),
    [$isFramebuffer]: dart.fnType(core.bool, [web_gl.Framebuffer]),
    [$isProgram]: dart.fnType(core.bool, [web_gl.Program]),
    [$isRenderbuffer]: dart.fnType(core.bool, [web_gl.Renderbuffer]),
    [$isShader]: dart.fnType(core.bool, [web_gl.Shader]),
    [$isTexture]: dart.fnType(core.bool, [web_gl.Texture]),
    [$lineWidth]: dart.fnType(dart.void, [core.num]),
    [$linkProgram]: dart.fnType(dart.void, [web_gl.Program]),
    [$pixelStorei]: dart.fnType(dart.void, [core.int, core.int]),
    [$polygonOffset]: dart.fnType(dart.void, [core.num, core.num]),
    [_readPixels]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
    [$renderbufferStorage]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
    [$sampleCoverage]: dart.fnType(dart.void, [core.num, core.bool]),
    [$scissor]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
    [$shaderSource]: dart.fnType(dart.void, [web_gl.Shader, core.String]),
    [$stencilFunc]: dart.fnType(dart.void, [core.int, core.int, core.int]),
    [$stencilFuncSeparate]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
    [$stencilMask]: dart.fnType(dart.void, [core.int]),
    [$stencilMaskSeparate]: dart.fnType(dart.void, [core.int, core.int]),
    [$stencilOp]: dart.fnType(dart.void, [core.int, core.int, core.int]),
    [$stencilOpSeparate]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
    [$texImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int, core.int, typed_data.TypedData]),
    [_texImage2D_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int, dart.dynamic, dart.dynamic, typed_data.TypedData]),
    [_texImage2D_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_texImage2D_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageElement]),
    [_texImage2D_4]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.CanvasElement]),
    [_texImage2D_5]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.VideoElement]),
    [_texImage2D_6]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageBitmap]),
    [$texParameterf]: dart.fnType(dart.void, [core.int, core.int, core.num]),
    [$texParameteri]: dart.fnType(dart.void, [core.int, core.int, core.int]),
    [$texSubImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int, typed_data.TypedData]),
    [_texSubImage2D_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int, dart.dynamic, typed_data.TypedData]),
    [_texSubImage2D_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
    [_texSubImage2D_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageElement]),
    [_texSubImage2D_4]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.CanvasElement]),
    [_texSubImage2D_5]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.VideoElement]),
    [_texSubImage2D_6]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageBitmap]),
    [$uniform1f]: dart.fnType(dart.void, [web_gl.UniformLocation, core.num]),
    [$uniform1fv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
    [$uniform1i]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int]),
    [$uniform1iv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
    [$uniform2f]: dart.fnType(dart.void, [web_gl.UniformLocation, core.num, core.num]),
    [$uniform2fv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
    [$uniform2i]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int]),
    [$uniform2iv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
    [$uniform3f]: dart.fnType(dart.void, [web_gl.UniformLocation, core.num, core.num, core.num]),
    [$uniform3fv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
    [$uniform3i]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int, core.int]),
    [$uniform3iv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
    [$uniform4f]: dart.fnType(dart.void, [web_gl.UniformLocation, core.num, core.num, core.num, core.num]),
    [$uniform4fv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
    [$uniform4i]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int, core.int, core.int]),
    [$uniform4iv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
    [$uniformMatrix2fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic]),
    [$uniformMatrix3fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic]),
    [$uniformMatrix4fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic]),
    [$useProgram]: dart.fnType(dart.void, [web_gl.Program]),
    [$validateProgram]: dart.fnType(dart.void, [web_gl.Program]),
    [$vertexAttrib1f]: dart.fnType(dart.void, [core.int, core.num]),
    [$vertexAttrib1fv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
    [$vertexAttrib2f]: dart.fnType(dart.void, [core.int, core.num, core.num]),
    [$vertexAttrib2fv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
    [$vertexAttrib3f]: dart.fnType(dart.void, [core.int, core.num, core.num, core.num]),
    [$vertexAttrib3fv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
    [$vertexAttrib4f]: dart.fnType(dart.void, [core.int, core.num, core.num, core.num, core.num]),
    [$vertexAttrib4fv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
    [$vertexAttribPointer]: dart.fnType(dart.void, [core.int, core.int, core.int, core.bool, core.int, core.int]),
    [$viewport]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
    [$readPixels]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData])
  }));
  dart.setFieldSignature(web_gl.RenderingContext2, () => ({
    __proto__: dart.getFields(web_gl.RenderingContext2.__proto__),
    [$canvas]: dart.finalFieldType(web_gl.Canvas),
    [$drawingBufferHeight]: dart.finalFieldType(core.int),
    [$drawingBufferWidth]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("WebGL2RenderingContext", web_gl.RenderingContext2);
  web_gl.Sampler = class Sampler extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.Sampler);
  dart.registerExtension("WebGLSampler", web_gl.Sampler);
  web_gl.Shader = class Shader extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.Shader);
  dart.registerExtension("WebGLShader", web_gl.Shader);
  web_gl.ShaderPrecisionFormat = class ShaderPrecisionFormat extends _interceptors.Interceptor {
    get [$precision]() {
      return this.precision;
    }
    get [$rangeMax]() {
      return this.rangeMax;
    }
    get [$rangeMin]() {
      return this.rangeMin;
    }
  };
  dart.addTypeTests(web_gl.ShaderPrecisionFormat);
  const precision = Symbol("ShaderPrecisionFormat.precision");
  const rangeMax = Symbol("ShaderPrecisionFormat.rangeMax");
  const rangeMin = Symbol("ShaderPrecisionFormat.rangeMin");
  dart.setFieldSignature(web_gl.ShaderPrecisionFormat, () => ({
    __proto__: dart.getFields(web_gl.ShaderPrecisionFormat.__proto__),
    [$precision]: dart.finalFieldType(core.int),
    [$rangeMax]: dart.finalFieldType(core.int),
    [$rangeMin]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("WebGLShaderPrecisionFormat", web_gl.ShaderPrecisionFormat);
  web_gl.Sync = class Sync extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.Sync);
  dart.registerExtension("WebGLSync", web_gl.Sync);
  web_gl.Texture = class Texture extends _interceptors.Interceptor {
    get [$lastUploadedVideoFrameWasSkipped]() {
      return this.lastUploadedVideoFrameWasSkipped;
    }
    get [$lastUploadedVideoHeight]() {
      return this.lastUploadedVideoHeight;
    }
    get [$lastUploadedVideoTimestamp]() {
      return this.lastUploadedVideoTimestamp;
    }
    get [$lastUploadedVideoWidth]() {
      return this.lastUploadedVideoWidth;
    }
  };
  dart.addTypeTests(web_gl.Texture);
  const lastUploadedVideoFrameWasSkipped = Symbol("Texture.lastUploadedVideoFrameWasSkipped");
  const lastUploadedVideoHeight = Symbol("Texture.lastUploadedVideoHeight");
  const lastUploadedVideoTimestamp = Symbol("Texture.lastUploadedVideoTimestamp");
  const lastUploadedVideoWidth = Symbol("Texture.lastUploadedVideoWidth");
  dart.setFieldSignature(web_gl.Texture, () => ({
    __proto__: dart.getFields(web_gl.Texture.__proto__),
    [$lastUploadedVideoFrameWasSkipped]: dart.finalFieldType(core.bool),
    [$lastUploadedVideoHeight]: dart.finalFieldType(core.int),
    [$lastUploadedVideoTimestamp]: dart.finalFieldType(core.num),
    [$lastUploadedVideoWidth]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("WebGLTexture", web_gl.Texture);
  web_gl.TimerQueryExt = class TimerQueryExt extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.TimerQueryExt);
  dart.registerExtension("WebGLTimerQueryEXT", web_gl.TimerQueryExt);
  web_gl.TransformFeedback = class TransformFeedback extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.TransformFeedback);
  dart.registerExtension("WebGLTransformFeedback", web_gl.TransformFeedback);
  web_gl.UniformLocation = class UniformLocation extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.UniformLocation);
  dart.registerExtension("WebGLUniformLocation", web_gl.UniformLocation);
  web_gl.VertexArrayObject = class VertexArrayObject extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.VertexArrayObject);
  dart.registerExtension("WebGLVertexArrayObject", web_gl.VertexArrayObject);
  web_gl.VertexArrayObjectOes = class VertexArrayObjectOes extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl.VertexArrayObjectOes);
  dart.registerExtension("WebGLVertexArrayObjectOES", web_gl.VertexArrayObjectOes);
  web_gl.WebGL = class WebGL extends core.Object {};
  (web_gl.WebGL[dart.mixinNew] = function() {
  }).prototype = web_gl.WebGL.prototype;
  dart.addTypeTests(web_gl.WebGL);
  dart.defineLazy(web_gl.WebGL, {
    /*web_gl.WebGL.ACTIVE_ATTRIBUTES*/get ACTIVE_ATTRIBUTES() {
      return 35721;
    },
    /*web_gl.WebGL.ACTIVE_TEXTURE*/get ACTIVE_TEXTURE() {
      return 34016;
    },
    /*web_gl.WebGL.ACTIVE_UNIFORMS*/get ACTIVE_UNIFORMS() {
      return 35718;
    },
    /*web_gl.WebGL.ACTIVE_UNIFORM_BLOCKS*/get ACTIVE_UNIFORM_BLOCKS() {
      return 35382;
    },
    /*web_gl.WebGL.ALIASED_LINE_WIDTH_RANGE*/get ALIASED_LINE_WIDTH_RANGE() {
      return 33902;
    },
    /*web_gl.WebGL.ALIASED_POINT_SIZE_RANGE*/get ALIASED_POINT_SIZE_RANGE() {
      return 33901;
    },
    /*web_gl.WebGL.ALPHA*/get ALPHA() {
      return 6406;
    },
    /*web_gl.WebGL.ALPHA_BITS*/get ALPHA_BITS() {
      return 3413;
    },
    /*web_gl.WebGL.ALREADY_SIGNALED*/get ALREADY_SIGNALED() {
      return 37146;
    },
    /*web_gl.WebGL.ALWAYS*/get ALWAYS() {
      return 519;
    },
    /*web_gl.WebGL.ANY_SAMPLES_PASSED*/get ANY_SAMPLES_PASSED() {
      return 35887;
    },
    /*web_gl.WebGL.ANY_SAMPLES_PASSED_CONSERVATIVE*/get ANY_SAMPLES_PASSED_CONSERVATIVE() {
      return 36202;
    },
    /*web_gl.WebGL.ARRAY_BUFFER*/get ARRAY_BUFFER() {
      return 34962;
    },
    /*web_gl.WebGL.ARRAY_BUFFER_BINDING*/get ARRAY_BUFFER_BINDING() {
      return 34964;
    },
    /*web_gl.WebGL.ATTACHED_SHADERS*/get ATTACHED_SHADERS() {
      return 35717;
    },
    /*web_gl.WebGL.BACK*/get BACK() {
      return 1029;
    },
    /*web_gl.WebGL.BLEND*/get BLEND() {
      return 3042;
    },
    /*web_gl.WebGL.BLEND_COLOR*/get BLEND_COLOR() {
      return 32773;
    },
    /*web_gl.WebGL.BLEND_DST_ALPHA*/get BLEND_DST_ALPHA() {
      return 32970;
    },
    /*web_gl.WebGL.BLEND_DST_RGB*/get BLEND_DST_RGB() {
      return 32968;
    },
    /*web_gl.WebGL.BLEND_EQUATION*/get BLEND_EQUATION() {
      return 32777;
    },
    /*web_gl.WebGL.BLEND_EQUATION_ALPHA*/get BLEND_EQUATION_ALPHA() {
      return 34877;
    },
    /*web_gl.WebGL.BLEND_EQUATION_RGB*/get BLEND_EQUATION_RGB() {
      return 32777;
    },
    /*web_gl.WebGL.BLEND_SRC_ALPHA*/get BLEND_SRC_ALPHA() {
      return 32971;
    },
    /*web_gl.WebGL.BLEND_SRC_RGB*/get BLEND_SRC_RGB() {
      return 32969;
    },
    /*web_gl.WebGL.BLUE_BITS*/get BLUE_BITS() {
      return 3412;
    },
    /*web_gl.WebGL.BOOL*/get BOOL() {
      return 35670;
    },
    /*web_gl.WebGL.BOOL_VEC2*/get BOOL_VEC2() {
      return 35671;
    },
    /*web_gl.WebGL.BOOL_VEC3*/get BOOL_VEC3() {
      return 35672;
    },
    /*web_gl.WebGL.BOOL_VEC4*/get BOOL_VEC4() {
      return 35673;
    },
    /*web_gl.WebGL.BROWSER_DEFAULT_WEBGL*/get BROWSER_DEFAULT_WEBGL() {
      return 37444;
    },
    /*web_gl.WebGL.BUFFER_SIZE*/get BUFFER_SIZE() {
      return 34660;
    },
    /*web_gl.WebGL.BUFFER_USAGE*/get BUFFER_USAGE() {
      return 34661;
    },
    /*web_gl.WebGL.BYTE*/get BYTE() {
      return 5120;
    },
    /*web_gl.WebGL.CCW*/get CCW() {
      return 2305;
    },
    /*web_gl.WebGL.CLAMP_TO_EDGE*/get CLAMP_TO_EDGE() {
      return 33071;
    },
    /*web_gl.WebGL.COLOR*/get COLOR() {
      return 6144;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT0*/get COLOR_ATTACHMENT0() {
      return 36064;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT0_WEBGL*/get COLOR_ATTACHMENT0_WEBGL() {
      return 36064;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT1*/get COLOR_ATTACHMENT1() {
      return 36065;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT10*/get COLOR_ATTACHMENT10() {
      return 36074;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT10_WEBGL*/get COLOR_ATTACHMENT10_WEBGL() {
      return 36074;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT11*/get COLOR_ATTACHMENT11() {
      return 36075;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT11_WEBGL*/get COLOR_ATTACHMENT11_WEBGL() {
      return 36075;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT12*/get COLOR_ATTACHMENT12() {
      return 36076;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT12_WEBGL*/get COLOR_ATTACHMENT12_WEBGL() {
      return 36076;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT13*/get COLOR_ATTACHMENT13() {
      return 36077;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT13_WEBGL*/get COLOR_ATTACHMENT13_WEBGL() {
      return 36077;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT14*/get COLOR_ATTACHMENT14() {
      return 36078;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT14_WEBGL*/get COLOR_ATTACHMENT14_WEBGL() {
      return 36078;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT15*/get COLOR_ATTACHMENT15() {
      return 36079;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT15_WEBGL*/get COLOR_ATTACHMENT15_WEBGL() {
      return 36079;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT1_WEBGL*/get COLOR_ATTACHMENT1_WEBGL() {
      return 36065;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT2*/get COLOR_ATTACHMENT2() {
      return 36066;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT2_WEBGL*/get COLOR_ATTACHMENT2_WEBGL() {
      return 36066;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT3*/get COLOR_ATTACHMENT3() {
      return 36067;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT3_WEBGL*/get COLOR_ATTACHMENT3_WEBGL() {
      return 36067;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT4*/get COLOR_ATTACHMENT4() {
      return 36068;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT4_WEBGL*/get COLOR_ATTACHMENT4_WEBGL() {
      return 36068;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT5*/get COLOR_ATTACHMENT5() {
      return 36069;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT5_WEBGL*/get COLOR_ATTACHMENT5_WEBGL() {
      return 36069;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT6*/get COLOR_ATTACHMENT6() {
      return 36070;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT6_WEBGL*/get COLOR_ATTACHMENT6_WEBGL() {
      return 36070;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT7*/get COLOR_ATTACHMENT7() {
      return 36071;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT7_WEBGL*/get COLOR_ATTACHMENT7_WEBGL() {
      return 36071;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT8*/get COLOR_ATTACHMENT8() {
      return 36072;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT8_WEBGL*/get COLOR_ATTACHMENT8_WEBGL() {
      return 36072;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT9*/get COLOR_ATTACHMENT9() {
      return 36073;
    },
    /*web_gl.WebGL.COLOR_ATTACHMENT9_WEBGL*/get COLOR_ATTACHMENT9_WEBGL() {
      return 36073;
    },
    /*web_gl.WebGL.COLOR_BUFFER_BIT*/get COLOR_BUFFER_BIT() {
      return 16384;
    },
    /*web_gl.WebGL.COLOR_CLEAR_VALUE*/get COLOR_CLEAR_VALUE() {
      return 3106;
    },
    /*web_gl.WebGL.COLOR_WRITEMASK*/get COLOR_WRITEMASK() {
      return 3107;
    },
    /*web_gl.WebGL.COMPARE_REF_TO_TEXTURE*/get COMPARE_REF_TO_TEXTURE() {
      return 34894;
    },
    /*web_gl.WebGL.COMPILE_STATUS*/get COMPILE_STATUS() {
      return 35713;
    },
    /*web_gl.WebGL.COMPRESSED_TEXTURE_FORMATS*/get COMPRESSED_TEXTURE_FORMATS() {
      return 34467;
    },
    /*web_gl.WebGL.CONDITION_SATISFIED*/get CONDITION_SATISFIED() {
      return 37148;
    },
    /*web_gl.WebGL.CONSTANT_ALPHA*/get CONSTANT_ALPHA() {
      return 32771;
    },
    /*web_gl.WebGL.CONSTANT_COLOR*/get CONSTANT_COLOR() {
      return 32769;
    },
    /*web_gl.WebGL.CONTEXT_LOST_WEBGL*/get CONTEXT_LOST_WEBGL() {
      return 37442;
    },
    /*web_gl.WebGL.COPY_READ_BUFFER*/get COPY_READ_BUFFER() {
      return 36662;
    },
    /*web_gl.WebGL.COPY_READ_BUFFER_BINDING*/get COPY_READ_BUFFER_BINDING() {
      return 36662;
    },
    /*web_gl.WebGL.COPY_WRITE_BUFFER*/get COPY_WRITE_BUFFER() {
      return 36663;
    },
    /*web_gl.WebGL.COPY_WRITE_BUFFER_BINDING*/get COPY_WRITE_BUFFER_BINDING() {
      return 36663;
    },
    /*web_gl.WebGL.CULL_FACE*/get CULL_FACE() {
      return 2884;
    },
    /*web_gl.WebGL.CULL_FACE_MODE*/get CULL_FACE_MODE() {
      return 2885;
    },
    /*web_gl.WebGL.CURRENT_PROGRAM*/get CURRENT_PROGRAM() {
      return 35725;
    },
    /*web_gl.WebGL.CURRENT_QUERY*/get CURRENT_QUERY() {
      return 34917;
    },
    /*web_gl.WebGL.CURRENT_VERTEX_ATTRIB*/get CURRENT_VERTEX_ATTRIB() {
      return 34342;
    },
    /*web_gl.WebGL.CW*/get CW() {
      return 2304;
    },
    /*web_gl.WebGL.DECR*/get DECR() {
      return 7683;
    },
    /*web_gl.WebGL.DECR_WRAP*/get DECR_WRAP() {
      return 34056;
    },
    /*web_gl.WebGL.DELETE_STATUS*/get DELETE_STATUS() {
      return 35712;
    },
    /*web_gl.WebGL.DEPTH*/get DEPTH() {
      return 6145;
    },
    /*web_gl.WebGL.DEPTH24_STENCIL8*/get DEPTH24_STENCIL8() {
      return 35056;
    },
    /*web_gl.WebGL.DEPTH32F_STENCIL8*/get DEPTH32F_STENCIL8() {
      return 36013;
    },
    /*web_gl.WebGL.DEPTH_ATTACHMENT*/get DEPTH_ATTACHMENT() {
      return 36096;
    },
    /*web_gl.WebGL.DEPTH_BITS*/get DEPTH_BITS() {
      return 3414;
    },
    /*web_gl.WebGL.DEPTH_BUFFER_BIT*/get DEPTH_BUFFER_BIT() {
      return 256;
    },
    /*web_gl.WebGL.DEPTH_CLEAR_VALUE*/get DEPTH_CLEAR_VALUE() {
      return 2931;
    },
    /*web_gl.WebGL.DEPTH_COMPONENT*/get DEPTH_COMPONENT() {
      return 6402;
    },
    /*web_gl.WebGL.DEPTH_COMPONENT16*/get DEPTH_COMPONENT16() {
      return 33189;
    },
    /*web_gl.WebGL.DEPTH_COMPONENT24*/get DEPTH_COMPONENT24() {
      return 33190;
    },
    /*web_gl.WebGL.DEPTH_COMPONENT32F*/get DEPTH_COMPONENT32F() {
      return 36012;
    },
    /*web_gl.WebGL.DEPTH_FUNC*/get DEPTH_FUNC() {
      return 2932;
    },
    /*web_gl.WebGL.DEPTH_RANGE*/get DEPTH_RANGE() {
      return 2928;
    },
    /*web_gl.WebGL.DEPTH_STENCIL*/get DEPTH_STENCIL() {
      return 34041;
    },
    /*web_gl.WebGL.DEPTH_STENCIL_ATTACHMENT*/get DEPTH_STENCIL_ATTACHMENT() {
      return 33306;
    },
    /*web_gl.WebGL.DEPTH_TEST*/get DEPTH_TEST() {
      return 2929;
    },
    /*web_gl.WebGL.DEPTH_WRITEMASK*/get DEPTH_WRITEMASK() {
      return 2930;
    },
    /*web_gl.WebGL.DITHER*/get DITHER() {
      return 3024;
    },
    /*web_gl.WebGL.DONT_CARE*/get DONT_CARE() {
      return 4352;
    },
    /*web_gl.WebGL.DRAW_BUFFER0*/get DRAW_BUFFER0() {
      return 34853;
    },
    /*web_gl.WebGL.DRAW_BUFFER0_WEBGL*/get DRAW_BUFFER0_WEBGL() {
      return 34853;
    },
    /*web_gl.WebGL.DRAW_BUFFER1*/get DRAW_BUFFER1() {
      return 34854;
    },
    /*web_gl.WebGL.DRAW_BUFFER10*/get DRAW_BUFFER10() {
      return 34863;
    },
    /*web_gl.WebGL.DRAW_BUFFER10_WEBGL*/get DRAW_BUFFER10_WEBGL() {
      return 34863;
    },
    /*web_gl.WebGL.DRAW_BUFFER11*/get DRAW_BUFFER11() {
      return 34864;
    },
    /*web_gl.WebGL.DRAW_BUFFER11_WEBGL*/get DRAW_BUFFER11_WEBGL() {
      return 34864;
    },
    /*web_gl.WebGL.DRAW_BUFFER12*/get DRAW_BUFFER12() {
      return 34865;
    },
    /*web_gl.WebGL.DRAW_BUFFER12_WEBGL*/get DRAW_BUFFER12_WEBGL() {
      return 34865;
    },
    /*web_gl.WebGL.DRAW_BUFFER13*/get DRAW_BUFFER13() {
      return 34866;
    },
    /*web_gl.WebGL.DRAW_BUFFER13_WEBGL*/get DRAW_BUFFER13_WEBGL() {
      return 34866;
    },
    /*web_gl.WebGL.DRAW_BUFFER14*/get DRAW_BUFFER14() {
      return 34867;
    },
    /*web_gl.WebGL.DRAW_BUFFER14_WEBGL*/get DRAW_BUFFER14_WEBGL() {
      return 34867;
    },
    /*web_gl.WebGL.DRAW_BUFFER15*/get DRAW_BUFFER15() {
      return 34868;
    },
    /*web_gl.WebGL.DRAW_BUFFER15_WEBGL*/get DRAW_BUFFER15_WEBGL() {
      return 34868;
    },
    /*web_gl.WebGL.DRAW_BUFFER1_WEBGL*/get DRAW_BUFFER1_WEBGL() {
      return 34854;
    },
    /*web_gl.WebGL.DRAW_BUFFER2*/get DRAW_BUFFER2() {
      return 34855;
    },
    /*web_gl.WebGL.DRAW_BUFFER2_WEBGL*/get DRAW_BUFFER2_WEBGL() {
      return 34855;
    },
    /*web_gl.WebGL.DRAW_BUFFER3*/get DRAW_BUFFER3() {
      return 34856;
    },
    /*web_gl.WebGL.DRAW_BUFFER3_WEBGL*/get DRAW_BUFFER3_WEBGL() {
      return 34856;
    },
    /*web_gl.WebGL.DRAW_BUFFER4*/get DRAW_BUFFER4() {
      return 34857;
    },
    /*web_gl.WebGL.DRAW_BUFFER4_WEBGL*/get DRAW_BUFFER4_WEBGL() {
      return 34857;
    },
    /*web_gl.WebGL.DRAW_BUFFER5*/get DRAW_BUFFER5() {
      return 34858;
    },
    /*web_gl.WebGL.DRAW_BUFFER5_WEBGL*/get DRAW_BUFFER5_WEBGL() {
      return 34858;
    },
    /*web_gl.WebGL.DRAW_BUFFER6*/get DRAW_BUFFER6() {
      return 34859;
    },
    /*web_gl.WebGL.DRAW_BUFFER6_WEBGL*/get DRAW_BUFFER6_WEBGL() {
      return 34859;
    },
    /*web_gl.WebGL.DRAW_BUFFER7*/get DRAW_BUFFER7() {
      return 34860;
    },
    /*web_gl.WebGL.DRAW_BUFFER7_WEBGL*/get DRAW_BUFFER7_WEBGL() {
      return 34860;
    },
    /*web_gl.WebGL.DRAW_BUFFER8*/get DRAW_BUFFER8() {
      return 34861;
    },
    /*web_gl.WebGL.DRAW_BUFFER8_WEBGL*/get DRAW_BUFFER8_WEBGL() {
      return 34861;
    },
    /*web_gl.WebGL.DRAW_BUFFER9*/get DRAW_BUFFER9() {
      return 34862;
    },
    /*web_gl.WebGL.DRAW_BUFFER9_WEBGL*/get DRAW_BUFFER9_WEBGL() {
      return 34862;
    },
    /*web_gl.WebGL.DRAW_FRAMEBUFFER*/get DRAW_FRAMEBUFFER() {
      return 36009;
    },
    /*web_gl.WebGL.DRAW_FRAMEBUFFER_BINDING*/get DRAW_FRAMEBUFFER_BINDING() {
      return 36006;
    },
    /*web_gl.WebGL.DST_ALPHA*/get DST_ALPHA() {
      return 772;
    },
    /*web_gl.WebGL.DST_COLOR*/get DST_COLOR() {
      return 774;
    },
    /*web_gl.WebGL.DYNAMIC_COPY*/get DYNAMIC_COPY() {
      return 35050;
    },
    /*web_gl.WebGL.DYNAMIC_DRAW*/get DYNAMIC_DRAW() {
      return 35048;
    },
    /*web_gl.WebGL.DYNAMIC_READ*/get DYNAMIC_READ() {
      return 35049;
    },
    /*web_gl.WebGL.ELEMENT_ARRAY_BUFFER*/get ELEMENT_ARRAY_BUFFER() {
      return 34963;
    },
    /*web_gl.WebGL.ELEMENT_ARRAY_BUFFER_BINDING*/get ELEMENT_ARRAY_BUFFER_BINDING() {
      return 34965;
    },
    /*web_gl.WebGL.EQUAL*/get EQUAL() {
      return 514;
    },
    /*web_gl.WebGL.FASTEST*/get FASTEST() {
      return 4353;
    },
    /*web_gl.WebGL.FLOAT*/get FLOAT() {
      return 5126;
    },
    /*web_gl.WebGL.FLOAT_32_UNSIGNED_INT_24_8_REV*/get FLOAT_32_UNSIGNED_INT_24_8_REV() {
      return 36269;
    },
    /*web_gl.WebGL.FLOAT_MAT2*/get FLOAT_MAT2() {
      return 35674;
    },
    /*web_gl.WebGL.FLOAT_MAT2x3*/get FLOAT_MAT2x3() {
      return 35685;
    },
    /*web_gl.WebGL.FLOAT_MAT2x4*/get FLOAT_MAT2x4() {
      return 35686;
    },
    /*web_gl.WebGL.FLOAT_MAT3*/get FLOAT_MAT3() {
      return 35675;
    },
    /*web_gl.WebGL.FLOAT_MAT3x2*/get FLOAT_MAT3x2() {
      return 35687;
    },
    /*web_gl.WebGL.FLOAT_MAT3x4*/get FLOAT_MAT3x4() {
      return 35688;
    },
    /*web_gl.WebGL.FLOAT_MAT4*/get FLOAT_MAT4() {
      return 35676;
    },
    /*web_gl.WebGL.FLOAT_MAT4x2*/get FLOAT_MAT4x2() {
      return 35689;
    },
    /*web_gl.WebGL.FLOAT_MAT4x3*/get FLOAT_MAT4x3() {
      return 35690;
    },
    /*web_gl.WebGL.FLOAT_VEC2*/get FLOAT_VEC2() {
      return 35664;
    },
    /*web_gl.WebGL.FLOAT_VEC3*/get FLOAT_VEC3() {
      return 35665;
    },
    /*web_gl.WebGL.FLOAT_VEC4*/get FLOAT_VEC4() {
      return 35666;
    },
    /*web_gl.WebGL.FRAGMENT_SHADER*/get FRAGMENT_SHADER() {
      return 35632;
    },
    /*web_gl.WebGL.FRAGMENT_SHADER_DERIVATIVE_HINT*/get FRAGMENT_SHADER_DERIVATIVE_HINT() {
      return 35723;
    },
    /*web_gl.WebGL.FRAMEBUFFER*/get FRAMEBUFFER() {
      return 36160;
    },
    /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE*/get FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE() {
      return 33301;
    },
    /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE*/get FRAMEBUFFER_ATTACHMENT_BLUE_SIZE() {
      return 33300;
    },
    /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING*/get FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING() {
      return 33296;
    },
    /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE*/get FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE() {
      return 33297;
    },
    /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE*/get FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE() {
      return 33302;
    },
    /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE*/get FRAMEBUFFER_ATTACHMENT_GREEN_SIZE() {
      return 33299;
    },
    /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME*/get FRAMEBUFFER_ATTACHMENT_OBJECT_NAME() {
      return 36049;
    },
    /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE*/get FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE() {
      return 36048;
    },
    /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_RED_SIZE*/get FRAMEBUFFER_ATTACHMENT_RED_SIZE() {
      return 33298;
    },
    /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE*/get FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE() {
      return 33303;
    },
    /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE*/get FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE() {
      return 36051;
    },
    /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER*/get FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER() {
      return 36052;
    },
    /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL*/get FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL() {
      return 36050;
    },
    /*web_gl.WebGL.FRAMEBUFFER_BINDING*/get FRAMEBUFFER_BINDING() {
      return 36006;
    },
    /*web_gl.WebGL.FRAMEBUFFER_COMPLETE*/get FRAMEBUFFER_COMPLETE() {
      return 36053;
    },
    /*web_gl.WebGL.FRAMEBUFFER_DEFAULT*/get FRAMEBUFFER_DEFAULT() {
      return 33304;
    },
    /*web_gl.WebGL.FRAMEBUFFER_INCOMPLETE_ATTACHMENT*/get FRAMEBUFFER_INCOMPLETE_ATTACHMENT() {
      return 36054;
    },
    /*web_gl.WebGL.FRAMEBUFFER_INCOMPLETE_DIMENSIONS*/get FRAMEBUFFER_INCOMPLETE_DIMENSIONS() {
      return 36057;
    },
    /*web_gl.WebGL.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT*/get FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT() {
      return 36055;
    },
    /*web_gl.WebGL.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE*/get FRAMEBUFFER_INCOMPLETE_MULTISAMPLE() {
      return 36182;
    },
    /*web_gl.WebGL.FRAMEBUFFER_UNSUPPORTED*/get FRAMEBUFFER_UNSUPPORTED() {
      return 36061;
    },
    /*web_gl.WebGL.FRONT*/get FRONT() {
      return 1028;
    },
    /*web_gl.WebGL.FRONT_AND_BACK*/get FRONT_AND_BACK() {
      return 1032;
    },
    /*web_gl.WebGL.FRONT_FACE*/get FRONT_FACE() {
      return 2886;
    },
    /*web_gl.WebGL.FUNC_ADD*/get FUNC_ADD() {
      return 32774;
    },
    /*web_gl.WebGL.FUNC_REVERSE_SUBTRACT*/get FUNC_REVERSE_SUBTRACT() {
      return 32779;
    },
    /*web_gl.WebGL.FUNC_SUBTRACT*/get FUNC_SUBTRACT() {
      return 32778;
    },
    /*web_gl.WebGL.GENERATE_MIPMAP_HINT*/get GENERATE_MIPMAP_HINT() {
      return 33170;
    },
    /*web_gl.WebGL.GEQUAL*/get GEQUAL() {
      return 518;
    },
    /*web_gl.WebGL.GREATER*/get GREATER() {
      return 516;
    },
    /*web_gl.WebGL.GREEN_BITS*/get GREEN_BITS() {
      return 3411;
    },
    /*web_gl.WebGL.HALF_FLOAT*/get HALF_FLOAT() {
      return 5131;
    },
    /*web_gl.WebGL.HIGH_FLOAT*/get HIGH_FLOAT() {
      return 36338;
    },
    /*web_gl.WebGL.HIGH_INT*/get HIGH_INT() {
      return 36341;
    },
    /*web_gl.WebGL.IMPLEMENTATION_COLOR_READ_FORMAT*/get IMPLEMENTATION_COLOR_READ_FORMAT() {
      return 35739;
    },
    /*web_gl.WebGL.IMPLEMENTATION_COLOR_READ_TYPE*/get IMPLEMENTATION_COLOR_READ_TYPE() {
      return 35738;
    },
    /*web_gl.WebGL.INCR*/get INCR() {
      return 7682;
    },
    /*web_gl.WebGL.INCR_WRAP*/get INCR_WRAP() {
      return 34055;
    },
    /*web_gl.WebGL.INT*/get INT() {
      return 5124;
    },
    /*web_gl.WebGL.INTERLEAVED_ATTRIBS*/get INTERLEAVED_ATTRIBS() {
      return 35980;
    },
    /*web_gl.WebGL.INT_2_10_10_10_REV*/get INT_2_10_10_10_REV() {
      return 36255;
    },
    /*web_gl.WebGL.INT_SAMPLER_2D*/get INT_SAMPLER_2D() {
      return 36298;
    },
    /*web_gl.WebGL.INT_SAMPLER_2D_ARRAY*/get INT_SAMPLER_2D_ARRAY() {
      return 36303;
    },
    /*web_gl.WebGL.INT_SAMPLER_3D*/get INT_SAMPLER_3D() {
      return 36299;
    },
    /*web_gl.WebGL.INT_SAMPLER_CUBE*/get INT_SAMPLER_CUBE() {
      return 36300;
    },
    /*web_gl.WebGL.INT_VEC2*/get INT_VEC2() {
      return 35667;
    },
    /*web_gl.WebGL.INT_VEC3*/get INT_VEC3() {
      return 35668;
    },
    /*web_gl.WebGL.INT_VEC4*/get INT_VEC4() {
      return 35669;
    },
    /*web_gl.WebGL.INVALID_ENUM*/get INVALID_ENUM() {
      return 1280;
    },
    /*web_gl.WebGL.INVALID_FRAMEBUFFER_OPERATION*/get INVALID_FRAMEBUFFER_OPERATION() {
      return 1286;
    },
    /*web_gl.WebGL.INVALID_INDEX*/get INVALID_INDEX() {
      return 4294967295;
    },
    /*web_gl.WebGL.INVALID_OPERATION*/get INVALID_OPERATION() {
      return 1282;
    },
    /*web_gl.WebGL.INVALID_VALUE*/get INVALID_VALUE() {
      return 1281;
    },
    /*web_gl.WebGL.INVERT*/get INVERT() {
      return 5386;
    },
    /*web_gl.WebGL.KEEP*/get KEEP() {
      return 7680;
    },
    /*web_gl.WebGL.LEQUAL*/get LEQUAL() {
      return 515;
    },
    /*web_gl.WebGL.LESS*/get LESS() {
      return 513;
    },
    /*web_gl.WebGL.LINEAR*/get LINEAR() {
      return 9729;
    },
    /*web_gl.WebGL.LINEAR_MIPMAP_LINEAR*/get LINEAR_MIPMAP_LINEAR() {
      return 9987;
    },
    /*web_gl.WebGL.LINEAR_MIPMAP_NEAREST*/get LINEAR_MIPMAP_NEAREST() {
      return 9985;
    },
    /*web_gl.WebGL.LINES*/get LINES() {
      return 1;
    },
    /*web_gl.WebGL.LINE_LOOP*/get LINE_LOOP() {
      return 2;
    },
    /*web_gl.WebGL.LINE_STRIP*/get LINE_STRIP() {
      return 3;
    },
    /*web_gl.WebGL.LINE_WIDTH*/get LINE_WIDTH() {
      return 2849;
    },
    /*web_gl.WebGL.LINK_STATUS*/get LINK_STATUS() {
      return 35714;
    },
    /*web_gl.WebGL.LOW_FLOAT*/get LOW_FLOAT() {
      return 36336;
    },
    /*web_gl.WebGL.LOW_INT*/get LOW_INT() {
      return 36339;
    },
    /*web_gl.WebGL.LUMINANCE*/get LUMINANCE() {
      return 6409;
    },
    /*web_gl.WebGL.LUMINANCE_ALPHA*/get LUMINANCE_ALPHA() {
      return 6410;
    },
    /*web_gl.WebGL.MAX*/get MAX() {
      return 32776;
    },
    /*web_gl.WebGL.MAX_3D_TEXTURE_SIZE*/get MAX_3D_TEXTURE_SIZE() {
      return 32883;
    },
    /*web_gl.WebGL.MAX_ARRAY_TEXTURE_LAYERS*/get MAX_ARRAY_TEXTURE_LAYERS() {
      return 35071;
    },
    /*web_gl.WebGL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL*/get MAX_CLIENT_WAIT_TIMEOUT_WEBGL() {
      return 37447;
    },
    /*web_gl.WebGL.MAX_COLOR_ATTACHMENTS*/get MAX_COLOR_ATTACHMENTS() {
      return 36063;
    },
    /*web_gl.WebGL.MAX_COLOR_ATTACHMENTS_WEBGL*/get MAX_COLOR_ATTACHMENTS_WEBGL() {
      return 36063;
    },
    /*web_gl.WebGL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS*/get MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS() {
      return 35379;
    },
    /*web_gl.WebGL.MAX_COMBINED_TEXTURE_IMAGE_UNITS*/get MAX_COMBINED_TEXTURE_IMAGE_UNITS() {
      return 35661;
    },
    /*web_gl.WebGL.MAX_COMBINED_UNIFORM_BLOCKS*/get MAX_COMBINED_UNIFORM_BLOCKS() {
      return 35374;
    },
    /*web_gl.WebGL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS*/get MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS() {
      return 35377;
    },
    /*web_gl.WebGL.MAX_CUBE_MAP_TEXTURE_SIZE*/get MAX_CUBE_MAP_TEXTURE_SIZE() {
      return 34076;
    },
    /*web_gl.WebGL.MAX_DRAW_BUFFERS*/get MAX_DRAW_BUFFERS() {
      return 34852;
    },
    /*web_gl.WebGL.MAX_DRAW_BUFFERS_WEBGL*/get MAX_DRAW_BUFFERS_WEBGL() {
      return 34852;
    },
    /*web_gl.WebGL.MAX_ELEMENTS_INDICES*/get MAX_ELEMENTS_INDICES() {
      return 33001;
    },
    /*web_gl.WebGL.MAX_ELEMENTS_VERTICES*/get MAX_ELEMENTS_VERTICES() {
      return 33000;
    },
    /*web_gl.WebGL.MAX_ELEMENT_INDEX*/get MAX_ELEMENT_INDEX() {
      return 36203;
    },
    /*web_gl.WebGL.MAX_FRAGMENT_INPUT_COMPONENTS*/get MAX_FRAGMENT_INPUT_COMPONENTS() {
      return 37157;
    },
    /*web_gl.WebGL.MAX_FRAGMENT_UNIFORM_BLOCKS*/get MAX_FRAGMENT_UNIFORM_BLOCKS() {
      return 35373;
    },
    /*web_gl.WebGL.MAX_FRAGMENT_UNIFORM_COMPONENTS*/get MAX_FRAGMENT_UNIFORM_COMPONENTS() {
      return 35657;
    },
    /*web_gl.WebGL.MAX_FRAGMENT_UNIFORM_VECTORS*/get MAX_FRAGMENT_UNIFORM_VECTORS() {
      return 36349;
    },
    /*web_gl.WebGL.MAX_PROGRAM_TEXEL_OFFSET*/get MAX_PROGRAM_TEXEL_OFFSET() {
      return 35077;
    },
    /*web_gl.WebGL.MAX_RENDERBUFFER_SIZE*/get MAX_RENDERBUFFER_SIZE() {
      return 34024;
    },
    /*web_gl.WebGL.MAX_SAMPLES*/get MAX_SAMPLES() {
      return 36183;
    },
    /*web_gl.WebGL.MAX_SERVER_WAIT_TIMEOUT*/get MAX_SERVER_WAIT_TIMEOUT() {
      return 37137;
    },
    /*web_gl.WebGL.MAX_TEXTURE_IMAGE_UNITS*/get MAX_TEXTURE_IMAGE_UNITS() {
      return 34930;
    },
    /*web_gl.WebGL.MAX_TEXTURE_LOD_BIAS*/get MAX_TEXTURE_LOD_BIAS() {
      return 34045;
    },
    /*web_gl.WebGL.MAX_TEXTURE_SIZE*/get MAX_TEXTURE_SIZE() {
      return 3379;
    },
    /*web_gl.WebGL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS*/get MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS() {
      return 35978;
    },
    /*web_gl.WebGL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS*/get MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS() {
      return 35979;
    },
    /*web_gl.WebGL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS*/get MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS() {
      return 35968;
    },
    /*web_gl.WebGL.MAX_UNIFORM_BLOCK_SIZE*/get MAX_UNIFORM_BLOCK_SIZE() {
      return 35376;
    },
    /*web_gl.WebGL.MAX_UNIFORM_BUFFER_BINDINGS*/get MAX_UNIFORM_BUFFER_BINDINGS() {
      return 35375;
    },
    /*web_gl.WebGL.MAX_VARYING_COMPONENTS*/get MAX_VARYING_COMPONENTS() {
      return 35659;
    },
    /*web_gl.WebGL.MAX_VARYING_VECTORS*/get MAX_VARYING_VECTORS() {
      return 36348;
    },
    /*web_gl.WebGL.MAX_VERTEX_ATTRIBS*/get MAX_VERTEX_ATTRIBS() {
      return 34921;
    },
    /*web_gl.WebGL.MAX_VERTEX_OUTPUT_COMPONENTS*/get MAX_VERTEX_OUTPUT_COMPONENTS() {
      return 37154;
    },
    /*web_gl.WebGL.MAX_VERTEX_TEXTURE_IMAGE_UNITS*/get MAX_VERTEX_TEXTURE_IMAGE_UNITS() {
      return 35660;
    },
    /*web_gl.WebGL.MAX_VERTEX_UNIFORM_BLOCKS*/get MAX_VERTEX_UNIFORM_BLOCKS() {
      return 35371;
    },
    /*web_gl.WebGL.MAX_VERTEX_UNIFORM_COMPONENTS*/get MAX_VERTEX_UNIFORM_COMPONENTS() {
      return 35658;
    },
    /*web_gl.WebGL.MAX_VERTEX_UNIFORM_VECTORS*/get MAX_VERTEX_UNIFORM_VECTORS() {
      return 36347;
    },
    /*web_gl.WebGL.MAX_VIEWPORT_DIMS*/get MAX_VIEWPORT_DIMS() {
      return 3386;
    },
    /*web_gl.WebGL.MEDIUM_FLOAT*/get MEDIUM_FLOAT() {
      return 36337;
    },
    /*web_gl.WebGL.MEDIUM_INT*/get MEDIUM_INT() {
      return 36340;
    },
    /*web_gl.WebGL.MIN*/get MIN() {
      return 32775;
    },
    /*web_gl.WebGL.MIN_PROGRAM_TEXEL_OFFSET*/get MIN_PROGRAM_TEXEL_OFFSET() {
      return 35076;
    },
    /*web_gl.WebGL.MIRRORED_REPEAT*/get MIRRORED_REPEAT() {
      return 33648;
    },
    /*web_gl.WebGL.NEAREST*/get NEAREST() {
      return 9728;
    },
    /*web_gl.WebGL.NEAREST_MIPMAP_LINEAR*/get NEAREST_MIPMAP_LINEAR() {
      return 9986;
    },
    /*web_gl.WebGL.NEAREST_MIPMAP_NEAREST*/get NEAREST_MIPMAP_NEAREST() {
      return 9984;
    },
    /*web_gl.WebGL.NEVER*/get NEVER() {
      return 512;
    },
    /*web_gl.WebGL.NICEST*/get NICEST() {
      return 4354;
    },
    /*web_gl.WebGL.NONE*/get NONE() {
      return 0;
    },
    /*web_gl.WebGL.NOTEQUAL*/get NOTEQUAL() {
      return 517;
    },
    /*web_gl.WebGL.NO_ERROR*/get NO_ERROR() {
      return 0;
    },
    /*web_gl.WebGL.OBJECT_TYPE*/get OBJECT_TYPE() {
      return 37138;
    },
    /*web_gl.WebGL.ONE*/get ONE() {
      return 1;
    },
    /*web_gl.WebGL.ONE_MINUS_CONSTANT_ALPHA*/get ONE_MINUS_CONSTANT_ALPHA() {
      return 32772;
    },
    /*web_gl.WebGL.ONE_MINUS_CONSTANT_COLOR*/get ONE_MINUS_CONSTANT_COLOR() {
      return 32770;
    },
    /*web_gl.WebGL.ONE_MINUS_DST_ALPHA*/get ONE_MINUS_DST_ALPHA() {
      return 773;
    },
    /*web_gl.WebGL.ONE_MINUS_DST_COLOR*/get ONE_MINUS_DST_COLOR() {
      return 775;
    },
    /*web_gl.WebGL.ONE_MINUS_SRC_ALPHA*/get ONE_MINUS_SRC_ALPHA() {
      return 771;
    },
    /*web_gl.WebGL.ONE_MINUS_SRC_COLOR*/get ONE_MINUS_SRC_COLOR() {
      return 769;
    },
    /*web_gl.WebGL.OUT_OF_MEMORY*/get OUT_OF_MEMORY() {
      return 1285;
    },
    /*web_gl.WebGL.PACK_ALIGNMENT*/get PACK_ALIGNMENT() {
      return 3333;
    },
    /*web_gl.WebGL.PACK_ROW_LENGTH*/get PACK_ROW_LENGTH() {
      return 3330;
    },
    /*web_gl.WebGL.PACK_SKIP_PIXELS*/get PACK_SKIP_PIXELS() {
      return 3332;
    },
    /*web_gl.WebGL.PACK_SKIP_ROWS*/get PACK_SKIP_ROWS() {
      return 3331;
    },
    /*web_gl.WebGL.PIXEL_PACK_BUFFER*/get PIXEL_PACK_BUFFER() {
      return 35051;
    },
    /*web_gl.WebGL.PIXEL_PACK_BUFFER_BINDING*/get PIXEL_PACK_BUFFER_BINDING() {
      return 35053;
    },
    /*web_gl.WebGL.PIXEL_UNPACK_BUFFER*/get PIXEL_UNPACK_BUFFER() {
      return 35052;
    },
    /*web_gl.WebGL.PIXEL_UNPACK_BUFFER_BINDING*/get PIXEL_UNPACK_BUFFER_BINDING() {
      return 35055;
    },
    /*web_gl.WebGL.POINTS*/get POINTS() {
      return 0;
    },
    /*web_gl.WebGL.POLYGON_OFFSET_FACTOR*/get POLYGON_OFFSET_FACTOR() {
      return 32824;
    },
    /*web_gl.WebGL.POLYGON_OFFSET_FILL*/get POLYGON_OFFSET_FILL() {
      return 32823;
    },
    /*web_gl.WebGL.POLYGON_OFFSET_UNITS*/get POLYGON_OFFSET_UNITS() {
      return 10752;
    },
    /*web_gl.WebGL.QUERY_RESULT*/get QUERY_RESULT() {
      return 34918;
    },
    /*web_gl.WebGL.QUERY_RESULT_AVAILABLE*/get QUERY_RESULT_AVAILABLE() {
      return 34919;
    },
    /*web_gl.WebGL.R11F_G11F_B10F*/get R11F_G11F_B10F() {
      return 35898;
    },
    /*web_gl.WebGL.R16F*/get R16F() {
      return 33325;
    },
    /*web_gl.WebGL.R16I*/get R16I() {
      return 33331;
    },
    /*web_gl.WebGL.R16UI*/get R16UI() {
      return 33332;
    },
    /*web_gl.WebGL.R32F*/get R32F() {
      return 33326;
    },
    /*web_gl.WebGL.R32I*/get R32I() {
      return 33333;
    },
    /*web_gl.WebGL.R32UI*/get R32UI() {
      return 33334;
    },
    /*web_gl.WebGL.R8*/get R8() {
      return 33321;
    },
    /*web_gl.WebGL.R8I*/get R8I() {
      return 33329;
    },
    /*web_gl.WebGL.R8UI*/get R8UI() {
      return 33330;
    },
    /*web_gl.WebGL.R8_SNORM*/get R8_SNORM() {
      return 36756;
    },
    /*web_gl.WebGL.RASTERIZER_DISCARD*/get RASTERIZER_DISCARD() {
      return 35977;
    },
    /*web_gl.WebGL.READ_BUFFER*/get READ_BUFFER() {
      return 3074;
    },
    /*web_gl.WebGL.READ_FRAMEBUFFER*/get READ_FRAMEBUFFER() {
      return 36008;
    },
    /*web_gl.WebGL.READ_FRAMEBUFFER_BINDING*/get READ_FRAMEBUFFER_BINDING() {
      return 36010;
    },
    /*web_gl.WebGL.RED*/get RED() {
      return 6403;
    },
    /*web_gl.WebGL.RED_BITS*/get RED_BITS() {
      return 3410;
    },
    /*web_gl.WebGL.RED_INTEGER*/get RED_INTEGER() {
      return 36244;
    },
    /*web_gl.WebGL.RENDERBUFFER*/get RENDERBUFFER() {
      return 36161;
    },
    /*web_gl.WebGL.RENDERBUFFER_ALPHA_SIZE*/get RENDERBUFFER_ALPHA_SIZE() {
      return 36179;
    },
    /*web_gl.WebGL.RENDERBUFFER_BINDING*/get RENDERBUFFER_BINDING() {
      return 36007;
    },
    /*web_gl.WebGL.RENDERBUFFER_BLUE_SIZE*/get RENDERBUFFER_BLUE_SIZE() {
      return 36178;
    },
    /*web_gl.WebGL.RENDERBUFFER_DEPTH_SIZE*/get RENDERBUFFER_DEPTH_SIZE() {
      return 36180;
    },
    /*web_gl.WebGL.RENDERBUFFER_GREEN_SIZE*/get RENDERBUFFER_GREEN_SIZE() {
      return 36177;
    },
    /*web_gl.WebGL.RENDERBUFFER_HEIGHT*/get RENDERBUFFER_HEIGHT() {
      return 36163;
    },
    /*web_gl.WebGL.RENDERBUFFER_INTERNAL_FORMAT*/get RENDERBUFFER_INTERNAL_FORMAT() {
      return 36164;
    },
    /*web_gl.WebGL.RENDERBUFFER_RED_SIZE*/get RENDERBUFFER_RED_SIZE() {
      return 36176;
    },
    /*web_gl.WebGL.RENDERBUFFER_SAMPLES*/get RENDERBUFFER_SAMPLES() {
      return 36011;
    },
    /*web_gl.WebGL.RENDERBUFFER_STENCIL_SIZE*/get RENDERBUFFER_STENCIL_SIZE() {
      return 36181;
    },
    /*web_gl.WebGL.RENDERBUFFER_WIDTH*/get RENDERBUFFER_WIDTH() {
      return 36162;
    },
    /*web_gl.WebGL.RENDERER*/get RENDERER() {
      return 7937;
    },
    /*web_gl.WebGL.REPEAT*/get REPEAT() {
      return 10497;
    },
    /*web_gl.WebGL.REPLACE*/get REPLACE() {
      return 7681;
    },
    /*web_gl.WebGL.RG*/get RG() {
      return 33319;
    },
    /*web_gl.WebGL.RG16F*/get RG16F() {
      return 33327;
    },
    /*web_gl.WebGL.RG16I*/get RG16I() {
      return 33337;
    },
    /*web_gl.WebGL.RG16UI*/get RG16UI() {
      return 33338;
    },
    /*web_gl.WebGL.RG32F*/get RG32F() {
      return 33328;
    },
    /*web_gl.WebGL.RG32I*/get RG32I() {
      return 33339;
    },
    /*web_gl.WebGL.RG32UI*/get RG32UI() {
      return 33340;
    },
    /*web_gl.WebGL.RG8*/get RG8() {
      return 33323;
    },
    /*web_gl.WebGL.RG8I*/get RG8I() {
      return 33335;
    },
    /*web_gl.WebGL.RG8UI*/get RG8UI() {
      return 33336;
    },
    /*web_gl.WebGL.RG8_SNORM*/get RG8_SNORM() {
      return 36757;
    },
    /*web_gl.WebGL.RGB*/get RGB() {
      return 6407;
    },
    /*web_gl.WebGL.RGB10_A2*/get RGB10_A2() {
      return 32857;
    },
    /*web_gl.WebGL.RGB10_A2UI*/get RGB10_A2UI() {
      return 36975;
    },
    /*web_gl.WebGL.RGB16F*/get RGB16F() {
      return 34843;
    },
    /*web_gl.WebGL.RGB16I*/get RGB16I() {
      return 36233;
    },
    /*web_gl.WebGL.RGB16UI*/get RGB16UI() {
      return 36215;
    },
    /*web_gl.WebGL.RGB32F*/get RGB32F() {
      return 34837;
    },
    /*web_gl.WebGL.RGB32I*/get RGB32I() {
      return 36227;
    },
    /*web_gl.WebGL.RGB32UI*/get RGB32UI() {
      return 36209;
    },
    /*web_gl.WebGL.RGB565*/get RGB565() {
      return 36194;
    },
    /*web_gl.WebGL.RGB5_A1*/get RGB5_A1() {
      return 32855;
    },
    /*web_gl.WebGL.RGB8*/get RGB8() {
      return 32849;
    },
    /*web_gl.WebGL.RGB8I*/get RGB8I() {
      return 36239;
    },
    /*web_gl.WebGL.RGB8UI*/get RGB8UI() {
      return 36221;
    },
    /*web_gl.WebGL.RGB8_SNORM*/get RGB8_SNORM() {
      return 36758;
    },
    /*web_gl.WebGL.RGB9_E5*/get RGB9_E5() {
      return 35901;
    },
    /*web_gl.WebGL.RGBA*/get RGBA() {
      return 6408;
    },
    /*web_gl.WebGL.RGBA16F*/get RGBA16F() {
      return 34842;
    },
    /*web_gl.WebGL.RGBA16I*/get RGBA16I() {
      return 36232;
    },
    /*web_gl.WebGL.RGBA16UI*/get RGBA16UI() {
      return 36214;
    },
    /*web_gl.WebGL.RGBA32F*/get RGBA32F() {
      return 34836;
    },
    /*web_gl.WebGL.RGBA32I*/get RGBA32I() {
      return 36226;
    },
    /*web_gl.WebGL.RGBA32UI*/get RGBA32UI() {
      return 36208;
    },
    /*web_gl.WebGL.RGBA4*/get RGBA4() {
      return 32854;
    },
    /*web_gl.WebGL.RGBA8*/get RGBA8() {
      return 32856;
    },
    /*web_gl.WebGL.RGBA8I*/get RGBA8I() {
      return 36238;
    },
    /*web_gl.WebGL.RGBA8UI*/get RGBA8UI() {
      return 36220;
    },
    /*web_gl.WebGL.RGBA8_SNORM*/get RGBA8_SNORM() {
      return 36759;
    },
    /*web_gl.WebGL.RGBA_INTEGER*/get RGBA_INTEGER() {
      return 36249;
    },
    /*web_gl.WebGL.RGB_INTEGER*/get RGB_INTEGER() {
      return 36248;
    },
    /*web_gl.WebGL.RG_INTEGER*/get RG_INTEGER() {
      return 33320;
    },
    /*web_gl.WebGL.SAMPLER_2D*/get SAMPLER_2D() {
      return 35678;
    },
    /*web_gl.WebGL.SAMPLER_2D_ARRAY*/get SAMPLER_2D_ARRAY() {
      return 36289;
    },
    /*web_gl.WebGL.SAMPLER_2D_ARRAY_SHADOW*/get SAMPLER_2D_ARRAY_SHADOW() {
      return 36292;
    },
    /*web_gl.WebGL.SAMPLER_2D_SHADOW*/get SAMPLER_2D_SHADOW() {
      return 35682;
    },
    /*web_gl.WebGL.SAMPLER_3D*/get SAMPLER_3D() {
      return 35679;
    },
    /*web_gl.WebGL.SAMPLER_BINDING*/get SAMPLER_BINDING() {
      return 35097;
    },
    /*web_gl.WebGL.SAMPLER_CUBE*/get SAMPLER_CUBE() {
      return 35680;
    },
    /*web_gl.WebGL.SAMPLER_CUBE_SHADOW*/get SAMPLER_CUBE_SHADOW() {
      return 36293;
    },
    /*web_gl.WebGL.SAMPLES*/get SAMPLES() {
      return 32937;
    },
    /*web_gl.WebGL.SAMPLE_ALPHA_TO_COVERAGE*/get SAMPLE_ALPHA_TO_COVERAGE() {
      return 32926;
    },
    /*web_gl.WebGL.SAMPLE_BUFFERS*/get SAMPLE_BUFFERS() {
      return 32936;
    },
    /*web_gl.WebGL.SAMPLE_COVERAGE*/get SAMPLE_COVERAGE() {
      return 32928;
    },
    /*web_gl.WebGL.SAMPLE_COVERAGE_INVERT*/get SAMPLE_COVERAGE_INVERT() {
      return 32939;
    },
    /*web_gl.WebGL.SAMPLE_COVERAGE_VALUE*/get SAMPLE_COVERAGE_VALUE() {
      return 32938;
    },
    /*web_gl.WebGL.SCISSOR_BOX*/get SCISSOR_BOX() {
      return 3088;
    },
    /*web_gl.WebGL.SCISSOR_TEST*/get SCISSOR_TEST() {
      return 3089;
    },
    /*web_gl.WebGL.SEPARATE_ATTRIBS*/get SEPARATE_ATTRIBS() {
      return 35981;
    },
    /*web_gl.WebGL.SHADER_TYPE*/get SHADER_TYPE() {
      return 35663;
    },
    /*web_gl.WebGL.SHADING_LANGUAGE_VERSION*/get SHADING_LANGUAGE_VERSION() {
      return 35724;
    },
    /*web_gl.WebGL.SHORT*/get SHORT() {
      return 5122;
    },
    /*web_gl.WebGL.SIGNALED*/get SIGNALED() {
      return 37145;
    },
    /*web_gl.WebGL.SIGNED_NORMALIZED*/get SIGNED_NORMALIZED() {
      return 36764;
    },
    /*web_gl.WebGL.SRC_ALPHA*/get SRC_ALPHA() {
      return 770;
    },
    /*web_gl.WebGL.SRC_ALPHA_SATURATE*/get SRC_ALPHA_SATURATE() {
      return 776;
    },
    /*web_gl.WebGL.SRC_COLOR*/get SRC_COLOR() {
      return 768;
    },
    /*web_gl.WebGL.SRGB*/get SRGB() {
      return 35904;
    },
    /*web_gl.WebGL.SRGB8*/get SRGB8() {
      return 35905;
    },
    /*web_gl.WebGL.SRGB8_ALPHA8*/get SRGB8_ALPHA8() {
      return 35907;
    },
    /*web_gl.WebGL.STATIC_COPY*/get STATIC_COPY() {
      return 35046;
    },
    /*web_gl.WebGL.STATIC_DRAW*/get STATIC_DRAW() {
      return 35044;
    },
    /*web_gl.WebGL.STATIC_READ*/get STATIC_READ() {
      return 35045;
    },
    /*web_gl.WebGL.STENCIL*/get STENCIL() {
      return 6146;
    },
    /*web_gl.WebGL.STENCIL_ATTACHMENT*/get STENCIL_ATTACHMENT() {
      return 36128;
    },
    /*web_gl.WebGL.STENCIL_BACK_FAIL*/get STENCIL_BACK_FAIL() {
      return 34817;
    },
    /*web_gl.WebGL.STENCIL_BACK_FUNC*/get STENCIL_BACK_FUNC() {
      return 34816;
    },
    /*web_gl.WebGL.STENCIL_BACK_PASS_DEPTH_FAIL*/get STENCIL_BACK_PASS_DEPTH_FAIL() {
      return 34818;
    },
    /*web_gl.WebGL.STENCIL_BACK_PASS_DEPTH_PASS*/get STENCIL_BACK_PASS_DEPTH_PASS() {
      return 34819;
    },
    /*web_gl.WebGL.STENCIL_BACK_REF*/get STENCIL_BACK_REF() {
      return 36003;
    },
    /*web_gl.WebGL.STENCIL_BACK_VALUE_MASK*/get STENCIL_BACK_VALUE_MASK() {
      return 36004;
    },
    /*web_gl.WebGL.STENCIL_BACK_WRITEMASK*/get STENCIL_BACK_WRITEMASK() {
      return 36005;
    },
    /*web_gl.WebGL.STENCIL_BITS*/get STENCIL_BITS() {
      return 3415;
    },
    /*web_gl.WebGL.STENCIL_BUFFER_BIT*/get STENCIL_BUFFER_BIT() {
      return 1024;
    },
    /*web_gl.WebGL.STENCIL_CLEAR_VALUE*/get STENCIL_CLEAR_VALUE() {
      return 2961;
    },
    /*web_gl.WebGL.STENCIL_FAIL*/get STENCIL_FAIL() {
      return 2964;
    },
    /*web_gl.WebGL.STENCIL_FUNC*/get STENCIL_FUNC() {
      return 2962;
    },
    /*web_gl.WebGL.STENCIL_INDEX8*/get STENCIL_INDEX8() {
      return 36168;
    },
    /*web_gl.WebGL.STENCIL_PASS_DEPTH_FAIL*/get STENCIL_PASS_DEPTH_FAIL() {
      return 2965;
    },
    /*web_gl.WebGL.STENCIL_PASS_DEPTH_PASS*/get STENCIL_PASS_DEPTH_PASS() {
      return 2966;
    },
    /*web_gl.WebGL.STENCIL_REF*/get STENCIL_REF() {
      return 2967;
    },
    /*web_gl.WebGL.STENCIL_TEST*/get STENCIL_TEST() {
      return 2960;
    },
    /*web_gl.WebGL.STENCIL_VALUE_MASK*/get STENCIL_VALUE_MASK() {
      return 2963;
    },
    /*web_gl.WebGL.STENCIL_WRITEMASK*/get STENCIL_WRITEMASK() {
      return 2968;
    },
    /*web_gl.WebGL.STREAM_COPY*/get STREAM_COPY() {
      return 35042;
    },
    /*web_gl.WebGL.STREAM_DRAW*/get STREAM_DRAW() {
      return 35040;
    },
    /*web_gl.WebGL.STREAM_READ*/get STREAM_READ() {
      return 35041;
    },
    /*web_gl.WebGL.SUBPIXEL_BITS*/get SUBPIXEL_BITS() {
      return 3408;
    },
    /*web_gl.WebGL.SYNC_CONDITION*/get SYNC_CONDITION() {
      return 37139;
    },
    /*web_gl.WebGL.SYNC_FENCE*/get SYNC_FENCE() {
      return 37142;
    },
    /*web_gl.WebGL.SYNC_FLAGS*/get SYNC_FLAGS() {
      return 37141;
    },
    /*web_gl.WebGL.SYNC_FLUSH_COMMANDS_BIT*/get SYNC_FLUSH_COMMANDS_BIT() {
      return 1;
    },
    /*web_gl.WebGL.SYNC_GPU_COMMANDS_COMPLETE*/get SYNC_GPU_COMMANDS_COMPLETE() {
      return 37143;
    },
    /*web_gl.WebGL.SYNC_STATUS*/get SYNC_STATUS() {
      return 37140;
    },
    /*web_gl.WebGL.TEXTURE*/get TEXTURE() {
      return 5890;
    },
    /*web_gl.WebGL.TEXTURE0*/get TEXTURE0() {
      return 33984;
    },
    /*web_gl.WebGL.TEXTURE1*/get TEXTURE1() {
      return 33985;
    },
    /*web_gl.WebGL.TEXTURE10*/get TEXTURE10() {
      return 33994;
    },
    /*web_gl.WebGL.TEXTURE11*/get TEXTURE11() {
      return 33995;
    },
    /*web_gl.WebGL.TEXTURE12*/get TEXTURE12() {
      return 33996;
    },
    /*web_gl.WebGL.TEXTURE13*/get TEXTURE13() {
      return 33997;
    },
    /*web_gl.WebGL.TEXTURE14*/get TEXTURE14() {
      return 33998;
    },
    /*web_gl.WebGL.TEXTURE15*/get TEXTURE15() {
      return 33999;
    },
    /*web_gl.WebGL.TEXTURE16*/get TEXTURE16() {
      return 34000;
    },
    /*web_gl.WebGL.TEXTURE17*/get TEXTURE17() {
      return 34001;
    },
    /*web_gl.WebGL.TEXTURE18*/get TEXTURE18() {
      return 34002;
    },
    /*web_gl.WebGL.TEXTURE19*/get TEXTURE19() {
      return 34003;
    },
    /*web_gl.WebGL.TEXTURE2*/get TEXTURE2() {
      return 33986;
    },
    /*web_gl.WebGL.TEXTURE20*/get TEXTURE20() {
      return 34004;
    },
    /*web_gl.WebGL.TEXTURE21*/get TEXTURE21() {
      return 34005;
    },
    /*web_gl.WebGL.TEXTURE22*/get TEXTURE22() {
      return 34006;
    },
    /*web_gl.WebGL.TEXTURE23*/get TEXTURE23() {
      return 34007;
    },
    /*web_gl.WebGL.TEXTURE24*/get TEXTURE24() {
      return 34008;
    },
    /*web_gl.WebGL.TEXTURE25*/get TEXTURE25() {
      return 34009;
    },
    /*web_gl.WebGL.TEXTURE26*/get TEXTURE26() {
      return 34010;
    },
    /*web_gl.WebGL.TEXTURE27*/get TEXTURE27() {
      return 34011;
    },
    /*web_gl.WebGL.TEXTURE28*/get TEXTURE28() {
      return 34012;
    },
    /*web_gl.WebGL.TEXTURE29*/get TEXTURE29() {
      return 34013;
    },
    /*web_gl.WebGL.TEXTURE3*/get TEXTURE3() {
      return 33987;
    },
    /*web_gl.WebGL.TEXTURE30*/get TEXTURE30() {
      return 34014;
    },
    /*web_gl.WebGL.TEXTURE31*/get TEXTURE31() {
      return 34015;
    },
    /*web_gl.WebGL.TEXTURE4*/get TEXTURE4() {
      return 33988;
    },
    /*web_gl.WebGL.TEXTURE5*/get TEXTURE5() {
      return 33989;
    },
    /*web_gl.WebGL.TEXTURE6*/get TEXTURE6() {
      return 33990;
    },
    /*web_gl.WebGL.TEXTURE7*/get TEXTURE7() {
      return 33991;
    },
    /*web_gl.WebGL.TEXTURE8*/get TEXTURE8() {
      return 33992;
    },
    /*web_gl.WebGL.TEXTURE9*/get TEXTURE9() {
      return 33993;
    },
    /*web_gl.WebGL.TEXTURE_2D*/get TEXTURE_2D() {
      return 3553;
    },
    /*web_gl.WebGL.TEXTURE_2D_ARRAY*/get TEXTURE_2D_ARRAY() {
      return 35866;
    },
    /*web_gl.WebGL.TEXTURE_3D*/get TEXTURE_3D() {
      return 32879;
    },
    /*web_gl.WebGL.TEXTURE_BASE_LEVEL*/get TEXTURE_BASE_LEVEL() {
      return 33084;
    },
    /*web_gl.WebGL.TEXTURE_BINDING_2D*/get TEXTURE_BINDING_2D() {
      return 32873;
    },
    /*web_gl.WebGL.TEXTURE_BINDING_2D_ARRAY*/get TEXTURE_BINDING_2D_ARRAY() {
      return 35869;
    },
    /*web_gl.WebGL.TEXTURE_BINDING_3D*/get TEXTURE_BINDING_3D() {
      return 32874;
    },
    /*web_gl.WebGL.TEXTURE_BINDING_CUBE_MAP*/get TEXTURE_BINDING_CUBE_MAP() {
      return 34068;
    },
    /*web_gl.WebGL.TEXTURE_COMPARE_FUNC*/get TEXTURE_COMPARE_FUNC() {
      return 34893;
    },
    /*web_gl.WebGL.TEXTURE_COMPARE_MODE*/get TEXTURE_COMPARE_MODE() {
      return 34892;
    },
    /*web_gl.WebGL.TEXTURE_CUBE_MAP*/get TEXTURE_CUBE_MAP() {
      return 34067;
    },
    /*web_gl.WebGL.TEXTURE_CUBE_MAP_NEGATIVE_X*/get TEXTURE_CUBE_MAP_NEGATIVE_X() {
      return 34070;
    },
    /*web_gl.WebGL.TEXTURE_CUBE_MAP_NEGATIVE_Y*/get TEXTURE_CUBE_MAP_NEGATIVE_Y() {
      return 34072;
    },
    /*web_gl.WebGL.TEXTURE_CUBE_MAP_NEGATIVE_Z*/get TEXTURE_CUBE_MAP_NEGATIVE_Z() {
      return 34074;
    },
    /*web_gl.WebGL.TEXTURE_CUBE_MAP_POSITIVE_X*/get TEXTURE_CUBE_MAP_POSITIVE_X() {
      return 34069;
    },
    /*web_gl.WebGL.TEXTURE_CUBE_MAP_POSITIVE_Y*/get TEXTURE_CUBE_MAP_POSITIVE_Y() {
      return 34071;
    },
    /*web_gl.WebGL.TEXTURE_CUBE_MAP_POSITIVE_Z*/get TEXTURE_CUBE_MAP_POSITIVE_Z() {
      return 34073;
    },
    /*web_gl.WebGL.TEXTURE_IMMUTABLE_FORMAT*/get TEXTURE_IMMUTABLE_FORMAT() {
      return 37167;
    },
    /*web_gl.WebGL.TEXTURE_IMMUTABLE_LEVELS*/get TEXTURE_IMMUTABLE_LEVELS() {
      return 33503;
    },
    /*web_gl.WebGL.TEXTURE_MAG_FILTER*/get TEXTURE_MAG_FILTER() {
      return 10240;
    },
    /*web_gl.WebGL.TEXTURE_MAX_LEVEL*/get TEXTURE_MAX_LEVEL() {
      return 33085;
    },
    /*web_gl.WebGL.TEXTURE_MAX_LOD*/get TEXTURE_MAX_LOD() {
      return 33083;
    },
    /*web_gl.WebGL.TEXTURE_MIN_FILTER*/get TEXTURE_MIN_FILTER() {
      return 10241;
    },
    /*web_gl.WebGL.TEXTURE_MIN_LOD*/get TEXTURE_MIN_LOD() {
      return 33082;
    },
    /*web_gl.WebGL.TEXTURE_WRAP_R*/get TEXTURE_WRAP_R() {
      return 32882;
    },
    /*web_gl.WebGL.TEXTURE_WRAP_S*/get TEXTURE_WRAP_S() {
      return 10242;
    },
    /*web_gl.WebGL.TEXTURE_WRAP_T*/get TEXTURE_WRAP_T() {
      return 10243;
    },
    /*web_gl.WebGL.TIMEOUT_EXPIRED*/get TIMEOUT_EXPIRED() {
      return 37147;
    },
    /*web_gl.WebGL.TIMEOUT_IGNORED*/get TIMEOUT_IGNORED() {
      return -1;
    },
    /*web_gl.WebGL.TRANSFORM_FEEDBACK*/get TRANSFORM_FEEDBACK() {
      return 36386;
    },
    /*web_gl.WebGL.TRANSFORM_FEEDBACK_ACTIVE*/get TRANSFORM_FEEDBACK_ACTIVE() {
      return 36388;
    },
    /*web_gl.WebGL.TRANSFORM_FEEDBACK_BINDING*/get TRANSFORM_FEEDBACK_BINDING() {
      return 36389;
    },
    /*web_gl.WebGL.TRANSFORM_FEEDBACK_BUFFER*/get TRANSFORM_FEEDBACK_BUFFER() {
      return 35982;
    },
    /*web_gl.WebGL.TRANSFORM_FEEDBACK_BUFFER_BINDING*/get TRANSFORM_FEEDBACK_BUFFER_BINDING() {
      return 35983;
    },
    /*web_gl.WebGL.TRANSFORM_FEEDBACK_BUFFER_MODE*/get TRANSFORM_FEEDBACK_BUFFER_MODE() {
      return 35967;
    },
    /*web_gl.WebGL.TRANSFORM_FEEDBACK_BUFFER_SIZE*/get TRANSFORM_FEEDBACK_BUFFER_SIZE() {
      return 35973;
    },
    /*web_gl.WebGL.TRANSFORM_FEEDBACK_BUFFER_START*/get TRANSFORM_FEEDBACK_BUFFER_START() {
      return 35972;
    },
    /*web_gl.WebGL.TRANSFORM_FEEDBACK_PAUSED*/get TRANSFORM_FEEDBACK_PAUSED() {
      return 36387;
    },
    /*web_gl.WebGL.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN*/get TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN() {
      return 35976;
    },
    /*web_gl.WebGL.TRANSFORM_FEEDBACK_VARYINGS*/get TRANSFORM_FEEDBACK_VARYINGS() {
      return 35971;
    },
    /*web_gl.WebGL.TRIANGLES*/get TRIANGLES() {
      return 4;
    },
    /*web_gl.WebGL.TRIANGLE_FAN*/get TRIANGLE_FAN() {
      return 6;
    },
    /*web_gl.WebGL.TRIANGLE_STRIP*/get TRIANGLE_STRIP() {
      return 5;
    },
    /*web_gl.WebGL.UNIFORM_ARRAY_STRIDE*/get UNIFORM_ARRAY_STRIDE() {
      return 35388;
    },
    /*web_gl.WebGL.UNIFORM_BLOCK_ACTIVE_UNIFORMS*/get UNIFORM_BLOCK_ACTIVE_UNIFORMS() {
      return 35394;
    },
    /*web_gl.WebGL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES*/get UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES() {
      return 35395;
    },
    /*web_gl.WebGL.UNIFORM_BLOCK_BINDING*/get UNIFORM_BLOCK_BINDING() {
      return 35391;
    },
    /*web_gl.WebGL.UNIFORM_BLOCK_DATA_SIZE*/get UNIFORM_BLOCK_DATA_SIZE() {
      return 35392;
    },
    /*web_gl.WebGL.UNIFORM_BLOCK_INDEX*/get UNIFORM_BLOCK_INDEX() {
      return 35386;
    },
    /*web_gl.WebGL.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER*/get UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER() {
      return 35398;
    },
    /*web_gl.WebGL.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER*/get UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER() {
      return 35396;
    },
    /*web_gl.WebGL.UNIFORM_BUFFER*/get UNIFORM_BUFFER() {
      return 35345;
    },
    /*web_gl.WebGL.UNIFORM_BUFFER_BINDING*/get UNIFORM_BUFFER_BINDING() {
      return 35368;
    },
    /*web_gl.WebGL.UNIFORM_BUFFER_OFFSET_ALIGNMENT*/get UNIFORM_BUFFER_OFFSET_ALIGNMENT() {
      return 35380;
    },
    /*web_gl.WebGL.UNIFORM_BUFFER_SIZE*/get UNIFORM_BUFFER_SIZE() {
      return 35370;
    },
    /*web_gl.WebGL.UNIFORM_BUFFER_START*/get UNIFORM_BUFFER_START() {
      return 35369;
    },
    /*web_gl.WebGL.UNIFORM_IS_ROW_MAJOR*/get UNIFORM_IS_ROW_MAJOR() {
      return 35390;
    },
    /*web_gl.WebGL.UNIFORM_MATRIX_STRIDE*/get UNIFORM_MATRIX_STRIDE() {
      return 35389;
    },
    /*web_gl.WebGL.UNIFORM_OFFSET*/get UNIFORM_OFFSET() {
      return 35387;
    },
    /*web_gl.WebGL.UNIFORM_SIZE*/get UNIFORM_SIZE() {
      return 35384;
    },
    /*web_gl.WebGL.UNIFORM_TYPE*/get UNIFORM_TYPE() {
      return 35383;
    },
    /*web_gl.WebGL.UNPACK_ALIGNMENT*/get UNPACK_ALIGNMENT() {
      return 3317;
    },
    /*web_gl.WebGL.UNPACK_COLORSPACE_CONVERSION_WEBGL*/get UNPACK_COLORSPACE_CONVERSION_WEBGL() {
      return 37443;
    },
    /*web_gl.WebGL.UNPACK_FLIP_Y_WEBGL*/get UNPACK_FLIP_Y_WEBGL() {
      return 37440;
    },
    /*web_gl.WebGL.UNPACK_IMAGE_HEIGHT*/get UNPACK_IMAGE_HEIGHT() {
      return 32878;
    },
    /*web_gl.WebGL.UNPACK_PREMULTIPLY_ALPHA_WEBGL*/get UNPACK_PREMULTIPLY_ALPHA_WEBGL() {
      return 37441;
    },
    /*web_gl.WebGL.UNPACK_ROW_LENGTH*/get UNPACK_ROW_LENGTH() {
      return 3314;
    },
    /*web_gl.WebGL.UNPACK_SKIP_IMAGES*/get UNPACK_SKIP_IMAGES() {
      return 32877;
    },
    /*web_gl.WebGL.UNPACK_SKIP_PIXELS*/get UNPACK_SKIP_PIXELS() {
      return 3316;
    },
    /*web_gl.WebGL.UNPACK_SKIP_ROWS*/get UNPACK_SKIP_ROWS() {
      return 3315;
    },
    /*web_gl.WebGL.UNSIGNALED*/get UNSIGNALED() {
      return 37144;
    },
    /*web_gl.WebGL.UNSIGNED_BYTE*/get UNSIGNED_BYTE() {
      return 5121;
    },
    /*web_gl.WebGL.UNSIGNED_INT*/get UNSIGNED_INT() {
      return 5125;
    },
    /*web_gl.WebGL.UNSIGNED_INT_10F_11F_11F_REV*/get UNSIGNED_INT_10F_11F_11F_REV() {
      return 35899;
    },
    /*web_gl.WebGL.UNSIGNED_INT_24_8*/get UNSIGNED_INT_24_8() {
      return 34042;
    },
    /*web_gl.WebGL.UNSIGNED_INT_2_10_10_10_REV*/get UNSIGNED_INT_2_10_10_10_REV() {
      return 33640;
    },
    /*web_gl.WebGL.UNSIGNED_INT_5_9_9_9_REV*/get UNSIGNED_INT_5_9_9_9_REV() {
      return 35902;
    },
    /*web_gl.WebGL.UNSIGNED_INT_SAMPLER_2D*/get UNSIGNED_INT_SAMPLER_2D() {
      return 36306;
    },
    /*web_gl.WebGL.UNSIGNED_INT_SAMPLER_2D_ARRAY*/get UNSIGNED_INT_SAMPLER_2D_ARRAY() {
      return 36311;
    },
    /*web_gl.WebGL.UNSIGNED_INT_SAMPLER_3D*/get UNSIGNED_INT_SAMPLER_3D() {
      return 36307;
    },
    /*web_gl.WebGL.UNSIGNED_INT_SAMPLER_CUBE*/get UNSIGNED_INT_SAMPLER_CUBE() {
      return 36308;
    },
    /*web_gl.WebGL.UNSIGNED_INT_VEC2*/get UNSIGNED_INT_VEC2() {
      return 36294;
    },
    /*web_gl.WebGL.UNSIGNED_INT_VEC3*/get UNSIGNED_INT_VEC3() {
      return 36295;
    },
    /*web_gl.WebGL.UNSIGNED_INT_VEC4*/get UNSIGNED_INT_VEC4() {
      return 36296;
    },
    /*web_gl.WebGL.UNSIGNED_NORMALIZED*/get UNSIGNED_NORMALIZED() {
      return 35863;
    },
    /*web_gl.WebGL.UNSIGNED_SHORT*/get UNSIGNED_SHORT() {
      return 5123;
    },
    /*web_gl.WebGL.UNSIGNED_SHORT_4_4_4_4*/get UNSIGNED_SHORT_4_4_4_4() {
      return 32819;
    },
    /*web_gl.WebGL.UNSIGNED_SHORT_5_5_5_1*/get UNSIGNED_SHORT_5_5_5_1() {
      return 32820;
    },
    /*web_gl.WebGL.UNSIGNED_SHORT_5_6_5*/get UNSIGNED_SHORT_5_6_5() {
      return 33635;
    },
    /*web_gl.WebGL.VALIDATE_STATUS*/get VALIDATE_STATUS() {
      return 35715;
    },
    /*web_gl.WebGL.VENDOR*/get VENDOR() {
      return 7936;
    },
    /*web_gl.WebGL.VERSION*/get VERSION() {
      return 7938;
    },
    /*web_gl.WebGL.VERTEX_ARRAY_BINDING*/get VERTEX_ARRAY_BINDING() {
      return 34229;
    },
    /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING*/get VERTEX_ATTRIB_ARRAY_BUFFER_BINDING() {
      return 34975;
    },
    /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_DIVISOR*/get VERTEX_ATTRIB_ARRAY_DIVISOR() {
      return 35070;
    },
    /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_ENABLED*/get VERTEX_ATTRIB_ARRAY_ENABLED() {
      return 34338;
    },
    /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_INTEGER*/get VERTEX_ATTRIB_ARRAY_INTEGER() {
      return 35069;
    },
    /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_NORMALIZED*/get VERTEX_ATTRIB_ARRAY_NORMALIZED() {
      return 34922;
    },
    /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_POINTER*/get VERTEX_ATTRIB_ARRAY_POINTER() {
      return 34373;
    },
    /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_SIZE*/get VERTEX_ATTRIB_ARRAY_SIZE() {
      return 34339;
    },
    /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_STRIDE*/get VERTEX_ATTRIB_ARRAY_STRIDE() {
      return 34340;
    },
    /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_TYPE*/get VERTEX_ATTRIB_ARRAY_TYPE() {
      return 34341;
    },
    /*web_gl.WebGL.VERTEX_SHADER*/get VERTEX_SHADER() {
      return 35633;
    },
    /*web_gl.WebGL.VIEWPORT*/get VIEWPORT() {
      return 2978;
    },
    /*web_gl.WebGL.WAIT_FAILED*/get WAIT_FAILED() {
      return 37149;
    },
    /*web_gl.WebGL.ZERO*/get ZERO() {
      return 0;
    }
  });
  dart.registerExtension("WebGL", web_gl.WebGL);
  web_gl._WebGL2RenderingContextBase = class _WebGL2RenderingContextBase extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl._WebGL2RenderingContextBase);
  web_gl._WebGL2RenderingContextBase[dart.implements] = () => [web_gl._WebGLRenderingContextBase];
  dart.registerExtension("WebGL2RenderingContextBase", web_gl._WebGL2RenderingContextBase);
  web_gl._WebGLRenderingContextBase = class _WebGLRenderingContextBase extends _interceptors.Interceptor {};
  dart.addTypeTests(web_gl._WebGLRenderingContextBase);
  web_sql.SqlDatabase = class SqlDatabase extends _interceptors.Interceptor {
    static get supported() {
      return !!window.openDatabase;
    }
    get [$version]() {
      return this.version;
    }
    [$changeVersion](...args) {
      return this.changeVersion.apply(this, args);
    }
    [$readTransaction](...args) {
      return this.readTransaction.apply(this, args);
    }
    [$transaction](...args) {
      return this.transaction.apply(this, args);
    }
    [$transaction_future]() {
      let completer = CompleterOfSqlTransaction().new();
      this.transaction(dart.fn(value => {
        _js_helper.applyExtension("SQLTransaction", value);
        completer.complete(value);
      }, SqlTransactionToNull()), dart.fn(error => {
        completer.completeError(error);
      }, SqlErrorToNull()));
      return completer.future;
    }
  };
  dart.addTypeTests(web_sql.SqlDatabase);
  const version$1 = Symbol("SqlDatabase.version");
  dart.setMethodSignature(web_sql.SqlDatabase, () => ({
    __proto__: dart.getMethods(web_sql.SqlDatabase.__proto__),
    [$changeVersion]: dart.fnType(dart.void, [core.String, core.String], [dart.fnType(dart.void, [web_sql.SqlTransaction]), dart.fnType(dart.void, [web_sql.SqlError]), dart.fnType(dart.void, [])]),
    [$readTransaction]: dart.fnType(dart.void, [dart.fnType(dart.void, [web_sql.SqlTransaction])], [dart.fnType(dart.void, [web_sql.SqlError]), dart.fnType(dart.void, [])]),
    [$transaction]: dart.fnType(dart.void, [dart.fnType(dart.void, [web_sql.SqlTransaction])], [dart.fnType(dart.void, [web_sql.SqlError]), dart.fnType(dart.void, [])]),
    [$transaction_future]: dart.fnType(async.Future$(web_sql.SqlTransaction), [])
  }));
  dart.setFieldSignature(web_sql.SqlDatabase, () => ({
    __proto__: dart.getFields(web_sql.SqlDatabase.__proto__),
    [$version]: dart.finalFieldType(core.String)
  }));
  dart.registerExtension("Database", web_sql.SqlDatabase);
  web_sql.SqlError = class SqlError extends _interceptors.Interceptor {
    get [$code]() {
      return this.code;
    }
    get [$message]() {
      return this.message;
    }
  };
  dart.addTypeTests(web_sql.SqlError);
  const code$2 = Symbol("SqlError.code");
  const message$28 = Symbol("SqlError.message");
  dart.setFieldSignature(web_sql.SqlError, () => ({
    __proto__: dart.getFields(web_sql.SqlError.__proto__),
    [$code]: dart.finalFieldType(core.int),
    [$message]: dart.finalFieldType(core.String)
  }));
  dart.defineLazy(web_sql.SqlError, {
    /*web_sql.SqlError.CONSTRAINT_ERR*/get CONSTRAINT_ERR() {
      return 6;
    },
    /*web_sql.SqlError.DATABASE_ERR*/get DATABASE_ERR() {
      return 1;
    },
    /*web_sql.SqlError.QUOTA_ERR*/get QUOTA_ERR() {
      return 4;
    },
    /*web_sql.SqlError.SYNTAX_ERR*/get SYNTAX_ERR() {
      return 5;
    },
    /*web_sql.SqlError.TIMEOUT_ERR*/get TIMEOUT_ERR() {
      return 7;
    },
    /*web_sql.SqlError.TOO_LARGE_ERR*/get TOO_LARGE_ERR() {
      return 3;
    },
    /*web_sql.SqlError.UNKNOWN_ERR*/get UNKNOWN_ERR() {
      return 0;
    },
    /*web_sql.SqlError.VERSION_ERR*/get VERSION_ERR() {
      return 2;
    }
  });
  dart.registerExtension("SQLError", web_sql.SqlError);
  web_sql.SqlResultSet = class SqlResultSet extends _interceptors.Interceptor {
    get [$insertId]() {
      return this.insertId;
    }
    get [$rows]() {
      return this.rows;
    }
    get [$rowsAffected]() {
      return this.rowsAffected;
    }
  };
  dart.addTypeTests(web_sql.SqlResultSet);
  const insertId = Symbol("SqlResultSet.insertId");
  const rows$ = Symbol("SqlResultSet.rows");
  const rowsAffected = Symbol("SqlResultSet.rowsAffected");
  dart.setFieldSignature(web_sql.SqlResultSet, () => ({
    __proto__: dart.getFields(web_sql.SqlResultSet.__proto__),
    [$insertId]: dart.finalFieldType(core.int),
    [$rows]: dart.finalFieldType(web_sql.SqlResultSetRowList),
    [$rowsAffected]: dart.finalFieldType(core.int)
  }));
  dart.registerExtension("SQLResultSet", web_sql.SqlResultSet);
  const _item_1 = Symbol('_item_1');
  const Interceptor_ListMixin$$17 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
  (Interceptor_ListMixin$$17.new = function() {
    Interceptor_ListMixin$$17.__proto__.new.call(this);
  }).prototype = Interceptor_ListMixin$$17.prototype;
  dart.applyMixin(Interceptor_ListMixin$$17, collection.ListMixin$(core.Map));
  const Interceptor_ImmutableListMixin$$17 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$17 {};
  (Interceptor_ImmutableListMixin$$17.new = function() {
    Interceptor_ImmutableListMixin$$17.__proto__.new.call(this);
  }).prototype = Interceptor_ImmutableListMixin$$17.prototype;
  dart.applyMixin(Interceptor_ImmutableListMixin$$17, html$.ImmutableListMixin$(core.Map));
  web_sql.SqlResultSetRowList = class SqlResultSetRowList extends Interceptor_ImmutableListMixin$$17 {
    get [$length]() {
      return this.length;
    }
    [$_get](index) {
      if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
      return this[$item](index);
    }
    [$_set](index, value) {
      core.Map._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
      return value;
    }
    set [$length](value) {
      dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
    }
    get [$first]() {
      if (dart.notNull(this[$length]) > 0) {
        return this[0];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$first](value) {
      super[$first] = value;
    }
    get [$last]() {
      let len = this[$length];
      if (dart.notNull(len) > 0) {
        return this[dart.notNull(len) - 1];
      }
      dart.throw(new core.StateError.new("No elements"));
    }
    set [$last](value) {
      super[$last] = value;
    }
    get [$single]() {
      let len = this[$length];
      if (len === 1) {
        return this[0];
      }
      if (len === 0) dart.throw(new core.StateError.new("No elements"));
      dart.throw(new core.StateError.new("More than one element"));
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [$item](index) {
      return html_common.convertNativeToDart_Dictionary(this[_item_1](index));
    }
    [_item_1](...args) {
      return this.item.apply(this, args);
    }
  };
  web_sql.SqlResultSetRowList.prototype[dart.isList] = true;
  dart.addTypeTests(web_sql.SqlResultSetRowList);
  web_sql.SqlResultSetRowList[dart.implements] = () => [ListOfMap()];
  dart.setMethodSignature(web_sql.SqlResultSetRowList, () => ({
    __proto__: dart.getMethods(web_sql.SqlResultSetRowList.__proto__),
    [$_get]: dart.fnType(core.Map, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$elementAt]: dart.fnType(core.Map, [core.int]),
    [$item]: dart.fnType(core.Map, [core.int]),
    [_item_1]: dart.fnType(dart.dynamic, [dart.dynamic])
  }));
  dart.setGetterSignature(web_sql.SqlResultSetRowList, () => ({
    __proto__: dart.getGetters(web_sql.SqlResultSetRowList.__proto__),
    [$length]: core.int,
    [$first]: core.Map,
    [$last]: core.Map,
    [$single]: core.Map
  }));
  dart.setSetterSignature(web_sql.SqlResultSetRowList, () => ({
    __proto__: dart.getSetters(web_sql.SqlResultSetRowList.__proto__),
    [$length]: core.int
  }));
  dart.registerExtension("SQLResultSetRowList", web_sql.SqlResultSetRowList);
  const _executeSql = Symbol('_executeSql');
  web_sql.SqlTransaction = class SqlTransaction extends _interceptors.Interceptor {
    [_executeSql](...args) {
      return this.executeSql.apply(this, args);
    }
    [$executeSql](sqlStatement, arguments$0) {
      if (arguments$0 === void 0) arguments$0 = null;
      let completer = CompleterOfSqlResultSet().new();
      this[_executeSql](sqlStatement, arguments$0, dart.fn((transaction, resultSet) => {
        _js_helper.applyExtension("SQLResultSet", resultSet);
        _js_helper.applyExtension("SQLResultSetRowList", resultSet.rows);
        completer.complete(resultSet);
      }, SqlTransactionAndSqlResultSetToNull()), dart.fn((transaction, error) => {
        completer.completeError(error);
      }, SqlTransactionAndSqlErrorToNull()));
      return completer.future;
    }
  };
  dart.addTypeTests(web_sql.SqlTransaction);
  dart.setMethodSignature(web_sql.SqlTransaction, () => ({
    __proto__: dart.getMethods(web_sql.SqlTransaction.__proto__),
    [_executeSql]: dart.fnType(dart.void, [core.String], [core.List, dart.fnType(dart.void, [web_sql.SqlTransaction, web_sql.SqlResultSet]), dart.fnType(dart.void, [web_sql.SqlTransaction, web_sql.SqlError])]),
    [$executeSql]: dart.fnType(async.Future$(web_sql.SqlResultSet), [core.String], [core.List])
  }));
  dart.registerExtension("SQLTransaction", web_sql.SqlTransaction);
  _http.HttpStatus = class HttpStatus extends core.Object {};
  (_http.HttpStatus.new = function() {
  }).prototype = _http.HttpStatus.prototype;
  dart.addTypeTests(_http.HttpStatus);
  dart.defineLazy(_http.HttpStatus, {
    /*_http.HttpStatus.continue__*/get continue__() {
      return 100;
    },
    /*_http.HttpStatus.switchingProtocols*/get switchingProtocols() {
      return 101;
    },
    /*_http.HttpStatus.processing*/get processing() {
      return 102;
    },
    /*_http.HttpStatus.ok*/get ok() {
      return 200;
    },
    /*_http.HttpStatus.created*/get created() {
      return 201;
    },
    /*_http.HttpStatus.accepted*/get accepted() {
      return 202;
    },
    /*_http.HttpStatus.nonAuthoritativeInformation*/get nonAuthoritativeInformation() {
      return 203;
    },
    /*_http.HttpStatus.noContent*/get noContent() {
      return 204;
    },
    /*_http.HttpStatus.resetContent*/get resetContent() {
      return 205;
    },
    /*_http.HttpStatus.partialContent*/get partialContent() {
      return 206;
    },
    /*_http.HttpStatus.multiStatus*/get multiStatus() {
      return 207;
    },
    /*_http.HttpStatus.alreadyReported*/get alreadyReported() {
      return 208;
    },
    /*_http.HttpStatus.imUsed*/get imUsed() {
      return 226;
    },
    /*_http.HttpStatus.multipleChoices*/get multipleChoices() {
      return 300;
    },
    /*_http.HttpStatus.movedPermanently*/get movedPermanently() {
      return 301;
    },
    /*_http.HttpStatus.found*/get found() {
      return 302;
    },
    /*_http.HttpStatus.movedTemporarily*/get movedTemporarily() {
      return 302;
    },
    /*_http.HttpStatus.seeOther*/get seeOther() {
      return 303;
    },
    /*_http.HttpStatus.notModified*/get notModified() {
      return 304;
    },
    /*_http.HttpStatus.useProxy*/get useProxy() {
      return 305;
    },
    /*_http.HttpStatus.temporaryRedirect*/get temporaryRedirect() {
      return 307;
    },
    /*_http.HttpStatus.permanentRedirect*/get permanentRedirect() {
      return 308;
    },
    /*_http.HttpStatus.badRequest*/get badRequest() {
      return 400;
    },
    /*_http.HttpStatus.unauthorized*/get unauthorized() {
      return 401;
    },
    /*_http.HttpStatus.paymentRequired*/get paymentRequired() {
      return 402;
    },
    /*_http.HttpStatus.forbidden*/get forbidden() {
      return 403;
    },
    /*_http.HttpStatus.notFound*/get notFound() {
      return 404;
    },
    /*_http.HttpStatus.methodNotAllowed*/get methodNotAllowed() {
      return 405;
    },
    /*_http.HttpStatus.notAcceptable*/get notAcceptable() {
      return 406;
    },
    /*_http.HttpStatus.proxyAuthenticationRequired*/get proxyAuthenticationRequired() {
      return 407;
    },
    /*_http.HttpStatus.requestTimeout*/get requestTimeout() {
      return 408;
    },
    /*_http.HttpStatus.conflict*/get conflict() {
      return 409;
    },
    /*_http.HttpStatus.gone*/get gone() {
      return 410;
    },
    /*_http.HttpStatus.lengthRequired*/get lengthRequired() {
      return 411;
    },
    /*_http.HttpStatus.preconditionFailed*/get preconditionFailed() {
      return 412;
    },
    /*_http.HttpStatus.requestEntityTooLarge*/get requestEntityTooLarge() {
      return 413;
    },
    /*_http.HttpStatus.requestUriTooLong*/get requestUriTooLong() {
      return 414;
    },
    /*_http.HttpStatus.unsupportedMediaType*/get unsupportedMediaType() {
      return 415;
    },
    /*_http.HttpStatus.requestedRangeNotSatisfiable*/get requestedRangeNotSatisfiable() {
      return 416;
    },
    /*_http.HttpStatus.expectationFailed*/get expectationFailed() {
      return 417;
    },
    /*_http.HttpStatus.misdirectedRequest*/get misdirectedRequest() {
      return 421;
    },
    /*_http.HttpStatus.unprocessableEntity*/get unprocessableEntity() {
      return 422;
    },
    /*_http.HttpStatus.locked*/get locked() {
      return 423;
    },
    /*_http.HttpStatus.failedDependency*/get failedDependency() {
      return 424;
    },
    /*_http.HttpStatus.upgradeRequired*/get upgradeRequired() {
      return 426;
    },
    /*_http.HttpStatus.preconditionRequired*/get preconditionRequired() {
      return 428;
    },
    /*_http.HttpStatus.tooManyRequests*/get tooManyRequests() {
      return 429;
    },
    /*_http.HttpStatus.requestHeaderFieldsTooLarge*/get requestHeaderFieldsTooLarge() {
      return 431;
    },
    /*_http.HttpStatus.connectionClosedWithoutResponse*/get connectionClosedWithoutResponse() {
      return 444;
    },
    /*_http.HttpStatus.unavailableForLegalReasons*/get unavailableForLegalReasons() {
      return 451;
    },
    /*_http.HttpStatus.clientClosedRequest*/get clientClosedRequest() {
      return 499;
    },
    /*_http.HttpStatus.internalServerError*/get internalServerError() {
      return 500;
    },
    /*_http.HttpStatus.notImplemented*/get notImplemented() {
      return 501;
    },
    /*_http.HttpStatus.badGateway*/get badGateway() {
      return 502;
    },
    /*_http.HttpStatus.serviceUnavailable*/get serviceUnavailable() {
      return 503;
    },
    /*_http.HttpStatus.gatewayTimeout*/get gatewayTimeout() {
      return 504;
    },
    /*_http.HttpStatus.httpVersionNotSupported*/get httpVersionNotSupported() {
      return 505;
    },
    /*_http.HttpStatus.variantAlsoNegotiates*/get variantAlsoNegotiates() {
      return 506;
    },
    /*_http.HttpStatus.insufficientStorage*/get insufficientStorage() {
      return 507;
    },
    /*_http.HttpStatus.loopDetected*/get loopDetected() {
      return 508;
    },
    /*_http.HttpStatus.notExtended*/get notExtended() {
      return 510;
    },
    /*_http.HttpStatus.networkAuthenticationRequired*/get networkAuthenticationRequired() {
      return 511;
    },
    /*_http.HttpStatus.networkConnectTimeoutError*/get networkConnectTimeoutError() {
      return 599;
    },
    /*_http.HttpStatus.CONTINUE*/get CONTINUE() {
      return 100;
    },
    /*_http.HttpStatus.SWITCHING_PROTOCOLS*/get SWITCHING_PROTOCOLS() {
      return 101;
    },
    /*_http.HttpStatus.OK*/get OK() {
      return 200;
    },
    /*_http.HttpStatus.CREATED*/get CREATED() {
      return 201;
    },
    /*_http.HttpStatus.ACCEPTED*/get ACCEPTED() {
      return 202;
    },
    /*_http.HttpStatus.NON_AUTHORITATIVE_INFORMATION*/get NON_AUTHORITATIVE_INFORMATION() {
      return 203;
    },
    /*_http.HttpStatus.NO_CONTENT*/get NO_CONTENT() {
      return 204;
    },
    /*_http.HttpStatus.RESET_CONTENT*/get RESET_CONTENT() {
      return 205;
    },
    /*_http.HttpStatus.PARTIAL_CONTENT*/get PARTIAL_CONTENT() {
      return 206;
    },
    /*_http.HttpStatus.MULTIPLE_CHOICES*/get MULTIPLE_CHOICES() {
      return 300;
    },
    /*_http.HttpStatus.MOVED_PERMANENTLY*/get MOVED_PERMANENTLY() {
      return 301;
    },
    /*_http.HttpStatus.FOUND*/get FOUND() {
      return 302;
    },
    /*_http.HttpStatus.MOVED_TEMPORARILY*/get MOVED_TEMPORARILY() {
      return 302;
    },
    /*_http.HttpStatus.SEE_OTHER*/get SEE_OTHER() {
      return 303;
    },
    /*_http.HttpStatus.NOT_MODIFIED*/get NOT_MODIFIED() {
      return 304;
    },
    /*_http.HttpStatus.USE_PROXY*/get USE_PROXY() {
      return 305;
    },
    /*_http.HttpStatus.TEMPORARY_REDIRECT*/get TEMPORARY_REDIRECT() {
      return 307;
    },
    /*_http.HttpStatus.BAD_REQUEST*/get BAD_REQUEST() {
      return 400;
    },
    /*_http.HttpStatus.UNAUTHORIZED*/get UNAUTHORIZED() {
      return 401;
    },
    /*_http.HttpStatus.PAYMENT_REQUIRED*/get PAYMENT_REQUIRED() {
      return 402;
    },
    /*_http.HttpStatus.FORBIDDEN*/get FORBIDDEN() {
      return 403;
    },
    /*_http.HttpStatus.NOT_FOUND*/get NOT_FOUND() {
      return 404;
    },
    /*_http.HttpStatus.METHOD_NOT_ALLOWED*/get METHOD_NOT_ALLOWED() {
      return 405;
    },
    /*_http.HttpStatus.NOT_ACCEPTABLE*/get NOT_ACCEPTABLE() {
      return 406;
    },
    /*_http.HttpStatus.PROXY_AUTHENTICATION_REQUIRED*/get PROXY_AUTHENTICATION_REQUIRED() {
      return 407;
    },
    /*_http.HttpStatus.REQUEST_TIMEOUT*/get REQUEST_TIMEOUT() {
      return 408;
    },
    /*_http.HttpStatus.CONFLICT*/get CONFLICT() {
      return 409;
    },
    /*_http.HttpStatus.GONE*/get GONE() {
      return 410;
    },
    /*_http.HttpStatus.LENGTH_REQUIRED*/get LENGTH_REQUIRED() {
      return 411;
    },
    /*_http.HttpStatus.PRECONDITION_FAILED*/get PRECONDITION_FAILED() {
      return 412;
    },
    /*_http.HttpStatus.REQUEST_ENTITY_TOO_LARGE*/get REQUEST_ENTITY_TOO_LARGE() {
      return 413;
    },
    /*_http.HttpStatus.REQUEST_URI_TOO_LONG*/get REQUEST_URI_TOO_LONG() {
      return 414;
    },
    /*_http.HttpStatus.UNSUPPORTED_MEDIA_TYPE*/get UNSUPPORTED_MEDIA_TYPE() {
      return 415;
    },
    /*_http.HttpStatus.REQUESTED_RANGE_NOT_SATISFIABLE*/get REQUESTED_RANGE_NOT_SATISFIABLE() {
      return 416;
    },
    /*_http.HttpStatus.EXPECTATION_FAILED*/get EXPECTATION_FAILED() {
      return 417;
    },
    /*_http.HttpStatus.UPGRADE_REQUIRED*/get UPGRADE_REQUIRED() {
      return 426;
    },
    /*_http.HttpStatus.INTERNAL_SERVER_ERROR*/get INTERNAL_SERVER_ERROR() {
      return 500;
    },
    /*_http.HttpStatus.NOT_IMPLEMENTED*/get NOT_IMPLEMENTED() {
      return 501;
    },
    /*_http.HttpStatus.BAD_GATEWAY*/get BAD_GATEWAY() {
      return 502;
    },
    /*_http.HttpStatus.SERVICE_UNAVAILABLE*/get SERVICE_UNAVAILABLE() {
      return 503;
    },
    /*_http.HttpStatus.GATEWAY_TIMEOUT*/get GATEWAY_TIMEOUT() {
      return 504;
    },
    /*_http.HttpStatus.HTTP_VERSION_NOT_SUPPORTED*/get HTTP_VERSION_NOT_SUPPORTED() {
      return 505;
    },
    /*_http.HttpStatus.NETWORK_CONNECT_TIMEOUT_ERROR*/get NETWORK_CONNECT_TIMEOUT_ERROR() {
      return 599;
    }
  });
  _http.HttpServer = class HttpServer extends core.Object {
    static bind(address, port, opts) {
      let backlog = opts && 'backlog' in opts ? opts.backlog : 0;
      let v6Only = opts && 'v6Only' in opts ? opts.v6Only : false;
      let shared = opts && 'shared' in opts ? opts.shared : false;
      return _http._HttpServer.bind(address, port, backlog, v6Only, shared);
    }
    static bindSecure(address, port, context, opts) {
      let backlog = opts && 'backlog' in opts ? opts.backlog : 0;
      let v6Only = opts && 'v6Only' in opts ? opts.v6Only : false;
      let requestClientCertificate = opts && 'requestClientCertificate' in opts ? opts.requestClientCertificate : false;
      let shared = opts && 'shared' in opts ? opts.shared : false;
      return _http._HttpServer.bindSecure(address, port, context, backlog, v6Only, requestClientCertificate, shared);
    }
    static listenOn(serverSocket) {
      return new _http._HttpServer.listenOn(serverSocket);
    }
  };
  (_http.HttpServer[dart.mixinNew] = function() {
    this.serverHeader = null;
    this.autoCompress = null;
    this.idleTimeout = null;
  }).prototype = _http.HttpServer.prototype;
  _http.HttpServer.prototype[dart.isStream] = true;
  dart.addTypeTests(_http.HttpServer);
  _http.HttpServer[dart.implements] = () => [StreamOfHttpRequest()];
  dart.setFieldSignature(_http.HttpServer, () => ({
    __proto__: dart.getFields(_http.HttpServer.__proto__),
    serverHeader: dart.fieldType(core.String),
    autoCompress: dart.fieldType(core.bool),
    idleTimeout: dart.fieldType(core.Duration)
  }));
  _http.HttpConnectionsInfo = class HttpConnectionsInfo extends core.Object {};
  (_http.HttpConnectionsInfo.new = function() {
    this.total = 0;
    this.active = 0;
    this.idle = 0;
    this.closing = 0;
  }).prototype = _http.HttpConnectionsInfo.prototype;
  dart.addTypeTests(_http.HttpConnectionsInfo);
  dart.setFieldSignature(_http.HttpConnectionsInfo, () => ({
    __proto__: dart.getFields(_http.HttpConnectionsInfo.__proto__),
    total: dart.fieldType(core.int),
    active: dart.fieldType(core.int),
    idle: dart.fieldType(core.int),
    closing: dart.fieldType(core.int)
  }));
  _http.HttpHeaders = class HttpHeaders extends core.Object {};
  (_http.HttpHeaders.new = function() {
    this.date = null;
    this.expires = null;
    this.ifModifiedSince = null;
    this.host = null;
    this.port = null;
    this.contentType = null;
    this.contentLength = null;
    this.persistentConnection = null;
    this.chunkedTransferEncoding = null;
  }).prototype = _http.HttpHeaders.prototype;
  dart.addTypeTests(_http.HttpHeaders);
  dart.setFieldSignature(_http.HttpHeaders, () => ({
    __proto__: dart.getFields(_http.HttpHeaders.__proto__),
    date: dart.fieldType(core.DateTime),
    expires: dart.fieldType(core.DateTime),
    ifModifiedSince: dart.fieldType(core.DateTime),
    host: dart.fieldType(core.String),
    port: dart.fieldType(core.int),
    contentType: dart.fieldType(_http.ContentType),
    contentLength: dart.fieldType(core.int),
    persistentConnection: dart.fieldType(core.bool),
    chunkedTransferEncoding: dart.fieldType(core.bool)
  }));
  dart.defineLazy(_http.HttpHeaders, {
    /*_http.HttpHeaders.acceptHeader*/get acceptHeader() {
      return "accept";
    },
    /*_http.HttpHeaders.acceptCharsetHeader*/get acceptCharsetHeader() {
      return "accept-charset";
    },
    /*_http.HttpHeaders.acceptEncodingHeader*/get acceptEncodingHeader() {
      return "accept-encoding";
    },
    /*_http.HttpHeaders.acceptLanguageHeader*/get acceptLanguageHeader() {
      return "accept-language";
    },
    /*_http.HttpHeaders.acceptRangesHeader*/get acceptRangesHeader() {
      return "accept-ranges";
    },
    /*_http.HttpHeaders.ageHeader*/get ageHeader() {
      return "age";
    },
    /*_http.HttpHeaders.allowHeader*/get allowHeader() {
      return "allow";
    },
    /*_http.HttpHeaders.authorizationHeader*/get authorizationHeader() {
      return "authorization";
    },
    /*_http.HttpHeaders.cacheControlHeader*/get cacheControlHeader() {
      return "cache-control";
    },
    /*_http.HttpHeaders.connectionHeader*/get connectionHeader() {
      return "connection";
    },
    /*_http.HttpHeaders.contentEncodingHeader*/get contentEncodingHeader() {
      return "content-encoding";
    },
    /*_http.HttpHeaders.contentLanguageHeader*/get contentLanguageHeader() {
      return "content-language";
    },
    /*_http.HttpHeaders.contentLengthHeader*/get contentLengthHeader() {
      return "content-length";
    },
    /*_http.HttpHeaders.contentLocationHeader*/get contentLocationHeader() {
      return "content-location";
    },
    /*_http.HttpHeaders.contentMD5Header*/get contentMD5Header() {
      return "content-md5";
    },
    /*_http.HttpHeaders.contentRangeHeader*/get contentRangeHeader() {
      return "content-range";
    },
    /*_http.HttpHeaders.contentTypeHeader*/get contentTypeHeader() {
      return "content-type";
    },
    /*_http.HttpHeaders.dateHeader*/get dateHeader() {
      return "date";
    },
    /*_http.HttpHeaders.etagHeader*/get etagHeader() {
      return "etag";
    },
    /*_http.HttpHeaders.expectHeader*/get expectHeader() {
      return "expect";
    },
    /*_http.HttpHeaders.expiresHeader*/get expiresHeader() {
      return "expires";
    },
    /*_http.HttpHeaders.fromHeader*/get fromHeader() {
      return "from";
    },
    /*_http.HttpHeaders.hostHeader*/get hostHeader() {
      return "host";
    },
    /*_http.HttpHeaders.ifMatchHeader*/get ifMatchHeader() {
      return "if-match";
    },
    /*_http.HttpHeaders.ifModifiedSinceHeader*/get ifModifiedSinceHeader() {
      return "if-modified-since";
    },
    /*_http.HttpHeaders.ifNoneMatchHeader*/get ifNoneMatchHeader() {
      return "if-none-match";
    },
    /*_http.HttpHeaders.ifRangeHeader*/get ifRangeHeader() {
      return "if-range";
    },
    /*_http.HttpHeaders.ifUnmodifiedSinceHeader*/get ifUnmodifiedSinceHeader() {
      return "if-unmodified-since";
    },
    /*_http.HttpHeaders.lastModifiedHeader*/get lastModifiedHeader() {
      return "last-modified";
    },
    /*_http.HttpHeaders.locationHeader*/get locationHeader() {
      return "location";
    },
    /*_http.HttpHeaders.maxForwardsHeader*/get maxForwardsHeader() {
      return "max-forwards";
    },
    /*_http.HttpHeaders.pragmaHeader*/get pragmaHeader() {
      return "pragma";
    },
    /*_http.HttpHeaders.proxyAuthenticateHeader*/get proxyAuthenticateHeader() {
      return "proxy-authenticate";
    },
    /*_http.HttpHeaders.proxyAuthorizationHeader*/get proxyAuthorizationHeader() {
      return "proxy-authorization";
    },
    /*_http.HttpHeaders.rangeHeader*/get rangeHeader() {
      return "range";
    },
    /*_http.HttpHeaders.refererHeader*/get refererHeader() {
      return "referer";
    },
    /*_http.HttpHeaders.retryAfterHeader*/get retryAfterHeader() {
      return "retry-after";
    },
    /*_http.HttpHeaders.serverHeader*/get serverHeader() {
      return "server";
    },
    /*_http.HttpHeaders.teHeader*/get teHeader() {
      return "te";
    },
    /*_http.HttpHeaders.trailerHeader*/get trailerHeader() {
      return "trailer";
    },
    /*_http.HttpHeaders.transferEncodingHeader*/get transferEncodingHeader() {
      return "transfer-encoding";
    },
    /*_http.HttpHeaders.upgradeHeader*/get upgradeHeader() {
      return "upgrade";
    },
    /*_http.HttpHeaders.userAgentHeader*/get userAgentHeader() {
      return "user-agent";
    },
    /*_http.HttpHeaders.varyHeader*/get varyHeader() {
      return "vary";
    },
    /*_http.HttpHeaders.viaHeader*/get viaHeader() {
      return "via";
    },
    /*_http.HttpHeaders.warningHeader*/get warningHeader() {
      return "warning";
    },
    /*_http.HttpHeaders.wwwAuthenticateHeader*/get wwwAuthenticateHeader() {
      return "www-authenticate";
    },
    /*_http.HttpHeaders.ACCEPT*/get ACCEPT() {
      return "accept";
    },
    /*_http.HttpHeaders.ACCEPT_CHARSET*/get ACCEPT_CHARSET() {
      return "accept-charset";
    },
    /*_http.HttpHeaders.ACCEPT_ENCODING*/get ACCEPT_ENCODING() {
      return "accept-encoding";
    },
    /*_http.HttpHeaders.ACCEPT_LANGUAGE*/get ACCEPT_LANGUAGE() {
      return "accept-language";
    },
    /*_http.HttpHeaders.ACCEPT_RANGES*/get ACCEPT_RANGES() {
      return "accept-ranges";
    },
    /*_http.HttpHeaders.AGE*/get AGE() {
      return "age";
    },
    /*_http.HttpHeaders.ALLOW*/get ALLOW() {
      return "allow";
    },
    /*_http.HttpHeaders.AUTHORIZATION*/get AUTHORIZATION() {
      return "authorization";
    },
    /*_http.HttpHeaders.CACHE_CONTROL*/get CACHE_CONTROL() {
      return "cache-control";
    },
    /*_http.HttpHeaders.CONNECTION*/get CONNECTION() {
      return "connection";
    },
    /*_http.HttpHeaders.CONTENT_ENCODING*/get CONTENT_ENCODING() {
      return "content-encoding";
    },
    /*_http.HttpHeaders.CONTENT_LANGUAGE*/get CONTENT_LANGUAGE() {
      return "content-language";
    },
    /*_http.HttpHeaders.CONTENT_LENGTH*/get CONTENT_LENGTH() {
      return "content-length";
    },
    /*_http.HttpHeaders.CONTENT_LOCATION*/get CONTENT_LOCATION() {
      return "content-location";
    },
    /*_http.HttpHeaders.CONTENT_MD5*/get CONTENT_MD5() {
      return "content-md5";
    },
    /*_http.HttpHeaders.CONTENT_RANGE*/get CONTENT_RANGE() {
      return "content-range";
    },
    /*_http.HttpHeaders.CONTENT_TYPE*/get CONTENT_TYPE() {
      return "content-type";
    },
    /*_http.HttpHeaders.DATE*/get DATE() {
      return "date";
    },
    /*_http.HttpHeaders.ETAG*/get ETAG() {
      return "etag";
    },
    /*_http.HttpHeaders.EXPECT*/get EXPECT() {
      return "expect";
    },
    /*_http.HttpHeaders.EXPIRES*/get EXPIRES() {
      return "expires";
    },
    /*_http.HttpHeaders.FROM*/get FROM() {
      return "from";
    },
    /*_http.HttpHeaders.HOST*/get HOST() {
      return "host";
    },
    /*_http.HttpHeaders.IF_MATCH*/get IF_MATCH() {
      return "if-match";
    },
    /*_http.HttpHeaders.IF_MODIFIED_SINCE*/get IF_MODIFIED_SINCE() {
      return "if-modified-since";
    },
    /*_http.HttpHeaders.IF_NONE_MATCH*/get IF_NONE_MATCH() {
      return "if-none-match";
    },
    /*_http.HttpHeaders.IF_RANGE*/get IF_RANGE() {
      return "if-range";
    },
    /*_http.HttpHeaders.IF_UNMODIFIED_SINCE*/get IF_UNMODIFIED_SINCE() {
      return "if-unmodified-since";
    },
    /*_http.HttpHeaders.LAST_MODIFIED*/get LAST_MODIFIED() {
      return "last-modified";
    },
    /*_http.HttpHeaders.LOCATION*/get LOCATION() {
      return "location";
    },
    /*_http.HttpHeaders.MAX_FORWARDS*/get MAX_FORWARDS() {
      return "max-forwards";
    },
    /*_http.HttpHeaders.PRAGMA*/get PRAGMA() {
      return "pragma";
    },
    /*_http.HttpHeaders.PROXY_AUTHENTICATE*/get PROXY_AUTHENTICATE() {
      return "proxy-authenticate";
    },
    /*_http.HttpHeaders.PROXY_AUTHORIZATION*/get PROXY_AUTHORIZATION() {
      return "proxy-authorization";
    },
    /*_http.HttpHeaders.RANGE*/get RANGE() {
      return "range";
    },
    /*_http.HttpHeaders.REFERER*/get REFERER() {
      return "referer";
    },
    /*_http.HttpHeaders.RETRY_AFTER*/get RETRY_AFTER() {
      return "retry-after";
    },
    /*_http.HttpHeaders.SERVER*/get SERVER() {
      return "server";
    },
    /*_http.HttpHeaders.TE*/get TE() {
      return "te";
    },
    /*_http.HttpHeaders.TRAILER*/get TRAILER() {
      return "trailer";
    },
    /*_http.HttpHeaders.TRANSFER_ENCODING*/get TRANSFER_ENCODING() {
      return "transfer-encoding";
    },
    /*_http.HttpHeaders.UPGRADE*/get UPGRADE() {
      return "upgrade";
    },
    /*_http.HttpHeaders.USER_AGENT*/get USER_AGENT() {
      return "user-agent";
    },
    /*_http.HttpHeaders.VARY*/get VARY() {
      return "vary";
    },
    /*_http.HttpHeaders.VIA*/get VIA() {
      return "via";
    },
    /*_http.HttpHeaders.WARNING*/get WARNING() {
      return "warning";
    },
    /*_http.HttpHeaders.WWW_AUTHENTICATE*/get WWW_AUTHENTICATE() {
      return "www-authenticate";
    },
    /*_http.HttpHeaders.cookieHeader*/get cookieHeader() {
      return "cookie";
    },
    /*_http.HttpHeaders.setCookieHeader*/get setCookieHeader() {
      return "set-cookie";
    },
    /*_http.HttpHeaders.COOKIE*/get COOKIE() {
      return "cookie";
    },
    /*_http.HttpHeaders.SET_COOKIE*/get SET_COOKIE() {
      return "set-cookie";
    },
    /*_http.HttpHeaders.generalHeaders*/get generalHeaders() {
      return dart.constList(["cache-control", "connection", "date", "pragma", "trailer", "transfer-encoding", "upgrade", "via", "warning"], core.String);
    },
    /*_http.HttpHeaders.GENERAL_HEADERS*/get GENERAL_HEADERS() {
      return _http.HttpHeaders.generalHeaders;
    },
    /*_http.HttpHeaders.entityHeaders*/get entityHeaders() {
      return dart.constList(["allow", "content-encoding", "content-language", "content-length", "content-location", "content-md5", "content-range", "content-type", "expires", "last-modified"], core.String);
    },
    /*_http.HttpHeaders.ENTITY_HEADERS*/get ENTITY_HEADERS() {
      return _http.HttpHeaders.entityHeaders;
    },
    /*_http.HttpHeaders.responseHeaders*/get responseHeaders() {
      return dart.constList(["accept-ranges", "age", "etag", "location", "proxy-authenticate", "retry-after", "server", "vary", "www-authenticate"], core.String);
    },
    /*_http.HttpHeaders.RESPONSE_HEADERS*/get RESPONSE_HEADERS() {
      return _http.HttpHeaders.responseHeaders;
    },
    /*_http.HttpHeaders.requestHeaders*/get requestHeaders() {
      return dart.constList(["accept", "accept-charset", "accept-encoding", "accept-language", "authorization", "expect", "from", "host", "if-match", "if-modified-since", "if-none-match", "if-range", "if-unmodified-since", "max-forwards", "proxy-authorization", "range", "referer", "te", "user-agent"], core.String);
    },
    /*_http.HttpHeaders.REQUEST_HEADERS*/get REQUEST_HEADERS() {
      return _http.HttpHeaders.requestHeaders;
    }
  });
  _http.HeaderValue = class HeaderValue extends core.Object {
    static new(value, parameters) {
      if (value === void 0) value = "";
      if (parameters === void 0) parameters = null;
      return new _http._HeaderValue.new(value, parameters);
    }
    static parse(value, opts) {
      let parameterSeparator = opts && 'parameterSeparator' in opts ? opts.parameterSeparator : ";";
      let valueSeparator = opts && 'valueSeparator' in opts ? opts.valueSeparator : null;
      let preserveBackslash = opts && 'preserveBackslash' in opts ? opts.preserveBackslash : false;
      return _http._HeaderValue.parse(value, {parameterSeparator: parameterSeparator, valueSeparator: valueSeparator, preserveBackslash: preserveBackslash});
    }
  };
  (_http.HeaderValue[dart.mixinNew] = function() {
  }).prototype = _http.HeaderValue.prototype;
  dart.addTypeTests(_http.HeaderValue);
  _http.HttpSession = class HttpSession extends core.Object {};
  (_http.HttpSession.new = function() {
  }).prototype = _http.HttpSession.prototype;
  _http.HttpSession.prototype[dart.isMap] = true;
  dart.addTypeTests(_http.HttpSession);
  _http.HttpSession[dart.implements] = () => [core.Map];
  _http.ContentType = class ContentType extends core.Object {
    static new(primaryType, subType, opts) {
      let charset = opts && 'charset' in opts ? opts.charset : null;
      let parameters = opts && 'parameters' in opts ? opts.parameters : null;
      return new _http._ContentType.new(primaryType, subType, charset, parameters);
    }
    static parse(value) {
      return _http._ContentType.parse(value);
    }
  };
  (_http.ContentType[dart.mixinNew] = function() {
  }).prototype = _http.ContentType.prototype;
  dart.addTypeTests(_http.ContentType);
  _http.ContentType[dart.implements] = () => [_http.HeaderValue];
  dart.defineLazy(_http.ContentType, {
    /*_http.ContentType.text*/get text() {
      return _http.ContentType.new("text", "plain", {charset: "utf-8"});
    },
    /*_http.ContentType.TEXT*/get TEXT() {
      return _http.ContentType.text;
    },
    /*_http.ContentType.html*/get html() {
      return _http.ContentType.new("text", "html", {charset: "utf-8"});
    },
    /*_http.ContentType.HTML*/get HTML() {
      return _http.ContentType.html;
    },
    /*_http.ContentType.json*/get json() {
      return _http.ContentType.new("application", "json", {charset: "utf-8"});
    },
    /*_http.ContentType.JSON*/get JSON() {
      return _http.ContentType.json;
    },
    /*_http.ContentType.binary*/get binary() {
      return _http.ContentType.new("application", "octet-stream");
    },
    /*_http.ContentType.BINARY*/get BINARY() {
      return _http.ContentType.binary;
    }
  });
  _http.Cookie = class Cookie extends core.Object {
    static new(name, value) {
      if (name === void 0) name = null;
      if (value === void 0) value = null;
      return new _http._Cookie.new(name, value);
    }
    static fromSetCookieValue(value) {
      return new _http._Cookie.fromSetCookieValue(value);
    }
  };
  (_http.Cookie[dart.mixinNew] = function() {
    this.name = null;
    this.value = null;
    this.expires = null;
    this.maxAge = null;
    this.domain = null;
    this.path = null;
    this.secure = null;
    this.httpOnly = null;
  }).prototype = _http.Cookie.prototype;
  dart.addTypeTests(_http.Cookie);
  dart.setFieldSignature(_http.Cookie, () => ({
    __proto__: dart.getFields(_http.Cookie.__proto__),
    name: dart.fieldType(core.String),
    value: dart.fieldType(core.String),
    expires: dart.fieldType(core.DateTime),
    maxAge: dart.fieldType(core.int),
    domain: dart.fieldType(core.String),
    path: dart.fieldType(core.String),
    secure: dart.fieldType(core.bool),
    httpOnly: dart.fieldType(core.bool)
  }));
  _http.HttpRequest = class HttpRequest extends core.Object {};
  (_http.HttpRequest.new = function() {
  }).prototype = _http.HttpRequest.prototype;
  _http.HttpRequest.prototype[dart.isStream] = true;
  dart.addTypeTests(_http.HttpRequest);
  _http.HttpRequest[dart.implements] = () => [StreamOfListOfint()];
  _http.HttpResponse = class HttpResponse extends core.Object {};
  (_http.HttpResponse.new = function() {
    this.contentLength = null;
    this.statusCode = null;
    this.reasonPhrase = null;
    this.persistentConnection = null;
    this.deadline = null;
    this.bufferOutput = null;
  }).prototype = _http.HttpResponse.prototype;
  dart.addTypeTests(_http.HttpResponse);
  _http.HttpResponse[dart.implements] = () => [io.IOSink];
  dart.setFieldSignature(_http.HttpResponse, () => ({
    __proto__: dart.getFields(_http.HttpResponse.__proto__),
    contentLength: dart.fieldType(core.int),
    statusCode: dart.fieldType(core.int),
    reasonPhrase: dart.fieldType(core.String),
    persistentConnection: dart.fieldType(core.bool),
    deadline: dart.fieldType(core.Duration),
    bufferOutput: dart.fieldType(core.bool)
  }));
  _http.HttpClient = class HttpClient extends core.Object {
    static new(opts) {
      let context = opts && 'context' in opts ? opts.context : null;
      let overrides = _http.HttpOverrides.current;
      if (overrides == null) {
        return new _http._HttpClient.new(context);
      }
      return overrides.createHttpClient(context);
    }
    static findProxyFromEnvironment(url, opts) {
      let environment = opts && 'environment' in opts ? opts.environment : null;
      let overrides = _http.HttpOverrides.current;
      if (overrides == null) {
        return _http._HttpClient._findProxyFromEnvironment(url, environment);
      }
      return overrides.findProxyFromEnvironment(url, environment);
    }
  };
  (_http.HttpClient[dart.mixinNew] = function() {
    this.idleTimeout = null;
    this.connectionTimeout = null;
    this.maxConnectionsPerHost = null;
    this.autoUncompress = null;
    this.userAgent = null;
  }).prototype = _http.HttpClient.prototype;
  dart.addTypeTests(_http.HttpClient);
  dart.setFieldSignature(_http.HttpClient, () => ({
    __proto__: dart.getFields(_http.HttpClient.__proto__),
    idleTimeout: dart.fieldType(core.Duration),
    connectionTimeout: dart.fieldType(core.Duration),
    maxConnectionsPerHost: dart.fieldType(core.int),
    autoUncompress: dart.fieldType(core.bool),
    userAgent: dart.fieldType(core.String)
  }));
  dart.defineLazy(_http.HttpClient, {
    /*_http.HttpClient.defaultHttpPort*/get defaultHttpPort() {
      return 80;
    },
    /*_http.HttpClient.DEFAULT_HTTP_PORT*/get DEFAULT_HTTP_PORT() {
      return 80;
    },
    /*_http.HttpClient.defaultHttpsPort*/get defaultHttpsPort() {
      return 443;
    },
    /*_http.HttpClient.DEFAULT_HTTPS_PORT*/get DEFAULT_HTTPS_PORT() {
      return 443;
    }
  });
  _http.HttpClientRequest = class HttpClientRequest extends core.Object {};
  (_http.HttpClientRequest.new = function() {
    this.persistentConnection = null;
    this.followRedirects = null;
    this.maxRedirects = null;
    this.contentLength = null;
    this.bufferOutput = null;
  }).prototype = _http.HttpClientRequest.prototype;
  dart.addTypeTests(_http.HttpClientRequest);
  _http.HttpClientRequest[dart.implements] = () => [io.IOSink];
  dart.setFieldSignature(_http.HttpClientRequest, () => ({
    __proto__: dart.getFields(_http.HttpClientRequest.__proto__),
    persistentConnection: dart.fieldType(core.bool),
    followRedirects: dart.fieldType(core.bool),
    maxRedirects: dart.fieldType(core.int),
    contentLength: dart.fieldType(core.int),
    bufferOutput: dart.fieldType(core.bool)
  }));
  _http.HttpClientResponse = class HttpClientResponse extends core.Object {};
  (_http.HttpClientResponse.new = function() {
  }).prototype = _http.HttpClientResponse.prototype;
  _http.HttpClientResponse.prototype[dart.isStream] = true;
  dart.addTypeTests(_http.HttpClientResponse);
  _http.HttpClientResponse[dart.implements] = () => [StreamOfListOfint()];
  _http.HttpClientCredentials = class HttpClientCredentials extends core.Object {};
  (_http.HttpClientCredentials.new = function() {
  }).prototype = _http.HttpClientCredentials.prototype;
  dart.addTypeTests(_http.HttpClientCredentials);
  _http.HttpClientBasicCredentials = class HttpClientBasicCredentials extends _http.HttpClientCredentials {
    static new(username, password) {
      return new _http._HttpClientBasicCredentials.new(username, password);
    }
  };
  dart.addTypeTests(_http.HttpClientBasicCredentials);
  _http.HttpClientDigestCredentials = class HttpClientDigestCredentials extends _http.HttpClientCredentials {
    static new(username, password) {
      return new _http._HttpClientDigestCredentials.new(username, password);
    }
  };
  dart.addTypeTests(_http.HttpClientDigestCredentials);
  _http.HttpConnectionInfo = class HttpConnectionInfo extends core.Object {};
  (_http.HttpConnectionInfo.new = function() {
  }).prototype = _http.HttpConnectionInfo.prototype;
  dart.addTypeTests(_http.HttpConnectionInfo);
  _http.RedirectInfo = class RedirectInfo extends core.Object {};
  (_http.RedirectInfo.new = function() {
  }).prototype = _http.RedirectInfo.prototype;
  dart.addTypeTests(_http.RedirectInfo);
  _http.DetachedSocket = class DetachedSocket extends core.Object {};
  (_http.DetachedSocket.new = function() {
  }).prototype = _http.DetachedSocket.prototype;
  dart.addTypeTests(_http.DetachedSocket);
  _http.HttpException = class HttpException extends core.Object {
    toString() {
      let b = new core.StringBuffer.new();
      b.write("HttpException: ");
      b.write(this.message);
      if (this.uri != null) {
        b.write(", uri = " + dart.str(this.uri));
      }
      return b.toString();
    }
  };
  (_http.HttpException.new = function(message, opts) {
    let uri = opts && 'uri' in opts ? opts.uri : null;
    this.message = message;
    this.uri = uri;
  }).prototype = _http.HttpException.prototype;
  dart.addTypeTests(_http.HttpException);
  _http.HttpException[dart.implements] = () => [io.IOException];
  dart.setFieldSignature(_http.HttpException, () => ({
    __proto__: dart.getFields(_http.HttpException.__proto__),
    message: dart.finalFieldType(core.String),
    uri: dart.finalFieldType(core.Uri)
  }));
  dart.defineExtensionMethods(_http.HttpException, ['toString']);
  _http.RedirectException = class RedirectException extends core.Object {
    toString() {
      return "RedirectException: " + dart.str(this.message);
    }
    get uri() {
      return this.redirects[$last].location;
    }
  };
  (_http.RedirectException.new = function(message, redirects) {
    this.message = message;
    this.redirects = redirects;
  }).prototype = _http.RedirectException.prototype;
  dart.addTypeTests(_http.RedirectException);
  _http.RedirectException[dart.implements] = () => [_http.HttpException];
  dart.setGetterSignature(_http.RedirectException, () => ({
    __proto__: dart.getGetters(_http.RedirectException.__proto__),
    uri: core.Uri
  }));
  dart.setFieldSignature(_http.RedirectException, () => ({
    __proto__: dart.getFields(_http.RedirectException.__proto__),
    message: dart.finalFieldType(core.String),
    redirects: dart.finalFieldType(ListOfRedirectInfo())
  }));
  dart.defineExtensionMethods(_http.RedirectException, ['toString']);
  _http._CryptoUtils = class _CryptoUtils extends core.Object {
    static getRandomBytes(count) {
      let result = typed_data.Uint8List.new(count);
      for (let i = 0; i < dart.notNull(count); i++) {
        result[$_set](i, _http._CryptoUtils._rng.nextInt(255));
      }
      return result;
    }
    static bytesToHex(bytes) {
      let result = new core.StringBuffer.new();
      for (let part of bytes) {
        result.write((dart.notNull(part) < 16 ? "0" : "") + part[$toRadixString](16));
      }
      return result.toString();
    }
    static bytesToBase64(bytes, urlSafe, addLineSeparator) {
      if (urlSafe === void 0) urlSafe = false;
      if (addLineSeparator === void 0) addLineSeparator = false;
      let len = bytes[$length];
      if (len === 0) {
        return "";
      }
      let lookup = dart.test(urlSafe) ? "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
      let remainderLength = dart.asInt(len[$remainder](3));
      let chunkLength = dart.notNull(len) - dart.notNull(remainderLength);
      let outputLen = (dart.notNull(len) / 3)[$truncate]() * 4 + (dart.notNull(remainderLength) > 0 ? 4 : 0);
      if (dart.test(addLineSeparator)) {
        outputLen = outputLen + (((outputLen - 1) / 76)[$truncate]() << 1 >>> 0);
      }
      let out = ListOfint().new(outputLen);
      let j = 0, i = 0, c = 0;
      while (i < chunkLength) {
        let x = (dart.notNull(bytes[$_get](i++)) << 16 & 16777215 | dart.notNull(bytes[$_get](i++)) << 8 & 16777215 | dart.notNull(bytes[$_get](i++))) >>> 0;
        out[$_set](j++, lookup[$codeUnitAt](x[$rightShift](18)));
        out[$_set](j++, lookup[$codeUnitAt](x >> 12 & 63));
        out[$_set](j++, lookup[$codeUnitAt](x >> 6 & 63));
        out[$_set](j++, lookup[$codeUnitAt](x & 63));
        if (dart.test(addLineSeparator) && ++c === 19 && j < outputLen - 2) {
          out[$_set](j++, 13);
          out[$_set](j++, 10);
          c = 0;
        }
      }
      if (remainderLength === 1) {
        let x = bytes[$_get](i);
        out[$_set](j++, lookup[$codeUnitAt](x[$rightShift](2)));
        out[$_set](j++, lookup[$codeUnitAt](dart.notNull(x) << 4 & 63));
        out[$_set](j++, 61);
        out[$_set](j++, 61);
      } else if (remainderLength === 2) {
        let x = bytes[$_get](i);
        let y = bytes[$_get](i + 1);
        out[$_set](j++, lookup[$codeUnitAt](x[$rightShift](2)));
        out[$_set](j++, lookup[$codeUnitAt]((dart.notNull(x) << 4 | dart.notNull(y) >> 4) & 63));
        out[$_set](j++, lookup[$codeUnitAt](dart.notNull(y) << 2 & 63));
        out[$_set](j++, 61);
      }
      return core.String.fromCharCodes(out);
    }
    static base64StringToBytes(input, ignoreInvalidCharacters) {
      if (ignoreInvalidCharacters === void 0) ignoreInvalidCharacters = true;
      let len = input.length;
      if (len === 0) {
        return ListOfint().new(0);
      }
      let extrasLen = 0;
      for (let i = 0; i < len; i++) {
        let c = _http._CryptoUtils._decodeTable[$_get](input[$codeUnitAt](i));
        if (dart.notNull(c) < 0) {
          extrasLen++;
          if (c === -2 && !dart.test(ignoreInvalidCharacters)) {
            dart.throw(new core.FormatException.new("Invalid character: " + dart.str(input[$_get](i))));
          }
        }
      }
      if ((len - extrasLen)[$modulo](4) !== 0) {
        dart.throw(new core.FormatException.new("Size of Base 64 characters in Input\n          must be a multiple of 4. Input: " + dart.str(input)));
      }
      let padLength = 0;
      for (let i = len - 1; i >= 0; i--) {
        let currentCodeUnit = input[$codeUnitAt](i);
        if (dart.notNull(_http._CryptoUtils._decodeTable[$_get](currentCodeUnit)) > 0) break;
        if (currentCodeUnit === 61) padLength++;
      }
      let outputLen = ((len - extrasLen) * 6)[$rightShift](3) - padLength;
      let out = ListOfint().new(outputLen);
      for (let i = 0, o = 0; o < outputLen;) {
        let x = 0;
        for (let j = 4; j > 0;) {
          let c = _http._CryptoUtils._decodeTable[$_get](input[$codeUnitAt](i++));
          if (dart.notNull(c) >= 0) {
            x = (x << 6 & 16777215 | dart.notNull(c)) >>> 0;
            j--;
          }
        }
        out[$_set](o++, x[$rightShift](16));
        if (o < outputLen) {
          out[$_set](o++, x >> 8 & 255);
          if (o < outputLen) out[$_set](o++, x & 255);
        }
      }
      return out;
    }
  };
  (_http._CryptoUtils.new = function() {
  }).prototype = _http._CryptoUtils.prototype;
  dart.addTypeTests(_http._CryptoUtils);
  dart.defineLazy(_http._CryptoUtils, {
    /*_http._CryptoUtils.PAD*/get PAD() {
      return 61;
    },
    /*_http._CryptoUtils.CR*/get CR() {
      return 13;
    },
    /*_http._CryptoUtils.LF*/get LF() {
      return 10;
    },
    /*_http._CryptoUtils.LINE_LENGTH*/get LINE_LENGTH() {
      return 76;
    },
    /*_http._CryptoUtils._encodeTable*/get _encodeTable() {
      return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    },
    /*_http._CryptoUtils._encodeTableUrlSafe*/get _encodeTableUrlSafe() {
      return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
    },
    /*_http._CryptoUtils._decodeTable*/get _decodeTable() {
      return dart.constList([-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -2, -2, -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, 62, -2, 62, -2, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -2, -2, -2, 0, -2, -2, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -2, -2, -2, -2, 63, -2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], core.int);
    },
    /*_http._CryptoUtils._rng*/get _rng() {
      return math.Random.secure();
    },
    set _rng(_) {}
  });
  dart.defineLazy(_http, {
    /*_http._MASK_8*/get _MASK_8() {
      return 255;
    },
    /*_http._MASK_32*/get _MASK_32() {
      return 4294967295;
    },
    /*_http._BITS_PER_BYTE*/get _BITS_PER_BYTE() {
      return 8;
    },
    /*_http._BYTES_PER_WORD*/get _BYTES_PER_WORD() {
      return 4;
    }
  });
  const _chunkSizeInWords = Symbol('_chunkSizeInWords');
  const _digestSizeInWords = Symbol('_digestSizeInWords');
  const _bigEndianWords = Symbol('_bigEndianWords');
  const _pendingData = Symbol('_pendingData');
  const _lengthInBytes = Symbol('_lengthInBytes');
  const _currentChunk = Symbol('_currentChunk');
  const _h = Symbol('_h');
  const _digestCalled = Symbol('_digestCalled');
  const _iterate = Symbol('_iterate');
  const _resultAsBytes = Symbol('_resultAsBytes');
  const _finalizeData = Symbol('_finalizeData');
  const _add32 = Symbol('_add32');
  const _roundUp = Symbol('_roundUp');
  const _rotl32 = Symbol('_rotl32');
  const _wordToBytes = Symbol('_wordToBytes');
  const _bytesToChunk = Symbol('_bytesToChunk');
  const _updateHash = Symbol('_updateHash');
  _http._HashBase = class _HashBase extends core.Object {
    add(data) {
      if (dart.test(this[_digestCalled])) {
        dart.throw(new core.StateError.new("Hash update method called after digest was retrieved"));
      }
      this[_lengthInBytes] = dart.notNull(this[_lengthInBytes]) + dart.notNull(data[$length]);
      this[_pendingData][$addAll](data);
      this[_iterate]();
    }
    close() {
      if (dart.test(this[_digestCalled])) {
        return this[_resultAsBytes]();
      }
      this[_digestCalled] = true;
      this[_finalizeData]();
      this[_iterate]();
      if (!(this[_pendingData][$length] === 0)) dart.assertFailed();
      return this[_resultAsBytes]();
    }
    get blockSize() {
      return dart.notNull(this[_chunkSizeInWords]) * 4;
    }
    [_add32](x, y) {
      return dart.dsend(dart.dsend(x, '+', [y]), '&', [4294967295]);
    }
    [_roundUp](val, n) {
      return dart.dsend(dart.dsend(dart.dsend(val, '+', [n]), '-', [1]), '&', [dart.dsend(n, '_negate', [])]);
    }
    [_rotl32](val, shift) {
      let mod_shift = dart.notNull(shift) & 31;
      return (val[$leftShift](mod_shift) & 4294967295 | ((dart.notNull(val) & 4294967295) >>> 0)[$rightShift](32 - mod_shift)) >>> 0;
    }
    [_resultAsBytes]() {
      let result = JSArrayOfint().of([]);
      for (let i = 0; i < dart.notNull(this[_h][$length]); i++) {
        result[$addAll](this[_wordToBytes](this[_h][$_get](i)));
      }
      return result;
    }
    [_bytesToChunk](data, dataIndex) {
      if (!(dart.notNull(data[$length]) - dart.notNull(dataIndex) >= dart.notNull(this[_chunkSizeInWords]) * 4)) dart.assertFailed();
      for (let wordIndex = 0; wordIndex < dart.notNull(this[_chunkSizeInWords]); wordIndex++) {
        let w3 = dart.test(this[_bigEndianWords]) ? data[$_get](dataIndex) : data[$_get](dart.notNull(dataIndex) + 3);
        let w2 = dart.test(this[_bigEndianWords]) ? data[$_get](dart.notNull(dataIndex) + 1) : data[$_get](dart.notNull(dataIndex) + 2);
        let w1 = dart.test(this[_bigEndianWords]) ? data[$_get](dart.notNull(dataIndex) + 2) : data[$_get](dart.notNull(dataIndex) + 1);
        let w0 = dart.test(this[_bigEndianWords]) ? data[$_get](dart.notNull(dataIndex) + 3) : data[$_get](dataIndex);
        dataIndex = dart.notNull(dataIndex) + 4;
        let word = (dart.notNull(w3) & 255) << 24 >>> 0;
        word = (word | (dart.notNull(w2) & 255) << 16) >>> 0;
        word = (word | (dart.notNull(w1) & 255) << 8) >>> 0;
        word = (word | dart.notNull(w0) & 255) >>> 0;
        this[_currentChunk][$_set](wordIndex, word);
      }
    }
    [_wordToBytes](word) {
      let bytes = ListOfint().new(4);
      bytes[$_set](0, word[$rightShift](dart.test(this[_bigEndianWords]) ? 24 : 0) & 255);
      bytes[$_set](1, word[$rightShift](dart.test(this[_bigEndianWords]) ? 16 : 8) & 255);
      bytes[$_set](2, word[$rightShift](dart.test(this[_bigEndianWords]) ? 8 : 16) & 255);
      bytes[$_set](3, word[$rightShift](dart.test(this[_bigEndianWords]) ? 0 : 24) & 255);
      return bytes;
    }
    [_iterate]() {
      let len = this[_pendingData][$length];
      let chunkSizeInBytes = dart.notNull(this[_chunkSizeInWords]) * 4;
      if (dart.notNull(len) >= chunkSizeInBytes) {
        let index = 0;
        for (; dart.notNull(len) - index >= chunkSizeInBytes; index = index + chunkSizeInBytes) {
          this[_bytesToChunk](this[_pendingData], index);
          this[_updateHash](this[_currentChunk]);
        }
        this[_pendingData] = this[_pendingData][$sublist](index, len);
      }
    }
    [_finalizeData]() {
      this[_pendingData][$add](128);
      let contentsLength = dart.notNull(this[_lengthInBytes]) + 9;
      let chunkSizeInBytes = dart.notNull(this[_chunkSizeInWords]) * 4;
      let finalizedLength = this[_roundUp](contentsLength, chunkSizeInBytes);
      let zeroPadding = dart.dsend(finalizedLength, '-', [contentsLength]);
      for (let i = 0; i < dart.notNull(core.num._check(zeroPadding)); i++) {
        this[_pendingData][$add](0);
      }
      let lengthInBits = dart.notNull(this[_lengthInBytes]) * 8;
      if (!(lengthInBits < math.pow(2, 32))) dart.assertFailed();
      if (dart.test(this[_bigEndianWords])) {
        this[_pendingData][$addAll](this[_wordToBytes](0));
        this[_pendingData][$addAll](this[_wordToBytes]((lengthInBits & 4294967295) >>> 0));
      } else {
        this[_pendingData][$addAll](this[_wordToBytes]((lengthInBits & 4294967295) >>> 0));
        this[_pendingData][$addAll](this[_wordToBytes](0));
      }
    }
  };
  (_http._HashBase.new = function(chunkSizeInWords, digestSizeInWords, bigEndianWords) {
    this[_lengthInBytes] = 0;
    this[_currentChunk] = null;
    this[_h] = null;
    this[_digestCalled] = false;
    this[_chunkSizeInWords] = chunkSizeInWords;
    this[_digestSizeInWords] = digestSizeInWords;
    this[_bigEndianWords] = bigEndianWords;
    this[_pendingData] = JSArrayOfint().of([]);
    this[_currentChunk] = ListOfint().new(this[_chunkSizeInWords]);
    this[_h] = ListOfint().new(this[_digestSizeInWords]);
  }).prototype = _http._HashBase.prototype;
  dart.addTypeTests(_http._HashBase);
  dart.setMethodSignature(_http._HashBase, () => ({
    __proto__: dart.getMethods(_http._HashBase.__proto__),
    add: dart.fnType(dart.dynamic, [core.List$(core.int)]),
    close: dart.fnType(core.List$(core.int), []),
    [_add32]: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic]),
    [_roundUp]: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic]),
    [_rotl32]: dart.fnType(core.int, [core.int, core.int]),
    [_resultAsBytes]: dart.fnType(core.List$(core.int), []),
    [_bytesToChunk]: dart.fnType(dart.dynamic, [core.List$(core.int), core.int]),
    [_wordToBytes]: dart.fnType(core.List$(core.int), [core.int]),
    [_iterate]: dart.fnType(dart.dynamic, []),
    [_finalizeData]: dart.fnType(dart.dynamic, [])
  }));
  dart.setGetterSignature(_http._HashBase, () => ({
    __proto__: dart.getGetters(_http._HashBase.__proto__),
    blockSize: core.int
  }));
  dart.setFieldSignature(_http._HashBase, () => ({
    __proto__: dart.getFields(_http._HashBase.__proto__),
    [_chunkSizeInWords]: dart.finalFieldType(core.int),
    [_digestSizeInWords]: dart.finalFieldType(core.int),
    [_bigEndianWords]: dart.finalFieldType(core.bool),
    [_lengthInBytes]: dart.fieldType(core.int),
    [_pendingData]: dart.fieldType(ListOfint()),
    [_currentChunk]: dart.fieldType(ListOfint()),
    [_h]: dart.fieldType(ListOfint()),
    [_digestCalled]: dart.fieldType(core.bool)
  }));
  _http._MD5 = class _MD5 extends _http._HashBase {
    newInstance() {
      return new _http._MD5.new();
    }
    [_updateHash](m) {
      if (!(m[$length] === 16)) dart.assertFailed();
      let a = this[_h][$_get](0);
      let b = this[_h][$_get](1);
      let c = this[_h][$_get](2);
      let d = this[_h][$_get](3);
      let t0 = null;
      let t1 = null;
      for (let i = 0; i < 64; i++) {
        if (i < 16) {
          t0 = (dart.notNull(b) & dart.notNull(c) | ~dart.notNull(b) & 4294967295 & dart.notNull(d)) >>> 0;
          t1 = i;
        } else if (i < 32) {
          t0 = (dart.notNull(d) & dart.notNull(b) | ~dart.notNull(d) & 4294967295 & dart.notNull(c)) >>> 0;
          t1 = (5 * i + 1)[$modulo](16);
        } else if (i < 48) {
          t0 = (dart.notNull(b) ^ dart.notNull(c) ^ dart.notNull(d)) >>> 0;
          t1 = (3 * i + 5)[$modulo](16);
        } else {
          t0 = (dart.notNull(c) ^ (dart.notNull(b) | ~dart.notNull(d) & 4294967295)) >>> 0;
          t1 = (7 * i)[$modulo](16);
        }
        let temp = d;
        d = c;
        c = b;
        b = core.int._check(this[_add32](b, this[_rotl32](core.int._check(this[_add32](this[_add32](a, t0), this[_add32](_http._MD5._k[$_get](i), m[$_get](core.int._check(t1))))), _http._MD5._r[$_get](i))));
        a = temp;
      }
      this[_h][$_set](0, core.int._check(this[_add32](a, this[_h][$_get](0))));
      this[_h][$_set](1, core.int._check(this[_add32](b, this[_h][$_get](1))));
      this[_h][$_set](2, core.int._check(this[_add32](c, this[_h][$_get](2))));
      this[_h][$_set](3, core.int._check(this[_add32](d, this[_h][$_get](3))));
    }
  };
  (_http._MD5.new = function() {
    _http._MD5.__proto__.new.call(this, 16, 4, false);
    this[_h][$_set](0, 1732584193);
    this[_h][$_set](1, 4023233417);
    this[_h][$_set](2, 2562383102);
    this[_h][$_set](3, 271733878);
  }).prototype = _http._MD5.prototype;
  dart.addTypeTests(_http._MD5);
  dart.setMethodSignature(_http._MD5, () => ({
    __proto__: dart.getMethods(_http._MD5.__proto__),
    newInstance: dart.fnType(_http._MD5, []),
    [_updateHash]: dart.fnType(dart.void, [core.List$(core.int)])
  }));
  dart.defineLazy(_http._MD5, {
    /*_http._MD5._k*/get _k() {
      return dart.constList([3614090360, 3905402710, 606105819, 3250441966, 4118548399, 1200080426, 2821735955, 4249261313, 1770035416, 2336552879, 4294925233, 2304563134, 1804603682, 4254626195, 2792965006, 1236535329, 4129170786, 3225465664, 643717713, 3921069994, 3593408605, 38016083, 3634488961, 3889429448, 568446438, 3275163606, 4107603335, 1163531501, 2850285829, 4243563512, 1735328473, 2368359562, 4294588738, 2272392833, 1839030562, 4259657740, 2763975236, 1272893353, 4139469664, 3200236656, 681279174, 3936430074, 3572445317, 76029189, 3654602809, 3873151461, 530742520, 3299628645, 4096336452, 1126891415, 2878612391, 4237533241, 1700485571, 2399980690, 4293915773, 2240044497, 1873313359, 4264355552, 2734768916, 1309151649, 4149444226, 3174756917, 718787259, 3951481745], core.int);
    },
    /*_http._MD5._r*/get _r() {
      return dart.constList([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21], core.int);
    }
  });
  const _w = Symbol('_w');
  _http._SHA1 = class _SHA1 extends _http._HashBase {
    newInstance() {
      return new _http._SHA1.new();
    }
    [_updateHash](m) {
      if (!(m[$length] === 16)) dart.assertFailed();
      let a = this[_h][$_get](0);
      let b = this[_h][$_get](1);
      let c = this[_h][$_get](2);
      let d = this[_h][$_get](3);
      let e = this[_h][$_get](4);
      for (let i = 0; i < 80; i++) {
        if (i < 16) {
          this[_w][$_set](i, m[$_get](i));
        } else {
          let n = (dart.notNull(this[_w][$_get](i - 3)) ^ dart.notNull(this[_w][$_get](i - 8)) ^ dart.notNull(this[_w][$_get](i - 14)) ^ dart.notNull(this[_w][$_get](i - 16))) >>> 0;
          this[_w][$_set](i, this[_rotl32](n, 1));
        }
        let t = this[_add32](this[_add32](this[_rotl32](a, 5), e), this[_w][$_get](i));
        if (i < 20) {
          t = this[_add32](this[_add32](t, (dart.notNull(b) & dart.notNull(c) | ~dart.notNull(b) & dart.notNull(d)) >>> 0), 1518500249);
        } else if (i < 40) {
          t = this[_add32](this[_add32](t, (dart.notNull(b) ^ dart.notNull(c) ^ dart.notNull(d)) >>> 0), 1859775393);
        } else if (i < 60) {
          t = this[_add32](this[_add32](t, (dart.notNull(b) & dart.notNull(c) | dart.notNull(b) & dart.notNull(d) | dart.notNull(c) & dart.notNull(d)) >>> 0), 2400959708);
        } else {
          t = this[_add32](this[_add32](t, (dart.notNull(b) ^ dart.notNull(c) ^ dart.notNull(d)) >>> 0), 3395469782);
        }
        e = d;
        d = c;
        c = this[_rotl32](b, 30);
        b = a;
        a = core.int._check(dart.dsend(t, '&', [4294967295]));
      }
      this[_h][$_set](0, core.int._check(this[_add32](a, this[_h][$_get](0))));
      this[_h][$_set](1, core.int._check(this[_add32](b, this[_h][$_get](1))));
      this[_h][$_set](2, core.int._check(this[_add32](c, this[_h][$_get](2))));
      this[_h][$_set](3, core.int._check(this[_add32](d, this[_h][$_get](3))));
      this[_h][$_set](4, core.int._check(this[_add32](e, this[_h][$_get](4))));
    }
  };
  (_http._SHA1.new = function() {
    this[_w] = ListOfint().new(80);
    _http._SHA1.__proto__.new.call(this, 16, 5, true);
    this[_h][$_set](0, 1732584193);
    this[_h][$_set](1, 4023233417);
    this[_h][$_set](2, 2562383102);
    this[_h][$_set](3, 271733878);
    this[_h][$_set](4, 3285377520);
  }).prototype = _http._SHA1.prototype;
  dart.addTypeTests(_http._SHA1);
  dart.setMethodSignature(_http._SHA1, () => ({
    __proto__: dart.getMethods(_http._SHA1.__proto__),
    newInstance: dart.fnType(_http._SHA1, []),
    [_updateHash]: dart.fnType(dart.void, [core.List$(core.int)])
  }));
  dart.setFieldSignature(_http._SHA1, () => ({
    __proto__: dart.getFields(_http._SHA1.__proto__),
    [_w]: dart.fieldType(ListOfint())
  }));
  let const$80;
  let const$81;
  let const$82;
  let const$83;
  let const$84;
  let const$85;
  let const$86;
  let const$87;
  let const$88;
  _http.HttpDate = class HttpDate extends core.Object {
    static format(date) {
      let wkday = const$80 || (const$80 = dart.constList(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], dart.dynamic));
      let month = const$81 || (const$81 = dart.constList(["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], dart.dynamic));
      let d = date.toUtc();
      let sb = new core.StringBuffer.new();
      sb.write(wkday[$_get](dart.notNull(d.weekday) - 1));
      sb.write(", ");
      sb.write(dart.notNull(d.day) <= 9 ? "0" : "");
      sb.write(dart.toString(d.day));
      sb.write(" ");
      sb.write(month[$_get](dart.notNull(d.month) - 1));
      sb.write(" ");
      sb.write(dart.toString(d.year));
      sb.write(dart.notNull(d.hour) <= 9 ? " 0" : " ");
      sb.write(dart.toString(d.hour));
      sb.write(dart.notNull(d.minute) <= 9 ? ":0" : ":");
      sb.write(dart.toString(d.minute));
      sb.write(dart.notNull(d.second) <= 9 ? ":0" : ":");
      sb.write(dart.toString(d.second));
      sb.write(" GMT");
      return sb.toString();
    }
    static parse(date) {
      let SP = 32;
      let wkdays = const$82 || (const$82 = dart.constList(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], dart.dynamic));
      let weekdays = const$83 || (const$83 = dart.constList(["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], dart.dynamic));
      let months = const$84 || (const$84 = dart.constList(["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], dart.dynamic));
      let wkdaysLowerCase = const$85 || (const$85 = dart.constList(["mon", "tue", "wed", "thu", "fri", "sat", "sun"], dart.dynamic));
      let weekdaysLowerCase = const$86 || (const$86 = dart.constList(["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"], dart.dynamic));
      let monthsLowerCase = const$87 || (const$87 = dart.constList(["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"], dart.dynamic));
      let formatRfc1123 = 0;
      let formatRfc850 = 1;
      let formatAsctime = 2;
      let index = 0;
      let tmp = null;
      let format = null;
      function expect(s) {
        if (date.length - index < s.length) {
          dart.throw(new _http.HttpException.new("Invalid HTTP date " + dart.str(date)));
        }
        let tmp = date[$substring](index, index + s.length);
        if (tmp !== s) {
          dart.throw(new _http.HttpException.new("Invalid HTTP date " + dart.str(date)));
        }
        index = index + s.length;
      }
      dart.fn(expect, StringTovoid());
      function expectWeekday() {
        let weekday = null;
        let pos = date[$indexOf](",", index);
        if (pos === -1) {
          let pos = date[$indexOf](" ", index);
          if (pos === -1) dart.throw(new _http.HttpException.new("Invalid HTTP date " + dart.str(date)));
          tmp = date[$substring](index, pos);
          index = pos + 1;
          weekday = wkdays[$indexOf](tmp);
          if (weekday !== -1) {
            format = formatAsctime;
            return weekday;
          }
        } else {
          tmp = date[$substring](index, pos);
          index = pos + 1;
          weekday = wkdays[$indexOf](tmp);
          if (weekday !== -1) {
            format = formatRfc1123;
            return weekday;
          }
          weekday = weekdays[$indexOf](tmp);
          if (weekday !== -1) {
            format = formatRfc850;
            return weekday;
          }
        }
        dart.throw(new _http.HttpException.new("Invalid HTTP date " + dart.str(date)));
      }
      dart.fn(expectWeekday, VoidToint());
      function expectMonth(separator) {
        let pos = date[$indexOf](separator, index);
        if (pos - index !== 3) dart.throw(new _http.HttpException.new("Invalid HTTP date " + dart.str(date)));
        tmp = date[$substring](index, pos);
        index = pos + 1;
        let month = months[$indexOf](tmp);
        if (month !== -1) return month;
        dart.throw(new _http.HttpException.new("Invalid HTTP date " + dart.str(date)));
      }
      dart.fn(expectMonth, StringToint());
      function expectNum(separator) {
        let pos = null;
        if (separator.length > 0) {
          pos = date[$indexOf](separator, index);
        } else {
          pos = date.length;
        }
        let tmp = date[$substring](index, pos);
        index = dart.notNull(pos) + separator.length;
        try {
          let value = core.int.parse(tmp);
          return value;
        } catch (e$) {
          let e = dart.getThrown(e$);
          if (core.FormatException.is(e)) {
            dart.throw(new _http.HttpException.new("Invalid HTTP date " + dart.str(date)));
          } else
            throw e$;
        }
      }
      dart.fn(expectNum, StringToint());
      function expectEnd() {
        if (index !== date.length) {
          dart.throw(new _http.HttpException.new("Invalid HTTP date " + dart.str(date)));
        }
      }
      dart.fn(expectEnd, VoidTovoid());
      let weekday = expectWeekday();
      let day = null;
      let month = null;
      let year = null;
      let hours = null;
      let minutes = null;
      let seconds = null;
      if (format === formatAsctime) {
        month = expectMonth(" ");
        if (date[$codeUnitAt](index) === SP) index++;
        day = expectNum(" ");
        hours = expectNum(":");
        minutes = expectNum(":");
        seconds = expectNum(" ");
        year = expectNum("");
      } else {
        expect(" ");
        day = expectNum(format === formatRfc1123 ? " " : "-");
        month = expectMonth(format === formatRfc1123 ? " " : "-");
        year = expectNum(" ");
        hours = expectNum(":");
        minutes = expectNum(":");
        seconds = expectNum(" ");
        expect("GMT");
      }
      expectEnd();
      return new core.DateTime.utc(year, dart.notNull(month) + 1, day, hours, minutes, seconds, 0);
    }
    static _parseCookieDate(date) {
      let monthsLowerCase = const$88 || (const$88 = dart.constList(["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"], dart.dynamic));
      let position = 0;
      function error() {
        dart.throw(new _http.HttpException.new("Invalid cookie date " + dart.str(date)));
      }
      dart.fn(error, VoidTovoid());
      function isEnd() {
        return position === date.length;
      }
      dart.fn(isEnd, VoidTobool());
      function isDelimiter(s) {
        let char = s[$codeUnitAt](0);
        if (char === 9) return true;
        if (char >= 32 && char <= 47) return true;
        if (char >= 59 && char <= 64) return true;
        if (char >= 91 && char <= 96) return true;
        if (char >= 123 && char <= 126) return true;
        return false;
      }
      dart.fn(isDelimiter, StringTobool());
      function isNonDelimiter(s) {
        let char = s[$codeUnitAt](0);
        if (char >= 0 && char <= 8) return true;
        if (char >= 10 && char <= 31) return true;
        if (char >= 48 && char <= 57) return true;
        if (char === 58) return true;
        if (char >= 65 && char <= 90) return true;
        if (char >= 97 && char <= 122) return true;
        if (char >= 127 && char <= 255) return true;
        return false;
      }
      dart.fn(isNonDelimiter, StringTobool());
      function isDigit(s) {
        let char = s[$codeUnitAt](0);
        if (char > 47 && char < 58) return true;
        return false;
      }
      dart.fn(isDigit, StringTobool());
      function getMonth(month) {
        if (month.length < 3) return -1;
        return monthsLowerCase[$indexOf](month[$substring](0, 3));
      }
      dart.fn(getMonth, StringToint());
      function toInt(s) {
        let index = 0;
        for (; index < s.length && dart.test(isDigit(s[$_get](index))); index++)
          ;
        return core.int.parse(s[$substring](0, index));
      }
      dart.fn(toInt, StringToint());
      let tokens = [];
      while (!dart.test(isEnd())) {
        while (!dart.test(isEnd()) && dart.test(isDelimiter(date[$_get](position))))
          position++;
        let start = position;
        while (!dart.test(isEnd()) && dart.test(isNonDelimiter(date[$_get](position))))
          position++;
        tokens[$add](date[$substring](start, position)[$toLowerCase]());
        while (!dart.test(isEnd()) && dart.test(isDelimiter(date[$_get](position))))
          position++;
      }
      let timeStr = null;
      let dayOfMonthStr = null;
      let monthStr = null;
      let yearStr = null;
      for (let token of tokens) {
        if (dart.dtest(dart.dsend(dart.dload(token, 'length'), '<', [1]))) continue;
        if (timeStr == null && dart.dtest(dart.dsend(dart.dload(token, 'length'), '>=', [5])) && dart.test(isDigit(core.String._check(dart.dindex(token, 0)))) && (dart.equals(dart.dindex(token, 1), ":") || dart.test(isDigit(core.String._check(dart.dindex(token, 1)))) && dart.equals(dart.dindex(token, 2), ":"))) {
          timeStr = core.String._check(token);
        } else if (dayOfMonthStr == null && dart.test(isDigit(core.String._check(dart.dindex(token, 0))))) {
          dayOfMonthStr = core.String._check(token);
        } else if (monthStr == null && dart.notNull(getMonth(core.String._check(token))) >= 0) {
          monthStr = core.String._check(token);
        } else if (yearStr == null && dart.dtest(dart.dsend(dart.dload(token, 'length'), '>=', [2])) && dart.test(isDigit(core.String._check(dart.dindex(token, 0)))) && dart.test(isDigit(core.String._check(dart.dindex(token, 1))))) {
          yearStr = core.String._check(token);
        }
      }
      if (timeStr == null || dayOfMonthStr == null || monthStr == null || yearStr == null) {
        error();
      }
      let year = toInt(yearStr);
      if (dart.notNull(year) >= 70 && dart.notNull(year) <= 99) {
        year = dart.notNull(year) + 1900;
      } else if (dart.notNull(year) >= 0 && dart.notNull(year) <= 69) {
        year = dart.notNull(year) + 2000;
      }
      if (dart.notNull(year) < 1601) error();
      let dayOfMonth = toInt(dayOfMonthStr);
      if (dart.notNull(dayOfMonth) < 1 || dart.notNull(dayOfMonth) > 31) error();
      let month = dart.notNull(getMonth(monthStr)) + 1;
      let timeList = timeStr[$split](":");
      if (timeList[$length] !== 3) error();
      let hour = toInt(timeList[$_get](0));
      let minute = toInt(timeList[$_get](1));
      let second = toInt(timeList[$_get](2));
      if (dart.notNull(hour) > 23) error();
      if (dart.notNull(minute) > 59) error();
      if (dart.notNull(second) > 59) error();
      return new core.DateTime.utc(year, month, dayOfMonth, hour, minute, second, 0);
    }
  };
  (_http.HttpDate.new = function() {
  }).prototype = _http.HttpDate.prototype;
  dart.addTypeTests(_http.HttpDate);
  const _headers = Symbol('_headers');
  const _defaultPortForScheme = Symbol('_defaultPortForScheme');
  const _mutable = Symbol('_mutable');
  const _noFoldingHeaders = Symbol('_noFoldingHeaders');
  const _contentLength = Symbol('_contentLength');
  const _persistentConnection = Symbol('_persistentConnection');
  const _chunkedTransferEncoding = Symbol('_chunkedTransferEncoding');
  const _host$ = Symbol('_host');
  const _port$ = Symbol('_port');
  const _checkMutable = Symbol('_checkMutable');
  const _addAll = Symbol('_addAll');
  const _add$2 = Symbol('_add');
  const _set = Symbol('_set');
  const _addValue = Symbol('_addValue');
  const _updateHostHeader = Symbol('_updateHostHeader');
  const _addDate = Symbol('_addDate');
  const _addHost = Symbol('_addHost');
  const _addExpires = Symbol('_addExpires');
  const _addConnection = Symbol('_addConnection');
  const _addContentType = Symbol('_addContentType');
  const _addContentLength = Symbol('_addContentLength');
  const _addTransferEncoding = Symbol('_addTransferEncoding');
  const _addIfModifiedSince = Symbol('_addIfModifiedSince');
  const _foldHeader = Symbol('_foldHeader');
  const _finalize = Symbol('_finalize');
  const _build = Symbol('_build');
  const _parseCookies = Symbol('_parseCookies');
  _http._HttpHeaders = class _HttpHeaders extends core.Object {
    _get(name) {
      return this[_headers][$_get](name[$toLowerCase]());
    }
    value(name) {
      name = name[$toLowerCase]();
      let values = this[_headers][$_get](name);
      if (values == null) return null;
      if (dart.notNull(values[$length]) > 1) {
        dart.throw(new _http.HttpException.new("More than one value for header " + dart.str(name)));
      }
      return values[$_get](0);
    }
    add(name, value) {
      this[_checkMutable]();
      this[_addAll](_http._HttpHeaders._validateField(name), value);
    }
    [_addAll](name, value) {
      if (!(name == _http._HttpHeaders._validateField(name))) dart.assertFailed();
      if (core.Iterable.is(value)) {
        for (let v of value) {
          this[_add$2](name, _http._HttpHeaders._validateValue(v));
        }
      } else {
        this[_add$2](name, _http._HttpHeaders._validateValue(value));
      }
    }
    set(name, value) {
      this[_checkMutable]();
      name = _http._HttpHeaders._validateField(name);
      this[_headers][$remove](name);
      if (name === _http.HttpHeaders.transferEncodingHeader) {
        this[_chunkedTransferEncoding] = false;
      }
      this[_addAll](name, value);
    }
    remove(name, value) {
      this[_checkMutable]();
      name = _http._HttpHeaders._validateField(name);
      value = _http._HttpHeaders._validateValue(value);
      let values = this[_headers][$_get](name);
      if (values != null) {
        let index = values[$indexOf](core.String._check(value));
        if (index !== -1) {
          values[$removeRange](index, dart.notNull(index) + 1);
        }
        if (values[$length] === 0) this[_headers][$remove](name);
      }
      if (name === _http.HttpHeaders.transferEncodingHeader && dart.equals(value, "chunked")) {
        this[_chunkedTransferEncoding] = false;
      }
    }
    removeAll(name) {
      this[_checkMutable]();
      name = _http._HttpHeaders._validateField(name);
      this[_headers][$remove](name);
    }
    forEach(f) {
      this[_headers][$forEach](f);
    }
    noFolding(name) {
      if (this[_noFoldingHeaders] == null) this[_noFoldingHeaders] = JSArrayOfString().of([]);
      this[_noFoldingHeaders][$add](name);
    }
    get persistentConnection() {
      return this[_persistentConnection];
    }
    set persistentConnection(persistentConnection) {
      this[_checkMutable]();
      if (persistentConnection == this[_persistentConnection]) return;
      if (dart.test(persistentConnection)) {
        if (this.protocolVersion === "1.1") {
          this.remove(_http.HttpHeaders.connectionHeader, "close");
        } else {
          if (this[_contentLength] === -1) {
            dart.throw(new _http.HttpException.new("Trying to set 'Connection: Keep-Alive' on HTTP 1.0 headers with " + "no ContentLength"));
          }
          this.add(_http.HttpHeaders.connectionHeader, "keep-alive");
        }
      } else {
        if (this.protocolVersion === "1.1") {
          this.add(_http.HttpHeaders.connectionHeader, "close");
        } else {
          this.remove(_http.HttpHeaders.connectionHeader, "keep-alive");
        }
      }
      this[_persistentConnection] = persistentConnection;
    }
    get contentLength() {
      return this[_contentLength];
    }
    set contentLength(contentLength) {
      this[_checkMutable]();
      if (this.protocolVersion === "1.0" && dart.test(this.persistentConnection) && contentLength === -1) {
        dart.throw(new _http.HttpException.new("Trying to clear ContentLength on HTTP 1.0 headers with " + "'Connection: Keep-Alive' set"));
      }
      if (this[_contentLength] == contentLength) return;
      this[_contentLength] = contentLength;
      if (dart.notNull(this[_contentLength]) >= 0) {
        if (dart.test(this.chunkedTransferEncoding)) this.chunkedTransferEncoding = false;
        this[_set](_http.HttpHeaders.contentLengthHeader, dart.toString(contentLength));
      } else {
        this.removeAll(_http.HttpHeaders.contentLengthHeader);
        if (this.protocolVersion === "1.1") {
          this.chunkedTransferEncoding = true;
        }
      }
    }
    get chunkedTransferEncoding() {
      return this[_chunkedTransferEncoding];
    }
    set chunkedTransferEncoding(chunkedTransferEncoding) {
      this[_checkMutable]();
      if (dart.test(chunkedTransferEncoding) && this.protocolVersion === "1.0") {
        dart.throw(new _http.HttpException.new("Trying to set 'Transfer-Encoding: Chunked' on HTTP 1.0 headers"));
      }
      if (chunkedTransferEncoding == this[_chunkedTransferEncoding]) return;
      if (dart.test(chunkedTransferEncoding)) {
        let values = this[_headers][$_get](_http.HttpHeaders.transferEncodingHeader);
        if (values == null || values[$last] !== "chunked") {
          this[_addValue](_http.HttpHeaders.transferEncodingHeader, "chunked");
        }
        this.contentLength = -1;
      } else {
        this.remove(_http.HttpHeaders.transferEncodingHeader, "chunked");
      }
      this[_chunkedTransferEncoding] = chunkedTransferEncoding;
    }
    get host() {
      return this[_host$];
    }
    set host(host) {
      this[_checkMutable]();
      this[_host$] = host;
      this[_updateHostHeader]();
    }
    get port() {
      return this[_port$];
    }
    set port(port) {
      this[_checkMutable]();
      this[_port$] = port;
      this[_updateHostHeader]();
    }
    get ifModifiedSince() {
      let values = this[_headers][$_get](_http.HttpHeaders.ifModifiedSinceHeader);
      if (values != null) {
        try {
          return _http.HttpDate.parse(values[$_get](0));
        } catch (e$) {
          let e = dart.getThrown(e$);
          if (core.Exception.is(e)) {
            return null;
          } else
            throw e$;
        }
      }
      return null;
    }
    set ifModifiedSince(ifModifiedSince) {
      this[_checkMutable]();
      let formatted = _http.HttpDate.format(ifModifiedSince.toUtc());
      this[_set](_http.HttpHeaders.ifModifiedSinceHeader, formatted);
    }
    get date() {
      let values = this[_headers][$_get](_http.HttpHeaders.dateHeader);
      if (values != null) {
        try {
          return _http.HttpDate.parse(values[$_get](0));
        } catch (e$) {
          let e = dart.getThrown(e$);
          if (core.Exception.is(e)) {
            return null;
          } else
            throw e$;
        }
      }
      return null;
    }
    set date(date) {
      this[_checkMutable]();
      let formatted = _http.HttpDate.format(date.toUtc());
      this[_set]("date", formatted);
    }
    get expires() {
      let values = this[_headers][$_get](_http.HttpHeaders.expiresHeader);
      if (values != null) {
        try {
          return _http.HttpDate.parse(values[$_get](0));
        } catch (e$) {
          let e = dart.getThrown(e$);
          if (core.Exception.is(e)) {
            return null;
          } else
            throw e$;
        }
      }
      return null;
    }
    set expires(expires) {
      this[_checkMutable]();
      let formatted = _http.HttpDate.format(expires.toUtc());
      this[_set](_http.HttpHeaders.expiresHeader, formatted);
    }
    get contentType() {
      let values = this[_headers][$_get]("content-type");
      if (values != null) {
        return _http.ContentType.parse(values[$_get](0));
      } else {
        return null;
      }
    }
    set contentType(contentType) {
      this[_checkMutable]();
      this[_set](_http.HttpHeaders.contentTypeHeader, dart.toString(contentType));
    }
    clear() {
      this[_checkMutable]();
      this[_headers][$clear]();
      this[_contentLength] = -1;
      this[_persistentConnection] = true;
      this[_chunkedTransferEncoding] = false;
      this[_host$] = null;
      this[_port$] = null;
    }
    [_add$2](name, value) {
      if (!(name == _http._HttpHeaders._validateField(name))) dart.assertFailed();
      switch (name.length) {
        case 4:
        {
          if (_http.HttpHeaders.dateHeader === name) {
            this[_addDate](name, value);
            return;
          }
          if (_http.HttpHeaders.hostHeader === name) {
            this[_addHost](name, value);
            return;
          }
          break;
        }
        case 7:
        {
          if (_http.HttpHeaders.expiresHeader === name) {
            this[_addExpires](name, value);
            return;
          }
          break;
        }
        case 10:
        {
          if (_http.HttpHeaders.connectionHeader === name) {
            this[_addConnection](name, value);
            return;
          }
          break;
        }
        case 12:
        {
          if (_http.HttpHeaders.contentTypeHeader === name) {
            this[_addContentType](name, value);
            return;
          }
          break;
        }
        case 14:
        {
          if (_http.HttpHeaders.contentLengthHeader === name) {
            this[_addContentLength](name, value);
            return;
          }
          break;
        }
        case 17:
        {
          if (_http.HttpHeaders.transferEncodingHeader === name) {
            this[_addTransferEncoding](name, value);
            return;
          }
          if (_http.HttpHeaders.ifModifiedSinceHeader === name) {
            this[_addIfModifiedSince](name, value);
            return;
          }
        }
      }
      this[_addValue](name, value);
    }
    [_addContentLength](name, value) {
      if (core.int.is(value)) {
        this.contentLength = value;
      } else if (typeof value == 'string') {
        this.contentLength = core.int.parse(value);
      } else {
        dart.throw(new _http.HttpException.new("Unexpected type for header named " + dart.str(name)));
      }
    }
    [_addTransferEncoding](name, value) {
      if (dart.equals(value, "chunked")) {
        this.chunkedTransferEncoding = true;
      } else {
        this[_addValue](_http.HttpHeaders.transferEncodingHeader, value);
      }
    }
    [_addDate](name, value) {
      if (core.DateTime.is(value)) {
        this.date = value;
      } else if (typeof value == 'string') {
        this[_set](_http.HttpHeaders.dateHeader, value);
      } else {
        dart.throw(new _http.HttpException.new("Unexpected type for header named " + dart.str(name)));
      }
    }
    [_addExpires](name, value) {
      if (core.DateTime.is(value)) {
        this.expires = value;
      } else if (typeof value == 'string') {
        this[_set](_http.HttpHeaders.expiresHeader, value);
      } else {
        dart.throw(new _http.HttpException.new("Unexpected type for header named " + dart.str(name)));
      }
    }
    [_addIfModifiedSince](name, value) {
      if (core.DateTime.is(value)) {
        this.ifModifiedSince = value;
      } else if (typeof value == 'string') {
        this[_set](_http.HttpHeaders.ifModifiedSinceHeader, value);
      } else {
        dart.throw(new _http.HttpException.new("Unexpected type for header named " + dart.str(name)));
      }
    }
    [_addHost](name, value) {
      if (typeof value == 'string') {
        let pos = value[$indexOf](":");
        if (pos === -1) {
          this[_host$] = value;
          this[_port$] = _http.HttpClient.defaultHttpPort;
        } else {
          if (pos > 0) {
            this[_host$] = value[$substring](0, pos);
          } else {
            this[_host$] = null;
          }
          if (pos + 1 === value.length) {
            this[_port$] = _http.HttpClient.defaultHttpPort;
          } else {
            try {
              this[_port$] = core.int.parse(value[$substring](pos + 1));
            } catch (e$) {
              let e = dart.getThrown(e$);
              if (core.FormatException.is(e)) {
                this[_port$] = null;
              } else
                throw e$;
            }
          }
        }
        this[_set](_http.HttpHeaders.hostHeader, value);
      } else {
        dart.throw(new _http.HttpException.new("Unexpected type for header named " + dart.str(name)));
      }
    }
    [_addConnection](name, value) {
      let lowerCaseValue = dart.dsend(value, 'toLowerCase', []);
      if (dart.equals(lowerCaseValue, "close")) {
        this[_persistentConnection] = false;
      } else if (dart.equals(lowerCaseValue, "keep-alive")) {
        this[_persistentConnection] = true;
      }
      this[_addValue](name, value);
    }
    [_addContentType](name, value) {
      this[_set](_http.HttpHeaders.contentTypeHeader, core.String._check(value));
    }
    [_addValue](name, value) {
      let values = this[_headers][$_get](name);
      if (values == null) {
        values = JSArrayOfString().of([]);
        this[_headers][$_set](name, values);
      }
      if (core.DateTime.is(value)) {
        values[$add](_http.HttpDate.format(value));
      } else if (typeof value == 'string') {
        values[$add](value);
      } else {
        values[$add](core.String._check(_http._HttpHeaders._validateValue(dart.toString(value))));
      }
    }
    [_set](name, value) {
      if (!(name == _http._HttpHeaders._validateField(name))) dart.assertFailed();
      let values = JSArrayOfString().of([]);
      this[_headers][$_set](name, values);
      values[$add](value);
    }
    [_checkMutable]() {
      if (!dart.test(this[_mutable])) dart.throw(new _http.HttpException.new("HTTP headers are not mutable"));
    }
    [_updateHostHeader]() {
      let defaultPort = this[_port$] == null || this[_port$] == this[_defaultPortForScheme];
      this[_set]("host", defaultPort ? this.host : dart.str(this.host) + ":" + dart.str(this[_port$]));
    }
    [_foldHeader](name) {
      if (name === _http.HttpHeaders.setCookieHeader || this[_noFoldingHeaders] != null && this[_noFoldingHeaders][$indexOf](name) !== -1) {
        return false;
      }
      return true;
    }
    [_finalize]() {
      this[_mutable] = false;
    }
    [_build](builder) {
      for (let name of this[_headers][$keys]) {
        let values = this[_headers][$_get](name);
        let fold = core.bool._check(this[_foldHeader](name));
        let nameData = name[$codeUnits];
        builder.add(nameData);
        builder.addByte(_http._CharCode.COLON);
        builder.addByte(_http._CharCode.SP);
        for (let i = 0; i < dart.notNull(values[$length]); i++) {
          if (i > 0) {
            if (dart.test(fold)) {
              builder.addByte(_http._CharCode.COMMA);
              builder.addByte(_http._CharCode.SP);
            } else {
              builder.addByte(_http._CharCode.CR);
              builder.addByte(_http._CharCode.LF);
              builder.add(nameData);
              builder.addByte(_http._CharCode.COLON);
              builder.addByte(_http._CharCode.SP);
            }
          }
          builder.add(values[$_get](i)[$codeUnits]);
        }
        builder.addByte(_http._CharCode.CR);
        builder.addByte(_http._CharCode.LF);
      }
    }
    toString() {
      let sb = new core.StringBuffer.new();
      this[_headers][$forEach](dart.fn((name, values) => {
        sb.write(name);
        sb.write(": ");
        let fold = core.bool._check(this[_foldHeader](name));
        for (let i = 0; i < dart.notNull(values[$length]); i++) {
          if (i > 0) {
            if (dart.test(fold)) {
              sb.write(", ");
            } else {
              sb.write("\n");
              sb.write(name);
              sb.write(": ");
            }
          }
          sb.write(values[$_get](i));
        }
        sb.write("\n");
      }, StringAndListOfStringToNull()));
      return sb.toString();
    }
    [_parseCookies]() {
      let cookies = JSArrayOfCookie().of([]);
      function parseCookieString(s) {
        let index = 0;
        function done() {
          return index === -1 || index === s.length;
        }
        dart.fn(done, VoidTobool());
        function skipWS() {
          while (!dart.test(done())) {
            if (s[$_get](index) !== " " && s[$_get](index) !== "\t") return;
            index++;
          }
        }
        dart.fn(skipWS, VoidTovoid());
        function parseName() {
          let start = index;
          while (!dart.test(done())) {
            if (s[$_get](index) === " " || s[$_get](index) === "\t" || s[$_get](index) === "=") break;
            index++;
          }
          return s[$substring](start, index);
        }
        dart.fn(parseName, VoidToString());
        function parseValue() {
          let start = index;
          while (!dart.test(done())) {
            if (s[$_get](index) === " " || s[$_get](index) === "\t" || s[$_get](index) === ";") break;
            index++;
          }
          return s[$substring](start, index);
        }
        dart.fn(parseValue, VoidToString());
        function expect(expected) {
          if (dart.test(done())) return false;
          if (s[$_get](index) != expected) return false;
          index++;
          return true;
        }
        dart.fn(expect, StringTobool());
        while (!dart.test(done())) {
          skipWS();
          if (dart.test(done())) return;
          let name = parseName();
          skipWS();
          if (!dart.test(expect("="))) {
            index = s[$indexOf](";", index);
            continue;
          }
          skipWS();
          let value = parseValue();
          try {
            cookies[$add](new _http._Cookie.new(name, value));
          } catch (e) {
            let _ = dart.getThrown(e);
          }
          skipWS();
          if (dart.test(done())) return;
          if (!dart.test(expect(";"))) {
            index = s[$indexOf](";", index);
            continue;
          }
        }
      }
      dart.fn(parseCookieString, StringTovoid());
      let values = this[_headers][$_get](_http.HttpHeaders.cookieHeader);
      if (values != null) {
        values[$forEach](dart.fn(headerValue => parseCookieString(headerValue), StringTovoid()));
      }
      return cookies;
    }
    static _validateField(field) {
      for (let i = 0; i < field.length; i++) {
        if (!dart.test(_http._HttpParser._isTokenChar(field[$codeUnitAt](i)))) {
          dart.throw(new core.FormatException.new("Invalid HTTP header field name: " + dart.str(convert.json.encode(field))));
        }
      }
      return field[$toLowerCase]();
    }
    static _validateValue(value) {
      if (!(typeof value == 'string')) return value;
      for (let i = 0; i < dart.notNull(core.num._check(dart.dload(value, 'length'))); i++) {
        if (!dart.test(_http._HttpParser._isValueChar(core.int._check(dart.dsend(value, 'codeUnitAt', [i]))))) {
          dart.throw(new core.FormatException.new("Invalid HTTP header field value: " + dart.str(convert.json.encode(value))));
        }
      }
      return value;
    }
  };
  (_http._HttpHeaders.new = function(protocolVersion, opts) {
    let defaultPortForScheme = opts && 'defaultPortForScheme' in opts ? opts.defaultPortForScheme : _http.HttpClient.defaultHttpPort;
    let initialHeaders = opts && 'initialHeaders' in opts ? opts.initialHeaders : null;
    this[_mutable] = true;
    this[_noFoldingHeaders] = null;
    this[_contentLength] = -1;
    this[_persistentConnection] = true;
    this[_chunkedTransferEncoding] = false;
    this[_host$] = null;
    this[_port$] = null;
    this.protocolVersion = protocolVersion;
    this[_headers] = new (IdentityMapOfString$ListOfString()).new();
    this[_defaultPortForScheme] = defaultPortForScheme;
    if (initialHeaders != null) {
      initialHeaders[_headers][$forEach](dart.fn((name, value) => this[_headers][$_set](name, value), StringAndListOfStringToListOfString()));
      this[_contentLength] = initialHeaders[_contentLength];
      this[_persistentConnection] = initialHeaders[_persistentConnection];
      this[_chunkedTransferEncoding] = initialHeaders[_chunkedTransferEncoding];
      this[_host$] = initialHeaders[_host$];
      this[_port$] = initialHeaders[_port$];
    }
    if (this.protocolVersion === "1.0") {
      this[_persistentConnection] = false;
      this[_chunkedTransferEncoding] = false;
    }
  }).prototype = _http._HttpHeaders.prototype;
  dart.addTypeTests(_http._HttpHeaders);
  _http._HttpHeaders[dart.implements] = () => [_http.HttpHeaders];
  dart.setMethodSignature(_http._HttpHeaders, () => ({
    __proto__: dart.getMethods(_http._HttpHeaders.__proto__),
    _get: dart.fnType(core.List$(core.String), [core.String]),
    value: dart.fnType(core.String, [core.String]),
    add: dart.fnType(dart.void, [core.String, core.Object]),
    [_addAll]: dart.fnType(dart.void, [core.String, dart.dynamic]),
    set: dart.fnType(dart.void, [core.String, core.Object]),
    remove: dart.fnType(dart.void, [core.String, core.Object]),
    removeAll: dart.fnType(dart.void, [core.String]),
    forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, core.List$(core.String)])]),
    noFolding: dart.fnType(dart.void, [core.String]),
    clear: dart.fnType(dart.void, []),
    [_add$2]: dart.fnType(dart.void, [core.String, dart.dynamic]),
    [_addContentLength]: dart.fnType(dart.void, [core.String, dart.dynamic]),
    [_addTransferEncoding]: dart.fnType(dart.void, [core.String, dart.dynamic]),
    [_addDate]: dart.fnType(dart.void, [core.String, dart.dynamic]),
    [_addExpires]: dart.fnType(dart.void, [core.String, dart.dynamic]),
    [_addIfModifiedSince]: dart.fnType(dart.void, [core.String, dart.dynamic]),
    [_addHost]: dart.fnType(dart.void, [core.String, dart.dynamic]),
    [_addConnection]: dart.fnType(dart.void, [core.String, dart.dynamic]),
    [_addContentType]: dart.fnType(dart.void, [core.String, dart.dynamic]),
    [_addValue]: dart.fnType(dart.void, [core.String, core.Object]),
    [_set]: dart.fnType(dart.void, [core.String, core.String]),
    [_checkMutable]: dart.fnType(dart.dynamic, []),
    [_updateHostHeader]: dart.fnType(dart.dynamic, []),
    [_foldHeader]: dart.fnType(dart.dynamic, [core.String]),
    [_finalize]: dart.fnType(dart.void, []),
    [_build]: dart.fnType(dart.void, [io.BytesBuilder]),
    [_parseCookies]: dart.fnType(core.List$(_http.Cookie), [])
  }));
  dart.setGetterSignature(_http._HttpHeaders, () => ({
    __proto__: dart.getGetters(_http._HttpHeaders.__proto__),
    persistentConnection: core.bool,
    contentLength: core.int,
    chunkedTransferEncoding: core.bool,
    host: core.String,
    port: core.int,
    ifModifiedSince: core.DateTime,
    date: core.DateTime,
    expires: core.DateTime,
    contentType: _http.ContentType
  }));
  dart.setSetterSignature(_http._HttpHeaders, () => ({
    __proto__: dart.getSetters(_http._HttpHeaders.__proto__),
    persistentConnection: core.bool,
    contentLength: core.int,
    chunkedTransferEncoding: core.bool,
    host: core.String,
    port: core.int,
    ifModifiedSince: core.DateTime,
    date: core.DateTime,
    expires: core.DateTime,
    contentType: _http.ContentType
  }));
  dart.setFieldSignature(_http._HttpHeaders, () => ({
    __proto__: dart.getFields(_http._HttpHeaders.__proto__),
    [_headers]: dart.finalFieldType(MapOfString$ListOfString()),
    protocolVersion: dart.finalFieldType(core.String),
    [_mutable]: dart.fieldType(core.bool),
    [_noFoldingHeaders]: dart.fieldType(ListOfString()),
    [_contentLength]: dart.fieldType(core.int),
    [_persistentConnection]: dart.fieldType(core.bool),
    [_chunkedTransferEncoding]: dart.fieldType(core.bool),
    [_host$]: dart.fieldType(core.String),
    [_port$]: dart.fieldType(core.int),
    [_defaultPortForScheme]: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionMethods(_http._HttpHeaders, ['toString']);
  const _value$4 = Symbol('_value');
  const _parameters = Symbol('_parameters');
  const _unmodifiableParameters = Symbol('_unmodifiableParameters');
  const _parse = Symbol('_parse');
  const _ensureParameters = Symbol('_ensureParameters');
  _http._HeaderValue = class _HeaderValue extends core.Object {
    static parse(value, opts) {
      let parameterSeparator = opts && 'parameterSeparator' in opts ? opts.parameterSeparator : ";";
      let valueSeparator = opts && 'valueSeparator' in opts ? opts.valueSeparator : null;
      let preserveBackslash = opts && 'preserveBackslash' in opts ? opts.preserveBackslash : false;
      let result = new _http._HeaderValue.new();
      result[_parse](value, core.String._check(parameterSeparator), core.String._check(valueSeparator), core.bool._check(preserveBackslash));
      return result;
    }
    get value() {
      return this[_value$4];
    }
    [_ensureParameters]() {
      if (this[_parameters] == null) {
        this[_parameters] = new (IdentityMapOfString$String()).new();
      }
    }
    get parameters() {
      this[_ensureParameters]();
      if (this[_unmodifiableParameters] == null) {
        this[_unmodifiableParameters] = new (UnmodifiableMapViewOfString$String()).new(this[_parameters]);
      }
      return this[_unmodifiableParameters];
    }
    toString() {
      let sb = new core.StringBuffer.new();
      sb.write(this[_value$4]);
      if (this.parameters != null && dart.notNull(this.parameters[$length]) > 0) {
        this[_parameters][$forEach](dart.fn((name, value) => {
          sb.write("; ");
          sb.write(name);
          sb.write("=");
          sb.write(value);
        }, StringAndStringToNull()));
      }
      return sb.toString();
    }
    [_parse](s, parameterSeparator, valueSeparator, preserveBackslash) {
      let index = 0;
      function done() {
        return index === s.length;
      }
      dart.fn(done, VoidTobool());
      function skipWS() {
        while (!dart.test(done())) {
          if (s[$_get](index) !== " " && s[$_get](index) !== "\t") return;
          index++;
        }
      }
      dart.fn(skipWS, VoidTovoid());
      function parseValue() {
        let start = index;
        while (!dart.test(done())) {
          if (s[$_get](index) === " " || s[$_get](index) === "\t" || s[$_get](index) == valueSeparator || s[$_get](index) == parameterSeparator) break;
          index++;
        }
        return s[$substring](start, index);
      }
      dart.fn(parseValue, VoidToString());
      function expect(expected) {
        if (dart.test(done()) || s[$_get](index) != expected) {
          dart.throw(new _http.HttpException.new("Failed to parse header value"));
        }
        index++;
      }
      dart.fn(expect, StringTovoid());
      function maybeExpect(expected) {
        if (s[$_get](index) == expected) index++;
      }
      dart.fn(maybeExpect, StringTovoid());
      const parseParameters = (function() {
        let parameters = new (IdentityMapOfString$String()).new();
        this[_parameters] = new (UnmodifiableMapViewOfString$String()).new(parameters);
        function parseParameterName() {
          let start = index;
          while (!dart.test(done())) {
            if (s[$_get](index) === " " || s[$_get](index) === "\t" || s[$_get](index) === "=" || s[$_get](index) == parameterSeparator || s[$_get](index) == valueSeparator) break;
            index++;
          }
          return s[$substring](start, index)[$toLowerCase]();
        }
        dart.fn(parseParameterName, VoidToString());
        function parseParameterValue() {
          if (!dart.test(done()) && s[$_get](index) === "\"") {
            let sb = new core.StringBuffer.new();
            index++;
            while (!dart.test(done())) {
              if (s[$_get](index) === "\\") {
                if (index + 1 === s.length) {
                  dart.throw(new _http.HttpException.new("Failed to parse header value"));
                }
                if (dart.test(preserveBackslash) && s[$_get](index + 1) !== "\"") {
                  sb.write(s[$_get](index));
                }
                index++;
              } else if (s[$_get](index) === "\"") {
                index++;
                break;
              }
              sb.write(s[$_get](index));
              index++;
            }
            return sb.toString();
          } else {
            let val = parseValue();
            return val === "" ? null : val;
          }
        }
        dart.fn(parseParameterValue, VoidToString());
        while (!dart.test(done())) {
          skipWS();
          if (dart.test(done())) return;
          let name = parseParameterName();
          skipWS();
          if (dart.test(done())) {
            parameters._set(name, null);
            return;
          }
          maybeExpect("=");
          skipWS();
          if (dart.test(done())) {
            parameters._set(name, null);
            return;
          }
          let value = parseParameterValue();
          if (name === "charset" && _http._ContentType.is(this) && value != null) {
            value = value[$toLowerCase]();
          }
          parameters._set(name, value);
          skipWS();
          if (dart.test(done())) return;
          if (s[$_get](index) == valueSeparator) return;
          expect(parameterSeparator);
        }
      }).bind(this);
      dart.fn(parseParameters, VoidTovoid());
      skipWS();
      this[_value$4] = parseValue();
      skipWS();
      if (dart.test(done())) return;
      maybeExpect(parameterSeparator);
      parseParameters();
    }
  };
  (_http._HeaderValue.new = function(value, parameters) {
    if (value === void 0) value = "";
    if (parameters === void 0) parameters = null;
    this[_parameters] = null;
    this[_unmodifiableParameters] = null;
    this[_value$4] = value;
    if (parameters != null) {
      this[_parameters] = HashMapOfString$String().from(parameters);
    }
  }).prototype = _http._HeaderValue.prototype;
  dart.addTypeTests(_http._HeaderValue);
  _http._HeaderValue[dart.implements] = () => [_http.HeaderValue];
  dart.setMethodSignature(_http._HeaderValue, () => ({
    __proto__: dart.getMethods(_http._HeaderValue.__proto__),
    [_ensureParameters]: dart.fnType(dart.void, []),
    [_parse]: dart.fnType(dart.void, [core.String, core.String, core.String, core.bool])
  }));
  dart.setGetterSignature(_http._HeaderValue, () => ({
    __proto__: dart.getGetters(_http._HeaderValue.__proto__),
    value: core.String,
    parameters: core.Map$(core.String, core.String)
  }));
  dart.setFieldSignature(_http._HeaderValue, () => ({
    __proto__: dart.getFields(_http._HeaderValue.__proto__),
    [_value$4]: dart.fieldType(core.String),
    [_parameters]: dart.fieldType(MapOfString$String()),
    [_unmodifiableParameters]: dart.fieldType(MapOfString$String())
  }));
  dart.defineExtensionMethods(_http._HeaderValue, ['toString']);
  const _primaryType = Symbol('_primaryType');
  const _subType = Symbol('_subType');
  _http._ContentType = class _ContentType extends _http._HeaderValue {
    static parse(value) {
      let result = new _http._ContentType.__();
      result[_parse](value, ";", null, false);
      let index = result[_value$4][$indexOf]("/");
      if (index === -1 || index === result[_value$4].length - 1) {
        result[_primaryType] = result[_value$4][$trim]()[$toLowerCase]();
        result[_subType] = "";
      } else {
        result[_primaryType] = result[_value$4][$substring](0, index)[$trim]()[$toLowerCase]();
        result[_subType] = result[_value$4][$substring](index + 1)[$trim]()[$toLowerCase]();
      }
      return result;
    }
    get mimeType() {
      return dart.str(this.primaryType) + "/" + dart.str(this.subType);
    }
    get primaryType() {
      return this[_primaryType];
    }
    get subType() {
      return this[_subType];
    }
    get charset() {
      return this.parameters[$_get]("charset");
    }
  };
  (_http._ContentType.new = function(primaryType, subType, charset, parameters) {
    this[_primaryType] = primaryType;
    this[_subType] = subType;
    _http._ContentType.__proto__.new.call(this, "");
    if (this[_primaryType] == null) this[_primaryType] = "";
    if (this[_subType] == null) this[_subType] = "";
    this[_value$4] = dart.str(this[_primaryType]) + "/" + dart.str(this[_subType]);
    if (parameters != null) {
      this[_ensureParameters]();
      parameters[$forEach](dart.fn((key, value) => {
        let lowerCaseKey = key[$toLowerCase]();
        if (lowerCaseKey === "charset") {
          value = value[$toLowerCase]();
        }
        this[_parameters][$_set](lowerCaseKey, value);
      }, StringAndStringToNull()));
    }
    if (charset != null) {
      this[_ensureParameters]();
      this[_parameters][$_set]("charset", charset[$toLowerCase]());
    }
  }).prototype = _http._ContentType.prototype;
  (_http._ContentType.__ = function() {
    this[_primaryType] = "";
    this[_subType] = "";
    _http._ContentType.__proto__.new.call(this);
  }).prototype = _http._ContentType.prototype;
  dart.addTypeTests(_http._ContentType);
  _http._ContentType[dart.implements] = () => [_http.ContentType];
  dart.setGetterSignature(_http._ContentType, () => ({
    __proto__: dart.getGetters(_http._ContentType.__proto__),
    mimeType: core.String,
    primaryType: core.String,
    subType: core.String,
    charset: core.String
  }));
  dart.setFieldSignature(_http._ContentType, () => ({
    __proto__: dart.getFields(_http._ContentType.__proto__),
    [_primaryType]: dart.fieldType(core.String),
    [_subType]: dart.fieldType(core.String)
  }));
  const _validate = Symbol('_validate');
  const _parseSetCookieValue = Symbol('_parseSetCookieValue');
  let const$89;
  _http._Cookie = class _Cookie extends core.Object {
    [_parseSetCookieValue](s) {
      let index = 0;
      function done() {
        return index === s.length;
      }
      dart.fn(done, VoidTobool());
      function parseName() {
        let start = index;
        while (!dart.test(done())) {
          if (s[$_get](index) === "=") break;
          index++;
        }
        return s[$substring](start, index)[$trim]();
      }
      dart.fn(parseName, VoidToString());
      function parseValue() {
        let start = index;
        while (!dart.test(done())) {
          if (s[$_get](index) === ";") break;
          index++;
        }
        return s[$substring](start, index)[$trim]();
      }
      dart.fn(parseValue, VoidToString());
      function expect(expected) {
        if (dart.test(done())) dart.throw(new _http.HttpException.new("Failed to parse header value [" + dart.str(s) + "]"));
        if (s[$_get](index) != expected) {
          dart.throw(new _http.HttpException.new("Failed to parse header value [" + dart.str(s) + "]"));
        }
        index++;
      }
      dart.fn(expect, StringTovoid());
      const parseAttributes = (function() {
        function parseAttributeName() {
          let start = index;
          while (!dart.test(done())) {
            if (s[$_get](index) === "=" || s[$_get](index) === ";") break;
            index++;
          }
          return s[$substring](start, index)[$trim]()[$toLowerCase]();
        }
        dart.fn(parseAttributeName, VoidToString());
        function parseAttributeValue() {
          let start = index;
          while (!dart.test(done())) {
            if (s[$_get](index) === ";") break;
            index++;
          }
          return s[$substring](start, index)[$trim]()[$toLowerCase]();
        }
        dart.fn(parseAttributeValue, VoidToString());
        while (!dart.test(done())) {
          let name = parseAttributeName();
          let value = "";
          if (!dart.test(done()) && s[$_get](index) === "=") {
            index++;
            value = parseAttributeValue();
          }
          if (name === "expires") {
            this.expires = _http.HttpDate._parseCookieDate(value);
          } else if (name === "max-age") {
            this.maxAge = core.int.parse(value);
          } else if (name === "domain") {
            this.domain = value;
          } else if (name === "path") {
            this.path = value;
          } else if (name === "httponly") {
            this.httpOnly = true;
          } else if (name === "secure") {
            this.secure = true;
          }
          if (!dart.test(done())) index++;
        }
      }).bind(this);
      dart.fn(parseAttributes, VoidTovoid());
      this.name = parseName();
      if (dart.test(done()) || this.name.length === 0) {
        dart.throw(new _http.HttpException.new("Failed to parse header value [" + dart.str(s) + "]"));
      }
      index++;
      this.value = parseValue();
      this[_validate]();
      if (dart.test(done())) return;
      index++;
      parseAttributes();
    }
    toString() {
      let sb = new core.StringBuffer.new();
      sb.write(this.name);
      sb.write("=");
      sb.write(this.value);
      if (this.expires != null) {
        sb.write("; Expires=");
        sb.write(_http.HttpDate.format(this.expires));
      }
      if (this.maxAge != null) {
        sb.write("; Max-Age=");
        sb.write(this.maxAge);
      }
      if (this.domain != null) {
        sb.write("; Domain=");
        sb.write(this.domain);
      }
      if (this.path != null) {
        sb.write("; Path=");
        sb.write(this.path);
      }
      if (dart.test(this.secure)) sb.write("; Secure");
      if (dart.test(this.httpOnly)) sb.write("; HttpOnly");
      return sb.toString();
    }
    [_validate]() {
      let separators = const$89 || (const$89 = dart.constList(["(", ")", "<", ">", "@", ",", ";", ":", "\\", "\"", "/", "[", "]", "?", "=", "{", "}"], core.String));
      for (let i = 0; i < this.name.length; i++) {
        let codeUnit = this.name[$codeUnits][$_get](i);
        if (dart.notNull(codeUnit) <= 32 || dart.notNull(codeUnit) >= 127 || dart.notNull(separators[$indexOf](this.name[$_get](i))) >= 0) {
          dart.throw(new core.FormatException.new("Invalid character in cookie name, code unit: '" + dart.str(codeUnit) + "'"));
        }
      }
      if (this.value[$_get](0) === "\"" && this.value[$_get](this.value.length - 1) === "\"") {
        this.value = this.value[$substring](1, this.value.length - 1);
      }
      for (let i = 0; i < this.value.length; i++) {
        let codeUnit = this.value[$codeUnits][$_get](i);
        if (!(codeUnit === 33 || dart.notNull(codeUnit) >= 35 && dart.notNull(codeUnit) <= 43 || dart.notNull(codeUnit) >= 45 && dart.notNull(codeUnit) <= 58 || dart.notNull(codeUnit) >= 60 && dart.notNull(codeUnit) <= 91 || dart.notNull(codeUnit) >= 93 && dart.notNull(codeUnit) <= 126)) {
          dart.throw(new core.FormatException.new("Invalid character in cookie value, code unit: '" + dart.str(codeUnit) + "'"));
        }
      }
    }
  };
  (_http._Cookie.new = function(name, value) {
    if (name === void 0) name = null;
    if (value === void 0) value = null;
    this.expires = null;
    this.maxAge = null;
    this.domain = null;
    this.path = null;
    this.httpOnly = false;
    this.secure = false;
    this.name = name;
    this.value = value;
    this.httpOnly = true;
    this[_validate]();
  }).prototype = _http._Cookie.prototype;
  (_http._Cookie.fromSetCookieValue = function(value) {
    this.name = null;
    this.value = null;
    this.expires = null;
    this.maxAge = null;
    this.domain = null;
    this.path = null;
    this.httpOnly = false;
    this.secure = false;
    this[_parseSetCookieValue](value);
  }).prototype = _http._Cookie.prototype;
  dart.addTypeTests(_http._Cookie);
  _http._Cookie[dart.implements] = () => [_http.Cookie];
  dart.setMethodSignature(_http._Cookie, () => ({
    __proto__: dart.getMethods(_http._Cookie.__proto__),
    [_parseSetCookieValue]: dart.fnType(dart.void, [core.String]),
    [_validate]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(_http._Cookie, () => ({
    __proto__: dart.getFields(_http._Cookie.__proto__),
    name: dart.fieldType(core.String),
    value: dart.fieldType(core.String),
    expires: dart.fieldType(core.DateTime),
    maxAge: dart.fieldType(core.int),
    domain: dart.fieldType(core.String),
    path: dart.fieldType(core.String),
    httpOnly: dart.fieldType(core.bool),
    secure: dart.fieldType(core.bool)
  }));
  dart.defineExtensionMethods(_http._Cookie, ['toString']);
  dart.defineLazy(_http, {
    /*_http._nextServiceId*/get _nextServiceId() {
      return 1;
    },
    set _nextServiceId(_) {}
  });
  const __serviceId$ = Symbol('__serviceId');
  const _serviceId$ = Symbol('_serviceId');
  const _serviceTypePath$ = Symbol('_serviceTypePath');
  const _servicePath$ = Symbol('_servicePath');
  const _serviceTypeName$ = Symbol('_serviceTypeName');
  const _serviceType$ = Symbol('_serviceType');
  _http._ServiceObject = class _ServiceObject extends core.Object {
    get [_serviceId$]() {
      if (this[__serviceId$] === 0) {
        let x = _http._nextServiceId;
        _http._nextServiceId = dart.notNull(x) + 1;
        this[__serviceId$] = x;
      }
      return this[__serviceId$];
    }
    get [_servicePath$]() {
      return dart.str(this[_serviceTypePath$]) + "/" + dart.str(this[_serviceId$]);
    }
    [_serviceType$](ref) {
      if (dart.test(ref)) return "@" + dart.str(this[_serviceTypeName$]);
      return this[_serviceTypeName$];
    }
  };
  (_http._ServiceObject.new = function() {
    this[__serviceId$] = 0;
  }).prototype = _http._ServiceObject.prototype;
  dart.addTypeTests(_http._ServiceObject);
  dart.setMethodSignature(_http._ServiceObject, () => ({
    __proto__: dart.getMethods(_http._ServiceObject.__proto__),
    [_serviceType$]: dart.fnType(core.String, [core.bool])
  }));
  dart.setGetterSignature(_http._ServiceObject, () => ({
    __proto__: dart.getGetters(_http._ServiceObject.__proto__),
    [_serviceId$]: core.int,
    [_servicePath$]: core.String
  }));
  dart.setFieldSignature(_http._ServiceObject, () => ({
    __proto__: dart.getFields(_http._ServiceObject.__proto__),
    [__serviceId$]: dart.fieldType(core.int)
  }));
  const _buffer$1 = Symbol('_buffer');
  const _length$3 = Symbol('_length');
  const _grow$0 = Symbol('_grow');
  _http._CopyingBytesBuilder = class _CopyingBytesBuilder extends core.Object {
    add(bytes) {
      let bytesLength = bytes[$length];
      if (bytesLength === 0) return;
      let required = dart.notNull(this[_length$3]) + dart.notNull(bytesLength);
      if (dart.notNull(this[_buffer$1][$length]) < required) {
        this[_grow$0](required);
      }
      if (!(dart.notNull(this[_buffer$1][$length]) >= required)) dart.assertFailed();
      if (typed_data.Uint8List.is(bytes)) {
        this[_buffer$1][$setRange](this[_length$3], required, bytes);
      } else {
        for (let i = 0; i < dart.notNull(bytesLength); i++) {
          this[_buffer$1][$_set](dart.notNull(this[_length$3]) + i, bytes[$_get](i));
        }
      }
      this[_length$3] = required;
    }
    addByte(byte) {
      if (this[_buffer$1][$length] == this[_length$3]) {
        this[_grow$0](this[_length$3]);
      }
      if (!(dart.notNull(this[_buffer$1][$length]) > dart.notNull(this[_length$3]))) dart.assertFailed();
      this[_buffer$1][$_set](this[_length$3], byte);
      this[_length$3] = dart.notNull(this[_length$3]) + 1;
    }
    [_grow$0](required) {
      let newSize = dart.notNull(required) * 2;
      if (dart.notNull(newSize) < 1024) {
        newSize = 1024;
      } else {
        newSize = _http._CopyingBytesBuilder._pow2roundup(newSize);
      }
      let newBuffer = typed_data.Uint8List.new(newSize);
      newBuffer[$setRange](0, this[_buffer$1][$length], this[_buffer$1]);
      this[_buffer$1] = newBuffer;
    }
    takeBytes() {
      if (this[_length$3] === 0) return _http._CopyingBytesBuilder._emptyList;
      let buffer = typed_data.Uint8List.view(this[_buffer$1][$buffer], 0, this[_length$3]);
      this.clear();
      return buffer;
    }
    toBytes() {
      if (this[_length$3] === 0) return _http._CopyingBytesBuilder._emptyList;
      return typed_data.Uint8List.fromList(typed_data.Uint8List.view(this[_buffer$1][$buffer], 0, this[_length$3]));
    }
    get length() {
      return this[_length$3];
    }
    get isEmpty() {
      return this[_length$3] === 0;
    }
    get isNotEmpty() {
      return this[_length$3] !== 0;
    }
    clear() {
      this[_length$3] = 0;
      this[_buffer$1] = _http._CopyingBytesBuilder._emptyList;
    }
    static _pow2roundup(x) {
      if (!(dart.notNull(x) > 0)) dart.assertFailed();
      x = dart.notNull(x) - 1;
      x = (dart.notNull(x) | x[$rightShift](1)) >>> 0;
      x = (dart.notNull(x) | x[$rightShift](2)) >>> 0;
      x = (dart.notNull(x) | x[$rightShift](4)) >>> 0;
      x = (dart.notNull(x) | x[$rightShift](8)) >>> 0;
      x = (dart.notNull(x) | x[$rightShift](16)) >>> 0;
      return dart.notNull(x) + 1;
    }
  };
  (_http._CopyingBytesBuilder.new = function(initialCapacity) {
    if (initialCapacity === void 0) initialCapacity = 0;
    this[_length$3] = 0;
    this[_buffer$1] = dart.notNull(initialCapacity) <= 0 ? _http._CopyingBytesBuilder._emptyList : typed_data.Uint8List.new(_http._CopyingBytesBuilder._pow2roundup(initialCapacity));
  }).prototype = _http._CopyingBytesBuilder.prototype;
  dart.addTypeTests(_http._CopyingBytesBuilder);
  _http._CopyingBytesBuilder[dart.implements] = () => [io.BytesBuilder];
  dart.setMethodSignature(_http._CopyingBytesBuilder, () => ({
    __proto__: dart.getMethods(_http._CopyingBytesBuilder.__proto__),
    add: dart.fnType(dart.void, [core.List$(core.int)]),
    addByte: dart.fnType(dart.void, [core.int]),
    [_grow$0]: dart.fnType(dart.void, [core.int]),
    takeBytes: dart.fnType(core.List$(core.int), []),
    toBytes: dart.fnType(core.List$(core.int), []),
    clear: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(_http._CopyingBytesBuilder, () => ({
    __proto__: dart.getGetters(_http._CopyingBytesBuilder.__proto__),
    length: core.int,
    isEmpty: core.bool,
    isNotEmpty: core.bool
  }));
  dart.setFieldSignature(_http._CopyingBytesBuilder, () => ({
    __proto__: dart.getFields(_http._CopyingBytesBuilder.__proto__),
    [_length$3]: dart.fieldType(core.int),
    [_buffer$1]: dart.fieldType(typed_data.Uint8List)
  }));
  dart.defineLazy(_http._CopyingBytesBuilder, {
    /*_http._CopyingBytesBuilder._INIT_SIZE*/get _INIT_SIZE() {
      return 1024;
    },
    /*_http._CopyingBytesBuilder._emptyList*/get _emptyList() {
      return typed_data.Uint8List.new(0);
    }
  });
  dart.defineLazy(_http, {
    /*_http._OUTGOING_BUFFER_SIZE*/get _OUTGOING_BUFFER_SIZE() {
      return 8 * 1024;
    }
  });
  const _transferLength = Symbol('_transferLength');
  const _stream$1 = Symbol('_stream');
  const _dataCompleter = Symbol('_dataCompleter');
  _http._HttpIncoming = class _HttpIncoming extends async.Stream$(core.List$(core.int)) {
    get transferLength() {
      return this[_transferLength];
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      this.hasSubscriber = true;
      return this[_stream$1].handleError(dart.fn(error => {
        dart.throw(new _http.HttpException.new(core.String._check(dart.dload(error, 'message')), {uri: this.uri}));
      }, dynamicToNull())).listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
    get dataDone() {
      return this[_dataCompleter].future;
    }
    close(closing) {
      this.fullBodyRead = true;
      this.hasSubscriber = true;
      this[_dataCompleter].complete(closing);
    }
  };
  (_http._HttpIncoming.new = function(headers, transferLength, stream) {
    this[_dataCompleter] = async.Completer.new();
    this.fullBodyRead = false;
    this.upgraded = false;
    this.statusCode = null;
    this.reasonPhrase = null;
    this.method = null;
    this.uri = null;
    this.hasSubscriber = false;
    this.headers = headers;
    this[_transferLength] = transferLength;
    this[_stream$1] = stream;
    _http._HttpIncoming.__proto__.new.call(this);
  }).prototype = _http._HttpIncoming.prototype;
  dart.addTypeTests(_http._HttpIncoming);
  dart.setMethodSignature(_http._HttpIncoming, () => ({
    __proto__: dart.getMethods(_http._HttpIncoming.__proto__),
    listen: dart.fnType(async.StreamSubscription$(core.List$(core.int)), [dart.fnType(dart.void, [core.List$(core.int)])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
    close: dart.fnType(dart.void, [core.bool])
  }));
  dart.setGetterSignature(_http._HttpIncoming, () => ({
    __proto__: dart.getGetters(_http._HttpIncoming.__proto__),
    transferLength: core.int,
    dataDone: async.Future
  }));
  dart.setFieldSignature(_http._HttpIncoming, () => ({
    __proto__: dart.getFields(_http._HttpIncoming.__proto__),
    [_transferLength]: dart.finalFieldType(core.int),
    [_dataCompleter]: dart.finalFieldType(async.Completer),
    [_stream$1]: dart.fieldType(StreamOfListOfint()),
    fullBodyRead: dart.fieldType(core.bool),
    headers: dart.finalFieldType(_http._HttpHeaders),
    upgraded: dart.fieldType(core.bool),
    statusCode: dart.fieldType(core.int),
    reasonPhrase: dart.fieldType(core.String),
    method: dart.fieldType(core.String),
    uri: dart.fieldType(core.Uri),
    hasSubscriber: dart.fieldType(core.bool)
  }));
  const _incoming = Symbol('_incoming');
  const _cookies = Symbol('_cookies');
  _http._HttpInboundMessage = class _HttpInboundMessage extends async.Stream$(core.List$(core.int)) {
    get cookies() {
      if (this[_cookies] != null) return this[_cookies];
      return this[_cookies] = this.headers[_parseCookies]();
    }
    get headers() {
      return this[_incoming].headers;
    }
    get protocolVersion() {
      return this.headers.protocolVersion;
    }
    get contentLength() {
      return this.headers.contentLength;
    }
    get persistentConnection() {
      return this.headers.persistentConnection;
    }
  };
  (_http._HttpInboundMessage.new = function(incoming) {
    this[_cookies] = null;
    this[_incoming] = incoming;
    _http._HttpInboundMessage.__proto__.new.call(this);
  }).prototype = _http._HttpInboundMessage.prototype;
  dart.addTypeTests(_http._HttpInboundMessage);
  dart.setGetterSignature(_http._HttpInboundMessage, () => ({
    __proto__: dart.getGetters(_http._HttpInboundMessage.__proto__),
    cookies: core.List$(_http.Cookie),
    headers: _http._HttpHeaders,
    protocolVersion: core.String,
    contentLength: core.int,
    persistentConnection: core.bool
  }));
  dart.setFieldSignature(_http._HttpInboundMessage, () => ({
    __proto__: dart.getFields(_http._HttpInboundMessage.__proto__),
    [_incoming]: dart.finalFieldType(_http._HttpIncoming),
    [_cookies]: dart.fieldType(ListOfCookie())
  }));
  const _httpServer = Symbol('_httpServer');
  const _httpConnection = Symbol('_httpConnection');
  const _session = Symbol('_session');
  const _requestedUri = Symbol('_requestedUri');
  const _sessionManagerInstance = Symbol('_sessionManagerInstance');
  const _sessionManager = Symbol('_sessionManager');
  const _markSeen = Symbol('_markSeen');
  const _socket$ = Symbol('_socket');
  const _destroyed = Symbol('_destroyed');
  _http._HttpRequest = class _HttpRequest extends _http._HttpInboundMessage {
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      return this[_incoming].listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
    get uri() {
      return this[_incoming].uri;
    }
    get requestedUri() {
      if (this[_requestedUri] == null) {
        let proto = this.headers._get("x-forwarded-proto");
        let scheme = proto != null ? proto[$first] : io.SecureSocket.is(this[_httpConnection][_socket$]) ? "https" : "http";
        let hostList = this.headers._get("x-forwarded-host");
        let host = null;
        if (hostList != null) {
          host = hostList[$first];
        } else {
          hostList = this.headers._get("host");
          if (hostList != null) {
            host = hostList[$first];
          } else {
            host = dart.str(this[_httpServer].address.host) + ":" + dart.str(this[_httpServer].port);
          }
        }
        this[_requestedUri] = core.Uri.parse(dart.str(scheme) + "://" + dart.str(host) + dart.str(this.uri));
      }
      return this[_requestedUri];
    }
    get method() {
      return this[_incoming].method;
    }
    get session() {
      if (this[_session] != null) {
        if (dart.test(this[_session][_destroyed])) {
          this[_session] = null;
          return this.session;
        }
        return this[_session];
      }
      return this[_session] = this[_httpServer][_sessionManager].createSession();
    }
    get connectionInfo() {
      return this[_httpConnection].connectionInfo;
    }
    get certificate() {
      let socket = this[_httpConnection][_socket$];
      if (io.SecureSocket.is(socket)) return socket.peerCertificate;
      return null;
    }
  };
  (_http._HttpRequest.new = function(response, _incoming, httpServer, httpConnection) {
    this[_session] = null;
    this[_requestedUri] = null;
    this.response = response;
    this[_httpServer] = httpServer;
    this[_httpConnection] = httpConnection;
    _http._HttpRequest.__proto__.new.call(this, _incoming);
    if (this.headers.protocolVersion === "1.1") {
      let _ = this.response.headers;
      _.chunkedTransferEncoding = true;
      _.persistentConnection = this.headers.persistentConnection;
    }
    if (this[_httpServer][_sessionManagerInstance] != null) {
      let sessionIds = IterableOfString()._check(this.cookies[$where](dart.fn(cookie => cookie.name[$toUpperCase]() === "DARTSESSID", CookieTobool()))[$map](core.String, dart.fn(cookie => cookie.value, CookieToString())));
      for (let sessionId of sessionIds) {
        this[_session] = this[_httpServer][_sessionManager].getSession(sessionId);
        if (this[_session] != null) {
          this[_session][_markSeen]();
          break;
        }
      }
    }
  }).prototype = _http._HttpRequest.prototype;
  dart.addTypeTests(_http._HttpRequest);
  _http._HttpRequest[dart.implements] = () => [_http.HttpRequest];
  dart.setMethodSignature(_http._HttpRequest, () => ({
    __proto__: dart.getMethods(_http._HttpRequest.__proto__),
    listen: dart.fnType(async.StreamSubscription$(core.List$(core.int)), [dart.fnType(dart.void, [core.List$(core.int)])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool})
  }));
  dart.setGetterSignature(_http._HttpRequest, () => ({
    __proto__: dart.getGetters(_http._HttpRequest.__proto__),
    uri: core.Uri,
    requestedUri: core.Uri,
    method: core.String,
    session: _http.HttpSession,
    connectionInfo: _http.HttpConnectionInfo,
    certificate: io.X509Certificate
  }));
  dart.setFieldSignature(_http._HttpRequest, () => ({
    __proto__: dart.getFields(_http._HttpRequest.__proto__),
    response: dart.finalFieldType(_http.HttpResponse),
    [_httpServer]: dart.finalFieldType(_http._HttpServer),
    [_httpConnection]: dart.finalFieldType(_http._HttpConnection),
    [_session]: dart.fieldType(_http._HttpSession),
    [_requestedUri]: dart.fieldType(core.Uri)
  }));
  const _httpRequest = Symbol('_httpRequest');
  const _httpClient = Symbol('_httpClient');
  const _responseRedirects = Symbol('_responseRedirects');
  const _httpClientConnection = Symbol('_httpClientConnection');
  const _openUrlFromRequest = Symbol('_openUrlFromRequest');
  const _connectionClosed = Symbol('_connectionClosed');
  const _shouldAuthenticateProxy = Symbol('_shouldAuthenticateProxy');
  const _shouldAuthenticate = Symbol('_shouldAuthenticate');
  const _proxy = Symbol('_proxy');
  const _findProxyCredentials = Symbol('_findProxyCredentials');
  const _findCredentials = Symbol('_findCredentials');
  const _removeProxyCredentials = Symbol('_removeProxyCredentials');
  const _removeCredentials = Symbol('_removeCredentials');
  const _authenticateProxy = Symbol('_authenticateProxy');
  const _authenticate = Symbol('_authenticate');
  _http._HttpClientResponse = class _HttpClientResponse extends _http._HttpInboundMessage {
    get redirects() {
      return this[_httpRequest][_responseRedirects];
    }
    get statusCode() {
      return this[_incoming].statusCode;
    }
    get reasonPhrase() {
      return this[_incoming].reasonPhrase;
    }
    get certificate() {
      let socket = this[_httpRequest][_httpClientConnection][_socket$];
      if (io.SecureSocket.is(socket)) return socket.peerCertificate;
      dart.throw(new core.UnsupportedError.new("Socket is not a SecureSocket"));
    }
    get cookies() {
      if (this[_cookies] != null) return this[_cookies];
      this[_cookies] = JSArrayOfCookie().of([]);
      let values = this.headers._get(_http.HttpHeaders.setCookieHeader);
      if (values != null) {
        values[$forEach](dart.fn(value => {
          this[_cookies][$add](_http.Cookie.fromSetCookieValue(value));
        }, StringToNull()));
      }
      return this[_cookies];
    }
    get isRedirect() {
      if (this[_httpRequest].method === "GET" || this[_httpRequest].method === "HEAD") {
        return this.statusCode === _http.HttpStatus.movedPermanently || this.statusCode === _http.HttpStatus.found || this.statusCode === _http.HttpStatus.seeOther || this.statusCode === _http.HttpStatus.temporaryRedirect;
      } else if (this[_httpRequest].method === "POST") {
        return this.statusCode === _http.HttpStatus.seeOther;
      }
      return false;
    }
    redirect(method, url, followLoops) {
      if (method === void 0) method = null;
      if (url === void 0) url = null;
      if (followLoops === void 0) followLoops = null;
      if (method == null) {
        if (this.statusCode === _http.HttpStatus.seeOther && this[_httpRequest].method === "POST") {
          method = "GET";
        } else {
          method = this[_httpRequest].method;
        }
      }
      if (url == null) {
        let location = this.headers.value(_http.HttpHeaders.locationHeader);
        if (location == null) {
          dart.throw(new core.StateError.new("Response has no Location header for redirect"));
        }
        url = core.Uri.parse(location);
      }
      if (followLoops !== true) {
        for (let redirect of this.redirects) {
          if (dart.equals(redirect.location, url)) {
            return FutureOfHttpClientResponse().error(new _http.RedirectException.new("Redirect loop detected", this.redirects));
          }
        }
      }
      return FutureOfHttpClientResponse()._check(this[_httpClient][_openUrlFromRequest](method, url, this[_httpRequest]).then(_http.HttpClientResponse, dart.fn(request => {
        let _ = request[_responseRedirects];
        _[$addAll](this.redirects);
        _[$add](new _http._RedirectInfo.new(this.statusCode, method, url));
        return request.close();
      }, _HttpClientRequestToFutureOfHttpClientResponse())));
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      if (dart.test(this[_incoming].upgraded)) {
        this[_httpRequest][_httpClientConnection].destroy();
        return StreamOfListOfint().empty().listen(null, {onDone: onDone});
      }
      let stream = this[_incoming];
      if (dart.test(this[_httpClient].autoUncompress) && this.headers.value(_http.HttpHeaders.contentEncodingHeader) === "gzip") {
        stream = StreamOfListOfint()._check(stream.transform(ListOfint(), io.gzip.decoder));
      }
      return stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
    detachSocket() {
      this[_httpClient][_connectionClosed](this[_httpRequest][_httpClientConnection]);
      return this[_httpRequest][_httpClientConnection].detachSocket();
    }
    get connectionInfo() {
      return this[_httpRequest].connectionInfo;
    }
    get [_shouldAuthenticateProxy]() {
      let challenge = this.headers._get(_http.HttpHeaders.proxyAuthenticateHeader);
      return this.statusCode === _http.HttpStatus.proxyAuthenticationRequired && challenge != null && challenge[$length] === 1;
    }
    get [_shouldAuthenticate]() {
      let challenge = this.headers._get(_http.HttpHeaders.wwwAuthenticateHeader);
      return this.statusCode === _http.HttpStatus.unauthorized && challenge != null && challenge[$length] === 1;
    }
    [_authenticate](proxyAuth) {
      const retry = (function() {
        return FutureOfHttpClientResponse()._check(this.drain(dart.dynamic).then(_http.HttpClientResponse, dart.fn(_ => FutureOfHttpClientResponse()._check(this[_httpClient][_openUrlFromRequest](this[_httpRequest].method, this[_httpRequest].uri, this[_httpRequest]).then(_http.HttpClientResponse, dart.fn(request => request.close(), _HttpClientRequestToFutureOfHttpClientResponse()))), dynamicToFutureOfHttpClientResponse())));
      }).bind(this);
      dart.fn(retry, VoidToFutureOfHttpClientResponse());
      const authChallenge = (function() {
        return dart.test(proxyAuth) ? this.headers._get(_http.HttpHeaders.proxyAuthenticateHeader) : this.headers._get(_http.HttpHeaders.wwwAuthenticateHeader);
      }).bind(this);
      dart.fn(authChallenge, VoidToListOfString());
      const findCredentials = (function(scheme) {
        return dart.test(proxyAuth) ? this[_httpClient][_findProxyCredentials](this[_httpRequest][_proxy], scheme) : this[_httpClient][_findCredentials](this[_httpRequest].uri, scheme);
      }).bind(this);
      dart.fn(findCredentials, _AuthenticationSchemeTo_Credentials());
      const removeCredentials = (function(cr) {
        if (dart.test(proxyAuth)) {
          this[_httpClient][_removeProxyCredentials](cr);
        } else {
          this[_httpClient][_removeCredentials](cr);
        }
      }).bind(this);
      dart.fn(removeCredentials, _CredentialsTovoid());
      const requestAuthentication = (function(scheme, realm) {
        if (dart.test(proxyAuth)) {
          if (this[_httpClient][_authenticateProxy] == null) {
            return async.Future.value(false);
          }
          let proxy = this[_httpRequest][_proxy];
          return async.Future._check(dart.dsend(this[_httpClient], _authenticateProxy, [proxy.host, proxy.port, dart.toString(scheme), realm]));
        } else {
          if (this[_httpClient][_authenticate] == null) {
            return async.Future.value(false);
          }
          return async.Future._check(dart.dsend(this[_httpClient], _authenticate, [this[_httpRequest].uri, dart.toString(scheme), realm]));
        }
      }).bind(this);
      dart.fn(requestAuthentication, _AuthenticationSchemeAndStringToFuture());
      let challenge = authChallenge();
      if (!(challenge != null || challenge[$length] === 1)) dart.assertFailed();
      let header = _http._HeaderValue.parse(challenge[$_get](0), {parameterSeparator: ","});
      let scheme = _http._AuthenticationScheme.fromString(header.value);
      let realm = header.parameters[$_get]("realm");
      let cr = findCredentials(scheme);
      if (cr != null) {
        if (dart.equals(cr.scheme, _http._AuthenticationScheme.BASIC) && !dart.test(cr.used)) {
          return retry();
        }
        if (dart.equals(cr.scheme, _http._AuthenticationScheme.DIGEST) && (header.parameters[$_get]("algorithm") == null || header.parameters[$_get]("algorithm")[$toLowerCase]() === "md5")) {
          if (cr.nonce == null || cr.nonce == header.parameters[$_get]("nonce")) {
            if (cr.nonce == null) {
              let _ = cr;
              _.nonce = header.parameters[$_get]("nonce");
              _.algorithm = "MD5";
              _.qop = header.parameters[$_get]("qop");
              _.nonceCount = 0;
            }
            return retry();
          } else if (header.parameters[$_get]("stale") != null && header.parameters[$_get]("stale")[$toLowerCase]() === "true") {
            cr.nonce = header.parameters[$_get]("nonce");
            return retry();
          }
        }
      }
      if (cr != null) {
        removeCredentials(cr);
        cr = null;
      }
      return FutureOfHttpClientResponse()._check(requestAuthentication(scheme, realm).then(_http.HttpClientResponse, dart.fn(credsAvailable => {
        if (dart.dtest(credsAvailable)) {
          cr = this[_httpClient][_findCredentials](this[_httpRequest].uri, scheme);
          return retry();
        } else {
          return this;
        }
      }, dynamicToFutureOrOfHttpClientResponse())));
    }
  };
  (_http._HttpClientResponse.new = function(_incoming, httpRequest, httpClient) {
    this[_httpRequest] = httpRequest;
    this[_httpClient] = httpClient;
    _http._HttpClientResponse.__proto__.new.call(this, _incoming);
    _incoming.uri = this[_httpRequest].uri;
  }).prototype = _http._HttpClientResponse.prototype;
  dart.addTypeTests(_http._HttpClientResponse);
  _http._HttpClientResponse[dart.implements] = () => [_http.HttpClientResponse];
  dart.setMethodSignature(_http._HttpClientResponse, () => ({
    __proto__: dart.getMethods(_http._HttpClientResponse.__proto__),
    redirect: dart.fnType(async.Future$(_http.HttpClientResponse), [], [core.String, core.Uri, core.bool]),
    listen: dart.fnType(async.StreamSubscription$(core.List$(core.int)), [dart.fnType(dart.void, [core.List$(core.int)])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
    detachSocket: dart.fnType(async.Future$(io.Socket), []),
    [_authenticate]: dart.fnType(async.Future$(_http.HttpClientResponse), [core.bool])
  }));
  dart.setGetterSignature(_http._HttpClientResponse, () => ({
    __proto__: dart.getGetters(_http._HttpClientResponse.__proto__),
    redirects: core.List$(_http.RedirectInfo),
    statusCode: core.int,
    reasonPhrase: core.String,
    certificate: io.X509Certificate,
    isRedirect: core.bool,
    connectionInfo: _http.HttpConnectionInfo,
    [_shouldAuthenticateProxy]: core.bool,
    [_shouldAuthenticate]: core.bool
  }));
  dart.setFieldSignature(_http._HttpClientResponse, () => ({
    __proto__: dart.getFields(_http._HttpClientResponse.__proto__),
    [_httpClient]: dart.finalFieldType(_http._HttpClient),
    [_httpRequest]: dart.finalFieldType(_http._HttpClientRequest)
  }));
  const _target$1 = Symbol('_target');
  const _doneCompleter$ = Symbol('_doneCompleter');
  const _controllerInstance$ = Symbol('_controllerInstance');
  const _controllerCompleter$ = Symbol('_controllerCompleter');
  const _isClosed$0 = Symbol('_isClosed');
  const _isBound$ = Symbol('_isBound');
  const _hasError$0 = Symbol('_hasError');
  const _reportClosedSink$0 = Symbol('_reportClosedSink');
  const _controller$1 = Symbol('_controller');
  const _closeTarget$ = Symbol('_closeTarget');
  const _completeDoneValue$ = Symbol('_completeDoneValue');
  const _completeDoneError$ = Symbol('_completeDoneError');
  const _is__StreamSinkImpl_default$ = Symbol('_is__StreamSinkImpl_default');
  _http._StreamSinkImpl$ = dart.generic(T => {
    let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
    let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
    let StreamSinkOfT = () => (StreamSinkOfT = dart.constFn(async.StreamSink$(T)))();
    let StreamConsumerOfT = () => (StreamConsumerOfT = dart.constFn(async.StreamConsumer$(T)))();
    class _StreamSinkImpl extends core.Object {
      [_reportClosedSink$0]() {
        io.stderr.writeln("StreamSink is closed and adding to it is an error.");
        io.stderr.writeln("  See http://dartbug.com/29554.");
        io.stderr.writeln(core.StackTrace.current);
      }
      add(data) {
        T._check(data);
        if (dart.test(this[_isClosed$0])) {
          this[_reportClosedSink$0]();
          return;
        }
        this[_controller$1].add(data);
      }
      addError(error, stackTrace) {
        if (stackTrace === void 0) stackTrace = null;
        if (dart.test(this[_isClosed$0])) {
          this[_reportClosedSink$0]();
          return;
        }
        this[_controller$1].addError(error, stackTrace);
      }
      addStream(stream) {
        StreamOfT()._check(stream);
        if (dart.test(this[_isBound$])) {
          dart.throw(new core.StateError.new("StreamSink is already bound to a stream"));
        }
        this[_isBound$] = true;
        if (dart.test(this[_hasError$0])) return this.done;
        const targetAddStream = (function() {
          return this[_target$1].addStream(stream).whenComplete(dart.fn(() => {
            this[_isBound$] = false;
          }, VoidToNull()));
        }).bind(this);
        dart.fn(targetAddStream, VoidToFuture());
        if (this[_controllerInstance$] == null) return targetAddStream();
        let future = this[_controllerCompleter$].future;
        this[_controllerInstance$].close();
        return future.then(dart.dynamic, dart.fn(_ => targetAddStream(), dynamicToFuture()));
      }
      flush() {
        if (dart.test(this[_isBound$])) {
          dart.throw(new core.StateError.new("StreamSink is bound to a stream"));
        }
        if (this[_controllerInstance$] == null) return async.Future.value(this);
        this[_isBound$] = true;
        let future = this[_controllerCompleter$].future;
        this[_controllerInstance$].close();
        return future.whenComplete(dart.fn(() => {
          this[_isBound$] = false;
        }, VoidToNull()));
      }
      close() {
        if (dart.test(this[_isBound$])) {
          dart.throw(new core.StateError.new("StreamSink is bound to a stream"));
        }
        if (!dart.test(this[_isClosed$0])) {
          this[_isClosed$0] = true;
          if (this[_controllerInstance$] != null) {
            this[_controllerInstance$].close();
          } else {
            this[_closeTarget$]();
          }
        }
        return this.done;
      }
      [_closeTarget$]() {
        this[_target$1].close().then(dart.void, dart.bind(this, _completeDoneValue$), {onError: dart.bind(this, _completeDoneError$)});
      }
      get done() {
        return this[_doneCompleter$].future;
      }
      [_completeDoneValue$](value) {
        if (!dart.test(this[_doneCompleter$].isCompleted)) {
          this[_doneCompleter$].complete(value);
        }
      }
      [_completeDoneError$](error, stackTrace) {
        if (!dart.test(this[_doneCompleter$].isCompleted)) {
          this[_hasError$0] = true;
          this[_doneCompleter$].completeError(error, stackTrace);
        }
      }
      get [_controller$1]() {
        if (dart.test(this[_isBound$])) {
          dart.throw(new core.StateError.new("StreamSink is bound to a stream"));
        }
        if (dart.test(this[_isClosed$0])) {
          dart.throw(new core.StateError.new("StreamSink is closed"));
        }
        if (this[_controllerInstance$] == null) {
          this[_controllerInstance$] = StreamControllerOfT().new({sync: true});
          this[_controllerCompleter$] = async.Completer.new();
          FutureOfNull()._check(this[_target$1].addStream(this[_controller$1].stream).then(core.Null, dart.fn(_ => {
            if (dart.test(this[_isBound$])) {
              this[_controllerCompleter$].complete(this);
              this[_controllerCompleter$] = null;
              this[_controllerInstance$] = null;
            } else {
              this[_closeTarget$]();
            }
          }, dynamicToNull()), {onError: dart.fn((error, stackTrace) => {
              if (dart.test(this[_isBound$])) {
                this[_controllerCompleter$].completeError(error, core.StackTrace._check(stackTrace));
                this[_controllerCompleter$] = null;
                this[_controllerInstance$] = null;
              } else {
                this[_completeDoneError$](error, core.StackTrace._check(stackTrace));
              }
            }, dynamicAnddynamicToNull())}));
        }
        return this[_controllerInstance$];
      }
    }
    (_StreamSinkImpl.new = function(target) {
      this[_doneCompleter$] = async.Completer.new();
      this[_controllerInstance$] = null;
      this[_controllerCompleter$] = null;
      this[_isClosed$0] = false;
      this[_isBound$] = false;
      this[_hasError$0] = false;
      this[_target$1] = target;
    }).prototype = _StreamSinkImpl.prototype;
    dart.addTypeTests(_StreamSinkImpl);
    _StreamSinkImpl.prototype[_is__StreamSinkImpl_default$] = true;
    _StreamSinkImpl[dart.implements] = () => [StreamSinkOfT()];
    dart.setMethodSignature(_StreamSinkImpl, () => ({
      __proto__: dart.getMethods(_StreamSinkImpl.__proto__),
      [_reportClosedSink$0]: dart.fnType(dart.void, []),
      add: dart.fnType(dart.void, [core.Object]),
      addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
      addStream: dart.fnType(async.Future, [core.Object]),
      flush: dart.fnType(async.Future, []),
      close: dart.fnType(async.Future, []),
      [_closeTarget$]: dart.fnType(dart.void, []),
      [_completeDoneValue$]: dart.fnType(dart.void, [dart.dynamic]),
      [_completeDoneError$]: dart.fnType(dart.void, [dart.dynamic, core.StackTrace])
    }));
    dart.setGetterSignature(_StreamSinkImpl, () => ({
      __proto__: dart.getGetters(_StreamSinkImpl.__proto__),
      done: async.Future,
      [_controller$1]: async.StreamController$(T)
    }));
    dart.setFieldSignature(_StreamSinkImpl, () => ({
      __proto__: dart.getFields(_StreamSinkImpl.__proto__),
      [_target$1]: dart.finalFieldType(StreamConsumerOfT()),
      [_doneCompleter$]: dart.finalFieldType(async.Completer),
      [_controllerInstance$]: dart.fieldType(StreamControllerOfT()),
      [_controllerCompleter$]: dart.fieldType(async.Completer),
      [_isClosed$0]: dart.fieldType(core.bool),
      [_isBound$]: dart.fieldType(core.bool),
      [_hasError$0]: dart.fieldType(core.bool)
    }));
    return _StreamSinkImpl;
  });
  _http._StreamSinkImpl = _http._StreamSinkImpl$();
  dart.addTypeTests(_http._StreamSinkImpl, _is__StreamSinkImpl_default$);
  const _encoding$ = Symbol('_encoding');
  const _encodingMutable$ = Symbol('_encodingMutable');
  _http._IOSinkImpl = class _IOSinkImpl extends _http._StreamSinkImpl$(core.List$(core.int)) {
    get encoding() {
      return this[_encoding$];
    }
    set encoding(value) {
      if (!dart.test(this[_encodingMutable$])) {
        dart.throw(new core.StateError.new("IOSink encoding is not mutable"));
      }
      this[_encoding$] = value;
    }
    write(obj) {
      let string = dart.str(obj);
      if (string[$isEmpty]) return;
      this.add(this[_encoding$].encode(string));
    }
    writeAll(objects, separator) {
      if (separator === void 0) separator = "";
      let iterator = objects[$iterator];
      if (!dart.test(iterator.moveNext())) return;
      if (separator[$isEmpty]) {
        do {
          this.write(iterator.current);
        } while (dart.test(iterator.moveNext()));
      } else {
        this.write(iterator.current);
        while (dart.test(iterator.moveNext())) {
          this.write(separator);
          this.write(iterator.current);
        }
      }
    }
    writeln(object) {
      if (object === void 0) object = "";
      this.write(object);
      this.write("\n");
    }
    writeCharCode(charCode) {
      this.write(core.String.fromCharCode(charCode));
    }
  };
  (_http._IOSinkImpl.new = function(target, encoding) {
    this[_encodingMutable$] = true;
    this[_encoding$] = encoding;
    _http._IOSinkImpl.__proto__.new.call(this, target);
  }).prototype = _http._IOSinkImpl.prototype;
  dart.addTypeTests(_http._IOSinkImpl);
  _http._IOSinkImpl[dart.implements] = () => [io.IOSink];
  dart.setMethodSignature(_http._IOSinkImpl, () => ({
    __proto__: dart.getMethods(_http._IOSinkImpl.__proto__),
    write: dart.fnType(dart.void, [core.Object]),
    writeAll: dart.fnType(dart.void, [core.Iterable], [core.String]),
    writeln: dart.fnType(dart.void, [], [core.Object]),
    writeCharCode: dart.fnType(dart.void, [core.int])
  }));
  dart.setGetterSignature(_http._IOSinkImpl, () => ({
    __proto__: dart.getGetters(_http._IOSinkImpl.__proto__),
    encoding: convert.Encoding
  }));
  dart.setSetterSignature(_http._IOSinkImpl, () => ({
    __proto__: dart.getSetters(_http._IOSinkImpl.__proto__),
    encoding: convert.Encoding
  }));
  dart.setFieldSignature(_http._IOSinkImpl, () => ({
    __proto__: dart.getFields(_http._IOSinkImpl.__proto__),
    [_encoding$]: dart.fieldType(convert.Encoding),
    [_encodingMutable$]: dart.fieldType(core.bool)
  }));
  const _uri$ = Symbol('_uri');
  const _outgoing = Symbol('_outgoing');
  const _encodingSet = Symbol('_encodingSet');
  const _bufferOutput = Symbol('_bufferOutput');
  const _isConnectionClosed = Symbol('_isConnectionClosed');
  const _is__HttpOutboundMessage_default = Symbol('_is__HttpOutboundMessage_default');
  _http._HttpOutboundMessage$ = dart.generic(T => {
    class _HttpOutboundMessage extends _http._IOSinkImpl {
      get contentLength() {
        return this.headers.contentLength;
      }
      set contentLength(contentLength) {
        this.headers.contentLength = contentLength;
      }
      get persistentConnection() {
        return this.headers.persistentConnection;
      }
      set persistentConnection(p) {
        this.headers.persistentConnection = p;
      }
      get bufferOutput() {
        return this[_bufferOutput];
      }
      set bufferOutput(bufferOutput) {
        if (dart.test(this[_outgoing].headersWritten)) dart.throw(new core.StateError.new("Header already sent"));
        this[_bufferOutput] = bufferOutput;
      }
      get encoding() {
        if (dart.test(this[_encodingSet]) && dart.test(this[_outgoing].headersWritten)) {
          return this[_encoding$];
        }
        let charset = null;
        if (this.headers.contentType != null && this.headers.contentType.charset != null) {
          charset = this.headers.contentType.charset;
        } else {
          charset = "iso-8859-1";
        }
        return convert.Encoding.getByName(core.String._check(charset));
      }
      set encoding(value) {
        super.encoding = value;
      }
      add(data) {
        ListOfint()._check(data);
        if (data[$length] === 0) return;
        super.add(data);
      }
      write(obj) {
        if (!dart.test(this[_encodingSet])) {
          this[_encoding$] = this.encoding;
          this[_encodingSet] = true;
        }
        super.write(obj);
      }
      get [_isConnectionClosed]() {
        return false;
      }
    }
    (_HttpOutboundMessage.new = function(uri, protocolVersion, outgoing, opts) {
      let initialHeaders = opts && 'initialHeaders' in opts ? opts.initialHeaders : null;
      this[_encodingSet] = false;
      this[_bufferOutput] = true;
      this[_uri$] = uri;
      this.headers = new _http._HttpHeaders.new(protocolVersion, {defaultPortForScheme: uri.scheme === "https" ? _http.HttpClient.defaultHttpsPort : _http.HttpClient.defaultHttpPort, initialHeaders: initialHeaders});
      this[_outgoing] = outgoing;
      _HttpOutboundMessage.__proto__.new.call(this, outgoing, null);
      this[_outgoing].outbound = this;
      this[_encodingMutable$] = false;
    }).prototype = _HttpOutboundMessage.prototype;
    dart.addTypeTests(_HttpOutboundMessage);
    _HttpOutboundMessage.prototype[_is__HttpOutboundMessage_default] = true;
    dart.setMethodSignature(_HttpOutboundMessage, () => ({
      __proto__: dart.getMethods(_HttpOutboundMessage.__proto__),
      add: dart.fnType(dart.void, [core.Object]),
      write: dart.fnType(dart.void, [core.Object])
    }));
    dart.setGetterSignature(_HttpOutboundMessage, () => ({
      __proto__: dart.getGetters(_HttpOutboundMessage.__proto__),
      contentLength: core.int,
      persistentConnection: core.bool,
      bufferOutput: core.bool,
      encoding: convert.Encoding,
      [_isConnectionClosed]: core.bool
    }));
    dart.setSetterSignature(_HttpOutboundMessage, () => ({
      __proto__: dart.getSetters(_HttpOutboundMessage.__proto__),
      contentLength: core.int,
      persistentConnection: core.bool,
      bufferOutput: core.bool
    }));
    dart.setFieldSignature(_HttpOutboundMessage, () => ({
      __proto__: dart.getFields(_HttpOutboundMessage.__proto__),
      [_encodingSet]: dart.fieldType(core.bool),
      [_bufferOutput]: dart.fieldType(core.bool),
      [_uri$]: dart.finalFieldType(core.Uri),
      [_outgoing]: dart.finalFieldType(_http._HttpOutgoing),
      headers: dart.finalFieldType(_http._HttpHeaders)
    }));
    return _HttpOutboundMessage;
  });
  _http._HttpOutboundMessage = _http._HttpOutboundMessage$();
  dart.addTypeTests(_http._HttpOutboundMessage, _is__HttpOutboundMessage_default);
  const _statusCode = Symbol('_statusCode');
  const _reasonPhrase = Symbol('_reasonPhrase');
  const _deadline = Symbol('_deadline');
  const _deadlineTimer = Symbol('_deadlineTimer');
  const _isClosing = Symbol('_isClosing');
  const _findReasonPhrase = Symbol('_findReasonPhrase');
  const _isNew = Symbol('_isNew');
  const _writeHeader = Symbol('_writeHeader');
  _http._HttpResponse = class _HttpResponse extends _http._HttpOutboundMessage$(_http.HttpResponse) {
    get [_isConnectionClosed]() {
      return this[_httpRequest][_httpConnection][_isClosing];
    }
    get cookies() {
      if (this[_cookies] == null) this[_cookies] = JSArrayOfCookie().of([]);
      return this[_cookies];
    }
    get statusCode() {
      return this[_statusCode];
    }
    set statusCode(statusCode) {
      if (dart.test(this[_outgoing].headersWritten)) dart.throw(new core.StateError.new("Header already sent"));
      this[_statusCode] = statusCode;
    }
    get reasonPhrase() {
      return this[_findReasonPhrase](this.statusCode);
    }
    set reasonPhrase(reasonPhrase) {
      if (dart.test(this[_outgoing].headersWritten)) dart.throw(new core.StateError.new("Header already sent"));
      this[_reasonPhrase] = reasonPhrase;
    }
    redirect(location, opts) {
      let status = opts && 'status' in opts ? opts.status : _http.HttpStatus.movedTemporarily;
      if (dart.test(this[_outgoing].headersWritten)) dart.throw(new core.StateError.new("Header already sent"));
      this.statusCode = status;
      this.headers.set("location", dart.toString(location));
      return this.close();
    }
    detachSocket(opts) {
      let writeHeaders = opts && 'writeHeaders' in opts ? opts.writeHeaders : true;
      if (dart.test(this[_outgoing].headersWritten)) dart.throw(new core.StateError.new("Headers already sent"));
      this.deadline = null;
      let future = this[_httpRequest][_httpConnection].detachSocket();
      if (dart.test(writeHeaders)) {
        let headersFuture = this[_outgoing].writeHeaders({drainRequest: false, setOutgoing: false});
        if (!(headersFuture == null)) dart.assertFailed();
      } else {
        this[_outgoing].headersWritten = true;
      }
      this.close();
      this.done.catchError(dart.fn(_ => {
      }, dynamicToNull()));
      return future;
    }
    get connectionInfo() {
      return this[_httpRequest].connectionInfo;
    }
    get deadline() {
      return this[_deadline];
    }
    set deadline(d) {
      if (this[_deadlineTimer] != null) this[_deadlineTimer].cancel();
      this[_deadline] = d;
      if (this[_deadline] == null) return;
      this[_deadlineTimer] = async.Timer.new(this[_deadline], dart.fn(() => {
        this[_httpRequest][_httpConnection].destroy();
      }, VoidToNull()));
    }
    [_writeHeader]() {
      let buffer = new _http._CopyingBytesBuilder.new(8192);
      if (this.headers.protocolVersion === "1.1") {
        buffer.add(_http._Const.HTTP11);
      } else {
        buffer.add(_http._Const.HTTP10);
      }
      buffer.addByte(_http._CharCode.SP);
      buffer.add(dart.toString(this.statusCode)[$codeUnits]);
      buffer.addByte(_http._CharCode.SP);
      buffer.add(this.reasonPhrase[$codeUnits]);
      buffer.addByte(_http._CharCode.CR);
      buffer.addByte(_http._CharCode.LF);
      let session = this[_httpRequest][_session];
      if (session != null && !dart.test(session[_destroyed])) {
        session[_isNew] = false;
        let found = false;
        for (let i = 0; i < dart.notNull(this.cookies[$length]); i++) {
          if (this.cookies[$_get](i).name[$toUpperCase]() === "DARTSESSID") {
            let _ = this.cookies[$_get](i);
            _.value = session.id;
            _.httpOnly = true;
            _.path = "/";
            found = true;
          }
        }
        if (!found) {
          let cookie = _http.Cookie.new("DARTSESSID", session.id);
          this.cookies[$add]((() => {
            cookie.httpOnly = true;
            cookie.path = "/";
            return cookie;
          })());
        }
      }
      if (this[_cookies] != null) {
        this[_cookies][$forEach](dart.fn(cookie => {
          this.headers.add(_http.HttpHeaders.setCookieHeader, cookie);
        }, CookieToNull()));
      }
      this.headers[_finalize]();
      this.headers[_build](buffer);
      buffer.addByte(_http._CharCode.CR);
      buffer.addByte(_http._CharCode.LF);
      let headerBytes = typed_data.Uint8List._check(buffer.takeBytes());
      this[_outgoing].setHeader(headerBytes, headerBytes[$length]);
    }
    [_findReasonPhrase](statusCode) {
      if (this[_reasonPhrase] != null) {
        return this[_reasonPhrase];
      }
      switch (statusCode) {
        case _http.HttpStatus.continue__:
        {
          return "Continue";
        }
        case _http.HttpStatus.switchingProtocols:
        {
          return "Switching Protocols";
        }
        case _http.HttpStatus.ok:
        {
          return "OK";
        }
        case _http.HttpStatus.created:
        {
          return "Created";
        }
        case _http.HttpStatus.accepted:
        {
          return "Accepted";
        }
        case _http.HttpStatus.nonAuthoritativeInformation:
        {
          return "Non-Authoritative Information";
        }
        case _http.HttpStatus.noContent:
        {
          return "No Content";
        }
        case _http.HttpStatus.resetContent:
        {
          return "Reset Content";
        }
        case _http.HttpStatus.partialContent:
        {
          return "Partial Content";
        }
        case _http.HttpStatus.multipleChoices:
        {
          return "Multiple Choices";
        }
        case _http.HttpStatus.movedPermanently:
        {
          return "Moved Permanently";
        }
        case _http.HttpStatus.found:
        {
          return "Found";
        }
        case _http.HttpStatus.seeOther:
        {
          return "See Other";
        }
        case _http.HttpStatus.notModified:
        {
          return "Not Modified";
        }
        case _http.HttpStatus.useProxy:
        {
          return "Use Proxy";
        }
        case _http.HttpStatus.temporaryRedirect:
        {
          return "Temporary Redirect";
        }
        case _http.HttpStatus.badRequest:
        {
          return "Bad Request";
        }
        case _http.HttpStatus.unauthorized:
        {
          return "Unauthorized";
        }
        case _http.HttpStatus.paymentRequired:
        {
          return "Payment Required";
        }
        case _http.HttpStatus.forbidden:
        {
          return "Forbidden";
        }
        case _http.HttpStatus.notFound:
        {
          return "Not Found";
        }
        case _http.HttpStatus.methodNotAllowed:
        {
          return "Method Not Allowed";
        }
        case _http.HttpStatus.notAcceptable:
        {
          return "Not Acceptable";
        }
        case _http.HttpStatus.proxyAuthenticationRequired:
        {
          return "Proxy Authentication Required";
        }
        case _http.HttpStatus.requestTimeout:
        {
          return "Request Time-out";
        }
        case _http.HttpStatus.conflict:
        {
          return "Conflict";
        }
        case _http.HttpStatus.gone:
        {
          return "Gone";
        }
        case _http.HttpStatus.lengthRequired:
        {
          return "Length Required";
        }
        case _http.HttpStatus.preconditionFailed:
        {
          return "Precondition Failed";
        }
        case _http.HttpStatus.requestEntityTooLarge:
        {
          return "Request Entity Too Large";
        }
        case _http.HttpStatus.requestUriTooLong:
        {
          return "Request-URI Too Long";
        }
        case _http.HttpStatus.unsupportedMediaType:
        {
          return "Unsupported Media Type";
        }
        case _http.HttpStatus.requestedRangeNotSatisfiable:
        {
          return "Requested range not satisfiable";
        }
        case _http.HttpStatus.expectationFailed:
        {
          return "Expectation Failed";
        }
        case _http.HttpStatus.internalServerError:
        {
          return "Internal Server Error";
        }
        case _http.HttpStatus.notImplemented:
        {
          return "Not Implemented";
        }
        case _http.HttpStatus.badGateway:
        {
          return "Bad Gateway";
        }
        case _http.HttpStatus.serviceUnavailable:
        {
          return "Service Unavailable";
        }
        case _http.HttpStatus.gatewayTimeout:
        {
          return "Gateway Time-out";
        }
        case _http.HttpStatus.httpVersionNotSupported:
        {
          return "Http Version not supported";
        }
        default:
        {
          return "Status " + dart.str(statusCode);
        }
      }
    }
  };
  (_http._HttpResponse.new = function(uri, protocolVersion, outgoing, defaultHeaders, serverHeader) {
    this[_statusCode] = 200;
    this[_reasonPhrase] = null;
    this[_cookies] = null;
    this[_httpRequest] = null;
    this[_deadline] = null;
    this[_deadlineTimer] = null;
    _http._HttpResponse.__proto__.new.call(this, uri, protocolVersion, outgoing, {initialHeaders: _http._HttpHeaders._check(defaultHeaders)});
    if (serverHeader != null) this.headers.set("server", serverHeader);
  }).prototype = _http._HttpResponse.prototype;
  dart.addTypeTests(_http._HttpResponse);
  _http._HttpResponse[dart.implements] = () => [_http.HttpResponse];
  dart.setMethodSignature(_http._HttpResponse, () => ({
    __proto__: dart.getMethods(_http._HttpResponse.__proto__),
    redirect: dart.fnType(async.Future, [core.Uri], {status: core.int}),
    detachSocket: dart.fnType(async.Future$(io.Socket), [], {writeHeaders: core.bool}),
    [_writeHeader]: dart.fnType(dart.void, []),
    [_findReasonPhrase]: dart.fnType(core.String, [core.int])
  }));
  dart.setGetterSignature(_http._HttpResponse, () => ({
    __proto__: dart.getGetters(_http._HttpResponse.__proto__),
    [_isConnectionClosed]: core.bool,
    cookies: core.List$(_http.Cookie),
    statusCode: core.int,
    reasonPhrase: core.String,
    connectionInfo: _http.HttpConnectionInfo,
    deadline: core.Duration
  }));
  dart.setSetterSignature(_http._HttpResponse, () => ({
    __proto__: dart.getSetters(_http._HttpResponse.__proto__),
    statusCode: core.int,
    reasonPhrase: core.String,
    deadline: core.Duration
  }));
  dart.setFieldSignature(_http._HttpResponse, () => ({
    __proto__: dart.getFields(_http._HttpResponse.__proto__),
    [_statusCode]: dart.fieldType(core.int),
    [_reasonPhrase]: dart.fieldType(core.String),
    [_cookies]: dart.fieldType(ListOfCookie()),
    [_httpRequest]: dart.fieldType(_http._HttpRequest),
    [_deadline]: dart.fieldType(core.Duration),
    [_deadlineTimer]: dart.fieldType(async.Timer)
  }));
  const _responseCompleter = Symbol('_responseCompleter');
  const _response = Symbol('_response');
  const _followRedirects = Symbol('_followRedirects');
  const _maxRedirects = Symbol('_maxRedirects');
  const _onIncoming = Symbol('_onIncoming');
  const _onError$ = Symbol('_onError');
  const _proxyTunnel = Symbol('_proxyTunnel');
  const _requestUri = Symbol('_requestUri');
  _http._HttpClientRequest = class _HttpClientRequest extends _http._HttpOutboundMessage$(_http.HttpClientResponse) {
    get done() {
      if (this[_response] == null) {
        this[_response] = FutureOfHttpClientResponse()._check(async.Future.wait(dart.dynamic, JSArrayOfFuture().of([this[_responseCompleter].future, super.done]), {eagerError: true}).then(_http.HttpClientResponse, dart.fn(list => FutureOrOfHttpClientResponse()._check(list[$_get](0)), ListToFutureOrOfHttpClientResponse())));
      }
      return this[_response];
    }
    close() {
      super.close();
      return this.done;
    }
    get maxRedirects() {
      return this[_maxRedirects];
    }
    set maxRedirects(maxRedirects) {
      if (dart.test(this[_outgoing].headersWritten)) dart.throw(new core.StateError.new("Request already sent"));
      this[_maxRedirects] = maxRedirects;
    }
    get followRedirects() {
      return this[_followRedirects];
    }
    set followRedirects(followRedirects) {
      if (dart.test(this[_outgoing].headersWritten)) dart.throw(new core.StateError.new("Request already sent"));
      this[_followRedirects] = followRedirects;
    }
    get connectionInfo() {
      return this[_httpClientConnection].connectionInfo;
    }
    [_onIncoming](incoming) {
      let response = new _http._HttpClientResponse.new(incoming, this, this[_httpClient]);
      let future = null;
      if (dart.test(this.followRedirects) && dart.test(response.isRedirect)) {
        if (dart.notNull(response.redirects[$length]) < dart.notNull(this.maxRedirects)) {
          future = FutureOfHttpClientResponse()._check(response.drain(dart.dynamic).then(_http.HttpClientResponse, dart.fn(_ => response.redirect(), dynamicToFutureOfHttpClientResponse())));
        } else {
          future = FutureOfHttpClientResponse()._check(response.drain(dart.dynamic).then(_http.HttpClientResponse, dart.fn(_ => FutureOfHttpClientResponse().error(new _http.RedirectException.new("Redirect limit exceeded", response.redirects)), dynamicToFutureOfHttpClientResponse())));
        }
      } else if (dart.test(response[_shouldAuthenticateProxy])) {
        future = response[_authenticate](true);
      } else if (dart.test(response[_shouldAuthenticate])) {
        future = response[_authenticate](false);
      } else {
        future = FutureOfHttpClientResponse().value(response);
      }
      future.then(dart.void, dart.fn(v => this[_responseCompleter].complete(v), HttpClientResponseTovoid()), {onError: dart.bind(this[_responseCompleter], 'completeError')});
    }
    [_onError$](error, stackTrace) {
      this[_responseCompleter].completeError(error, stackTrace);
    }
    [_requestUri]() {
      const uriStartingFromPath = (function() {
        let result = this.uri.path;
        if (result[$isEmpty]) result = "/";
        if (dart.test(this.uri.hasQuery)) {
          result = dart.str(result) + "?" + dart.str(this.uri.query);
        }
        return result;
      }).bind(this);
      dart.fn(uriStartingFromPath, VoidToString());
      if (dart.test(this[_proxy].isDirect)) {
        return uriStartingFromPath();
      } else {
        if (this.method === "CONNECT") {
          return dart.str(this.uri.host) + ":" + dart.str(this.uri.port);
        } else {
          if (dart.test(this[_httpClientConnection][_proxyTunnel])) {
            return uriStartingFromPath();
          } else {
            return dart.toString(this.uri.removeFragment());
          }
        }
      }
    }
    [_writeHeader]() {
      let buffer = new _http._CopyingBytesBuilder.new(8192);
      buffer.add(this.method[$codeUnits]);
      buffer.addByte(_http._CharCode.SP);
      buffer.add(this[_requestUri]()[$codeUnits]);
      buffer.addByte(_http._CharCode.SP);
      buffer.add(_http._Const.HTTP11);
      buffer.addByte(_http._CharCode.CR);
      buffer.addByte(_http._CharCode.LF);
      if (!dart.test(this.cookies[$isEmpty])) {
        let sb = new core.StringBuffer.new();
        for (let i = 0; i < dart.notNull(this.cookies[$length]); i++) {
          if (i > 0) sb.write("; ");
          sb.write(this.cookies[$_get](i).name);
          sb.write("=");
          sb.write(this.cookies[$_get](i).value);
        }
        this.headers.add(_http.HttpHeaders.cookieHeader, sb.toString());
      }
      this.headers[_finalize]();
      this.headers[_build](buffer);
      buffer.addByte(_http._CharCode.CR);
      buffer.addByte(_http._CharCode.LF);
      let headerBytes = typed_data.Uint8List._check(buffer.takeBytes());
      this[_outgoing].setHeader(headerBytes, headerBytes[$length]);
    }
  };
  (_http._HttpClientRequest.new = function(outgoing, uri, method, proxy, httpClient, httpClientConnection) {
    this.cookies = JSArrayOfCookie().of([]);
    this[_responseCompleter] = CompleterOfHttpClientResponse().new();
    this[_response] = null;
    this[_followRedirects] = true;
    this[_maxRedirects] = 5;
    this[_responseRedirects] = JSArrayOfRedirectInfo().of([]);
    this.method = method;
    this[_proxy] = proxy;
    this[_httpClient] = httpClient;
    this[_httpClientConnection] = httpClientConnection;
    this.uri = uri;
    _http._HttpClientRequest.__proto__.new.call(this, uri, "1.1", outgoing);
    if (this.method === "GET" || this.method === "HEAD") {
      this.contentLength = 0;
    } else {
      this.headers.chunkedTransferEncoding = true;
    }
  }).prototype = _http._HttpClientRequest.prototype;
  dart.addTypeTests(_http._HttpClientRequest);
  _http._HttpClientRequest[dart.implements] = () => [_http.HttpClientRequest];
  dart.setMethodSignature(_http._HttpClientRequest, () => ({
    __proto__: dart.getMethods(_http._HttpClientRequest.__proto__),
    close: dart.fnType(async.Future$(_http.HttpClientResponse), []),
    [_onIncoming]: dart.fnType(dart.void, [_http._HttpIncoming]),
    [_onError$]: dart.fnType(dart.void, [dart.dynamic, core.StackTrace]),
    [_requestUri]: dart.fnType(core.String, []),
    [_writeHeader]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(_http._HttpClientRequest, () => ({
    __proto__: dart.getGetters(_http._HttpClientRequest.__proto__),
    done: async.Future$(_http.HttpClientResponse),
    maxRedirects: core.int,
    followRedirects: core.bool,
    connectionInfo: _http.HttpConnectionInfo
  }));
  dart.setSetterSignature(_http._HttpClientRequest, () => ({
    __proto__: dart.getSetters(_http._HttpClientRequest.__proto__),
    maxRedirects: core.int,
    followRedirects: core.bool
  }));
  dart.setFieldSignature(_http._HttpClientRequest, () => ({
    __proto__: dart.getFields(_http._HttpClientRequest.__proto__),
    method: dart.finalFieldType(core.String),
    uri: dart.finalFieldType(core.Uri),
    cookies: dart.finalFieldType(ListOfCookie()),
    [_httpClient]: dart.finalFieldType(_http._HttpClient),
    [_httpClientConnection]: dart.finalFieldType(_http._HttpClientConnection),
    [_responseCompleter]: dart.finalFieldType(CompleterOfHttpClientResponse()),
    [_proxy]: dart.finalFieldType(_http._Proxy),
    [_response]: dart.fieldType(FutureOfHttpClientResponse()),
    [_followRedirects]: dart.fieldType(core.bool),
    [_maxRedirects]: dart.fieldType(core.int),
    [_responseRedirects]: dart.fieldType(ListOfRedirectInfo())
  }));
  const _consume = Symbol('_consume');
  _http._HttpGZipSink = class _HttpGZipSink extends convert.ByteConversionSink {
    add(chunk) {
      ListOfint()._check(chunk);
      this[_consume](chunk);
    }
    addSlice(chunk, start, end, isLast) {
      if (typed_data.Uint8List.is(chunk)) {
        this[_consume](typed_data.Uint8List.view(chunk[$buffer], start, dart.notNull(end) - dart.notNull(start)));
      } else {
        this[_consume](chunk[$sublist](start, dart.notNull(end) - dart.notNull(start)));
      }
    }
    close() {}
  };
  (_http._HttpGZipSink.new = function(consume) {
    this[_consume] = consume;
    _http._HttpGZipSink.__proto__.new.call(this);
  }).prototype = _http._HttpGZipSink.prototype;
  dart.addTypeTests(_http._HttpGZipSink);
  dart.setMethodSignature(_http._HttpGZipSink, () => ({
    __proto__: dart.getMethods(_http._HttpGZipSink.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    addSlice: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool]),
    close: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(_http._HttpGZipSink, () => ({
    __proto__: dart.getFields(_http._HttpGZipSink.__proto__),
    [_consume]: dart.finalFieldType(ListOfintTovoid())
  }));
  const _closeFuture = Symbol('_closeFuture');
  const _pendingChunkedFooter = Symbol('_pendingChunkedFooter');
  const _bytesWritten = Symbol('_bytesWritten');
  const _gzip = Symbol('_gzip');
  const _gzipSink = Symbol('_gzipSink');
  const _gzipAdd = Symbol('_gzipAdd');
  const _gzipBuffer = Symbol('_gzipBuffer');
  const _gzipBufferLength = Symbol('_gzipBufferLength');
  const _socketError = Symbol('_socketError');
  const _addGZipChunk = Symbol('_addGZipChunk');
  const _chunkHeader = Symbol('_chunkHeader');
  const _addChunk$ = Symbol('_addChunk');
  const _ignoreError = Symbol('_ignoreError');
  let const$90;
  _http._HttpOutgoing = class _HttpOutgoing extends core.Object {
    writeHeaders(opts) {
      let drainRequest = opts && 'drainRequest' in opts ? opts.drainRequest : true;
      let setOutgoing = opts && 'setOutgoing' in opts ? opts.setOutgoing : true;
      if (dart.test(this.headersWritten)) return null;
      this.headersWritten = true;
      let drainFuture = null;
      let gzip = false;
      if (_http._HttpResponse.is(this.outbound)) {
        let response = _http._HttpResponse._check(this.outbound);
        if (dart.test(response[_httpRequest][_httpServer].autoCompress) && dart.test(this.outbound.bufferOutput) && dart.test(this.outbound.headers.chunkedTransferEncoding)) {
          let acceptEncodings = response[_httpRequest].headers._get(_http.HttpHeaders.acceptEncodingHeader);
          let contentEncoding = this.outbound.headers._get(_http.HttpHeaders.contentEncodingHeader);
          if (acceptEncodings != null && dart.test(acceptEncodings[$expand](dart.dynamic, dart.fn(list => core.Iterable._check(dart.dsend(list, 'split', [","])), dynamicToIterable()))[$any](dart.fn(encoding => dart.equals(dart.dsend(dart.dsend(encoding, 'trim', []), 'toLowerCase', []), "gzip"), dynamicTobool()))) && contentEncoding == null) {
            this.outbound.headers.set(_http.HttpHeaders.contentEncodingHeader, "gzip");
            gzip = true;
          }
        }
        if (dart.test(drainRequest) && !dart.test(response[_httpRequest][_incoming].hasSubscriber)) {
          drainFuture = response[_httpRequest].drain(dart.dynamic).catchError(dart.fn(_ => {
          }, dynamicToNull()));
        }
      } else {
        drainRequest = false;
      }
      if (!dart.test(this.ignoreBody)) {
        if (dart.test(setOutgoing)) {
          let contentLength = this.outbound.headers.contentLength;
          if (dart.test(this.outbound.headers.chunkedTransferEncoding)) {
            this.chunked = true;
            if (gzip) this.gzip = true;
          } else if (dart.notNull(contentLength) >= 0) {
            this.contentLength = contentLength;
          }
        }
        if (drainFuture != null) {
          return drainFuture.then(dart.dynamic, dart.fn(_ => this.outbound[_writeHeader](), dynamicTovoid()));
        }
      }
      this.outbound[_writeHeader]();
      return null;
    }
    addStream(stream) {
      StreamOfListOfint()._check(stream);
      if (dart.test(this[_socketError])) {
        stream.listen(null).cancel();
        return async.Future.value(this.outbound);
      }
      if (dart.test(this.ignoreBody)) {
        stream.drain(dart.dynamic).catchError(dart.fn(_ => {
        }, dynamicToNull()));
        let future = this.writeHeaders();
        if (future != null) {
          return future.then(dart.dynamic, dart.fn(_ => this.close(), dynamicToFuture()));
        }
        return this.close();
      }
      let sub = null;
      let controller = StreamControllerOfListOfint().new({onPause: dart.fn(() => sub.pause(), VoidTovoid()), onResume: dart.fn(() => sub.resume(), VoidTovoid()), sync: true});
      const onData = (function(data) {
        if (dart.test(this[_socketError])) return;
        if (data[$length] === 0) return;
        if (dart.test(this.chunked)) {
          if (dart.test(this[_gzip])) {
            this[_gzipAdd] = dart.bind(controller, 'add');
            this[_addGZipChunk](data, dart.bind(this[_gzipSink], 'add'));
            this[_gzipAdd] = null;
            return;
          }
          this[_addChunk$](this[_chunkHeader](data[$length]), dart.bind(controller, 'add'));
          this[_pendingChunkedFooter] = 2;
        } else {
          if (this.contentLength != null) {
            this[_bytesWritten] = dart.notNull(this[_bytesWritten]) + dart.notNull(data[$length]);
            if (dart.notNull(this[_bytesWritten]) > dart.notNull(this.contentLength)) {
              controller.addError(new _http.HttpException.new("Content size exceeds specified contentLength. " + (dart.str(this[_bytesWritten]) + " bytes written while expected ") + (dart.str(this.contentLength) + ". ") + ("[" + core.String.fromCharCodes(data) + "]")));
              return;
            }
          }
        }
        this[_addChunk$](data, dart.bind(controller, 'add'));
      }).bind(this);
      dart.fn(onData, ListOfintTovoid());
      sub = stream.listen(onData, {onError: dart.bind(controller, 'addError'), onDone: dart.bind(controller, 'close'), cancelOnError: true});
      if (!dart.test(this.headersWritten)) {
        let future = this.writeHeaders();
        if (future != null) {
          sub.pause(future);
        }
      }
      return this.socket.addStream(controller.stream).then(dart.dynamic, dart.fn(_ => this.outbound, dynamicTo_HttpOutboundMessage()), {onError: dart.fn((error, stackTrace) => {
          if (dart.test(this[_gzip])) this[_gzipSink].close();
          this[_socketError] = true;
          this[_doneCompleter$].completeError(error, core.StackTrace._check(stackTrace));
          if (dart.test(this[_ignoreError](error))) {
            return this.outbound;
          } else {
            dart.throw(error);
          }
        }, dynamicAnddynamicTo_HttpOutboundMessage())});
    }
    close() {
      if (this[_closeFuture] != null) return this[_closeFuture];
      if (dart.test(this[_socketError])) return async.Future.value(this.outbound);
      if (dart.test(this.outbound[_isConnectionClosed])) return async.Future.value(this.outbound);
      if (!dart.test(this.headersWritten) && !dart.test(this.ignoreBody)) {
        if (this.outbound.headers.contentLength === -1) {
          this.outbound.headers.chunkedTransferEncoding = false;
          this.outbound.headers.contentLength = 0;
        } else if (dart.notNull(this.outbound.headers.contentLength) > 0) {
          let error = new _http.HttpException.new("No content even though contentLength was specified to be " + ("greater than 0: " + dart.str(this.outbound.headers.contentLength) + "."), {uri: this.outbound[_uri$]});
          this[_doneCompleter$].completeError(error);
          return this[_closeFuture] = async.Future.error(error);
        }
      }
      if (this.contentLength != null) {
        if (dart.notNull(this[_bytesWritten]) < dart.notNull(this.contentLength)) {
          let error = new _http.HttpException.new("Content size below specified contentLength. " + (" " + dart.str(this[_bytesWritten]) + " bytes written but expected ") + (dart.str(this.contentLength) + "."), {uri: this.outbound[_uri$]});
          this[_doneCompleter$].completeError(error);
          return this[_closeFuture] = async.Future.error(error);
        }
      }
      const finalize = (function() {
        if (dart.test(this.chunked)) {
          if (dart.test(this[_gzip])) {
            this[_gzipAdd] = dart.bind(this.socket, 'add');
            if (dart.notNull(this[_gzipBufferLength]) > 0) {
              this[_gzipSink].add(typed_data.Uint8List.view(this[_gzipBuffer][$buffer], 0, this[_gzipBufferLength]));
            }
            this[_gzipBuffer] = null;
            this[_gzipSink].close();
            this[_gzipAdd] = null;
          }
          this[_addChunk$](this[_chunkHeader](0), dart.bind(this.socket, 'add'));
        }
        if (dart.notNull(this[_length$3]) > 0) {
          this.socket.add(typed_data.Uint8List.view(this[_buffer$1][$buffer], 0, this[_length$3]));
        }
        this[_buffer$1] = null;
        return this.socket.flush().then(dart.dynamic, dart.fn(_ => {
          this[_doneCompleter$].complete(this.socket);
          return this.outbound;
        }, dynamicTo_HttpOutboundMessage()), {onError: dart.fn((error, stackTrace) => {
            this[_doneCompleter$].completeError(error, core.StackTrace._check(stackTrace));
            if (dart.test(this[_ignoreError](error))) {
              return this.outbound;
            } else {
              dart.throw(error);
            }
          }, dynamicAnddynamicTo_HttpOutboundMessage())});
      }).bind(this);
      dart.fn(finalize, VoidToFuture());
      let future = this.writeHeaders();
      if (future != null) {
        return this[_closeFuture] = future.whenComplete(finalize);
      }
      return this[_closeFuture] = finalize();
    }
    get done() {
      return this[_doneCompleter$].future;
    }
    setHeader(data, length) {
      if (!(this[_length$3] === 0)) dart.assertFailed();
      this[_buffer$1] = typed_data.Uint8List._check(data);
      this[_length$3] = length;
    }
    set gzip(value) {
      this[_gzip] = value;
      if (dart.test(this[_gzip])) {
        this[_gzipBuffer] = typed_data.Uint8List.new(8192);
        if (!(this[_gzipSink] == null)) dart.assertFailed();
        this[_gzipSink] = new io.ZLibEncoder.new({gzip: true}).startChunkedConversion(new _http._HttpGZipSink.new(dart.fn(data => {
          if (this[_gzipAdd] == null) return;
          this[_addChunk$](this[_chunkHeader](data[$length]), this[_gzipAdd]);
          this[_pendingChunkedFooter] = 2;
          this[_addChunk$](data, this[_gzipAdd]);
        }, ListOfintToNull())));
      }
    }
    [_ignoreError](error) {
      return (io.SocketException.is(error) || io.TlsException.is(error)) && _http.HttpResponse.is(this.outbound);
    }
    [_addGZipChunk](chunk, add) {
      if (!dart.test(this.outbound.bufferOutput)) {
        add(chunk);
        return;
      }
      if (dart.notNull(chunk[$length]) > dart.notNull(this[_gzipBuffer][$length]) - dart.notNull(this[_gzipBufferLength])) {
        add(typed_data.Uint8List.view(this[_gzipBuffer][$buffer], 0, this[_gzipBufferLength]));
        this[_gzipBuffer] = typed_data.Uint8List.new(8192);
        this[_gzipBufferLength] = 0;
      }
      if (dart.notNull(chunk[$length]) > 8192) {
        add(chunk);
      } else {
        this[_gzipBuffer][$setRange](this[_gzipBufferLength], dart.notNull(this[_gzipBufferLength]) + dart.notNull(chunk[$length]), chunk);
        this[_gzipBufferLength] = dart.notNull(this[_gzipBufferLength]) + dart.notNull(chunk[$length]);
      }
    }
    [_addChunk$](chunk, add) {
      if (!dart.test(this.outbound.bufferOutput)) {
        if (this[_buffer$1] != null) {
          add(typed_data.Uint8List.view(this[_buffer$1][$buffer], 0, this[_length$3]));
          this[_buffer$1] = null;
          this[_length$3] = 0;
        }
        add(chunk);
        return;
      }
      if (dart.notNull(chunk[$length]) > dart.notNull(this[_buffer$1][$length]) - dart.notNull(this[_length$3])) {
        add(typed_data.Uint8List.view(this[_buffer$1][$buffer], 0, this[_length$3]));
        this[_buffer$1] = typed_data.Uint8List.new(8192);
        this[_length$3] = 0;
      }
      if (dart.notNull(chunk[$length]) > 8192) {
        add(chunk);
      } else {
        this[_buffer$1][$setRange](this[_length$3], dart.notNull(this[_length$3]) + dart.notNull(chunk[$length]), chunk);
        this[_length$3] = dart.notNull(this[_length$3]) + dart.notNull(chunk[$length]);
      }
    }
    [_chunkHeader](length) {
      let hexDigits = const$90 || (const$90 = dart.constList([48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70], core.int));
      if (length === 0) {
        if (this[_pendingChunkedFooter] === 2) return _http._HttpOutgoing._footerAndChunk0Length;
        return _http._HttpOutgoing._chunk0Length;
      }
      let size = this[_pendingChunkedFooter];
      let len = length;
      while (dart.notNull(len) > 0) {
        size = dart.notNull(size) + 1;
        len = len[$rightShift](4);
      }
      let footerAndHeader = typed_data.Uint8List.new(dart.notNull(size) + 2);
      if (this[_pendingChunkedFooter] === 2) {
        footerAndHeader[$_set](0, _http._CharCode.CR);
        footerAndHeader[$_set](1, _http._CharCode.LF);
      }
      let index = size;
      while (dart.notNull(index) > dart.notNull(this[_pendingChunkedFooter])) {
        footerAndHeader[$_set](index = dart.notNull(index) - 1, hexDigits[$_get](dart.notNull(length) & 15));
        length = length[$rightShift](4);
      }
      footerAndHeader[$_set](dart.notNull(size) + 0, _http._CharCode.CR);
      footerAndHeader[$_set](dart.notNull(size) + 1, _http._CharCode.LF);
      return footerAndHeader;
    }
  };
  (_http._HttpOutgoing.new = function(socket) {
    this[_doneCompleter$] = CompleterOfSocket().new();
    this.ignoreBody = false;
    this.headersWritten = false;
    this[_buffer$1] = null;
    this[_length$3] = 0;
    this[_closeFuture] = null;
    this.chunked = false;
    this[_pendingChunkedFooter] = 0;
    this.contentLength = null;
    this[_bytesWritten] = 0;
    this[_gzip] = false;
    this[_gzipSink] = null;
    this[_gzipAdd] = null;
    this[_gzipBuffer] = null;
    this[_gzipBufferLength] = 0;
    this[_socketError] = false;
    this.outbound = null;
    this.socket = socket;
  }).prototype = _http._HttpOutgoing.prototype;
  dart.addTypeTests(_http._HttpOutgoing);
  _http._HttpOutgoing[dart.implements] = () => [StreamConsumerOfListOfint()];
  dart.setMethodSignature(_http._HttpOutgoing, () => ({
    __proto__: dart.getMethods(_http._HttpOutgoing.__proto__),
    writeHeaders: dart.fnType(async.Future, [], {drainRequest: core.bool, setOutgoing: core.bool}),
    addStream: dart.fnType(async.Future, [core.Object]),
    close: dart.fnType(async.Future, []),
    setHeader: dart.fnType(dart.void, [core.List$(core.int), core.int]),
    [_ignoreError]: dart.fnType(core.bool, [dart.dynamic]),
    [_addGZipChunk]: dart.fnType(dart.void, [core.List$(core.int), dart.fnType(dart.void, [core.List$(core.int)])]),
    [_addChunk$]: dart.fnType(dart.void, [core.List$(core.int), dart.fnType(dart.void, [core.List$(core.int)])]),
    [_chunkHeader]: dart.fnType(core.List$(core.int), [core.int])
  }));
  dart.setGetterSignature(_http._HttpOutgoing, () => ({
    __proto__: dart.getGetters(_http._HttpOutgoing.__proto__),
    done: async.Future$(io.Socket)
  }));
  dart.setSetterSignature(_http._HttpOutgoing, () => ({
    __proto__: dart.getSetters(_http._HttpOutgoing.__proto__),
    gzip: core.bool
  }));
  dart.setFieldSignature(_http._HttpOutgoing, () => ({
    __proto__: dart.getFields(_http._HttpOutgoing.__proto__),
    [_doneCompleter$]: dart.finalFieldType(CompleterOfSocket()),
    socket: dart.finalFieldType(io.Socket),
    ignoreBody: dart.fieldType(core.bool),
    headersWritten: dart.fieldType(core.bool),
    [_buffer$1]: dart.fieldType(typed_data.Uint8List),
    [_length$3]: dart.fieldType(core.int),
    [_closeFuture]: dart.fieldType(async.Future),
    chunked: dart.fieldType(core.bool),
    [_pendingChunkedFooter]: dart.fieldType(core.int),
    contentLength: dart.fieldType(core.int),
    [_bytesWritten]: dart.fieldType(core.int),
    [_gzip]: dart.fieldType(core.bool),
    [_gzipSink]: dart.fieldType(convert.ByteConversionSink),
    [_gzipAdd]: dart.fieldType(ListOfintTovoid()),
    [_gzipBuffer]: dart.fieldType(typed_data.Uint8List),
    [_gzipBufferLength]: dart.fieldType(core.int),
    [_socketError]: dart.fieldType(core.bool),
    outbound: dart.fieldType(_http._HttpOutboundMessage)
  }));
  dart.defineLazy(_http._HttpOutgoing, {
    /*_http._HttpOutgoing._footerAndChunk0Length*/get _footerAndChunk0Length() {
      return dart.constList([_http._CharCode.CR, _http._CharCode.LF, 48, _http._CharCode.CR, _http._CharCode.LF, _http._CharCode.CR, _http._CharCode.LF], core.int);
    },
    /*_http._HttpOutgoing._chunk0Length*/get _chunk0Length() {
      return dart.constList([48, _http._CharCode.CR, _http._CharCode.LF, _http._CharCode.CR, _http._CharCode.LF], core.int);
    }
  });
  const _context$ = Symbol('_context');
  const _httpParser = Symbol('_httpParser');
  const _subscription$0 = Symbol('_subscription');
  const _dispose = Symbol('_dispose');
  const _idleTimer = Symbol('_idleTimer');
  const _currentUri = Symbol('_currentUri');
  const _nextResponseCompleter = Symbol('_nextResponseCompleter');
  const _streamFuture = Symbol('_streamFuture');
  const _proxyCredentials = Symbol('_proxyCredentials');
  const _returnConnection = Symbol('_returnConnection');
  _http._HttpClientConnection = class _HttpClientConnection extends core.Object {
    send(uri, port, method, proxy) {
      if (dart.test(this.closed)) {
        dart.throw(new _http.HttpException.new("Socket closed before request was sent", {uri: uri}));
      }
      this[_currentUri] = uri;
      this[_subscription$0].pause();
      let proxyCreds = null;
      let creds = null;
      let outgoing = new _http._HttpOutgoing.new(this[_socket$]);
      let request = new _http._HttpClientRequest.new(outgoing, uri, method, proxy, this[_httpClient], this);
      let host = uri.host;
      if (host[$contains](":")) host = "[" + dart.str(host) + "]";
      request.headers.host = host;
      request.headers.port = port;
      request.headers[_add$2](_http.HttpHeaders.acceptEncodingHeader, "gzip");
      if (this[_httpClient].userAgent != null) {
        request.headers[_add$2]("user-agent", this[_httpClient].userAgent);
      }
      if (dart.test(proxy.isAuthenticated)) {
        let auth = _http._CryptoUtils.bytesToBase64(convert.utf8.encode(dart.str(proxy.username) + ":" + dart.str(proxy.password)));
        request.headers.set(_http.HttpHeaders.proxyAuthorizationHeader, "Basic " + dart.str(auth));
      } else if (!dart.test(proxy.isDirect) && dart.notNull(this[_httpClient][_proxyCredentials][$length]) > 0) {
        proxyCreds = this[_httpClient][_findProxyCredentials](proxy);
        if (proxyCreds != null) {
          proxyCreds.authorize(request);
        }
      }
      if (uri.userInfo != null && !uri.userInfo[$isEmpty]) {
        let auth = _http._CryptoUtils.bytesToBase64(convert.utf8.encode(uri.userInfo));
        request.headers.set(_http.HttpHeaders.authorizationHeader, "Basic " + dart.str(auth));
      } else {
        creds = this[_httpClient][_findCredentials](uri);
        if (creds != null) {
          creds.authorize(request);
        }
      }
      this[_httpParser].isHead = method === "HEAD";
      this[_streamFuture] = FutureOfSocket()._check(outgoing.done.then(io.Socket, dart.fn(s => {
        this[_nextResponseCompleter] = CompleterOf_HttpIncoming().new();
        FutureOfNull()._check(this[_nextResponseCompleter].future.then(core.Null, dart.fn(incoming => {
          this[_currentUri] = null;
          FutureOfNull()._check(incoming.dataDone.then(core.Null, dart.fn(closing => {
            if (dart.test(incoming.upgraded)) {
              this[_httpClient][_connectionClosed](this);
              this.startTimer();
              return;
            }
            if (dart.test(this.closed)) return;
            if (!dart.dtest(closing) && !dart.test(this[_dispose]) && dart.test(incoming.headers.persistentConnection) && dart.test(request.persistentConnection)) {
              this[_httpClient][_returnConnection](this);
              this[_subscription$0].resume();
            } else {
              this.destroy();
            }
          }, dynamicToNull())));
          if (proxyCreds != null && dart.equals(proxyCreds.scheme, _http._AuthenticationScheme.DIGEST)) {
            let authInfo = incoming.headers._get("proxy-authentication-info");
            if (authInfo != null && authInfo[$length] === 1) {
              let header = _http._HeaderValue.parse(authInfo[$_get](0), {parameterSeparator: ","});
              let nextnonce = header.parameters[$_get]("nextnonce");
              if (nextnonce != null) proxyCreds.nonce = nextnonce;
            }
          }
          if (creds != null && dart.equals(creds.scheme, _http._AuthenticationScheme.DIGEST)) {
            let authInfo = incoming.headers._get("authentication-info");
            if (authInfo != null && authInfo[$length] === 1) {
              let header = _http._HeaderValue.parse(authInfo[$_get](0), {parameterSeparator: ","});
              let nextnonce = header.parameters[$_get]("nextnonce");
              if (nextnonce != null) creds.nonce = nextnonce;
            }
          }
          request[_onIncoming](incoming);
        }, _HttpIncomingToNull()))).catchError(dart.fn(error => {
          dart.throw(new _http.HttpException.new("Connection closed before data was received", {uri: uri}));
        }, dynamicToNull()), {test: dart.fn(error => core.StateError.is(error), ObjectTobool())}).catchError(dart.fn((error, stackTrace) => {
          this.destroy();
          request[_onError$](error, core.StackTrace._check(stackTrace));
        }, dynamicAnddynamicToNull()));
        this[_subscription$0].resume();
        return s;
      }, SocketToSocket()), {onError: dart.fn(e => {
          this.destroy();
        }, dynamicToNull())}));
      return request;
    }
    detachSocket() {
      return FutureOfSocket()._check(this[_streamFuture].then(io.Socket, dart.fn(_ => new _http._DetachedSocket.new(this[_socket$], this[_httpParser].detachIncoming()), SocketTo_DetachedSocket())));
    }
    destroy() {
      this.closed = true;
      this[_httpClient][_connectionClosed](this);
      this[_socket$].destroy();
    }
    close() {
      this.closed = true;
      this[_httpClient][_connectionClosed](this);
      this[_streamFuture].timeout(this[_httpClient].idleTimeout).then(dart.void, dart.fn(_ => this[_socket$].destroy(), SocketTovoid()));
    }
    createProxyTunnel(host, port, proxy, callback) {
      let request = this.send(core.Uri.new({host: host, port: port}), port, "CONNECT", proxy);
      if (dart.test(proxy.isAuthenticated)) {
        let auth = _http._CryptoUtils.bytesToBase64(convert.utf8.encode(dart.str(proxy.username) + ":" + dart.str(proxy.password)));
        request.headers.set(_http.HttpHeaders.proxyAuthorizationHeader, "Basic " + dart.str(auth));
      }
      return FutureOf_HttpClientConnection()._check(FutureOfSecureSocket()._check(request.close().then(io.SecureSocket, dart.fn(response => {
        if (response.statusCode !== _http.HttpStatus.ok) {
          dart.throw("Proxy failed to establish tunnel " + ("(" + dart.str(response.statusCode) + " " + dart.str(response.reasonPhrase) + ")"));
        }
        let socket = _http._HttpClientResponse.as(response)[_httpRequest][_httpClientConnection][_socket$];
        return io.SecureSocket.secure(socket, {host: host, context: this[_context$], onBadCertificate: callback});
      }, HttpClientResponseToFutureOfSecureSocket()))).then(_http._HttpClientConnection, dart.fn(secureSocket => {
        let key = core.String._check(_http._HttpClientConnection.makeKey(true, host, port));
        return new _http._HttpClientConnection.new(key, secureSocket, request[_httpClient], true);
      }, SecureSocketTo_HttpClientConnection())));
    }
    get connectionInfo() {
      return _http._HttpConnectionInfo.create(this[_socket$]);
    }
    static makeKey(isSecure, host, port) {
      return dart.test(isSecure) ? "ssh:" + dart.str(host) + ":" + dart.str(port) : dart.str(host) + ":" + dart.str(port);
    }
    stopTimer() {
      if (this[_idleTimer] != null) {
        this[_idleTimer].cancel();
        this[_idleTimer] = null;
      }
    }
    startTimer() {
      if (!(this[_idleTimer] == null)) dart.assertFailed();
      this[_idleTimer] = async.Timer.new(this[_httpClient].idleTimeout, dart.fn(() => {
        this[_idleTimer] = null;
        this.close();
      }, VoidToNull()));
    }
  };
  (_http._HttpClientConnection.new = function(key, socket, httpClient, proxyTunnel, context) {
    if (proxyTunnel === void 0) proxyTunnel = false;
    if (context === void 0) context = null;
    this[_subscription$0] = null;
    this[_dispose] = false;
    this[_idleTimer] = null;
    this.closed = false;
    this[_currentUri] = null;
    this[_nextResponseCompleter] = null;
    this[_streamFuture] = null;
    this.key = key;
    this[_socket$] = socket;
    this[_httpClient] = httpClient;
    this[_proxyTunnel] = proxyTunnel;
    this[_context$] = context;
    this[_httpParser] = _http._HttpParser.responseParser();
    this[_httpParser].listenToStream(this[_socket$]);
    this[_subscription$0] = this[_httpParser].listen(dart.fn(incoming => {
      this[_subscription$0].pause();
      if (this[_nextResponseCompleter] == null) {
        dart.throw(new _http.HttpException.new("Unexpected response (unsolicited response without request).", {uri: this[_currentUri]}));
      }
      if (incoming.statusCode === 100) {
        FutureOfNull()._check(incoming.drain(dart.dynamic).then(core.Null, dart.fn(_ => {
          this[_subscription$0].resume();
        }, dynamicToNull()))).catchError(dart.fn((error, stackTrace) => {
          if (stackTrace === void 0) stackTrace = null;
          this[_nextResponseCompleter].completeError(new _http.HttpException.new(core.String._check(dart.dload(error, 'message')), {uri: this[_currentUri]}), stackTrace);
          this[_nextResponseCompleter] = null;
        }, dynamic__ToNull()));
      } else {
        this[_nextResponseCompleter].complete(incoming);
        this[_nextResponseCompleter] = null;
      }
    }, _HttpIncomingToNull()), {onError: dart.fn((error, stackTrace) => {
        if (stackTrace === void 0) stackTrace = null;
        if (this[_nextResponseCompleter] != null) {
          this[_nextResponseCompleter].completeError(new _http.HttpException.new(core.String._check(dart.dload(error, 'message')), {uri: this[_currentUri]}), stackTrace);
          this[_nextResponseCompleter] = null;
        }
      }, dynamic__ToNull()), onDone: dart.fn(() => {
        if (this[_nextResponseCompleter] != null) {
          this[_nextResponseCompleter].completeError(new _http.HttpException.new("Connection closed before response was received", {uri: this[_currentUri]}));
          this[_nextResponseCompleter] = null;
        }
        this.close();
      }, VoidToNull())});
  }).prototype = _http._HttpClientConnection.prototype;
  dart.addTypeTests(_http._HttpClientConnection);
  dart.setMethodSignature(_http._HttpClientConnection, () => ({
    __proto__: dart.getMethods(_http._HttpClientConnection.__proto__),
    send: dart.fnType(_http._HttpClientRequest, [core.Uri, core.int, core.String, _http._Proxy]),
    detachSocket: dart.fnType(async.Future$(io.Socket), []),
    destroy: dart.fnType(dart.void, []),
    close: dart.fnType(dart.void, []),
    createProxyTunnel: dart.fnType(async.Future$(_http._HttpClientConnection), [core.String, core.int, _http._Proxy, dart.fnType(core.bool, [io.X509Certificate])]),
    stopTimer: dart.fnType(dart.void, []),
    startTimer: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(_http._HttpClientConnection, () => ({
    __proto__: dart.getGetters(_http._HttpClientConnection.__proto__),
    connectionInfo: _http.HttpConnectionInfo
  }));
  dart.setFieldSignature(_http._HttpClientConnection, () => ({
    __proto__: dart.getFields(_http._HttpClientConnection.__proto__),
    key: dart.finalFieldType(core.String),
    [_socket$]: dart.finalFieldType(io.Socket),
    [_proxyTunnel]: dart.finalFieldType(core.bool),
    [_context$]: dart.finalFieldType(io.SecurityContext),
    [_httpParser]: dart.finalFieldType(_http._HttpParser),
    [_subscription$0]: dart.fieldType(async.StreamSubscription),
    [_httpClient]: dart.finalFieldType(_http._HttpClient),
    [_dispose]: dart.fieldType(core.bool),
    [_idleTimer]: dart.fieldType(async.Timer),
    closed: dart.fieldType(core.bool),
    [_currentUri]: dart.fieldType(core.Uri),
    [_nextResponseCompleter]: dart.fieldType(CompleterOf_HttpIncoming()),
    [_streamFuture]: dart.fieldType(FutureOfSocket())
  }));
  _http._ConnectionInfo = class _ConnectionInfo extends core.Object {};
  (_http._ConnectionInfo.new = function(connection, proxy) {
    this.connection = connection;
    this.proxy = proxy;
  }).prototype = _http._ConnectionInfo.prototype;
  dart.addTypeTests(_http._ConnectionInfo);
  dart.setFieldSignature(_http._ConnectionInfo, () => ({
    __proto__: dart.getFields(_http._ConnectionInfo.__proto__),
    connection: dart.finalFieldType(_http._HttpClientConnection),
    proxy: dart.finalFieldType(_http._Proxy)
  }));
  const _idle = Symbol('_idle');
  const _active = Symbol('_active');
  const _socketTasks = Symbol('_socketTasks');
  const _pending$ = Symbol('_pending');
  const _connecting = Symbol('_connecting');
  const _checkPending = Symbol('_checkPending');
  const _connectionsChanged = Symbol('_connectionsChanged');
  const _badCertificateCallback = Symbol('_badCertificateCallback');
  const _getConnectionTarget = Symbol('_getConnectionTarget');
  _http._ConnectionTarget = class _ConnectionTarget extends core.Object {
    get isEmpty() {
      return dart.test(this[_idle].isEmpty) && dart.test(this[_active].isEmpty) && this[_connecting] === 0;
    }
    get hasIdle() {
      return this[_idle].isNotEmpty;
    }
    get hasActive() {
      return dart.test(this[_active].isNotEmpty) || dart.notNull(this[_connecting]) > 0;
    }
    takeIdle() {
      if (!dart.test(this.hasIdle)) dart.assertFailed();
      let connection = this[_idle].first;
      this[_idle].remove(connection);
      connection.stopTimer();
      this[_active].add(connection);
      return connection;
    }
    [_checkPending]() {
      if (dart.test(this[_pending$].isNotEmpty)) {
        dart.dcall(this[_pending$].removeFirst(), []);
      }
    }
    addNewActive(connection) {
      this[_active].add(connection);
    }
    returnConnection(connection) {
      if (!dart.test(this[_active].contains(connection))) dart.assertFailed();
      this[_active].remove(connection);
      this[_idle].add(connection);
      connection.startTimer();
      this[_checkPending]();
    }
    connectionClosed(connection) {
      if (!(!dart.test(this[_active].contains(connection)) || !dart.test(this[_idle].contains(connection)))) dart.assertFailed();
      this[_active].remove(connection);
      this[_idle].remove(connection);
      this[_checkPending]();
    }
    close(force) {
      for (let t of this[_socketTasks].toList()) {
        FutureOfNull()._check(t.socket.then(core.Null, dart.fn(s => {
          dart.dsend(s, 'destroy', []);
        }, dynamicToNull()), {onError: dart.fn(e => {
          }, dynamicToNull())}));
        t.cancel();
      }
      if (dart.test(force)) {
        for (let c of this[_idle].toList()) {
          c.destroy();
        }
        for (let c of this[_active].toList()) {
          c.destroy();
        }
      } else {
        for (let c of this[_idle].toList()) {
          c.close();
        }
      }
    }
    connect(uriHost, uriPort, proxy, client) {
      if (dart.test(this.hasIdle)) {
        let connection = this.takeIdle();
        client[_connectionsChanged]();
        return FutureOf_ConnectionInfo().value(new _http._ConnectionInfo.new(connection, proxy));
      }
      if (client.maxConnectionsPerHost != null && dart.notNull(this[_active].length) + dart.notNull(this[_connecting]) >= dart.notNull(client.maxConnectionsPerHost)) {
        let completer = CompleterOf_ConnectionInfo().new();
        this[_pending$].add(dart.fn(() => {
          completer.complete(this.connect(uriHost, uriPort, proxy, client));
        }, VoidToNull()));
        return completer.future;
      }
      let currentBadCertificateCallback = client[_badCertificateCallback];
      function callback(certificate) {
        if (currentBadCertificateCallback == null) return false;
        return currentBadCertificateCallback(certificate, uriHost, uriPort);
      }
      dart.fn(callback, X509CertificateTobool());
      let connectionTask = dart.test(this.isSecure) && dart.test(proxy.isDirect) ? io.SecureSocket.startConnect(this.host, this.port, {context: this.context, onBadCertificate: callback}) : io.Socket.startConnect(this.host, this.port);
      this[_connecting] = dart.notNull(this[_connecting]) + 1;
      return FutureOf_ConnectionInfo()._check(connectionTask.then(_http._ConnectionInfo, dart.fn(task => {
        this[_socketTasks].add(task);
        let socketFuture = task.socket;
        if (client.connectionTimeout != null) {
          socketFuture = socketFuture.timeout(client.connectionTimeout, {onTimeout: dart.fn(() => {
              this[_socketTasks].remove(task);
              task.cancel();
            }, VoidToNull())});
        }
        return FutureOf_ConnectionInfo()._check(socketFuture.then(_http._ConnectionInfo, dart.fn(socket => {
          this[_connecting] = dart.notNull(this[_connecting]) - 1;
          dart.dsend(socket, 'setOption', [io.SocketOption.tcpNoDelay, true]);
          let connection = new _http._HttpClientConnection.new(this.key, io.Socket._check(socket), client, false, this.context);
          if (dart.test(this.isSecure) && !dart.test(proxy.isDirect)) {
            connection[_dispose] = true;
            return FutureOf_ConnectionInfo()._check(connection.createProxyTunnel(uriHost, uriPort, proxy, callback).then(_http._ConnectionInfo, dart.fn(tunnel => {
              client[_getConnectionTarget](uriHost, uriPort, true).addNewActive(tunnel);
              this[_socketTasks].remove(task);
              return new _http._ConnectionInfo.new(tunnel, proxy);
            }, _HttpClientConnectionTo_ConnectionInfo())));
          } else {
            this.addNewActive(connection);
            this[_socketTasks].remove(task);
            return new _http._ConnectionInfo.new(connection, proxy);
          }
        }, dynamicToFutureOrOf_ConnectionInfo()), {onError: dart.fn(error => {
            this[_connecting] = dart.notNull(this[_connecting]) - 1;
            this[_socketTasks].remove(task);
            this[_checkPending]();
            dart.throw(error);
          }, dynamicToNull())}));
      }, ConnectionTaskToFutureOf_ConnectionInfo())));
    }
  };
  (_http._ConnectionTarget.new = function(key, host, port, isSecure, context) {
    this[_idle] = new (_HashSetOf_HttpClientConnection()).new();
    this[_active] = new (_HashSetOf_HttpClientConnection()).new();
    this[_socketTasks] = new (_HashSetOfConnectionTask()).new();
    this[_pending$] = new collection.ListQueue.new();
    this[_connecting] = 0;
    this.key = key;
    this.host = host;
    this.port = port;
    this.isSecure = isSecure;
    this.context = context;
  }).prototype = _http._ConnectionTarget.prototype;
  dart.addTypeTests(_http._ConnectionTarget);
  dart.setMethodSignature(_http._ConnectionTarget, () => ({
    __proto__: dart.getMethods(_http._ConnectionTarget.__proto__),
    takeIdle: dart.fnType(_http._HttpClientConnection, []),
    [_checkPending]: dart.fnType(dart.dynamic, []),
    addNewActive: dart.fnType(dart.void, [_http._HttpClientConnection]),
    returnConnection: dart.fnType(dart.void, [_http._HttpClientConnection]),
    connectionClosed: dart.fnType(dart.void, [_http._HttpClientConnection]),
    close: dart.fnType(dart.void, [core.bool]),
    connect: dart.fnType(async.Future$(_http._ConnectionInfo), [core.String, core.int, _http._Proxy, _http._HttpClient])
  }));
  dart.setGetterSignature(_http._ConnectionTarget, () => ({
    __proto__: dart.getGetters(_http._ConnectionTarget.__proto__),
    isEmpty: core.bool,
    hasIdle: core.bool,
    hasActive: core.bool
  }));
  dart.setFieldSignature(_http._ConnectionTarget, () => ({
    __proto__: dart.getFields(_http._ConnectionTarget.__proto__),
    key: dart.finalFieldType(core.String),
    host: dart.finalFieldType(core.String),
    port: dart.finalFieldType(core.int),
    isSecure: dart.finalFieldType(core.bool),
    context: dart.finalFieldType(io.SecurityContext),
    [_idle]: dart.finalFieldType(SetOf_HttpClientConnection()),
    [_active]: dart.finalFieldType(SetOf_HttpClientConnection()),
    [_socketTasks]: dart.finalFieldType(SetOfConnectionTask()),
    [_pending$]: dart.finalFieldType(collection.Queue),
    [_connecting]: dart.fieldType(core.int)
  }));
  const _closing = Symbol('_closing');
  const _closingForcefully = Symbol('_closingForcefully');
  const _connectionTargets = Symbol('_connectionTargets');
  const _credentials = Symbol('_credentials');
  const _findProxy = Symbol('_findProxy');
  const _idleTimeout = Symbol('_idleTimeout');
  let const$91;
  const _openUrl = Symbol('_openUrl');
  const _closeConnections = Symbol('_closeConnections');
  let const$92;
  const _getConnection = Symbol('_getConnection');
  _http._HttpClient = class _HttpClient extends core.Object {
    get idleTimeout() {
      return this[_idleTimeout];
    }
    set idleTimeout(timeout) {
      this[_idleTimeout] = timeout;
      for (let c of this[_connectionTargets][$values]) {
        for (let idle of c[_idle]) {
          idle.stopTimer();
          idle.startTimer();
        }
      }
    }
    set badCertificateCallback(callback) {
      this[_badCertificateCallback] = callback;
    }
    open(method, host, port, path) {
      let hashMark = 35;
      let questionMark = 63;
      let fragmentStart = path.length;
      let queryStart = path.length;
      for (let i = path.length - 1; i >= 0; i--) {
        let char = path[$codeUnitAt](i);
        if (char === hashMark) {
          fragmentStart = i;
          queryStart = i;
        } else if (char === questionMark) {
          queryStart = i;
        }
      }
      let query = null;
      if (queryStart < fragmentStart) {
        query = path[$substring](queryStart + 1, fragmentStart);
        path = path[$substring](0, queryStart);
      }
      let uri = core.Uri.new({scheme: "http", host: host, port: port, path: path, query: query});
      return this[_openUrl](method, uri);
    }
    openUrl(method, url) {
      return this[_openUrl](method, url);
    }
    get(host, port, path) {
      return this.open("get", host, port, path);
    }
    getUrl(url) {
      return this[_openUrl]("get", url);
    }
    post(host, port, path) {
      return this.open("post", host, port, path);
    }
    postUrl(url) {
      return this[_openUrl]("post", url);
    }
    put(host, port, path) {
      return this.open("put", host, port, path);
    }
    putUrl(url) {
      return this[_openUrl]("put", url);
    }
    delete(host, port, path) {
      return this.open("delete", host, port, path);
    }
    deleteUrl(url) {
      return this[_openUrl]("delete", url);
    }
    head(host, port, path) {
      return this.open("head", host, port, path);
    }
    headUrl(url) {
      return this[_openUrl]("head", url);
    }
    patch(host, port, path) {
      return this.open("patch", host, port, path);
    }
    patchUrl(url) {
      return this[_openUrl]("patch", url);
    }
    close(opts) {
      let force = opts && 'force' in opts ? opts.force : false;
      this[_closing] = true;
      this[_closingForcefully] = force;
      this[_closeConnections](this[_closingForcefully]);
      if (!!dart.test(this[_connectionTargets][$values][$any](dart.fn(s => s.hasIdle, _ConnectionTargetTobool())))) dart.assertFailed();
      if (!(!dart.test(force) || !dart.test(this[_connectionTargets][$values][$any](dart.fn(s => s[_active].isNotEmpty, _ConnectionTargetTobool()))))) dart.assertFailed();
    }
    set authenticate(f) {
      this[_authenticate] = f;
    }
    addCredentials(url, realm, cr) {
      this[_credentials][$add](new _http._SiteCredentials.new(url, realm, _http._HttpClientCredentials._check(cr)));
    }
    set authenticateProxy(f) {
      this[_authenticateProxy] = f;
    }
    addProxyCredentials(host, port, realm, cr) {
      this[_proxyCredentials][$add](new _http._ProxyCredentials.new(host, port, realm, _http._HttpClientCredentials._check(cr)));
    }
    set findProxy(f) {
      return this[_findProxy] = f;
    }
    [_openUrl](method, uri) {
      if (dart.test(this[_closing])) {
        dart.throw(new core.StateError.new("Client is closed"));
      }
      uri = uri.removeFragment();
      if (method == null) {
        dart.throw(new core.ArgumentError.new(method));
      }
      if (method !== "CONNECT") {
        if (uri.host[$isEmpty]) {
          dart.throw(new core.ArgumentError.new("No host specified in URI " + dart.str(uri)));
        } else if (uri.scheme !== "http" && uri.scheme !== "https") {
          dart.throw(new core.ArgumentError.new("Unsupported scheme '" + dart.str(uri.scheme) + "' in URI " + dart.str(uri)));
        }
      }
      let isSecure = uri.scheme === "https";
      let port = uri.port;
      if (port === 0) {
        port = isSecure ? _http.HttpClient.defaultHttpsPort : _http.HttpClient.defaultHttpPort;
      }
      let proxyConf = const$92 || (const$92 = dart.const(new _http._ProxyConfiguration.direct()));
      if (this[_findProxy] != null) {
        try {
          proxyConf = new _http._ProxyConfiguration.new(core.String._check(dart.dcall(this[_findProxy], [uri])));
        } catch (e) {
          let error = dart.getThrown(e);
          let stackTrace = dart.stackTrace(e);
          return FutureOf_HttpClientRequest().error(error, stackTrace);
        }
      }
      return FutureOf_HttpClientRequest()._check(this[_getConnection](uri.host, port, proxyConf, isSecure).then(_http._HttpClientRequest, dart.fn(info => {
        function send(info) {
          return info.connection.send(uri, port, method[$toUpperCase](), info.proxy);
        }
        dart.fn(send, _ConnectionInfoTo_HttpClientRequest());
        if (dart.test(info.connection.closed)) {
          return FutureOf_HttpClientRequest()._check(this[_getConnection](uri.host, port, proxyConf, isSecure).then(_http._HttpClientRequest, send));
        }
        return send(info);
      }, _ConnectionInfoToFutureOrOf_HttpClientRequest())));
    }
    [_openUrlFromRequest](method, uri, previous) {
      let resolved = previous.uri.resolveUri(uri);
      return FutureOf_HttpClientRequest()._check(this[_openUrl](method, resolved).then(_http._HttpClientRequest, dart.fn(request => {
        request.followRedirects = previous.followRedirects;
        request.maxRedirects = previous.maxRedirects;
        for (let header of previous.headers[_headers][$keys]) {
          if (request.headers._get(header) == null) {
            request.headers.set(header, previous.headers._get(header));
          }
        }
        request.headers.chunkedTransferEncoding = false;
        request.contentLength = 0;
        return request;
      }, _HttpClientRequestTo_HttpClientRequest())));
    }
    [_returnConnection](connection) {
      this[_connectionTargets][$_get](connection.key).returnConnection(connection);
      this[_connectionsChanged]();
    }
    [_connectionClosed](connection) {
      connection.stopTimer();
      let connectionTarget = this[_connectionTargets][$_get](connection.key);
      if (connectionTarget != null) {
        connectionTarget.connectionClosed(connection);
        if (dart.test(connectionTarget.isEmpty)) {
          this[_connectionTargets][$remove](connection.key);
        }
        this[_connectionsChanged]();
      }
    }
    [_connectionsChanged]() {
      if (dart.test(this[_closing])) {
        this[_closeConnections](this[_closingForcefully]);
      }
    }
    [_closeConnections](force) {
      for (let connectionTarget of this[_connectionTargets][$values][$toList]()) {
        connectionTarget.close(force);
      }
    }
    [_getConnectionTarget](host, port, isSecure) {
      let key = core.String._check(_http._HttpClientConnection.makeKey(isSecure, host, port));
      return this[_connectionTargets][$putIfAbsent](key, dart.fn(() => new _http._ConnectionTarget.new(key, host, port, isSecure, this[_context$]), VoidTo_ConnectionTarget()));
    }
    [_getConnection](uriHost, uriPort, proxyConf, isSecure) {
      let proxies = proxyConf.proxies[$iterator];
      const connect = (function(error) {
        if (!dart.test(proxies.moveNext())) return FutureOf_ConnectionInfo().error(error);
        let proxy = proxies.current;
        let host = dart.test(proxy.isDirect) ? uriHost : proxy.host;
        let port = dart.test(proxy.isDirect) ? uriPort : proxy.port;
        return this[_getConnectionTarget](host, port, isSecure).connect(uriHost, uriPort, proxy, this).catchError(connect);
      }).bind(this);
      dart.fn(connect, dynamicToFutureOf_ConnectionInfo());
      return connect(new _http.HttpException.new("No proxies given"));
    }
    [_findCredentials](url, scheme) {
      if (scheme === void 0) scheme = null;
      let cr = _http._SiteCredentials._check(this[_credentials][$fold](_http._SiteCredentials, null, dart.fn((prev, value) => {
        let siteCredentials = _http._SiteCredentials.as(value);
        if (dart.test(siteCredentials.applies(url, scheme))) {
          if (prev == null) return _http._SiteCredentials._check(value);
          return siteCredentials.uri.path.length > prev.uri.path.length ? siteCredentials : prev;
        } else {
          return prev;
        }
      }, _SiteCredentialsAnd_CredentialsTo_SiteCredentials())));
      return cr;
    }
    [_findProxyCredentials](proxy, scheme) {
      if (scheme === void 0) scheme = null;
      let it = this[_proxyCredentials][$iterator];
      while (dart.test(it.moveNext())) {
        if (dart.test(it.current.applies(proxy, scheme))) {
          return it.current;
        }
      }
      return null;
    }
    [_removeCredentials](cr) {
      let index = this[_credentials][$indexOf](cr);
      if (index !== -1) {
        this[_credentials][$removeAt](index);
      }
    }
    [_removeProxyCredentials](cr) {
      let index = this[_proxyCredentials][$indexOf](_http._ProxyCredentials._check(cr));
      if (index !== -1) {
        this[_proxyCredentials][$removeAt](index);
      }
    }
    static _findProxyFromEnvironment(url, environment) {
      function checkNoProxy(option) {
        if (option == null) return null;
        let names = IterableOfString()._check(option[$split](",")[$map](core.String, dart.fn(s => s[$trim](), StringToString())))[$iterator];
        while (dart.test(names.moveNext())) {
          let name = names.current;
          if (name[$startsWith]("[") && name[$endsWith]("]") && "[" + dart.str(url.host) + "]" === name || name[$isNotEmpty] && url.host[$endsWith](name)) {
            return "DIRECT";
          }
        }
        return null;
      }
      dart.fn(checkNoProxy, StringToString());
      function checkProxy(option) {
        if (option == null) return null;
        option = option[$trim]();
        if (option[$isEmpty]) return null;
        let pos = option[$indexOf]("://");
        if (pos >= 0) {
          option = option[$substring](pos + 3);
        }
        pos = option[$indexOf]("/");
        if (pos >= 0) {
          option = option[$substring](0, pos);
        }
        if (option[$indexOf]("[") === 0) {
          let pos = option[$lastIndexOf](":");
          if (option[$indexOf]("]") > pos) option = dart.str(option) + ":1080";
        } else {
          if (option[$indexOf](":") === -1) option = dart.str(option) + ":1080";
        }
        return "PROXY " + dart.str(option);
      }
      dart.fn(checkProxy, StringToString());
      if (environment == null) environment = _http._HttpClient._platformEnvironmentCache;
      let proxyCfg = null;
      let noProxy = environment[$_get]("no_proxy");
      if (noProxy == null) noProxy = environment[$_get]("NO_PROXY");
      if ((proxyCfg = checkNoProxy(noProxy)) != null) {
        return proxyCfg;
      }
      if (url.scheme === "http") {
        let proxy = environment[$_get]("http_proxy");
        if (proxy == null) proxy = environment[$_get]("HTTP_PROXY");
        if ((proxyCfg = checkProxy(proxy)) != null) {
          return proxyCfg;
        }
      } else if (url.scheme === "https") {
        let proxy = environment[$_get]("https_proxy");
        if (proxy == null) proxy = environment[$_get]("HTTPS_PROXY");
        if ((proxyCfg = checkProxy(proxy)) != null) {
          return proxyCfg;
        }
      }
      return "DIRECT";
    }
  };
  (_http._HttpClient.new = function(context) {
    this[_closing] = false;
    this[_closingForcefully] = false;
    this[_connectionTargets] = new (IdentityMapOfString$_ConnectionTarget()).new();
    this[_credentials] = JSArrayOf_Credentials().of([]);
    this[_proxyCredentials] = JSArrayOf_ProxyCredentials().of([]);
    this[_authenticate] = null;
    this[_authenticateProxy] = null;
    this[_findProxy] = dart.fn(_http.HttpClient.findProxyFromEnvironment, Uri__ToString());
    this[_idleTimeout] = const$91 || (const$91 = dart.const(new core.Duration.new({seconds: 15})));
    this[_badCertificateCallback] = null;
    this.connectionTimeout = null;
    this.maxConnectionsPerHost = null;
    this.autoUncompress = true;
    this.userAgent = _http._getHttpVersion();
    this[_context$] = context;
  }).prototype = _http._HttpClient.prototype;
  dart.addTypeTests(_http._HttpClient);
  _http._HttpClient[dart.implements] = () => [_http.HttpClient];
  dart.setMethodSignature(_http._HttpClient, () => ({
    __proto__: dart.getMethods(_http._HttpClient.__proto__),
    open: dart.fnType(async.Future$(_http.HttpClientRequest), [core.String, core.String, core.int, core.String]),
    openUrl: dart.fnType(async.Future$(_http.HttpClientRequest), [core.String, core.Uri]),
    get: dart.fnType(async.Future$(_http.HttpClientRequest), [core.String, core.int, core.String]),
    getUrl: dart.fnType(async.Future$(_http.HttpClientRequest), [core.Uri]),
    post: dart.fnType(async.Future$(_http.HttpClientRequest), [core.String, core.int, core.String]),
    postUrl: dart.fnType(async.Future$(_http.HttpClientRequest), [core.Uri]),
    put: dart.fnType(async.Future$(_http.HttpClientRequest), [core.String, core.int, core.String]),
    putUrl: dart.fnType(async.Future$(_http.HttpClientRequest), [core.Uri]),
    delete: dart.fnType(async.Future$(_http.HttpClientRequest), [core.String, core.int, core.String]),
    deleteUrl: dart.fnType(async.Future$(_http.HttpClientRequest), [core.Uri]),
    head: dart.fnType(async.Future$(_http.HttpClientRequest), [core.String, core.int, core.String]),
    headUrl: dart.fnType(async.Future$(_http.HttpClientRequest), [core.Uri]),
    patch: dart.fnType(async.Future$(_http.HttpClientRequest), [core.String, core.int, core.String]),
    patchUrl: dart.fnType(async.Future$(_http.HttpClientRequest), [core.Uri]),
    close: dart.fnType(dart.void, [], {force: core.bool}),
    addCredentials: dart.fnType(dart.void, [core.Uri, core.String, _http.HttpClientCredentials]),
    addProxyCredentials: dart.fnType(dart.void, [core.String, core.int, core.String, _http.HttpClientCredentials]),
    [_openUrl]: dart.fnType(async.Future$(_http._HttpClientRequest), [core.String, core.Uri]),
    [_openUrlFromRequest]: dart.fnType(async.Future$(_http._HttpClientRequest), [core.String, core.Uri, _http._HttpClientRequest]),
    [_returnConnection]: dart.fnType(dart.void, [_http._HttpClientConnection]),
    [_connectionClosed]: dart.fnType(dart.void, [_http._HttpClientConnection]),
    [_connectionsChanged]: dart.fnType(dart.void, []),
    [_closeConnections]: dart.fnType(dart.void, [core.bool]),
    [_getConnectionTarget]: dart.fnType(_http._ConnectionTarget, [core.String, core.int, core.bool]),
    [_getConnection]: dart.fnType(async.Future$(_http._ConnectionInfo), [core.String, core.int, _http._ProxyConfiguration, core.bool]),
    [_findCredentials]: dart.fnType(_http._SiteCredentials, [core.Uri], [_http._AuthenticationScheme]),
    [_findProxyCredentials]: dart.fnType(_http._ProxyCredentials, [_http._Proxy], [_http._AuthenticationScheme]),
    [_removeCredentials]: dart.fnType(dart.void, [_http._Credentials]),
    [_removeProxyCredentials]: dart.fnType(dart.void, [_http._Credentials])
  }));
  dart.setGetterSignature(_http._HttpClient, () => ({
    __proto__: dart.getGetters(_http._HttpClient.__proto__),
    idleTimeout: core.Duration
  }));
  dart.setSetterSignature(_http._HttpClient, () => ({
    __proto__: dart.getSetters(_http._HttpClient.__proto__),
    idleTimeout: core.Duration,
    badCertificateCallback: dart.fnType(core.bool, [io.X509Certificate, core.String, core.int]),
    authenticate: dart.fnType(async.Future$(core.bool), [core.Uri, core.String, core.String]),
    authenticateProxy: dart.fnType(async.Future$(core.bool), [core.String, core.int, core.String, core.String]),
    findProxy: dart.fnType(core.String, [core.Uri])
  }));
  dart.setFieldSignature(_http._HttpClient, () => ({
    __proto__: dart.getFields(_http._HttpClient.__proto__),
    [_closing]: dart.fieldType(core.bool),
    [_closingForcefully]: dart.fieldType(core.bool),
    [_connectionTargets]: dart.finalFieldType(MapOfString$_ConnectionTarget()),
    [_credentials]: dart.finalFieldType(ListOf_Credentials()),
    [_proxyCredentials]: dart.finalFieldType(ListOf_ProxyCredentials()),
    [_context$]: dart.finalFieldType(io.SecurityContext),
    [_authenticate]: dart.fieldType(core.Function),
    [_authenticateProxy]: dart.fieldType(core.Function),
    [_findProxy]: dart.fieldType(core.Function),
    [_idleTimeout]: dart.fieldType(core.Duration),
    [_badCertificateCallback]: dart.fieldType(X509CertificateAndStringAndintTobool()),
    connectionTimeout: dart.fieldType(core.Duration),
    maxConnectionsPerHost: dart.fieldType(core.int),
    autoUncompress: dart.fieldType(core.bool),
    userAgent: dart.fieldType(core.String)
  }));
  dart.defineLazy(_http._HttpClient, {
    /*_http._HttpClient._platformEnvironmentCache*/get _platformEnvironmentCache() {
      return io.Platform.environment;
    },
    set _platformEnvironmentCache(_) {}
  });
  const _state$1 = Symbol('_state');
  const _idleMark = Symbol('_idleMark');
  const _markActive = Symbol('_markActive');
  const _markIdle = Symbol('_markIdle');
  const _handleRequest = Symbol('_handleRequest');
  const _isActive = Symbol('_isActive');
  const _isIdle = Symbol('_isIdle');
  const _isDetached = Symbol('_isDetached');
  const _toJSON$ = Symbol('_toJSON');
  const LinkedListEntry__ServiceObject$ = class LinkedListEntry__ServiceObject extends collection.LinkedListEntry {};
  (LinkedListEntry__ServiceObject$.new = function() {
    _http._ServiceObject.new.call(this);
    LinkedListEntry__ServiceObject$.__proto__.new.call(this);
  }).prototype = LinkedListEntry__ServiceObject$.prototype;
  dart.applyMixin(LinkedListEntry__ServiceObject$, _http._ServiceObject);
  _http._HttpConnection = class _HttpConnection extends LinkedListEntry__ServiceObject$ {
    markIdle() {
      this[_idleMark] = true;
    }
    get isMarkedIdle() {
      return this[_idleMark];
    }
    destroy() {
      if (this[_state$1] === 2 || this[_state$1] === 3) return;
      this[_state$1] = 2;
      dart.dsend(this[_socket$], 'destroy', []);
      this[_httpServer][_connectionClosed](this);
      _http._HttpConnection._connections[$remove](this[_serviceId$]);
    }
    detachSocket() {
      this[_state$1] = 3;
      this[_httpServer][_connectionClosed](this);
      let detachedIncoming = this[_httpParser].detachIncoming();
      return FutureOfSocket()._check(this[_streamFuture].then(io.Socket, dart.fn(_ => {
        _http._HttpConnection._connections[$remove](this[_serviceId$]);
        return new _http._DetachedSocket.new(io.Socket._check(this[_socket$]), detachedIncoming);
      }, dynamicTo_DetachedSocket())));
    }
    get connectionInfo() {
      return _http._HttpConnectionInfo.create(io.Socket._check(this[_socket$]));
    }
    get [_isActive]() {
      return this[_state$1] === 0;
    }
    get [_isIdle]() {
      return this[_state$1] === 1;
    }
    get [_isClosing]() {
      return this[_state$1] === 2;
    }
    get [_isDetached]() {
      return this[_state$1] === 3;
    }
    get [_serviceTypePath$]() {
      return "io/http/serverconnections";
    }
    get [_serviceTypeName$]() {
      return "HttpServerConnection";
    }
    [_toJSON$](ref) {
      let name = dart.str(dart.dload(dart.dload(this[_socket$], 'address'), 'host')) + ":" + dart.str(dart.dload(this[_socket$], 'port')) + " <-> " + (dart.str(dart.dload(dart.dload(this[_socket$], 'remoteAddress'), 'host')) + ":" + dart.str(dart.dload(this[_socket$], 'remotePort')));
      let r = new (IdentityMapOfString$dynamic()).from(["id", this[_servicePath$], "type", this[_serviceType$](ref), "name", name, "user_name", name]);
      if (dart.test(ref)) {
        return r;
      }
      r[$_set]("server", this[_httpServer][_toJSON$](true));
      try {
        r[$_set]("socket", dart.dsend(this[_socket$], _toJSON$, [true]));
      } catch (e) {
        let _ = dart.getThrown(e);
        r[$_set]("socket", new (IdentityMapOfString$String()).from(["id", this[_servicePath$], "type", "@Socket", "name", "UserSocket", "user_name", "UserSocket"]));
      }
      switch (this[_state$1]) {
        case 0:
        {
          r[$_set]("state", "Active");
          break;
        }
        case 1:
        {
          r[$_set]("state", "Idle");
          break;
        }
        case 2:
        {
          r[$_set]("state", "Closing");
          break;
        }
        case 3:
        {
          r[$_set]("state", "Detached");
          break;
        }
        default:
        {
          r[$_set]("state", "Unknown");
          break;
        }
      }
      return r;
    }
  };
  (_http._HttpConnection.new = function(socket, httpServer) {
    this[_state$1] = 1;
    this[_subscription$0] = null;
    this[_idleMark] = false;
    this[_streamFuture] = null;
    this[_socket$] = socket;
    this[_httpServer] = httpServer;
    this[_httpParser] = _http._HttpParser.requestParser();
    _http._HttpConnection.__proto__.new.call(this);
    _http._HttpConnection._connections[$_set](this[_serviceId$], this);
    this[_httpParser].listenToStream(StreamOfListOfint()._check(this[_socket$]));
    this[_subscription$0] = this[_httpParser].listen(dart.fn(incoming => {
      this[_httpServer][_markActive](this);
      FutureOfNull()._check(incoming.dataDone.then(core.Null, dart.fn(closing => {
        if (dart.dtest(closing)) this.destroy();
      }, dynamicToNull())));
      this[_subscription$0].pause();
      this[_state$1] = 0;
      let outgoing = new _http._HttpOutgoing.new(io.Socket._check(this[_socket$]));
      let response = new _http._HttpResponse.new(incoming.uri, incoming.headers.protocolVersion, outgoing, this[_httpServer].defaultResponseHeaders, this[_httpServer].serverHeader);
      let request = new _http._HttpRequest.new(response, incoming, this[_httpServer], this);
      this[_streamFuture] = outgoing.done.then(dart.dynamic, dart.fn(_ => {
        response.deadline = null;
        if (this[_state$1] === 3) return;
        if (dart.test(response.persistentConnection) && dart.test(request.persistentConnection) && dart.test(incoming.fullBodyRead) && !dart.test(this[_httpParser].upgrade) && !dart.test(this[_httpServer].closed)) {
          this[_state$1] = 1;
          this[_idleMark] = false;
          this[_httpServer][_markIdle](this);
          this[_subscription$0].resume();
        } else {
          this.destroy();
        }
      }, SocketToNull()), {onError: dart.fn(_ => {
          this.destroy();
        }, dynamicToNull())});
      outgoing.ignoreBody = request.method === "HEAD";
      response[_httpRequest] = request;
      this[_httpServer][_handleRequest](request);
    }, _HttpIncomingToNull()), {onDone: dart.fn(() => {
        this.destroy();
      }, VoidToNull()), onError: dart.fn(error => {
        this.destroy();
      }, dynamicToNull())});
  }).prototype = _http._HttpConnection.prototype;
  dart.addTypeTests(_http._HttpConnection);
  dart.setMethodSignature(_http._HttpConnection, () => ({
    __proto__: dart.getMethods(_http._HttpConnection.__proto__),
    markIdle: dart.fnType(dart.void, []),
    destroy: dart.fnType(dart.void, []),
    detachSocket: dart.fnType(async.Future$(io.Socket), []),
    [_toJSON$]: dart.fnType(core.Map, [core.bool])
  }));
  dart.setGetterSignature(_http._HttpConnection, () => ({
    __proto__: dart.getGetters(_http._HttpConnection.__proto__),
    isMarkedIdle: core.bool,
    connectionInfo: _http.HttpConnectionInfo,
    [_isActive]: core.bool,
    [_isIdle]: core.bool,
    [_isClosing]: core.bool,
    [_isDetached]: core.bool,
    [_serviceTypePath$]: core.String,
    [_serviceTypeName$]: core.String
  }));
  dart.setFieldSignature(_http._HttpConnection, () => ({
    __proto__: dart.getFields(_http._HttpConnection.__proto__),
    [_socket$]: dart.finalFieldType(dart.dynamic),
    [_httpServer]: dart.finalFieldType(_http._HttpServer),
    [_httpParser]: dart.finalFieldType(_http._HttpParser),
    [_state$1]: dart.fieldType(core.int),
    [_subscription$0]: dart.fieldType(async.StreamSubscription),
    [_idleMark]: dart.fieldType(core.bool),
    [_streamFuture]: dart.fieldType(async.Future)
  }));
  dart.setBaseClass(_http._HttpConnection.__proto__, collection.LinkedListEntry$(_http._HttpConnection));
  dart.defineLazy(_http._HttpConnection, {
    /*_http._HttpConnection._ACTIVE*/get _ACTIVE() {
      return 0;
    },
    /*_http._HttpConnection._IDLE*/get _IDLE() {
      return 1;
    },
    /*_http._HttpConnection._CLOSING*/get _CLOSING() {
      return 2;
    },
    /*_http._HttpConnection._DETACHED*/get _DETACHED() {
      return 3;
    },
    /*_http._HttpConnection._connections*/get _connections() {
      return new (IdentityMapOfint$_HttpConnection()).new();
    },
    set _connections(_) {}
  });
  const _serverSocket = Symbol('_serverSocket');
  const _closeServer = Symbol('_closeServer');
  const _activeConnections = Symbol('_activeConnections');
  const _idleConnections = Symbol('_idleConnections');
  let const$93;
  let const$94;
  const _maybePerformCleanup$ = Symbol('_maybePerformCleanup');
  const Stream__ServiceObject$ = class Stream__ServiceObject extends async.Stream$(_http.HttpRequest) {};
  (Stream__ServiceObject$.new = function() {
    _http._ServiceObject.new.call(this);
    Stream__ServiceObject$.__proto__.new.call(this);
  }).prototype = Stream__ServiceObject$.prototype;
  (Stream__ServiceObject$._internal = function() {
    _http._ServiceObject.new.call(this);
    Stream__ServiceObject$.__proto__._internal.call(this);
  }).prototype = Stream__ServiceObject$.prototype;
  (Stream__ServiceObject$.empty = function() {
    _http._ServiceObject.new.call(this);
    Stream__ServiceObject$.__proto__.empty.call(this);
  }).prototype = Stream__ServiceObject$.prototype;
  (Stream__ServiceObject$.fromFuture = function(future) {
    _http._ServiceObject.new.call(this);
    Stream__ServiceObject$.__proto__.fromFuture.call(this, future);
  }).prototype = Stream__ServiceObject$.prototype;
  (Stream__ServiceObject$.fromFutures = function(futures) {
    _http._ServiceObject.new.call(this);
    Stream__ServiceObject$.__proto__.fromFutures.call(this, futures);
  }).prototype = Stream__ServiceObject$.prototype;
  (Stream__ServiceObject$.fromIterable = function(elements) {
    _http._ServiceObject.new.call(this);
    Stream__ServiceObject$.__proto__.fromIterable.call(this, elements);
  }).prototype = Stream__ServiceObject$.prototype;
  (Stream__ServiceObject$.periodic = function(period, computation) {
    _http._ServiceObject.new.call(this);
    Stream__ServiceObject$.__proto__.periodic.call(this, period, computation);
  }).prototype = Stream__ServiceObject$.prototype;
  (Stream__ServiceObject$.eventTransformed = function(source, mapSink) {
    _http._ServiceObject.new.call(this);
    Stream__ServiceObject$.__proto__.eventTransformed.call(this, source, mapSink);
  }).prototype = Stream__ServiceObject$.prototype;
  dart.applyMixin(Stream__ServiceObject$, _http._ServiceObject);
  _http._HttpServer = class _HttpServer extends Stream__ServiceObject$ {
    static bind(address, port, backlog, v6Only, shared) {
      return FutureOfHttpServer()._check(io.ServerSocket.bind(address, port, {backlog: backlog, v6Only: v6Only, shared: shared}).then(_http.HttpServer, dart.fn(socket => new _http._HttpServer.__(socket, true), ServerSocketTo_HttpServer())));
    }
    static bindSecure(address, port, context, backlog, v6Only, requestClientCertificate, shared) {
      return FutureOfHttpServer()._check(io.SecureServerSocket.bind(address, port, context, {backlog: backlog, v6Only: v6Only, requestClientCertificate: requestClientCertificate, shared: shared}).then(_http.HttpServer, dart.fn(socket => new _http._HttpServer.__(socket, true), SecureServerSocketTo_HttpServer())));
    }
    static _initDefaultResponseHeaders() {
      let defaultResponseHeaders = new _http._HttpHeaders.new("1.1");
      defaultResponseHeaders.contentType = _http.ContentType.text;
      defaultResponseHeaders.set("X-Frame-Options", "SAMEORIGIN");
      defaultResponseHeaders.set("X-Content-Type-Options", "nosniff");
      defaultResponseHeaders.set("X-XSS-Protection", "1; mode=block");
      return defaultResponseHeaders;
    }
    get idleTimeout() {
      return this[_idleTimeout];
    }
    set idleTimeout(duration) {
      if (this[_idleTimer] != null) {
        this[_idleTimer].cancel();
        this[_idleTimer] = null;
      }
      this[_idleTimeout] = duration;
      if (this[_idleTimeout] != null) {
        this[_idleTimer] = async.Timer.periodic(this[_idleTimeout], dart.fn(_ => {
          for (let idle of this[_idleConnections].toList()) {
            if (dart.test(idle.isMarkedIdle)) {
              idle.destroy();
            } else {
              idle.markIdle();
            }
          }
        }, TimerToNull()));
      }
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      dart.dsend(this[_serverSocket], 'listen', [dart.fn(socket => {
          socket.setOption(io.SocketOption.tcpNoDelay, true);
          let connection = new _http._HttpConnection.new(socket, this);
          this[_idleConnections].add(connection);
        }, SocketToNull())], {onError: dart.fn((error, stackTrace) => {
          if (!io.HandshakeException.is(error)) {
            this[_controller$1].addError(error, core.StackTrace._check(stackTrace));
          }
        }, dynamicAnddynamicToNull()), onDone: dart.bind(this[_controller$1], 'close')});
      return this[_controller$1].stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
    close(opts) {
      let force = opts && 'force' in opts ? opts.force : false;
      this.closed = true;
      let result = null;
      if (this[_serverSocket] != null && dart.test(this[_closeServer])) {
        result = async.Future._check(dart.dsend(this[_serverSocket], 'close', []));
      } else {
        result = async.Future.value();
      }
      this.idleTimeout = null;
      if (dart.test(force)) {
        for (let c of this[_activeConnections].toList()) {
          c.destroy();
        }
        if (!dart.test(this[_activeConnections].isEmpty)) dart.assertFailed();
      }
      for (let c of this[_idleConnections].toList()) {
        c.destroy();
      }
      this[_maybePerformCleanup$]();
      return result;
    }
    [_maybePerformCleanup$]() {
      if (dart.test(this.closed) && dart.test(this[_idleConnections].isEmpty) && dart.test(this[_activeConnections].isEmpty) && this[_sessionManagerInstance] != null) {
        this[_sessionManagerInstance].close();
        this[_sessionManagerInstance] = null;
        _http._HttpServer._servers[$remove](this[_serviceId$]);
      }
    }
    get port() {
      if (dart.test(this.closed)) dart.throw(new _http.HttpException.new("HttpServer is not bound to a socket"));
      return core.int._check(dart.dload(this[_serverSocket], 'port'));
    }
    get address() {
      if (dart.test(this.closed)) dart.throw(new _http.HttpException.new("HttpServer is not bound to a socket"));
      return io.InternetAddress._check(dart.dload(this[_serverSocket], 'address'));
    }
    set sessionTimeout(timeout) {
      this[_sessionManager].sessionTimeout = timeout;
    }
    [_handleRequest](request) {
      if (!dart.test(this.closed)) {
        this[_controller$1].add(request);
      } else {
        request[_httpConnection].destroy();
      }
    }
    [_connectionClosed](connection) {
      connection.unlink();
      this[_maybePerformCleanup$]();
    }
    [_markIdle](connection) {
      this[_activeConnections].remove(connection);
      this[_idleConnections].add(connection);
    }
    [_markActive](connection) {
      this[_idleConnections].remove(connection);
      this[_activeConnections].add(connection);
    }
    get [_sessionManager]() {
      if (this[_sessionManagerInstance] == null) {
        this[_sessionManagerInstance] = new _http._HttpSessionManager.new();
      }
      return this[_sessionManagerInstance];
    }
    connectionsInfo() {
      let result = new _http.HttpConnectionsInfo.new();
      result.total = dart.notNull(this[_activeConnections].length) + dart.notNull(this[_idleConnections].length);
      this[_activeConnections].forEach(dart.fn(conn => {
        if (dart.test(conn[_isActive])) {
          result.active = dart.notNull(result.active) + 1;
        } else {
          if (!dart.test(conn[_isClosing])) dart.assertFailed();
          result.closing = dart.notNull(result.closing) + 1;
        }
      }, _HttpConnectionToNull()));
      this[_idleConnections].forEach(dart.fn(conn => {
        result.idle = dart.notNull(result.idle) + 1;
        if (!dart.test(conn[_isIdle])) dart.assertFailed();
      }, _HttpConnectionToNull()));
      return result;
    }
    get [_serviceTypePath$]() {
      return "io/http/servers";
    }
    get [_serviceTypeName$]() {
      return "HttpServer";
    }
    [_toJSON$](ref) {
      let r = new (IdentityMapOfString$dynamic()).from(["id", this[_servicePath$], "type", this[_serviceType$](ref), "name", dart.str(this.address.host) + ":" + dart.str(this.port), "user_name", dart.str(this.address.host) + ":" + dart.str(this.port)]);
      if (dart.test(ref)) {
        return r;
      }
      try {
        r[$_set]("socket", dart.dsend(this[_serverSocket], _toJSON$, [true]));
      } catch (e) {
        let _ = dart.getThrown(e);
        r[$_set]("socket", new (IdentityMapOfString$String()).from(["id", this[_servicePath$], "type", "@Socket", "name", "UserSocket", "user_name", "UserSocket"]));
      }
      r[$_set]("port", this.port);
      r[$_set]("address", this.address.host);
      r[$_set]("active", IterableOfMap()._check(this[_activeConnections].map(core.Map, dart.fn(c => c[_toJSON$](true), _HttpConnectionToMap())))[$toList]());
      r[$_set]("idle", IterableOfMap()._check(this[_idleConnections].map(core.Map, dart.fn(c => c[_toJSON$](true), _HttpConnectionToMap())))[$toList]());
      r[$_set]("closed", this.closed);
      return r;
    }
  };
  (_http._HttpServer.__ = function(serverSocket, closeServer) {
    this.serverHeader = null;
    this.defaultResponseHeaders = _http._HttpServer._initDefaultResponseHeaders();
    this.autoCompress = false;
    this[_idleTimeout] = null;
    this[_idleTimer] = null;
    this[_sessionManagerInstance] = null;
    this.closed = false;
    this[_activeConnections] = new (LinkedListOf_HttpConnection()).new();
    this[_idleConnections] = new (LinkedListOf_HttpConnection()).new();
    this[_controller$1] = null;
    this[_serverSocket] = serverSocket;
    this[_closeServer] = closeServer;
    _http._HttpServer.__proto__.new.call(this);
    this[_controller$1] = StreamControllerOfHttpRequest().new({sync: true, onCancel: dart.bind(this, 'close')});
    this.idleTimeout = const$93 || (const$93 = dart.const(new core.Duration.new({seconds: 120})));
    _http._HttpServer._servers[$_set](this[_serviceId$], this);
  }).prototype = _http._HttpServer.prototype;
  (_http._HttpServer.listenOn = function(serverSocket) {
    this.serverHeader = null;
    this.defaultResponseHeaders = _http._HttpServer._initDefaultResponseHeaders();
    this.autoCompress = false;
    this[_idleTimeout] = null;
    this[_idleTimer] = null;
    this[_sessionManagerInstance] = null;
    this.closed = false;
    this[_activeConnections] = new (LinkedListOf_HttpConnection()).new();
    this[_idleConnections] = new (LinkedListOf_HttpConnection()).new();
    this[_controller$1] = null;
    this[_serverSocket] = serverSocket;
    this[_closeServer] = false;
    _http._HttpServer.__proto__.new.call(this);
    this[_controller$1] = StreamControllerOfHttpRequest().new({sync: true, onCancel: dart.bind(this, 'close')});
    this.idleTimeout = const$94 || (const$94 = dart.const(new core.Duration.new({seconds: 120})));
    _http._HttpServer._servers[$_set](this[_serviceId$], this);
  }).prototype = _http._HttpServer.prototype;
  dart.addTypeTests(_http._HttpServer);
  _http._HttpServer[dart.implements] = () => [_http.HttpServer];
  dart.setMethodSignature(_http._HttpServer, () => ({
    __proto__: dart.getMethods(_http._HttpServer.__proto__),
    listen: dart.fnType(async.StreamSubscription$(_http.HttpRequest), [dart.fnType(dart.void, [_http.HttpRequest])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
    close: dart.fnType(async.Future, [], {force: core.bool}),
    [_maybePerformCleanup$]: dart.fnType(dart.void, []),
    [_handleRequest]: dart.fnType(dart.void, [_http._HttpRequest]),
    [_connectionClosed]: dart.fnType(dart.void, [_http._HttpConnection]),
    [_markIdle]: dart.fnType(dart.void, [_http._HttpConnection]),
    [_markActive]: dart.fnType(dart.void, [_http._HttpConnection]),
    connectionsInfo: dart.fnType(_http.HttpConnectionsInfo, []),
    [_toJSON$]: dart.fnType(core.Map$(core.String, dart.dynamic), [core.bool])
  }));
  dart.setGetterSignature(_http._HttpServer, () => ({
    __proto__: dart.getGetters(_http._HttpServer.__proto__),
    idleTimeout: core.Duration,
    port: core.int,
    address: io.InternetAddress,
    [_sessionManager]: _http._HttpSessionManager,
    [_serviceTypePath$]: core.String,
    [_serviceTypeName$]: core.String
  }));
  dart.setSetterSignature(_http._HttpServer, () => ({
    __proto__: dart.getSetters(_http._HttpServer.__proto__),
    idleTimeout: core.Duration,
    sessionTimeout: core.int
  }));
  dart.setFieldSignature(_http._HttpServer, () => ({
    __proto__: dart.getFields(_http._HttpServer.__proto__),
    serverHeader: dart.fieldType(core.String),
    defaultResponseHeaders: dart.finalFieldType(_http.HttpHeaders),
    autoCompress: dart.fieldType(core.bool),
    [_idleTimeout]: dart.fieldType(core.Duration),
    [_idleTimer]: dart.fieldType(async.Timer),
    [_sessionManagerInstance]: dart.fieldType(_http._HttpSessionManager),
    closed: dart.fieldType(core.bool),
    [_serverSocket]: dart.finalFieldType(dart.dynamic),
    [_closeServer]: dart.finalFieldType(core.bool),
    [_activeConnections]: dart.finalFieldType(LinkedListOf_HttpConnection()),
    [_idleConnections]: dart.finalFieldType(LinkedListOf_HttpConnection()),
    [_controller$1]: dart.fieldType(StreamControllerOfHttpRequest())
  }));
  dart.defineLazy(_http._HttpServer, {
    /*_http._HttpServer._servers*/get _servers() {
      return new (IdentityMapOfint$_HttpServer()).new();
    },
    set _servers(_) {}
  });
  let const$95;
  let const$96;
  _http._ProxyConfiguration = class _ProxyConfiguration extends core.Object {};
  (_http._ProxyConfiguration.new = function(configuration) {
    this.proxies = JSArrayOf_Proxy().of([]);
    if (configuration == null) {
      dart.throw(new _http.HttpException.new("Invalid proxy configuration " + dart.str(configuration)));
    }
    let list = configuration[$split](";");
    list[$forEach](dart.fn(proxy => {
      proxy = proxy[$trim]();
      if (!proxy[$isEmpty]) {
        if (proxy[$startsWith]("PROXY ")) {
          let username = null;
          let password = null;
          proxy = proxy[$substring]("PROXY ".length)[$trim]();
          let at = proxy[$indexOf]("@");
          if (at !== -1) {
            let userinfo = proxy[$substring](0, at)[$trim]();
            proxy = proxy[$substring](at + 1)[$trim]();
            let colon = userinfo[$indexOf](":");
            if (colon === -1 || colon === 0 || colon === proxy.length - 1) {
              dart.throw(new _http.HttpException.new("Invalid proxy configuration " + dart.str(configuration)));
            }
            username = userinfo[$substring](0, colon)[$trim]();
            password = userinfo[$substring](colon + 1)[$trim]();
          }
          let colon = proxy[$lastIndexOf](":");
          if (colon === -1 || colon === 0 || colon === proxy.length - 1) {
            dart.throw(new _http.HttpException.new("Invalid proxy configuration " + dart.str(configuration)));
          }
          let host = proxy[$substring](0, colon)[$trim]();
          if (host[$startsWith]("[") && host[$endsWith]("]")) {
            host = host[$substring](1, host.length - 1);
          }
          let portString = proxy[$substring](colon + 1)[$trim]();
          let port = null;
          try {
            port = core.int.parse(portString);
          } catch (e$) {
            let e = dart.getThrown(e$);
            if (core.FormatException.is(e)) {
              dart.throw(new _http.HttpException.new("Invalid proxy configuration " + dart.str(configuration) + ", " + ("invalid port '" + portString + "'")));
            } else
              throw e$;
          }
          this.proxies[$add](new _http._Proxy.new(host, port, username, password));
        } else if (proxy[$trim]() === "DIRECT") {
          this.proxies[$add](new _http._Proxy.direct());
        } else {
          dart.throw(new _http.HttpException.new("Invalid proxy configuration " + dart.str(configuration)));
        }
      }
    }, StringToNull()));
  }).prototype = _http._ProxyConfiguration.prototype;
  (_http._ProxyConfiguration.direct = function() {
    this.proxies = const$96 || (const$96 = dart.constList([const$95 || (const$95 = dart.const(new _http._Proxy.direct()))], _http._Proxy));
  }).prototype = _http._ProxyConfiguration.prototype;
  dart.addTypeTests(_http._ProxyConfiguration);
  dart.setFieldSignature(_http._ProxyConfiguration, () => ({
    __proto__: dart.getFields(_http._ProxyConfiguration.__proto__),
    proxies: dart.finalFieldType(ListOf_Proxy())
  }));
  dart.defineLazy(_http._ProxyConfiguration, {
    /*_http._ProxyConfiguration.PROXY_PREFIX*/get PROXY_PREFIX() {
      return "PROXY ";
    },
    /*_http._ProxyConfiguration.DIRECT_PREFIX*/get DIRECT_PREFIX() {
      return "DIRECT";
    }
  });
  _http._Proxy = class _Proxy extends core.Object {
    get isAuthenticated() {
      return this.username != null;
    }
  };
  (_http._Proxy.new = function(host, port, username, password) {
    this.host = host;
    this.port = port;
    this.username = username;
    this.password = password;
    this.isDirect = false;
  }).prototype = _http._Proxy.prototype;
  (_http._Proxy.direct = function() {
    this.host = null;
    this.port = null;
    this.username = null;
    this.password = null;
    this.isDirect = true;
  }).prototype = _http._Proxy.prototype;
  dart.addTypeTests(_http._Proxy);
  dart.setGetterSignature(_http._Proxy, () => ({
    __proto__: dart.getGetters(_http._Proxy.__proto__),
    isAuthenticated: core.bool
  }));
  dart.setFieldSignature(_http._Proxy, () => ({
    __proto__: dart.getFields(_http._Proxy.__proto__),
    host: dart.finalFieldType(core.String),
    port: dart.finalFieldType(core.int),
    username: dart.finalFieldType(core.String),
    password: dart.finalFieldType(core.String),
    isDirect: dart.finalFieldType(core.bool)
  }));
  _http._HttpConnectionInfo = class _HttpConnectionInfo extends core.Object {
    static create(socket) {
      if (socket == null) return null;
      try {
        let info = new _http._HttpConnectionInfo.new();
        info.remoteAddress = socket.remoteAddress;
        info.remotePort = socket.remotePort;
        info.localPort = socket.port;
        return info;
      } catch (e$) {
        let e = dart.getThrown(e$);
      }
      return null;
    }
  };
  (_http._HttpConnectionInfo.new = function() {
    this.remoteAddress = null;
    this.remotePort = null;
    this.localPort = null;
  }).prototype = _http._HttpConnectionInfo.prototype;
  dart.addTypeTests(_http._HttpConnectionInfo);
  _http._HttpConnectionInfo[dart.implements] = () => [_http.HttpConnectionInfo];
  dart.setFieldSignature(_http._HttpConnectionInfo, () => ({
    __proto__: dart.getFields(_http._HttpConnectionInfo.__proto__),
    remoteAddress: dart.fieldType(io.InternetAddress),
    remotePort: dart.fieldType(core.int),
    localPort: dart.fieldType(core.int)
  }));
  _http._DetachedSocket = class _DetachedSocket extends async.Stream$(core.List$(core.int)) {
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      return this[_incoming].listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
    get encoding() {
      return this[_socket$].encoding;
    }
    set encoding(value) {
      this[_socket$].encoding = value;
    }
    write(obj) {
      this[_socket$].write(obj);
    }
    writeln(obj) {
      if (obj === void 0) obj = "";
      this[_socket$].writeln(obj);
    }
    writeCharCode(charCode) {
      this[_socket$].writeCharCode(charCode);
    }
    writeAll(objects, separator) {
      if (separator === void 0) separator = "";
      this[_socket$].writeAll(objects, separator);
    }
    add(bytes) {
      ListOfint()._check(bytes);
      this[_socket$].add(bytes);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      return this[_socket$].addError(error, stackTrace);
    }
    addStream(stream) {
      StreamOfListOfint()._check(stream);
      return this[_socket$].addStream(stream);
    }
    destroy() {
      this[_socket$].destroy();
    }
    flush() {
      return this[_socket$].flush();
    }
    close() {
      return this[_socket$].close();
    }
    get done() {
      return this[_socket$].done;
    }
    get port() {
      return this[_socket$].port;
    }
    get address() {
      return this[_socket$].address;
    }
    get remoteAddress() {
      return this[_socket$].remoteAddress;
    }
    get remotePort() {
      return this[_socket$].remotePort;
    }
    setOption(option, enabled) {
      return this[_socket$].setOption(option, enabled);
    }
    [_toJSON$](ref) {
      return core.Map._check(dart.dsend(this[_socket$], _toJSON$, [ref]));
    }
  };
  (_http._DetachedSocket.new = function(socket, incoming) {
    this[_socket$] = socket;
    this[_incoming] = incoming;
    _http._DetachedSocket.__proto__.new.call(this);
  }).prototype = _http._DetachedSocket.prototype;
  dart.addTypeTests(_http._DetachedSocket);
  _http._DetachedSocket[dart.implements] = () => [io.Socket];
  dart.setMethodSignature(_http._DetachedSocket, () => ({
    __proto__: dart.getMethods(_http._DetachedSocket.__proto__),
    listen: dart.fnType(async.StreamSubscription$(core.List$(core.int)), [dart.fnType(dart.void, [core.List$(core.int)])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
    write: dart.fnType(dart.void, [core.Object]),
    writeln: dart.fnType(dart.void, [], [core.Object]),
    writeCharCode: dart.fnType(dart.void, [core.int]),
    writeAll: dart.fnType(dart.void, [core.Iterable], [core.String]),
    add: dart.fnType(dart.void, [core.Object]),
    addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
    addStream: dart.fnType(async.Future, [core.Object]),
    destroy: dart.fnType(dart.void, []),
    flush: dart.fnType(async.Future, []),
    close: dart.fnType(async.Future, []),
    setOption: dart.fnType(core.bool, [io.SocketOption, core.bool]),
    [_toJSON$]: dart.fnType(core.Map, [core.bool])
  }));
  dart.setGetterSignature(_http._DetachedSocket, () => ({
    __proto__: dart.getGetters(_http._DetachedSocket.__proto__),
    encoding: convert.Encoding,
    done: async.Future,
    port: core.int,
    address: io.InternetAddress,
    remoteAddress: io.InternetAddress,
    remotePort: core.int
  }));
  dart.setSetterSignature(_http._DetachedSocket, () => ({
    __proto__: dart.getSetters(_http._DetachedSocket.__proto__),
    encoding: convert.Encoding
  }));
  dart.setFieldSignature(_http._DetachedSocket, () => ({
    __proto__: dart.getFields(_http._DetachedSocket.__proto__),
    [_incoming]: dart.finalFieldType(StreamOfListOfint()),
    [_socket$]: dart.finalFieldType(io.Socket)
  }));
  const _scheme = Symbol('_scheme');
  _http._AuthenticationScheme = class _AuthenticationScheme extends core.Object {
    static fromString(scheme) {
      if (scheme[$toLowerCase]() === "basic") return _http._AuthenticationScheme.BASIC;
      if (scheme[$toLowerCase]() === "digest") return _http._AuthenticationScheme.DIGEST;
      return _http._AuthenticationScheme.UNKNOWN;
    }
    toString() {
      if (this._equals(_http._AuthenticationScheme.BASIC)) return "Basic";
      if (this._equals(_http._AuthenticationScheme.DIGEST)) return "Digest";
      return "Unknown";
    }
  };
  (_http._AuthenticationScheme.new = function(scheme) {
    this[_scheme] = scheme;
  }).prototype = _http._AuthenticationScheme.prototype;
  dart.addTypeTests(_http._AuthenticationScheme);
  dart.setFieldSignature(_http._AuthenticationScheme, () => ({
    __proto__: dart.getFields(_http._AuthenticationScheme.__proto__),
    [_scheme]: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionMethods(_http._AuthenticationScheme, ['toString']);
  dart.defineLazy(_http._AuthenticationScheme, {
    /*_http._AuthenticationScheme.UNKNOWN*/get UNKNOWN() {
      return dart.const(new _http._AuthenticationScheme.new(-1));
    },
    /*_http._AuthenticationScheme.BASIC*/get BASIC() {
      return dart.const(new _http._AuthenticationScheme.new(0));
    },
    /*_http._AuthenticationScheme.DIGEST*/get DIGEST() {
      return dart.const(new _http._AuthenticationScheme.new(1));
    }
  });
  _http._Credentials = class _Credentials extends core.Object {
    get scheme() {
      return this.credentials.scheme;
    }
  };
  (_http._Credentials.new = function(credentials, realm) {
    this.used = false;
    this.ha1 = null;
    this.nonce = null;
    this.algorithm = null;
    this.qop = null;
    this.nonceCount = null;
    this.credentials = credentials;
    this.realm = realm;
    if (dart.equals(this.credentials.scheme, _http._AuthenticationScheme.DIGEST)) {
      let creds = _http._HttpClientDigestCredentials._check(this.credentials);
      let hasher = new _http._MD5.new();
      hasher.add(convert.utf8.encode(creds.username));
      hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
      hasher.add(this.realm[$codeUnits]);
      hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
      hasher.add(convert.utf8.encode(creds.password));
      this.ha1 = _http._CryptoUtils.bytesToHex(hasher.close());
    }
  }).prototype = _http._Credentials.prototype;
  dart.addTypeTests(_http._Credentials);
  dart.setGetterSignature(_http._Credentials, () => ({
    __proto__: dart.getGetters(_http._Credentials.__proto__),
    scheme: _http._AuthenticationScheme
  }));
  dart.setFieldSignature(_http._Credentials, () => ({
    __proto__: dart.getFields(_http._Credentials.__proto__),
    credentials: dart.fieldType(_http._HttpClientCredentials),
    realm: dart.fieldType(core.String),
    used: dart.fieldType(core.bool),
    ha1: dart.fieldType(core.String),
    nonce: dart.fieldType(core.String),
    algorithm: dart.fieldType(core.String),
    qop: dart.fieldType(core.String),
    nonceCount: dart.fieldType(core.int)
  }));
  _http._SiteCredentials = class _SiteCredentials extends _http._Credentials {
    applies(uri, scheme) {
      if (scheme != null && !dart.equals(this.credentials.scheme, scheme)) return false;
      if (uri.host != this.uri.host) return false;
      let thisPort = this.uri.port === 0 ? _http.HttpClient.defaultHttpPort : this.uri.port;
      let otherPort = uri.port === 0 ? _http.HttpClient.defaultHttpPort : uri.port;
      if (otherPort != thisPort) return false;
      return uri.path[$startsWith](this.uri.path);
    }
    authorize(request) {
      if (dart.equals(this.credentials.scheme, _http._AuthenticationScheme.DIGEST) && this.nonce == null) {
        return;
      }
      this.credentials.authorize(this, request);
      this.used = true;
    }
  };
  (_http._SiteCredentials.new = function(uri, realm, creds) {
    this.uri = uri;
    _http._SiteCredentials.__proto__.new.call(this, creds, core.String._check(realm));
  }).prototype = _http._SiteCredentials.prototype;
  dart.addTypeTests(_http._SiteCredentials);
  dart.setMethodSignature(_http._SiteCredentials, () => ({
    __proto__: dart.getMethods(_http._SiteCredentials.__proto__),
    applies: dart.fnType(core.bool, [core.Uri, _http._AuthenticationScheme]),
    authorize: dart.fnType(dart.void, [_http.HttpClientRequest])
  }));
  dart.setFieldSignature(_http._SiteCredentials, () => ({
    __proto__: dart.getFields(_http._SiteCredentials.__proto__),
    uri: dart.fieldType(core.Uri)
  }));
  _http._ProxyCredentials = class _ProxyCredentials extends _http._Credentials {
    applies(proxy, scheme) {
      if (scheme != null && !dart.equals(this.credentials.scheme, scheme)) return false;
      return proxy.host == this.host && proxy.port == this.port;
    }
    authorize(request) {
      if (dart.equals(this.credentials.scheme, _http._AuthenticationScheme.DIGEST) && this.nonce == null) {
        return;
      }
      this.credentials.authorizeProxy(this, request);
    }
  };
  (_http._ProxyCredentials.new = function(host, port, realm, creds) {
    this.host = host;
    this.port = port;
    _http._ProxyCredentials.__proto__.new.call(this, creds, core.String._check(realm));
  }).prototype = _http._ProxyCredentials.prototype;
  dart.addTypeTests(_http._ProxyCredentials);
  dart.setMethodSignature(_http._ProxyCredentials, () => ({
    __proto__: dart.getMethods(_http._ProxyCredentials.__proto__),
    applies: dart.fnType(core.bool, [_http._Proxy, _http._AuthenticationScheme]),
    authorize: dart.fnType(dart.void, [_http.HttpClientRequest])
  }));
  dart.setFieldSignature(_http._ProxyCredentials, () => ({
    __proto__: dart.getFields(_http._ProxyCredentials.__proto__),
    host: dart.fieldType(core.String),
    port: dart.fieldType(core.int)
  }));
  _http._HttpClientCredentials = class _HttpClientCredentials extends core.Object {};
  (_http._HttpClientCredentials.new = function() {
  }).prototype = _http._HttpClientCredentials.prototype;
  dart.addTypeTests(_http._HttpClientCredentials);
  _http._HttpClientCredentials[dart.implements] = () => [_http.HttpClientCredentials];
  _http._HttpClientBasicCredentials = class _HttpClientBasicCredentials extends _http._HttpClientCredentials {
    get scheme() {
      return _http._AuthenticationScheme.BASIC;
    }
    authorization() {
      let auth = _http._CryptoUtils.bytesToBase64(convert.utf8.encode(dart.str(this.username) + ":" + dart.str(this.password)));
      return "Basic " + dart.str(auth);
    }
    authorize(_, request) {
      request.headers.set(_http.HttpHeaders.authorizationHeader, this.authorization());
    }
    authorizeProxy(_, request) {
      request.headers.set(_http.HttpHeaders.proxyAuthorizationHeader, this.authorization());
    }
  };
  (_http._HttpClientBasicCredentials.new = function(username, password) {
    this.username = username;
    this.password = password;
  }).prototype = _http._HttpClientBasicCredentials.prototype;
  dart.addTypeTests(_http._HttpClientBasicCredentials);
  _http._HttpClientBasicCredentials[dart.implements] = () => [_http.HttpClientBasicCredentials];
  dart.setMethodSignature(_http._HttpClientBasicCredentials, () => ({
    __proto__: dart.getMethods(_http._HttpClientBasicCredentials.__proto__),
    authorization: dart.fnType(core.String, []),
    authorize: dart.fnType(dart.void, [_http._Credentials, _http.HttpClientRequest]),
    authorizeProxy: dart.fnType(dart.void, [_http._ProxyCredentials, _http.HttpClientRequest])
  }));
  dart.setGetterSignature(_http._HttpClientBasicCredentials, () => ({
    __proto__: dart.getGetters(_http._HttpClientBasicCredentials.__proto__),
    scheme: _http._AuthenticationScheme
  }));
  dart.setFieldSignature(_http._HttpClientBasicCredentials, () => ({
    __proto__: dart.getFields(_http._HttpClientBasicCredentials.__proto__),
    username: dart.fieldType(core.String),
    password: dart.fieldType(core.String)
  }));
  _http._HttpClientDigestCredentials = class _HttpClientDigestCredentials extends _http._HttpClientCredentials {
    get scheme() {
      return _http._AuthenticationScheme.DIGEST;
    }
    authorization(credentials, request) {
      let requestUri = request[_requestUri]();
      let hasher = new _http._MD5.new();
      hasher.add(request.method[$codeUnits]);
      hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
      hasher.add(requestUri[$codeUnits]);
      let ha2 = _http._CryptoUtils.bytesToHex(hasher.close());
      let qop = null;
      let cnonce = null;
      let nc = null;
      let x = null;
      hasher = new _http._MD5.new();
      hasher.add(credentials.ha1[$codeUnits]);
      hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
      if (credentials.qop === "auth") {
        qop = credentials.qop;
        cnonce = _http._CryptoUtils.bytesToHex(_http._CryptoUtils.getRandomBytes(4));
        credentials.nonceCount = dart.notNull(credentials.nonceCount) + 1;
        nc = credentials.nonceCount[$toRadixString](16);
        nc = "00000000"[$substring](0, 8 - nc.length + 1) + dart.notNull(nc);
        hasher.add(credentials.nonce[$codeUnits]);
        hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
        hasher.add(nc[$codeUnits]);
        hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
        hasher.add(cnonce[$codeUnits]);
        hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
        hasher.add(credentials.qop[$codeUnits]);
        hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
        hasher.add(ha2[$codeUnits]);
      } else {
        hasher.add(credentials.nonce[$codeUnits]);
        hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
        hasher.add(ha2[$codeUnits]);
      }
      let response = _http._CryptoUtils.bytesToHex(hasher.close());
      let buffer = new core.StringBuffer.new();
      buffer.write("Digest ");
      buffer.write("username=\"" + dart.str(this.username) + "\"");
      buffer.write(", realm=\"" + dart.str(credentials.realm) + "\"");
      buffer.write(", nonce=\"" + dart.str(credentials.nonce) + "\"");
      buffer.write(", uri=\"" + dart.str(requestUri) + "\"");
      buffer.write(", algorithm=\"" + dart.str(credentials.algorithm) + "\"");
      if (qop === "auth") {
        buffer.write(", qop=\"" + dart.str(qop) + "\"");
        buffer.write(", cnonce=\"" + dart.str(cnonce) + "\"");
        buffer.write(", nc=\"" + dart.str(nc) + "\"");
      }
      buffer.write(", response=\"" + dart.str(response) + "\"");
      return buffer.toString();
    }
    authorize(credentials, request) {
      request.headers.set(_http.HttpHeaders.authorizationHeader, this.authorization(credentials, _http._HttpClientRequest._check(request)));
    }
    authorizeProxy(credentials, request) {
      request.headers.set(_http.HttpHeaders.proxyAuthorizationHeader, this.authorization(credentials, _http._HttpClientRequest._check(request)));
    }
  };
  (_http._HttpClientDigestCredentials.new = function(username, password) {
    this.username = username;
    this.password = password;
  }).prototype = _http._HttpClientDigestCredentials.prototype;
  dart.addTypeTests(_http._HttpClientDigestCredentials);
  _http._HttpClientDigestCredentials[dart.implements] = () => [_http.HttpClientDigestCredentials];
  dart.setMethodSignature(_http._HttpClientDigestCredentials, () => ({
    __proto__: dart.getMethods(_http._HttpClientDigestCredentials.__proto__),
    authorization: dart.fnType(core.String, [_http._Credentials, _http._HttpClientRequest]),
    authorize: dart.fnType(dart.void, [_http._Credentials, _http.HttpClientRequest]),
    authorizeProxy: dart.fnType(dart.void, [_http._ProxyCredentials, _http.HttpClientRequest])
  }));
  dart.setGetterSignature(_http._HttpClientDigestCredentials, () => ({
    __proto__: dart.getGetters(_http._HttpClientDigestCredentials.__proto__),
    scheme: _http._AuthenticationScheme
  }));
  dart.setFieldSignature(_http._HttpClientDigestCredentials, () => ({
    __proto__: dart.getFields(_http._HttpClientDigestCredentials.__proto__),
    username: dart.fieldType(core.String),
    password: dart.fieldType(core.String)
  }));
  _http._RedirectInfo = class _RedirectInfo extends core.Object {};
  (_http._RedirectInfo.new = function(statusCode, method, location) {
    this.statusCode = statusCode;
    this.method = method;
    this.location = location;
  }).prototype = _http._RedirectInfo.prototype;
  dart.addTypeTests(_http._RedirectInfo);
  _http._RedirectInfo[dart.implements] = () => [_http.RedirectInfo];
  dart.setFieldSignature(_http._RedirectInfo, () => ({
    __proto__: dart.getFields(_http._RedirectInfo.__proto__),
    statusCode: dart.finalFieldType(core.int),
    method: dart.finalFieldType(core.String),
    location: dart.finalFieldType(core.Uri)
  }));
  _http._getHttpVersion = function() {
    let version = io.Platform.version;
    let index = version[$indexOf](".", version[$indexOf](".") + 1);
    version = version[$substring](0, index);
    return "Dart/" + dart.str(version) + " (dart:io)";
  };
  _http._Const = class _Const extends core.Object {};
  (_http._Const.new = function() {
  }).prototype = _http._Const.prototype;
  dart.addTypeTests(_http._Const);
  dart.defineLazy(_http._Const, {
    /*_http._Const.HTTP*/get HTTP() {
      return dart.constList([72, 84, 84, 80], core.int);
    },
    /*_http._Const.HTTP1DOT*/get HTTP1DOT() {
      return dart.constList([72, 84, 84, 80, 47, 49, 46], core.int);
    },
    /*_http._Const.HTTP10*/get HTTP10() {
      return dart.constList([72, 84, 84, 80, 47, 49, 46, 48], core.int);
    },
    /*_http._Const.HTTP11*/get HTTP11() {
      return dart.constList([72, 84, 84, 80, 47, 49, 46, 49], core.int);
    },
    /*_http._Const.T*/get T() {
      return true;
    },
    /*_http._Const.F*/get F() {
      return false;
    },
    /*_http._Const.SEPARATOR_MAP*/get SEPARATOR_MAP() {
      return dart.constList([false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, true, false, false, false, false, false, true, true, false, false, true, false, false, true, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false], core.bool);
    }
  });
  _http._CharCode = class _CharCode extends core.Object {};
  (_http._CharCode.new = function() {
  }).prototype = _http._CharCode.prototype;
  dart.addTypeTests(_http._CharCode);
  dart.defineLazy(_http._CharCode, {
    /*_http._CharCode.HT*/get HT() {
      return 9;
    },
    /*_http._CharCode.LF*/get LF() {
      return 10;
    },
    /*_http._CharCode.CR*/get CR() {
      return 13;
    },
    /*_http._CharCode.SP*/get SP() {
      return 32;
    },
    /*_http._CharCode.AMPERSAND*/get AMPERSAND() {
      return 38;
    },
    /*_http._CharCode.COMMA*/get COMMA() {
      return 44;
    },
    /*_http._CharCode.DASH*/get DASH() {
      return 45;
    },
    /*_http._CharCode.SLASH*/get SLASH() {
      return 47;
    },
    /*_http._CharCode.ZERO*/get ZERO() {
      return 48;
    },
    /*_http._CharCode.ONE*/get ONE() {
      return 49;
    },
    /*_http._CharCode.COLON*/get COLON() {
      return 58;
    },
    /*_http._CharCode.SEMI_COLON*/get SEMI_COLON() {
      return 59;
    },
    /*_http._CharCode.EQUAL*/get EQUAL() {
      return 61;
    }
  });
  _http._State = class _State extends core.Object {};
  (_http._State.new = function() {
  }).prototype = _http._State.prototype;
  dart.addTypeTests(_http._State);
  dart.defineLazy(_http._State, {
    /*_http._State.START*/get START() {
      return 0;
    },
    /*_http._State.METHOD_OR_RESPONSE_HTTP_VERSION*/get METHOD_OR_RESPONSE_HTTP_VERSION() {
      return 1;
    },
    /*_http._State.RESPONSE_HTTP_VERSION*/get RESPONSE_HTTP_VERSION() {
      return 2;
    },
    /*_http._State.REQUEST_LINE_METHOD*/get REQUEST_LINE_METHOD() {
      return 3;
    },
    /*_http._State.REQUEST_LINE_URI*/get REQUEST_LINE_URI() {
      return 4;
    },
    /*_http._State.REQUEST_LINE_HTTP_VERSION*/get REQUEST_LINE_HTTP_VERSION() {
      return 5;
    },
    /*_http._State.REQUEST_LINE_ENDING*/get REQUEST_LINE_ENDING() {
      return 6;
    },
    /*_http._State.RESPONSE_LINE_STATUS_CODE*/get RESPONSE_LINE_STATUS_CODE() {
      return 7;
    },
    /*_http._State.RESPONSE_LINE_REASON_PHRASE*/get RESPONSE_LINE_REASON_PHRASE() {
      return 8;
    },
    /*_http._State.RESPONSE_LINE_ENDING*/get RESPONSE_LINE_ENDING() {
      return 9;
    },
    /*_http._State.HEADER_START*/get HEADER_START() {
      return 10;
    },
    /*_http._State.HEADER_FIELD*/get HEADER_FIELD() {
      return 11;
    },
    /*_http._State.HEADER_VALUE_START*/get HEADER_VALUE_START() {
      return 12;
    },
    /*_http._State.HEADER_VALUE*/get HEADER_VALUE() {
      return 13;
    },
    /*_http._State.HEADER_VALUE_FOLDING_OR_ENDING*/get HEADER_VALUE_FOLDING_OR_ENDING() {
      return 14;
    },
    /*_http._State.HEADER_VALUE_FOLD_OR_END*/get HEADER_VALUE_FOLD_OR_END() {
      return 15;
    },
    /*_http._State.HEADER_ENDING*/get HEADER_ENDING() {
      return 16;
    },
    /*_http._State.CHUNK_SIZE_STARTING_CR*/get CHUNK_SIZE_STARTING_CR() {
      return 17;
    },
    /*_http._State.CHUNK_SIZE_STARTING_LF*/get CHUNK_SIZE_STARTING_LF() {
      return 18;
    },
    /*_http._State.CHUNK_SIZE*/get CHUNK_SIZE() {
      return 19;
    },
    /*_http._State.CHUNK_SIZE_EXTENSION*/get CHUNK_SIZE_EXTENSION() {
      return 20;
    },
    /*_http._State.CHUNK_SIZE_ENDING*/get CHUNK_SIZE_ENDING() {
      return 21;
    },
    /*_http._State.CHUNKED_BODY_DONE_CR*/get CHUNKED_BODY_DONE_CR() {
      return 22;
    },
    /*_http._State.CHUNKED_BODY_DONE_LF*/get CHUNKED_BODY_DONE_LF() {
      return 23;
    },
    /*_http._State.BODY*/get BODY() {
      return 24;
    },
    /*_http._State.CLOSED*/get CLOSED() {
      return 25;
    },
    /*_http._State.UPGRADED*/get UPGRADED() {
      return 26;
    },
    /*_http._State.FAILURE*/get FAILURE() {
      return 27;
    },
    /*_http._State.FIRST_BODY_STATE*/get FIRST_BODY_STATE() {
      return 17;
    }
  });
  _http._HttpVersion = class _HttpVersion extends core.Object {};
  (_http._HttpVersion.new = function() {
  }).prototype = _http._HttpVersion.prototype;
  dart.addTypeTests(_http._HttpVersion);
  dart.defineLazy(_http._HttpVersion, {
    /*_http._HttpVersion.UNDETERMINED*/get UNDETERMINED() {
      return 0;
    },
    /*_http._HttpVersion.HTTP10*/get HTTP10() {
      return 1;
    },
    /*_http._HttpVersion.HTTP11*/get HTTP11() {
      return 2;
    }
  });
  _http._MessageType = class _MessageType extends core.Object {};
  (_http._MessageType.new = function() {
  }).prototype = _http._MessageType.prototype;
  dart.addTypeTests(_http._MessageType);
  dart.defineLazy(_http._MessageType, {
    /*_http._MessageType.UNDETERMINED*/get UNDETERMINED() {
      return 0;
    },
    /*_http._MessageType.REQUEST*/get REQUEST() {
      return 1;
    },
    /*_http._MessageType.RESPONSE*/get RESPONSE() {
      return 0;
    }
  });
  const _injectData = Symbol('_injectData');
  const _userOnData = Symbol('_userOnData');
  const _isCanceled$ = Symbol('_isCanceled');
  const _pauseCount$0 = Symbol('_pauseCount');
  const _scheduled = Symbol('_scheduled');
  const _maybeScheduleData = Symbol('_maybeScheduleData');
  _http._HttpDetachedStreamSubscription = class _HttpDetachedStreamSubscription extends core.Object {
    get isPaused() {
      return this[_subscription$0].isPaused;
    }
    asFuture(T, futureValue) {
      if (futureValue === void 0) futureValue = null;
      return async.Future$(T)._check(this[_subscription$0].asFuture(T, futureValue));
    }
    cancel() {
      this[_isCanceled$] = true;
      this[_injectData] = null;
      return this[_subscription$0].cancel();
    }
    onData(handleData) {
      this[_userOnData] = handleData;
      this[_subscription$0].onData(handleData);
    }
    onDone(handleDone) {
      this[_subscription$0].onDone(handleDone);
    }
    onError(handleError) {
      this[_subscription$0].onError(handleError);
    }
    pause(resumeSignal) {
      if (resumeSignal === void 0) resumeSignal = null;
      if (this[_injectData] == null) {
        this[_subscription$0].pause(resumeSignal);
      } else {
        this[_pauseCount$0] = dart.notNull(this[_pauseCount$0]) + 1;
        if (resumeSignal != null) {
          resumeSignal.whenComplete(dart.bind(this, 'resume'));
        }
      }
    }
    resume() {
      if (this[_injectData] == null) {
        this[_subscription$0].resume();
      } else {
        this[_pauseCount$0] = dart.notNull(this[_pauseCount$0]) - 1;
        this[_maybeScheduleData]();
      }
    }
    [_maybeScheduleData]() {
      if (dart.test(this[_scheduled])) return;
      if (this[_pauseCount$0] !== 0) return;
      this[_scheduled] = true;
      async.scheduleMicrotask(dart.fn(() => {
        this[_scheduled] = false;
        if (dart.notNull(this[_pauseCount$0]) > 0 || dart.test(this[_isCanceled$])) return;
        let data = this[_injectData];
        this[_injectData] = null;
        this[_subscription$0].resume();
        if (this[_userOnData] != null) {
          dart.dcall(this[_userOnData], [data]);
        }
      }, VoidToNull()));
    }
  };
  (_http._HttpDetachedStreamSubscription.new = function(subscription, injectData, userOnData) {
    this[_isCanceled$] = false;
    this[_pauseCount$0] = 1;
    this[_scheduled] = false;
    this[_subscription$0] = subscription;
    this[_injectData] = injectData;
    this[_userOnData] = userOnData;
  }).prototype = _http._HttpDetachedStreamSubscription.prototype;
  _http._HttpDetachedStreamSubscription.prototype[dart.isStreamSubscription] = true;
  dart.addTypeTests(_http._HttpDetachedStreamSubscription);
  _http._HttpDetachedStreamSubscription[dart.implements] = () => [StreamSubscriptionOfListOfint()];
  dart.setMethodSignature(_http._HttpDetachedStreamSubscription, () => ({
    __proto__: dart.getMethods(_http._HttpDetachedStreamSubscription.__proto__),
    asFuture: dart.gFnType(T => [async.Future$(T), [], [T]]),
    cancel: dart.fnType(async.Future, []),
    onData: dart.fnType(dart.void, [dart.fnType(dart.void, [core.List$(core.int)])]),
    onDone: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
    onError: dart.fnType(dart.void, [core.Function]),
    pause: dart.fnType(dart.void, [], [async.Future]),
    resume: dart.fnType(dart.void, []),
    [_maybeScheduleData]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(_http._HttpDetachedStreamSubscription, () => ({
    __proto__: dart.getGetters(_http._HttpDetachedStreamSubscription.__proto__),
    isPaused: core.bool
  }));
  dart.setFieldSignature(_http._HttpDetachedStreamSubscription, () => ({
    __proto__: dart.getFields(_http._HttpDetachedStreamSubscription.__proto__),
    [_subscription$0]: dart.fieldType(StreamSubscriptionOfListOfint()),
    [_injectData]: dart.fieldType(ListOfint()),
    [_isCanceled$]: dart.fieldType(core.bool),
    [_pauseCount$0]: dart.fieldType(core.int),
    [_userOnData]: dart.fieldType(core.Function),
    [_scheduled]: dart.fieldType(core.bool)
  }));
  _http._HttpDetachedIncoming = class _HttpDetachedIncoming extends async.Stream$(core.List$(core.int)) {
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      if (this.subscription != null) {
        this.subscription.onData(onData);
        this.subscription.onError(onError);
        this.subscription.onDone(onDone);
        if (this.bufferedData == null) {
          this.subscription.resume();
          return this.subscription;
        }
        let _ = new _http._HttpDetachedStreamSubscription.new(this.subscription, this.bufferedData, onData);
        _.resume();
        return _;
      } else {
        return StreamOfListOfint().fromIterable(JSArrayOfListOfint().of([this.bufferedData])).listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
      }
    }
  };
  (_http._HttpDetachedIncoming.new = function(subscription, bufferedData) {
    this.subscription = subscription;
    this.bufferedData = bufferedData;
    _http._HttpDetachedIncoming.__proto__.new.call(this);
  }).prototype = _http._HttpDetachedIncoming.prototype;
  dart.addTypeTests(_http._HttpDetachedIncoming);
  dart.setMethodSignature(_http._HttpDetachedIncoming, () => ({
    __proto__: dart.getMethods(_http._HttpDetachedIncoming.__proto__),
    listen: dart.fnType(async.StreamSubscription$(core.List$(core.int)), [dart.fnType(dart.void, [core.List$(core.int)])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool})
  }));
  dart.setFieldSignature(_http._HttpDetachedIncoming, () => ({
    __proto__: dart.getFields(_http._HttpDetachedIncoming.__proto__),
    subscription: dart.finalFieldType(StreamSubscriptionOfListOfint()),
    bufferedData: dart.finalFieldType(ListOfint())
  }));
  const _requestParser = Symbol('_requestParser');
  const _parserCalled = Symbol('_parserCalled');
  const _index$1 = Symbol('_index');
  const _httpVersionIndex = Symbol('_httpVersionIndex');
  const _messageType = Symbol('_messageType');
  const _statusCodeLength = Symbol('_statusCodeLength');
  const _method$ = Symbol('_method');
  const _uri_or_reason_phrase = Symbol('_uri_or_reason_phrase');
  const _headerField = Symbol('_headerField');
  const _headerValue = Symbol('_headerValue');
  const _httpVersion = Symbol('_httpVersion');
  const _connectionUpgrade = Symbol('_connectionUpgrade');
  const _chunked = Symbol('_chunked');
  const _noMessageBody = Symbol('_noMessageBody');
  const _remainingContent = Symbol('_remainingContent');
  const _socketSubscription$ = Symbol('_socketSubscription');
  const _paused = Symbol('_paused');
  const _bodyPaused = Symbol('_bodyPaused');
  const _bodyController = Symbol('_bodyController');
  const _pauseStateChanged = Symbol('_pauseStateChanged');
  const _reset = Symbol('_reset');
  const _onData$2 = Symbol('_onData');
  const _onDone$ = Symbol('_onDone');
  const _doParse = Symbol('_doParse');
  const _reportError$ = Symbol('_reportError');
  const _createIncoming = Symbol('_createIncoming');
  const _closeIncoming = Symbol('_closeIncoming');
  const _headersEnd = Symbol('_headersEnd');
  const _expect = Symbol('_expect');
  const _caseInsensitiveCompare = Symbol('_caseInsensitiveCompare');
  const _expectHexDigit = Symbol('_expectHexDigit');
  const _releaseBuffer = Symbol('_releaseBuffer');
  _http._HttpParser = class _HttpParser extends async.Stream$(_http._HttpIncoming) {
    static requestParser() {
      return new _http._HttpParser.__(true);
    }
    static responseParser() {
      return new _http._HttpParser.__(false);
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      return this[_controller$1].stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
    listenToStream(stream) {
      this[_socketSubscription$] = stream.listen(dart.bind(this, _onData$2), {onError: dart.bind(this[_controller$1], 'addError'), onDone: dart.bind(this, _onDone$)});
    }
    [_parse]() {
      try {
        this[_doParse]();
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        this[_state$1] = _http._State.FAILURE;
        this[_reportError$](e, s);
      }
    }
    [_headersEnd]() {
      this[_headers][_mutable] = false;
      this[_transferLength] = this[_headers].contentLength;
      if (dart.test(this[_chunked])) this[_transferLength] = -1;
      if (this[_messageType] === _http._MessageType.REQUEST && dart.notNull(this[_transferLength]) < 0 && this[_chunked] === false) {
        this[_transferLength] = 0;
      }
      if (dart.test(this[_connectionUpgrade])) {
        this[_state$1] = _http._State.UPGRADED;
        this[_transferLength] = 0;
      }
      this[_createIncoming](this[_transferLength]);
      if (dart.test(this[_requestParser])) {
        this[_incoming].method = core.String.fromCharCodes(this[_method$]);
        this[_incoming].uri = core.Uri.parse(core.String.fromCharCodes(this[_uri_or_reason_phrase]));
      } else {
        this[_incoming].statusCode = this[_statusCode];
        this[_incoming].reasonPhrase = core.String.fromCharCodes(this[_uri_or_reason_phrase]);
      }
      this[_method$][$clear]();
      this[_uri_or_reason_phrase][$clear]();
      if (dart.test(this[_connectionUpgrade])) {
        this[_incoming].upgraded = true;
        this[_parserCalled] = false;
        let tmp = this[_incoming];
        this[_closeIncoming]();
        this[_controller$1].add(tmp);
        return true;
      }
      if (this[_transferLength] === 0 || this[_messageType] === _http._MessageType.RESPONSE && dart.test(this[_noMessageBody])) {
        this[_reset]();
        let tmp = this[_incoming];
        this[_closeIncoming]();
        this[_controller$1].add(tmp);
        return false;
      } else if (dart.test(this[_chunked])) {
        this[_state$1] = _http._State.CHUNK_SIZE;
        this[_remainingContent] = 0;
      } else if (dart.notNull(this[_transferLength]) > 0) {
        this[_remainingContent] = this[_transferLength];
        this[_state$1] = _http._State.BODY;
      } else {
        this[_state$1] = _http._State.BODY;
      }
      this[_parserCalled] = false;
      this[_controller$1].add(this[_incoming]);
      return true;
    }
    [_doParse]() {
      if (!!dart.test(this[_parserCalled])) dart.assertFailed();
      this[_parserCalled] = true;
      if (this[_state$1] === _http._State.CLOSED) {
        dart.throw(new _http.HttpException.new("Data on closed connection"));
      }
      if (this[_state$1] === _http._State.FAILURE) {
        dart.throw(new _http.HttpException.new("Data on failed connection"));
      }
      while (this[_buffer$1] != null && dart.notNull(this[_index$1]) < dart.notNull(this[_buffer$1][$length]) && this[_state$1] !== _http._State.FAILURE && this[_state$1] !== _http._State.UPGRADED) {
        if (this[_incoming] != null && dart.test(this[_bodyPaused]) || this[_incoming] == null && dart.test(this[_paused])) {
          this[_parserCalled] = false;
          return;
        }
        let byte = this[_buffer$1][$_get]((() => {
          let x = this[_index$1];
          this[_index$1] = dart.notNull(x) + 1;
          return x;
        })());
        switch (this[_state$1]) {
          case _http._State.START:
          {
            if (byte == _http._Const.HTTP[$_get](0)) {
              this[_httpVersionIndex] = 1;
              this[_state$1] = _http._State.METHOD_OR_RESPONSE_HTTP_VERSION;
            } else {
              if (!dart.test(_http._HttpParser._isTokenChar(byte))) {
                dart.throw(new _http.HttpException.new("Invalid request method"));
              }
              this[_method$][$add](byte);
              if (!dart.test(this[_requestParser])) {
                dart.throw(new _http.HttpException.new("Invalid response line"));
              }
              this[_state$1] = _http._State.REQUEST_LINE_METHOD;
            }
            break;
          }
          case _http._State.METHOD_OR_RESPONSE_HTTP_VERSION:
          {
            if (dart.notNull(this[_httpVersionIndex]) < dart.notNull(_http._Const.HTTP[$length]) && byte == _http._Const.HTTP[$_get](this[_httpVersionIndex])) {
              this[_httpVersionIndex] = dart.notNull(this[_httpVersionIndex]) + 1;
            } else if (this[_httpVersionIndex] == _http._Const.HTTP[$length] && byte === _http._CharCode.SLASH) {
              this[_httpVersionIndex] = dart.notNull(this[_httpVersionIndex]) + 1;
              if (dart.test(this[_requestParser])) {
                dart.throw(new _http.HttpException.new("Invalid request line"));
              }
              this[_state$1] = _http._State.RESPONSE_HTTP_VERSION;
            } else {
              for (let i = 0; i < dart.notNull(this[_httpVersionIndex]); i++) {
                this[_method$][$add](_http._Const.HTTP[$_get](i));
              }
              if (byte === _http._CharCode.SP) {
                this[_state$1] = _http._State.REQUEST_LINE_URI;
              } else {
                this[_method$][$add](byte);
                this[_httpVersion] = _http._HttpVersion.UNDETERMINED;
                if (!dart.test(this[_requestParser])) {
                  dart.throw(new _http.HttpException.new("Invalid response line"));
                }
                this[_state$1] = _http._State.REQUEST_LINE_METHOD;
              }
            }
            break;
          }
          case _http._State.RESPONSE_HTTP_VERSION:
          {
            if (dart.notNull(this[_httpVersionIndex]) < dart.notNull(_http._Const.HTTP1DOT[$length])) {
              this[_expect](byte, _http._Const.HTTP1DOT[$_get](this[_httpVersionIndex]));
              this[_httpVersionIndex] = dart.notNull(this[_httpVersionIndex]) + 1;
            } else if (this[_httpVersionIndex] == _http._Const.HTTP1DOT[$length] && byte === _http._CharCode.ONE) {
              this[_httpVersion] = _http._HttpVersion.HTTP11;
              this[_persistentConnection] = true;
              this[_httpVersionIndex] = dart.notNull(this[_httpVersionIndex]) + 1;
            } else if (this[_httpVersionIndex] == _http._Const.HTTP1DOT[$length] && byte === _http._CharCode.ZERO) {
              this[_httpVersion] = _http._HttpVersion.HTTP10;
              this[_persistentConnection] = false;
              this[_httpVersionIndex] = dart.notNull(this[_httpVersionIndex]) + 1;
            } else if (this[_httpVersionIndex] === dart.notNull(_http._Const.HTTP1DOT[$length]) + 1) {
              this[_expect](byte, _http._CharCode.SP);
              this[_state$1] = _http._State.RESPONSE_LINE_STATUS_CODE;
            } else {
              dart.throw(new _http.HttpException.new("Invalid response line"));
            }
            break;
          }
          case _http._State.REQUEST_LINE_METHOD:
          {
            if (byte === _http._CharCode.SP) {
              this[_state$1] = _http._State.REQUEST_LINE_URI;
            } else {
              if (dart.test(_http._Const.SEPARATOR_MAP[$_get](byte)) || byte === _http._CharCode.CR || byte === _http._CharCode.LF) {
                dart.throw(new _http.HttpException.new("Invalid request method"));
              }
              this[_method$][$add](byte);
            }
            break;
          }
          case _http._State.REQUEST_LINE_URI:
          {
            if (byte === _http._CharCode.SP) {
              if (this[_uri_or_reason_phrase][$length] === 0) {
                dart.throw(new _http.HttpException.new("Invalid request URI"));
              }
              this[_state$1] = _http._State.REQUEST_LINE_HTTP_VERSION;
              this[_httpVersionIndex] = 0;
            } else {
              if (byte === _http._CharCode.CR || byte === _http._CharCode.LF) {
                dart.throw(new _http.HttpException.new("Invalid request URI"));
              }
              this[_uri_or_reason_phrase][$add](byte);
            }
            break;
          }
          case _http._State.REQUEST_LINE_HTTP_VERSION:
          {
            if (dart.notNull(this[_httpVersionIndex]) < dart.notNull(_http._Const.HTTP1DOT[$length])) {
              this[_expect](byte, _http._Const.HTTP11[$_get](this[_httpVersionIndex]));
              this[_httpVersionIndex] = dart.notNull(this[_httpVersionIndex]) + 1;
            } else if (this[_httpVersionIndex] == _http._Const.HTTP1DOT[$length]) {
              if (byte === _http._CharCode.ONE) {
                this[_httpVersion] = _http._HttpVersion.HTTP11;
                this[_persistentConnection] = true;
                this[_httpVersionIndex] = dart.notNull(this[_httpVersionIndex]) + 1;
              } else if (byte === _http._CharCode.ZERO) {
                this[_httpVersion] = _http._HttpVersion.HTTP10;
                this[_persistentConnection] = false;
                this[_httpVersionIndex] = dart.notNull(this[_httpVersionIndex]) + 1;
              } else {
                dart.throw(new _http.HttpException.new("Invalid response line"));
              }
            } else {
              if (byte === _http._CharCode.CR) {
                this[_state$1] = _http._State.REQUEST_LINE_ENDING;
              } else {
                this[_expect](byte, _http._CharCode.LF);
                this[_messageType] = _http._MessageType.REQUEST;
                this[_state$1] = _http._State.HEADER_START;
              }
            }
            break;
          }
          case _http._State.REQUEST_LINE_ENDING:
          {
            this[_expect](byte, _http._CharCode.LF);
            this[_messageType] = _http._MessageType.REQUEST;
            this[_state$1] = _http._State.HEADER_START;
            break;
          }
          case _http._State.RESPONSE_LINE_STATUS_CODE:
          {
            if (byte === _http._CharCode.SP) {
              this[_state$1] = _http._State.RESPONSE_LINE_REASON_PHRASE;
            } else if (byte === _http._CharCode.CR) {
              this[_state$1] = _http._State.RESPONSE_LINE_ENDING;
            } else {
              this[_statusCodeLength] = dart.notNull(this[_statusCodeLength]) + 1;
              if (dart.notNull(byte) < 48 && 57 < dart.notNull(byte) || dart.notNull(this[_statusCodeLength]) > 3) {
                dart.throw(new _http.HttpException.new("Invalid response status code"));
              } else {
                this[_statusCode] = dart.notNull(this[_statusCode]) * 10 + dart.notNull(byte) - 48;
              }
            }
            break;
          }
          case _http._State.RESPONSE_LINE_REASON_PHRASE:
          {
            if (byte === _http._CharCode.CR) {
              this[_state$1] = _http._State.RESPONSE_LINE_ENDING;
            } else {
              if (byte === _http._CharCode.CR || byte === _http._CharCode.LF) {
                dart.throw(new _http.HttpException.new("Invalid response reason phrase"));
              }
              this[_uri_or_reason_phrase][$add](byte);
            }
            break;
          }
          case _http._State.RESPONSE_LINE_ENDING:
          {
            this[_expect](byte, _http._CharCode.LF);
            this[_messageType] === _http._MessageType.RESPONSE;
            if (dart.notNull(this[_statusCode]) < 100 || dart.notNull(this[_statusCode]) > 599) {
              dart.throw(new _http.HttpException.new("Invalid response status code"));
            } else {
              if (dart.notNull(this[_statusCode]) <= 199 || this[_statusCode] === 204 || this[_statusCode] === 304) {
                this[_noMessageBody] = true;
              }
            }
            this[_state$1] = _http._State.HEADER_START;
            break;
          }
          case _http._State.HEADER_START:
          {
            this[_headers] = new _http._HttpHeaders.new(this.version);
            if (byte === _http._CharCode.CR) {
              this[_state$1] = _http._State.HEADER_ENDING;
            } else if (byte === _http._CharCode.LF) {
              this[_state$1] = _http._State.HEADER_ENDING;
              this[_index$1] = dart.notNull(this[_index$1]) - 1;
            } else {
              this[_headerField][$add](_http._HttpParser._toLowerCaseByte(byte));
              this[_state$1] = _http._State.HEADER_FIELD;
            }
            break;
          }
          case _http._State.HEADER_FIELD:
          {
            if (byte === _http._CharCode.COLON) {
              this[_state$1] = _http._State.HEADER_VALUE_START;
            } else {
              if (!dart.test(_http._HttpParser._isTokenChar(byte))) {
                dart.throw(new _http.HttpException.new("Invalid header field name"));
              }
              this[_headerField][$add](_http._HttpParser._toLowerCaseByte(byte));
            }
            break;
          }
          case _http._State.HEADER_VALUE_START:
          {
            if (byte === _http._CharCode.CR) {
              this[_state$1] = _http._State.HEADER_VALUE_FOLDING_OR_ENDING;
            } else if (byte === _http._CharCode.LF) {
              this[_state$1] = _http._State.HEADER_VALUE_FOLD_OR_END;
            } else if (byte !== _http._CharCode.SP && byte !== _http._CharCode.HT) {
              this[_headerValue][$add](byte);
              this[_state$1] = _http._State.HEADER_VALUE;
            }
            break;
          }
          case _http._State.HEADER_VALUE:
          {
            if (byte === _http._CharCode.CR) {
              this[_state$1] = _http._State.HEADER_VALUE_FOLDING_OR_ENDING;
            } else if (byte === _http._CharCode.LF) {
              this[_state$1] = _http._State.HEADER_VALUE_FOLD_OR_END;
            } else {
              this[_headerValue][$add](byte);
            }
            break;
          }
          case _http._State.HEADER_VALUE_FOLDING_OR_ENDING:
          {
            this[_expect](byte, _http._CharCode.LF);
            this[_state$1] = _http._State.HEADER_VALUE_FOLD_OR_END;
            break;
          }
          case _http._State.HEADER_VALUE_FOLD_OR_END:
          {
            if (byte === _http._CharCode.SP || byte === _http._CharCode.HT) {
              this[_state$1] = _http._State.HEADER_VALUE_START;
            } else {
              let headerField = core.String.fromCharCodes(this[_headerField]);
              let headerValue = core.String.fromCharCodes(this[_headerValue]);
              if (headerField === "transfer-encoding" && dart.test(this[_caseInsensitiveCompare]("chunked"[$codeUnits], this[_headerValue]))) {
                this[_chunked] = true;
              }
              if (headerField === "connection") {
                let tokens = _http._HttpParser._tokenizeFieldValue(headerValue);
                let isResponse = this[_messageType] === _http._MessageType.RESPONSE;
                let isUpgradeCode = this[_statusCode] === _http.HttpStatus.upgradeRequired || this[_statusCode] === _http.HttpStatus.switchingProtocols;
                for (let i = 0; i < dart.notNull(tokens[$length]); i++) {
                  let isUpgrade = this[_caseInsensitiveCompare]("upgrade"[$codeUnits], tokens[$_get](i)[$codeUnits]);
                  if (dart.test(isUpgrade) && !isResponse || dart.test(isUpgrade) && isResponse && isUpgradeCode) {
                    this[_connectionUpgrade] = true;
                  }
                  this[_headers][_add$2](headerField, tokens[$_get](i));
                }
              } else {
                this[_headers][_add$2](headerField, headerValue);
              }
              this[_headerField][$clear]();
              this[_headerValue][$clear]();
              if (byte === _http._CharCode.CR) {
                this[_state$1] = _http._State.HEADER_ENDING;
              } else if (byte === _http._CharCode.LF) {
                this[_state$1] = _http._State.HEADER_ENDING;
                this[_index$1] = dart.notNull(this[_index$1]) - 1;
              } else {
                this[_headerField][$add](_http._HttpParser._toLowerCaseByte(byte));
                this[_state$1] = _http._State.HEADER_FIELD;
              }
            }
            break;
          }
          case _http._State.HEADER_ENDING:
          {
            this[_expect](byte, _http._CharCode.LF);
            if (dart.test(this[_headersEnd]())) {
              return;
            } else {
              break;
            }
            return;
          }
          case _http._State.CHUNK_SIZE_STARTING_CR:
          {
            this[_expect](byte, _http._CharCode.CR);
            this[_state$1] = _http._State.CHUNK_SIZE_STARTING_LF;
            break;
          }
          case _http._State.CHUNK_SIZE_STARTING_LF:
          {
            this[_expect](byte, _http._CharCode.LF);
            this[_state$1] = _http._State.CHUNK_SIZE;
            break;
          }
          case _http._State.CHUNK_SIZE:
          {
            if (byte === _http._CharCode.CR) {
              this[_state$1] = _http._State.CHUNK_SIZE_ENDING;
            } else if (byte === _http._CharCode.SEMI_COLON) {
              this[_state$1] = _http._State.CHUNK_SIZE_EXTENSION;
            } else {
              let value = this[_expectHexDigit](byte);
              this[_remainingContent] = dart.notNull(this[_remainingContent]) * 16 + dart.notNull(value);
            }
            break;
          }
          case _http._State.CHUNK_SIZE_EXTENSION:
          {
            if (byte === _http._CharCode.CR) {
              this[_state$1] = _http._State.CHUNK_SIZE_ENDING;
            }
            break;
          }
          case _http._State.CHUNK_SIZE_ENDING:
          {
            this[_expect](byte, _http._CharCode.LF);
            if (dart.notNull(this[_remainingContent]) > 0) {
              this[_state$1] = _http._State.BODY;
            } else {
              this[_state$1] = _http._State.CHUNKED_BODY_DONE_CR;
            }
            break;
          }
          case _http._State.CHUNKED_BODY_DONE_CR:
          {
            this[_expect](byte, _http._CharCode.CR);
            this[_state$1] = _http._State.CHUNKED_BODY_DONE_LF;
            break;
          }
          case _http._State.CHUNKED_BODY_DONE_LF:
          {
            this[_expect](byte, _http._CharCode.LF);
            this[_reset]();
            this[_closeIncoming]();
            break;
          }
          case _http._State.BODY:
          {
            this[_index$1] = dart.notNull(this[_index$1]) - 1;
            let dataAvailable = dart.notNull(this[_buffer$1][$length]) - dart.notNull(this[_index$1]);
            if (dart.notNull(this[_remainingContent]) >= 0 && dart.notNull(dataAvailable) > dart.notNull(this[_remainingContent])) {
              dataAvailable = this[_remainingContent];
            }
            let data = typed_data.Uint8List.view(this[_buffer$1][$buffer], dart.notNull(this[_buffer$1][$offsetInBytes]) + dart.notNull(this[_index$1]), dataAvailable);
            this[_bodyController].add(data);
            if (this[_remainingContent] !== -1) {
              this[_remainingContent] = dart.notNull(this[_remainingContent]) - dart.notNull(data[$length]);
            }
            this[_index$1] = dart.notNull(this[_index$1]) + dart.notNull(data[$length]);
            if (this[_remainingContent] === 0) {
              if (!dart.test(this[_chunked])) {
                this[_reset]();
                this[_closeIncoming]();
              } else {
                this[_state$1] = _http._State.CHUNK_SIZE_STARTING_CR;
              }
            }
            break;
          }
          case _http._State.FAILURE:
          {
            if (!false) dart.assertFailed();
            break;
          }
          default:
          {
            if (!false) dart.assertFailed();
            break;
          }
        }
      }
      this[_parserCalled] = false;
      if (this[_buffer$1] != null && this[_index$1] == this[_buffer$1][$length]) {
        this[_releaseBuffer]();
        if (this[_state$1] !== _http._State.UPGRADED && this[_state$1] !== _http._State.FAILURE) {
          this[_socketSubscription$].resume();
        }
      }
    }
    [_onData$2](buffer) {
      this[_socketSubscription$].pause();
      if (!(this[_buffer$1] == null)) dart.assertFailed();
      this[_buffer$1] = typed_data.Uint8List._check(buffer);
      this[_index$1] = 0;
      this[_parse]();
    }
    [_onDone$]() {
      this[_socketSubscription$] = null;
      if (this[_state$1] === _http._State.CLOSED || this[_state$1] === _http._State.FAILURE) return;
      if (this[_incoming] != null) {
        if (this[_state$1] !== _http._State.UPGRADED && !(this[_state$1] === _http._State.START && !dart.test(this[_requestParser])) && !(this[_state$1] === _http._State.BODY && !dart.test(this[_chunked]) && this[_transferLength] === -1)) {
          this[_bodyController].addError(new _http.HttpException.new("Connection closed while receiving data"));
        }
        this[_closeIncoming](true);
        this[_controller$1].close();
        return;
      }
      if (this[_state$1] === _http._State.START) {
        if (!dart.test(this[_requestParser])) {
          this[_reportError$](new _http.HttpException.new("Connection closed before full header was received"));
        }
        this[_controller$1].close();
        return;
      }
      if (this[_state$1] === _http._State.UPGRADED) {
        this[_controller$1].close();
        return;
      }
      if (dart.notNull(this[_state$1]) < _http._State.FIRST_BODY_STATE) {
        this[_state$1] = _http._State.FAILURE;
        this[_reportError$](new _http.HttpException.new("Connection closed before full header was received"));
        this[_controller$1].close();
        return;
      }
      if (!dart.test(this[_chunked]) && this[_transferLength] === -1) {
        this[_state$1] = _http._State.CLOSED;
      } else {
        this[_state$1] = _http._State.FAILURE;
        this[_reportError$](new _http.HttpException.new("Connection closed before full body was received"));
      }
      this[_controller$1].close();
    }
    get version() {
      switch (this[_httpVersion]) {
        case _http._HttpVersion.HTTP10:
        {
          return "1.0";
        }
        case _http._HttpVersion.HTTP11:
        {
          return "1.1";
        }
      }
      return null;
    }
    get messageType() {
      return this[_messageType];
    }
    get transferLength() {
      return this[_transferLength];
    }
    get upgrade() {
      return dart.test(this[_connectionUpgrade]) && this[_state$1] === _http._State.UPGRADED;
    }
    get persistentConnection() {
      return this[_persistentConnection];
    }
    set isHead(value) {
      if (dart.test(value)) this[_noMessageBody] = true;
    }
    detachIncoming() {
      this[_state$1] = _http._State.UPGRADED;
      return new _http._HttpDetachedIncoming.new(this[_socketSubscription$], this.readUnparsedData());
    }
    readUnparsedData() {
      if (this[_buffer$1] == null) return null;
      if (this[_index$1] == this[_buffer$1][$length]) return null;
      let result = this[_buffer$1][$sublist](this[_index$1]);
      this[_releaseBuffer]();
      return result;
    }
    [_reset]() {
      if (this[_state$1] === _http._State.UPGRADED) return;
      this[_state$1] = _http._State.START;
      this[_messageType] = _http._MessageType.UNDETERMINED;
      this[_headerField][$clear]();
      this[_headerValue][$clear]();
      this[_method$][$clear]();
      this[_uri_or_reason_phrase][$clear]();
      this[_statusCode] = 0;
      this[_statusCodeLength] = 0;
      this[_httpVersion] = _http._HttpVersion.UNDETERMINED;
      this[_transferLength] = -1;
      this[_persistentConnection] = false;
      this[_connectionUpgrade] = false;
      this[_chunked] = false;
      this[_noMessageBody] = false;
      this[_remainingContent] = -1;
      this[_headers] = null;
    }
    [_releaseBuffer]() {
      this[_buffer$1] = null;
      this[_index$1] = null;
    }
    static _isTokenChar(byte) {
      return dart.notNull(byte) > 31 && dart.notNull(byte) < 128 && !dart.test(_http._Const.SEPARATOR_MAP[$_get](byte));
    }
    static _isValueChar(byte) {
      return dart.notNull(byte) > 31 && dart.notNull(byte) < 128 || byte === _http._CharCode.SP || byte === _http._CharCode.HT;
    }
    static _tokenizeFieldValue(headerValue) {
      let tokens = JSArrayOfString().of([]);
      let start = 0;
      let index = 0;
      while (index < headerValue.length) {
        if (headerValue[$_get](index) === ",") {
          tokens[$add](headerValue[$substring](start, index));
          start = index + 1;
        } else if (headerValue[$_get](index) === " " || headerValue[$_get](index) === "\t") {
          start++;
        }
        index++;
      }
      tokens[$add](headerValue[$substring](start, index));
      return tokens;
    }
    static _toLowerCaseByte(x) {
      return (dart.notNull(x) - 65 & 127) < 26 ? (dart.notNull(x) | 32) >>> 0 : x;
    }
    [_caseInsensitiveCompare](expected, value) {
      if (expected[$length] != value[$length]) return false;
      for (let i = 0; i < dart.notNull(expected[$length]); i++) {
        if (expected[$_get](i) != _http._HttpParser._toLowerCaseByte(value[$_get](i))) return false;
      }
      return true;
    }
    [_expect](val1, val2) {
      if (val1 != val2) {
        dart.throw(new _http.HttpException.new("Failed to parse HTTP"));
      }
    }
    [_expectHexDigit](byte) {
      if (48 <= dart.notNull(byte) && dart.notNull(byte) <= 57) {
        return dart.notNull(byte) - 48;
      } else if (65 <= dart.notNull(byte) && dart.notNull(byte) <= 70) {
        return dart.notNull(byte) - 65 + 10;
      } else if (97 <= dart.notNull(byte) && dart.notNull(byte) <= 102) {
        return dart.notNull(byte) - 97 + 10;
      } else {
        dart.throw(new _http.HttpException.new("Failed to parse HTTP"));
      }
    }
    [_createIncoming](transferLength) {
      if (!(this[_incoming] == null)) dart.assertFailed();
      if (!(this[_bodyController] == null)) dart.assertFailed();
      if (!!dart.test(this[_bodyPaused])) dart.assertFailed();
      let incoming = null;
      this[_bodyController] = StreamControllerOfListOfint().new({sync: true, onListen: dart.fn(() => {
          if (!dart.equals(incoming, this[_incoming])) return;
          if (!dart.test(this[_bodyPaused])) dart.assertFailed();
          this[_bodyPaused] = false;
          this[_pauseStateChanged]();
        }, VoidToNull()), onPause: dart.fn(() => {
          if (!dart.equals(incoming, this[_incoming])) return;
          if (!!dart.test(this[_bodyPaused])) dart.assertFailed();
          this[_bodyPaused] = true;
          this[_pauseStateChanged]();
        }, VoidToNull()), onResume: dart.fn(() => {
          if (!dart.equals(incoming, this[_incoming])) return;
          if (!dart.test(this[_bodyPaused])) dart.assertFailed();
          this[_bodyPaused] = false;
          this[_pauseStateChanged]();
        }, VoidToNull()), onCancel: dart.fn(() => {
          if (!dart.equals(incoming, this[_incoming])) return;
          if (this[_socketSubscription$] != null) {
            this[_socketSubscription$].cancel();
          }
          this[_closeIncoming](true);
          this[_controller$1].close();
        }, VoidToNull())});
      incoming = this[_incoming] = new _http._HttpIncoming.new(this[_headers], transferLength, this[_bodyController].stream);
      this[_bodyPaused] = true;
      this[_pauseStateChanged]();
    }
    [_closeIncoming](closing) {
      if (closing === void 0) closing = false;
      if (this[_incoming] == null) return;
      let tmp = this[_incoming];
      tmp.close(closing);
      this[_incoming] = null;
      if (this[_bodyController] != null) {
        this[_bodyController].close();
        this[_bodyController] = null;
      }
      this[_bodyPaused] = false;
      this[_pauseStateChanged]();
    }
    [_pauseStateChanged]() {
      if (this[_incoming] != null) {
        if (!dart.test(this[_bodyPaused]) && !dart.test(this[_parserCalled])) {
          this[_parse]();
        }
      } else {
        if (!dart.test(this[_paused]) && !dart.test(this[_parserCalled])) {
          this[_parse]();
        }
      }
    }
    [_reportError$](error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      if (this[_socketSubscription$] != null) this[_socketSubscription$].cancel();
      this[_state$1] = _http._State.FAILURE;
      this[_controller$1].addError(error, core.StackTrace._check(stackTrace));
      this[_controller$1].close();
    }
  };
  (_http._HttpParser.__ = function(requestParser) {
    this[_parserCalled] = false;
    this[_buffer$1] = null;
    this[_index$1] = null;
    this[_state$1] = null;
    this[_httpVersionIndex] = null;
    this[_messageType] = null;
    this[_statusCode] = 0;
    this[_statusCodeLength] = 0;
    this[_method$] = JSArrayOfint().of([]);
    this[_uri_or_reason_phrase] = JSArrayOfint().of([]);
    this[_headerField] = JSArrayOfint().of([]);
    this[_headerValue] = JSArrayOfint().of([]);
    this[_httpVersion] = null;
    this[_transferLength] = -1;
    this[_persistentConnection] = null;
    this[_connectionUpgrade] = null;
    this[_chunked] = null;
    this[_noMessageBody] = false;
    this[_remainingContent] = -1;
    this[_headers] = null;
    this[_incoming] = null;
    this[_socketSubscription$] = null;
    this[_paused] = true;
    this[_bodyPaused] = false;
    this[_controller$1] = null;
    this[_bodyController] = null;
    this[_requestParser] = requestParser;
    _http._HttpParser.__proto__.new.call(this);
    this[_controller$1] = StreamControllerOf_HttpIncoming().new({sync: true, onListen: dart.fn(() => {
        this[_paused] = false;
      }, VoidToNull()), onPause: dart.fn(() => {
        this[_paused] = true;
        this[_pauseStateChanged]();
      }, VoidToNull()), onResume: dart.fn(() => {
        this[_paused] = false;
        this[_pauseStateChanged]();
      }, VoidToNull()), onCancel: dart.fn(() => {
        if (this[_socketSubscription$] != null) {
          this[_socketSubscription$].cancel();
        }
      }, VoidToNull())});
    this[_reset]();
  }).prototype = _http._HttpParser.prototype;
  dart.addTypeTests(_http._HttpParser);
  dart.setMethodSignature(_http._HttpParser, () => ({
    __proto__: dart.getMethods(_http._HttpParser.__proto__),
    listen: dart.fnType(async.StreamSubscription$(_http._HttpIncoming), [dart.fnType(dart.void, [_http._HttpIncoming])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
    listenToStream: dart.fnType(dart.void, [async.Stream$(core.List$(core.int))]),
    [_parse]: dart.fnType(dart.void, []),
    [_headersEnd]: dart.fnType(core.bool, []),
    [_doParse]: dart.fnType(dart.void, []),
    [_onData$2]: dart.fnType(dart.void, [core.List$(core.int)]),
    [_onDone$]: dart.fnType(dart.void, []),
    detachIncoming: dart.fnType(_http._HttpDetachedIncoming, []),
    readUnparsedData: dart.fnType(core.List$(core.int), []),
    [_reset]: dart.fnType(dart.void, []),
    [_releaseBuffer]: dart.fnType(dart.void, []),
    [_caseInsensitiveCompare]: dart.fnType(core.bool, [core.List$(core.int), core.List$(core.int)]),
    [_expect]: dart.fnType(core.int, [core.int, core.int]),
    [_expectHexDigit]: dart.fnType(core.int, [core.int]),
    [_createIncoming]: dart.fnType(dart.void, [core.int]),
    [_closeIncoming]: dart.fnType(dart.void, [], [core.bool]),
    [_pauseStateChanged]: dart.fnType(dart.void, []),
    [_reportError$]: dart.fnType(dart.void, [dart.dynamic], [dart.dynamic])
  }));
  dart.setGetterSignature(_http._HttpParser, () => ({
    __proto__: dart.getGetters(_http._HttpParser.__proto__),
    version: core.String,
    messageType: core.int,
    transferLength: core.int,
    upgrade: core.bool,
    persistentConnection: core.bool
  }));
  dart.setSetterSignature(_http._HttpParser, () => ({
    __proto__: dart.getSetters(_http._HttpParser.__proto__),
    isHead: core.bool
  }));
  dart.setFieldSignature(_http._HttpParser, () => ({
    __proto__: dart.getFields(_http._HttpParser.__proto__),
    [_parserCalled]: dart.fieldType(core.bool),
    [_buffer$1]: dart.fieldType(typed_data.Uint8List),
    [_index$1]: dart.fieldType(core.int),
    [_requestParser]: dart.finalFieldType(core.bool),
    [_state$1]: dart.fieldType(core.int),
    [_httpVersionIndex]: dart.fieldType(core.int),
    [_messageType]: dart.fieldType(core.int),
    [_statusCode]: dart.fieldType(core.int),
    [_statusCodeLength]: dart.fieldType(core.int),
    [_method$]: dart.finalFieldType(ListOfint()),
    [_uri_or_reason_phrase]: dart.finalFieldType(ListOfint()),
    [_headerField]: dart.finalFieldType(ListOfint()),
    [_headerValue]: dart.finalFieldType(ListOfint()),
    [_httpVersion]: dart.fieldType(core.int),
    [_transferLength]: dart.fieldType(core.int),
    [_persistentConnection]: dart.fieldType(core.bool),
    [_connectionUpgrade]: dart.fieldType(core.bool),
    [_chunked]: dart.fieldType(core.bool),
    [_noMessageBody]: dart.fieldType(core.bool),
    [_remainingContent]: dart.fieldType(core.int),
    [_headers]: dart.fieldType(_http._HttpHeaders),
    [_incoming]: dart.fieldType(_http._HttpIncoming),
    [_socketSubscription$]: dart.fieldType(StreamSubscriptionOfListOfint()),
    [_paused]: dart.fieldType(core.bool),
    [_bodyPaused]: dart.fieldType(core.bool),
    [_controller$1]: dart.fieldType(StreamControllerOf_HttpIncoming()),
    [_bodyController]: dart.fieldType(StreamControllerOfListOfint())
  }));
  dart.defineLazy(_http, {
    /*_http._DART_SESSION_ID*/get _DART_SESSION_ID() {
      return "DARTSESSID";
    }
  });
  const _lastSeen = Symbol('_lastSeen');
  const _timeoutCallback = Symbol('_timeoutCallback');
  const _prev = Symbol('_prev');
  const _next$1 = Symbol('_next');
  const _data$1 = Symbol('_data');
  const _removeFromTimeoutQueue = Symbol('_removeFromTimeoutQueue');
  const _sessions = Symbol('_sessions');
  const _bumpToEnd = Symbol('_bumpToEnd');
  _http._HttpSession = class _HttpSession extends core.Object {
    destroy() {
      this[_destroyed] = true;
      this[_sessionManager][_removeFromTimeoutQueue](this);
      this[_sessionManager][_sessions][$remove](this.id);
    }
    [_markSeen]() {
      this[_lastSeen] = new core.DateTime.now();
      this[_sessionManager][_bumpToEnd](this);
    }
    get lastSeen() {
      return this[_lastSeen];
    }
    get isNew() {
      return this[_isNew];
    }
    set onTimeout(callback) {
      this[_timeoutCallback] = callback;
    }
    containsValue(value) {
      return this[_data$1][$containsValue](value);
    }
    containsKey(key) {
      return this[_data$1][$containsKey](key);
    }
    _get(key) {
      return this[_data$1][$_get](key);
    }
    _set(key, value) {
      this[_data$1][$_set](key, value);
      return value;
    }
    putIfAbsent(key, ifAbsent) {
      return this[_data$1][$putIfAbsent](key, ifAbsent);
    }
    addAll(other) {
      return this[_data$1][$addAll](other);
    }
    remove(key) {
      return this[_data$1][$remove](key);
    }
    clear() {
      this[_data$1][$clear]();
    }
    forEach(f) {
      this[_data$1][$forEach](f);
    }
    get entries() {
      return this[_data$1][$entries];
    }
    addEntries(entries) {
      this[_data$1][$addEntries](entries);
    }
    map(K, V, transform) {
      return core.Map$(K, V)._check(this[_data$1][$map](K, V, transform));
    }
    removeWhere(test) {
      this[_data$1][$removeWhere](test);
    }
    cast(K, V) {
      return core.Map$(K, V)._check(this[_data$1][$cast](K, V));
    }
    update(key, update, opts) {
      let ifAbsent = opts && 'ifAbsent' in opts ? opts.ifAbsent : null;
      return this[_data$1][$update](key, update, {ifAbsent: ifAbsent});
    }
    updateAll(update) {
      this[_data$1][$updateAll](update);
    }
    get keys() {
      return this[_data$1][$keys];
    }
    get values() {
      return this[_data$1][$values];
    }
    get length() {
      return this[_data$1][$length];
    }
    get isEmpty() {
      return this[_data$1][$isEmpty];
    }
    get isNotEmpty() {
      return this[_data$1][$isNotEmpty];
    }
    toString() {
      return "HttpSession id:" + dart.str(this.id) + " " + dart.str(this[_data$1]);
    }
  };
  (_http._HttpSession.new = function(sessionManager, id) {
    this[_destroyed] = false;
    this[_isNew] = true;
    this[_timeoutCallback] = null;
    this[_prev] = null;
    this[_next$1] = null;
    this[_data$1] = new _js_helper.LinkedMap.new();
    this[_sessionManager] = sessionManager;
    this.id = id;
    this[_lastSeen] = new core.DateTime.now();
  }).prototype = _http._HttpSession.prototype;
  dart.addTypeTests(_http._HttpSession);
  _http._HttpSession[dart.implements] = () => [_http.HttpSession];
  dart.setMethodSignature(_http._HttpSession, () => ({
    __proto__: dart.getMethods(_http._HttpSession.__proto__),
    destroy: dart.fnType(dart.void, []),
    [_markSeen]: dart.fnType(dart.void, []),
    containsValue: dart.fnType(core.bool, [core.Object]),
    [$containsValue]: dart.fnType(core.bool, [core.Object]),
    containsKey: dart.fnType(core.bool, [core.Object]),
    [$containsKey]: dart.fnType(core.bool, [core.Object]),
    _get: dart.fnType(dart.dynamic, [core.Object]),
    [$_get]: dart.fnType(dart.dynamic, [core.Object]),
    _set: dart.fnType(dart.void, [dart.dynamic, dart.dynamic]),
    [$_set]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic]),
    putIfAbsent: dart.fnType(dart.dynamic, [dart.dynamic, dart.fnType(dart.dynamic, [])]),
    [$putIfAbsent]: dart.fnType(dart.dynamic, [dart.dynamic, dart.fnType(dart.dynamic, [])]),
    addAll: dart.fnType(dart.void, [core.Map]),
    [$addAll]: dart.fnType(dart.void, [core.Map]),
    remove: dart.fnType(dart.dynamic, [core.Object]),
    [$remove]: dart.fnType(dart.dynamic, [core.Object]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, []),
    forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [dart.dynamic, dart.dynamic])]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [dart.dynamic, dart.dynamic])]),
    addEntries: dart.fnType(dart.void, [core.Iterable$(core.MapEntry)]),
    [$addEntries]: dart.fnType(dart.void, [core.Iterable$(core.MapEntry)]),
    map: dart.gFnType((K, V) => [core.Map$(K, V), [dart.fnType(core.MapEntry$(K, V), [dart.dynamic, dart.dynamic])]]),
    [$map]: dart.gFnType((K, V) => [core.Map$(K, V), [dart.fnType(core.MapEntry$(K, V), [dart.dynamic, dart.dynamic])]]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [dart.dynamic, dart.dynamic])]),
    [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [dart.dynamic, dart.dynamic])]),
    cast: dart.gFnType((K, V) => [core.Map$(K, V), []]),
    [$cast]: dart.gFnType((K, V) => [core.Map$(K, V), []]),
    update: dart.fnType(dart.dynamic, [dart.dynamic, dart.fnType(dart.dynamic, [dart.dynamic])], {ifAbsent: dart.fnType(dart.dynamic, [])}),
    [$update]: dart.fnType(dart.dynamic, [dart.dynamic, dart.fnType(dart.dynamic, [dart.dynamic])], {ifAbsent: dart.fnType(dart.dynamic, [])}),
    updateAll: dart.fnType(dart.void, [dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic])]),
    [$updateAll]: dart.fnType(dart.void, [dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic])])
  }));
  dart.setGetterSignature(_http._HttpSession, () => ({
    __proto__: dart.getGetters(_http._HttpSession.__proto__),
    lastSeen: core.DateTime,
    isNew: core.bool,
    entries: core.Iterable$(core.MapEntry),
    [$entries]: core.Iterable$(core.MapEntry),
    keys: core.Iterable,
    [$keys]: core.Iterable,
    values: core.Iterable,
    [$values]: core.Iterable,
    length: core.int,
    [$length]: core.int,
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    isNotEmpty: core.bool,
    [$isNotEmpty]: core.bool
  }));
  dart.setSetterSignature(_http._HttpSession, () => ({
    __proto__: dart.getSetters(_http._HttpSession.__proto__),
    onTimeout: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(_http._HttpSession, () => ({
    __proto__: dart.getFields(_http._HttpSession.__proto__),
    [_destroyed]: dart.fieldType(core.bool),
    [_isNew]: dart.fieldType(core.bool),
    [_lastSeen]: dart.fieldType(core.DateTime),
    [_timeoutCallback]: dart.fieldType(core.Function),
    [_sessionManager]: dart.fieldType(_http._HttpSessionManager),
    [_prev]: dart.fieldType(_http._HttpSession),
    [_next$1]: dart.fieldType(_http._HttpSession),
    id: dart.finalFieldType(core.String),
    [_data$1]: dart.finalFieldType(core.Map)
  }));
  dart.defineExtensionMethods(_http._HttpSession, [
    'containsValue',
    'containsKey',
    '_get',
    '_set',
    'putIfAbsent',
    'addAll',
    'remove',
    'clear',
    'forEach',
    'addEntries',
    'map',
    'removeWhere',
    'cast',
    'update',
    'updateAll',
    'toString'
  ]);
  dart.defineExtensionAccessors(_http._HttpSession, [
    'entries',
    'keys',
    'values',
    'length',
    'isEmpty',
    'isNotEmpty'
  ]);
  const _sessionTimeout = Symbol('_sessionTimeout');
  const _head$0 = Symbol('_head');
  const _tail$ = Symbol('_tail');
  const _timer = Symbol('_timer');
  const _addToTimeoutQueue = Symbol('_addToTimeoutQueue');
  const _stopTimer = Symbol('_stopTimer');
  const _startTimer = Symbol('_startTimer');
  const _timerTimeout = Symbol('_timerTimeout');
  _http._HttpSessionManager = class _HttpSessionManager extends core.Object {
    createSessionId() {
      let _KEY_LENGTH = 16;
      let data = _http._CryptoUtils.getRandomBytes(_KEY_LENGTH);
      return _http._CryptoUtils.bytesToHex(data);
    }
    getSession(id) {
      return this[_sessions][$_get](id);
    }
    createSession() {
      let id = this.createSessionId();
      while (dart.test(this[_sessions][$containsKey](id))) {
        id = this.createSessionId();
      }
      let session = this[_sessions][$_set](id, new _http._HttpSession.new(this, id));
      this[_addToTimeoutQueue](session);
      return session;
    }
    set sessionTimeout(timeout) {
      this[_sessionTimeout] = timeout;
      this[_stopTimer]();
      this[_startTimer]();
    }
    close() {
      this[_stopTimer]();
    }
    [_bumpToEnd](session) {
      this[_removeFromTimeoutQueue](session);
      this[_addToTimeoutQueue](session);
    }
    [_addToTimeoutQueue](session) {
      if (this[_head$0] == null) {
        if (!(this[_tail$] == null)) dart.assertFailed();
        this[_tail$] = this[_head$0] = session;
        this[_startTimer]();
      } else {
        if (!(this[_timer] != null)) dart.assertFailed();
        if (!(this[_tail$] != null)) dart.assertFailed();
        this[_tail$][_next$1] = session;
        session[_prev] = this[_tail$];
        this[_tail$] = session;
      }
    }
    [_removeFromTimeoutQueue](session) {
      if (session[_next$1] != null) {
        session[_next$1][_prev] = session[_prev];
      }
      if (session[_prev] != null) {
        session[_prev][_next$1] = session[_next$1];
      }
      if (dart.equals(this[_head$0], session)) {
        this[_head$0] = session[_next$1];
        this[_stopTimer]();
        this[_startTimer]();
      }
      if (dart.equals(this[_tail$], session)) {
        this[_tail$] = session[_prev];
      }
      session[_next$1] = session[_prev] = null;
    }
    [_timerTimeout]() {
      this[_stopTimer]();
      if (!(this[_head$0] != null)) dart.assertFailed();
      let session = this[_head$0];
      session.destroy();
      if (session[_timeoutCallback] != null) {
        dart.dsend(session, _timeoutCallback, []);
      }
    }
    [_startTimer]() {
      if (!(this[_timer] == null)) dart.assertFailed();
      if (this[_head$0] != null) {
        let seconds = new core.DateTime.now().difference(this[_head$0].lastSeen).inSeconds;
        this[_timer] = async.Timer.new(new core.Duration.new({seconds: dart.notNull(this[_sessionTimeout]) - dart.notNull(seconds)}), dart.bind(this, _timerTimeout));
      }
    }
    [_stopTimer]() {
      if (this[_timer] != null) {
        this[_timer].cancel();
        this[_timer] = null;
      }
    }
  };
  (_http._HttpSessionManager.new = function() {
    this[_sessionTimeout] = 20 * 60;
    this[_head$0] = null;
    this[_tail$] = null;
    this[_timer] = null;
    this[_sessions] = new (IdentityMapOfString$_HttpSession()).new();
  }).prototype = _http._HttpSessionManager.prototype;
  dart.addTypeTests(_http._HttpSessionManager);
  dart.setMethodSignature(_http._HttpSessionManager, () => ({
    __proto__: dart.getMethods(_http._HttpSessionManager.__proto__),
    createSessionId: dart.fnType(core.String, []),
    getSession: dart.fnType(_http._HttpSession, [core.String]),
    createSession: dart.fnType(_http._HttpSession, []),
    close: dart.fnType(dart.void, []),
    [_bumpToEnd]: dart.fnType(dart.void, [_http._HttpSession]),
    [_addToTimeoutQueue]: dart.fnType(dart.void, [_http._HttpSession]),
    [_removeFromTimeoutQueue]: dart.fnType(dart.void, [_http._HttpSession]),
    [_timerTimeout]: dart.fnType(dart.void, []),
    [_startTimer]: dart.fnType(dart.void, []),
    [_stopTimer]: dart.fnType(dart.void, [])
  }));
  dart.setSetterSignature(_http._HttpSessionManager, () => ({
    __proto__: dart.getSetters(_http._HttpSessionManager.__proto__),
    sessionTimeout: core.int
  }));
  dart.setFieldSignature(_http._HttpSessionManager, () => ({
    __proto__: dart.getFields(_http._HttpSessionManager.__proto__),
    [_sessions]: dart.fieldType(MapOfString$_HttpSession()),
    [_sessionTimeout]: dart.fieldType(core.int),
    [_head$0]: dart.fieldType(_http._HttpSession),
    [_tail$]: dart.fieldType(_http._HttpSession),
    [_timer]: dart.fieldType(async.Timer)
  }));
  dart.defineLazy(_http, {
    /*_http._httpOverridesToken*/get _httpOverridesToken() {
      return new core.Object.new();
    },
    /*_http._asyncRunZoned*/get _asyncRunZoned() {
      return dart.fn(async.runZoned, Fn__ToR());
    }
  });
  _http.HttpOverrides = class HttpOverrides extends core.Object {
    static get current() {
      return _http.HttpOverrides._check((() => {
        let l = async.Zone.current._get(_http._httpOverridesToken);
        return l != null ? l : _http.HttpOverrides._global;
      })());
    }
    static set global(overrides) {
      _http.HttpOverrides._global = overrides;
    }
    static runZoned(R, body, opts) {
      let createHttpClient = opts && 'createHttpClient' in opts ? opts.createHttpClient : null;
      let findProxyFromEnvironment = opts && 'findProxyFromEnvironment' in opts ? opts.findProxyFromEnvironment : null;
      let zoneSpecification = opts && 'zoneSpecification' in opts ? opts.zoneSpecification : null;
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let overrides = new _http._HttpOverridesScope.new(createHttpClient, findProxyFromEnvironment);
      return _http._asyncRunZoned(R, body, {zoneValues: new _js_helper.LinkedMap.from([_http._httpOverridesToken, overrides]), zoneSpecification: zoneSpecification, onError: onError});
    }
    static runWithHttpOverrides(R, body, overrides, opts) {
      let zoneSpecification = opts && 'zoneSpecification' in opts ? opts.zoneSpecification : null;
      let onError = opts && 'onError' in opts ? opts.onError : null;
      return _http._asyncRunZoned(R, body, {zoneValues: new _js_helper.LinkedMap.from([_http._httpOverridesToken, overrides]), zoneSpecification: zoneSpecification, onError: onError});
    }
    createHttpClient(context) {
      return new _http._HttpClient.new(context);
    }
    findProxyFromEnvironment(url, environment) {
      return _http._HttpClient._findProxyFromEnvironment(url, environment);
    }
  };
  (_http.HttpOverrides.new = function() {
  }).prototype = _http.HttpOverrides.prototype;
  dart.addTypeTests(_http.HttpOverrides);
  dart.setMethodSignature(_http.HttpOverrides, () => ({
    __proto__: dart.getMethods(_http.HttpOverrides.__proto__),
    createHttpClient: dart.fnType(_http.HttpClient, [io.SecurityContext]),
    findProxyFromEnvironment: dart.fnType(core.String, [core.Uri, core.Map$(core.String, core.String)])
  }));
  dart.defineLazy(_http.HttpOverrides, {
    /*_http.HttpOverrides._global*/get _global() {
      return null;
    },
    set _global(_) {}
  });
  const _createHttpClient = Symbol('_createHttpClient');
  const _findProxyFromEnvironment = Symbol('_findProxyFromEnvironment');
  const _previous$2 = Symbol('_previous');
  _http._HttpOverridesScope = class _HttpOverridesScope extends _http.HttpOverrides {
    createHttpClient(context) {
      if (this[_createHttpClient] != null) return this[_createHttpClient](context);
      if (this[_previous$2] != null) return this[_previous$2].createHttpClient(context);
      return super.createHttpClient(context);
    }
    findProxyFromEnvironment(url, environment) {
      if (this[_findProxyFromEnvironment] != null) {
        return this[_findProxyFromEnvironment](url, environment);
      }
      if (this[_previous$2] != null) {
        return this[_previous$2].findProxyFromEnvironment(url, environment);
      }
      return super.findProxyFromEnvironment(url, environment);
    }
  };
  (_http._HttpOverridesScope.new = function(createHttpClient, findProxyFromEnvironment) {
    this[_previous$2] = _http.HttpOverrides.current;
    this[_createHttpClient] = createHttpClient;
    this[_findProxyFromEnvironment] = findProxyFromEnvironment;
  }).prototype = _http._HttpOverridesScope.prototype;
  dart.addTypeTests(_http._HttpOverridesScope);
  dart.setFieldSignature(_http._HttpOverridesScope, () => ({
    __proto__: dart.getFields(_http._HttpOverridesScope.__proto__),
    [_previous$2]: dart.finalFieldType(_http.HttpOverrides),
    [_createHttpClient]: dart.finalFieldType(SecurityContextToHttpClient()),
    [_findProxyFromEnvironment]: dart.finalFieldType(UriAndMapOfString$StringToString())
  }));
  _http.WebSocketStatus = class WebSocketStatus extends core.Object {};
  (_http.WebSocketStatus.new = function() {
  }).prototype = _http.WebSocketStatus.prototype;
  dart.addTypeTests(_http.WebSocketStatus);
  dart.defineLazy(_http.WebSocketStatus, {
    /*_http.WebSocketStatus.normalClosure*/get normalClosure() {
      return 1000;
    },
    /*_http.WebSocketStatus.goingAway*/get goingAway() {
      return 1001;
    },
    /*_http.WebSocketStatus.protocolError*/get protocolError() {
      return 1002;
    },
    /*_http.WebSocketStatus.unsupportedData*/get unsupportedData() {
      return 1003;
    },
    /*_http.WebSocketStatus.reserved1004*/get reserved1004() {
      return 1004;
    },
    /*_http.WebSocketStatus.noStatusReceived*/get noStatusReceived() {
      return 1005;
    },
    /*_http.WebSocketStatus.abnormalClosure*/get abnormalClosure() {
      return 1006;
    },
    /*_http.WebSocketStatus.invalidFramePayloadData*/get invalidFramePayloadData() {
      return 1007;
    },
    /*_http.WebSocketStatus.policyViolation*/get policyViolation() {
      return 1008;
    },
    /*_http.WebSocketStatus.messageTooBig*/get messageTooBig() {
      return 1009;
    },
    /*_http.WebSocketStatus.missingMandatoryExtension*/get missingMandatoryExtension() {
      return 1010;
    },
    /*_http.WebSocketStatus.internalServerError*/get internalServerError() {
      return 1011;
    },
    /*_http.WebSocketStatus.reserved1015*/get reserved1015() {
      return 1015;
    },
    /*_http.WebSocketStatus.NORMAL_CLOSURE*/get NORMAL_CLOSURE() {
      return 1000;
    },
    /*_http.WebSocketStatus.GOING_AWAY*/get GOING_AWAY() {
      return 1001;
    },
    /*_http.WebSocketStatus.PROTOCOL_ERROR*/get PROTOCOL_ERROR() {
      return 1002;
    },
    /*_http.WebSocketStatus.UNSUPPORTED_DATA*/get UNSUPPORTED_DATA() {
      return 1003;
    },
    /*_http.WebSocketStatus.RESERVED_1004*/get RESERVED_1004() {
      return 1004;
    },
    /*_http.WebSocketStatus.NO_STATUS_RECEIVED*/get NO_STATUS_RECEIVED() {
      return 1005;
    },
    /*_http.WebSocketStatus.ABNORMAL_CLOSURE*/get ABNORMAL_CLOSURE() {
      return 1006;
    },
    /*_http.WebSocketStatus.INVALID_FRAME_PAYLOAD_DATA*/get INVALID_FRAME_PAYLOAD_DATA() {
      return 1007;
    },
    /*_http.WebSocketStatus.POLICY_VIOLATION*/get POLICY_VIOLATION() {
      return 1008;
    },
    /*_http.WebSocketStatus.MESSAGE_TOO_BIG*/get MESSAGE_TOO_BIG() {
      return 1009;
    },
    /*_http.WebSocketStatus.MISSING_MANDATORY_EXTENSION*/get MISSING_MANDATORY_EXTENSION() {
      return 1010;
    },
    /*_http.WebSocketStatus.INTERNAL_SERVER_ERROR*/get INTERNAL_SERVER_ERROR() {
      return 1011;
    },
    /*_http.WebSocketStatus.RESERVED_1015*/get RESERVED_1015() {
      return 1015;
    }
  });
  const _createServerResponseHeader = Symbol('_createServerResponseHeader');
  const _createClientRequestHeader = Symbol('_createClientRequestHeader');
  const _createHeader = Symbol('_createHeader');
  _http.CompressionOptions = class CompressionOptions extends core.Object {
    [_createServerResponseHeader](requested) {
      let info = new _http._CompressionMaxWindowBits.new();
      let mwb = null;
      let part = null;
      if ((requested == null ? null : requested.parameters) != null) {
        part = requested.parameters[$_get]("server_max_window_bits");
      }
      if (part != null) {
        if (part.length >= 2 && part[$startsWith]("0")) {
          dart.throw(new core.ArgumentError.new("Illegal 0 padding on value."));
        } else {
          mwb = this.serverMaxWindowBits == null ? core.int.parse(part, {onError: dart.fn(source => _http._WebSocketImpl.DEFAULT_WINDOW_BITS, StringToint())}) : this.serverMaxWindowBits;
          info.headerValue = "; server_max_window_bits=" + dart.str(mwb);
          info.maxWindowBits = mwb;
        }
      } else {
        info.headerValue = "";
        info.maxWindowBits = _http._WebSocketImpl.DEFAULT_WINDOW_BITS;
      }
      return info;
    }
    [_createClientRequestHeader](requested, size) {
      let info = "";
      if (requested != null) {
        info = "; client_max_window_bits=" + dart.str(size);
      } else {
        if (this.clientMaxWindowBits == null) {
          info = "; client_max_window_bits";
        } else {
          info = "; client_max_window_bits=" + dart.str(this.clientMaxWindowBits);
        }
        if (this.serverMaxWindowBits != null) {
          info = info + ("; server_max_window_bits=" + dart.str(this.serverMaxWindowBits));
        }
      }
      return info;
    }
    [_createHeader](requested) {
      if (requested === void 0) requested = null;
      let info = new _http._CompressionMaxWindowBits.new("", 0);
      if (!dart.test(this.enabled)) {
        return info;
      }
      info.headerValue = _http._WebSocketImpl.PER_MESSAGE_DEFLATE;
      if (dart.test(this.clientNoContextTakeover) && (requested == null || requested != null && dart.test(requested.parameters[$containsKey]("client_no_context_takeover")))) {
        info.headerValue = dart.notNull(info.headerValue) + "; client_no_context_takeover";
      }
      if (dart.test(this.serverNoContextTakeover) && (requested == null || requested != null && dart.test(requested.parameters[$containsKey]("server_no_context_takeover")))) {
        info.headerValue = dart.notNull(info.headerValue) + "; server_no_context_takeover";
      }
      let headerList = this[_createServerResponseHeader](requested);
      info.headerValue = dart.notNull(info.headerValue) + dart.notNull(headerList.headerValue);
      info.maxWindowBits = headerList.maxWindowBits;
      info.headerValue = dart.notNull(info.headerValue) + dart.notNull(this[_createClientRequestHeader](requested, info.maxWindowBits));
      return info;
    }
  };
  (_http.CompressionOptions.new = function(opts) {
    let clientNoContextTakeover = opts && 'clientNoContextTakeover' in opts ? opts.clientNoContextTakeover : false;
    let serverNoContextTakeover = opts && 'serverNoContextTakeover' in opts ? opts.serverNoContextTakeover : false;
    let clientMaxWindowBits = opts && 'clientMaxWindowBits' in opts ? opts.clientMaxWindowBits : null;
    let serverMaxWindowBits = opts && 'serverMaxWindowBits' in opts ? opts.serverMaxWindowBits : null;
    let enabled = opts && 'enabled' in opts ? opts.enabled : true;
    this.clientNoContextTakeover = clientNoContextTakeover;
    this.serverNoContextTakeover = serverNoContextTakeover;
    this.clientMaxWindowBits = clientMaxWindowBits;
    this.serverMaxWindowBits = serverMaxWindowBits;
    this.enabled = enabled;
  }).prototype = _http.CompressionOptions.prototype;
  dart.addTypeTests(_http.CompressionOptions);
  dart.setMethodSignature(_http.CompressionOptions, () => ({
    __proto__: dart.getMethods(_http.CompressionOptions.__proto__),
    [_createServerResponseHeader]: dart.fnType(_http._CompressionMaxWindowBits, [_http.HeaderValue]),
    [_createClientRequestHeader]: dart.fnType(core.String, [_http.HeaderValue, core.int]),
    [_createHeader]: dart.fnType(_http._CompressionMaxWindowBits, [], [_http.HeaderValue])
  }));
  dart.setFieldSignature(_http.CompressionOptions, () => ({
    __proto__: dart.getFields(_http.CompressionOptions.__proto__),
    clientNoContextTakeover: dart.finalFieldType(core.bool),
    serverNoContextTakeover: dart.finalFieldType(core.bool),
    clientMaxWindowBits: dart.finalFieldType(core.int),
    serverMaxWindowBits: dart.finalFieldType(core.int),
    enabled: dart.finalFieldType(core.bool)
  }));
  dart.defineLazy(_http.CompressionOptions, {
    /*_http.CompressionOptions.compressionDefault*/get compressionDefault() {
      return dart.const(new _http.CompressionOptions.new());
    },
    /*_http.CompressionOptions.DEFAULT*/get DEFAULT() {
      return _http.CompressionOptions.compressionDefault;
    },
    /*_http.CompressionOptions.compressionOff*/get compressionOff() {
      return dart.const(new _http.CompressionOptions.new({enabled: false}));
    },
    /*_http.CompressionOptions.OFF*/get OFF() {
      return _http.CompressionOptions.compressionOff;
    }
  });
  _http.WebSocketTransformer = class WebSocketTransformer extends core.Object {
    static new(opts) {
      let protocolSelector = opts && 'protocolSelector' in opts ? opts.protocolSelector : null;
      let compression = opts && 'compression' in opts ? opts.compression : _http.CompressionOptions.compressionDefault;
      return new _http._WebSocketTransformerImpl.new(protocolSelector, compression);
    }
    static upgrade(request, opts) {
      let protocolSelector = opts && 'protocolSelector' in opts ? opts.protocolSelector : null;
      let compression = opts && 'compression' in opts ? opts.compression : _http.CompressionOptions.compressionDefault;
      return _http._WebSocketTransformerImpl._upgrade(request, protocolSelector, compression);
    }
    static isUpgradeRequest(request) {
      return _http._WebSocketTransformerImpl._isUpgradeRequest(request);
    }
  };
  (_http.WebSocketTransformer[dart.mixinNew] = function() {
  }).prototype = _http.WebSocketTransformer.prototype;
  dart.addTypeTests(_http.WebSocketTransformer);
  _http.WebSocketTransformer[dart.implements] = () => [StreamTransformerOfHttpRequest$WebSocket()];
  _http.WebSocket = class WebSocket extends core.Object {
    static connect(url, opts) {
      let protocols = opts && 'protocols' in opts ? opts.protocols : null;
      let headers = opts && 'headers' in opts ? opts.headers : null;
      let compression = opts && 'compression' in opts ? opts.compression : _http.CompressionOptions.compressionDefault;
      return _http._WebSocketImpl.connect(url, protocols, headers, {compression: compression});
    }
    static fromUpgradedSocket(socket, opts) {
      let protocol = opts && 'protocol' in opts ? opts.protocol : null;
      let serverSide = opts && 'serverSide' in opts ? opts.serverSide : null;
      let compression = opts && 'compression' in opts ? opts.compression : _http.CompressionOptions.compressionDefault;
      if (serverSide == null) {
        dart.throw(new core.ArgumentError.new("The serverSide argument must be passed " + "explicitly to WebSocket.fromUpgradedSocket."));
      }
      return new _http._WebSocketImpl._fromSocket(socket, protocol, compression, serverSide);
    }
    static get userAgent() {
      return _http._WebSocketImpl.userAgent;
    }
    static set userAgent(userAgent) {
      _http._WebSocketImpl.userAgent = userAgent;
    }
  };
  (_http.WebSocket.new = function() {
    this.pingInterval = null;
  }).prototype = _http.WebSocket.prototype;
  _http.WebSocket.prototype[dart.isStream] = true;
  dart.addTypeTests(_http.WebSocket);
  _http.WebSocket[dart.implements] = () => [async.Stream, async.StreamSink];
  dart.setFieldSignature(_http.WebSocket, () => ({
    __proto__: dart.getFields(_http.WebSocket.__proto__),
    pingInterval: dart.fieldType(core.Duration)
  }));
  dart.defineLazy(_http.WebSocket, {
    /*_http.WebSocket.connecting*/get connecting() {
      return 0;
    },
    /*_http.WebSocket.open*/get open() {
      return 1;
    },
    /*_http.WebSocket.closing*/get closing() {
      return 2;
    },
    /*_http.WebSocket.closed*/get closed() {
      return 3;
    },
    /*_http.WebSocket.CONNECTING*/get CONNECTING() {
      return 0;
    },
    /*_http.WebSocket.OPEN*/get OPEN() {
      return 1;
    },
    /*_http.WebSocket.CLOSING*/get CLOSING() {
      return 2;
    },
    /*_http.WebSocket.CLOSED*/get CLOSED() {
      return 3;
    }
  });
  _http.WebSocketException = class WebSocketException extends core.Object {
    toString() {
      return "WebSocketException: " + dart.str(this.message);
    }
  };
  (_http.WebSocketException.new = function(message) {
    if (message === void 0) message = "";
    this.message = message;
  }).prototype = _http.WebSocketException.prototype;
  dart.addTypeTests(_http.WebSocketException);
  _http.WebSocketException[dart.implements] = () => [io.IOException];
  dart.setFieldSignature(_http.WebSocketException, () => ({
    __proto__: dart.getFields(_http.WebSocketException.__proto__),
    message: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(_http.WebSocketException, ['toString']);
  dart.defineLazy(_http, {
    /*_http._webSocketGUID*/get _webSocketGUID() {
      return "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
    },
    /*_http._clientNoContextTakeover*/get _clientNoContextTakeover() {
      return "client_no_context_takeover";
    },
    /*_http._serverNoContextTakeover*/get _serverNoContextTakeover() {
      return "server_no_context_takeover";
    },
    /*_http._clientMaxWindowBits*/get _clientMaxWindowBits() {
      return "client_max_window_bits";
    },
    /*_http._serverMaxWindowBits*/get _serverMaxWindowBits() {
      return "server_max_window_bits";
    }
  });
  _http._WebSocketMessageType = class _WebSocketMessageType extends core.Object {};
  (_http._WebSocketMessageType.new = function() {
  }).prototype = _http._WebSocketMessageType.prototype;
  dart.addTypeTests(_http._WebSocketMessageType);
  dart.defineLazy(_http._WebSocketMessageType, {
    /*_http._WebSocketMessageType.NONE*/get NONE() {
      return 0;
    },
    /*_http._WebSocketMessageType.TEXT*/get TEXT() {
      return 1;
    },
    /*_http._WebSocketMessageType.BINARY*/get BINARY() {
      return 2;
    }
  });
  _http._WebSocketOpcode = class _WebSocketOpcode extends core.Object {};
  (_http._WebSocketOpcode.new = function() {
  }).prototype = _http._WebSocketOpcode.prototype;
  dart.addTypeTests(_http._WebSocketOpcode);
  dart.defineLazy(_http._WebSocketOpcode, {
    /*_http._WebSocketOpcode.CONTINUATION*/get CONTINUATION() {
      return 0;
    },
    /*_http._WebSocketOpcode.TEXT*/get TEXT() {
      return 1;
    },
    /*_http._WebSocketOpcode.BINARY*/get BINARY() {
      return 2;
    },
    /*_http._WebSocketOpcode.RESERVED_3*/get RESERVED_3() {
      return 3;
    },
    /*_http._WebSocketOpcode.RESERVED_4*/get RESERVED_4() {
      return 4;
    },
    /*_http._WebSocketOpcode.RESERVED_5*/get RESERVED_5() {
      return 5;
    },
    /*_http._WebSocketOpcode.RESERVED_6*/get RESERVED_6() {
      return 6;
    },
    /*_http._WebSocketOpcode.RESERVED_7*/get RESERVED_7() {
      return 7;
    },
    /*_http._WebSocketOpcode.CLOSE*/get CLOSE() {
      return 8;
    },
    /*_http._WebSocketOpcode.PING*/get PING() {
      return 9;
    },
    /*_http._WebSocketOpcode.PONG*/get PONG() {
      return 10;
    },
    /*_http._WebSocketOpcode.RESERVED_B*/get RESERVED_B() {
      return 11;
    },
    /*_http._WebSocketOpcode.RESERVED_C*/get RESERVED_C() {
      return 12;
    },
    /*_http._WebSocketOpcode.RESERVED_D*/get RESERVED_D() {
      return 13;
    },
    /*_http._WebSocketOpcode.RESERVED_E*/get RESERVED_E() {
      return 14;
    },
    /*_http._WebSocketOpcode.RESERVED_F*/get RESERVED_F() {
      return 15;
    }
  });
  _http._EncodedString = class _EncodedString extends core.Object {};
  (_http._EncodedString.new = function(bytes) {
    this.bytes = bytes;
  }).prototype = _http._EncodedString.prototype;
  dart.addTypeTests(_http._EncodedString);
  dart.setFieldSignature(_http._EncodedString, () => ({
    __proto__: dart.getFields(_http._EncodedString.__proto__),
    bytes: dart.finalFieldType(ListOfint())
  }));
  _http._CompressionMaxWindowBits = class _CompressionMaxWindowBits extends core.Object {
    toString() {
      return this.headerValue;
    }
  };
  (_http._CompressionMaxWindowBits.new = function(headerValue, maxWindowBits) {
    if (headerValue === void 0) headerValue = null;
    if (maxWindowBits === void 0) maxWindowBits = null;
    this.headerValue = headerValue;
    this.maxWindowBits = maxWindowBits;
  }).prototype = _http._CompressionMaxWindowBits.prototype;
  dart.addTypeTests(_http._CompressionMaxWindowBits);
  dart.setFieldSignature(_http._CompressionMaxWindowBits, () => ({
    __proto__: dart.getFields(_http._CompressionMaxWindowBits.__proto__),
    headerValue: dart.fieldType(core.String),
    maxWindowBits: dart.fieldType(core.int)
  }));
  dart.defineExtensionMethods(_http._CompressionMaxWindowBits, ['toString']);
  const _serverSide = Symbol('_serverSide');
  const _deflate = Symbol('_deflate');
  const _fin = Symbol('_fin');
  const _compressed = Symbol('_compressed');
  const _opcode = Symbol('_opcode');
  const _len = Symbol('_len');
  const _masked = Symbol('_masked');
  const _remainingLenBytes = Symbol('_remainingLenBytes');
  const _remainingMaskingKeyBytes = Symbol('_remainingMaskingKeyBytes');
  const _remainingPayloadBytes = Symbol('_remainingPayloadBytes');
  const _unmaskingIndex = Symbol('_unmaskingIndex');
  const _currentMessageType = Symbol('_currentMessageType');
  const _eventSink$ = Symbol('_eventSink');
  const _maskingBytes = Symbol('_maskingBytes');
  const _payload = Symbol('_payload');
  const _isControlFrame = Symbol('_isControlFrame');
  const _lengthDone = Symbol('_lengthDone');
  const _maskDone = Symbol('_maskDone');
  const _unmask = Symbol('_unmask');
  const _controlFrameEnd = Symbol('_controlFrameEnd');
  const _messageFrameEnd = Symbol('_messageFrameEnd');
  const _startPayload = Symbol('_startPayload');
  const _prepareForNextFrame = Symbol('_prepareForNextFrame');
  _http._WebSocketProtocolTransformer = class _WebSocketProtocolTransformer extends async.StreamTransformerBase$(core.List$(core.int), dart.dynamic) {
    bind(stream) {
      StreamOfListOfint()._check(stream);
      return async.Stream.eventTransformed(stream, dart.fn(eventSink => {
        if (this[_eventSink$] != null) {
          dart.throw(new core.StateError.new("WebSocket transformer already used."));
        }
        this[_eventSink$] = eventSink;
        return this;
      }, EventSinkTo_WebSocketProtocolTransformer()));
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      this[_eventSink$].addError(error, stackTrace);
    }
    close() {
      this[_eventSink$].close();
    }
    add(bytes) {
      ListOfint()._check(bytes);
      let buffer = typed_data.Uint8List.is(bytes) ? bytes : typed_data.Uint8List.fromList(bytes);
      let index = 0;
      let lastIndex = buffer[$length];
      if (this[_state$1] === 5) {
        dart.throw(new _http.WebSocketException.new("Data on closed connection"));
      }
      if (this[_state$1] === 6) {
        dart.throw(new _http.WebSocketException.new("Data on failed connection"));
      }
      while (index < dart.notNull(lastIndex) && this[_state$1] !== 5 && this[_state$1] !== 6) {
        let byte = buffer[$_get](index);
        if (dart.notNull(this[_state$1]) <= 2) {
          if (this[_state$1] === 0) {
            this[_fin] = (dart.notNull(byte) & 128) !== 0;
            if ((dart.notNull(byte) & (32 | 16)) !== 0) {
              dart.throw(new _http.WebSocketException.new("Protocol error"));
            }
            this[_opcode] = dart.notNull(byte) & 15;
            if (this[_opcode] !== _http._WebSocketOpcode.CONTINUATION) {
              if ((dart.notNull(byte) & 64) !== 0) {
                this[_compressed] = true;
              } else {
                this[_compressed] = false;
              }
            }
            if (dart.notNull(this[_opcode]) <= _http._WebSocketOpcode.BINARY) {
              if (this[_opcode] === _http._WebSocketOpcode.CONTINUATION) {
                if (this[_currentMessageType] === _http._WebSocketMessageType.NONE) {
                  dart.throw(new _http.WebSocketException.new("Protocol error"));
                }
              } else {
                if (!(this[_opcode] === _http._WebSocketOpcode.TEXT || this[_opcode] === _http._WebSocketOpcode.BINARY)) dart.assertFailed();
                if (this[_currentMessageType] !== _http._WebSocketMessageType.NONE) {
                  dart.throw(new _http.WebSocketException.new("Protocol error"));
                }
                this[_currentMessageType] = this[_opcode];
              }
            } else if (dart.notNull(this[_opcode]) >= _http._WebSocketOpcode.CLOSE && dart.notNull(this[_opcode]) <= _http._WebSocketOpcode.PONG) {
              if (!dart.test(this[_fin])) dart.throw(new _http.WebSocketException.new("Protocol error"));
            } else {
              dart.throw(new _http.WebSocketException.new("Protocol error"));
            }
            this[_state$1] = 1;
          } else if (this[_state$1] === 1) {
            this[_masked] = (dart.notNull(byte) & 128) !== 0;
            this[_len] = dart.notNull(byte) & 127;
            if (dart.test(this[_isControlFrame]()) && dart.notNull(this[_len]) > 125) {
              dart.throw(new _http.WebSocketException.new("Protocol error"));
            }
            if (this[_len] === 126) {
              this[_len] = 0;
              this[_remainingLenBytes] = 2;
              this[_state$1] = 2;
            } else if (this[_len] === 127) {
              this[_len] = 0;
              this[_remainingLenBytes] = 8;
              this[_state$1] = 2;
            } else {
              if (!(dart.notNull(this[_len]) < 126)) dart.assertFailed();
              this[_lengthDone]();
            }
          } else {
            if (!(this[_state$1] === 2)) dart.assertFailed();
            this[_len] = (dart.notNull(this[_len]) << 8 | dart.notNull(byte)) >>> 0;
            this[_remainingLenBytes] = dart.notNull(this[_remainingLenBytes]) - 1;
            if (this[_remainingLenBytes] === 0) {
              this[_lengthDone]();
            }
          }
        } else {
          if (this[_state$1] === 3) {
            this[_maskingBytes][$_set](4 - (() => {
              let x = this[_remainingMaskingKeyBytes];
              this[_remainingMaskingKeyBytes] = dart.notNull(x) - 1;
              return x;
            })(), byte);
            if (this[_remainingMaskingKeyBytes] === 0) {
              this[_maskDone]();
            }
          } else {
            if (!(this[_state$1] === 4)) dart.assertFailed();
            let payloadLength = math.min(core.int, dart.notNull(lastIndex) - index, this[_remainingPayloadBytes]);
            this[_remainingPayloadBytes] = dart.notNull(this[_remainingPayloadBytes]) - payloadLength;
            if (dart.test(this[_masked])) {
              this[_unmask](index, payloadLength, buffer);
            }
            this[_payload].add(typed_data.Uint8List.view(buffer[$buffer], index, payloadLength));
            index = index + payloadLength;
            if (dart.test(this[_isControlFrame]())) {
              if (this[_remainingPayloadBytes] === 0) this[_controlFrameEnd]();
            } else {
              if (this[_currentMessageType] !== _http._WebSocketMessageType.TEXT && this[_currentMessageType] !== _http._WebSocketMessageType.BINARY) {
                dart.throw(new _http.WebSocketException.new("Protocol error"));
              }
              if (this[_remainingPayloadBytes] === 0) this[_messageFrameEnd]();
            }
            index--;
          }
        }
        index++;
      }
    }
    [_unmask](index, length, buffer) {
      let BLOCK_SIZE = 16;
      if (dart.notNull(length) >= BLOCK_SIZE) {
        let startOffset = BLOCK_SIZE - (dart.notNull(index) & 15);
        let end = dart.notNull(index) + startOffset;
        for (let i = index; dart.notNull(i) < end; i = dart.notNull(i) + 1) {
          buffer[$_set](i, (dart.notNull(buffer[$_get](i)) ^ dart.notNull(core.int._check(this[_maskingBytes][$_get]((() => {
            let x = this[_unmaskingIndex];
            this[_unmaskingIndex] = dart.notNull(x) + 1;
            return x;
          })() & 3)))) >>> 0);
        }
        index = dart.notNull(index) + startOffset;
        length = dart.notNull(length) - startOffset;
        let blockCount = (dart.notNull(length) / BLOCK_SIZE)[$truncate]();
        if (blockCount > 0) {
          let mask = 0;
          for (let i = 3; i >= 0; i--) {
            mask = (mask << 8 | dart.notNull(core.int._check(this[_maskingBytes][$_get](dart.notNull(this[_unmaskingIndex]) + i & 3)))) >>> 0;
          }
          let blockMask = typed_data.Int32x4.new(mask, mask, mask, mask);
          let blockBuffer = typed_data.Int32x4List.view(buffer[$buffer], index, blockCount);
          for (let i = 0; i < dart.notNull(blockBuffer.length); i++) {
            blockBuffer._set(i, blockBuffer._get(i)['^'](blockMask));
          }
          let bytes = blockCount * BLOCK_SIZE;
          index = dart.notNull(index) + bytes;
          length = dart.notNull(length) - bytes;
        }
      }
      let end = dart.notNull(index) + dart.notNull(length);
      for (let i = index; dart.notNull(i) < end; i = dart.notNull(i) + 1) {
        buffer[$_set](i, (dart.notNull(buffer[$_get](i)) ^ dart.notNull(core.int._check(this[_maskingBytes][$_get]((() => {
          let x = this[_unmaskingIndex];
          this[_unmaskingIndex] = dart.notNull(x) + 1;
          return x;
        })() & 3)))) >>> 0);
      }
    }
    [_lengthDone]() {
      if (dart.test(this[_masked])) {
        if (!dart.test(this[_serverSide])) {
          dart.throw(new _http.WebSocketException.new("Received masked frame from server"));
        }
        this[_state$1] = 3;
      } else {
        if (dart.test(this[_serverSide])) {
          dart.throw(new _http.WebSocketException.new("Received unmasked frame from client"));
        }
        this[_remainingPayloadBytes] = this[_len];
        this[_startPayload]();
      }
    }
    [_maskDone]() {
      this[_remainingPayloadBytes] = this[_len];
      this[_startPayload]();
    }
    [_startPayload]() {
      if (this[_remainingPayloadBytes] === 0) {
        if (dart.test(this[_isControlFrame]())) {
          switch (this[_opcode]) {
            case _http._WebSocketOpcode.CLOSE:
            {
              this[_state$1] = 5;
              this[_eventSink$].close();
              break;
            }
            case _http._WebSocketOpcode.PING:
            {
              this[_eventSink$].add(new _http._WebSocketPing.new());
              break;
            }
            case _http._WebSocketOpcode.PONG:
            {
              this[_eventSink$].add(new _http._WebSocketPong.new());
              break;
            }
          }
          this[_prepareForNextFrame]();
        } else {
          this[_messageFrameEnd]();
        }
      } else {
        this[_state$1] = 4;
      }
    }
    [_messageFrameEnd]() {
      if (dart.test(this[_fin])) {
        let bytes = this[_payload].takeBytes();
        if (this[_deflate] != null && dart.test(this[_compressed])) {
          bytes = this[_deflate].processIncomingMessage(bytes);
        }
        switch (this[_currentMessageType]) {
          case _http._WebSocketMessageType.TEXT:
          {
            this[_eventSink$].add(convert.utf8.decode(bytes));
            break;
          }
          case _http._WebSocketMessageType.BINARY:
          {
            this[_eventSink$].add(bytes);
            break;
          }
        }
        this[_currentMessageType] = _http._WebSocketMessageType.NONE;
      }
      this[_prepareForNextFrame]();
    }
    [_controlFrameEnd]() {
      switch (this[_opcode]) {
        case _http._WebSocketOpcode.CLOSE:
        {
          this.closeCode = _http.WebSocketStatus.NO_STATUS_RECEIVED;
          let payload = this[_payload].takeBytes();
          if (dart.notNull(payload[$length]) > 0) {
            if (payload[$length] === 1) {
              dart.throw(new _http.WebSocketException.new("Protocol error"));
            }
            this.closeCode = (dart.notNull(payload[$_get](0)) << 8 | dart.notNull(payload[$_get](1))) >>> 0;
            if (this.closeCode === _http.WebSocketStatus.NO_STATUS_RECEIVED) {
              dart.throw(new _http.WebSocketException.new("Protocol error"));
            }
            if (dart.notNull(payload[$length]) > 2) {
              this.closeReason = convert.utf8.decode(payload[$sublist](2));
            }
          }
          this[_state$1] = 5;
          this[_eventSink$].close();
          break;
        }
        case _http._WebSocketOpcode.PING:
        {
          this[_eventSink$].add(new _http._WebSocketPing.new(this[_payload].takeBytes()));
          break;
        }
        case _http._WebSocketOpcode.PONG:
        {
          this[_eventSink$].add(new _http._WebSocketPong.new(this[_payload].takeBytes()));
          break;
        }
      }
      this[_prepareForNextFrame]();
    }
    [_isControlFrame]() {
      return this[_opcode] === _http._WebSocketOpcode.CLOSE || this[_opcode] === _http._WebSocketOpcode.PING || this[_opcode] === _http._WebSocketOpcode.PONG;
    }
    [_prepareForNextFrame]() {
      if (this[_state$1] !== 5 && this[_state$1] !== 6) this[_state$1] = 0;
      this[_fin] = false;
      this[_opcode] = -1;
      this[_len] = -1;
      this[_remainingLenBytes] = -1;
      this[_remainingMaskingKeyBytes] = 4;
      this[_remainingPayloadBytes] = -1;
      this[_unmaskingIndex] = 0;
    }
  };
  (_http._WebSocketProtocolTransformer.new = function(serverSide, deflate) {
    if (serverSide === void 0) serverSide = false;
    if (deflate === void 0) deflate = null;
    this[_state$1] = 0;
    this[_fin] = false;
    this[_compressed] = false;
    this[_opcode] = -1;
    this[_len] = -1;
    this[_masked] = false;
    this[_remainingLenBytes] = -1;
    this[_remainingMaskingKeyBytes] = 4;
    this[_remainingPayloadBytes] = -1;
    this[_unmaskingIndex] = 0;
    this[_currentMessageType] = _http._WebSocketMessageType.NONE;
    this.closeCode = _http.WebSocketStatus.NO_STATUS_RECEIVED;
    this.closeReason = "";
    this[_eventSink$] = null;
    this[_maskingBytes] = core.List.new(4);
    this[_payload] = io.BytesBuilder.new({copy: false});
    this[_serverSide] = serverSide;
    this[_deflate] = deflate;
    _http._WebSocketProtocolTransformer.__proto__.new.call(this);
  }).prototype = _http._WebSocketProtocolTransformer.prototype;
  dart.addTypeTests(_http._WebSocketProtocolTransformer);
  _http._WebSocketProtocolTransformer[dart.implements] = () => [EventSinkOfListOfint()];
  dart.setMethodSignature(_http._WebSocketProtocolTransformer, () => ({
    __proto__: dart.getMethods(_http._WebSocketProtocolTransformer.__proto__),
    bind: dart.fnType(async.Stream, [core.Object]),
    addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
    close: dart.fnType(dart.void, []),
    add: dart.fnType(dart.void, [core.Object]),
    [_unmask]: dart.fnType(dart.void, [core.int, core.int, typed_data.Uint8List]),
    [_lengthDone]: dart.fnType(dart.void, []),
    [_maskDone]: dart.fnType(dart.void, []),
    [_startPayload]: dart.fnType(dart.void, []),
    [_messageFrameEnd]: dart.fnType(dart.void, []),
    [_controlFrameEnd]: dart.fnType(dart.void, []),
    [_isControlFrame]: dart.fnType(core.bool, []),
    [_prepareForNextFrame]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(_http._WebSocketProtocolTransformer, () => ({
    __proto__: dart.getFields(_http._WebSocketProtocolTransformer.__proto__),
    [_state$1]: dart.fieldType(core.int),
    [_fin]: dart.fieldType(core.bool),
    [_compressed]: dart.fieldType(core.bool),
    [_opcode]: dart.fieldType(core.int),
    [_len]: dart.fieldType(core.int),
    [_masked]: dart.fieldType(core.bool),
    [_remainingLenBytes]: dart.fieldType(core.int),
    [_remainingMaskingKeyBytes]: dart.fieldType(core.int),
    [_remainingPayloadBytes]: dart.fieldType(core.int),
    [_unmaskingIndex]: dart.fieldType(core.int),
    [_currentMessageType]: dart.fieldType(core.int),
    closeCode: dart.fieldType(core.int),
    closeReason: dart.fieldType(core.String),
    [_eventSink$]: dart.fieldType(async.EventSink),
    [_serverSide]: dart.finalFieldType(core.bool),
    [_maskingBytes]: dart.finalFieldType(core.List),
    [_payload]: dart.finalFieldType(io.BytesBuilder),
    [_deflate]: dart.fieldType(_http._WebSocketPerMessageDeflate)
  }));
  dart.defineLazy(_http._WebSocketProtocolTransformer, {
    /*_http._WebSocketProtocolTransformer.START*/get START() {
      return 0;
    },
    /*_http._WebSocketProtocolTransformer.LEN_FIRST*/get LEN_FIRST() {
      return 1;
    },
    /*_http._WebSocketProtocolTransformer.LEN_REST*/get LEN_REST() {
      return 2;
    },
    /*_http._WebSocketProtocolTransformer.MASK*/get MASK() {
      return 3;
    },
    /*_http._WebSocketProtocolTransformer.PAYLOAD*/get PAYLOAD() {
      return 4;
    },
    /*_http._WebSocketProtocolTransformer.CLOSED*/get CLOSED() {
      return 5;
    },
    /*_http._WebSocketProtocolTransformer.FAILURE*/get FAILURE() {
      return 6;
    },
    /*_http._WebSocketProtocolTransformer.FIN*/get FIN() {
      return 128;
    },
    /*_http._WebSocketProtocolTransformer.RSV1*/get RSV1() {
      return 64;
    },
    /*_http._WebSocketProtocolTransformer.RSV2*/get RSV2() {
      return 32;
    },
    /*_http._WebSocketProtocolTransformer.RSV3*/get RSV3() {
      return 16;
    },
    /*_http._WebSocketProtocolTransformer.OPCODE*/get OPCODE() {
      return 15;
    }
  });
  _http._WebSocketPing = class _WebSocketPing extends core.Object {};
  (_http._WebSocketPing.new = function(payload) {
    if (payload === void 0) payload = null;
    this.payload = payload;
  }).prototype = _http._WebSocketPing.prototype;
  dart.addTypeTests(_http._WebSocketPing);
  dart.setFieldSignature(_http._WebSocketPing, () => ({
    __proto__: dart.getFields(_http._WebSocketPing.__proto__),
    payload: dart.finalFieldType(ListOfint())
  }));
  _http._WebSocketPong = class _WebSocketPong extends core.Object {};
  (_http._WebSocketPong.new = function(payload) {
    if (payload === void 0) payload = null;
    this.payload = payload;
  }).prototype = _http._WebSocketPong.prototype;
  dart.addTypeTests(_http._WebSocketPong);
  dart.setFieldSignature(_http._WebSocketPong, () => ({
    __proto__: dart.getFields(_http._WebSocketPong.__proto__),
    payload: dart.finalFieldType(ListOfint())
  }));
  const _protocolSelector = Symbol('_protocolSelector');
  const _compression = Symbol('_compression');
  _http._WebSocketTransformerImpl = class _WebSocketTransformerImpl extends async.StreamTransformerBase$(_http.HttpRequest, _http.WebSocket) {
    bind(stream) {
      StreamOfHttpRequest()._check(stream);
      stream.listen(dart.fn(request => {
        _http._WebSocketTransformerImpl._upgrade(request, this[_protocolSelector], this[_compression]).then(dart.void, dart.fn(webSocket => this[_controller$1].add(webSocket), WebSocketTovoid())).catchError(dart.bind(this[_controller$1], 'addError'));
      }, HttpRequestToNull()), {onDone: dart.fn(() => {
          this[_controller$1].close();
        }, VoidToNull())});
      return this[_controller$1].stream;
    }
    static _tokenizeFieldValue(headerValue) {
      let tokens = JSArrayOfString().of([]);
      let start = 0;
      let index = 0;
      while (index < headerValue.length) {
        if (headerValue[$_get](index) === ",") {
          tokens[$add](headerValue[$substring](start, index));
          start = index + 1;
        } else if (headerValue[$_get](index) === " " || headerValue[$_get](index) === "\t") {
          start++;
        }
        index++;
      }
      tokens[$add](headerValue[$substring](start, index));
      return tokens;
    }
    static _upgrade(request, _protocolSelector, compression) {
      let response = request.response;
      if (!dart.test(_http._WebSocketTransformerImpl._isUpgradeRequest(request))) {
        response.statusCode = _http.HttpStatus.badRequest;
        response.close();
        return FutureOfWebSocket().error(new _http.WebSocketException.new("Invalid WebSocket upgrade request"));
      }
      function upgrade(protocol) {
        response.statusCode = _http.HttpStatus.switchingProtocols;
        response.headers.add(_http.HttpHeaders.connectionHeader, "Upgrade");
        response.headers.add(_http.HttpHeaders.upgradeHeader, "websocket");
        let key = request.headers.value("Sec-WebSocket-Key");
        let sha1 = new _http._SHA1.new();
        sha1.add((dart.str(key) + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11")[$codeUnits]);
        let accept = _http._CryptoUtils.bytesToBase64(sha1.close());
        response.headers.add("Sec-WebSocket-Accept", accept);
        if (protocol != null) {
          response.headers.add("Sec-WebSocket-Protocol", protocol);
        }
        let deflate = _http._WebSocketTransformerImpl._negotiateCompression(request, response, compression);
        response.headers.contentLength = 0;
        return FutureOfWebSocket()._check(response.detachSocket().then(_http.WebSocket, dart.fn(socket => new _http._WebSocketImpl._fromSocket(socket, protocol, compression, true, deflate), SocketTo_WebSocketImpl())));
      }
      dart.fn(upgrade, StringToFutureOfWebSocket());
      let protocols = request.headers._get("Sec-WebSocket-Protocol");
      if (protocols != null && _protocolSelector != null) {
        protocols = _http._WebSocketTransformerImpl._tokenizeFieldValue(protocols[$join](", "));
        return FutureOfWebSocket()._check(FutureOfString()._check(FutureOfString().new(dart.fn(() => FutureOrOfString()._check(_protocolSelector(protocols)), VoidToFutureOrOfString())).then(core.String, dart.fn(protocol => {
          if (dart.notNull(protocols[$indexOf](protocol)) < 0) {
            dart.throw(new _http.WebSocketException.new("Selected protocol is not in the list of available protocols"));
          }
          return protocol;
        }, StringToString()))).catchError(dart.fn(error => {
          response.statusCode = _http.HttpStatus.internalServerError;
          response.close();
          dart.throw(error);
        }, dynamicToNull())).then(_http.WebSocket, upgrade));
      } else {
        return upgrade(null);
      }
    }
    static _negotiateCompression(request, response, compression) {
      let extensionHeader = request.headers.value("Sec-WebSocket-Extensions");
      let t = extensionHeader;
      t == null ? extensionHeader = "" : t;
      let hv = _http.HeaderValue.parse(extensionHeader, {valueSeparator: ","});
      if (dart.test(compression.enabled) && hv.value === _http._WebSocketImpl.PER_MESSAGE_DEFLATE) {
        let info = compression[_createHeader](hv);
        response.headers.add("Sec-WebSocket-Extensions", info.headerValue);
        let serverNoContextTakeover = dart.test(hv.parameters[$containsKey]("server_no_context_takeover")) && dart.test(compression.serverNoContextTakeover);
        let clientNoContextTakeover = dart.test(hv.parameters[$containsKey]("client_no_context_takeover")) && dart.test(compression.clientNoContextTakeover);
        let deflate = new _http._WebSocketPerMessageDeflate.new({serverNoContextTakeover: serverNoContextTakeover, clientNoContextTakeover: clientNoContextTakeover, serverMaxWindowBits: info.maxWindowBits, clientMaxWindowBits: info.maxWindowBits, serverSide: true});
        return deflate;
      }
      return null;
    }
    static _isUpgradeRequest(request) {
      if (request.method !== "GET") {
        return false;
      }
      if (request.headers._get(_http.HttpHeaders.connectionHeader) == null) {
        return false;
      }
      let isUpgrade = false;
      request.headers._get(_http.HttpHeaders.connectionHeader)[$forEach](dart.fn(value => {
        if (value[$toLowerCase]() === "upgrade") isUpgrade = true;
      }, StringToNull()));
      if (!isUpgrade) return false;
      let upgrade = request.headers.value(_http.HttpHeaders.upgradeHeader);
      if (upgrade == null || upgrade[$toLowerCase]() !== "websocket") {
        return false;
      }
      let version = request.headers.value("Sec-WebSocket-Version");
      if (version == null || version !== "13") {
        return false;
      }
      let key = request.headers.value("Sec-WebSocket-Key");
      if (key == null) {
        return false;
      }
      return true;
    }
  };
  (_http._WebSocketTransformerImpl.new = function(protocolSelector, compression) {
    this[_controller$1] = StreamControllerOfWebSocket().new({sync: true});
    this[_protocolSelector] = protocolSelector;
    this[_compression] = compression;
    _http._WebSocketTransformerImpl.__proto__.new.call(this);
  }).prototype = _http._WebSocketTransformerImpl.prototype;
  dart.addTypeTests(_http._WebSocketTransformerImpl);
  _http._WebSocketTransformerImpl[dart.implements] = () => [_http.WebSocketTransformer];
  dart.setMethodSignature(_http._WebSocketTransformerImpl, () => ({
    __proto__: dart.getMethods(_http._WebSocketTransformerImpl.__proto__),
    bind: dart.fnType(async.Stream$(_http.WebSocket), [core.Object])
  }));
  dart.setFieldSignature(_http._WebSocketTransformerImpl, () => ({
    __proto__: dart.getFields(_http._WebSocketTransformerImpl.__proto__),
    [_controller$1]: dart.finalFieldType(StreamControllerOfWebSocket()),
    [_protocolSelector]: dart.finalFieldType(ListOfStringTodynamic()),
    [_compression]: dart.finalFieldType(_http.CompressionOptions)
  }));
  const _ensureDecoder = Symbol('_ensureDecoder');
  const _ensureEncoder = Symbol('_ensureEncoder');
  let const$97;
  _http._WebSocketPerMessageDeflate = class _WebSocketPerMessageDeflate extends core.Object {
    [_ensureDecoder]() {
      if (this.decoder == null) {
        this.decoder = io.RawZLibFilter.inflateFilter({windowBits: dart.test(this.serverSide) ? this.clientMaxWindowBits : this.serverMaxWindowBits, raw: true});
      }
    }
    [_ensureEncoder]() {
      if (this.encoder == null) {
        this.encoder = io.RawZLibFilter.deflateFilter({windowBits: dart.test(this.serverSide) ? this.serverMaxWindowBits : this.clientMaxWindowBits, raw: true});
      }
    }
    processIncomingMessage(msg) {
      this[_ensureDecoder]();
      let data = JSArrayOfint().of([]);
      data[$addAll](msg);
      data[$addAll](const$97 || (const$97 = dart.constList([0, 0, 255, 255], core.int)));
      this.decoder.process(data, 0, data[$length]);
      let result = JSArrayOfint().of([]);
      let out = null;
      while ((out = this.decoder.processed()) != null) {
        result[$addAll](out);
      }
      if (dart.test(this.serverSide) && dart.test(this.clientNoContextTakeover) || !dart.test(this.serverSide) && dart.test(this.serverNoContextTakeover)) {
        this.decoder = null;
      }
      return typed_data.Uint8List.fromList(result);
    }
    processOutgoingMessage(msg) {
      this[_ensureEncoder]();
      let result = JSArrayOfint().of([]);
      let buffer = null;
      if (!typed_data.Uint8List.is(msg)) {
        for (let i = 0; i < dart.notNull(msg[$length]); i++) {
          if (dart.notNull(msg[$_get](i)) < 0 || 255 < dart.notNull(msg[$_get](i))) {
            dart.throw(new core.ArgumentError.new("List element is not a byte value " + ("(value " + dart.str(msg[$_get](i)) + " at index " + dart.str(i) + ")")));
          }
        }
        buffer = typed_data.Uint8List.fromList(msg);
      } else {
        buffer = typed_data.Uint8List._check(msg);
      }
      this.encoder.process(buffer, 0, buffer[$length]);
      let out = null;
      while ((out = this.encoder.processed()) != null) {
        result[$addAll](out);
      }
      if (!dart.test(this.serverSide) && dart.test(this.clientNoContextTakeover) || dart.test(this.serverSide) && dart.test(this.serverNoContextTakeover)) {
        this.encoder = null;
      }
      if (dart.notNull(result[$length]) > 4) {
        result = result[$sublist](0, dart.notNull(result[$length]) - 4);
      }
      if (result[$length] === 0) {
        return JSArrayOfint().of([0]);
      }
      return result;
    }
  };
  (_http._WebSocketPerMessageDeflate.new = function(opts) {
    let clientMaxWindowBits = opts && 'clientMaxWindowBits' in opts ? opts.clientMaxWindowBits : _http._WebSocketImpl.DEFAULT_WINDOW_BITS;
    let serverMaxWindowBits = opts && 'serverMaxWindowBits' in opts ? opts.serverMaxWindowBits : _http._WebSocketImpl.DEFAULT_WINDOW_BITS;
    let serverNoContextTakeover = opts && 'serverNoContextTakeover' in opts ? opts.serverNoContextTakeover : false;
    let clientNoContextTakeover = opts && 'clientNoContextTakeover' in opts ? opts.clientNoContextTakeover : false;
    let serverSide = opts && 'serverSide' in opts ? opts.serverSide : false;
    this.decoder = null;
    this.encoder = null;
    this.clientMaxWindowBits = clientMaxWindowBits;
    this.serverMaxWindowBits = serverMaxWindowBits;
    this.serverNoContextTakeover = serverNoContextTakeover;
    this.clientNoContextTakeover = clientNoContextTakeover;
    this.serverSide = serverSide;
  }).prototype = _http._WebSocketPerMessageDeflate.prototype;
  dart.addTypeTests(_http._WebSocketPerMessageDeflate);
  dart.setMethodSignature(_http._WebSocketPerMessageDeflate, () => ({
    __proto__: dart.getMethods(_http._WebSocketPerMessageDeflate.__proto__),
    [_ensureDecoder]: dart.fnType(dart.void, []),
    [_ensureEncoder]: dart.fnType(dart.void, []),
    processIncomingMessage: dart.fnType(typed_data.Uint8List, [core.List$(core.int)]),
    processOutgoingMessage: dart.fnType(core.List$(core.int), [core.List$(core.int)])
  }));
  dart.setFieldSignature(_http._WebSocketPerMessageDeflate, () => ({
    __proto__: dart.getFields(_http._WebSocketPerMessageDeflate.__proto__),
    serverNoContextTakeover: dart.fieldType(core.bool),
    clientNoContextTakeover: dart.fieldType(core.bool),
    clientMaxWindowBits: dart.fieldType(core.int),
    serverMaxWindowBits: dart.fieldType(core.int),
    serverSide: dart.fieldType(core.bool),
    decoder: dart.fieldType(io.RawZLibFilter),
    encoder: dart.fieldType(io.RawZLibFilter)
  }));
  const _deflateHelper = Symbol('_deflateHelper');
  const _outCloseCode = Symbol('_outCloseCode');
  const _outCloseReason = Symbol('_outCloseReason');
  _http._WebSocketOutgoingTransformer = class _WebSocketOutgoingTransformer extends async.StreamTransformerBase$(dart.dynamic, core.List$(core.int)) {
    bind(stream) {
      return StreamOfListOfint().eventTransformed(stream, dart.fn(eventSink => {
        if (this[_eventSink$] != null) {
          dart.throw(new core.StateError.new("WebSocket transformer already used"));
        }
        this[_eventSink$] = eventSink;
        return this;
      }, EventSinkOfListOfintTo_WebSocketOutgoingTransformer()));
    }
    add(message) {
      if (_http._WebSocketPong.is(message)) {
        this.addFrame(_http._WebSocketOpcode.PONG, message.payload);
        return;
      }
      if (_http._WebSocketPing.is(message)) {
        this.addFrame(_http._WebSocketOpcode.PING, message.payload);
        return;
      }
      let data = null;
      let opcode = null;
      if (message != null) {
        if (typeof message == 'string') {
          opcode = _http._WebSocketOpcode.TEXT;
          data = convert.utf8.encode(message);
        } else if (ListOfint().is(message)) {
          opcode = _http._WebSocketOpcode.BINARY;
          data = message;
        } else if (_http._EncodedString.is(message)) {
          opcode = _http._WebSocketOpcode.TEXT;
          data = message.bytes;
        } else {
          dart.throw(new core.ArgumentError.new(message));
        }
        if (this[_deflateHelper] != null) {
          data = this[_deflateHelper].processOutgoingMessage(data);
        }
      } else {
        opcode = _http._WebSocketOpcode.TEXT;
      }
      this.addFrame(opcode, data);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      this[_eventSink$].addError(error, stackTrace);
    }
    close() {
      let code = this.webSocket[_outCloseCode];
      let reason = this.webSocket[_outCloseReason];
      let data = null;
      if (code != null) {
        data = JSArrayOfint().of([]);
        data[$add](dart.notNull(code) >> 8 & 255);
        data[$add](dart.notNull(code) & 255);
        if (reason != null) {
          data[$addAll](convert.utf8.encode(reason));
        }
      }
      this.addFrame(_http._WebSocketOpcode.CLOSE, data);
      this[_eventSink$].close();
    }
    addFrame(opcode, data) {
      _http._WebSocketOutgoingTransformer.createFrame(opcode, data, this.webSocket[_serverSide], this[_deflateHelper] != null && (opcode === _http._WebSocketOpcode.TEXT || opcode === _http._WebSocketOpcode.BINARY))[$forEach](dart.fn(e => {
        this[_eventSink$].add(e);
      }, ListOfintToNull()));
    }
    static createFrame(opcode, data, serverSide, compressed) {
      let mask = !dart.test(serverSide);
      let dataLength = data == null ? 0 : data[$length];
      let headerSize = mask ? 6 : 2;
      if (dart.notNull(dataLength) > 65535) {
        headerSize = headerSize + 8;
      } else if (dart.notNull(dataLength) > 125) {
        headerSize = headerSize + 2;
      }
      let header = typed_data.Uint8List.new(headerSize);
      let index = 0;
      let hoc = (_http._WebSocketProtocolTransformer.FIN | (dart.test(compressed) ? _http._WebSocketProtocolTransformer.RSV1 : 0) | dart.notNull(opcode) & _http._WebSocketProtocolTransformer.OPCODE) >>> 0;
      header[$_set](index++, hoc);
      let lengthBytes = 1;
      if (dart.notNull(dataLength) > 65535) {
        header[$_set](index++, 127);
        lengthBytes = 8;
      } else if (dart.notNull(dataLength) > 125) {
        header[$_set](index++, 126);
        lengthBytes = 2;
      }
      for (let i = 0; i < lengthBytes; i++) {
        header[$_set](index++, dataLength[$rightShift]((lengthBytes - 1 - i) * 8) & 255);
      }
      if (mask) {
        let i$ = 1;
        header[$_set](i$, (dart.notNull(header[$_get](i$)) | 1 << 7) >>> 0);
        let maskBytes = _http._CryptoUtils.getRandomBytes(4);
        header[$setRange](index, index + 4, maskBytes);
        index = index + 4;
        if (data != null) {
          let list = null;
          if (opcode === _http._WebSocketOpcode.TEXT && typed_data.Uint8List.is(data)) {
            list = data;
          } else {
            if (typed_data.Uint8List.is(data)) {
              list = typed_data.Uint8List.fromList(data);
            } else {
              list = typed_data.Uint8List.new(data[$length]);
              for (let i = 0; i < dart.notNull(data[$length]); i++) {
                if (dart.notNull(data[$_get](i)) < 0 || 255 < dart.notNull(data[$_get](i))) {
                  dart.throw(new core.ArgumentError.new("List element is not a byte value " + ("(value " + dart.str(data[$_get](i)) + " at index " + dart.str(i) + ")")));
                }
                list[$_set](i, data[$_get](i));
              }
            }
          }
          let BLOCK_SIZE = 16;
          let blockCount = (dart.notNull(list[$length]) / BLOCK_SIZE)[$truncate]();
          if (blockCount > 0) {
            let mask = 0;
            for (let i = 3; i >= 0; i--) {
              mask = (mask << 8 | dart.notNull(maskBytes[$_get](i))) >>> 0;
            }
            let blockMask = typed_data.Int32x4.new(mask, mask, mask, mask);
            let blockBuffer = typed_data.Int32x4List.view(list[$buffer], 0, blockCount);
            for (let i = 0; i < dart.notNull(blockBuffer.length); i++) {
              blockBuffer._set(i, blockBuffer._get(i)['^'](blockMask));
            }
          }
          for (let i = blockCount * BLOCK_SIZE; i < dart.notNull(list[$length]); i++) {
            list[$_set](i, (dart.notNull(list[$_get](i)) ^ dart.notNull(maskBytes[$_get](i & 3))) >>> 0);
          }
          data = list;
        }
      }
      if (!(index === headerSize)) dart.assertFailed();
      if (data == null) {
        return JSArrayOfListOfint().of([header]);
      } else {
        return JSArrayOfListOfint().of([header, data]);
      }
    }
  };
  (_http._WebSocketOutgoingTransformer.new = function(webSocket) {
    this[_eventSink$] = null;
    this[_deflateHelper] = null;
    this.webSocket = webSocket;
    _http._WebSocketOutgoingTransformer.__proto__.new.call(this);
    this[_deflateHelper] = this.webSocket[_deflate];
  }).prototype = _http._WebSocketOutgoingTransformer.prototype;
  dart.addTypeTests(_http._WebSocketOutgoingTransformer);
  _http._WebSocketOutgoingTransformer[dart.implements] = () => [async.EventSink];
  dart.setMethodSignature(_http._WebSocketOutgoingTransformer, () => ({
    __proto__: dart.getMethods(_http._WebSocketOutgoingTransformer.__proto__),
    bind: dart.fnType(async.Stream$(core.List$(core.int)), [async.Stream]),
    add: dart.fnType(dart.void, [dart.dynamic]),
    addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
    close: dart.fnType(dart.void, []),
    addFrame: dart.fnType(dart.void, [core.int, core.List$(core.int)])
  }));
  dart.setFieldSignature(_http._WebSocketOutgoingTransformer, () => ({
    __proto__: dart.getFields(_http._WebSocketOutgoingTransformer.__proto__),
    webSocket: dart.finalFieldType(_http._WebSocketImpl),
    [_eventSink$]: dart.fieldType(EventSinkOfListOfint()),
    [_deflateHelper]: dart.fieldType(_http._WebSocketPerMessageDeflate)
  }));
  const _issuedPause = Symbol('_issuedPause');
  const _closed$ = Symbol('_closed');
  const _closeCompleter$ = Symbol('_closeCompleter');
  const _completer = Symbol('_completer');
  const _onListen$ = Symbol('_onListen');
  const _onPause$ = Symbol('_onPause');
  const _onResume$ = Symbol('_onResume');
  const _cancel$ = Symbol('_cancel');
  const _done = Symbol('_done');
  const _ensureController = Symbol('_ensureController');
  _http._WebSocketConsumer = class _WebSocketConsumer extends core.Object {
    [_onListen$]() {
      if (this[_subscription$0] != null) {
        this[_subscription$0].cancel();
      }
    }
    [_onPause$]() {
      if (this[_subscription$0] != null) {
        this[_subscription$0].pause();
      } else {
        this[_issuedPause] = true;
      }
    }
    [_onResume$]() {
      if (this[_subscription$0] != null) {
        this[_subscription$0].resume();
      } else {
        this[_issuedPause] = false;
      }
    }
    [_cancel$]() {
      if (this[_subscription$0] != null) {
        let subscription = this[_subscription$0];
        this[_subscription$0] = null;
        subscription.cancel();
      }
    }
    [_ensureController]() {
      if (this[_controller$1] != null) return;
      this[_controller$1] = async.StreamController.new({sync: true, onPause: dart.bind(this, _onPause$), onResume: dart.bind(this, _onResume$), onCancel: dart.bind(this, _onListen$)});
      let stream = StreamOfListOfint()._check(this[_controller$1].stream.transform(ListOfint(), new _http._WebSocketOutgoingTransformer.new(this.webSocket)));
      FutureOfNull()._check(this.socket.addStream(stream).then(core.Null, dart.fn(_ => {
        this[_done]();
        this[_closeCompleter$].complete(this.webSocket);
      }, dynamicToNull()), {onError: dart.fn((error, stackTrace) => {
          this[_closed$] = true;
          this[_cancel$]();
          if (core.ArgumentError.is(error)) {
            if (!dart.test(this[_done](error, stackTrace))) {
              this[_closeCompleter$].completeError(error, stackTrace);
            }
          } else {
            this[_done]();
            this[_closeCompleter$].complete(this.webSocket);
          }
        }, dynamicAndStackTraceToNull())}));
    }
    [_done](error, stackTrace) {
      if (error === void 0) error = null;
      if (stackTrace === void 0) stackTrace = null;
      if (this[_completer] == null) return false;
      if (error != null) {
        this[_completer].completeError(error, stackTrace);
      } else {
        this[_completer].complete(this.webSocket);
      }
      this[_completer] = null;
      return true;
    }
    addStream(stream) {
      if (dart.test(this[_closed$])) {
        stream.listen(null).cancel();
        return async.Future.value(this.webSocket);
      }
      this[_ensureController]();
      this[_completer] = async.Completer.new();
      this[_subscription$0] = stream.listen(dart.fn(data => {
        this[_controller$1].add(data);
      }, dynamicToNull()), {onDone: dart.bind(this, _done), onError: dart.bind(this, _done), cancelOnError: true});
      if (dart.test(this[_issuedPause])) {
        this[_subscription$0].pause();
        this[_issuedPause] = false;
      }
      return this[_completer].future;
    }
    close() {
      this[_ensureController]();
      const closeSocket = (function() {
        return this.socket.close().catchError(dart.fn(_ => {
        }, dynamicToNull())).then(dart.dynamic, dart.fn(_ => this.webSocket, dynamicTo_WebSocketImpl()));
      }).bind(this);
      dart.fn(closeSocket, VoidToFuture());
      this[_controller$1].close();
      return this[_closeCompleter$].future.then(dart.dynamic, dart.fn(_ => closeSocket(), dynamicToFuture()));
    }
    add(data) {
      if (dart.test(this[_closed$])) return;
      this[_ensureController]();
      this[_controller$1].add(data);
    }
    closeSocket() {
      this[_closed$] = true;
      this[_cancel$]();
      this.close();
    }
  };
  (_http._WebSocketConsumer.new = function(webSocket, socket) {
    this[_controller$1] = null;
    this[_subscription$0] = null;
    this[_issuedPause] = false;
    this[_closed$] = false;
    this[_closeCompleter$] = CompleterOfWebSocket().new();
    this[_completer] = null;
    this.webSocket = webSocket;
    this.socket = socket;
  }).prototype = _http._WebSocketConsumer.prototype;
  dart.addTypeTests(_http._WebSocketConsumer);
  _http._WebSocketConsumer[dart.implements] = () => [async.StreamConsumer];
  dart.setMethodSignature(_http._WebSocketConsumer, () => ({
    __proto__: dart.getMethods(_http._WebSocketConsumer.__proto__),
    [_onListen$]: dart.fnType(dart.void, []),
    [_onPause$]: dart.fnType(dart.void, []),
    [_onResume$]: dart.fnType(dart.void, []),
    [_cancel$]: dart.fnType(dart.void, []),
    [_ensureController]: dart.fnType(dart.dynamic, []),
    [_done]: dart.fnType(core.bool, [], [dart.dynamic, core.StackTrace]),
    addStream: dart.fnType(async.Future, [async.Stream]),
    close: dart.fnType(async.Future, []),
    add: dart.fnType(dart.void, [dart.dynamic]),
    closeSocket: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(_http._WebSocketConsumer, () => ({
    __proto__: dart.getFields(_http._WebSocketConsumer.__proto__),
    webSocket: dart.finalFieldType(_http._WebSocketImpl),
    socket: dart.finalFieldType(io.Socket),
    [_controller$1]: dart.fieldType(async.StreamController),
    [_subscription$0]: dart.fieldType(async.StreamSubscription),
    [_issuedPause]: dart.fieldType(core.bool),
    [_closed$]: dart.fieldType(core.bool),
    [_closeCompleter$]: dart.fieldType(async.Completer),
    [_completer]: dart.fieldType(async.Completer)
  }));
  const _sink$1 = Symbol('_sink');
  const _readyState = Symbol('_readyState');
  const _writeClosed = Symbol('_writeClosed');
  const _closeCode = Symbol('_closeCode');
  const _closeReason = Symbol('_closeReason');
  const _pingInterval = Symbol('_pingInterval');
  const _pingTimer = Symbol('_pingTimer');
  const _consumer = Symbol('_consumer');
  const _closeTimer = Symbol('_closeTimer');
  const _close$0 = Symbol('_close');
  let const$98;
  const Stream__ServiceObject$$ = class Stream__ServiceObject extends async.Stream {};
  (Stream__ServiceObject$$.new = function() {
    _http._ServiceObject.new.call(this);
    Stream__ServiceObject$$.__proto__.new.call(this);
  }).prototype = Stream__ServiceObject$$.prototype;
  (Stream__ServiceObject$$._internal = function() {
    _http._ServiceObject.new.call(this);
    Stream__ServiceObject$$.__proto__._internal.call(this);
  }).prototype = Stream__ServiceObject$$.prototype;
  (Stream__ServiceObject$$.empty = function() {
    _http._ServiceObject.new.call(this);
    Stream__ServiceObject$$.__proto__.empty.call(this);
  }).prototype = Stream__ServiceObject$$.prototype;
  (Stream__ServiceObject$$.fromFuture = function(future) {
    _http._ServiceObject.new.call(this);
    Stream__ServiceObject$$.__proto__.fromFuture.call(this, future);
  }).prototype = Stream__ServiceObject$$.prototype;
  (Stream__ServiceObject$$.fromFutures = function(futures) {
    _http._ServiceObject.new.call(this);
    Stream__ServiceObject$$.__proto__.fromFutures.call(this, futures);
  }).prototype = Stream__ServiceObject$$.prototype;
  (Stream__ServiceObject$$.fromIterable = function(elements) {
    _http._ServiceObject.new.call(this);
    Stream__ServiceObject$$.__proto__.fromIterable.call(this, elements);
  }).prototype = Stream__ServiceObject$$.prototype;
  (Stream__ServiceObject$$.periodic = function(period, computation) {
    _http._ServiceObject.new.call(this);
    Stream__ServiceObject$$.__proto__.periodic.call(this, period, computation);
  }).prototype = Stream__ServiceObject$$.prototype;
  (Stream__ServiceObject$$.eventTransformed = function(source, mapSink) {
    _http._ServiceObject.new.call(this);
    Stream__ServiceObject$$.__proto__.eventTransformed.call(this, source, mapSink);
  }).prototype = Stream__ServiceObject$$.prototype;
  dart.applyMixin(Stream__ServiceObject$$, _http._ServiceObject);
  _http._WebSocketImpl = class _WebSocketImpl extends Stream__ServiceObject$$ {
    static connect(url, protocols, headers, opts) {
      let compression = opts && 'compression' in opts ? opts.compression : _http.CompressionOptions.compressionDefault;
      let uri = core.Uri.parse(url);
      if (uri.scheme !== "ws" && uri.scheme !== "wss") {
        dart.throw(new _http.WebSocketException.new("Unsupported URL scheme '" + dart.str(uri.scheme) + "'"));
      }
      let random = math.Random.new();
      let nonceData = typed_data.Uint8List.new(16);
      for (let i = 0; i < 16; i++) {
        nonceData[$_set](i, random.nextInt(256));
      }
      let nonce = _http._CryptoUtils.bytesToBase64(nonceData);
      uri = core.Uri.new({scheme: uri.scheme === "wss" ? "https" : "http", userInfo: uri.userInfo, host: uri.host, port: uri.port, path: uri.path, query: uri.query, fragment: uri.fragment});
      return FutureOfWebSocket()._check(FutureOfHttpClientResponse()._check(_http._WebSocketImpl._httpClient.openUrl("GET", uri).then(_http.HttpClientResponse, dart.fn(request => {
        if (uri.userInfo != null && !uri.userInfo[$isEmpty]) {
          let auth = _http._CryptoUtils.bytesToBase64(convert.utf8.encode(uri.userInfo));
          request.headers.set(_http.HttpHeaders.authorizationHeader, "Basic " + dart.str(auth));
        }
        if (headers != null) {
          headers[$forEach](dart.fn((field, value) => request.headers.add(field, value), StringAnddynamicTovoid()));
        }
        let _ = request.headers;
        _.set(_http.HttpHeaders.connectionHeader, "Upgrade");
        _.set(_http.HttpHeaders.upgradeHeader, "websocket");
        _.set("Sec-WebSocket-Key", nonce);
        _.set("Cache-Control", "no-cache");
        _.set("Sec-WebSocket-Version", "13");
        if (protocols != null) {
          request.headers.add("Sec-WebSocket-Protocol", protocols[$toList]());
        }
        if (dart.test(compression.enabled)) {
          request.headers.add("Sec-WebSocket-Extensions", compression[_createHeader]());
        }
        return request.close();
      }, HttpClientRequestToFutureOfHttpClientResponse()))).then(_http.WebSocket, dart.fn(response => {
        function error(message) {
          FutureOfNull()._check(response.detachSocket().then(core.Null, dart.fn(socket => {
            socket.destroy();
          }, SocketToNull())));
          dart.throw(new _http.WebSocketException.new(message));
        }
        dart.fn(error, StringTovoid());
        if (response.statusCode !== _http.HttpStatus.switchingProtocols || response.headers._get(_http.HttpHeaders.connectionHeader) == null || !dart.test(response.headers._get(_http.HttpHeaders.connectionHeader)[$any](dart.fn(value => value[$toLowerCase]() === "upgrade", StringTobool()))) || response.headers.value(_http.HttpHeaders.upgradeHeader)[$toLowerCase]() !== "websocket") {
          error("Connection to '" + dart.str(uri) + "' was not upgraded to websocket");
        }
        let accept = response.headers.value("Sec-WebSocket-Accept");
        if (accept == null) {
          error("Response did not contain a 'Sec-WebSocket-Accept' header");
        }
        let sha1 = new _http._SHA1.new();
        sha1.add((dart.str(nonce) + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11")[$codeUnits]);
        let expectedAccept = sha1.close();
        let receivedAccept = _http._CryptoUtils.base64StringToBytes(accept);
        if (expectedAccept[$length] != receivedAccept[$length]) {
          error("Reasponse header 'Sec-WebSocket-Accept' is the wrong length");
        }
        for (let i = 0; i < dart.notNull(expectedAccept[$length]); i++) {
          if (expectedAccept[$_get](i) != receivedAccept[$_get](i)) {
            error("Bad response 'Sec-WebSocket-Accept' header");
          }
        }
        let protocol = response.headers.value("Sec-WebSocket-Protocol");
        let deflate = _http._WebSocketImpl.negotiateClientCompression(response, compression);
        return FutureOfWebSocket()._check(response.detachSocket().then(_http.WebSocket, dart.fn(socket => new _http._WebSocketImpl._fromSocket(socket, protocol, compression, false, deflate), SocketTo_WebSocketImpl())));
      }, HttpClientResponseToFutureOfWebSocket())));
    }
    static negotiateClientCompression(response, compression) {
      let extensionHeader = response.headers.value("Sec-WebSocket-Extensions");
      if (extensionHeader == null) {
        extensionHeader = "";
      }
      let hv = _http.HeaderValue.parse(extensionHeader, {valueSeparator: ","});
      if (dart.test(compression.enabled) && hv.value === "permessage-deflate") {
        let serverNoContextTakeover = hv.parameters[$containsKey]("server_no_context_takeover");
        let clientNoContextTakeover = hv.parameters[$containsKey]("client_no_context_takeover");
        function getWindowBits(type) {
          let o = hv.parameters[$_get](type);
          if (o == null) {
            return 15;
          }
          return core.int.parse(o, {onError: dart.fn(s => 15, StringToint())});
        }
        dart.fn(getWindowBits, StringToint());
        return new _http._WebSocketPerMessageDeflate.new({clientMaxWindowBits: getWindowBits("client_max_window_bits"), serverMaxWindowBits: getWindowBits("server_max_window_bits"), clientNoContextTakeover: clientNoContextTakeover, serverNoContextTakeover: serverNoContextTakeover});
      }
      return null;
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      return this[_controller$1].stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
    get pingInterval() {
      return this[_pingInterval];
    }
    set pingInterval(interval) {
      if (dart.test(this[_writeClosed])) return;
      if (this[_pingTimer] != null) this[_pingTimer].cancel();
      this[_pingInterval] = interval;
      if (this[_pingInterval] == null) return;
      this[_pingTimer] = async.Timer.new(this[_pingInterval], dart.fn(() => {
        if (dart.test(this[_writeClosed])) return;
        this[_consumer].add(new _http._WebSocketPing.new());
        this[_pingTimer] = async.Timer.new(this[_pingInterval], dart.fn(() => {
          this[_close$0](_http.WebSocketStatus.GOING_AWAY);
        }, VoidToNull()));
      }, VoidToNull()));
    }
    get readyState() {
      return this[_readyState];
    }
    get extensions() {
      return null;
    }
    get closeCode() {
      return this[_closeCode];
    }
    get closeReason() {
      return this[_closeReason];
    }
    add(data) {
      this[_sink$1].add(data);
    }
    addUtf8Text(bytes) {
      core.ArgumentError.checkNotNull(bytes, "bytes");
      this[_sink$1].add(new _http._EncodedString.new(bytes));
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      this[_sink$1].addError(error, stackTrace);
    }
    addStream(stream) {
      return this[_sink$1].addStream(stream);
    }
    get done() {
      return this[_sink$1].done;
    }
    close(code, reason) {
      if (code === void 0) code = null;
      if (reason === void 0) reason = null;
      if (dart.test(_http._WebSocketImpl._isReservedStatusCode(code))) {
        dart.throw(new _http.WebSocketException.new("Reserved status code " + dart.str(code)));
      }
      if (this[_outCloseCode] == null) {
        this[_outCloseCode] = code;
        this[_outCloseReason] = reason;
      }
      if (!dart.test(this[_controller$1].isClosed)) {
        if (!dart.test(this[_controller$1].hasListener) && this[_subscription$0] != null) {
          this[_controller$1].stream.drain(dart.dynamic).catchError(dart.fn(_ => new _js_helper.LinkedMap.new(), dynamicToMap()));
        }
        if (this[_closeTimer] == null) {
          this[_closeTimer] = async.Timer.new(const$98 || (const$98 = dart.const(new core.Duration.new({seconds: 5}))), dart.fn(() => {
            this[_closeCode] = this[_outCloseCode];
            this[_closeReason] = this[_outCloseReason];
            if (this[_subscription$0] != null) this[_subscription$0].cancel();
            this[_controller$1].close();
            _http._WebSocketImpl._webSockets[$remove](this[_serviceId$]);
          }, VoidToNull()));
        }
      }
      return this[_sink$1].close();
    }
    static get userAgent() {
      return _http._WebSocketImpl._httpClient.userAgent;
    }
    static set userAgent(userAgent) {
      _http._WebSocketImpl._httpClient.userAgent = userAgent;
    }
    [_close$0](code, reason) {
      if (code === void 0) code = null;
      if (reason === void 0) reason = null;
      if (dart.test(this[_writeClosed])) return;
      if (this[_outCloseCode] == null) {
        this[_outCloseCode] = code;
        this[_outCloseReason] = reason;
      }
      this[_writeClosed] = true;
      this[_consumer].closeSocket();
      _http._WebSocketImpl._webSockets[$remove](this[_serviceId$]);
    }
    get [_serviceTypePath$]() {
      return "io/websockets";
    }
    get [_serviceTypeName$]() {
      return "WebSocket";
    }
    [_toJSON$](ref) {
      let name = dart.str(dart.dload(dart.dload(this[_socket$], 'address'), 'host')) + ":" + dart.str(dart.dload(this[_socket$], 'port'));
      let r = new (IdentityMapOfString$dynamic()).from(["id", this[_servicePath$], "type", this[_serviceType$](ref), "name", name, "user_name", name]);
      if (dart.test(ref)) {
        return r;
      }
      try {
        r[$_set]("socket", dart.dsend(this[_socket$], _toJSON$, [true]));
      } catch (e) {
        let _ = dart.getThrown(e);
        r[$_set]("socket", new (IdentityMapOfString$String()).from(["id", this[_servicePath$], "type", "@Socket", "name", "UserSocket", "user_name", "UserSocket"]));
      }
      return r;
    }
    static _isReservedStatusCode(code) {
      return code != null && (dart.notNull(code) < _http.WebSocketStatus.NORMAL_CLOSURE || code === _http.WebSocketStatus.RESERVED_1004 || code === _http.WebSocketStatus.NO_STATUS_RECEIVED || code === _http.WebSocketStatus.ABNORMAL_CLOSURE || dart.notNull(code) > _http.WebSocketStatus.INTERNAL_SERVER_ERROR && dart.notNull(code) < _http.WebSocketStatus.RESERVED_1015 || dart.notNull(code) >= _http.WebSocketStatus.RESERVED_1015 && dart.notNull(code) < 3000);
    }
  };
  (_http._WebSocketImpl._fromSocket = function(socket, protocol, compression, serverSide, deflate) {
    if (serverSide === void 0) serverSide = false;
    if (deflate === void 0) deflate = null;
    this[_controller$1] = null;
    this[_subscription$0] = null;
    this[_sink$1] = null;
    this[_readyState] = _http.WebSocket.connecting;
    this[_writeClosed] = false;
    this[_closeCode] = null;
    this[_closeReason] = null;
    this[_pingInterval] = null;
    this[_pingTimer] = null;
    this[_consumer] = null;
    this[_outCloseCode] = null;
    this[_outCloseReason] = null;
    this[_closeTimer] = null;
    this[_deflate] = null;
    this[_socket$] = socket;
    this.protocol = protocol;
    this[_serverSide] = serverSide;
    _http._WebSocketImpl.__proto__.new.call(this);
    this[_consumer] = new _http._WebSocketConsumer.new(this, io.Socket._check(this[_socket$]));
    this[_sink$1] = new _http._StreamSinkImpl.new(this[_consumer]);
    this[_readyState] = _http.WebSocket.open;
    this[_deflate] = deflate;
    let transformer = new _http._WebSocketProtocolTransformer.new(this[_serverSide], this[_deflate]);
    this[_subscription$0] = async.StreamSubscription._check(dart.dsend(dart.dsend(this[_socket$], 'transform', [transformer]), 'listen', [dart.fn(data => {
        if (_http._WebSocketPing.is(data)) {
          if (!dart.test(this[_writeClosed])) this[_consumer].add(new _http._WebSocketPong.new(data.payload));
        } else if (_http._WebSocketPong.is(data)) {
          this.pingInterval = this[_pingInterval];
        } else {
          this[_controller$1].add(data);
        }
      }, dynamicToNull())], {onError: dart.fn((error, stackTrace) => {
        if (this[_closeTimer] != null) this[_closeTimer].cancel();
        if (core.FormatException.is(error)) {
          this[_close$0](_http.WebSocketStatus.INVALID_FRAME_PAYLOAD_DATA);
        } else {
          this[_close$0](_http.WebSocketStatus.PROTOCOL_ERROR);
        }
        this[_closeCode] = this[_outCloseCode];
        this[_closeReason] = this[_outCloseReason];
        this[_controller$1].close();
      }, dynamicAnddynamicToNull()), onDone: dart.fn(() => {
        if (this[_closeTimer] != null) this[_closeTimer].cancel();
        if (this[_readyState] === _http.WebSocket.open) {
          this[_readyState] = _http.WebSocket.closing;
          if (!dart.test(_http._WebSocketImpl._isReservedStatusCode(transformer.closeCode))) {
            this[_close$0](transformer.closeCode, transformer.closeReason);
          } else {
            this[_close$0]();
          }
          this[_readyState] = _http.WebSocket.closed;
        }
        this[_closeCode] = transformer.closeCode;
        this[_closeReason] = transformer.closeReason;
        this[_controller$1].close();
      }, VoidToNull()), cancelOnError: true}));
    this[_subscription$0].pause();
    this[_controller$1] = async.StreamController.new({sync: true, onListen: dart.bind(this[_subscription$0], 'resume'), onCancel: dart.fn(() => {
        this[_subscription$0].cancel();
        this[_subscription$0] = null;
      }, VoidToNull()), onPause: dart.bind(this[_subscription$0], 'pause'), onResume: dart.bind(this[_subscription$0], 'resume')});
    _http._WebSocketImpl._webSockets[$_set](this[_serviceId$], this);
  }).prototype = _http._WebSocketImpl.prototype;
  dart.addTypeTests(_http._WebSocketImpl);
  _http._WebSocketImpl[dart.implements] = () => [_http.WebSocket];
  dart.setMethodSignature(_http._WebSocketImpl, () => ({
    __proto__: dart.getMethods(_http._WebSocketImpl.__proto__),
    listen: dart.fnType(async.StreamSubscription, [dart.fnType(dart.void, [dart.dynamic])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
    add: dart.fnType(dart.void, [dart.dynamic]),
    addUtf8Text: dart.fnType(dart.void, [core.List$(core.int)]),
    addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
    addStream: dart.fnType(async.Future, [async.Stream]),
    close: dart.fnType(async.Future, [], [core.int, core.String]),
    [_close$0]: dart.fnType(dart.void, [], [core.int, core.String]),
    [_toJSON$]: dart.fnType(core.Map$(core.String, dart.dynamic), [core.bool])
  }));
  dart.setGetterSignature(_http._WebSocketImpl, () => ({
    __proto__: dart.getGetters(_http._WebSocketImpl.__proto__),
    pingInterval: core.Duration,
    readyState: core.int,
    extensions: core.String,
    closeCode: core.int,
    closeReason: core.String,
    done: async.Future,
    [_serviceTypePath$]: core.String,
    [_serviceTypeName$]: core.String
  }));
  dart.setSetterSignature(_http._WebSocketImpl, () => ({
    __proto__: dart.getSetters(_http._WebSocketImpl.__proto__),
    pingInterval: core.Duration
  }));
  dart.setFieldSignature(_http._WebSocketImpl, () => ({
    __proto__: dart.getFields(_http._WebSocketImpl.__proto__),
    protocol: dart.finalFieldType(core.String),
    [_controller$1]: dart.fieldType(async.StreamController),
    [_subscription$0]: dart.fieldType(async.StreamSubscription),
    [_sink$1]: dart.fieldType(async.StreamSink),
    [_socket$]: dart.finalFieldType(dart.dynamic),
    [_serverSide]: dart.finalFieldType(core.bool),
    [_readyState]: dart.fieldType(core.int),
    [_writeClosed]: dart.fieldType(core.bool),
    [_closeCode]: dart.fieldType(core.int),
    [_closeReason]: dart.fieldType(core.String),
    [_pingInterval]: dart.fieldType(core.Duration),
    [_pingTimer]: dart.fieldType(async.Timer),
    [_consumer]: dart.fieldType(_http._WebSocketConsumer),
    [_outCloseCode]: dart.fieldType(core.int),
    [_outCloseReason]: dart.fieldType(core.String),
    [_closeTimer]: dart.fieldType(async.Timer),
    [_deflate]: dart.fieldType(_http._WebSocketPerMessageDeflate)
  }));
  dart.defineLazy(_http._WebSocketImpl, {
    /*_http._WebSocketImpl._webSockets*/get _webSockets() {
      return new (IdentityMapOfint$_WebSocketImpl()).new();
    },
    set _webSockets(_) {},
    /*_http._WebSocketImpl.DEFAULT_WINDOW_BITS*/get DEFAULT_WINDOW_BITS() {
      return 15;
    },
    /*_http._WebSocketImpl.PER_MESSAGE_DEFLATE*/get PER_MESSAGE_DEFLATE() {
      return "permessage-deflate";
    },
    /*_http._WebSocketImpl._httpClient*/get _httpClient() {
      return _http.HttpClient.new();
    }
  });
  dart.trackLibraries("dart_sdk", {
    "dart:_runtime": dart,
    "dart:_debugger": _debugger,
    "dart:_foreign_helper": _foreign_helper,
    "dart:_interceptors": _interceptors,
    "dart:_internal": _internal,
    "dart:_isolate_helper": _isolate_helper,
    "dart:_js_helper": _js_helper,
    "dart:_js_mirrors": _js_mirrors,
    "dart:_js_primitives": _js_primitives,
    "dart:_metadata": _metadata,
    "dart:_native_typed_data": _native_typed_data,
    "dart:async": async,
    "dart:collection": collection,
    "dart:convert": convert,
    "dart:core": core,
    "dart:developer": developer,
    "dart:io": io,
    "dart:isolate": isolate,
    "dart:js": js,
    "dart:js_util": js_util,
    "dart:math": math,
    "dart:mirrors": mirrors,
    "dart:typed_data": typed_data,
    "dart:indexed_db": indexed_db,
    "dart:html": html$,
    "dart:html_common": html_common,
    "dart:svg": svg$,
    "dart:web_audio": web_audio,
    "dart:web_gl": web_gl,
    "dart:web_sql": web_sql,
    "dart:_http": _http
  }, null);
  // Exports:
  return {
    dart: dart,
    _debugger: _debugger,
    _foreign_helper: _foreign_helper,
    _interceptors: _interceptors,
    _internal: _internal,
    _isolate_helper: _isolate_helper,
    _js_helper: _js_helper,
    _js_mirrors: _js_mirrors,
    _js_primitives: _js_primitives,
    _metadata: _metadata,
    _native_typed_data: _native_typed_data,
    async: async,
    collection: collection,
    convert: convert,
    core: core,
    developer: developer,
    io: io,
    isolate: isolate,
    js: js,
    js_util: js_util,
    math: math,
    mirrors: mirrors,
    typed_data: typed_data,
    indexed_db: indexed_db,
    html: html$,
    html_common: html_common,
    svg: svg$,
    web_audio: web_audio,
    web_gl: web_gl,
    web_sql: web_sql,
    _http: _http,
    dartx: dartx
  };
});

//# sourceMappingURL=dart_sdk.js.map
