text: // Generated by dart2js, the Dart to JavaScript compiler.
  // The code supports the following hooks:
  // dartPrint(message)   - if this function is defined it is called
  //                        instead of the Dart [print] method.
  // dartMainRunner(main) - if this function is defined, the Dart [main]
  //                        method will not be invoked directly.
  //                        Instead, a closure that will invoke [main] is
  //                        passed to [dartMainRunner].
  function Isolate() {}
  init();
  
  var $$ = {};
  var $ = Isolate.$isolateProperties;
  $$.HashMapImplementation = {"": ["_keys", "_values", "_loadLimit", "_numberOfEntries", "_numberOfDeleted"],
   "super": "Object",
   _probeForAdding$1: function(key) {
    if (key == null)
      throw $.$$throw($.CTC);
    var t1 = $.get$hashCode(key);
    if (t1 !== (t1 | 0))
      return this._probeForAdding$1$bailout(1, key, t1, 0, 0);
    var hash = (t1 & this._keys.length - 1) >>> 0;
    for (var numberOfProbes = 1, insertionIndex = -1; true;) {
      t1 = this._keys;
      if (hash < 0 || hash >= t1.length)
        throw $.ioore(hash);
      var existingKey = t1[hash];
      if (existingKey == null) {
        if (insertionIndex < 0)
          return hash;
        return insertionIndex;
      } else if ($.eqB(existingKey, key))
        return hash;
      else if (insertionIndex < 0 && $.CTC10 === existingKey)
        insertionIndex = hash;
      var numberOfProbes0 = numberOfProbes + 1;
      hash = $.HashMapImplementation__nextProbe(hash, numberOfProbes, this._keys.length);
      if (hash !== (hash | 0))
        return this._probeForAdding$1$bailout(2, numberOfProbes0, key, insertionIndex, hash);
      numberOfProbes = numberOfProbes0;
    }
  },
   _probeForAdding$1$bailout: function(state0, env0, env1, env2, env3) {
    switch (state0) {
      case 1:
        var key = env0;
        t1 = env1;
        break
  ;    case 2:
        numberOfProbes0 = env0;
        key = env1;
        insertionIndex = env2;
        hash = env3;
        break
  ;  }
    switch (state0) {
      case 0:
        if (key == null)
          throw $.$$throw($.CTC);
        var t1 = $.get$hashCode(key);
      case 1:
        state0 = 0;
        var hash = $.and(t1, this._keys.length - 1);
        var numberOfProbes = 1;
        var insertionIndex = -1;
      case 2:
        L0:
          while (true)
            switch (state0) {
              case 0:
                if (!true)
                  break L0
  ;              t1 = this._keys;
                if (hash !== (hash | 0))
                  throw $.iae(hash);
                if (hash < 0 || hash >= t1.length)
                  throw $.ioore(hash);
                var existingKey = t1[hash];
                if (existingKey == null) {
                  if (insertionIndex < 0)
                    return hash;
                  return insertionIndex;
                } else if ($.eqB(existingKey, key))
                  return hash;
                else if (insertionIndex < 0 && $.CTC10 === existingKey)
                  insertionIndex = hash;
                var numberOfProbes0 = numberOfProbes + 1;
                hash = $.HashMapImplementation__nextProbe(hash, numberOfProbes, this._keys.length);
              case 2:
                state0 = 0;
                numberOfProbes = numberOfProbes0;
            }
    }
  },
   _probeForLookup$1: function(key) {
    if (key == null)
      throw $.$$throw($.CTC);
    var hash = $.and($.get$hashCode(key), this._keys.length - 1);
    if (hash !== (hash | 0))
      return this._probeForLookup$1$bailout(1, key, hash);
    for (var numberOfProbes = 1; true;) {
      var t1 = this._keys;
      if (hash !== (hash | 0))
        throw $.iae(hash);
      if (hash < 0 || hash >= t1.length)
        throw $.ioore(hash);
      var existingKey = t1[hash];
      if (existingKey == null)
        return -1;
      if ($.eqB(existingKey, key))
        return hash;
      var numberOfProbes0 = numberOfProbes + 1;
      hash = $.HashMapImplementation__nextProbe(hash, numberOfProbes, this._keys.length);
      numberOfProbes = numberOfProbes0;
    }
  },
   _probeForLookup$1$bailout: function(state0, key, hash) {
    for (var numberOfProbes = 1; true;) {
      var t1 = this._keys;
      if (hash !== (hash | 0))
        throw $.iae(hash);
      if (hash < 0 || hash >= t1.length)
        throw $.ioore(hash);
      var existingKey = t1[hash];
      if (existingKey == null)
        return -1;
      if ($.eqB(existingKey, key))
        return hash;
      var numberOfProbes0 = numberOfProbes + 1;
      hash = $.HashMapImplementation__nextProbe(hash, numberOfProbes, this._keys.length);
      numberOfProbes = numberOfProbes0;
    }
  },
   _ensureCapacity$0: function() {
    var newNumberOfEntries = $.add(this._numberOfEntries, 1);
    if ($.geB(newNumberOfEntries, this._loadLimit)) {
      this._grow$1(this._keys.length * 2);
      return
  ;
    }
    var capacity = this._keys.length;
    if (typeof newNumberOfEntries !== 'number')
      throw $.iae(newNumberOfEntries);
    var numberOfFreeOrDeleted = capacity - newNumberOfEntries;
    var t1 = this._numberOfDeleted;
    if (t1 > numberOfFreeOrDeleted - t1)
      this._grow$1(capacity);
  },
   _grow$1: function(newCapacity) {
    var capacity = this._keys.length;
    this._loadLimit = $.tdiv($.mul(newCapacity, 3), 4);
    var oldKeys = this._keys;
    var oldValues = this._values;
    this._keys = $._ListImpl_List(newCapacity);
    this._values = $._ListImpl_List(newCapacity);
    for (var i = 0; i < capacity; ++i) {
      if (i >= oldKeys.length)
        throw $.ioore(i);
      var key = oldKeys[i];
      if (key == null || key === $.CTC10)
        continue
  ;    if (i >= oldValues.length)
        throw $.ioore(i);
      var value = oldValues[i];
      var newIndex = this._probeForAdding$1(key);
      var t1 = this._keys;
      if (newIndex !== (newIndex | 0))
        throw $.iae(newIndex);
      if (newIndex < 0 || newIndex >= t1.length)
        throw $.ioore(newIndex);
      t1[newIndex] = key;
      t1 = this._values;
      if (newIndex >= t1.length)
        throw $.ioore(newIndex);
      t1[newIndex] = value;
    }
    this._numberOfDeleted = 0;
  },
   clear$0: function() {
    this._numberOfEntries = 0;
    this._numberOfDeleted = 0;
    var t1 = this._keys;
    var length$ = t1.length;
    for (var t2 = this._values, t3 = t2.length, i = 0; i < length$; ++i) {
      t1[i] = null;
      if (i >= t3)
        throw $.ioore(i);
      t2[i] = null;
    }
  },
   operator$indexSet$2: function(key, value) {
    this._ensureCapacity$0();
    var index = this._probeForAdding$1(key);
    var t1 = this._keys;
    if (index !== (index | 0))
      throw $.iae(index);
    if (index < 0 || index >= t1.length)
      throw $.ioore(index);
    t1 = t1[index];
    if (t1 == null || t1 === $.CTC10)
      this._numberOfEntries = $.add(this._numberOfEntries, 1);
    t1 = this._keys;
    if (index >= t1.length)
      throw $.ioore(index);
    t1[index] = key;
    t1 = this._values;
    if (index >= t1.length)
      throw $.ioore(index);
    t1[index] = value;
  },
   operator$index$1: function(key) {
    var index = this._probeForLookup$1(key);
    if ($.ltB(index, 0))
      return
  ;
    var t1 = this._values;
    if (index !== (index | 0))
      throw $.iae(index);
    if (index < 0 || index >= t1.length)
      throw $.ioore(index);
    return t1[index];
  },
   get$isEmpty: function() {
    return $.eq(this._numberOfEntries, 0);
  },
   get$length: function() {
    return this._numberOfEntries;
  },
   forEach$1: function(f) {
    var length$ = this._keys.length;
    for (var i = 0; i < length$; ++i) {
      var t1 = this._keys;
      if (i >= t1.length)
        throw $.ioore(i);
      var key = t1[i];
      if (!(key == null) && !(key === $.CTC10)) {
        t1 = this._values;
        if (i >= t1.length)
          throw $.ioore(i);
        f.call$2(key, t1[i]);
      }
    }
  },
   containsKey$1: function(key) {
    return !$.eqB(this._probeForLookup$1(key), -1);
  },
   toString$0: function() {
    return $.Maps_mapToString(this);
  },
   HashMapImplementation$0: function() {
    this._numberOfEntries = 0;
    this._numberOfDeleted = 0;
    this._loadLimit = $.HashMapImplementation__computeLoadLimit(8);
    this._keys = $._ListImpl_List(8);
    this._values = $._ListImpl_List(8);
  },
   is$Map: function() { return true; }
  };
  
  $$._DeletedKeySentinel = {"": [],
   "super": "Object"
  };
  
  $$.KeyValuePair = {"": ["key?", "value="],
   "super": "Object"
  };
  
  $$.LinkedHashMapImplementation = {"": ["_list", "_map"],
   "super": "Object",
   operator$indexSet$2: function(key, value) {
    if (this._map.containsKey$1(key) === true)
      this._map.operator$index$1(key).get$element().set$value(value);
    else {
      this._list.addLast$1($.KeyValuePair$(key, value));
      this._map.operator$indexSet$2(key, this._list.lastEntry$0());
    }
  },
   operator$index$1: function(key) {
    var entry = this._map.operator$index$1(key);
    if (entry == null)
      return
  ;
    return entry.get$element().get$value();
  },
   forEach$1: function(f) {
    this._list.forEach$1(new $.LinkedHashMapImplementation_forEach__(f));
  },
   containsKey$1: function(key) {
    return this._map.containsKey$1(key);
  },
   get$length: function() {
    return $.get$length(this._map);
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   clear$0: function() {
    this._map.clear$0();
    this._list.clear$0();
  },
   toString$0: function() {
    return $.Maps_mapToString(this);
  },
   LinkedHashMapImplementation$0: function() {
    this._map = $.HashMapImplementation$();
    this._list = $.DoubleLinkedQueue$();
  },
   is$Map: function() { return true; }
  };
  
  $$.JSSyntaxRegExp = {"": ["_lib0_pattern", "_multiLine", "_ignoreCase"],
   "super": "Object",
   hasMatch$1: function(str) {
    return $.regExpTest(this, $.checkString(str));
  },
   get$pattern: function() {
    return this._lib0_pattern;
  },
   get$multiLine: function() {
    return this._multiLine;
  },
   get$ignoreCase: function() {
    return this._ignoreCase;
  },
   is$RegExp: true
  };
  
  $$.ArgumentError = {"": ["message"],
   "super": "Object",
   toString$0: function() {
    var t1 = this.message;
    if (!(t1 == null))
      return 'Illegal argument(s): ' + $.S(t1);
    return 'Illegal argument(s)';
  }
  };
  
  $$.RangeError = {"": ["message"],
   "super": "ArgumentError",
   toString$0: function() {
    return 'RangeError: ' + $.S(this.message);
  }
  };
  
  $$.NoSuchMethodError = {"": ["_receiver", "_memberName", "_arguments", "_namedArguments", "_existingArgumentNames"],
   "super": "Object",
   toString$0: function() {
    var t1 = {};
    t1.sb_1 = $.StringBuffer_StringBuffer('');
    t1.i_2 = 0;
    var t2 = this._arguments;
    if (typeof t2 !== 'string' && (typeof t2 !== 'object' || t2 === null || t2.constructor !== Array && !t2.is$JavaScriptIndexingBehavior()))
      return this.toString$0$bailout(1, t1, t2);
    for (; $.ltB(t1.i_2, t2.length); t1.i_2 = $.add(t1.i_2, 1)) {
      if ($.gtB(t1.i_2, 0))
        $.add$1(t1.sb_1, ', ');
      var t3 = t1.sb_1;
      var t4 = t1.i_2;
      if (t4 !== (t4 | 0))
        throw $.iae(t4);
      if (t4 < 0 || t4 >= t2.length)
        throw $.ioore(t4);
      $.add$1(t3, $.NoSuchMethodError_safeToString(t2[t4]));
    }
    t2 = this._namedArguments;
    if (!(t2 == null))
      $.forEach(t2, new $.NoSuchMethodError_toString_anon(t1));
    t2 = this._existingArgumentNames;
    if (typeof t2 !== 'string' && (typeof t2 !== 'object' || t2 === null || t2.constructor !== Array && !t2.is$JavaScriptIndexingBehavior()))
      return this.toString$0$bailout(2, t1, t2);
    var actualParameters = $.toString(t1.sb_1);
    t1.sb_1 = $.StringBuffer_StringBuffer('');
    for (var i = 0; i < t2.length; ++i) {
      if (i > 0)
        $.add$1(t1.sb_1, ', ');
      t3 = t1.sb_1;
      if (i >= t2.length)
        throw $.ioore(i);
      $.add$1(t3, t2[i]);
    }
    var formalParameters = $.toString(t1.sb_1);
    t2 = this._memberName;
    return 'NoSuchMethodError: incorrect number of arguments passed to method named \'' + $.S(t2) + '\'\n' + 'Receiver: ' + $.S($.NoSuchMethodError_safeToString(this._receiver)) + '\n' + 'Tried calling: ' + $.S(t2) + '(' + $.S(actualParameters) + ')\n' + 'Found: ' + $.S(t2) + '(' + $.S(formalParameters) + ')';
  },
   toString$0$bailout: function(state0, env0, env1) {
    switch (state0) {
      case 1:
        t1 = env0;
        t2 = env1;
        break
  ;    case 2:
        t1 = env0;
        t2 = env1;
        break
  ;  }
    switch (state0) {
      case 0:
        var t1 = {};
        t1.sb_1 = $.StringBuffer_StringBuffer('');
        t1.i_2 = 0;
        var t2 = this._arguments;
      case 1:
        state0 = 0;
        if (!(t2 == null))
          for (; $.ltB(t1.i_2, $.get$length(t2)); t1.i_2 = $.add(t1.i_2, 1)) {
            if ($.gtB(t1.i_2, 0))
              $.add$1(t1.sb_1, ', ');
            $.add$1(t1.sb_1, $.NoSuchMethodError_safeToString($.index(t2, t1.i_2)));
          }
        t2 = this._namedArguments;
        if (!(t2 == null))
          $.forEach(t2, new $.NoSuchMethodError_toString_anon(t1));
        t2 = this._existingArgumentNames;
      case 2:
        state0 = 0;
        if (t2 == null)
          return 'NoSuchMethodError : method not found: \'' + $.S(this._memberName) + '\'\n' + 'Receiver: ' + $.S($.NoSuchMethodError_safeToString(this._receiver)) + '\n' + 'Arguments: [' + $.S(t1.sb_1) + ']';
        else {
          var actualParameters = $.toString(t1.sb_1);
          t1.sb_1 = $.StringBuffer_StringBuffer('');
          for (var i = 0; $.ltB(i, $.get$length(t2)); ++i) {
            if (i > 0)
              $.add$1(t1.sb_1, ', ');
            $.add$1(t1.sb_1, $.index(t2, i));
          }
          var formalParameters = $.toString(t1.sb_1);
          t2 = this._memberName;
          return 'NoSuchMethodError: incorrect number of arguments passed to method named \'' + $.S(t2) + '\'\n' + 'Receiver: ' + $.S($.NoSuchMethodError_safeToString(this._receiver)) + '\n' + 'Tried calling: ' + $.S(t2) + '(' + $.S(actualParameters) + ')\n' + 'Found: ' + $.S(t2) + '(' + $.S(formalParameters) + ')';
        }
    }
  }
  };
  
  $$.UnsupportedError = {"": ["message"],
   "super": "Object",
   toString$0: function() {
    return 'Unsupported operation: ' + this.message;
  }
  };
  
  $$.StateError = {"": ["message"],
   "super": "Object",
   toString$0: function() {
    return 'Bad state: ' + this.message;
  }
  };
  
  $$.StackOverflowError = {"": [],
   "super": "Object",
   toString$0: function() {
    return 'Stack Overflow';
  }
  };
  
  $$._ExceptionImplementation = {"": ["message"],
   "super": "Object",
   toString$0: function() {
    var t1 = this.message;
    return t1 == null ? 'Exception' : 'Exception: ' + $.S(t1);
  }
  };
  
  $$.NullPointerException = {"": ["functionName", "arguments"],
   "super": "Object",
   toString$0: function() {
    var t1 = this.functionName;
    if (t1 == null)
      return this.get$exceptionName();
    else
      return $.S(this.get$exceptionName()) + ' : method: \'' + $.S(t1) + '\'\n' + 'Receiver: null\n' + 'Arguments: ' + $.S(this.arguments);
  },
   get$exceptionName: function() {
    return 'NullPointerException';
  }
  };
  
  $$.NotImplementedException = {"": ["_message"],
   "super": "Object",
   toString$0: function() {
    var t1 = this._message;
    return !(t1 == null) ? 'NotImplementedException: ' + $.S(t1) : 'NotImplementedException';
  }
  };
  
  $$.IllegalJSRegExpException = {"": ["_pattern", "_errmsg"],
   "super": "Object",
   toString$0: function() {
    return 'IllegalJSRegExpException: \'' + $.S(this._pattern) + '\' \'' + this._errmsg + '\'';
  }
  };
  
  $$.Object = {"": [],
   "super": "",
   operator$eq$1: function(other) {
    return this === other;
  },
   get$hashCode: function() {
    return $.Primitives_objectHashCode(this);
  },
   toString$0: function() {
    return $.Primitives_objectToString(this);
  }
  };
  
  $$.DoubleLinkedQueueEntry = {"": ["_previous!", "_next=", "_element?"],
   "super": "Object",
   _link$2: function(p, n) {
    this._next = n;
    this._previous = p;
    p.set$_next(this);
    n.set$_previous(this);
  },
   prepend$1: function(e) {
    $.DoubleLinkedQueueEntry$(e)._link$2(this._previous, this);
  },
   remove$0: function() {
    var t1 = this._next;
    this._previous.set$_next(t1);
    t1 = this._previous;
    this._next.set$_previous(t1);
    this._next = null;
    this._previous = null;
    return this._element;
  },
   _asNonSentinelEntry$0: function() {
    return this;
  },
   previousEntry$0: function() {
    return this._previous._asNonSentinelEntry$0();
  },
   get$element: function() {
    return this._element;
  },
   DoubleLinkedQueueEntry$1: function(e) {
    this._element = e;
  }
  };
  
  $$._DoubleLinkedQueueEntrySentinel = {"": ["_previous", "_next", "_element"],
   "super": "DoubleLinkedQueueEntry",
   remove$0: function() {
    throw $.$$throw($.StateError$('Empty queue'));
  },
   _asNonSentinelEntry$0: function() {
    return
  ;
  },
   get$element: function() {
    throw $.$$throw($.StateError$('Empty queue'));
  },
   _DoubleLinkedQueueEntrySentinel$0: function() {
    this._link$2(this, this);
  }
  };
  
  $$.DoubleLinkedQueue = {"": ["_sentinel"],
   "super": "Object",
   addLast$1: function(value) {
    this._sentinel.prepend$1(value);
  },
   add$1: function(value) {
    this._sentinel.prepend$1(value);
  },
   removeLast$0: function() {
    return this._sentinel._previous.remove$0();
  },
   lastEntry$0: function() {
    return this._sentinel.previousEntry$0();
  },
   get$length: function() {
    var t1 = {};
    t1.counter_1 = 0;
    this.forEach$1(new $.DoubleLinkedQueue_length__(t1));
    return t1.counter_1;
  },
   get$isEmpty: function() {
    var t1 = this._sentinel;
    return t1._next === t1;
  },
   clear$0: function() {
    var t1 = this._sentinel;
    t1._next = t1;
    t1 = this._sentinel;
    t1._previous = t1;
  },
   forEach$1: function(f) {
    var entry = this._sentinel._next;
    for (; !(entry === this._sentinel);) {
      var nextEntry = entry.get$_next();
      f.call$1(entry.get$_element());
      entry = nextEntry;
    }
  },
   iterator$0: function() {
    return $._DoubleLinkedQueueIterator$(this._sentinel);
  },
   toString$0: function() {
    return $.Collections_collectionToString(this);
  },
   DoubleLinkedQueue$0: function() {
    this._sentinel = $._DoubleLinkedQueueEntrySentinel$();
  },
   is$Collection: function() { return true; }
  };
  
  $$._DoubleLinkedQueueIterator = {"": ["_sentinel", "_currentEntry"],
   "super": "Object",
   get$hasNext: function() {
    return !(this._currentEntry.get$_next() === this._sentinel);
  },
   next$0: function() {
    if (this.get$hasNext() !== true)
      throw $.$$throw($.StateError$('No more elements'));
    this._currentEntry = this._currentEntry.get$_next();
    return this._currentEntry.get$element();
  },
   _DoubleLinkedQueueIterator$1: function(_sentinel) {
    this._currentEntry = this._sentinel;
  }
  };
  
  $$._StringBufferImpl = {"": ["_buffer", "_length"],
   "super": "Object",
   get$length: function() {
    return this._length;
  },
   get$isEmpty: function() {
    return this._length === 0;
  },
   add$1: function(obj) {
    var str = $.toString(obj);
    if (str == null || $.get$isEmpty(str) === true)
      return this;
    $.add$1(this._buffer, str);
    this._length = $.add(this._length, $.get$length(str));
    return this;
  },
   clear$0: function() {
    this._buffer = $._ListImpl_List(null);
    this._length = 0;
    return this;
  },
   toString$0: function() {
    if ($.get$length(this._buffer) === 0)
      return '';
    if ($.get$length(this._buffer) === 1)
      return $.index(this._buffer, 0);
    var result = $.stringJoinUnchecked($._StringImpl__toJsStringArray(this._buffer), '');
    $.clear(this._buffer);
    $.add$1(this._buffer, result);
    return result;
  },
   _StringBufferImpl$1: function(content$) {
    this.clear$0();
    this.add$1(content$);
  }
  };
  
  $$.ListIterator = {"": ["i", "list"],
   "super": "Object",
   get$hasNext: function() {
    return this.i < this.list.length;
  },
   next$0: function() {
    if (this.get$hasNext() !== true)
      throw $.$$throw($.StateError$('No more elements'));
    var value = this.list[this.i];
    this.i = this.i + 1;
    return value;
  }
  };
  
  $$.Closure = {"": [],
   "super": "Object",
   toString$0: function() {
    return 'Closure';
  }
  };
  
  $$.MetaInfo = {"": ["_tag?", "_tags", "_set?"],
   "super": "Object"
  };
  
  $$._AbstractWorkerEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._AudioContextEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._BatteryManagerEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._BodyElementEventsImpl = {"": ["_ptr"],
   "super": "_ElementEventsImpl"
  };
  
  $$._DOMApplicationCacheEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._DedicatedWorkerContextEventsImpl = {"": ["_ptr"],
   "super": "_WorkerContextEventsImpl"
  };
  
  $$._DocumentEventsImpl = {"": ["_ptr"],
   "super": "_ElementEventsImpl",
   get$click: function() {
    return this.operator$index$1('click');
  }
  };
  
  $$._ElementEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl",
   get$click: function() {
    return this.operator$index$1('click');
  }
  };
  
  $$._EventSourceEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._EventsImpl = {"": ["_ptr"],
   "super": "Object",
   operator$index$1: function(type) {
    return $._EventListenerListImpl$(this._ptr, type);
  }
  };
  
  $$._EventListenerListImpl = {"": ["_ptr", "_type"],
   "super": "Object",
   add$2: function(listener, useCapture) {
    this._ptr.$dom_addEventListener$3(this._type, listener, useCapture);
    return this;
  },
   add$1: function(listener) {
    return this.add$2(listener,false)
  }
  };
  
  $$._FileReaderEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._FileWriterEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._FrameSetElementEventsImpl = {"": ["_ptr"],
   "super": "_ElementEventsImpl"
  };
  
  $$._HttpRequestEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._HttpRequestUploadEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._IDBDatabaseEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._IDBOpenDBRequestEventsImpl = {"": ["_ptr"],
   "super": "_IDBRequestEventsImpl"
  };
  
  $$._IDBRequestEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._IDBTransactionEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._IDBVersionChangeRequestEventsImpl = {"": ["_ptr"],
   "super": "_IDBRequestEventsImpl"
  };
  
  $$._InputElementEventsImpl = {"": ["_ptr"],
   "super": "_ElementEventsImpl"
  };
  
  $$._LocalWindowEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl",
   get$click: function() {
    return this.operator$index$1('click');
  }
  };
  
  $$._MediaElementEventsImpl = {"": ["_ptr"],
   "super": "_ElementEventsImpl"
  };
  
  $$._MediaStreamEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._MediaStreamTrackEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._MediaStreamTrackListEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._MessagePortEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._NotificationEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl",
   get$click: function() {
    return this.operator$index$1('click');
  }
  };
  
  $$._PeerConnection00EventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._RTCDataChannelEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._RTCPeerConnectionEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._SVGElementInstanceEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl",
   get$click: function() {
    return this.operator$index$1('click');
  }
  };
  
  $$._ScriptProcessorNodeEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._SharedWorkerContextEventsImpl = {"": ["_ptr"],
   "super": "_WorkerContextEventsImpl"
  };
  
  $$._SpeechRecognitionEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._TextTrackCueEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._TextTrackEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._TextTrackListEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._WebSocketEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._WorkerContextEventsImpl = {"": ["_ptr"],
   "super": "_EventsImpl"
  };
  
  $$._WorkerEventsImpl = {"": ["_ptr"],
   "super": "_AbstractWorkerEventsImpl"
  };
  
  $$._FixedSizeListIterator = {"": ["_lib_length", "_array", "_pos"],
   "super": "_VariableSizeListIterator",
   get$hasNext: function() {
    return $.gt(this._lib_length, this._pos);
  }
  };
  
  $$._VariableSizeListIterator = {"": [],
   "super": "Object",
   get$hasNext: function() {
    return $.gt($.get$length(this._array), this._pos);
  },
   next$0: function() {
    if (this.get$hasNext() !== true)
      throw $.$$throw($.StateError$('No more elements'));
    var t1 = this._array;
    if (typeof t1 !== 'string' && (typeof t1 !== 'object' || t1 === null || t1.constructor !== Array && !t1.is$JavaScriptIndexingBehavior()))
      return this.next$0$bailout(1, t1);
    var t3 = this._pos;
    this._pos = t3 + 1;
    if (t3 < 0 || t3 >= t1.length)
      throw $.ioore(t3);
    return t1[t3];
  },
   next$0$bailout: function(state0, t1) {
    var t3 = this._pos;
    this._pos = t3 + 1;
    return $.index(t1, t3);
  }
  };
  
  $$._convertDartToNative_PrepareForStructuredClone_findSlot = {"": ["copies_3", "values_2"],
   "super": "Closure",
   call$1: function(value) {
    var t1 = this.values_2;
    if (typeof t1 !== 'string' && (typeof t1 !== 'object' || t1 === null || t1.constructor !== Array && !t1.is$JavaScriptIndexingBehavior()))
      return this.call$1$bailout(1, value, t1);
    var length$ = t1.length;
    for (var i = 0; i < length$; ++i) {
      var t2 = t1[i];
      if (t2 == null ? value == null : t2 === value)
        return i;
    }
    $.add$1(t1, value);
    $.add$1(this.copies_3, null);
    return length$;
  },
   call$1$bailout: function(state0, value, t1) {
    var length$ = $.get$length(t1);
    for (var i = 0; $.ltB(i, length$); ++i) {
      var t2 = $.index(t1, i);
      if (t2 == null ? value == null : t2 === value)
        return i;
    }
    $.add$1(t1, value);
    $.add$1(this.copies_3, null);
    return length$;
  }
  };
  
  $$._convertDartToNative_PrepareForStructuredClone_readSlot = {"": ["copies_4"],
   "super": "Closure",
   call$1: function(i) {
    return $.index(this.copies_4, i);
  }
  };
  
  $$._convertDartToNative_PrepareForStructuredClone_writeSlot = {"": ["copies_5"],
   "super": "Closure",
   call$2: function(i, x) {
    $.indexSet(this.copies_5, i, x);
  }
  };
  
  $$._convertDartToNative_PrepareForStructuredClone_cleanupSlots = {"": [],
   "super": "Closure",
   call$0: function() {
  }
  };
  
  $$._convertDartToNative_PrepareForStructuredClone_walk = {"": ["writeSlot_8", "readSlot_7", "findSlot_6"],
   "super": "Closure",
   call$1: function(e) {
    var t1 = {};
    if (e == null)
      return e;
    if (typeof e === 'boolean')
      return e;
    if (typeof e === 'number')
      return e;
    if (typeof e === 'string')
      return e;
    if (typeof e === 'object' && e !== null && !!e.is$Date)
      throw $.$$throw($.CTC1);
    if (typeof e === 'object' && e !== null && !!e.is$RegExp)
      throw $.$$throw($.CTC2);
    if (typeof e === 'object' && e !== null && e.is$_FileImpl())
      return e;
    if (typeof e === 'object' && e !== null && e.is$File())
      throw $.$$throw($.CTC3);
    if (typeof e === 'object' && e !== null && e.is$_BlobImpl())
      return e;
    if (typeof e === 'object' && e !== null && e.is$Blob())
      throw $.$$throw($.CTC4);
    if (typeof e === 'object' && e !== null && e.is$_FileListImpl())
      return e;
    if (typeof e === 'object' && e !== null && e.is$_ImageDataImpl())
      return e;
    if (typeof e === 'object' && e !== null && e.is$ImageData())
      throw $.$$throw($.CTC5);
    if (typeof e === 'object' && e !== null && e.is$_ArrayBufferImpl())
      return e;
    if (typeof e === 'object' && e !== null && e.is$ArrayBuffer())
      throw $.$$throw($.CTC6);
    if (typeof e === 'object' && e !== null && e.is$_ArrayBufferViewImpl())
      return e;
    if (typeof e === 'object' && e !== null && e.is$ArrayBufferView())
      throw $.$$throw($.CTC7);
    if (typeof e === 'object' && e !== null && e.is$Map()) {
      var slot = this.findSlot_6.call$1(e);
      t1.copy_1 = this.readSlot_7.call$1(slot);
      var t2 = t1.copy_1;
      if (!(t2 == null))
        return t2;
      t1.copy_1 = {};
      this.writeSlot_8.call$2(slot, t1.copy_1);
      e.forEach$1(new $._convertDartToNative_PrepareForStructuredClone_walk_anon(t1, this));
      return t1.copy_1;
    }
    if (typeof e === 'object' && e !== null && (e.constructor === Array || e.is$List())) {
      if (typeof e !== 'object' || e === null || (e.constructor !== Array || !!e.immutable$list) && !e.is$JavaScriptIndexingBehavior())
        return this.call$1$bailout(1, e, 0, 0, 0, 0, 0, 0);
      var length$ = e.length;
      slot = this.findSlot_6.call$1(e);
      t2 = this.readSlot_7;
      var copy = t2.call$1(slot);
      if (!(copy == null)) {
        if (true === copy) {
          copy = new Array(length$);
          this.writeSlot_8.call$2(slot, copy);
        }
        return copy;
      }
      t1 = e instanceof Array && !!!(e.immutable$list);
      var t3 = this.writeSlot_8;
      if (t1) {
        t3.call$2(slot, true);
        for (var i = 0; i < length$; ++i) {
          if (i >= e.length)
            throw $.ioore(i);
          var element = e[i];
          var elementCopy = this.call$1(element);
          if (!(elementCopy == null ? element == null : elementCopy === element)) {
            copy = t2.call$1(slot);
            if (true === copy) {
              copy = new Array(length$);
              t3.call$2(slot, copy);
            }
            if (typeof copy !== 'object' || copy === null || (copy.constructor !== Array || !!copy.immutable$list) && !copy.is$JavaScriptIndexingBehavior())
              return this.call$1$bailout(2, e, t3, length$, elementCopy, slot, i, copy);
            for (var t1 = e.length, t2 = copy.length, j = 0; j < i; ++j) {
              if (j >= t1)
                throw $.ioore(j);
              var t4 = e[j];
              if (j >= t2)
                throw $.ioore(j);
              copy[j] = t4;
            }
            if (i >= t2)
              throw $.ioore(i);
            copy[i] = elementCopy;
            ++i;
            break
  ;        }
        }
        if (copy == null) {
          t3.call$2(slot, e);
          copy = e;
        }
      } else {
        copy = new Array(length$);
        t3.call$2(slot, copy);
        i = 0;
      }
      if (typeof copy !== 'object' || copy === null || (copy.constructor !== Array || !!copy.immutable$list) && !copy.is$JavaScriptIndexingBehavior())
        return this.call$1$bailout(3, e, copy, i, length$, 0, 0, 0);
      for (; i < length$; ++i) {
        if (i >= e.length)
          throw $.ioore(i);
        t1 = this.call$1(e[i]);
        if (i >= copy.length)
          throw $.ioore(i);
        copy[i] = t1;
      }
      return copy;
    }
    throw $.$$throw($.CTC8);
  },
   call$1$bailout: function(state0, env0, env1, env2, env3, env4, env5, env6) {
    switch (state0) {
      case 1:
        var e = env0;
        break
  ;    case 2:
        e = env0;
        t3 = env1;
        length$ = env2;
        elementCopy = env3;
        slot = env4;
        i = env5;
        copy = env6;
        break
  ;    case 3:
        e = env0;
        copy = env1;
        i = env2;
        length$ = env3;
        break
  ;  }
    switch (state0) {
      case 0:
        var t1 = {};
        if (e == null)
          return e;
        if (typeof e === 'boolean')
          return e;
        if (typeof e === 'number')
          return e;
        if (typeof e === 'string')
          return e;
        if (typeof e === 'object' && e !== null && !!e.is$Date)
          throw $.$$throw($.CTC1);
        if (typeof e === 'object' && e !== null && !!e.is$RegExp)
          throw $.$$throw($.CTC2);
        if (typeof e === 'object' && e !== null && e.is$_FileImpl())
          return e;
        if (typeof e === 'object' && e !== null && e.is$File())
          throw $.$$throw($.CTC3);
        if (typeof e === 'object' && e !== null && e.is$_BlobImpl())
          return e;
        if (typeof e === 'object' && e !== null && e.is$Blob())
          throw $.$$throw($.CTC4);
        if (typeof e === 'object' && e !== null && e.is$_FileListImpl())
          return e;
        if (typeof e === 'object' && e !== null && e.is$_ImageDataImpl())
          return e;
        if (typeof e === 'object' && e !== null && e.is$ImageData())
          throw $.$$throw($.CTC5);
        if (typeof e === 'object' && e !== null && e.is$_ArrayBufferImpl())
          return e;
        if (typeof e === 'object' && e !== null && e.is$ArrayBuffer())
          throw $.$$throw($.CTC6);
        if (typeof e === 'object' && e !== null && e.is$_ArrayBufferViewImpl())
          return e;
        if (typeof e === 'object' && e !== null && e.is$ArrayBufferView())
          throw $.$$throw($.CTC7);
        if (typeof e === 'object' && e !== null && e.is$Map()) {
          var slot = this.findSlot_6.call$1(e);
          t1.copy_1 = this.readSlot_7.call$1(slot);
          var t2 = t1.copy_1;
          if (!(t2 == null))
            return t2;
          t1.copy_1 = {};
          this.writeSlot_8.call$2(slot, t1.copy_1);
          e.forEach$1(new $._convertDartToNative_PrepareForStructuredClone_walk_anon(t1, this));
          return t1.copy_1;
        }
      default:
        if (state0 === 3 || state0 === 2 || state0 === 1 || state0 === 0 && typeof e === 'object' && e !== null && (e.constructor === Array || e.is$List()))
          switch (state0) {
            case 0:
            case 1:
              state0 = 0;
              var length$ = $.get$length(e);
              slot = this.findSlot_6.call$1(e);
              t2 = this.readSlot_7;
              var copy = t2.call$1(slot);
              if (!(copy == null)) {
                if (true === copy) {
                  copy = new Array(length$);
                  this.writeSlot_8.call$2(slot, copy);
                }
                return copy;
              }
              t1 = e instanceof Array && !!!(e.immutable$list);
              var t3 = this.writeSlot_8;
            case 2:
              if (state0 === 2 || state0 === 0 && t1)
                switch (state0) {
                  case 0:
                    t3.call$2(slot, true);
                    var i = 0;
                  case 2:
                    L0:
                      while (true)
                        switch (state0) {
                          case 0:
                            if (!$.ltB(i, length$))
                              break L0
  ;                          var element = $.index(e, i);
                            var elementCopy = this.call$1(element);
                          case 2:
                            if (state0 === 2 || state0 === 0 && !(elementCopy == null ? element == null : elementCopy === element))
                              switch (state0) {
                                case 0:
                                  copy = t2.call$1(slot);
                                  if (true === copy) {
                                    copy = new Array(length$);
                                    t3.call$2(slot, copy);
                                  }
                                case 2:
                                  state0 = 0;
                                  for (var j = 0; j < i; ++j)
                                    $.indexSet(copy, j, $.index(e, j));
                                  $.indexSet(copy, i, elementCopy);
                                  ++i;
                                  break L0
  ;                            }
                            ++i;
                        }
                    if (copy == null) {
                      t3.call$2(slot, e);
                      copy = e;
                    }
                }
              else {
                copy = new Array(length$);
                t3.call$2(slot, copy);
                i = 0;
              }
            case 3:
              state0 = 0;
              for (; $.ltB(i, length$); ++i)
                $.indexSet(copy, i, this.call$1($.index(e, i)));
              return copy;
          }
        throw $.$$throw($.CTC8);
    }
  }
  };
  
  $$._convertDartToNative_PrepareForStructuredClone_walk_anon = {"": ["box_0", "walk_9"],
   "super": "Closure",
   call$2: function(key, value) {
    this.box_0.copy_1[key] = this.walk_9.call$1(value);
  }
  };
  
  $$.Maps__emitMap_anon = {"": ["box_0", "visiting_3", "result_2"],
   "super": "Closure",
   call$2: function(k, v) {
    var t1 = this.box_0;
    if (t1.first_1 !== true)
      $.add$1(this.result_2, ', ');
    t1.first_1 = false;
    t1 = this.result_2;
    var t2 = this.visiting_3;
    $.Collections__emitObject(k, t1, t2);
    $.add$1(t1, ': ');
    $.Collections__emitObject(v, t1, t2);
  }
  };
  
  $$.DoubleLinkedQueue_length__ = {"": ["box_0"],
   "super": "Closure",
   call$1: function(element) {
    var t1 = this.box_0;
    t1.counter_1 = $.add(t1.counter_1, 1);
  }
  };
  
  $$.LinkedHashMapImplementation_forEach__ = {"": ["f_0"],
   "super": "Closure",
   call$1: function(entry) {
    this.f_0.call$2(entry.get$key(), entry.get$value());
  }
  };
  
  $$.NoSuchMethodError_toString_anon = {"": ["box_0"],
   "super": "Closure",
   call$2: function(key, value) {
    var t1 = this.box_0;
    if ($.gtB(t1.i_2, 0))
      $.add$1(t1.sb_1, ', ');
    $.add$1(t1.sb_1, key);
    $.add$1(t1.sb_1, ': ');
    $.add$1(t1.sb_1, $.NoSuchMethodError_safeToString(value));
    t1.i_2 = $.add(t1.i_2, 1);
  }
  };
  
  $$.invokeClosure_anon = {"": ["closure_0"],
   "super": "Closure",
   call$0: function() {
    return this.closure_0.call$0();
  }
  };
  
  $$.invokeClosure_anon0 = {"": ["closure_2", "arg1_1"],
   "super": "Closure",
   call$0: function() {
    return this.closure_2.call$1(this.arg1_1);
  }
  };
  
  $$.invokeClosure_anon1 = {"": ["arg2_5", "closure_4", "arg1_3"],
   "super": "Closure",
   call$0: function() {
    return this.closure_4.call$2(this.arg1_3, this.arg2_5);
  }
  };
  
  $$.Closure = {"": [],
   "super": "Object",
   toString$0: function() {
    return 'Closure';
  }
  };
  
  $$.BoundClosure = {'':
  ['self', 'target'],
  'super': 'Closure',
  call$0: function() { return this.self[this.target](); }
  };
  $._StringImpl__toJsStringArray = function(strings) {
    if (typeof strings !== 'object' || strings === null || (strings.constructor !== Array || !!strings.immutable$list) && !strings.is$JavaScriptIndexingBehavior())
      return $._StringImpl__toJsStringArray$bailout(1, strings);
    $.checkNull(strings);
    var length$ = strings.length;
    if ($.isJsArray(strings)) {
      for (var i = 0; i < length$; ++i) {
        if (i >= strings.length)
          throw $.ioore(i);
        var string = strings[i];
        $.checkNull(string);
        if (!(typeof string === 'string'))
          throw $.$$throw($.ArgumentError$(string));
      }
      var array = strings;
    } else {
      array = $._ListImpl_List(length$);
      for (i = 0; i < length$; ++i) {
        if (i >= strings.length)
          throw $.ioore(i);
        string = strings[i];
        $.checkNull(string);
        if (!(typeof string === 'string'))
          throw $.$$throw($.ArgumentError$(string));
        array[i] = string;
      }
    }
    return array;
  };
  
  $._ListImpl_List = function(length$) {
    return $.Primitives_newList(length$);
  };
  
  $.StackOverflowError$ = function() {
    return new $.StackOverflowError();
  };
  
  $._RTCPeerConnectionEventsImpl$ = function(_ptr) {
    return new $._RTCPeerConnectionEventsImpl(_ptr);
  };
  
  $.HashMapImplementation$ = function() {
    var t1 = new $.HashMapImplementation(null, null, null, null, null);
    t1.HashMapImplementation$0();
    return t1;
  };
  
  $.HashMapImplementation__computeLoadLimit = function(capacity) {
    return $.tdiv(capacity * 3, 4);
  };
  
  $.add = function(a, b) {
    return typeof a === 'number' && typeof b === 'number' ? a + b : $.add$slow(a, b);
  };
  
  $.sub = function(a, b) {
    return typeof a === 'number' && typeof b === 'number' ? a - b : $.sub$slow(a, b);
  };
  
  $.HashMapImplementation__nextProbe = function(currentProbe, numberOfProbes, length$) {
    return $.and($.add(currentProbe, numberOfProbes), $.sub(length$, 1));
  };
  
  $.mul = function(a, b) {
    return typeof a === 'number' && typeof b === 'number' ? a * b : $.mul$slow(a, b);
  };
  
  $.gt = function(a, b) {
    return typeof a === 'number' && typeof b === 'number' ? a > b : $.gt$slow(a, b);
  };
  
  $.gtB = function(a, b) {
    return typeof a === 'number' && typeof b === 'number' ? a > b : $.gt$slow(a, b) === true;
  };
  
  $.geB = function(a, b) {
    return typeof a === 'number' && typeof b === 'number' ? a >= b : $.ge$slow(a, b) === true;
  };
  
  $.ltB = function(a, b) {
    return typeof a === 'number' && typeof b === 'number' ? a < b : $.lt$slow(a, b) === true;
  };
  
  $.index = function(a, index) {
    if (typeof a == "string" || a.constructor === Array) {
      var key = index >>> 0;
      if (key === index && key < a.length)
        return a[key];
    }
    return $.index$slow(a, index);
  };
  
  $.indexSet = function(a, index, value) {
    if (a.constructor === Array && !a.immutable$list) {
      var key = index >>> 0;
      if (key === index && key < a.length) {
        a[key] = value;
        return
  ;
      }
    }
    $.indexSet$slow(a, index, value);
  };
  
  $.checkNumbers = function(a, b) {
    if (typeof a === 'number')
      if (typeof b === 'number')
        return true;
      else {
        $.checkNull(b);
        throw $.$$throw($.ArgumentError$(b));
      }
    return false;
  };
  
  $.isJsArray = function(value) {
    return !(value == null) && value.constructor === Array;
  };
  
  $.add$slow = function(a, b) {
    if ($.checkNumbers(a, b))
      return a + b;
    return a.operator$add$1(b);
  };
  
  $.mul$slow = function(a, b) {
    if ($.checkNumbers(a, b))
      return a * b;
    return a.operator$mul$1(b);
  };
  
  $.sub$slow = function(a, b) {
    if ($.checkNumbers(a, b))
      return a - b;
    return a.operator$sub$1(b);
  };
  
  $.eqB = function(a, b) {
    if (a == null)
      return b == null;
    if (b == null)
      return false;
    if (typeof a === "object")
      if (!!a.operator$eq$1)
        return a.operator$eq$1(b) === true;
    return a === b;
  };
  
  $.gt$slow = function(a, b) {
    if ($.checkNumbers(a, b))
      return a > b;
    return a.operator$gt$1(b);
  };
  
  $.ge$slow = function(a, b) {
    if ($.checkNumbers(a, b))
      return a >= b;
    return a.operator$ge$1(b);
  };
  
  $.lt$slow = function(a, b) {
    if ($.checkNumbers(a, b))
      return a < b;
    return a.operator$lt$1(b);
  };
  
  $.eq = function(a, b) {
    if (a == null)
      return b == null;
    if (b == null)
      return false;
    if (typeof a === "object")
      if (!!a.operator$eq$1)
        return a.operator$eq$1(b);
    return a === b;
  };
  
  $.and = function(a, b) {
    if ($.checkNumbers(a, b))
      return (a & b) >>> 0;
    return a.operator$and$1(b);
  };
  
  $.shr = function(a, b) {
    if ($.checkNumbers(a, b)) {
      if (b < 0)
        throw $.$$throw($.ArgumentError$(b));
      if (a > 0) {
        if (b > 31)
          return 0;
        return a >>> b;
      }
      if (b > 31)
        b = 31;
      return (a >> b) >>> 0;
    }
    return a.operator$shr$1(b);
  };
  
  $.index$slow = function(a, index) {
    if (!(typeof a === 'string'))
      var t1 = !(a == null) && a.constructor === Array;
    else
      t1 = true;
    if (t1) {
      if (!(typeof index === 'number' && Math.floor(index) === index)) {
        if (!(typeof index === 'number'))
          throw $.$$throw($.ArgumentError$(index));
        if (!($.truncate(index) === index))
          throw $.$$throw($.ArgumentError$(index));
      }
      if ($.ltB(index, 0) || $.geB(index, $.get$length(a)))
        throw $.$$throw($.RangeError$value(index));
      return a[index];
    }
    return a.operator$index$1(index);
  };
  
  $.checkMutable = function(list, reason) {
    if (!!(list.immutable$list))
      throw $.$$throw($.UnsupportedError$(reason));
  };
  
  $.S = function(value) {
    var res = $.toString(value);
    if (!(typeof res === 'string'))
      throw $.$$throw($.ArgumentError$(value));
    return res;
  };
  
  $.checkGrowable = function(list, reason) {
    if (!!(list.fixed$length))
      throw $.$$throw($.UnsupportedError$(reason));
  };
  
  $.indexSet$slow = function(a, index, value) {
    if (!(a == null) && a.constructor === Array) {
      if (!(typeof index === 'number' && Math.floor(index) === index))
        throw $.$$throw($.ArgumentError$(index));
      if (index < 0 || $.geB(index, $.get$length(a)))
        throw $.$$throw($.RangeError$value(index));
      $.checkMutable(a, 'indexed set');
      a[index] = value;
      return
  ;
    }
    a.operator$indexSet$2(index, value);
  };
  
  $.iae = function(argument) {
    throw $.$$throw($.ArgumentError$(argument));
  };
  
  $.ioore = function(index) {
    throw $.$$throw($.RangeError$value(index));
  };
  
  $.checkNull = function(object) {
    if (object == null)
      throw $.$$throw($.NullPointerException$(null, $.CTC0));
    return object;
  };
  
  $.checkNum = function(value) {
    if (!(typeof value === 'number')) {
      $.checkNull(value);
      throw $.$$throw($.ArgumentError$(value));
    }
    return value;
  };
  
  $.substringUnchecked = function(receiver, startIndex, endIndex) {
    return receiver.substring(startIndex, endIndex);
  };
  
  $.$$throw = function(ex) {
    if (ex == null)
      ex = $.CTC;
    var jsError = new Error();
    jsError.name = ex;
    jsError.description = ex;
    jsError.dartException = ex;
    jsError.toString = $.toStringWrapper.call$0;
    throw jsError;
  };
  
  $.toStringWrapper = function() {
    return $.toString(this.dartException);
  };
  
  $.unwrapException = function(ex) {
    if ("dartException" in ex)
      return ex.dartException;
    var message = ex.message;
    if (ex instanceof TypeError) {
      var type = ex.type;
      var name$ = ex.arguments ? ex.arguments[0] : "";
      if ($.eqB(type, 'property_not_function') || $.eqB(type, 'called_non_callable') || $.eqB(type, 'non_object_property_call') || $.eqB(type, 'non_object_property_load'))
        return $.NullPointerException$(null, $.CTC0);
      else if ($.eqB(type, 'undefined_method'))
        return $.NoSuchMethodError$('', name$, [], $.makeLiteralMap([]), null);
      var ieErrorCode = ex.number & 0xffff;
      var ieFacilityNumber = ex.number>>16 & 0x1FFF;
      if (typeof message === 'string')
        if ($.endsWith(message, 'is null') === true || $.endsWith(message, 'is undefined') === true || $.endsWith(message, 'is null or undefined') === true)
          return $.NullPointerException$(null, $.CTC0);
        else {
          if ($.contains$1(message, ' is not a function') !== true)
            var t1 = ieErrorCode === 438 && ieFacilityNumber === 10;
          else
            t1 = true;
          if (t1)
            return $.NoSuchMethodError$('', '<unknown>', [], $.makeLiteralMap([]), null);
        }
      return $._ExceptionImplementation$(typeof message === 'string' ? message : '');
    }
    if (ex instanceof RangeError) {
      if (typeof message === 'string' && $.contains$1(message, 'call stack') === true)
        return $.StackOverflowError$();
      return $.ArgumentError$('');
    }
    if (typeof InternalError == 'function' && ex instanceof InternalError)
      if (typeof message === 'string' && message === 'too much recursion')
        return $.StackOverflowError$();
    return ex;
  };
  
  $.checkString = function(value) {
    if (!(typeof value === 'string')) {
      $.checkNull(value);
      throw $.$$throw($.ArgumentError$(value));
    }
    return value;
  };
  
  $.makeLiteralMap = function(keyValuePairs) {
    var iterator = $.iterator(keyValuePairs);
    var result = $.LinkedHashMapImplementation$();
    for (; iterator.get$hasNext() === true;)
      result.operator$indexSet$2(iterator.next$0(), iterator.next$0());
    return result;
  };
  
  $.tdiv = function(a, b) {
    if ($.checkNumbers(a, b))
      return $.truncate(a / b);
    return a.operator$tdiv$1(b);
  };
  
  $.convertDartClosureToJS = function(closure, arity) {
    if (closure == null)
      return
  ;
    var function$ = closure.$identity;
    if (!!function$)
      return function$;
    function$ = function() {
      return $.invokeClosure.call$5(closure, $, arity, arguments[0], arguments[1]);
    };
    closure.$identity = function$;
    return function$;
  };
  
  $.invokeClosure = function(closure, isolate, numberOfArguments, arg1, arg2) {
    if ($.eqB(numberOfArguments, 0))
      return new $.invokeClosure_anon(closure).call$0();
    else if ($.eqB(numberOfArguments, 1))
      return new $.invokeClosure_anon0(closure, arg1).call$0();
    else if ($.eqB(numberOfArguments, 2))
      return new $.invokeClosure_anon1(arg2, closure, arg1).call$0();
    else
      throw $.$$throw($._ExceptionImplementation$('Unsupported number of arguments for wrapped closure'));
  };
  
  $._MessagePortEventsImpl$ = function(_ptr) {
    return new $._MessagePortEventsImpl(_ptr);
  };
  
  $.typeNameInSafari = function(obj) {
    var name$ = $.constructorNameFallback(obj);
    if (name$ === 'Window')
      return 'DOMWindow';
    if (name$ === 'CanvasPixelArray')
      return 'Uint8ClampedArray';
    if (name$ === 'WebKitMutationObserver')
      return 'MutationObserver';
    if (name$ === 'AudioChannelMerger')
      return 'ChannelMergerNode';
    if (name$ === 'AudioChannelSplitter')
      return 'ChannelSplitterNode';
    if (name$ === 'AudioGainNode')
      return 'GainNode';
    if (name$ === 'AudioPannerNode')
      return 'PannerNode';
    if (name$ === 'JavaScriptAudioNode')
      return 'ScriptProcessorNode';
    if (name$ === 'Oscillator')
      return 'OscillatorNode';
    if (name$ === 'RealtimeAnalyserNode')
      return 'AnalyserNode';
    return name$;
  };
  
  $.constructorNameFallback = function(object) {
    if (object == null)
      return 'Null';
    var constructor$ = object.constructor;
    if (typeof(constructor$) === 'function') {
      var name$ = constructor$.name;
      if (typeof name$ === 'string')
        var t1 = !(name$ === '') && !(name$ === 'Object') && !(name$ === 'Function.prototype');
      else
        t1 = false;
      if (t1)
        return name$;
    }
    var string = Object.prototype.toString.call(object);
    return string.substring(8, string.length - 1);
  };
  
  $.typeNameInIE = function(obj) {
    var name$ = $.constructorNameFallback(obj);
    if (name$ === 'Window')
      return 'DOMWindow';
    if (name$ === 'Document') {
      if (!!obj.xmlVersion)
        return 'Document';
      return 'HTMLDocument';
    }
    if (name$ === 'ApplicationCache')
      return 'DOMApplicationCache';
    if (name$ === 'CanvasPixelArray')
      return 'Uint8ClampedArray';
    if (name$ === 'DataTransfer')
      return 'Clipboard';
    if (name$ === 'DragEvent')
      return 'MouseEvent';
    if (name$ === 'HTMLDDElement')
      return 'HTMLElement';
    if (name$ === 'HTMLDTElement')
      return 'HTMLElement';
    if (name$ === 'HTMLTableDataCellElement')
      return 'HTMLTableCellElement';
    if (name$ === 'HTMLTableHeaderCellElement')
      return 'HTMLTableCellElement';
    if (name$ === 'HTMLPhraseElement')
      return 'HTMLElement';
    if (name$ === 'MSStyleCSSProperties')
      return 'CSSStyleDeclaration';
    if (name$ === 'MouseWheelEvent')
      return 'WheelEvent';
    return name$;
  };
  
  $.getFunctionForTypeNameOf = function() {
    if (!(typeof(navigator) === 'object'))
      return $.typeNameInChrome;
    var userAgent = navigator.userAgent;
    if (userAgent.indexOf('Chrome') !== -1 || userAgent.indexOf('DumpRenderTree') !== -1)
      return $.typeNameInChrome;
    else if (userAgent.indexOf('Firefox') !== -1)
      return $.typeNameInFirefox;
    else if (userAgent.indexOf('MSIE') !== -1)
      return $.typeNameInIE;
    else if (userAgent.indexOf('Opera') !== -1)
      return $.typeNameInOpera;
    else if (userAgent.indexOf('AppleWebKit') !== -1)
      return $.typeNameInSafari;
    else
      return $.constructorNameFallback;
  };
  
  $.getTypeNameOf = function(obj) {
    if ($._getTypeNameOf == null)
      $._getTypeNameOf = $.getFunctionForTypeNameOf();
    return $._getTypeNameOf.call$1(obj);
  };
  
  $.toStringForNativeObject = function(obj) {
    return 'Instance of ' + $.getTypeNameOf(obj);
  };
  
  $.hashCodeForNativeObject = function(object) {
    return $.Primitives_objectHashCode(object);
  };
  
  $.typeNameInChrome = function(obj) {
    var name$ = obj.constructor.name;
    if (name$ === 'Window')
      return 'DOMWindow';
    if (name$ === 'CanvasPixelArray')
      return 'Uint8ClampedArray';
    if (name$ === 'WebKitMutationObserver')
      return 'MutationObserver';
    if (name$ === 'AudioChannelMerger')
      return 'ChannelMergerNode';
    if (name$ === 'AudioChannelSplitter')
      return 'ChannelSplitterNode';
    if (name$ === 'AudioGainNode')
      return 'GainNode';
    if (name$ === 'AudioPannerNode')
      return 'PannerNode';
    if (name$ === 'JavaScriptAudioNode')
      return 'ScriptProcessorNode';
    if (name$ === 'Oscillator')
      return 'OscillatorNode';
    if (name$ === 'RealtimeAnalyserNode')
      return 'AnalyserNode';
    return name$;
  };
  
  $.typeNameInOpera = function(obj) {
    var name$ = $.constructorNameFallback(obj);
    if (name$ === 'Window')
      return 'DOMWindow';
    return name$;
  };
  
  $.defineProperty = function(obj, property, value) {
    Object.defineProperty(obj, property,
        {value: value, enumerable: false, writable: true, configurable: true});
  };
  
  $._dynamicMetadata = function(table) {
    $dynamicMetadata = table;
  };
  
  $.dynamicSetMetadata = function(inputTable) {
    var t1 = $.buildDynamicMetadata(inputTable);
    $._dynamicMetadata(t1);
  };
  
  $.regExpGetNative = function(regExp) {
    var r = regExp._re;
    return r == null ? regExp._re = $.regExpMakeNative(regExp, false) : r;
  };
  
  $.buildDynamicMetadata = function(inputTable) {
    var result = [];
    for (var i = 0; i < inputTable.length; ++i) {
      var tag = inputTable[i][0];
      var array = inputTable[i];
      var tags = array[1];
      var set = {};
      var tagNames = tags.split('|');
      for (var index = 1, j = 0; j < tagNames.length; ++j) {
        set[tagNames[j]] = true;
        index = j;
        array = tagNames;
      }
      result.push($.MetaInfo$(tag, tags, set));
    }
    return result;
  };
  
  $.regExpTest = function(regExp, str) {
    return $.regExpGetNative(regExp).test(str);
  };
  
  $.regExpMakeNative = function(regExp, global) {
    var pattern = regExp.get$pattern();
    var multiLine = regExp.get$multiLine();
    var ignoreCase = regExp.get$ignoreCase();
    $.checkString(pattern);
    var sb = $.StringBuffer_StringBuffer('');
    if (multiLine === true)
      $.add$1(sb, 'm');
    if (ignoreCase === true)
      $.add$1(sb, 'i');
    if (global === true)
      $.add$1(sb, 'g');
    try {
      return new RegExp(pattern, $.toString(sb));
    } catch (exception) {
      var t1 = $.unwrapException(exception);
      var e = t1;
      throw $.$$throw($.IllegalJSRegExpException$(pattern, String(e)));
    }
  
  };
  
  $.dynamicBind = function(obj, name$, methods, arguments$) {
    var tag = $.getTypeNameOf(obj);
    var method = methods[tag];
    if (method == null && !($._dynamicMetadata0() == null))
      for (var i = 0; i < $._dynamicMetadata0().length; ++i) {
        var entry = $._dynamicMetadata0()[i];
        if (entry.get$_set()[tag]) {
          method = methods[entry.get$_tag()];
          if (!(method == null))
            break
  ;      }
      }
    if (method == null)
      method = methods['Object'];
    var proto = Object.getPrototypeOf(obj);
    if (method == null)
      method = function () {if (Object.getPrototypeOf(this) === proto) {throw new TypeError(name$ + " is not a function");} else {return Object.prototype[name$].apply(this, arguments);}};
    if (!proto.hasOwnProperty(name$))
      $.defineProperty(proto, name$, method);
    return method.apply(obj, arguments$);
  };
  
  $.dynamicFunction = function(name$) {
    var f = Object.prototype[name$];
    if (!(f == null) && !!f.methods)
      return f.methods;
    var methods = {};
    var dartMethod = Object.getPrototypeOf($.CTC12)[name$];
    if (!(dartMethod == null))
      methods['Object'] = dartMethod;
    var bind = function() {return $.dynamicBind.call$4(this, name$, methods, Array.prototype.slice.call(arguments));};
    bind.methods = methods;
    $.defineProperty(Object.prototype, name$, bind);
    return methods;
  };
  
  $.stringContainsUnchecked = function(receiver, other, startIndex) {
    return !$.eqB($.indexOf$2(receiver, other, startIndex), -1);
  };
  
  $.stringReplaceJS = function(receiver, replacer, to) {
    return receiver.replace(replacer, to.replace('$', '$$$$'));
  };
  
  $.stringJoinUnchecked = function(array, separator) {
    return array.join(separator);
  };
  
  $._dynamicMetadata0 = function() {
    if (typeof($dynamicMetadata) === 'undefined') {
      var t1 = [];
      $._dynamicMetadata(t1);
    }
    return $dynamicMetadata;
  };
  
  $.add$1 = function(receiver, value) {
    if ($.isJsArray(receiver)) {
      $.checkGrowable(receiver, 'add');
      receiver.push(value);
      return
  ;
    }
    return receiver.add$1(value);
  };
  
  $.removeLast = function(receiver) {
    if ($.isJsArray(receiver)) {
      $.checkGrowable(receiver, 'removeLast');
      if ($.eqB($.get$length(receiver), 0))
        throw $.$$throw($.RangeError$value(-1));
      return receiver.pop();
    }
    return receiver.removeLast$0();
  };
  
  $.get$length = function(receiver) {
    if (typeof receiver === 'string' || $.isJsArray(receiver))
      return receiver.length;
    else
      return receiver.get$length();
  };
  
  $.set$length = function(receiver, newLength) {
    if ($.isJsArray(receiver)) {
      $.checkNull(newLength);
      if (newLength < 0)
        throw $.$$throw($.RangeError$value(newLength));
      $.checkGrowable(receiver, 'set length');
      receiver.length = newLength;
    } else
      receiver.set$length(newLength);
    return newLength;
  };
  
  $.toString = function(value) {
    if (typeof value == "object" && value !== null)
      if ($.isJsArray(value))
        return $.Collections_collectionToString(value);
      else
        return value.toString$0();
    if (value === 0 && (1 / value) < 0)
      return '-0.0';
    if (value == null)
      return 'null';
    if (typeof value == "function")
      return 'Closure';
    return String(value);
  };
  
  $.iterator = function(receiver) {
    if ($.isJsArray(receiver))
      return $.ListIterator$(receiver);
    return receiver.iterator$0();
  };
  
  $.charCodeAt = function(receiver, index) {
    if (typeof receiver === 'string') {
      if (index < 0)
        throw $.$$throw($.RangeError$value(index));
      if (index >= receiver.length)
        throw $.$$throw($.RangeError$value(index));
      return receiver.charCodeAt(index);
    } else
      return receiver.charCodeAt$1(index);
  };
  
  $.get$isEmpty = function(receiver) {
    if (typeof receiver === 'string' || $.isJsArray(receiver))
      return receiver.length === 0;
    return receiver.get$isEmpty();
  };
  
  $.addLast = function(receiver, value) {
    if (!$.isJsArray(receiver))
      return receiver.addLast$1(value);
    $.checkGrowable(receiver, 'addLast');
    receiver.push(value);
  };
  
  $.clear = function(receiver) {
    if (!$.isJsArray(receiver))
      return receiver.clear$0();
    $.set$length(receiver, 0);
  };
  
  $.forEach = function(receiver, f) {
    if (!$.isJsArray(receiver))
      return receiver.forEach$1(f);
    else
      return $.Collections_forEach(receiver, f);
  };
  
  $.indexOf$2 = function(receiver, element, start) {
    if ($.isJsArray(receiver))
      return $.Arrays_indexOf(receiver, element, start, receiver.length);
    else {
      $.checkNull(element);
      if (start < 0)
        return -1;
      return receiver.indexOf(element, start);
    }
    return receiver.indexOf$2(element, start);
  };
  
  $.get$last = function(receiver) {
    if (!$.isJsArray(receiver))
      return receiver.get$last();
    return receiver.operator$index$1($.sub($.get$length(receiver), 1));
  };
  
  $.typeNameInFirefox = function(obj) {
    var name$ = $.constructorNameFallback(obj);
    if (name$ === 'Window')
      return 'DOMWindow';
    if (name$ === 'Document')
      return 'HTMLDocument';
    if (name$ === 'XMLDocument')
      return 'Document';
    if (name$ === 'WorkerMessageEvent')
      return 'MessageEvent';
    if (name$ === 'DragEvent')
      return 'MouseEvent';
    if (name$ === 'DataTransfer')
      return 'Clipboard';
    if (name$ === 'MouseScrollEvent')
      return 'WheelEvent';
    if (name$ === 'OfflineResourceList')
      return 'DOMApplicationCache';
    return name$;
  };
  
  $._FrameSetElementEventsImpl$ = function(_ptr) {
    return new $._FrameSetElementEventsImpl(_ptr);
  };
  
  $.ceil = function(receiver) {
    return Math.ceil(receiver);
  };
  
  $.floor = function(receiver) {
    return Math.floor(receiver);
  };
  
  $.truncate = function(receiver) {
    return receiver < 0 ? $.ceil(receiver) : $.floor(receiver);
  };
  
  $.contains$1 = function(receiver, other) {
    return $.contains$2(receiver, other, 0);
    return receiver.contains$1(other);
  };
  
  $.contains$2 = function(receiver, other, startIndex) {
    if (!(typeof receiver === 'string'))
      return receiver.contains$2(other, startIndex);
    $.checkNull(other);
    return $.stringContainsUnchecked(receiver, other, startIndex);
  };
  
  $.endsWith = function(receiver, other) {
    $.checkString(other);
    var receiverLength = receiver.length;
    var otherLength = other.length;
    if (otherLength > receiverLength)
      return false;
    return other === $.substring$1(receiver, receiverLength - otherLength);
  };
  
  $.replaceAll = function(receiver, from, to) {
    if (!(typeof receiver === 'string'))
      return receiver.replaceAll$2(from, to);
    $.checkString(to);
    return $.stringReplaceAllUnchecked(receiver, from, to);
  };
  
  $.substring$1 = function(receiver, startIndex) {
    if (!(typeof receiver === 'string'))
      return receiver.substring$1(startIndex);
    return $.substring$2(receiver, startIndex, null);
  };
  
  $.substring$2 = function(receiver, startIndex, endIndex) {
    $.checkNum(startIndex);
    var length$ = receiver.length;
    if (endIndex == null)
      endIndex = length$;
    $.checkNum(endIndex);
    if (startIndex < 0)
      throw $.$$throw($.RangeError$value(startIndex));
    if ($.gtB(startIndex, endIndex))
      throw $.$$throw($.RangeError$value(startIndex));
    if ($.gtB(endIndex, length$))
      throw $.$$throw($.RangeError$value(endIndex));
    return $.substringUnchecked(receiver, startIndex, endIndex);
  };
  
  $.get$hashCode = function(receiver) {
    if (receiver == null)
      return 0;
    if (typeof receiver === 'number')
      return receiver & 0x1FFFFFFF;
    if (typeof receiver === 'boolean')
      return receiver ? 1077375012 : 3247177846;
    if ($.isJsArray(receiver))
      return $.Primitives_objectHashCode(receiver);
    if (!(typeof receiver === 'string'))
      return receiver.get$hashCode();
    var length$ = receiver.length;
    for (var i = 0, hash = 0; i < length$; ++i) {
      var hash0 = 536870911 & hash + receiver.charCodeAt(i);
      var hash1 = 536870911 & hash0 + 524287 & hash0 << 10;
      hash1 = (hash1 ^ $.shr(hash1, 6)) >>> 0;
      hash = hash1;
    }
    hash0 = 536870911 & hash + 67108863 & hash << 3;
    hash0 = (hash0 ^ $.shr(hash0, 11)) >>> 0;
    return 536870911 & hash0 + 16383 & hash0 << 15;
  };
  
  $.stringReplaceAllUnchecked = function(receiver, from, to) {
    if (from === '')
      if (receiver === '')
        return to;
      else {
        var result = $.StringBuffer_StringBuffer('');
        var length$ = receiver.length;
        $.add$1(result, to);
        for (var i = 0; i < length$; ++i) {
          $.add$1(result, receiver[i]);
          $.add$1(result, to);
        }
        return $.toString(result);
      }
    else
      return $.stringReplaceJS(receiver, $.regExpMakeNative($.JSSyntaxRegExp$(from.replace($.regExpMakeNative($.CTC11, true), "\\$&"), false, false), true), to);
  };
  
  $._SVGElementInstanceEventsImpl$ = function(_ptr) {
    return new $._SVGElementInstanceEventsImpl(_ptr);
  };
  
  $._WebSocketEventsImpl$ = function(_ptr) {
    return new $._WebSocketEventsImpl(_ptr);
  };
  
  $._MediaStreamTrackListEventsImpl$ = function(_ptr) {
    return new $._MediaStreamTrackListEventsImpl(_ptr);
  };
  
  $.UnsupportedError$ = function(message) {
    return new $.UnsupportedError(message);
  };
  
  $._MediaStreamTrackEventsImpl$ = function(_ptr) {
    return new $._MediaStreamTrackEventsImpl(_ptr);
  };
  
  $.main = function() {
    $.query('#text').set$text('Click me!');
    $.add$1($.query('#text').get$on().get$click(), $.rotateText);
  };
  
  $.rotateText = function(event$) {
    $.rotatePos = $.add($.rotatePos, 360);
    var textElement = $.query('#text');
    textElement.get$style().set$transition('1s');
    var t1 = 'rotate(' + $.S($.rotatePos) + 'deg)';
    textElement.get$style().set$transform(t1);
  };
  
  $.window = function() {
    return window;
  };
  
  $._document = function() {
    return document;
  };
  
  $.query = function(selector) {
    return $._document().query$1(selector);
  };
  
  $._RTCDataChannelEventsImpl$ = function(_ptr) {
    return new $._RTCDataChannelEventsImpl(_ptr);
  };
  
  $._ExceptionImplementation$ = function(message) {
    return new $._ExceptionImplementation(message);
  };
  
  $.JSSyntaxRegExp$ = function(pattern, ignoreCase, multiLine) {
    return new $.JSSyntaxRegExp(pattern, multiLine, ignoreCase);
  };
  
  $._MediaStreamEventsImpl$ = function(_ptr) {
    return new $._MediaStreamEventsImpl(_ptr);
  };
  
  $._browserPrefix = function() {
    if ($._cachedBrowserPrefix == null)
      if ($._Device_isFirefox() === true)
        $._cachedBrowserPrefix = '-moz-';
      else if ($._Device_isIE() === true)
        $._cachedBrowserPrefix = '-ms-';
      else if ($._Device_isOpera() === true)
        $._cachedBrowserPrefix = '-o-';
      else
        $._cachedBrowserPrefix = '-webkit-';
    return $._cachedBrowserPrefix;
  };
  
  $.Collections_forEach = function(iterable, f) {
    for (var t1 = $.iterator(iterable); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
  };
  
  $.Collections_collectionToString = function(c) {
    var result = $.StringBuffer_StringBuffer('');
    $.Collections__emitCollection(c, result, $._ListImpl_List(null));
    return $.toString(result);
  };
  
  $.Collections__emitCollection = function(c, result, visiting) {
    $.add$1(visiting, c);
    var isList = typeof c === 'object' && c !== null && (c.constructor === Array || c.is$List());
    $.add$1(result, isList ? '[' : '{');
    for (var t1 = $.iterator(c), first = true; t1.get$hasNext() === true;) {
      var t2 = t1.next$0();
      if (!first)
        $.add$1(result, ', ');
      $.Collections__emitObject(t2, result, visiting);
      first = false;
    }
    $.add$1(result, isList ? ']' : '}');
    $.removeLast(visiting);
  };
  
  $.Collections__emitObject = function(o, result, visiting) {
    if (typeof o === 'object' && o !== null && (o.constructor === Array || o.is$Collection()))
      if ($.Collections__containsRef(visiting, o))
        $.add$1(result, typeof o === 'object' && o !== null && (o.constructor === Array || o.is$List()) ? '[...]' : '{...}');
      else
        $.Collections__emitCollection(o, result, visiting);
    else if (typeof o === 'object' && o !== null && o.is$Map())
      if ($.Collections__containsRef(visiting, o))
        $.add$1(result, '{...}');
      else
        $.Maps__emitMap(o, result, visiting);
    else
      $.add$1(result, o);
  };
  
  $.Collections__containsRef = function(c, ref) {
    for (var t1 = $.iterator(c); t1.get$hasNext() === true;) {
      var t2 = t1.next$0();
      if (t2 == null ? ref == null : t2 === ref)
        return true;
    }
    return false;
  };
  
  $._FixedSizeListIterator$ = function(array) {
    return new $._FixedSizeListIterator($.get$length(array), array, 0);
  };
  
  $.Element_Element$tag = function(tag) {
    return document.createElement(tag);
  };
  
  $._DOMApplicationCacheEventsImpl$ = function(_ptr) {
    return new $._DOMApplicationCacheEventsImpl(_ptr);
  };
  
  $.StateError$ = function(message) {
    return new $.StateError(message);
  };
  
  $._InputElementEventsImpl$ = function(_ptr) {
    return new $._InputElementEventsImpl(_ptr);
  };
  
  $._Device_userAgent = function() {
    return $.window().get$navigator().get$userAgent();
  };
  
  $._Device_isOpera = function() {
    return $.contains$2($._Device_userAgent(), 'Opera', 0);
  };
  
  $._Device_isIE = function() {
    return $._Device_isOpera() !== true && $.contains$2($._Device_userAgent(), 'MSIE', 0) === true;
  };
  
  $._Device_isFirefox = function() {
    return $.contains$2($._Device_userAgent(), 'Firefox', 0);
  };
  
  $.ListIterator$ = function(list) {
    return new $.ListIterator(0, list);
  };
  
  $._DocumentEventsImpl$ = function(_ptr) {
    return new $._DocumentEventsImpl(_ptr);
  };
  
  $._FileWriterEventsImpl$ = function(_ptr) {
    return new $._FileWriterEventsImpl(_ptr);
  };
  
  $.RangeError$value = function(value) {
    return new $.RangeError('value ' + $.S(value));
  };
  
  $.ArgumentError$ = function(message) {
    return new $.ArgumentError(message);
  };
  
  $.Arrays_indexOf = function(a, element, startIndex, endIndex) {
    var t1 = a.length;
    if (startIndex >= t1)
      return -1;
    if (startIndex < 0)
      startIndex = 0;
    for (var i = startIndex; i < endIndex; ++i) {
      if (i < 0 || i >= t1)
        throw $.ioore(i);
      if ($.eqB(a[i], element))
        return i;
    }
    return -1;
  };
  
  $.NullPointerException$ = function(functionName, arguments$) {
    return new $.NullPointerException(functionName, arguments$);
  };
  
  $.Primitives_objectHashCode = function(object) {
    var hash = object.$identityHash;
    if (hash == null) {
      hash = $.add($.Primitives_hashCodeSeed, 1);
      $.Primitives_hashCodeSeed = hash;
      object.$identityHash = hash;
    }
    return hash;
  };
  
  $._PeerConnection00EventsImpl$ = function(_ptr) {
    return new $._PeerConnection00EventsImpl(_ptr);
  };
  
  $.Primitives_objectTypeName = function(object) {
    var name$ = $.constructorNameFallback(object);
    if ($.eqB(name$, 'Object')) {
      var decompiled = String(object.constructor).match(/^\s*function\s*(\S*)\s*\(/)[1];
      if (typeof decompiled === 'string')
        name$ = decompiled;
    }
    return $.charCodeAt(name$, 0) === 36 ? $.substring$1(name$, 1) : name$;
  };
  
  $.Primitives_objectToString = function(object) {
    return 'Instance of \'' + $.S($.Primitives_objectTypeName(object)) + '\'';
  };
  
  $.Primitives_newList = function(length$) {
    if (length$ == null)
      return new Array();
    if (!(typeof length$ === 'number' && Math.floor(length$) === length$) || length$ < 0)
      throw $.$$throw($.ArgumentError$(length$));
    var result = new Array(length$);
    result.fixed$length = true;
    return result;
  };
  
  $._IDBVersionChangeRequestEventsImpl$ = function(_ptr) {
    return new $._IDBVersionChangeRequestEventsImpl(_ptr);
  };
  
  $._IDBRequestEventsImpl$ = function(_ptr) {
    return new $._IDBRequestEventsImpl(_ptr);
  };
  
  $._FileReaderEventsImpl$ = function(_ptr) {
    return new $._FileReaderEventsImpl(_ptr);
  };
  
  $._SpeechRecognitionEventsImpl$ = function(_ptr) {
    return new $._SpeechRecognitionEventsImpl(_ptr);
  };
  
  $._LocalWindowEventsImpl$ = function(_ptr) {
    return new $._LocalWindowEventsImpl(_ptr);
  };
  
  $.Maps_mapToString = function(m) {
    var result = $.StringBuffer_StringBuffer('');
    $.Maps__emitMap(m, result, $._ListImpl_List(null));
    return $.toString(result);
  };
  
  $.Maps__emitMap = function(m, result, visiting) {
    var t1 = {};
    $.add$1(visiting, m);
    $.add$1(result, '{');
    t1.first_1 = true;
    $.forEach(m, new $.Maps__emitMap_anon(t1, visiting, result));
    $.add$1(result, '}');
    $.removeLast(visiting);
  };
  
  $._IDBTransactionEventsImpl$ = function(_ptr) {
    return new $._IDBTransactionEventsImpl(_ptr);
  };
  
  $.StringBuffer_StringBuffer = function(content$) {
    return $._StringBufferImpl$(content$);
  };
  
  $._StringBufferImpl$ = function(content$) {
    var t1 = new $._StringBufferImpl(null, null);
    t1._StringBufferImpl$1(content$);
    return t1;
  };
  
  $._IDBOpenDBRequestEventsImpl$ = function(_ptr) {
    return new $._IDBOpenDBRequestEventsImpl(_ptr);
  };
  
  $._WorkerEventsImpl$ = function(_ptr) {
    return new $._WorkerEventsImpl(_ptr);
  };
  
  $._AbstractWorkerEventsImpl$ = function(_ptr) {
    return new $._AbstractWorkerEventsImpl(_ptr);
  };
  
  $._EventsImpl$ = function(_ptr) {
    return new $._EventsImpl(_ptr);
  };
  
  $.IllegalJSRegExpException$ = function(_pattern, _errmsg) {
    return new $.IllegalJSRegExpException(_pattern, _errmsg);
  };
  
  $._MediaElementEventsImpl$ = function(_ptr) {
    return new $._MediaElementEventsImpl(_ptr);
  };
  
  $._ElementEventsImpl$ = function(_ptr) {
    return new $._ElementEventsImpl(_ptr);
  };
  
  $._EventListenerListImpl$ = function(_ptr, _type) {
    return new $._EventListenerListImpl(_ptr, _type);
  };
  
  $._EventSourceEventsImpl$ = function(_ptr) {
    return new $._EventSourceEventsImpl(_ptr);
  };
  
  $._WorkerContextEventsImpl$ = function(_ptr) {
    return new $._WorkerContextEventsImpl(_ptr);
  };
  
  $.MetaInfo$ = function(_tag, _tags, _set) {
    return new $.MetaInfo(_tag, _tags, _set);
  };
  
  $._TextTrackListEventsImpl$ = function(_ptr) {
    return new $._TextTrackListEventsImpl(_ptr);
  };
  
  $._IDBDatabaseEventsImpl$ = function(_ptr) {
    return new $._IDBDatabaseEventsImpl(_ptr);
  };
  
  $._SharedWorkerContextEventsImpl$ = function(_ptr) {
    return new $._SharedWorkerContextEventsImpl(_ptr);
  };
  
  $._NotificationEventsImpl$ = function(_ptr) {
    return new $._NotificationEventsImpl(_ptr);
  };
  
  $.NoSuchMethodError$ = function(_receiver, _memberName, _arguments, _namedArguments, existingArgumentNames) {
    return new $.NoSuchMethodError(_receiver, _memberName, _arguments, _namedArguments, existingArgumentNames);
  };
  
  $.NoSuchMethodError_safeToString = function(object) {
    if (typeof object === 'number' && Math.floor(object) === object || typeof object === 'number' || typeof object === 'boolean' || null == object)
      return $.toString(object);
    if (typeof object === 'string')
      return '"' + $.S($.replaceAll($.replaceAll($.replaceAll($.replaceAll(object, '\\', '\\\\'), '\n', '\\n'), '\r', '\\r'), '"', '\\"')) + '"';
    return $.Primitives_objectToString(object);
  };
  
  $._TextTrackEventsImpl$ = function(_ptr) {
    return new $._TextTrackEventsImpl(_ptr);
  };
  
  $._BodyElementEventsImpl$ = function(_ptr) {
    return new $._BodyElementEventsImpl(_ptr);
  };
  
  $._HttpRequestUploadEventsImpl$ = function(_ptr) {
    return new $._HttpRequestUploadEventsImpl(_ptr);
  };
  
  $.LinkedHashMapImplementation$ = function() {
    var t1 = new $.LinkedHashMapImplementation(null, null);
    t1.LinkedHashMapImplementation$0();
    return t1;
  };
  
  $._convertDartToNative_PrepareForStructuredClone = function(value) {
    var values = [];
    var copies = [];
    var t1 = new $._convertDartToNative_PrepareForStructuredClone_findSlot(copies, values);
    var t2 = new $._convertDartToNative_PrepareForStructuredClone_readSlot(copies);
    var t3 = new $._convertDartToNative_PrepareForStructuredClone_writeSlot(copies);
    var t4 = new $._convertDartToNative_PrepareForStructuredClone_cleanupSlots();
    var copy = new $._convertDartToNative_PrepareForStructuredClone_walk(t3, t2, t1).call$1(value);
    t4.call$0();
    return copy;
  };
  
  $.DoubleLinkedQueue$ = function() {
    var t1 = new $.DoubleLinkedQueue(null);
    t1.DoubleLinkedQueue$0();
    return t1;
  };
  
  $._BatteryManagerEventsImpl$ = function(_ptr) {
    return new $._BatteryManagerEventsImpl(_ptr);
  };
  
  $._TextTrackCueEventsImpl$ = function(_ptr) {
    return new $._TextTrackCueEventsImpl(_ptr);
  };
  
  $.KeyValuePair$ = function(key, value) {
    return new $.KeyValuePair(key, value);
  };
  
  $._HttpRequestEventsImpl$ = function(_ptr) {
    return new $._HttpRequestEventsImpl(_ptr);
  };
  
  $.DoubleLinkedQueueEntry$ = function(e) {
    var t1 = new $.DoubleLinkedQueueEntry(null, null, null);
    t1.DoubleLinkedQueueEntry$1(e);
    return t1;
  };
  
  $._DedicatedWorkerContextEventsImpl$ = function(_ptr) {
    return new $._DedicatedWorkerContextEventsImpl(_ptr);
  };
  
  $._ScriptProcessorNodeEventsImpl$ = function(_ptr) {
    return new $._ScriptProcessorNodeEventsImpl(_ptr);
  };
  
  $._DoubleLinkedQueueIterator$ = function(_sentinel) {
    var t1 = new $._DoubleLinkedQueueIterator(_sentinel, null);
    t1._DoubleLinkedQueueIterator$1(_sentinel);
    return t1;
  };
  
  $._DoubleLinkedQueueEntrySentinel$ = function() {
    var t1 = new $._DoubleLinkedQueueEntrySentinel(null, null, null);
    t1.DoubleLinkedQueueEntry$1(null);
    t1._DoubleLinkedQueueEntrySentinel$0();
    return t1;
  };
  
  $._AudioContextEventsImpl$ = function(_ptr) {
    return new $._AudioContextEventsImpl(_ptr);
  };
  
  $._StringImpl__toJsStringArray$bailout = function(state0, strings) {
    $.checkNull(strings);
    var length$ = $.get$length(strings);
    if ($.isJsArray(strings)) {
      for (var i = 0; $.ltB(i, length$); ++i) {
        var string = $.index(strings, i);
        $.checkNull(string);
        if (!(typeof string === 'string'))
          throw $.$$throw($.ArgumentError$(string));
      }
      var array = strings;
    } else {
      array = $._ListImpl_List(length$);
      for (i = 0; $.ltB(i, length$); ++i) {
        string = $.index(strings, i);
        $.checkNull(string);
        if (!(typeof string === 'string'))
          throw $.$$throw($.ArgumentError$(string));
        if (i >= array.length)
          throw $.ioore(i);
        array[i] = string;
      }
    }
    return array;
  };
  
  $.toStringWrapper.call$0 = $.toStringWrapper;
  $.toStringWrapper.$name = "toStringWrapper";
  $.typeNameInChrome.call$1 = $.typeNameInChrome;
  $.typeNameInChrome.$name = "typeNameInChrome";
  $.typeNameInSafari.call$1 = $.typeNameInSafari;
  $.typeNameInSafari.$name = "typeNameInSafari";
  $.typeNameInOpera.call$1 = $.typeNameInOpera;
  $.typeNameInOpera.$name = "typeNameInOpera";
  $.typeNameInFirefox.call$1 = $.typeNameInFirefox;
  $.typeNameInFirefox.$name = "typeNameInFirefox";
  $.typeNameInIE.call$1 = $.typeNameInIE;
  $.typeNameInIE.$name = "typeNameInIE";
  $.invokeClosure.call$5 = $.invokeClosure;
  $.invokeClosure.$name = "invokeClosure";
  $.constructorNameFallback.call$1 = $.constructorNameFallback;
  $.constructorNameFallback.$name = "constructorNameFallback";
  $.rotateText.call$1 = $.rotateText;
  $.rotateText.$name = "rotateText";
  $.dynamicBind.call$4 = $.dynamicBind;
  $.dynamicBind.$name = "dynamicBind";
  Isolate.$finishClasses($$);
  $$ = {};
  Isolate.makeConstantList = function(list) {
    list.immutable$list = true;
    list.fixed$length = true;
    return list;
  };
  $.CTC0 = Isolate.makeConstantList([]);
  $.CTC12 = new Isolate.$isolateProperties.Object();
  $.CTC10 = new Isolate.$isolateProperties._DeletedKeySentinel();
  $.CTC9 = new Isolate.$isolateProperties.JSSyntaxRegExp('^#[_a-zA-Z]\\w*$', false, false);
  $.CTC = new Isolate.$isolateProperties.NullPointerException(null, Isolate.$isolateProperties.CTC0);
  $.CTC11 = new Isolate.$isolateProperties.JSSyntaxRegExp('[-[\\]{}()*+?.,\\\\^$|#\\s]', false, false);
  $.CTC4 = new Isolate.$isolateProperties.NotImplementedException('structured clone of Blob');
  $.CTC6 = new Isolate.$isolateProperties.NotImplementedException('structured clone of ArrayBuffer');
  $.CTC5 = new Isolate.$isolateProperties.NotImplementedException('structured clone of ImageData');
  $.CTC8 = new Isolate.$isolateProperties.NotImplementedException('structured clone of other type');
  $.CTC2 = new Isolate.$isolateProperties.NotImplementedException('structured clone of RegExp');
  $.CTC3 = new Isolate.$isolateProperties.NotImplementedException('structured clone of File');
  $.CTC7 = new Isolate.$isolateProperties.NotImplementedException('structured clone of ArrayBufferView');
  $.CTC1 = new Isolate.$isolateProperties.NotImplementedException('structured clone of Date');
  $.HashMapImplementation__DELETED_KEY = Isolate.$isolateProperties.CTC10;
  $.HashMapImplementation__INITIAL_CAPACITY = 8;
  $._getTypeNameOf = null;
  $.rotatePos = 0;
  $._cachedBrowserPrefix = null;
  $.Primitives_hashCodeSeed = 0;
  $.Primitives_DOLLAR_CHAR_VALUE = 36;
  var $ = null;
  Isolate.$finishClasses($$);
  $$ = {};
  Isolate = Isolate.$finishIsolateConstructor(Isolate);
  var $ = new Isolate();
  $.$defineNativeClass = function(cls, desc) {
    var fields = desc[''] || [];
    var generateGetterSetter =   function(field, prototype) {
      var len = field.length;
      var lastChar = field[len - 1];
      var needsGetter = lastChar == '?' || lastChar == '=';
      var needsSetter = lastChar == '!' || lastChar == '=';
      if (needsGetter || needsSetter) field = field.substring(0, len - 1);
      if (needsGetter) {
        var getterString = "return this." + field + ";";
          prototype["get$" + field] = new Function(getterString);
      }
      if (needsSetter) {
        var setterString = "this." + field + " = v;";
        prototype["set$" + field] = new Function("v", setterString);
      }
      return field;
    };
    for (var i = 0; i < fields.length; i++) {
      generateGetterSetter(fields[i], desc);
    }
    var hasOwnProperty = Object.prototype.hasOwnProperty;
    for (var method in desc) {
      if (method !== '') {
        if (hasOwnProperty.call(desc, method)) {
          $.dynamicFunction(method)[cls] = desc[method];
        }
      }
    }
  };
  
  (function(table) {
    for (var key in table) {
      $.defineProperty(Object.prototype, key, table[key]);
    }
  })({
   is$_FileImpl: function() { return false; },
   is$_ImageDataImpl: function() { return false; },
   is$_BlobImpl: function() { return false; },
   is$JavaScriptIndexingBehavior: function() { return false; },
   is$ArrayBuffer: function() { return false; },
   is$Collection: function() { return false; },
   is$_ArrayBufferViewImpl: function() { return false; },
   is$_FileListImpl: function() { return false; },
   toString$0: function() { return $.toStringForNativeObject(this); },
   is$ImageData: function() { return false; },
   is$ArrayBufferView: function() { return false; },
   get$hashCode: function() { return $.hashCodeForNativeObject(this); },
   is$List: function() { return false; },
   is$_ArrayBufferImpl: function() { return false; },
   is$Map: function() { return false; },
   is$File: function() { return false; },
   is$Blob: function() { return false; }
  });
  
  $.$defineNativeClass('HTMLElement', {"": []
  });
  
  $.$defineNativeClass('AbstractWorker', {"": [],
   get$on: function() {
    if (Object.getPrototypeOf(this).hasOwnProperty('get$on')) {
    {
    return $._AbstractWorkerEventsImpl$(this);
  }
    } else {
      return Object.prototype.get$on.call(this);
    }
  
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('AnalyserNode', {"": []
  });
  
  $.$defineNativeClass('HTMLAnchorElement', {"": [],
   toString$0: function() {
    return this.toString();
  }
  });
  
  $.$defineNativeClass('WebKitAnimationEvent', {"": []
  });
  
  $.$defineNativeClass('WebKitAnimation', {"": []
  });
  
  $.$defineNativeClass('HTMLAppletElement', {"": []
  });
  
  $.$defineNativeClass('HTMLAreaElement', {"": []
  });
  
  $.$defineNativeClass('ArrayBuffer', {"": [],
   is$_ArrayBufferImpl: function() { return true; },
   is$ArrayBuffer: function() { return true; }
  });
  
  $.$defineNativeClass('ArrayBufferView', {"": [],
   is$_ArrayBufferViewImpl: function() { return true; },
   is$ArrayBufferView: function() { return true; }
  });
  
  $.$defineNativeClass('Attr', {"": ["value="]
  });
  
  $.$defineNativeClass('AudioBuffer', {"": ["length?"]
  });
  
  $.$defineNativeClass('AudioBufferSourceNode', {"": []
  });
  
  $.$defineNativeClass('AudioContext', {"": [],
   get$on: function() {
    return $._AudioContextEventsImpl$(this);
  }
  });
  
  $.$defineNativeClass('AudioDestinationNode', {"": []
  });
  
  $.$defineNativeClass('HTMLAudioElement', {"": []
  });
  
  $.$defineNativeClass('AudioGain', {"": []
  });
  
  $.$defineNativeClass('AudioListener', {"": []
  });
  
  $.$defineNativeClass('AudioNode', {"": []
  });
  
  $.$defineNativeClass('AudioParam', {"": ["value="]
  });
  
  $.$defineNativeClass('AudioProcessingEvent', {"": []
  });
  
  $.$defineNativeClass('AudioSourceNode', {"": []
  });
  
  $.$defineNativeClass('HTMLBRElement', {"": [],
   clear$0: function() { return this.clear.call$0(); }
  });
  
  $.$defineNativeClass('BarInfo', {"": []
  });
  
  $.$defineNativeClass('HTMLBaseElement', {"": []
  });
  
  $.$defineNativeClass('HTMLBaseFontElement', {"": []
  });
  
  $.$defineNativeClass('BatteryManager', {"": [],
   get$on: function() {
    return $._BatteryManagerEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('BeforeLoadEvent', {"": []
  });
  
  $.$defineNativeClass('BiquadFilterNode', {"": []
  });
  
  $.$defineNativeClass('Blob', {"": [],
   is$_BlobImpl: function() { return true; },
   is$Blob: function() { return true; }
  });
  
  $.$defineNativeClass('HTMLBodyElement', {"": [],
   get$on: function() {
    return $._BodyElementEventsImpl$(this);
  }
  });
  
  $.$defineNativeClass('HTMLButtonElement', {"": ["value="]
  });
  
  $.$defineNativeClass('CDATASection', {"": []
  });
  
  $.$defineNativeClass('CSSCharsetRule', {"": []
  });
  
  $.$defineNativeClass('CSSFontFaceRule', {"": ["style?"]
  });
  
  $.$defineNativeClass('CSSImportRule', {"": []
  });
  
  $.$defineNativeClass('WebKitCSSKeyframeRule', {"": ["style?"]
  });
  
  $.$defineNativeClass('WebKitCSSKeyframesRule', {"": []
  });
  
  $.$defineNativeClass('WebKitCSSMatrix', {"": [],
   toString$0: function() {
    return this.toString();
  }
  });
  
  $.$defineNativeClass('CSSMediaRule', {"": []
  });
  
  $.$defineNativeClass('CSSPageRule', {"": ["style?"]
  });
  
  $.$defineNativeClass('CSSPrimitiveValue', {"": []
  });
  
  $.$defineNativeClass('CSSRule', {"": []
  });
  
  $.$defineNativeClass('CSSRuleList', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('CSSStyleDeclaration', {"": ["length?"],
   _getPropertyValue$1: function(propertyName) {
    return this.getPropertyValue(propertyName);
  },
   getPropertyValue$1: function(propertyName) {
    var propValue = this._getPropertyValue$1(propertyName);
    return !(propValue == null) ? propValue : '';
  },
   setProperty$3: function(propertyName, value, priority) {
    this.setProperty(propertyName, value, priority);
    if (!!this.setAttribute)
      this.setAttribute(propertyName, value);
  },
   get$clear: function() {
    return this.getPropertyValue$1('clear');
  },
   clear$0: function() { return this.get$clear().call$0(); },
   set$transform: function(value) {
    this.setProperty$3($.S($._browserPrefix()) + 'transform', value, '');
  },
   set$transition: function(value) {
    this.setProperty$3($.S($._browserPrefix()) + 'transition', value, '');
  }
  });
  
  $.$defineNativeClass('CSSStyleRule', {"": ["style?"]
  });
  
  $.$defineNativeClass('CSSStyleSheet', {"": []
  });
  
  $.$defineNativeClass('WebKitCSSTransformValue', {"": [],
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('CSSUnknownRule', {"": []
  });
  
  $.$defineNativeClass('CSSValue', {"": []
  });
  
  $.$defineNativeClass('CSSValueList', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('HTMLCanvasElement', {"": []
  });
  
  $.$defineNativeClass('CanvasGradient', {"": []
  });
  
  $.$defineNativeClass('CanvasPattern', {"": []
  });
  
  $.$defineNativeClass('CanvasRenderingContext2D', {"": []
  });
  
  $.$defineNativeClass('CanvasRenderingContext', {"": []
  });
  
  $.$defineNativeClass('ChannelMergerNode', {"": []
  });
  
  $.$defineNativeClass('ChannelSplitterNode', {"": []
  });
  
  $.$defineNativeClass('CharacterData', {"": ["length?"],
   remove$0: function() {
    return this.remove();
  }
  });
  
  $.$defineNativeClass('ClientRect', {"": []
  });
  
  $.$defineNativeClass('ClientRectList', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('Clipboard', {"": []
  });
  
  $.$defineNativeClass('CloseEvent', {"": []
  });
  
  $.$defineNativeClass('Comment', {"": []
  });
  
  $.$defineNativeClass('CompositionEvent', {"": []
  });
  
  _ConsoleImpl = (typeof console == 'undefined' ? {} : console);
  $.$defineNativeClass('HTMLContentElement', {"": []
  });
  
  $.$defineNativeClass('ConvolverNode', {"": []
  });
  
  $.$defineNativeClass('Coordinates', {"": []
  });
  
  $.$defineNativeClass('Counter', {"": []
  });
  
  $.$defineNativeClass('Crypto', {"": []
  });
  
  $.$defineNativeClass('CustomEvent', {"": []
  });
  
  $.$defineNativeClass('HTMLDListElement', {"": []
  });
  
  $.$defineNativeClass('DOMApplicationCache', {"": [],
   get$on: function() {
    return $._DOMApplicationCacheEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('DOMError', {"": []
  });
  
  $.$defineNativeClass('DOMException', {"": [],
   toString$0: function() {
    return this.toString();
  }
  });
  
  $.$defineNativeClass('DOMFileSystem', {"": []
  });
  
  $.$defineNativeClass('DOMFileSystemSync', {"": []
  });
  
  $.$defineNativeClass('DOMImplementation', {"": []
  });
  
  $.$defineNativeClass('MimeTypeArray', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('MimeType', {"": []
  });
  
  $.$defineNativeClass('DOMParser', {"": []
  });
  
  $.$defineNativeClass('PluginArray', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('Plugin', {"": ["length?"]
  });
  
  $.$defineNativeClass('Selection', {"": [],
   toString$0: function() {
    return this.toString();
  }
  });
  
  $.$defineNativeClass('DOMSettableTokenList', {"": ["value="]
  });
  
  $.$defineNativeClass('DOMStringList', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('DOMTokenList', {"": ["length?"],
   toString$0: function() {
    return this.toString();
  }
  });
  
  $.$defineNativeClass('URL', {"": []
  });
  
  $.$defineNativeClass('HTMLDataListElement', {"": []
  });
  
  $.$defineNativeClass('DataTransferItem', {"": []
  });
  
  $.$defineNativeClass('DataTransferItemList', {"": ["length?"],
   add$2: function(data_OR_file, type) {
    return this.add(data_OR_file,type);
  },
   add$1: function(data_OR_file) {
    return this.add(data_OR_file);
  },
   clear$0: function() {
    return this.clear();
  }
  });
  
  $.$defineNativeClass('DataView', {"": [],
   is$ArrayBufferView: function() { return true; }
  });
  
  $.$defineNativeClass('Database', {"": []
  });
  
  $.$defineNativeClass('DatabaseSync', {"": []
  });
  
  $.$defineNativeClass('DedicatedWorkerContext', {"": [],
   get$on: function() {
    return $._DedicatedWorkerContextEventsImpl$(this);
  }
  });
  
  $.$defineNativeClass('DelayNode', {"": []
  });
  
  $.$defineNativeClass('HTMLDetailsElement', {"": []
  });
  
  $.$defineNativeClass('DeviceMotionEvent', {"": []
  });
  
  $.$defineNativeClass('DeviceOrientationEvent', {"": []
  });
  
  $.$defineNativeClass('HTMLDirectoryElement', {"": []
  });
  
  $.$defineNativeClass('DirectoryEntry', {"": []
  });
  
  $.$defineNativeClass('DirectoryEntrySync', {"": []
  });
  
  $.$defineNativeClass('DirectoryReader', {"": []
  });
  
  $.$defineNativeClass('DirectoryReaderSync', {"": []
  });
  
  $.$defineNativeClass('HTMLDivElement', {"": []
  });
  
  $.$defineNativeClass('DocumentFragment', {"": [],
   query$1: function(selectors) {
    return this.$dom_querySelector$1(selectors);
  },
   get$parent: function() {
    return
  ;
  },
   get$style: function() {
    return $.Element_Element$tag('div').get$style();
  },
   click$0: function() {
  },
   get$click: function() { return new $.BoundClosure(this, 'click$0'); },
   get$on: function() {
    return $._ElementEventsImpl$(this);
  },
   $dom_querySelector$1: function(selectors) {
    return this.querySelector(selectors);
  }
  });
  
  $.$defineNativeClass('HTMLDocument', {"": [],
   get$on: function() {
    return $._DocumentEventsImpl$(this);
  },
   $dom_getElementById$1: function(elementId) {
    return this.getElementById(elementId);
  },
   $dom_querySelector$1: function(selectors) {
    return this.querySelector(selectors);
  },
   query$1: function(selectors) {
    if ($.CTC9.hasMatch$1(selectors) === true)
      return this.$dom_getElementById$1($.substring$1(selectors, 1));
    return this.$dom_querySelector$1(selectors);
  }
  });
  
  $.$defineNativeClass('DocumentType', {"": [],
   remove$0: function() {
    return this.remove();
  }
  });
  
  $.$defineNativeClass('DynamicsCompressorNode', {"": []
  });
  
  $.$defineNativeClass('EXTTextureFilterAnisotropic', {"": []
  });
  
  $.$defineNativeClass('Element', {"": ["style?"],
   query$1: function(selectors) {
    return this.$dom_querySelector$1(selectors);
  },
   get$on: function() {
    if (Object.getPrototypeOf(this).hasOwnProperty('get$on')) {
    {
    return $._ElementEventsImpl$(this);
  }
    } else {
      return Object.prototype.get$on.call(this);
    }
  
  },
   click$0: function() {
    return this.click();
  },
   get$click: function() { return new $.BoundClosure(this, 'click$0'); },
   $dom_querySelector$1: function(selectors) {
    return this.querySelector(selectors);
  }
  });
  
  $.$defineNativeClass('HTMLEmbedElement', {"": []
  });
  
  $.$defineNativeClass('EntityReference', {"": []
  });
  
  $.$defineNativeClass('EntryArray', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('EntryArraySync', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('Entry', {"": []
  });
  
  $.$defineNativeClass('EntrySync', {"": [],
   remove$0: function() {
    return this.remove();
  }
  });
  
  $.$defineNativeClass('ErrorEvent', {"": []
  });
  
  $.$defineNativeClass('EventException', {"": [],
   toString$0: function() {
    return this.toString();
  }
  });
  
  $.$defineNativeClass('Event', {"": []
  });
  
  $.$defineNativeClass('EventSource', {"": [],
   get$on: function() {
    return $._EventSourceEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('EventTarget', {"": [],
   get$on: function() {
    if (Object.getPrototypeOf(this).hasOwnProperty('get$on')) {
    {
    return $._EventsImpl$(this);
  }
    } else {
      return Object.prototype.get$on.call(this);
    }
  
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    if (Object.getPrototypeOf(this).hasOwnProperty('$dom_addEventListener$3')) {
    {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
    } else {
      return Object.prototype.$dom_addEventListener$3.call(this, type, listener, useCapture);
    }
  
  }
  });
  
  $.$defineNativeClass('HTMLFieldSetElement', {"": []
  });
  
  $.$defineNativeClass('FileEntry', {"": []
  });
  
  $.$defineNativeClass('FileEntrySync', {"": []
  });
  
  $.$defineNativeClass('FileError', {"": []
  });
  
  $.$defineNativeClass('FileException', {"": [],
   toString$0: function() {
    return this.toString();
  }
  });
  
  $.$defineNativeClass('File', {"": [],
   is$_FileImpl: function() { return true; },
   is$File: function() { return true; },
   is$Blob: function() { return true; }
  });
  
  $.$defineNativeClass('FileList', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$_FileListImpl: function() { return true; },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('FileReader', {"": [],
   get$on: function() {
    return $._FileReaderEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('FileReaderSync', {"": []
  });
  
  $.$defineNativeClass('FileWriter', {"": ["length?"],
   get$on: function() {
    return $._FileWriterEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('FileWriterSync', {"": ["length?"]
  });
  
  $.$defineNativeClass('Float32Array', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    return this[index] = value;
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; },
   is$ArrayBufferView: function() { return true; }
  });
  
  $.$defineNativeClass('Float64Array', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    return this[index] = value;
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; },
   is$ArrayBufferView: function() { return true; }
  });
  
  $.$defineNativeClass('HTMLFontElement', {"": []
  });
  
  $.$defineNativeClass('FormData', {"": []
  });
  
  $.$defineNativeClass('HTMLFormElement', {"": ["length?"]
  });
  
  $.$defineNativeClass('HTMLFrameElement', {"": []
  });
  
  $.$defineNativeClass('HTMLFrameSetElement', {"": [],
   get$on: function() {
    return $._FrameSetElementEventsImpl$(this);
  }
  });
  
  $.$defineNativeClass('GainNode', {"": []
  });
  
  $.$defineNativeClass('Gamepad', {"": []
  });
  
  $.$defineNativeClass('GamepadList', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('Geolocation', {"": []
  });
  
  $.$defineNativeClass('Geoposition', {"": []
  });
  
  $.$defineNativeClass('HTMLHRElement', {"": []
  });
  
  $.$defineNativeClass('HTMLAllCollection', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('HTMLCollection', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('HTMLOptionsCollection', {"": [],
   get$length: function() {
    return this.length;
  },
   set$length: function(value) {
    this.length = value;
  },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('HashChangeEvent', {"": []
  });
  
  $.$defineNativeClass('HTMLHeadElement', {"": []
  });
  
  $.$defineNativeClass('HTMLHeadingElement', {"": []
  });
  
  $.$defineNativeClass('HTMLHtmlElement', {"": []
  });
  
  $.$defineNativeClass('XMLHttpRequestException', {"": [],
   toString$0: function() {
    return this.toString();
  }
  });
  
  $.$defineNativeClass('XMLHttpRequest', {"": [],
   get$on: function() {
    return $._HttpRequestEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('XMLHttpRequestProgressEvent', {"": []
  });
  
  $.$defineNativeClass('XMLHttpRequestUpload', {"": [],
   get$on: function() {
    return $._HttpRequestUploadEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('IDBAny', {"": []
  });
  
  $.$defineNativeClass('IDBCursor', {"": ["key?"]
  });
  
  $.$defineNativeClass('IDBCursorWithValue', {"": ["value?"]
  });
  
  $.$defineNativeClass('IDBDatabaseException', {"": [],
   toString$0: function() {
    return this.toString();
  }
  });
  
  $.$defineNativeClass('IDBDatabase', {"": [],
   get$on: function() {
    return $._IDBDatabaseEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('IDBFactory', {"": []
  });
  
  $.$defineNativeClass('IDBIndex', {"": []
  });
  
  $.$defineNativeClass('IDBKey', {"": []
  });
  
  $.$defineNativeClass('IDBKeyRange', {"": []
  });
  
  $.$defineNativeClass('IDBObjectStore', {"": [],
   add$2: function(value, key) {
    var t1 = $ === key;
    if (t1)
      key = null;
    if (!t1)
      return this._add_1$2($._convertDartToNative_PrepareForStructuredClone(value), key);
    return this._add_2$1($._convertDartToNative_PrepareForStructuredClone(value));
  },
   add$1: function(value) {
    return this.add$2(value,$)
  },
   _add_1$2: function(value, key) {
    return this.add(value,key);
  },
   _add_2$1: function(value) {
    return this.add(value);
  },
   clear$0: function() {
    return this.clear();
  }
  });
  
  $.$defineNativeClass('IDBOpenDBRequest', {"": [],
   get$on: function() {
    return $._IDBOpenDBRequestEventsImpl$(this);
  }
  });
  
  $.$defineNativeClass('IDBRequest', {"": [],
   get$on: function() {
    if (Object.getPrototypeOf(this).hasOwnProperty('get$on')) {
    {
    return $._IDBRequestEventsImpl$(this);
  }
    } else {
      return Object.prototype.get$on.call(this);
    }
  
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('IDBTransaction', {"": [],
   get$on: function() {
    return $._IDBTransactionEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('IDBVersionChangeEvent', {"": []
  });
  
  $.$defineNativeClass('IDBVersionChangeEvent', {"": []
  });
  
  $.$defineNativeClass('IDBVersionChangeRequest', {"": [],
   get$on: function() {
    return $._IDBVersionChangeRequestEventsImpl$(this);
  }
  });
  
  $.$defineNativeClass('HTMLIFrameElement', {"": []
  });
  
  $.$defineNativeClass('IceCandidate', {"": []
  });
  
  $.$defineNativeClass('ImageData', {"": [],
   is$_ImageDataImpl: function() { return true; },
   is$ImageData: function() { return true; }
  });
  
  $.$defineNativeClass('HTMLImageElement', {"": []
  });
  
  $.$defineNativeClass('HTMLInputElement', {"": ["pattern?", "value="],
   get$on: function() {
    return $._InputElementEventsImpl$(this);
  }
  });
  
  $.$defineNativeClass('Int16Array', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    return this[index] = value;
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; },
   is$ArrayBufferView: function() { return true; }
  });
  
  $.$defineNativeClass('Int32Array', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    return this[index] = value;
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; },
   is$ArrayBufferView: function() { return true; }
  });
  
  $.$defineNativeClass('Int8Array', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    return this[index] = value;
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; },
   is$ArrayBufferView: function() { return true; }
  });
  
  $.$defineNativeClass('JavaScriptCallFrame', {"": []
  });
  
  $.$defineNativeClass('KeyboardEvent', {"": []
  });
  
  $.$defineNativeClass('HTMLKeygenElement', {"": []
  });
  
  $.$defineNativeClass('HTMLLIElement', {"": ["value="]
  });
  
  $.$defineNativeClass('HTMLLabelElement', {"": []
  });
  
  $.$defineNativeClass('HTMLLegendElement', {"": []
  });
  
  $.$defineNativeClass('HTMLLinkElement', {"": []
  });
  
  $.$defineNativeClass('History', {"": ["length?"]
  });
  
  $.$defineNativeClass('Location', {"": [],
   toString$0: function() {
    return this.toString();
  }
  });
  
  $.$defineNativeClass('LocalMediaStream', {"": []
  });
  
  $.$defineNativeClass('DOMWindow', {"": ["navigator?"],
   get$on: function() {
    return $._LocalWindowEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('HTMLMapElement', {"": []
  });
  
  $.$defineNativeClass('HTMLMarqueeElement', {"": []
  });
  
  $.$defineNativeClass('MediaController', {"": [],
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('MediaElementAudioSourceNode', {"": []
  });
  
  $.$defineNativeClass('HTMLMediaElement', {"": [],
   get$on: function() {
    return $._MediaElementEventsImpl$(this);
  }
  });
  
  $.$defineNativeClass('MediaError', {"": []
  });
  
  $.$defineNativeClass('MediaKeyError', {"": []
  });
  
  $.$defineNativeClass('MediaKeyEvent', {"": []
  });
  
  $.$defineNativeClass('MediaList', {"": ["length?"]
  });
  
  $.$defineNativeClass('MediaQueryList', {"": []
  });
  
  $.$defineNativeClass('MediaSource', {"": [],
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('MediaStreamAudioSourceNode', {"": []
  });
  
  $.$defineNativeClass('MediaStreamEvent', {"": []
  });
  
  $.$defineNativeClass('MediaStream', {"": [],
   get$on: function() {
    return $._MediaStreamEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('MediaStreamList', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('MediaStreamTrackEvent', {"": []
  });
  
  $.$defineNativeClass('MediaStreamTrack', {"": [],
   get$on: function() {
    return $._MediaStreamTrackEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('MediaStreamTrackList', {"": ["length?"],
   get$on: function() {
    return $._MediaStreamTrackListEventsImpl$(this);
  },
   add$1: function(track) {
    return this.add(track);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('MemoryInfo', {"": []
  });
  
  $.$defineNativeClass('HTMLMenuElement', {"": []
  });
  
  $.$defineNativeClass('MessageChannel', {"": []
  });
  
  $.$defineNativeClass('MessageEvent', {"": []
  });
  
  $.$defineNativeClass('MessagePort', {"": [],
   get$on: function() {
    return $._MessagePortEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('HTMLMetaElement', {"": []
  });
  
  $.$defineNativeClass('Metadata', {"": []
  });
  
  $.$defineNativeClass('HTMLMeterElement', {"": ["value="]
  });
  
  $.$defineNativeClass('HTMLModElement', {"": []
  });
  
  $.$defineNativeClass('MouseEvent', {"": []
  });
  
  $.$defineNativeClass('MutationEvent', {"": []
  });
  
  $.$defineNativeClass('MutationObserver', {"": []
  });
  
  $.$defineNativeClass('MutationRecord', {"": []
  });
  
  $.$defineNativeClass('NamedNodeMap', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('Navigator', {"": ["userAgent?"]
  });
  
  $.$defineNativeClass('NavigatorUserMediaError', {"": []
  });
  
  $.$defineNativeClass('NodeFilter', {"": []
  });
  
  $.$defineNativeClass('Node', {"": [],
   remove$0: function() {
    if (Object.getPrototypeOf(this).hasOwnProperty('remove$0')) {
    {
    if (!(this.get$parent() == null))
      this.get$parent().$dom_removeChild$1(this);
  }
    } else {
      return Object.prototype.remove$0.call(this);
    }
  
  },
   get$parent: function() {
    if (Object.getPrototypeOf(this).hasOwnProperty('get$parent')) {
    {
    return this.parentNode;
  }
    } else {
      return Object.prototype.get$parent.call(this);
    }
  
  },
   set$text: function(value) {
    this.textContent = value;
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  },
   $dom_appendChild$1: function(newChild) {
    return this.appendChild(newChild);
  },
   $dom_removeChild$1: function(oldChild) {
    return this.removeChild(oldChild);
  },
   $dom_replaceChild$2: function(newChild, oldChild) {
    return this.replaceChild(newChild,oldChild);
  }
  });
  
  $.$defineNativeClass('NodeIterator', {"": []
  });
  
  $.$defineNativeClass('NodeList', {"": ["length?"],
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    this._parent.$dom_appendChild$1(value);
  },
   addLast$1: function(value) {
    this._parent.$dom_appendChild$1(value);
  },
   removeLast$0: function() {
    var result = $.get$last(this);
    if (!(result == null))
      this._parent.$dom_removeChild$1(result);
    return result;
  },
   clear$0: function() {
    this._parent.set$text('');
  },
   operator$indexSet$2: function(index, value) {
    this._parent.$dom_replaceChild$2(value, this.operator$index$1(index));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   get$last: function() {
    return this.operator$index$1($.sub($.get$length(this), 1));
  },
   operator$index$1: function(index) {
    return this[index];
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('Notation', {"": []
  });
  
  $.$defineNativeClass('NotificationCenter', {"": []
  });
  
  $.$defineNativeClass('Notification', {"": [],
   get$on: function() {
    return $._NotificationEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('OESElementIndexUint', {"": []
  });
  
  $.$defineNativeClass('OESStandardDerivatives', {"": []
  });
  
  $.$defineNativeClass('OESTextureFloat', {"": []
  });
  
  $.$defineNativeClass('OESVertexArrayObject', {"": []
  });
  
  $.$defineNativeClass('HTMLOListElement', {"": []
  });
  
  $.$defineNativeClass('HTMLObjectElement', {"": []
  });
  
  $.$defineNativeClass('OfflineAudioCompletionEvent', {"": []
  });
  
  $.$defineNativeClass('HTMLOptGroupElement', {"": []
  });
  
  $.$defineNativeClass('HTMLOptionElement', {"": ["value="]
  });
  
  $.$defineNativeClass('OscillatorNode', {"": []
  });
  
  $.$defineNativeClass('HTMLOutputElement', {"": ["value="]
  });
  
  $.$defineNativeClass('OverflowEvent', {"": []
  });
  
  $.$defineNativeClass('PagePopupController', {"": []
  });
  
  $.$defineNativeClass('PageTransitionEvent', {"": []
  });
  
  $.$defineNativeClass('PannerNode', {"": []
  });
  
  $.$defineNativeClass('HTMLParagraphElement', {"": []
  });
  
  $.$defineNativeClass('HTMLParamElement', {"": ["value="]
  });
  
  $.$defineNativeClass('PeerConnection00', {"": [],
   get$on: function() {
    return $._PeerConnection00EventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('Performance', {"": []
  });
  
  $.$defineNativeClass('PerformanceNavigation', {"": []
  });
  
  $.$defineNativeClass('PerformanceTiming', {"": []
  });
  
  $.$defineNativeClass('WebKitPoint', {"": []
  });
  
  $.$defineNativeClass('PopStateEvent', {"": []
  });
  
  $.$defineNativeClass('PositionError', {"": []
  });
  
  $.$defineNativeClass('HTMLPreElement', {"": []
  });
  
  $.$defineNativeClass('ProcessingInstruction', {"": []
  });
  
  $.$defineNativeClass('HTMLProgressElement', {"": ["value="]
  });
  
  $.$defineNativeClass('ProgressEvent', {"": []
  });
  
  $.$defineNativeClass('HTMLQuoteElement', {"": []
  });
  
  $.$defineNativeClass('RGBColor', {"": []
  });
  
  $.$defineNativeClass('RTCDataChannelEvent', {"": []
  });
  
  $.$defineNativeClass('RTCDataChannel', {"": [],
   get$on: function() {
    return $._RTCDataChannelEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('RTCIceCandidateEvent', {"": []
  });
  
  $.$defineNativeClass('RTCIceCandidate', {"": []
  });
  
  $.$defineNativeClass('RTCPeerConnection', {"": [],
   get$on: function() {
    return $._RTCPeerConnectionEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('RTCSessionDescription', {"": []
  });
  
  $.$defineNativeClass('RTCStatsElement', {"": []
  });
  
  $.$defineNativeClass('RTCStatsReport', {"": []
  });
  
  $.$defineNativeClass('RTCStatsResponse', {"": []
  });
  
  $.$defineNativeClass('RadioNodeList', {"": ["value="],
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('RangeException', {"": [],
   toString$0: function() {
    return this.toString();
  }
  });
  
  $.$defineNativeClass('Range', {"": [],
   toString$0: function() {
    return this.toString();
  }
  });
  
  $.$defineNativeClass('Rect', {"": []
  });
  
  $.$defineNativeClass('SQLError', {"": []
  });
  
  $.$defineNativeClass('SQLException', {"": []
  });
  
  $.$defineNativeClass('SQLResultSet', {"": []
  });
  
  $.$defineNativeClass('SQLResultSetRowList', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('SQLTransaction', {"": []
  });
  
  $.$defineNativeClass('SQLTransactionSync', {"": []
  });
  
  $.$defineNativeClass('SVGAElement', {"": []
  });
  
  $.$defineNativeClass('SVGAltGlyphDefElement', {"": []
  });
  
  $.$defineNativeClass('SVGAltGlyphElement', {"": []
  });
  
  $.$defineNativeClass('SVGAltGlyphItemElement', {"": []
  });
  
  $.$defineNativeClass('SVGAngle', {"": ["value="]
  });
  
  $.$defineNativeClass('SVGAnimateColorElement', {"": []
  });
  
  $.$defineNativeClass('SVGAnimateElement', {"": []
  });
  
  $.$defineNativeClass('SVGAnimateMotionElement', {"": []
  });
  
  $.$defineNativeClass('SVGAnimateTransformElement', {"": []
  });
  
  $.$defineNativeClass('SVGAnimatedAngle', {"": []
  });
  
  $.$defineNativeClass('SVGAnimatedBoolean', {"": []
  });
  
  $.$defineNativeClass('SVGAnimatedEnumeration', {"": []
  });
  
  $.$defineNativeClass('SVGAnimatedInteger', {"": []
  });
  
  $.$defineNativeClass('SVGAnimatedLength', {"": []
  });
  
  $.$defineNativeClass('SVGAnimatedLengthList', {"": [],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('SVGAnimatedNumber', {"": []
  });
  
  $.$defineNativeClass('SVGAnimatedNumberList', {"": [],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('SVGAnimatedPreserveAspectRatio', {"": []
  });
  
  $.$defineNativeClass('SVGAnimatedRect', {"": []
  });
  
  $.$defineNativeClass('SVGAnimatedString', {"": []
  });
  
  $.$defineNativeClass('SVGAnimatedTransformList', {"": [],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('SVGAnimationElement', {"": []
  });
  
  $.$defineNativeClass('SVGCircleElement', {"": []
  });
  
  $.$defineNativeClass('SVGClipPathElement', {"": []
  });
  
  $.$defineNativeClass('SVGColor', {"": []
  });
  
  $.$defineNativeClass('SVGComponentTransferFunctionElement', {"": []
  });
  
  $.$defineNativeClass('SVGCursorElement', {"": []
  });
  
  $.$defineNativeClass('SVGDefsElement', {"": []
  });
  
  $.$defineNativeClass('SVGDescElement', {"": []
  });
  
  $.$defineNativeClass('SVGDocument', {"": []
  });
  
  $.$defineNativeClass('SVGElement', {"": []
  });
  
  $.$defineNativeClass('SVGElementInstance', {"": [],
   get$on: function() {
    return $._SVGElementInstanceEventsImpl$(this);
  }
  });
  
  $.$defineNativeClass('SVGElementInstanceList', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('SVGEllipseElement', {"": []
  });
  
  $.$defineNativeClass('SVGException', {"": [],
   toString$0: function() {
    return this.toString();
  }
  });
  
  $.$defineNativeClass('SVGFEBlendElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEColorMatrixElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEComponentTransferElement', {"": []
  });
  
  $.$defineNativeClass('SVGFECompositeElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEConvolveMatrixElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEDiffuseLightingElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEDisplacementMapElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEDistantLightElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEDropShadowElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEFloodElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEFuncAElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEFuncBElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEFuncGElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEFuncRElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEGaussianBlurElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEImageElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEMergeElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEMergeNodeElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEMorphologyElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEOffsetElement', {"": []
  });
  
  $.$defineNativeClass('SVGFEPointLightElement', {"": []
  });
  
  $.$defineNativeClass('SVGFESpecularLightingElement', {"": []
  });
  
  $.$defineNativeClass('SVGFESpotLightElement', {"": []
  });
  
  $.$defineNativeClass('SVGFETileElement', {"": []
  });
  
  $.$defineNativeClass('SVGFETurbulenceElement', {"": []
  });
  
  $.$defineNativeClass('SVGFilterElement', {"": []
  });
  
  $.$defineNativeClass('SVGFontElement', {"": []
  });
  
  $.$defineNativeClass('SVGFontFaceElement', {"": []
  });
  
  $.$defineNativeClass('SVGFontFaceFormatElement', {"": []
  });
  
  $.$defineNativeClass('SVGFontFaceNameElement', {"": []
  });
  
  $.$defineNativeClass('SVGFontFaceSrcElement', {"": []
  });
  
  $.$defineNativeClass('SVGFontFaceUriElement', {"": []
  });
  
  $.$defineNativeClass('SVGForeignObjectElement', {"": []
  });
  
  $.$defineNativeClass('SVGGElement', {"": []
  });
  
  $.$defineNativeClass('SVGGlyphElement', {"": []
  });
  
  $.$defineNativeClass('SVGGlyphRefElement', {"": []
  });
  
  $.$defineNativeClass('SVGGradientElement', {"": []
  });
  
  $.$defineNativeClass('SVGHKernElement', {"": []
  });
  
  $.$defineNativeClass('SVGImageElement', {"": []
  });
  
  $.$defineNativeClass('SVGLength', {"": ["value="]
  });
  
  $.$defineNativeClass('SVGLengthList', {"": [],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   clear$0: function() {
    return this.clear();
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('SVGLineElement', {"": []
  });
  
  $.$defineNativeClass('SVGLinearGradientElement', {"": []
  });
  
  $.$defineNativeClass('SVGMPathElement', {"": []
  });
  
  $.$defineNativeClass('SVGMarkerElement', {"": []
  });
  
  $.$defineNativeClass('SVGMaskElement', {"": []
  });
  
  $.$defineNativeClass('SVGMatrix', {"": []
  });
  
  $.$defineNativeClass('SVGMetadataElement', {"": []
  });
  
  $.$defineNativeClass('SVGMissingGlyphElement', {"": []
  });
  
  $.$defineNativeClass('SVGNumber', {"": ["value="]
  });
  
  $.$defineNativeClass('SVGNumberList', {"": [],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   clear$0: function() {
    return this.clear();
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('SVGPaint', {"": []
  });
  
  $.$defineNativeClass('SVGPathElement', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegArcAbs', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegArcRel', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegClosePath', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegCurvetoCubicAbs', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegCurvetoCubicRel', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegCurvetoCubicSmoothAbs', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegCurvetoCubicSmoothRel', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegCurvetoQuadraticAbs', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegCurvetoQuadraticRel', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegCurvetoQuadraticSmoothAbs', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegCurvetoQuadraticSmoothRel', {"": []
  });
  
  $.$defineNativeClass('SVGPathSeg', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegLinetoAbs', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegLinetoHorizontalAbs', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegLinetoHorizontalRel', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegLinetoRel', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegLinetoVerticalAbs', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegLinetoVerticalRel', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegList', {"": [],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   clear$0: function() {
    return this.clear();
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('SVGPathSegMovetoAbs', {"": []
  });
  
  $.$defineNativeClass('SVGPathSegMovetoRel', {"": []
  });
  
  $.$defineNativeClass('SVGPatternElement', {"": []
  });
  
  $.$defineNativeClass('SVGPoint', {"": []
  });
  
  $.$defineNativeClass('SVGPointList', {"": [],
   clear$0: function() {
    return this.clear();
  }
  });
  
  $.$defineNativeClass('SVGPolygonElement', {"": []
  });
  
  $.$defineNativeClass('SVGPolylineElement', {"": []
  });
  
  $.$defineNativeClass('SVGPreserveAspectRatio', {"": []
  });
  
  $.$defineNativeClass('SVGRadialGradientElement', {"": []
  });
  
  $.$defineNativeClass('SVGRectElement', {"": []
  });
  
  $.$defineNativeClass('SVGRect', {"": []
  });
  
  $.$defineNativeClass('SVGRenderingIntent', {"": []
  });
  
  $.$defineNativeClass('SVGSVGElement', {"": []
  });
  
  $.$defineNativeClass('SVGScriptElement', {"": []
  });
  
  $.$defineNativeClass('SVGSetElement', {"": []
  });
  
  $.$defineNativeClass('SVGStopElement', {"": []
  });
  
  $.$defineNativeClass('SVGStringList', {"": [],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   clear$0: function() {
    return this.clear();
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('SVGStyleElement', {"": []
  });
  
  $.$defineNativeClass('SVGSwitchElement', {"": []
  });
  
  $.$defineNativeClass('SVGSymbolElement', {"": []
  });
  
  $.$defineNativeClass('SVGTRefElement', {"": []
  });
  
  $.$defineNativeClass('SVGTSpanElement', {"": []
  });
  
  $.$defineNativeClass('SVGTextContentElement', {"": []
  });
  
  $.$defineNativeClass('SVGTextElement', {"": []
  });
  
  $.$defineNativeClass('SVGTextPathElement', {"": []
  });
  
  $.$defineNativeClass('SVGTextPositioningElement', {"": []
  });
  
  $.$defineNativeClass('SVGTitleElement', {"": []
  });
  
  $.$defineNativeClass('SVGTransform', {"": []
  });
  
  $.$defineNativeClass('SVGTransformList', {"": [],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   clear$0: function() {
    return this.clear();
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('SVGUnitTypes', {"": []
  });
  
  $.$defineNativeClass('SVGUseElement', {"": []
  });
  
  $.$defineNativeClass('SVGVKernElement', {"": []
  });
  
  $.$defineNativeClass('SVGViewElement', {"": []
  });
  
  $.$defineNativeClass('SVGViewSpec', {"": []
  });
  
  $.$defineNativeClass('SVGZoomEvent', {"": []
  });
  
  $.$defineNativeClass('Screen', {"": []
  });
  
  $.$defineNativeClass('HTMLScriptElement', {"": []
  });
  
  $.$defineNativeClass('ScriptProcessorNode', {"": [],
   get$on: function() {
    return $._ScriptProcessorNodeEventsImpl$(this);
  }
  });
  
  $.$defineNativeClass('ScriptProfile', {"": []
  });
  
  $.$defineNativeClass('ScriptProfileNode', {"": []
  });
  
  $.$defineNativeClass('HTMLSelectElement', {"": ["length=", "value="]
  });
  
  $.$defineNativeClass('SessionDescription', {"": []
  });
  
  $.$defineNativeClass('HTMLShadowElement', {"": []
  });
  
  $.$defineNativeClass('ShadowRoot', {"": []
  });
  
  $.$defineNativeClass('SharedWorkerContext', {"": [],
   get$on: function() {
    return $._SharedWorkerContextEventsImpl$(this);
  }
  });
  
  $.$defineNativeClass('SharedWorker', {"": []
  });
  
  $.$defineNativeClass('SourceBuffer', {"": []
  });
  
  $.$defineNativeClass('SourceBufferList', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('HTMLSourceElement', {"": []
  });
  
  $.$defineNativeClass('HTMLSpanElement', {"": []
  });
  
  $.$defineNativeClass('SpeechGrammar', {"": []
  });
  
  $.$defineNativeClass('SpeechGrammarList', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('SpeechInputEvent', {"": []
  });
  
  $.$defineNativeClass('SpeechInputResult', {"": []
  });
  
  $.$defineNativeClass('SpeechInputResultList', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('SpeechRecognitionAlternative', {"": []
  });
  
  $.$defineNativeClass('SpeechRecognitionError', {"": []
  });
  
  $.$defineNativeClass('SpeechRecognitionEvent', {"": []
  });
  
  $.$defineNativeClass('SpeechRecognition', {"": [],
   get$on: function() {
    return $._SpeechRecognitionEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('SpeechRecognitionResult', {"": ["length?"]
  });
  
  $.$defineNativeClass('SpeechRecognitionResultList', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('StorageEvent', {"": ["key?"]
  });
  
  $.$defineNativeClass('Storage', {"": [],
   containsKey$1: function(key) {
    return !(this.$dom_getItem$1(key) == null);
  },
   operator$index$1: function(key) {
    return this.$dom_getItem$1(key);
  },
   operator$indexSet$2: function(key, value) {
    return this.$dom_setItem$2(key, value);
  },
   clear$0: function() {
    return this.$dom_clear$0();
  },
   forEach$1: function(f) {
    for (var i = 0; true; ++i) {
      var key = this.$dom_key$1(i);
      if (key == null)
        return
  ;
      f.call$2(key, this.operator$index$1(key));
    }
  },
   get$length: function() {
    return this.get$$$dom_length();
  },
   get$isEmpty: function() {
    return this.$dom_key$1(0) == null;
  },
   get$$$dom_length: function() {
    return this.length;
  },
   $dom_clear$0: function() {
    return this.clear();
  },
   $dom_getItem$1: function(key) {
    return this.getItem(key);
  },
   $dom_key$1: function(index) {
    return this.key(index);
  },
   $dom_setItem$2: function(key, data) {
    return this.setItem(key,data);
  },
   is$Map: function() { return true; }
  });
  
  $.$defineNativeClass('StorageInfo', {"": []
  });
  
  $.$defineNativeClass('HTMLStyleElement', {"": []
  });
  
  $.$defineNativeClass('StyleMedia', {"": []
  });
  
  $.$defineNativeClass('StyleSheet', {"": []
  });
  
  $.$defineNativeClass('StyleSheetList', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('HTMLTableCaptionElement', {"": []
  });
  
  $.$defineNativeClass('HTMLTableCellElement', {"": []
  });
  
  $.$defineNativeClass('HTMLTableColElement', {"": []
  });
  
  $.$defineNativeClass('HTMLTableElement', {"": []
  });
  
  $.$defineNativeClass('HTMLTableRowElement', {"": []
  });
  
  $.$defineNativeClass('HTMLTableSectionElement', {"": []
  });
  
  $.$defineNativeClass('HTMLTextAreaElement', {"": ["value="]
  });
  
  $.$defineNativeClass('TextEvent', {"": []
  });
  
  $.$defineNativeClass('Text', {"": []
  });
  
  $.$defineNativeClass('TextMetrics', {"": []
  });
  
  $.$defineNativeClass('TextTrackCue', {"": ["text!"],
   get$on: function() {
    return $._TextTrackCueEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('TextTrackCueList', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('TextTrack', {"": [],
   get$on: function() {
    return $._TextTrackEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('TextTrackList', {"": ["length?"],
   get$on: function() {
    return $._TextTrackListEventsImpl$(this);
  },
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('TimeRanges', {"": ["length?"]
  });
  
  $.$defineNativeClass('HTMLTitleElement', {"": []
  });
  
  $.$defineNativeClass('TouchEvent', {"": []
  });
  
  $.$defineNativeClass('Touch', {"": []
  });
  
  $.$defineNativeClass('TouchList', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('HTMLTrackElement', {"": []
  });
  
  $.$defineNativeClass('TrackEvent', {"": []
  });
  
  $.$defineNativeClass('WebKitTransitionEvent', {"": []
  });
  
  $.$defineNativeClass('TreeWalker', {"": []
  });
  
  $.$defineNativeClass('UIEvent', {"": []
  });
  
  $.$defineNativeClass('HTMLUListElement', {"": []
  });
  
  $.$defineNativeClass('Uint16Array', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    return this[index] = value;
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; },
   is$ArrayBufferView: function() { return true; }
  });
  
  $.$defineNativeClass('Uint32Array', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    return this[index] = value;
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; },
   is$ArrayBufferView: function() { return true; }
  });
  
  $.$defineNativeClass('Uint8Array', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    return this[index] = value;
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; },
   is$ArrayBufferView: function() { return true; }
  });
  
  $.$defineNativeClass('Uint8ClampedArray', {"": [],
   is$List: function() { return true; },
   is$Collection: function() { return true; },
   is$ArrayBufferView: function() { return true; }
  });
  
  $.$defineNativeClass('HTMLUnknownElement', {"": []
  });
  
  $.$defineNativeClass('ValidityState', {"": []
  });
  
  $.$defineNativeClass('HTMLVideoElement', {"": []
  });
  
  $.$defineNativeClass('WaveShaperNode', {"": []
  });
  
  $.$defineNativeClass('WaveTable', {"": []
  });
  
  $.$defineNativeClass('WebGLActiveInfo', {"": []
  });
  
  $.$defineNativeClass('WebGLBuffer', {"": []
  });
  
  $.$defineNativeClass('WebGLCompressedTextureS3TC', {"": []
  });
  
  $.$defineNativeClass('WebGLContextAttributes', {"": []
  });
  
  $.$defineNativeClass('WebGLContextEvent', {"": []
  });
  
  $.$defineNativeClass('WebGLDebugRendererInfo', {"": []
  });
  
  $.$defineNativeClass('WebGLDebugShaders', {"": []
  });
  
  $.$defineNativeClass('WebGLDepthTexture', {"": []
  });
  
  $.$defineNativeClass('WebGLFramebuffer', {"": []
  });
  
  $.$defineNativeClass('WebGLLoseContext', {"": []
  });
  
  $.$defineNativeClass('WebGLProgram', {"": []
  });
  
  $.$defineNativeClass('WebGLRenderbuffer', {"": []
  });
  
  $.$defineNativeClass('WebGLRenderingContext', {"": []
  });
  
  $.$defineNativeClass('WebGLShader', {"": []
  });
  
  $.$defineNativeClass('WebGLShaderPrecisionFormat', {"": []
  });
  
  $.$defineNativeClass('WebGLTexture', {"": []
  });
  
  $.$defineNativeClass('WebGLUniformLocation', {"": []
  });
  
  $.$defineNativeClass('WebGLVertexArrayObjectOES', {"": []
  });
  
  $.$defineNativeClass('WebKitAnimationList', {"": ["length?"],
   operator$index$1: function(index) {
    return this[index];
  },
   operator$indexSet$2: function(index, value) {
    throw $.$$throw($.UnsupportedError$('Cannot assign element of immutable List.'));
  },
   iterator$0: function() {
    return $._FixedSizeListIterator$(this);
  },
   add$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   addLast$1: function(value) {
    throw $.$$throw($.UnsupportedError$('Cannot add to immutable List.'));
  },
   forEach$1: function(f) {
    for (var t1 = $.iterator(this); t1.get$hasNext() === true;)
      f.call$1(t1.next$0());
    return
  ;
  },
   get$isEmpty: function() {
    return $.eq($.get$length(this), 0);
  },
   removeLast$0: function() {
    throw $.$$throw($.UnsupportedError$('Cannot removeLast on immutable List.'));
  },
   is$JavaScriptIndexingBehavior: function() { return true; },
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('WebKitCSSFilterValue', {"": [],
   is$List: function() { return true; },
   is$Collection: function() { return true; }
  });
  
  $.$defineNativeClass('WebKitNamedFlow', {"": [],
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('WebSocket', {"": [],
   get$on: function() {
    return $._WebSocketEventsImpl$(this);
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('WheelEvent', {"": []
  });
  
  $.$defineNativeClass('WorkerContext', {"": ["navigator?"],
   get$on: function() {
    if (Object.getPrototypeOf(this).hasOwnProperty('get$on')) {
    {
    return $._WorkerContextEventsImpl$(this);
  }
    } else {
      return Object.prototype.get$on.call(this);
    }
  
  },
   $dom_addEventListener$3: function(type, listener, useCapture) {
    return this.addEventListener(type,$.convertDartClosureToJS(listener, 1),useCapture);
  }
  });
  
  $.$defineNativeClass('Worker', {"": [],
   get$on: function() {
    return $._WorkerEventsImpl$(this);
  }
  });
  
  $.$defineNativeClass('WorkerLocation', {"": [],
   toString$0: function() {
    return this.toString();
  }
  });
  
  $.$defineNativeClass('WorkerNavigator', {"": ["userAgent?"]
  });
  
  $.$defineNativeClass('XMLSerializer', {"": []
  });
  
  $.$defineNativeClass('XPathEvaluator', {"": []
  });
  
  $.$defineNativeClass('XPathException', {"": [],
   toString$0: function() {
    return this.toString();
  }
  });
  
  $.$defineNativeClass('XPathExpression', {"": []
  });
  
  $.$defineNativeClass('XPathNSResolver', {"": []
  });
  
  $.$defineNativeClass('XPathResult', {"": []
  });
  
  $.$defineNativeClass('XSLTProcessor', {"": []
  });
  
  $.$defineNativeClass('Worker', {"": []
  });
  
  $.$defineNativeClass('DOMWindow', {"": []
  });
  
  // 527 dynamic classes.
  // 527 classes
  // 41 !leaf
  (function(){
    var v0/*class(_SVGTextPositioningElementImpl)*/ = 'SVGTextPositioningElement|SVGTextElement|SVGTSpanElement|SVGTRefElement|SVGAltGlyphElement|SVGTextElement|SVGTSpanElement|SVGTRefElement|SVGAltGlyphElement';
    var v1/*class(_Uint8ArrayImpl)*/ = 'Uint8Array|Uint8ClampedArray|Uint8ClampedArray';
    var v2/*class(_MouseEventImpl)*/ = 'MouseEvent|WheelEvent|WheelEvent';
    var v3/*class(_AudioSourceNodeImpl)*/ = 'AudioSourceNode|OscillatorNode|MediaStreamAudioSourceNode|MediaElementAudioSourceNode|AudioBufferSourceNode|OscillatorNode|MediaStreamAudioSourceNode|MediaElementAudioSourceNode|AudioBufferSourceNode';
    var v4/*class(_SVGColorImpl)*/ = 'SVGColor|SVGPaint|SVGPaint';
    var v5/*class(_CSSValueListImpl)*/ = 'CSSValueList|WebKitCSSFilterValue|WebKitCSSTransformValue|WebKitCSSFilterValue|WebKitCSSTransformValue';
    var v6/*class(_TextImpl)*/ = 'Text|CDATASection|CDATASection';
    var v7/*class(_SVGTextContentElementImpl)*/ = [v0/*class(_SVGTextPositioningElementImpl)*/,v0/*class(_SVGTextPositioningElementImpl)*/,'SVGTextContentElement|SVGTextPathElement|SVGTextPathElement'].join('|');
    var v8/*class(_SVGGradientElementImpl)*/ = 'SVGGradientElement|SVGRadialGradientElement|SVGLinearGradientElement|SVGRadialGradientElement|SVGLinearGradientElement';
    var v9/*class(_SVGComponentTransferFunctionElementImpl)*/ = 'SVGComponentTransferFunctionElement|SVGFEFuncRElement|SVGFEFuncGElement|SVGFEFuncBElement|SVGFEFuncAElement|SVGFEFuncRElement|SVGFEFuncGElement|SVGFEFuncBElement|SVGFEFuncAElement';
    var v10/*class(_SVGAnimationElementImpl)*/ = 'SVGAnimationElement|SVGSetElement|SVGAnimateTransformElement|SVGAnimateMotionElement|SVGAnimateElement|SVGAnimateColorElement|SVGSetElement|SVGAnimateTransformElement|SVGAnimateMotionElement|SVGAnimateElement|SVGAnimateColorElement';
    var v11/*class(_SVGElementImpl)*/ = [v7/*class(_SVGTextContentElementImpl)*/,v8/*class(_SVGGradientElementImpl)*/,v9/*class(_SVGComponentTransferFunctionElementImpl)*/,v10/*class(_SVGAnimationElementImpl)*/,v7/*class(_SVGTextContentElementImpl)*/,v8/*class(_SVGGradientElementImpl)*/,v9/*class(_SVGComponentTransferFunctionElementImpl)*/,v10/*class(_SVGAnimationElementImpl)*/,'SVGElement|SVGViewElement|SVGVKernElement|SVGUseElement|SVGTitleElement|SVGSymbolElement|SVGSwitchElement|SVGStyleElement|SVGStopElement|SVGScriptElement|SVGSVGElement|SVGRectElement|SVGPolylineElement|SVGPolygonElement|SVGPatternElement|SVGPathElement|SVGMissingGlyphElement|SVGMetadataElement|SVGMaskElement|SVGMarkerElement|SVGMPathElement|SVGLineElement|SVGImageElement|SVGHKernElement|SVGGlyphRefElement|SVGGlyphElement|SVGGElement|SVGForeignObjectElement|SVGFontFaceUriElement|SVGFontFaceSrcElement|SVGFontFaceNameElement|SVGFontFaceFormatElement|SVGFontFaceElement|SVGFontElement|SVGFilterElement|SVGFETurbulenceElement|SVGFETileElement|SVGFESpotLightElement|SVGFESpecularLightingElement|SVGFEPointLightElement|SVGFEOffsetElement|SVGFEMorphologyElement|SVGFEMergeNodeElement|SVGFEMergeElement|SVGFEImageElement|SVGFEGaussianBlurElement|SVGFEFloodElement|SVGFEDropShadowElement|SVGFEDistantLightElement|SVGFEDisplacementMapElement|SVGFEDiffuseLightingElement|SVGFEConvolveMatrixElement|SVGFECompositeElement|SVGFEComponentTransferElement|SVGFEColorMatrixElement|SVGFEBlendElement|SVGEllipseElement|SVGDescElement|SVGDefsElement|SVGCursorElement|SVGClipPathElement|SVGCircleElement|SVGAltGlyphItemElement|SVGAltGlyphDefElement|SVGAElement|SVGViewElement|SVGVKernElement|SVGUseElement|SVGTitleElement|SVGSymbolElement|SVGSwitchElement|SVGStyleElement|SVGStopElement|SVGScriptElement|SVGSVGElement|SVGRectElement|SVGPolylineElement|SVGPolygonElement|SVGPatternElement|SVGPathElement|SVGMissingGlyphElement|SVGMetadataElement|SVGMaskElement|SVGMarkerElement|SVGMPathElement|SVGLineElement|SVGImageElement|SVGHKernElement|SVGGlyphRefElement|SVGGlyphElement|SVGGElement|SVGForeignObjectElement|SVGFontFaceUriElement|SVGFontFaceSrcElement|SVGFontFaceNameElement|SVGFontFaceFormatElement|SVGFontFaceElement|SVGFontElement|SVGFilterElement|SVGFETurbulenceElement|SVGFETileElement|SVGFESpotLightElement|SVGFESpecularLightingElement|SVGFEPointLightElement|SVGFEOffsetElement|SVGFEMorphologyElement|SVGFEMergeNodeElement|SVGFEMergeElement|SVGFEImageElement|SVGFEGaussianBlurElement|SVGFEFloodElement|SVGFEDropShadowElement|SVGFEDistantLightElement|SVGFEDisplacementMapElement|SVGFEDiffuseLightingElement|SVGFEConvolveMatrixElement|SVGFECompositeElement|SVGFEComponentTransferElement|SVGFEColorMatrixElement|SVGFEBlendElement|SVGEllipseElement|SVGDescElement|SVGDefsElement|SVGCursorElement|SVGClipPathElement|SVGCircleElement|SVGAltGlyphItemElement|SVGAltGlyphDefElement|SVGAElement'].join('|');
    var v12/*class(_MediaElementImpl)*/ = 'HTMLMediaElement|HTMLVideoElement|HTMLAudioElement|HTMLVideoElement|HTMLAudioElement';
    var v13/*class(_UIEventImpl)*/ = [v2/*class(_MouseEventImpl)*/,v2/*class(_MouseEventImpl)*/,'UIEvent|TouchEvent|TextEvent|SVGZoomEvent|KeyboardEvent|CompositionEvent|TouchEvent|TextEvent|SVGZoomEvent|KeyboardEvent|CompositionEvent'].join('|');
    var v14/*class(_ProgressEventImpl)*/ = 'ProgressEvent|XMLHttpRequestProgressEvent|XMLHttpRequestProgressEvent';
    var v15/*class(_ElementImpl)*/ = [v11/*class(_SVGElementImpl)*/,v12/*class(_MediaElementImpl)*/,v11/*class(_SVGElementImpl)*/,v12/*class(_MediaElementImpl)*/,'Element|HTMLUnknownElement|HTMLUListElement|HTMLTrackElement|HTMLTitleElement|HTMLTextAreaElement|HTMLTableSectionElement|HTMLTableRowElement|HTMLTableElement|HTMLTableColElement|HTMLTableCellElement|HTMLTableCaptionElement|HTMLStyleElement|HTMLSpanElement|HTMLSourceElement|HTMLShadowElement|HTMLSelectElement|HTMLScriptElement|HTMLQuoteElement|HTMLProgressElement|HTMLPreElement|HTMLParamElement|HTMLParagraphElement|HTMLOutputElement|HTMLOptionElement|HTMLOptGroupElement|HTMLObjectElement|HTMLOListElement|HTMLModElement|HTMLMeterElement|HTMLMetaElement|HTMLMenuElement|HTMLMarqueeElement|HTMLMapElement|HTMLLinkElement|HTMLLegendElement|HTMLLabelElement|HTMLLIElement|HTMLKeygenElement|HTMLInputElement|HTMLImageElement|HTMLIFrameElement|HTMLHtmlElement|HTMLHeadingElement|HTMLHeadElement|HTMLHRElement|HTMLFrameSetElement|HTMLFrameElement|HTMLFormElement|HTMLFontElement|HTMLFieldSetElement|HTMLEmbedElement|HTMLDivElement|HTMLDirectoryElement|HTMLDetailsElement|HTMLDataListElement|HTMLDListElement|HTMLContentElement|HTMLCanvasElement|HTMLButtonElement|HTMLBodyElement|HTMLBaseFontElement|HTMLBaseElement|HTMLBRElement|HTMLAreaElement|HTMLAppletElement|HTMLAnchorElement|HTMLElement|HTMLUnknownElement|HTMLUListElement|HTMLTrackElement|HTMLTitleElement|HTMLTextAreaElement|HTMLTableSectionElement|HTMLTableRowElement|HTMLTableElement|HTMLTableColElement|HTMLTableCellElement|HTMLTableCaptionElement|HTMLStyleElement|HTMLSpanElement|HTMLSourceElement|HTMLShadowElement|HTMLSelectElement|HTMLScriptElement|HTMLQuoteElement|HTMLProgressElement|HTMLPreElement|HTMLParamElement|HTMLParagraphElement|HTMLOutputElement|HTMLOptionElement|HTMLOptGroupElement|HTMLObjectElement|HTMLOListElement|HTMLModElement|HTMLMeterElement|HTMLMetaElement|HTMLMenuElement|HTMLMarqueeElement|HTMLMapElement|HTMLLinkElement|HTMLLegendElement|HTMLLabelElement|HTMLLIElement|HTMLKeygenElement|HTMLInputElement|HTMLImageElement|HTMLIFrameElement|HTMLHtmlElement|HTMLHeadingElement|HTMLHeadElement|HTMLHRElement|HTMLFrameSetElement|HTMLFrameElement|HTMLFormElement|HTMLFontElement|HTMLFieldSetElement|HTMLEmbedElement|HTMLDivElement|HTMLDirectoryElement|HTMLDetailsElement|HTMLDataListElement|HTMLDListElement|HTMLContentElement|HTMLCanvasElement|HTMLButtonElement|HTMLBodyElement|HTMLBaseFontElement|HTMLBaseElement|HTMLBRElement|HTMLAreaElement|HTMLAppletElement|HTMLAnchorElement|HTMLElement'].join('|');
    var v16/*class(_DocumentImpl)*/ = 'HTMLDocument|SVGDocument|SVGDocument';
    var v17/*class(_DocumentFragmentImpl)*/ = 'DocumentFragment|ShadowRoot|ShadowRoot';
    var v18/*class(_CharacterDataImpl)*/ = [v6/*class(_TextImpl)*/,v6/*class(_TextImpl)*/,'CharacterData|Comment|Comment'].join('|');
    var v19/*class(_WorkerContextImpl)*/ = 'WorkerContext|SharedWorkerContext|DedicatedWorkerContext|SharedWorkerContext|DedicatedWorkerContext';
    var v20/*class(_NodeImpl)*/ = [v15/*class(_ElementImpl)*/,v16/*class(_DocumentImpl)*/,v17/*class(_DocumentFragmentImpl)*/,v18/*class(_CharacterDataImpl)*/,v15/*class(_ElementImpl)*/,v16/*class(_DocumentImpl)*/,v17/*class(_DocumentFragmentImpl)*/,v18/*class(_CharacterDataImpl)*/,'Node|ProcessingInstruction|Notation|EntityReference|DocumentType|Attr|ProcessingInstruction|Notation|EntityReference|DocumentType|Attr'].join('|');
    var v21/*class(_MediaStreamImpl)*/ = 'MediaStream|LocalMediaStream|LocalMediaStream';
    var v22/*class(_IDBRequestImpl)*/ = 'IDBRequest|IDBVersionChangeRequest|IDBOpenDBRequest|IDBVersionChangeRequest|IDBOpenDBRequest';
    var v23/*class(_AbstractWorkerImpl)*/ = 'AbstractWorker|Worker|SharedWorker|Worker|SharedWorker';
    var table = [
      // [dynamic-dispatch-tag, tags of classes implementing dynamic-dispatch-tag]
      ['SVGTextPositioningElement', v0/*class(_SVGTextPositioningElementImpl)*/],
      ['SVGTextContentElement', v7/*class(_SVGTextContentElementImpl)*/],
      ['StyleSheet', 'StyleSheet|CSSStyleSheet|CSSStyleSheet'],
      ['Text', v6/*class(_TextImpl)*/],
      ['AbstractWorker', v23/*class(_AbstractWorkerImpl)*/],
      ['Uint8Array', v1/*class(_Uint8ArrayImpl)*/],
      ['ArrayBufferView', [v1/*class(_Uint8ArrayImpl)*/,v1/*class(_Uint8ArrayImpl)*/,'ArrayBufferView|Uint32Array|Uint16Array|Int8Array|Int32Array|Int16Array|Float64Array|Float32Array|DataView|Uint32Array|Uint16Array|Int8Array|Int32Array|Int16Array|Float64Array|Float32Array|DataView'].join('|')],
      ['MouseEvent', v2/*class(_MouseEventImpl)*/],
      ['UIEvent', v13/*class(_UIEventImpl)*/],
      ['AudioSourceNode', v3/*class(_AudioSourceNodeImpl)*/],
      ['AudioNode', [v3/*class(_AudioSourceNodeImpl)*/,v3/*class(_AudioSourceNodeImpl)*/,'AudioNode|WaveShaperNode|ScriptProcessorNode|PannerNode|GainNode|DynamicsCompressorNode|DelayNode|ConvolverNode|ChannelSplitterNode|ChannelMergerNode|BiquadFilterNode|AudioDestinationNode|AnalyserNode|WaveShaperNode|ScriptProcessorNode|PannerNode|GainNode|DynamicsCompressorNode|DelayNode|ConvolverNode|ChannelSplitterNode|ChannelMergerNode|BiquadFilterNode|AudioDestinationNode|AnalyserNode'].join('|')],
      ['AudioParam', 'AudioParam|AudioGain|AudioGain'],
      ['Blob', 'Blob|File|File'],
      ['CSSRule', 'CSSRule|CSSUnknownRule|CSSStyleRule|CSSPageRule|CSSMediaRule|WebKitCSSKeyframesRule|WebKitCSSKeyframeRule|CSSImportRule|CSSFontFaceRule|CSSCharsetRule|CSSUnknownRule|CSSStyleRule|CSSPageRule|CSSMediaRule|WebKitCSSKeyframesRule|WebKitCSSKeyframeRule|CSSImportRule|CSSFontFaceRule|CSSCharsetRule'],
      ['SVGColor', v4/*class(_SVGColorImpl)*/],
      ['CSSValueList', v5/*class(_CSSValueListImpl)*/],
      ['CSSValue', [v4/*class(_SVGColorImpl)*/,v5/*class(_CSSValueListImpl)*/,v4/*class(_SVGColorImpl)*/,v5/*class(_CSSValueListImpl)*/,'CSSValue|CSSPrimitiveValue|CSSPrimitiveValue'].join('|')],
      ['WorkerContext', v19/*class(_WorkerContextImpl)*/],
      ['CanvasRenderingContext', 'CanvasRenderingContext|WebGLRenderingContext|CanvasRenderingContext2D|WebGLRenderingContext|CanvasRenderingContext2D'],
      ['CharacterData', v18/*class(_CharacterDataImpl)*/],
      ['DOMTokenList', 'DOMTokenList|DOMSettableTokenList|DOMSettableTokenList'],
      ['DocumentFragment', v17/*class(_DocumentFragmentImpl)*/],
      ['HTMLDocument', v16/*class(_DocumentImpl)*/],
      ['SVGGradientElement', v8/*class(_SVGGradientElementImpl)*/],
      ['SVGComponentTransferFunctionElement', v9/*class(_SVGComponentTransferFunctionElementImpl)*/],
      ['SVGAnimationElement', v10/*class(_SVGAnimationElementImpl)*/],
      ['SVGElement', v11/*class(_SVGElementImpl)*/],
      ['HTMLMediaElement', v12/*class(_MediaElementImpl)*/],
      ['Element', v15/*class(_ElementImpl)*/],
      ['Entry', 'Entry|FileEntry|DirectoryEntry|FileEntry|DirectoryEntry'],
      ['EntrySync', 'EntrySync|FileEntrySync|DirectoryEntrySync|FileEntrySync|DirectoryEntrySync'],
      ['ProgressEvent', v14/*class(_ProgressEventImpl)*/],
      ['Event', [v13/*class(_UIEventImpl)*/,v14/*class(_ProgressEventImpl)*/,v13/*class(_UIEventImpl)*/,v14/*class(_ProgressEventImpl)*/,'Event|WebGLContextEvent|WebKitTransitionEvent|TrackEvent|StorageEvent|SpeechRecognitionEvent|SpeechRecognitionError|SpeechInputEvent|RTCIceCandidateEvent|RTCDataChannelEvent|PopStateEvent|PageTransitionEvent|OverflowEvent|OfflineAudioCompletionEvent|MutationEvent|MessageEvent|MediaStreamTrackEvent|MediaStreamEvent|MediaKeyEvent|IDBVersionChangeEvent|IDBVersionChangeEvent|HashChangeEvent|ErrorEvent|DeviceOrientationEvent|DeviceMotionEvent|CustomEvent|CloseEvent|BeforeLoadEvent|AudioProcessingEvent|WebKitAnimationEvent|WebGLContextEvent|WebKitTransitionEvent|TrackEvent|StorageEvent|SpeechRecognitionEvent|SpeechRecognitionError|SpeechInputEvent|RTCIceCandidateEvent|RTCDataChannelEvent|PopStateEvent|PageTransitionEvent|OverflowEvent|OfflineAudioCompletionEvent|MutationEvent|MessageEvent|MediaStreamTrackEvent|MediaStreamEvent|MediaKeyEvent|IDBVersionChangeEvent|IDBVersionChangeEvent|HashChangeEvent|ErrorEvent|DeviceOrientationEvent|DeviceMotionEvent|CustomEvent|CloseEvent|BeforeLoadEvent|AudioProcessingEvent|WebKitAnimationEvent'].join('|')],
      ['Node', v20/*class(_NodeImpl)*/],
      ['MediaStream', v21/*class(_MediaStreamImpl)*/],
      ['IDBRequest', v22/*class(_IDBRequestImpl)*/],
      ['EventTarget', [v19/*class(_WorkerContextImpl)*/,v20/*class(_NodeImpl)*/,v21/*class(_MediaStreamImpl)*/,v22/*class(_IDBRequestImpl)*/,v23/*class(_AbstractWorkerImpl)*/,v19/*class(_WorkerContextImpl)*/,v20/*class(_NodeImpl)*/,v21/*class(_MediaStreamImpl)*/,v22/*class(_IDBRequestImpl)*/,v23/*class(_AbstractWorkerImpl)*/,'EventTarget|WebSocket|WebKitNamedFlow|TextTrackList|TextTrack|TextTrackCue|SpeechRecognition|SourceBufferList|SVGElementInstance|RTCPeerConnection|RTCDataChannel|Performance|PeerConnection00|Notification|MessagePort|MediaStreamTrackList|MediaStreamTrack|MediaSource|MediaController|DOMWindow|IDBTransaction|IDBDatabase|XMLHttpRequestUpload|XMLHttpRequest|FileWriter|FileReader|EventSource|DOMApplicationCache|BatteryManager|AudioContext|WebSocket|WebKitNamedFlow|TextTrackList|TextTrack|TextTrackCue|SpeechRecognition|SourceBufferList|SVGElementInstance|RTCPeerConnection|RTCDataChannel|Performance|PeerConnection00|Notification|MessagePort|MediaStreamTrackList|MediaStreamTrack|MediaSource|MediaController|DOMWindow|IDBTransaction|IDBDatabase|XMLHttpRequestUpload|XMLHttpRequest|FileWriter|FileReader|EventSource|DOMApplicationCache|BatteryManager|AudioContext'].join('|')],
      ['HTMLCollection', 'HTMLCollection|HTMLOptionsCollection|HTMLOptionsCollection'],
      ['IDBCursor', 'IDBCursor|IDBCursorWithValue|IDBCursorWithValue'],
      ['NodeList', 'NodeList|RadioNodeList|RadioNodeList'],
      ['SVGPathSeg', 'SVGPathSeg|SVGPathSegMovetoRel|SVGPathSegMovetoAbs|SVGPathSegLinetoVerticalRel|SVGPathSegLinetoVerticalAbs|SVGPathSegLinetoRel|SVGPathSegLinetoHorizontalRel|SVGPathSegLinetoHorizontalAbs|SVGPathSegLinetoAbs|SVGPathSegCurvetoQuadraticSmoothRel|SVGPathSegCurvetoQuadraticSmoothAbs|SVGPathSegCurvetoQuadraticRel|SVGPathSegCurvetoQuadraticAbs|SVGPathSegCurvetoCubicSmoothRel|SVGPathSegCurvetoCubicSmoothAbs|SVGPathSegCurvetoCubicRel|SVGPathSegCurvetoCubicAbs|SVGPathSegClosePath|SVGPathSegArcRel|SVGPathSegArcAbs|SVGPathSegMovetoRel|SVGPathSegMovetoAbs|SVGPathSegLinetoVerticalRel|SVGPathSegLinetoVerticalAbs|SVGPathSegLinetoRel|SVGPathSegLinetoHorizontalRel|SVGPathSegLinetoHorizontalAbs|SVGPathSegLinetoAbs|SVGPathSegCurvetoQuadraticSmoothRel|SVGPathSegCurvetoQuadraticSmoothAbs|SVGPathSegCurvetoQuadraticRel|SVGPathSegCurvetoQuadraticAbs|SVGPathSegCurvetoCubicSmoothRel|SVGPathSegCurvetoCubicSmoothAbs|SVGPathSegCurvetoCubicRel|SVGPathSegCurvetoCubicAbs|SVGPathSegClosePath|SVGPathSegArcRel|SVGPathSegArcAbs']];
  $.dynamicSetMetadata(table);
  })();
  
  
  //
  // BEGIN invoke [main].
  //
  if (typeof document != 'undefined' && document.readyState != 'complete') {
    document.addEventListener('readystatechange', function () {
      if (document.readyState == 'complete') {
        if (typeof dartMainRunner == 'function') {
          dartMainRunner(function() { $.main(); });
        } else {
          $.main();
        }
      }
    }, false);
  } else {
    if (typeof dartMainRunner == 'function') {
      dartMainRunner(function() { $.main(); });
    } else {
      $.main();
    }
  }
  //
  // END invoke [main].
  //
  
  function init() {
  Isolate.$isolateProperties = {};
  Isolate.$defineClass = function(cls, fields, prototype) {
    var generateGetterSetter =   function(field, prototype) {
      var len = field.length;
      var lastChar = field[len - 1];
      var needsGetter = lastChar == '?' || lastChar == '=';
      var needsSetter = lastChar == '!' || lastChar == '=';
      if (needsGetter || needsSetter) field = field.substring(0, len - 1);
      if (needsGetter) {
        var getterString = "return this." + field + ";";
          prototype["get$" + field] = new Function(getterString);
      }
      if (needsSetter) {
        var setterString = "this." + field + " = v;";
        prototype["set$" + field] = new Function("v", setterString);
      }
      return field;
    };
    var constructor;
    if (typeof fields == 'function') {
      constructor = fields;
    } else {
      var str = "function " + cls + "(";
      var body = "";
      for (var i = 0; i < fields.length; i++) {
        if (i != 0) str += ", ";
        var field = fields[i];
        field = generateGetterSetter(field, prototype);
        str += field;
        body += "this." + field + " = " + field + ";\n";
      }
      str += ") {" + body + "}\n";
      str += "return " + cls + ";";
      constructor = new Function(str)();
    }
    constructor.prototype = prototype;
    return constructor;
  };
  var supportsProto = false;
  var tmp = Isolate.$defineClass('c', ['f?'], {}).prototype;
  if (tmp.__proto__) {
    tmp.__proto__ = {};
    if (typeof tmp.get$f !== "undefined") supportsProto = true;
  }
  Isolate.$pendingClasses = {};
  Isolate.$finishClasses = function(collectedClasses) {
    var hasOwnProperty = Object.prototype.hasOwnProperty;
    for (var cls in collectedClasses) {
      if (hasOwnProperty.call(collectedClasses, cls)) {
        var desc = collectedClasses[cls];
        Isolate.$isolateProperties[cls] = Isolate.$defineClass(cls, desc[''], desc);
        if (desc['super'] !== "") Isolate.$pendingClasses[cls] = desc['super'];
      }
    }
    var pendingClasses = Isolate.$pendingClasses;
    Isolate.$pendingClasses = {};
    var finishedClasses = {};
    function finishClass(cls) {
      var hasOwnProperty = Object.prototype.hasOwnProperty;
      if (hasOwnProperty.call(finishedClasses, cls)) return;
      finishedClasses[cls] = true;
      var superclass = pendingClasses[cls];
      if (!superclass) return;
      finishClass(superclass);
      var constructor = Isolate.$isolateProperties[cls];
      var superConstructor = Isolate.$isolateProperties[superclass];
      var prototype = constructor.prototype;
      if (supportsProto) {
        prototype.__proto__ = superConstructor.prototype;
        prototype.constructor = constructor;
      } else {
        function tmp() {};
        tmp.prototype = superConstructor.prototype;
        var newPrototype = new tmp();
        constructor.prototype = newPrototype;
        newPrototype.constructor = constructor;
        for (var member in prototype) {
          if (member == '' || member == 'super') continue;
          if (hasOwnProperty.call(prototype, member)) {
            newPrototype[member] = prototype[member];
          }
        }
      }
    }
    for (var cls in pendingClasses) finishClass(cls);
  };
  Isolate.$finishIsolateConstructor = function(oldIsolate) {
    var isolateProperties = oldIsolate.$isolateProperties;
    var isolatePrototype = oldIsolate.prototype;
    var str = "{\n";
    str += "var properties = Isolate.$isolateProperties;\n";
    for (var staticName in isolateProperties) {
      if (Object.prototype.hasOwnProperty.call(isolateProperties, staticName)) {
        str += "this." + staticName + "= properties." + staticName + ";\n";
      }
    }
    str += "}\n";
    var newIsolate = new Function(str);
    newIsolate.prototype = isolatePrototype;
    isolatePrototype.constructor = newIsolate;
    newIsolate.$isolateProperties = isolateProperties;
    return newIsolate;
  };
  }
  
  //@ sourceMappingURL=dart_test.dart.js.map