diff --git a/kbase-extension/static/ext_packages/igv/d/.lint b/kbase-extension/static/ext_packages/igv/d/.lint
new file mode 100644
index 0000000000..cf54d81568
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/d/.lint
@@ -0,0 +1,11 @@
+@root
+
+module
+
+tabs
+indent 2
+maxlen 100
+
+ass
+nomen
+plusplus
diff --git a/kbase-extension/static/ext_packages/igv/d/.npmignore b/kbase-extension/static/ext_packages/igv/d/.npmignore
new file mode 100644
index 0000000000..155e41f691
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/d/.npmignore
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/npm-debug.log
+/.lintcache
diff --git a/kbase-extension/static/ext_packages/igv/d/.travis.yml b/kbase-extension/static/ext_packages/igv/d/.travis.yml
new file mode 100644
index 0000000000..01e3b2489c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/d/.travis.yml
@@ -0,0 +1,15 @@
+sudo: false # http://docs.travis-ci.com/user/workers/container-based-infrastructure/
+language: node_js
+node_js:
+ - 0.12
+ - 4
+ - 5
+
+before_install:
+ - mkdir node_modules; ln -s ../ node_modules/d
+
+notifications:
+ email:
+ - medikoo+d@medikoo.com
+
+script: "npm test && npm run lint"
diff --git a/kbase-extension/static/ext_packages/igv/d/CHANGES b/kbase-extension/static/ext_packages/igv/d/CHANGES
new file mode 100644
index 0000000000..594b8ef549
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/d/CHANGES
@@ -0,0 +1,13 @@
+v1.0.0 -- 2015.12.04
+- autoBind changes:
+ - replace `bindTo` argument with options and `resolveContext` option
+ - Add support `overwriteDefinition`
+- Introduce IE11 bug workaround in `lazy` handler
+
+v0.1.1 -- 2014.04.24
+- Add `autoBind` and `lazy` utilities
+- Allow to pass other options to be merged onto created descriptor.
+ Useful when used with other custom utilties
+
+v0.1.0 -- 2013.06.20
+Initial (derived from es5-ext project)
diff --git a/kbase-extension/static/ext_packages/igv/d/LICENSE b/kbase-extension/static/ext_packages/igv/d/LICENSE
new file mode 100644
index 0000000000..aaf35282f4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/d/LICENSE
@@ -0,0 +1,19 @@
+Copyright (C) 2013 Mariusz Nowak (www.medikoo.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/kbase-extension/static/ext_packages/igv/d/README.md b/kbase-extension/static/ext_packages/igv/d/README.md
new file mode 100644
index 0000000000..ccdadc65f2
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/d/README.md
@@ -0,0 +1,104 @@
+# D
+## Property descriptor factory
+
+_Originally derived from [es5-ext](https://github.com/medikoo/es5-ext) package._
+
+Defining properties with descriptors is very verbose:
+
+```javascript
+var Account = function () {};
+Object.defineProperties(Account.prototype, {
+ deposit: { value: function () {
+ /* ... */
+ }, configurable: true, enumerable: false, writable: true },
+ withdraw: { value: function () {
+ /* ... */
+ }, configurable: true, enumerable: false, writable: true },
+ balance: { get: function () {
+ /* ... */
+ }, configurable: true, enumerable: false }
+});
+```
+
+D cuts that to:
+
+```javascript
+var d = require('d');
+
+var Account = function () {};
+Object.defineProperties(Account.prototype, {
+ deposit: d(function () {
+ /* ... */
+ }),
+ withdraw: d(function () {
+ /* ... */
+ }),
+ balance: d.gs(function () {
+ /* ... */
+ })
+});
+```
+
+By default, created descriptor follow characteristics of native ES5 properties, and defines values as:
+
+```javascript
+{ configurable: true, enumerable: false, writable: true }
+```
+
+You can overwrite it by preceding _value_ argument with instruction:
+```javascript
+d('c', value); // { configurable: true, enumerable: false, writable: false }
+d('ce', value); // { configurable: true, enumerable: true, writable: false }
+d('e', value); // { configurable: false, enumerable: true, writable: false }
+
+// Same way for get/set:
+d.gs('e', value); // { configurable: false, enumerable: true }
+```
+
+### Installation
+
+ $ npm install d
+
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+### Other utilities
+
+#### autoBind(obj, props) _(d/auto-bind)_
+
+Define methods which will be automatically bound to its instances
+
+```javascript
+var d = require('d');
+var autoBind = require('d/auto-bind');
+
+var Foo = function () { this._count = 0; };
+Object.defineProperties(Foo.prototype, autoBind({
+ increment: d(function () { ++this._count; });
+}));
+
+var foo = new Foo();
+
+// Increment foo counter on each domEl click
+domEl.addEventListener('click', foo.increment, false);
+```
+
+#### lazy(obj, props) _(d/lazy)_
+
+Define lazy properties, which will be resolved on first access
+
+```javascript
+var d = require('d');
+var lazy = require('d/lazy');
+
+var Foo = function () {};
+Object.defineProperties(Foo.prototype, lazy({
+ items: d(function () { return []; })
+}));
+
+var foo = new Foo();
+foo.items.push(1, 2); // foo.items array created and defined directly on foo
+```
+
+## Tests [![Build Status](https://travis-ci.org/medikoo/d.png)](https://travis-ci.org/medikoo/d)
+
+ $ npm test
diff --git a/kbase-extension/static/ext_packages/igv/d/auto-bind.js b/kbase-extension/static/ext_packages/igv/d/auto-bind.js
new file mode 100644
index 0000000000..0fdac9b730
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/d/auto-bind.js
@@ -0,0 +1,32 @@
+'use strict';
+
+var copy = require('es5-ext/object/copy')
+ , normalizeOptions = require('es5-ext/object/normalize-options')
+ , ensureCallable = require('es5-ext/object/valid-callable')
+ , map = require('es5-ext/object/map')
+ , callable = require('es5-ext/object/valid-callable')
+ , validValue = require('es5-ext/object/valid-value')
+
+ , bind = Function.prototype.bind, defineProperty = Object.defineProperty
+ , hasOwnProperty = Object.prototype.hasOwnProperty
+ , define;
+
+define = function (name, desc, options) {
+ var value = validValue(desc) && callable(desc.value), dgs;
+ dgs = copy(desc);
+ delete dgs.writable;
+ delete dgs.value;
+ dgs.get = function () {
+ if (!options.overwriteDefinition && hasOwnProperty.call(this, name)) return value;
+ desc.value = bind.call(value, options.resolveContext ? options.resolveContext(this) : this);
+ defineProperty(this, name, desc);
+ return this[name];
+ };
+ return dgs;
+};
+
+module.exports = function (props/*, options*/) {
+ var options = normalizeOptions(arguments[1]);
+ if (options.resolveContext != null) ensureCallable(options.resolveContext);
+ return map(props, function (desc, name) { return define(name, desc, options); });
+};
diff --git a/kbase-extension/static/ext_packages/igv/d/index.js b/kbase-extension/static/ext_packages/igv/d/index.js
new file mode 100644
index 0000000000..076ae465f6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/d/index.js
@@ -0,0 +1,63 @@
+'use strict';
+
+var assign = require('es5-ext/object/assign')
+ , normalizeOpts = require('es5-ext/object/normalize-options')
+ , isCallable = require('es5-ext/object/is-callable')
+ , contains = require('es5-ext/string/#/contains')
+
+ , d;
+
+d = module.exports = function (dscr, value/*, options*/) {
+ var c, e, w, options, desc;
+ if ((arguments.length < 2) || (typeof dscr !== 'string')) {
+ options = value;
+ value = dscr;
+ dscr = null;
+ } else {
+ options = arguments[2];
+ }
+ if (dscr == null) {
+ c = w = true;
+ e = false;
+ } else {
+ c = contains.call(dscr, 'c');
+ e = contains.call(dscr, 'e');
+ w = contains.call(dscr, 'w');
+ }
+
+ desc = { value: value, configurable: c, enumerable: e, writable: w };
+ return !options ? desc : assign(normalizeOpts(options), desc);
+};
+
+d.gs = function (dscr, get, set/*, options*/) {
+ var c, e, options, desc;
+ if (typeof dscr !== 'string') {
+ options = set;
+ set = get;
+ get = dscr;
+ dscr = null;
+ } else {
+ options = arguments[3];
+ }
+ if (get == null) {
+ get = undefined;
+ } else if (!isCallable(get)) {
+ options = get;
+ get = set = undefined;
+ } else if (set == null) {
+ set = undefined;
+ } else if (!isCallable(set)) {
+ options = set;
+ set = undefined;
+ }
+ if (dscr == null) {
+ c = true;
+ e = false;
+ } else {
+ c = contains.call(dscr, 'c');
+ e = contains.call(dscr, 'e');
+ }
+
+ desc = { get: get, set: set, configurable: c, enumerable: e };
+ return !options ? desc : assign(normalizeOpts(options), desc);
+};
diff --git a/kbase-extension/static/ext_packages/igv/d/lazy.js b/kbase-extension/static/ext_packages/igv/d/lazy.js
new file mode 100644
index 0000000000..d75b34b779
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/d/lazy.js
@@ -0,0 +1,117 @@
+'use strict';
+
+var map = require('es5-ext/object/map')
+ , isCallable = require('es5-ext/object/is-callable')
+ , validValue = require('es5-ext/object/valid-value')
+ , contains = require('es5-ext/string/#/contains')
+
+ , call = Function.prototype.call
+ , defineProperty = Object.defineProperty
+ , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
+ , getPrototypeOf = Object.getPrototypeOf
+ , hasOwnProperty = Object.prototype.hasOwnProperty
+ , cacheDesc = { configurable: false, enumerable: false, writable: false,
+ value: null }
+ , define;
+
+define = function (name, options) {
+ var value, dgs, cacheName, desc, writable = false, resolvable
+ , flat;
+ options = Object(validValue(options));
+ cacheName = options.cacheName;
+ flat = options.flat;
+ if (cacheName == null) cacheName = name;
+ delete options.cacheName;
+ value = options.value;
+ resolvable = isCallable(value);
+ delete options.value;
+ dgs = { configurable: Boolean(options.configurable),
+ enumerable: Boolean(options.enumerable) };
+ if (name !== cacheName) {
+ dgs.get = function () {
+ if (hasOwnProperty.call(this, cacheName)) return this[cacheName];
+ cacheDesc.value = resolvable ? call.call(value, this, options) : value;
+ cacheDesc.writable = writable;
+ defineProperty(this, cacheName, cacheDesc);
+ cacheDesc.value = null;
+ if (desc) defineProperty(this, name, desc);
+ return this[cacheName];
+ };
+ } else if (!flat) {
+ dgs.get = function self() {
+ var ownDesc;
+ if (hasOwnProperty.call(this, name)) {
+ ownDesc = getOwnPropertyDescriptor(this, name);
+ // It happens in Safari, that getter is still called after property
+ // was defined with a value, following workarounds that
+ // While in IE11 it may happen that here ownDesc is undefined (go figure)
+ if (ownDesc) {
+ if (ownDesc.hasOwnProperty('value')) return ownDesc.value;
+ if ((typeof ownDesc.get === 'function') && (ownDesc.get !== self)) {
+ return ownDesc.get.call(this);
+ }
+ return value;
+ }
+ }
+ desc.value = resolvable ? call.call(value, this, options) : value;
+ defineProperty(this, name, desc);
+ desc.value = null;
+ return this[name];
+ };
+ } else {
+ dgs.get = function self() {
+ var base = this, ownDesc;
+ if (hasOwnProperty.call(this, name)) {
+ // It happens in Safari, that getter is still called after property
+ // was defined with a value, following workarounds that
+ ownDesc = getOwnPropertyDescriptor(this, name);
+ if (ownDesc.hasOwnProperty('value')) return ownDesc.value;
+ if ((typeof ownDesc.get === 'function') && (ownDesc.get !== self)) {
+ return ownDesc.get.call(this);
+ }
+ }
+ while (!hasOwnProperty.call(base, name)) base = getPrototypeOf(base);
+ desc.value = resolvable ? call.call(value, base, options) : value;
+ defineProperty(base, name, desc);
+ desc.value = null;
+ return base[name];
+ };
+ }
+ dgs.set = function (value) {
+ if (hasOwnProperty.call(this, name)) {
+ throw new TypeError("Cannot assign to lazy defined '" + name + "' property of " + this);
+ }
+ dgs.get.call(this);
+ this[cacheName] = value;
+ };
+ if (options.desc) {
+ desc = {
+ configurable: contains.call(options.desc, 'c'),
+ enumerable: contains.call(options.desc, 'e')
+ };
+ if (cacheName === name) {
+ desc.writable = contains.call(options.desc, 'w');
+ desc.value = null;
+ } else {
+ writable = contains.call(options.desc, 'w');
+ desc.get = dgs.get;
+ desc.set = dgs.set;
+ }
+ delete options.desc;
+ } else if (cacheName === name) {
+ desc = {
+ configurable: Boolean(options.configurable),
+ enumerable: Boolean(options.enumerable),
+ writable: Boolean(options.writable),
+ value: null
+ };
+ }
+ delete options.configurable;
+ delete options.enumerable;
+ delete options.writable;
+ return dgs;
+};
+
+module.exports = function (props) {
+ return map(props, function (desc, name) { return define(name, desc); });
+};
diff --git a/kbase-extension/static/ext_packages/igv/d/package.json b/kbase-extension/static/ext_packages/igv/d/package.json
new file mode 100644
index 0000000000..fdfaa2d7bf
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/d/package.json
@@ -0,0 +1,73 @@
+{
+ "_args": [
+ [
+ "d@1.0.0",
+ "/Users/jim/DMZ/narrative-mar-2018/kbase-extension/static/ext_components"
+ ]
+ ],
+ "_from": "d@1.0.0",
+ "_id": "d@1.0.0",
+ "_inBundle": false,
+ "_integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
+ "_location": "/d",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "version",
+ "registry": true,
+ "raw": "d@1.0.0",
+ "name": "d",
+ "escapedName": "d",
+ "rawSpec": "1.0.0",
+ "saveSpec": null,
+ "fetchSpec": "1.0.0"
+ },
+ "_requiredBy": [
+ "/es6-iterator",
+ "/es6-set",
+ "/es6-symbol",
+ "/event-emitter"
+ ],
+ "_resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
+ "_spec": "1.0.0",
+ "_where": "/Users/jim/DMZ/narrative-mar-2018/kbase-extension/static/ext_components",
+ "author": {
+ "name": "Mariusz Nowak",
+ "email": "medyk@medikoo.com",
+ "url": "http://www.medikoo.com/"
+ },
+ "bugs": {
+ "url": "https://github.com/medikoo/d/issues"
+ },
+ "dependencies": {
+ "es5-ext": "^0.10.9"
+ },
+ "description": "Property descriptor factory",
+ "devDependencies": {
+ "tad": "^0.2.4",
+ "xlint": "^0.2.2",
+ "xlint-jslint-medikoo": "^0.1.4"
+ },
+ "homepage": "https://github.com/medikoo/d#readme",
+ "keywords": [
+ "descriptor",
+ "es",
+ "ecmascript",
+ "ecma",
+ "property",
+ "descriptors",
+ "meta",
+ "properties"
+ ],
+ "license": "MIT",
+ "name": "d",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/medikoo/d.git"
+ },
+ "scripts": {
+ "lint": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream",
+ "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
+ "test": "node node_modules/tad/bin/tad"
+ },
+ "version": "1.0.0"
+}
diff --git a/kbase-extension/static/ext_packages/igv/d/test/auto-bind.js b/kbase-extension/static/ext_packages/igv/d/test/auto-bind.js
new file mode 100644
index 0000000000..89edfb88bb
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/d/test/auto-bind.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var d = require('../');
+
+module.exports = function (t, a) {
+ var o = Object.defineProperties({}, t({
+ bar: d(function () { return this === o; }),
+ bar2: d(function () { return this; })
+ }));
+
+ a.deep([(o.bar)(), (o.bar2)()], [true, o]);
+};
diff --git a/kbase-extension/static/ext_packages/igv/d/test/index.js b/kbase-extension/static/ext_packages/igv/d/test/index.js
new file mode 100644
index 0000000000..3db0af10ac
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/d/test/index.js
@@ -0,0 +1,182 @@
+'use strict';
+
+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+
+module.exports = function (t, a) {
+ var o, c, cg, cs, ce, ceg, ces, cew, cw, e, eg, es, ew, v, vg, vs, w, df, dfg
+ , dfs;
+
+ o = Object.create(Object.prototype, {
+ c: t('c', c = {}),
+ cgs: t.gs('c', cg = function () {}, cs = function () {}),
+ ce: t('ce', ce = {}),
+ cegs: t.gs('ce', ceg = function () {}, ces = function () {}),
+ cew: t('cew', cew = {}),
+ cw: t('cw', cw = {}),
+ e: t('e', e = {}),
+ egs: t.gs('e', eg = function () {}, es = function () {}),
+ ew: t('ew', ew = {}),
+ v: t('', v = {}),
+ vgs: t.gs('', vg = function () {}, vs = function () {}),
+ w: t('w', w = {}),
+
+ df: t(df = {}),
+ dfgs: t.gs(dfg = function () {}, dfs = function () {})
+ });
+
+ return {
+ c: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'c');
+ a(d.value, c, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, true, "Configurable");
+ a(d.enumerable, false, "Enumerable");
+ a(d.writable, false, "Writable");
+
+ d = getOwnPropertyDescriptor(o, 'cgs');
+ a(d.value, undefined, "GS Value");
+ a(d.get, cg, "GS Get");
+ a(d.set, cs, "GS Set");
+ a(d.configurable, true, "GS Configurable");
+ a(d.enumerable, false, "GS Enumerable");
+ a(d.writable, undefined, "GS Writable");
+ },
+ ce: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'ce');
+ a(d.value, ce, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, true, "Configurable");
+ a(d.enumerable, true, "Enumerable");
+ a(d.writable, false, "Writable");
+
+ d = getOwnPropertyDescriptor(o, 'cegs');
+ a(d.value, undefined, "GS Value");
+ a(d.get, ceg, "GS Get");
+ a(d.set, ces, "GS Set");
+ a(d.configurable, true, "GS Configurable");
+ a(d.enumerable, true, "GS Enumerable");
+ a(d.writable, undefined, "GS Writable");
+ },
+ cew: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'cew');
+ a(d.value, cew, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, true, "Configurable");
+ a(d.enumerable, true, "Enumerable");
+ a(d.writable, true, "Writable");
+ },
+ cw: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'cw');
+ a(d.value, cw, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, true, "Configurable");
+ a(d.enumerable, false, "Enumerable");
+ a(d.writable, true, "Writable");
+ },
+ e: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'e');
+ a(d.value, e, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, false, "Configurable");
+ a(d.enumerable, true, "Enumerable");
+ a(d.writable, false, "Writable");
+
+ d = getOwnPropertyDescriptor(o, 'egs');
+ a(d.value, undefined, "GS Value");
+ a(d.get, eg, "GS Get");
+ a(d.set, es, "GS Set");
+ a(d.configurable, false, "GS Configurable");
+ a(d.enumerable, true, "GS Enumerable");
+ a(d.writable, undefined, "GS Writable");
+ },
+ ew: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'ew');
+ a(d.value, ew, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, false, "Configurable");
+ a(d.enumerable, true, "Enumerable");
+ a(d.writable, true, "Writable");
+ },
+ v: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'v');
+ a(d.value, v, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, false, "Configurable");
+ a(d.enumerable, false, "Enumerable");
+ a(d.writable, false, "Writable");
+
+ d = getOwnPropertyDescriptor(o, 'vgs');
+ a(d.value, undefined, "GS Value");
+ a(d.get, vg, "GS Get");
+ a(d.set, vs, "GS Set");
+ a(d.configurable, false, "GS Configurable");
+ a(d.enumerable, false, "GS Enumerable");
+ a(d.writable, undefined, "GS Writable");
+ },
+ w: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'w');
+ a(d.value, w, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, false, "Configurable");
+ a(d.enumerable, false, "Enumerable");
+ a(d.writable, true, "Writable");
+ },
+ d: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'df');
+ a(d.value, df, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, true, "Configurable");
+ a(d.enumerable, false, "Enumerable");
+ a(d.writable, true, "Writable");
+
+ d = getOwnPropertyDescriptor(o, 'dfgs');
+ a(d.value, undefined, "GS Value");
+ a(d.get, dfg, "GS Get");
+ a(d.set, dfs, "GS Set");
+ a(d.configurable, true, "GS Configurable");
+ a(d.enumerable, false, "GS Enumerable");
+ a(d.writable, undefined, "GS Writable");
+ },
+ Options: {
+ v: function (a) {
+ var x = {}, d = t(x, { foo: true });
+ a.deep(d, { configurable: true, enumerable: false, writable: true,
+ value: x, foo: true }, "No descriptor");
+ d = t('c', 'foo', { marko: 'elo' });
+ a.deep(d, { configurable: true, enumerable: false, writable: false,
+ value: 'foo', marko: 'elo' }, "Descriptor");
+ },
+ gs: function (a) {
+ var gFn = function () {}, sFn = function () {}, d;
+ d = t.gs(gFn, sFn, { foo: true });
+ a.deep(d, { configurable: true, enumerable: false, get: gFn, set: sFn,
+ foo: true }, "No descriptor");
+ d = t.gs(null, sFn, { foo: true });
+ a.deep(d, { configurable: true, enumerable: false, get: undefined,
+ set: sFn, foo: true }, "No descriptor: Just set");
+ d = t.gs(gFn, { foo: true });
+ a.deep(d, { configurable: true, enumerable: false, get: gFn,
+ set: undefined, foo: true }, "No descriptor: Just get");
+
+ d = t.gs('e', gFn, sFn, { bar: true });
+ a.deep(d, { configurable: false, enumerable: true, get: gFn, set: sFn,
+ bar: true }, "Descriptor");
+ d = t.gs('e', null, sFn, { bar: true });
+ a.deep(d, { configurable: false, enumerable: true, get: undefined,
+ set: sFn, bar: true }, "Descriptor: Just set");
+ d = t.gs('e', gFn, { bar: true });
+ a.deep(d, { configurable: false, enumerable: true, get: gFn,
+ set: undefined, bar: true }, "Descriptor: Just get");
+ }
+ }
+ };
+};
diff --git a/kbase-extension/static/ext_packages/igv/d/test/lazy.js b/kbase-extension/static/ext_packages/igv/d/test/lazy.js
new file mode 100644
index 0000000000..e4023faf30
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/d/test/lazy.js
@@ -0,0 +1,82 @@
+'use strict';
+
+var d = require('../')
+
+ , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+
+module.exports = function (t, a) {
+ var Foo = function () {}, i = 1, o, o2, desc;
+ Object.defineProperties(Foo.prototype, t({
+ bar: d(function () { return ++i; }),
+ bar2: d(function () { return this.bar + 23; }),
+ bar3: d(function () { return this.bar2 + 34; }, { desc: 'ew' }),
+ bar4: d(function () { return this.bar3 + 12; }, { cacheName: '_bar4_' }),
+ bar5: d(function () { return this.bar4 + 3; },
+ { cacheName: '_bar5_', desc: 'e' })
+ }));
+
+ desc = getOwnPropertyDescriptor(Foo.prototype, 'bar');
+ a(desc.configurable, true, "Configurable: default");
+ a(desc.enumerable, false, "Enumerable: default");
+
+ o = new Foo();
+ a.deep([o.bar, o.bar2, o.bar3, o.bar4, o.bar5], [2, 25, 59, 71, 74],
+ "Values");
+
+ a.deep(getOwnPropertyDescriptor(o, 'bar3'), { configurable: false,
+ enumerable: true, writable: true, value: 59 }, "Desc");
+ a(o.hasOwnProperty('bar4'), false, "Cache not exposed");
+ desc = getOwnPropertyDescriptor(o, 'bar5');
+ a.deep(desc, { configurable: false,
+ enumerable: true, get: desc.get, set: desc.set }, "Cache & Desc: desc");
+
+ o2 = Object.create(o);
+ o2.bar = 30;
+ o2.bar3 = 100;
+
+ a.deep([o2.bar, o2.bar2, o2.bar3, o2.bar4, o2.bar5], [30, 25, 100, 112, 115],
+ "Extension Values");
+
+ Foo = function () {};
+ Object.defineProperties(Foo.prototype, t({
+ test: d('w', function () { return 'raz'; }),
+ test2: d('', function () { return 'raz'; }, { desc: 'w' }),
+ test3: d('', function () { return 'raz'; },
+ { cacheName: '__test3__', desc: 'w' }),
+ test4: d('w', 'bar')
+ }));
+
+ o = new Foo();
+ o.test = 'marko';
+ a.deep(getOwnPropertyDescriptor(o, 'test'),
+ { configurable: false, enumerable: false, writable: true, value: 'marko' },
+ "Set before get");
+ o.test2 = 'marko2';
+ a.deep(getOwnPropertyDescriptor(o, 'test2'),
+ { configurable: false, enumerable: false, writable: true, value: 'marko2' },
+ "Set before get: Custom desc");
+ o.test3 = 'marko3';
+ a.deep(getOwnPropertyDescriptor(o, '__test3__'),
+ { configurable: false, enumerable: false, writable: true, value: 'marko3' },
+ "Set before get: Custom cache name");
+ a(o.test4, 'bar', "Resolve by value");
+
+ a.h1("Flat");
+ Object.defineProperties(Foo.prototype, t({
+ flat: d(function () { return 'foo'; }, { flat: true }),
+ flat2: d(function () { return 'bar'; }, { flat: true })
+ }));
+
+ a.h2("Instance");
+ a(o.flat, 'foo', "Value");
+ a(o.hasOwnProperty('flat'), false, "Instance");
+ a(Foo.prototype.flat, 'foo', "Prototype");
+
+ a.h2("Direct");
+ a(Foo.prototype.flat2, 'bar');
+
+ a.h2("Reset direct");
+ Object.defineProperties(Foo.prototype, t({ testResetDirect: d(false) }));
+
+ a.throws(function () { Foo.prototype.testResetDirect = false; }, TypeError);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/.editorconfig b/kbase-extension/static/ext_packages/igv/es5-ext/.editorconfig
new file mode 100644
index 0000000000..c24a6cd1f4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/.editorconfig
@@ -0,0 +1,14 @@
+# EditorConfig is awesome: http://EditorConfig.org
+
+# top-most EditorConfig file
+root = true
+
+# Unix-style newlines with a newline ending every file
+[*]
+end_of_line = lf
+insert_final_newline = true
+indent_style = tab
+
+[{*.json,*.yml}]
+indent_style = space
+indent_size = 2
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/CHANGELOG.md b/kbase-extension/static/ext_packages/igv/es5-ext/CHANGELOG.md
new file mode 100644
index 0000000000..c47fffeca3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/CHANGELOG.md
@@ -0,0 +1,299 @@
+# Change Log
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+
+## [0.10.42](https://github.com/medikoo/es5-ext/compare/v0.10.41...v0.10.42) (2018-03-28)
+
+
+### Bug Fixes
+
+* Date.isDate to exclude NaN dates ([3b61bc6](https://github.com/medikoo/es5-ext/commit/3b61bc6))
+
+
+### Features
+
+* improve non-coercible string representation ([20bfb78](https://github.com/medikoo/es5-ext/commit/20bfb78))
+* improve non-stringifiable string representation ([2e4512d](https://github.com/medikoo/es5-ext/commit/2e4512d))
+
+
+
+
+## [0.10.41](https://github.com/medikoo/es5-ext/compare/v0.10.40...v0.10.41) (2018-03-16)
+
+
+### Features
+
+* Add function.microtaskDelay method ([66481c0](https://github.com/medikoo/es5-ext/commit/66481c0))
+* Add Object.isThenable ([8d5a45c](https://github.com/medikoo/es5-ext/commit/8d5a45c))
+* Add promise.asCallback method ([dcc1451](https://github.com/medikoo/es5-ext/commit/dcc1451))
+* Object.ensurePlainFunction ([2682be6](https://github.com/medikoo/es5-ext/commit/2682be6))
+
+
+
+
+## [0.10.40](https://github.com/medikoo/es5-ext/compare/v0.10.39...v0.10.40) (2018-03-09)
+
+
+### Features
+
+* **math:** decimal round, floor and ceil ([39290c6](https://github.com/medikoo/es5-ext/commit/39290c6))
+* **object:** isInteger and ensureInteger ([a5f7d04](https://github.com/medikoo/es5-ext/commit/a5f7d04))
+
+
+
+
+## [0.10.39](https://github.com/medikoo/es5-ext/compare/v0.10.38...v0.10.39) (2018-02-16)
+
+
+### Features
+
+* Promise.lazy ([7a30a78](https://github.com/medikoo/es5-ext/commit/7a30a78))
+
+
+
+
+## [0.10.38](https://github.com/medikoo/es5-ext/compare/v0.10.37...v0.10.38) (2018-01-16)
+
+
+### Features
+
+* Object.isNaturalNumber an Object.isNaturalNumberValue ([66a40af](https://github.com/medikoo/es5-ext/commit/66a40af))
+
+
+
+
+## [0.10.37](https://github.com/medikoo/es5-ext/compare/v0.10.36...v0.10.37) (2017-11-23)
+
+
+### Features
+
+* String.random util ([7c28739](https://github.com/medikoo/es5-ext/commit/7c28739))
+
+
+
+
+## [0.10.36](https://github.com/medikoo/es5-ext/compare/v0.10.35...v0.10.36) (2017-11-23)
+
+
+### Features
+
+* **date:** isTimeValue and ensureTimeValue utils ([7659dc5](https://github.com/medikoo/es5-ext/commit/7659dc5))
+
+
+
+
+## [0.10.35](https://github.com/medikoo/es5-ext/compare/v0.10.34...v0.10.35) (2017-10-13)
+
+
+### Bug Fixes
+
+* **Object.copy:** do not upgrade primitives to objects ([dd4d88f](https://github.com/medikoo/es5-ext/commit/dd4d88f))
+
+
+
+
+## [0.10.34](https://github.com/medikoo/es5-ext/compare/v0.10.33...v0.10.34) (2017-10-13)
+
+
+### Features
+
+* **copyDeep:** duplicate only recursive instances ([bba529a](https://github.com/medikoo/es5-ext/commit/bba529a))
+
+
+
+
+## [0.10.33](https://github.com/medikoo/es5-ext/compare/v0.10.32...v0.10.33) (2017-10-13)
+
+
+### Bug Fixes
+
+* **Object.assignDeep:** relax input validation ([1baf57d](https://github.com/medikoo/es5-ext/commit/1baf57d))
+
+
+
+
+## [0.10.32](https://github.com/medikoo/es5-ext/compare/v0.10.31...v0.10.32) (2017-10-13)
+
+
+### Features
+
+* Object.assignDeep ([2345e0b](https://github.com/medikoo/es5-ext/commit/2345e0b))
+
+
+
+
+## [0.10.31](https://github.com/medikoo/es5-ext/compare/v0.10.30...v0.10.31) (2017-10-09)
+
+
+### Features
+
+* Object.isPlainFunction utility ([031be0a](https://github.com/medikoo/es5-ext/commit/031be0a))
+
+
+
+
+## [0.10.30](https://github.com/medikoo/es5-ext/compare/v0.10.29...v0.10.30) (2017-08-25)
+
+
+### Bug Fixes
+
+* value stringification for error message ([37bb96b](https://github.com/medikoo/es5-ext/commit/37bb96b))
+
+
+
+
+## [0.10.29](https://github.com/medikoo/es5-ext/compare/v0.10.28...v0.10.29) (2017-08-18)
+
+
+### Bug Fixes
+
+* string.repeat after recent regression ([b02fab4](https://github.com/medikoo/es5-ext/commit/b02fab4))
+
+
+
+
+## [0.10.28](https://github.com/medikoo/es5-ext/compare/v0.10.27...v0.10.28) (2017-08-18)
+
+
+### Features
+
+* array.isEmpty method ([b0cfbdd](https://github.com/medikoo/es5-ext/commit/b0cfbdd))
+* improve new lines representation ([860fe8b](https://github.com/medikoo/es5-ext/commit/860fe8b))
+* Object.ensureArray util ([595c341](https://github.com/medikoo/es5-ext/commit/595c341))
+* toShortStringRepresentation util ([6842d06](https://github.com/medikoo/es5-ext/commit/6842d06))
+
+
+
+
+## [0.10.27](https://github.com/medikoo/es5-ext/compare/v0.10.26...v0.10.27) (2017-08-11)
+
+
+### Bug Fixes
+
+* isNumberValue should not crash on non-coercible values ([0db765e](https://github.com/medikoo/es5-ext/commit/0db765e))
+
+
+### Features
+
+* add Object.ensureFiniteNumber util ([11c67f5](https://github.com/medikoo/es5-ext/commit/11c67f5))
+* add Object.isFiniteNumber util ([fe5b55a](https://github.com/medikoo/es5-ext/commit/fe5b55a))
+
+
+
+
+## [0.10.26](https://github.com/medikoo/es5-ext/compare/v0.10.25...v0.10.26) (2017-08-02)
+
+
+### Bug Fixes
+
+* **general:** ensure optionalChaining in index ([3df879a](https://github.com/medikoo/es5-ext/commit/3df879a))
+
+
+
+
+## [0.10.25](https://github.com/medikoo/es5-ext/compare/v0.10.24...v0.10.25) (2017-08-02)
+
+
+### Features
+
+* **general:** optionalChaining utility ([26332b5](https://github.com/medikoo/es5-ext/commit/26332b5))
+
+
+
+
+## [0.10.24](https://github.com/medikoo/es5-ext/compare/v0.10.23...v0.10.24) (2017-07-10)
+
+
+### Features
+
+* resolve global with CSP safe method ([d386449](https://github.com/medikoo/es5-ext/commit/d386449))
+
+
+
+
+## [0.10.23](https://github.com/medikoo/es5-ext/compare/v0.10.22...v0.10.23) (2017-06-05)
+
+
+### Bug Fixes
+
+* **Error.custom:** allow non-string code ([e8db3a0](https://github.com/medikoo/es5-ext/commit/e8db3a0))
+* **Error.custom:** improve `ext` argument detection ([0edbfbc](https://github.com/medikoo/es5-ext/commit/0edbfbc))
+
+
+
+
+## [0.10.22](https://github.com/medikoo/es5-ext/compare/v0.10.21...v0.10.22) (2017-05-31)
+
+
+### Bug Fixes
+
+* ensure proper symbols stringification in early implementations ([ce51900](https://github.com/medikoo/es5-ext/commit/ce51900))
+
+
+
+
+## [0.10.21](https://github.com/medikoo/es5-ext/compare/v0.10.20...v0.10.21) (2017-05-22)
+
+
+### Features
+
+* support arrow functions in Function/#/to-tring-tokens.js ([ad3de1e](https://github.com/medikoo/es5-ext/commit/ad3de1e))
+
+
+
+
+## [0.10.20](https://github.com/medikoo/es5-ext/compare/v0.10.19...v0.10.20) (2017-05-17)
+
+
+### Features
+
+* if listed copy not only if own property ([d7e7cef](https://github.com/medikoo/es5-ext/commit/d7e7cef))
+* support `ensure` option in Object.copy ([295326f](https://github.com/medikoo/es5-ext/commit/295326f))
+
+
+
+
+## [0.10.19](https://github.com/medikoo/es5-ext/compare/v0.10.18...v0.10.19) (2017-05-17)
+
+
+### Features
+
+* support propertyNames option in Object.copy ([5442279](https://github.com/medikoo/es5-ext/commit/5442279))
+
+
+
+
+## [0.10.18](https://github.com/medikoo/es5-ext/compare/v0.10.17...v0.10.18) (2017-05-15)
+
+
+### Bug Fixes
+
+* take all changes in safeToString ([3c5cd12](https://github.com/medikoo/es5-ext/commit/3c5cd12))
+
+
+
+
+## [0.10.17](https://github.com/medikoo/es5-ext/compare/v0.10.16...v0.10.17) (2017-05-15)
+
+
+### Features
+
+* introduce Object.ensurePromise ([46a2f45](https://github.com/medikoo/es5-ext/commit/46a2f45))
+* introduce Object.isPromise ([27aecc8](https://github.com/medikoo/es5-ext/commit/27aecc8))
+* introduce safeToString ([0cc6a7b](https://github.com/medikoo/es5-ext/commit/0cc6a7b))
+
+
+
+
+## [0.10.16](https://github.com/medikoo/es5-ext/compare/v0.10.15...v0.10.16) (2017-05-09)
+
+
+### Features
+
+* add String.prototype.count ([2e53241](https://github.com/medikoo/es5-ext/commit/2e53241))
+
+
+## Changelog for previous versions
+
+See `CHANGES` file
\ No newline at end of file
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/CHANGES b/kbase-extension/static/ext_packages/igv/es5-ext/CHANGES
new file mode 100644
index 0000000000..bb84baba3d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/CHANGES
@@ -0,0 +1,650 @@
+For recent changelog see CHANGELOG.md
+
+-----
+
+v0.10.15 -- 2017.03.20
+* Fix Object.isValue (it was actually isNotValue)
+
+v0.10.14 -- 2017.03.15
+* Object.isValue util
+
+v0.10.13 -- 2017.03.13
+* Introduce JSON.safeStringify
+* Improve message handling in error/custom
+* Fix Array#concat shim
+* Improve Array#flatten algorithm so it's stack trace friendly
+* Make Object.isObject ES3 compatible
+
+v0.10.12 -- 2016.07.01
+* Ensure symbols are copied in Object.mixin
+* Prevent RangeError errors in array#flatten
+* Do not validate invalidate dates in validDate
+
+v0.10.11 -- 2015.12.18
+* Ensure that check for implementation of RegExp flags doesn't crash in V8 (thanks @mathiasbynens)
+
+v0.10.10 -- 2015.12.11
+* Add Object.isNumberValue util
+
+v0.10.9 -- 2015.12.01
+* Add Object.ensureNaturalNumber and Object.ensureNaturalNumberValue
+
+v0.10.8 -- 2015.10.02
+* Add Number.isNatural
+* Add Object.find and Object.findKey
+* Support arrays in Object.copyDeep
+* Fix iteration issue in forEachRight and someRight
+* Fix detection of native sinh
+* Depend on es6-symbol v3
+
+v0.10.7 -- 2015.04.22
+* New utlitities. They're convention differs from v0.10, as they were supposed to land in v1.
+ Still they're non breaking and start the conventions to be used in v1
+ * Object.validateArrayLike
+ * Object.validateArrayLikeObject
+ * Object.validateStringifiable
+ * Object.validateStringifiableValue
+ * Universal utilities for array-like/iterable objects
+ * Iterable.is
+ * Iterable.validate
+ * Iterable.validateObject
+ * Iterable.forEach
+* Fix camelToHyphen resolution, it must be absolutely reversable by hyphenToCamel
+* Fix calculations of large numbers in Math.tanh
+* Fix algorithm of Math.sinh
+* Fix indexes to not use real symbols
+* Fix length of String.fromCodePoint
+* Fix tests of Array#copyWithin
+* Update Travis CI configuration
+
+v0.10.6 -- 2015.02.02
+* Fix handling of infinite values in Math.trunc
+* Fix handling of getters in Object.normalizeOptions
+
+v0.10.5 -- 2015.01.20
+* Add Function#toStringTokens
+* Add Object.serialize and Object.unserialize
+* Add String.randomUniq
+* Fix Strin#camelToHyphen issue with tokens that end with digit
+* Optimise Number.isInteger logic
+* Improve documentation
+* Configure lint scripts
+* Fix spelling of LICENSE
+
+v0.10.4 -- 2014.04.30
+* Assure maximum spec compliance of Array.of and Array.from (thanks @mathiasbynens)
+* Improve documentations
+
+v0.10.3 -- 2014.04.29
+Provide accurate iterators handling:
+* Array.from improvements:
+ * Assure right unicode symbols resolution when processing strings in Array.from
+ * Rely on ES6 symbol shim and use native @@iterator Symbol if provided by environment
+* Add methods:
+ * Array.prototype.entries
+ * Array.prototype.keys
+ * Array.prototype.values
+ * Array.prototype[@@iterator]
+ * String.prototype[@@iterator]
+
+Improve documentation
+
+v0.10.2 -- 2014.04.24
+- Simplify and deprecate `isCallable`. It seems in ES5 based engines there are
+ no callable objects which are `typeof obj !== 'function'`
+- Update Array.from map callback signature (up to latest resolution of TC39)
+- Improve documentation
+
+v0.10.1 -- 2014.04.14
+Bump version for npm
+(Workaround for accidental premature publish & unpublish of v0.10.0 a while ago)
+
+v0.10.0 -- 2014.04.13
+Major update:
+- All methods and function specified for ECMAScript 6 are now introduced as
+ shims accompanied with functions through which (optionally) they can be
+ implementend on native objects
+- Filename convention was changed to shorter and strictly lower case names. e.g.
+ `lib/String/prototype/starts-with` became `string/#/starts-with`
+- Generated functions are guaranteed to have expected length
+- Objects with null prototype (created via `Object.create(null)`) are widely
+ supported (older version have crashed due to implied `obj.hasOwnProperty` and
+ related invocations)
+- Support array subclasses
+- When handling lists do not limit its length to Uint32 range
+- Use newly introduced `Object.eq` for strict equality in place of `Object.is`
+- Iteration of Object have been improved so properties that were hidden or
+ removed after iteration started are not iterated.
+
+Additions:
+- `Array.isPlainArray`
+- `Array.validArray`
+- `Array.prototype.concat` (as updated with ES6)
+- `Array.prototype.copyWithin` (as introduced with ES6)
+- `Array.prototype.fill` (as introduced with ES6)
+- `Array.prototype.filter` (as updated with ES6)
+- `Array.prototype.findIndex` (as introduced with ES6)
+- `Array.prototype.map` (as updated with ES6)
+- `Array.prototype.separate`
+- `Array.prototype.slice` (as updated with ES6)
+- `Array.prototype.splice` (as updated with ES6)
+- `Function.prototype.copy`
+- `Math.acosh` (as introduced with ES6)
+- `Math.atanh` (as introduced with ES6)
+- `Math.cbrt` (as introduced with ES6)
+- `Math.clz32` (as introduced with ES6)
+- `Math.cosh` (as introduced with ES6)
+- `Math.expm1` (as introduced with ES6)
+- `Math.fround` (as introduced with ES6)
+- `Math.hypot` (as introduced with ES6)
+- `Math.imul` (as introduced with ES6)
+- `Math.log2` (as introduced with ES6)
+- `Math.log10` (as introduced with ES6)
+- `Math.log1p` (as introduced with ES6)
+- `Math.sinh` (as introduced with ES6)
+- `Math.tanh` (as introduced with ES6)
+- `Math.trunc` (as introduced with ES6)
+- `Number.EPSILON` (as introduced with ES6)
+- `Number.MIN_SAFE_INTEGER` (as introduced with ES6)
+- `Number.MAX_SAFE_INTEGER` (as introduced with ES6)
+- `Number.isFinite` (as introduced with ES6)
+- `Number.isInteger` (as introduced with ES6)
+- `Number.isSafeInteger` (as introduced with ES6)
+- `Object.create` (with fix for V8 issue which disallows prototype turn of
+ objects derived from null
+- `Object.eq` - Less restrictive version of `Object.is` based on SameValueZero
+ algorithm
+- `Object.firstKey`
+- `Object.keys` (as updated with ES6)
+- `Object.mixinPrototypes`
+- `Object.primitiveSet`
+- `Object.setPrototypeOf` (as introduced with ES6)
+- `Object.validObject`
+- `RegExp.escape`
+- `RegExp.prototype.match` (as introduced with ES6)
+- `RegExp.prototype.replace` (as introduced with ES6)
+- `RegExp.prototype.search` (as introduced with ES6)
+- `RegExp.prototype.split` (as introduced with ES6)
+- `RegExp.prototype.sticky` (as introduced with ES6)
+- `RegExp.prototype.unicode` (as introduced with ES6)
+- `String.fromCodePoint` (as introduced with ES6)
+- `String.raw` (as introduced with ES6)
+- `String.prototype.at`
+- `String.prototype.codePointAt` (as introduced with ES6)
+- `String.prototype.normalize` (as introduced with ES6)
+- `String.prototype.plainReplaceAll`
+
+Removals:
+- `reserved` set
+- `Array.prototype.commonLeft`
+- `Function.insert`
+- `Function.remove`
+- `Function.prototype.silent`
+- `Function.prototype.wrap`
+- `Object.descriptor` Move to external `d` project.
+ See: https://github.com/medikoo/d
+- `Object.diff`
+- `Object.extendDeep`
+- `Object.reduce`
+- `Object.values`
+- `String.prototype.trimCommonLeft`
+
+Renames:
+- `Function.i` into `Function.identity`
+- `Function.k` into `Function.constant`
+- `Number.toInt` into `Number.toInteger`
+- `Number.toUint` into `Number.toPosInteger`
+- `Object.extend` into `Object.assign` (as introduced in ES 6)
+- `Object.extendProperties` into `Object.mixin`, with improved internal
+ handling, so it matches temporarily specified `Object.mixin` for ECMAScript 6
+- `Object.isList` into `Object.isArrayLike`
+- `Object.mapToArray` into `Object.toArray` (with fixed function length)
+- `Object.toPlainObject` into `Object.normalizeOptions` (as this is the real
+ use case where we use this function)
+- `Function.prototype.chain` into `Function.prototype.compose`
+- `Function.prototype.match` into `Function.prototype.spread`
+- `String.prototype.format` into `String.formatMethod`
+
+Improvements & Fixes:
+- Remove workaround for primitive values handling in object iterators
+- `Array.from`: Update so it follows ES 6 spec
+- `Array.prototype.compact`: filters just null and undefined values
+ (not all falsies)
+- `Array.prototype.eIndexOf` and `Array.prototype.eLastIndexOf`: fix position
+ handling, improve internals
+- `Array.prototype.find`: return undefined not null, in case of not found
+ (follow ES 6)
+- `Array.prototype.remove` fix function length
+- `Error.custom`: simplify, Custom class case is addressed by outer
+ `error-create` project -> https://github.com/medikoo/error-create
+- `Error.isError` true only for Error instances (remove detection of host
+ Exception objects)
+- `Number.prototype.pad`: Normalize negative pad
+- `Object.clear`: Handle errors same way as in `Object.assign`
+- `Object.compact`: filters just null and undefined values (not all falsies)
+- `Object.compare`: Take into account NaN values
+- `Object.copy`: Split into `Object.copy` and `Object.copyDeep`
+- `Object.isCopy`: Separate into `Object.isCopy` and `Object.isCopyDeep`, where
+ `isCopyDeep` handles nested plain objects and plain arrays only
+- `String.prototype.endsWith`: Adjust up to ES6 specification
+- `String.prototype.repeat`: Adjust up to ES6 specification and improve algorithm
+- `String.prototype.simpleReplace`: Rename into `String.prototype.plainReplace`
+- `String.prototype.startsWith`: Adjust up to ES6 specification
+- Update lint rules, and adjust code to that
+- Update Travis CI configuration
+- Remove Makefile (it's cross-env utility)
+
+v0.9.2 -- 2013.03.11
+Added:
+* Array.prototype.isCopy
+* Array.prototype.isUniq
+* Error.CustomError
+* Function.validFunction
+* Object.extendDeep
+* Object.descriptor.binder
+* Object.safeTraverse
+* RegExp.validRegExp
+* String.prototype.capitalize
+* String.prototype.simpleReplace
+
+Fixed:
+* Fix Array.prototype.diff for sparse arrays
+* Accept primitive objects as input values in Object iteration methods and
+ Object.clear, Object.count, Object.diff, Object.extend,
+ Object.getPropertyNames, Object.values
+* Pass expected arguments to callbacks of Object.filter, Object.mapKeys,
+ Object.mapToArray, Object.map
+* Improve callable callback support in Object.mapToArray
+
+v0.9.1 -- 2012.09.17
+* Object.reduce - reduce for hash-like collections
+* Accapt any callable object as callback in Object.filter, mapKeys and map
+* Convention cleanup
+
+v0.9.0 -- 2012.09.13
+We're getting to real solid API
+
+Removed:
+* Function#memoize - it's grown up to be external package, to be soon published
+ as 'memoizee'
+* String.guid - it doesn't fit es5-ext (extensions) concept, will be provided as
+ external package
+# Function.arguments - obsolete
+# Function.context - obsolete
+# Function#flip - not readable when used, so it was never used
+# Object.clone - obsolete and confusing
+
+Added:
+* String#camelToHyphen - String format convertion
+
+Renamed:
+* String#dashToCamelCase -> String#hyphenToCamel
+
+Fixes:
+* Object.isObject - Quote names in literals that match reserved keywords
+ (older implementations crashed on that)
+* String#repeat - Do not accept negative values (coerce them to 1)
+
+Improvements:
+* Array#remove - Accepts many arguments, we can now remove many values at once
+* Object iterators (forEach, map, some) - Compare function invoked with scope
+ object bound to this
+* Function#curry - Algorithm cleanup
+* Object.isCopy - Support for all types, not just plain objects
+* Object.isPlainObject - Support for cross-frame objects
+* Do not memoize any of the functions, it shouldn't be decided internally
+* Remove Object.freeze calls in reserved, it's not up to convention
+* Improved documentation
+* Better linting (hard-core approach using both JSLint mod and JSHint)
+* Optional arguments are now documented in funtions signature
+
+v0.8.2 -- 2012.06.22
+Fix errors in Array's intersection and exclusion methods, related to improper
+usage of contains method
+
+v0.8.1 -- 2012.06.13
+Reorganized internal logic of Function.prototype.memoize. So it's more safe now
+and clears cache properly. Additionally preventCache option was provided.
+
+v0.8.0 -- 2012.05.28
+Again, major overhaul. Probably last experimental stuff was trashed, all API
+looks more like standard extensions now.
+
+Changes:
+* Turn all Object.prototype extensions into functions and move them to Object
+namespace. We learned that extending Object.prototype is bad idea in any case.
+* Rename Function.prototype.curry into Function.prototype.partial. This function
+ is really doing partial application while currying is slightly different
+ concept.
+* Convert Function.prototype.ncurry to new implementation of
+ Function.prototype.curry, it now serves real curry concept additionaly it
+ covers use cases for aritize and hold, which were removed.
+* Rename Array's peek to last, and provide support for sparse arrays in it
+* Rename Date's monthDaysCount into daysInMonth
+* Simplify object iterators, now order of iteration can be configured with just
+ compareFn argument (no extra byKeys option)
+* Rename Object.isDuplicate to Object.isCopy
+* Rename Object.isEqual to Object.is which is compatible with future 'is'
+ keyword
+* Function.memoize is now Function.prototype.memoize. Additionally clear cache
+ functionality is added, and access to original arguments object.
+* Rename validation functions: assertNotNull to validValue, assertCallable to
+ validCallable. validValue was moved to Object namespace. On success they now
+ return validated value instead of true, it supports better composition.
+ Additionally created Date.validDate and Error.validError
+* All documentation is now held in README.md not in code files.
+* Move guid to String namespace. All guids now start with numbers.
+* Array.generate: fill argument is now optional
+* Object.toArray is now Array.from (as new ES6 specification draft suggests)
+* All methods that rely on indexOf or lastIndexOf, now rely on egal (Object.is)
+ versions of them (eIndexOf, eLastIndexOf)
+* Turn all get* functions that returned methods into actuall methods (get*
+ functionality can still be achieved with help of Function.prototype.partial).
+ So: Date.getFormat is now Date.prototype.format,
+ Number.getPad is now Number.prototype.pad,
+ String.getFormat is now String.prototype.format,
+ String.getIndent is now String.prototype.indent,
+ String.getPad is now String.prototype.pad
+* Refactored Object.descriptor, it is now just two functions, main one and
+ main.gs, main is for describing values, and gs for describing getters and
+ setters. Configuration is passed with first argument as string e.g. 'ce' for
+ configurable and enumerable. If no configuration string is provided then by
+ default it returns configurable and writable but not enumerable for value or
+ configurable but not enumerable for getter/setter
+* Function.prototype.silent now returns prepared function (it was
+ expected to be fixed for 0.7)
+* Reserved keywords map (reserved) is now array not hash.
+* Object.merge is now Object.extend (while former Object.extend was completely
+ removed) - 'extend' implies that we change object, not creating new one (as
+ 'merge' may imply). Similarily Object.mergeProperties was renamed to
+ Object.extendProperties
+* Position argument support in Array.prototype.contains and
+ String.prototype.contains (so it follows ES6 specification draft)
+* endPosition argument support in String.prototype.endsWith and fromPosition
+ argument support in String.prototype.startsWith (so it follows ES6
+ specification draft)
+* Better and cleaner String.prototype.indent implementation. No default value
+ for indent string argument, optional nest value (defaults to 1), remove
+ nostart argument
+* Correct length values for most methods (so they reflect length of similar
+ methods in standard)
+* Length argument is now optional in number and string pad methods.
+* Improve arguments validation in general, so it adheres to standard conventions
+* Fixed format of package.json
+
+Removed methods and functions:
+* Object.prototype.slice - Object is not ordered collection, so slice doesn't
+ make sense.
+* Function's rcurry, rncurry, s - too cumbersome for JS, not many use cases for
+ that
+* Function.prototype.aritize and Function.prototype.hold - same functionality
+ can be achieved with new Function.prototype.curry
+* Function.prototype.log - provided more generic Function.prototype.wrap for
+ same use case
+* getNextIdGenerator - no use case for that (String.guid should be used if
+ needed)
+* Object.toObject - Can be now acheived with Object(validValue(x))
+* Array.prototype.someValue - no real use case (personally used once and
+ case was already controversial)
+* Date.prototype.duration - moved to external package
+* Number.getAutoincrement - No real use case
+* Object.prototype.extend, Object.prototype.override,
+ Object.prototype.plainCreate, Object.prototype.plainExtend - It was probably
+ too complex, same should be achieved just with Object.create,
+ Object.descriptor and by saving references to super methods in local scope.
+* Object.getCompareBy - Functions should be created individually for each use
+ case
+* Object.get, Object.getSet, Object.set, Object.unset - Not many use cases and
+ same can be easily achieved with simple inline function
+* String.getPrefixWith - Not real use case for something that can be easily
+ achieved with '+' operator
+* Object.isPrimitive - It's just negation of Object.isObject
+* Number.prototype.isLess, Number.prototype.isLessOrEqual - they shouldn't be in
+ Number namespace and should rather be addressed with simple inline functions.
+* Number.prototype.subtract - Should rather be addressed with simple inline
+ function
+
+New methods and functions:
+* Array.prototype.lastIndex - Returns last declared index in array
+* String.prototype.last - last for strings
+* Function.prototype.wrap - Wrap function with other, it allows to specify
+ before and after behavior transform return value or prevent original function
+ from being called.
+* Math.sign - Returns sign of a number (already in ES6 specification draft)
+* Number.toInt - Converts value to integer (already in ES6 specification draft)
+* Number.isNaN - Returns true if value is NaN (already in ES6 specification
+ draft)
+* Number.toUint - Converts value to unsigned integer
+* Number.toUint32 - Converts value to 32bit unsigned integer
+* Array.prototype.eIndexOf, eLastIndexOf - Egal version (that uses Object.is) of
+ standard methods (all methods that were using native indexOf or lastIndexOf
+ now uses eIndexOf and elastIndexOf respectively)
+* Array.of - as it's specified for ES6
+
+Fixes:
+* Fixed binarySearch so it always returns valid list index
+* Object.isList - it failed on lists that are callable (e.g. NodeList in Nitro
+ engine)
+* Object.map now supports third argument for callback
+
+v0.7.1 -- 2012.01.05
+New methods:
+* Array.prototype.firstIndex - returns first valid index of array (for
+ sparse arrays it may not be '0'
+
+Improvements:
+* Array.prototype.first - now returns value for index returned by firstIndex
+* Object.prototype.mapToArray - can be called without callback, then array of
+ key-value pairs is returned
+
+Fixes
+* Array.prototype.forEachRight, object's length read through UInt32 conversion
+
+v0.7.0 -- 2011.12.27
+Major update.
+Stepped back from experimental ideas and introduced more standard approach
+taking example from how ES5 methods and functions are designed. One exceptions
+is that, we don’t refrain from declaring methods for Object.prototype - it’s up
+to developer whether how he decides to use it in his context (as function or as
+method).
+
+In general:
+* Removed any method 'functionalization' and functionalize method itself.
+ es5-ext declares plain methods, which can be configured to work as functions
+ with call.bind(method) - see documentation.
+* Removed separation of Object methods for ES5 (with descriptors) and
+ ES3 (plain) - we're following ES5 idea on that, some methods are intended just
+ for enumerable properties and some are for all properties, all are declared
+ for Object.prototype
+* Removed separation of Array generic (collected in List folder) and not generic
+ methods (collected in Array folder). Now all methods are generic and are in
+ Array/prototype folder. This separation also meant, that methods in Array are
+ usually destructive. We don’t do that separation now, there’s generally no use
+ case for destructive iterators, we should be fine with one version of each
+ method, (same as ES5 is fine with e.g. one, non destructive 'filter' method)
+* Folder structure resembles tree of native ES5 Objects
+* All methods are written with ES5 conventions in mind, it means that most
+ methods are generic and can be run on any object. In more detail:
+ ** Array.prototype and Object.prototype methods can be run on any object (any
+ not null or undefined value),
+ ** Date.prototype methods should be called only on Date instances.
+ ** Function.prototype methods can be called on any callable objects (not
+ necessarily functions)
+ ** Number.prototype & String.prototype methods can be called on any value, in
+ case of Number it it’ll be degraded to number, in case of string it’ll be
+ degraded to string.
+* Travis CI support (only for Node v0.6 branch, as v0.4 has buggy V8 version)
+
+Improvements for existing functions and methods:
+* Function.memoize (was Function.cache) is now fully generic, can operate on any
+ type of arguments and it’s NaN safe (all NaN objects are considered equal)
+* Method properties passed to Object.prototype.extend or
+ Object.prototype.override can aside of _super optionally take prototype object
+ via _proto argument
+* Object iterators: forEach, mapToArray and every can now iterate in specified
+ order
+* pluck, invoke and other functions that return reusable functions or methods
+ have now their results memoized.
+
+New methods:
+* Global: assertNotNull, getNextIdGenerator, guid, isEqual, isPrimitive,
+ toObject
+* Array: generate
+* Array.prototype: binarySearch, clear, contains, diff, exclusion, find, first,
+ forEachRight, group, indexesOf, intersection, remove, someRight, someValue
+* Boolean: isBoolean
+* Date: isDate
+* Function: arguments, context, insert, isArguments, remove
+* Function.prototype: not, silent
+* Number: getAutoincrement, isNumber
+* Number.prototype: isLessOrEqual, isLess, subtract
+* Object: assertCallable, descriptor (functions for clean descriptors),
+ getCompareBy, isCallable, isObject
+* Object.prototype: clone (real clone), compact, count, diff, empty,
+ getPropertyNames, get, keyOf, mapKeys, override, plainCreate, plainExtend,
+ slice, some, unset
+* RegExp: isRegExp
+* String: getPrefixWith, isString
+* String.prototype: caseInsensitiveCompare, contains, isNumeric
+
+Renamed methods:
+* Date.clone -> Date.prototype.copy
+* Date.format -> Date.getFormat
+* Date/day/floor -> Date.prototype.floorDay
+* Date/month/floor -> Date.prototype.floorMonth
+* Date/month/year -> Date.prototype.floorYear
+* Function.cache -> Function.memoize
+* Function.getApplyArg -> Function.prototype.match
+* Function.sequence -> Function.prototype.chain
+* List.findSameStartLength -> Array.prototype.commonLeft
+* Number.pad -> Number.getPad
+* Object/plain/clone -> Object.prototype.copy
+* Object/plain/elevate -> Object.prototype.flatten
+* Object/plain/same -> Object.prototype.isDuplicate
+* Object/plain/setValue -> Object.getSet
+* String.format -> String.getFormat
+* String.indent -> String.getIndent
+* String.pad -> String.getPad
+* String.trimLeftStr -> String.prototype.trimCommonLeft
+* Object.merge -> Object.prototype.mergeProperties
+* Object/plain/pluck -> Object.prototype.get
+* Array.clone is now Array.prototype.copy and can be used also on any array-like
+ objects
+* List.isList -> Object.isList
+* List.toArray -> Object.prototype.toArray
+* String/convert/dashToCamelCase -> String.prototype.dashToCamelCase
+
+Removed methods:
+* Array.compact - removed destructive version (that operated on same array), we
+ have now non destructive version as Array.prototype.compact.
+* Function.applyBind -> use apply.bind directly
+* Function.bindBind -> use bind.bind directly
+* Function.callBind -> use call.bind directly
+* Fuction.clone -> no valid use case
+* Function.dscope -> controversial approach, shouldn’t be considered seriously
+* Function.functionalize -> It was experimental but standards are standards
+* List/sort/length -> It can be easy obtained by Object.getCompareBy(‘length’)
+* List.concat -> Concat’s for array-like’s makes no sense, just convert to array
+ first
+* List.every -> Use Array.prototype.every directly
+* List.filter -> Use Array.prototype.filter directly
+* List.forEach -> User Array.prototype.forEach directly
+* List.isListObject -> No valid use case, do: isList(list) && (typeof list ===
+ 'object’)
+* List.map -> Use Array.prototype.map directly
+* List.reduce -> Use Array.prototype.reduce directly
+* List.shiftSame -> Use Array.prototype.commonLeft and do slice
+* List.slice -> Use Array.prototype.slice directly
+* List.some -> Use Array.prototype.some directly
+* Object.bindMethods -> it was version that considered descriptors, we have now
+ Object.prototype.bindMethods which operates only on enumerable properties
+* Object.every -> version that considered all properties, we have now
+ Object.prototype.every which iterates only enumerables
+* Object.invoke -> no use case
+* Object.mergeDeep -> no use case
+* Object.pluck -> no use case
+* Object.same -> it considered descriptors, now there’s only Object.isDuplicate
+ which compares only enumerable properties
+* Object.sameType -> no use case
+* Object.toDescriptor and Object.toDescriptors -> replaced by much nicer
+ Object.descriptor functions
+* Object/plain/link -> no use case (it was used internally only by
+ Object/plain/merge)
+* Object/plain/setTrue -> now easily configurable by more universal
+ Object.getSet(true)
+* String.trimRightStr -> Eventually String.prototype.trimCommonRight will be
+ added
+
+v0.6.3 -- 2011.12.12
+* Cleared npm warning for misnamed property in package.json
+
+v0.6.2 -- 2011.08.12
+* Calling String.indent without scope (global scope then) now treated as calling
+ it with null scope, it allows more direct invocations when using default nest
+ string: indent().call(str, nest)
+
+v0.6.1 -- 2011.08.08
+* Added TAD test suite to devDependencies, configured test commands.
+ Tests can be run with 'make test' or 'npm test'
+
+v0.6.0 -- 2011.08.07
+New methods:
+* Array: clone, compact (in place)
+* Date: format, duration, clone, monthDaysCount, day.floor, month.floor,
+ year.floor
+* Function: getApplyArg, , ncurry, rncurry, hold, cache, log
+* List: findSameStartLength, shiftSame, peek, isListObject
+* Number: pad
+* Object: sameType, toString, mapToArray, mergeDeep, toDescriptor,
+ toDescriptors, invoke
+* String: startsWith, endsWith, indent, trimLeftStr, trimRightStr, pad, format
+
+Fixed:
+* Object.extend does now prototypal extend as exptected
+* Object.merge now tries to overwrite only configurable properties
+* Function.flip
+
+Improved:
+* Faster List.toArray
+* Better global retrieval
+* Functionalized all Function methods
+* Renamed bindApply and bindCall to applyBind and callBind
+* Removed Function.inherit (as it's unintuitive curry clone)
+* Straightforward logic in Function.k
+* Fixed naming of some tests files (letter case issue)
+* Renamed Function.saturate into Function.lock
+* String.dashToCamelCase digits support
+* Strings now considered as List objects
+* Improved List.compact
+* Concise logic for List.concat
+* Test wit TAD in clean ES5 context
+
+v0.5.1 -- 2011.07.11
+* Function's bindBind, bindCall and bindApply now more versatile
+
+v0.5.0 -- 2011.07.07
+* Removed Object.is and List.apply
+* Renamed Object.plain.is to Object.plain.isPlainObject (keep naming convention
+ consistent)
+* Improved documentation
+
+v0.4.0 -- 2011.07.05
+* Take most functions on Object to Object.plain to keep them away from object
+ descriptors
+* Object functions with ES5 standard in mind (object descriptors)
+
+v0.3.0 -- 2011.06.24
+* New functions
+* Consistent file naming (dash instead of camelCase)
+
+v0.2.1 -- 2011.05.28
+* Renamed Functions.K and Function.S to to lowercase versions (use consistent
+ naming)
+
+v0.2.0 -- 2011.05.28
+* Renamed Array folder to List (as its generic functions for array-like objects)
+* Added Makefile
+* Added various functions
+
+v0.1.0 -- 2011.05.24
+* Initial version
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/LICENSE b/kbase-extension/static/ext_packages/igv/es5-ext/LICENSE
new file mode 100644
index 0000000000..c54cfb17ce
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/LICENSE
@@ -0,0 +1,15 @@
+ISC License
+
+Copyright (c) 2011-2018, Mariusz Nowak, @medikoo, medikoo.com
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/README.md b/kbase-extension/static/ext_packages/igv/es5-ext/README.md
new file mode 100644
index 0000000000..0a33d7d3f5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/README.md
@@ -0,0 +1,1018 @@
+[![Build status][nix-build-image]][nix-build-url]
+[![Windows status][win-build-image]][win-build-url]
+![Transpilation status][transpilation-image]
+[![npm version][npm-image]][npm-url]
+
+# es5-ext
+
+## ECMAScript 5 extensions
+
+### (with respect to ECMAScript 6 standard)
+
+Shims for upcoming ES6 standard and other goodies implemented strictly with ECMAScript conventions in mind.
+
+It's designed to be used in compliant ECMAScript 5 or ECMAScript 6 environments. Older environments are not supported, although most of the features should work with correct ECMAScript 5 shim on board.
+
+When used in ECMAScript 6 environment, native implementation (if valid) takes precedence over shims.
+
+### Installation
+
+ $ npm install es5-ext
+
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+### Usage
+
+#### ECMAScript 6 features
+
+You can force ES6 features to be implemented in your environment, e.g. following will assign `from` function to `Array` (only if it's not implemented already).
+
+```javascript
+require("es5-ext/array/from/implement");
+Array.from("foo"); // ['f', 'o', 'o']
+```
+
+You can also access shims directly, without fixing native objects. Following will return native `Array.from` if it's available and fallback to shim if it's not.
+
+```javascript
+var aFrom = require("es5-ext/array/from");
+aFrom("foo"); // ['f', 'o', 'o']
+```
+
+If you want to use shim unconditionally (even if native implementation exists) do:
+
+```javascript
+var aFrom = require("es5-ext/array/from/shim");
+aFrom("foo"); // ['f', 'o', 'o']
+```
+
+##### List of ES6 shims
+
+It's about properties introduced with ES6 and those that have been updated in new spec.
+
+* `Array.from` -> `require('es5-ext/array/from')`
+* `Array.of` -> `require('es5-ext/array/of')`
+* `Array.prototype.concat` -> `require('es5-ext/array/#/concat')`
+* `Array.prototype.copyWithin` -> `require('es5-ext/array/#/copy-within')`
+* `Array.prototype.entries` -> `require('es5-ext/array/#/entries')`
+* `Array.prototype.fill` -> `require('es5-ext/array/#/fill')`
+* `Array.prototype.filter` -> `require('es5-ext/array/#/filter')`
+* `Array.prototype.find` -> `require('es5-ext/array/#/find')`
+* `Array.prototype.findIndex` -> `require('es5-ext/array/#/find-index')`
+* `Array.prototype.keys` -> `require('es5-ext/array/#/keys')`
+* `Array.prototype.map` -> `require('es5-ext/array/#/map')`
+* `Array.prototype.slice` -> `require('es5-ext/array/#/slice')`
+* `Array.prototype.splice` -> `require('es5-ext/array/#/splice')`
+* `Array.prototype.values` -> `require('es5-ext/array/#/values')`
+* `Array.prototype[@@iterator]` -> `require('es5-ext/array/#/@@iterator')`
+* `Math.acosh` -> `require('es5-ext/math/acosh')`
+* `Math.asinh` -> `require('es5-ext/math/asinh')`
+* `Math.atanh` -> `require('es5-ext/math/atanh')`
+* `Math.cbrt` -> `require('es5-ext/math/cbrt')`
+* `Math.clz32` -> `require('es5-ext/math/clz32')`
+* `Math.cosh` -> `require('es5-ext/math/cosh')`
+* `Math.exmp1` -> `require('es5-ext/math/expm1')`
+* `Math.fround` -> `require('es5-ext/math/fround')`
+* `Math.hypot` -> `require('es5-ext/math/hypot')`
+* `Math.imul` -> `require('es5-ext/math/imul')`
+* `Math.log1p` -> `require('es5-ext/math/log1p')`
+* `Math.log2` -> `require('es5-ext/math/log2')`
+* `Math.log10` -> `require('es5-ext/math/log10')`
+* `Math.sign` -> `require('es5-ext/math/sign')`
+* `Math.signh` -> `require('es5-ext/math/signh')`
+* `Math.tanh` -> `require('es5-ext/math/tanh')`
+* `Math.trunc` -> `require('es5-ext/math/trunc')`
+* `Number.EPSILON` -> `require('es5-ext/number/epsilon')`
+* `Number.MAX_SAFE_INTEGER` -> `require('es5-ext/number/max-safe-integer')`
+* `Number.MIN_SAFE_INTEGER` -> `require('es5-ext/number/min-safe-integer')`
+* `Number.isFinite` -> `require('es5-ext/number/is-finite')`
+* `Number.isInteger` -> `require('es5-ext/number/is-integer')`
+* `Number.isNaN` -> `require('es5-ext/number/is-nan')`
+* `Number.isSafeInteger` -> `require('es5-ext/number/is-safe-integer')`
+* `Object.assign` -> `require('es5-ext/object/assign')`
+* `Object.keys` -> `require('es5-ext/object/keys')`
+* `Object.setPrototypeOf` -> `require('es5-ext/object/set-prototype-of')`
+* `RegExp.prototype.match` -> `require('es5-ext/reg-exp/#/match')`
+* `RegExp.prototype.replace` -> `require('es5-ext/reg-exp/#/replace')`
+* `RegExp.prototype.search` -> `require('es5-ext/reg-exp/#/search')`
+* `RegExp.prototype.split` -> `require('es5-ext/reg-exp/#/split')`
+* `RegExp.prototype.sticky` -> Implement with `require('es5-ext/reg-exp/#/sticky/implement')`, use as function with `require('es5-ext/reg-exp/#/is-sticky')`
+* `RegExp.prototype.unicode` -> Implement with `require('es5-ext/reg-exp/#/unicode/implement')`, use as function with `require('es5-ext/reg-exp/#/is-unicode')`
+* `String.fromCodePoint` -> `require('es5-ext/string/from-code-point')`
+* `String.raw` -> `require('es5-ext/string/raw')`
+* `String.prototype.codePointAt` -> `require('es5-ext/string/#/code-point-at')`
+* `String.prototype.contains` -> `require('es5-ext/string/#/contains')`
+* `String.prototype.endsWith` -> `require('es5-ext/string/#/ends-with')`
+* `String.prototype.normalize` -> `require('es5-ext/string/#/normalize')`
+* `String.prototype.repeat` -> `require('es5-ext/string/#/repeat')`
+* `String.prototype.startsWith` -> `require('es5-ext/string/#/starts-with')`
+* `String.prototype[@@iterator]` -> `require('es5-ext/string/#/@@iterator')`
+
+#### Non ECMAScript standard features
+
+**es5-ext** provides also other utils, and implements them as if they were proposed for a standard. It mostly offers methods (not functions) which can directly be assigned to native prototypes:
+
+```javascript
+Object.defineProperty(Function.prototype, "partial", {
+ value: require("es5-ext/function/#/partial"),
+ configurable: true,
+ enumerable: false,
+ writable: true
+});
+Object.defineProperty(Array.prototype, "flatten", {
+ value: require("es5-ext/array/#/flatten"),
+ configurable: true,
+ enumerable: false,
+ writable: true
+});
+Object.defineProperty(String.prototype, "capitalize", {
+ value: require("es5-ext/string/#/capitalize"),
+ configurable: true,
+ enumerable: false,
+ writable: true
+});
+```
+
+See [es5-extend](https://github.com/wookieb/es5-extend#es5-extend), a great utility that automatically will extend natives for you.
+
+**Important:** Remember to **not** extend natives in scope of generic reusable packages (e.g. ones you intend to publish to npm). Extending natives is fine **only** if you're the _owner_ of the global scope, so e.g. in final project you lead development of.
+
+When you're in situation when native extensions are not good idea, then you should use methods indirectly:
+
+```javascript
+var flatten = require("es5-ext/array/#/flatten");
+
+flatten.call([1, [2, [3, 4]]]); // [1, 2, 3, 4]
+```
+
+for better convenience you can turn methods into functions:
+
+```javascript
+var call = Function.prototype.call;
+var flatten = call.bind(require("es5-ext/array/#/flatten"));
+
+flatten([1, [2, [3, 4]]]); // [1, 2, 3, 4]
+```
+
+You can configure custom toolkit (like [underscorejs](http://underscorejs.org/)), and use it throughout your application
+
+```javascript
+var util = {};
+util.partial = call.bind(require("es5-ext/function/#/partial"));
+util.flatten = call.bind(require("es5-ext/array/#/flatten"));
+util.startsWith = call.bind(require("es5-ext/string/#/starts-with"));
+
+util.flatten([1, [2, [3, 4]]]); // [1, 2, 3, 4]
+```
+
+As with native ones most methods are generic and can be run on any type of object.
+
+## API
+
+### Global extensions
+
+#### global _(es5-ext/global)_
+
+Object that represents global scope
+
+### Array Constructor extensions
+
+#### from(arrayLike[, mapFn[, thisArg]]) _(es5-ext/array/from)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from).
+Returns array representation of _iterable_ or _arrayLike_. If _arrayLike_ is an instance of array, its copy is returned.
+
+#### generate([length[, …fill]]) _(es5-ext/array/generate)_
+
+Generate an array of pre-given _length_ built of repeated arguments.
+
+#### isPlainArray(x) _(es5-ext/array/is-plain-array)_
+
+Returns true if object is plain array (not instance of one of the Array's extensions).
+
+#### of([…items]) _(es5-ext/array/of)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.of).
+Create an array from given arguments.
+
+#### toArray(obj) _(es5-ext/array/to-array)_
+
+Returns array representation of `obj`. If `obj` is already an array, `obj` is returned back.
+
+#### validArray(obj) _(es5-ext/array/valid-array)_
+
+Returns `obj` if it's an array, otherwise throws `TypeError`
+
+### Array Prototype extensions
+
+#### arr.binarySearch(compareFn) _(es5-ext/array/#/binary-search)_
+
+In **sorted** list search for index of item for which _compareFn_ returns value closest to _0_.
+It's variant of binary search algorithm
+
+#### arr.clear() _(es5-ext/array/#/clear)_
+
+Clears the array
+
+#### arr.compact() _(es5-ext/array/#/compact)_
+
+Returns a copy of the context with all non-values (`null` or `undefined`) removed.
+
+#### arr.concat() _(es5-ext/array/#/concat)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.concat).
+ES6's version of `concat`. Supports `isConcatSpreadable` symbol, and returns array of same type as the context.
+
+#### arr.contains(searchElement[, position]) _(es5-ext/array/#/contains)_
+
+Whether list contains the given value.
+
+#### arr.copyWithin(target, start[, end]) _(es5-ext/array/#/copy-within)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.copywithin).
+
+#### arr.diff(other) _(es5-ext/array/#/diff)_
+
+Returns the array of elements that are present in context list but not present in other list.
+
+#### arr.eIndexOf(searchElement[, fromIndex]) _(es5-ext/array/#/e-index-of)_
+
+_egal_ version of `indexOf` method. [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) logic is used for comparision
+
+#### arr.eLastIndexOf(searchElement[, fromIndex]) _(es5-ext/array/#/e-last-index-of)_
+
+_egal_ version of `lastIndexOf` method. [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) logic is used for comparision
+
+#### arr.entries() _(es5-ext/array/#/entries)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.entries).
+Returns iterator object, which traverses the array. Each value is represented with an array, where first value is an index and second is corresponding to index value.
+
+#### arr.exclusion([…lists]]) _(es5-ext/array/#/exclusion)_
+
+Returns the array of elements that are found only in one of the lists (either context list or list provided in arguments).
+
+#### arr.fill(value[, start, end]) _(es5-ext/array/#/fill)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.fill).
+
+#### arr.filter(callback[, thisArg]) _(es5-ext/array/#/filter)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.filter).
+ES6's version of `filter`, returns array of same type as the context.
+
+#### arr.find(predicate[, thisArg]) _(es5-ext/array/#/find)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.find).
+Return first element for which given function returns true
+
+#### arr.findIndex(predicate[, thisArg]) _(es5-ext/array/#/find-index)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.findindex).
+Return first index for which given function returns true
+
+#### arr.first() _(es5-ext/array/#/first)_
+
+Returns value for first defined index
+
+#### arr.firstIndex() _(es5-ext/array/#/first-index)_
+
+Returns first declared index of the array
+
+#### arr.flatten() _(es5-ext/array/#/flatten)_
+
+Returns flattened version of the array
+
+#### arr.forEachRight(cb[, thisArg]) _(es5-ext/array/#/for-each-right)_
+
+`forEach` starting from last element
+
+#### arr.group(cb[, thisArg]) _(es5-ext/array/#/group)_
+
+Group list elements by value returned by _cb_ function
+
+#### arr.indexesOf(searchElement[, fromIndex]) _(es5-ext/array/#/indexes-of)_
+
+Returns array of all indexes of given value
+
+#### arr.intersection([…lists]) _(es5-ext/array/#/intersection)_
+
+Computes the array of values that are the intersection of all lists (context list and lists given in arguments)
+
+#### arr.isCopy(other) _(es5-ext/array/#/is-copy)_
+
+Returns true if both context and _other_ lists have same content
+
+#### arr.isUniq() _(es5-ext/array/#/is-uniq)_
+
+Returns true if all values in array are unique
+
+#### arr.keys() _(es5-ext/array/#/keys)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.keys).
+Returns iterator object, which traverses all array indexes.
+
+#### arr.last() _(es5-ext/array/#/last)_
+
+Returns value of last defined index
+
+#### arr.lastIndex() _(es5-ext/array/#/last)_
+
+Returns last defined index of the array
+
+#### arr.map(callback[, thisArg]) _(es5-ext/array/#/map)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.map).
+ES6's version of `map`, returns array of same type as the context.
+
+#### arr.remove(value[, …valuen]) _(es5-ext/array/#/remove)_
+
+Remove values from the array
+
+#### arr.separate(sep) _(es5-ext/array/#/separate)_
+
+Returns array with items separated with `sep` value
+
+#### arr.slice(callback[, thisArg]) _(es5-ext/array/#/slice)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.slice).
+ES6's version of `slice`, returns array of same type as the context.
+
+#### arr.someRight(cb[, thisArg]) _(es5-ext/array/#/someRight)_
+
+`some` starting from last element
+
+#### arr.splice(callback[, thisArg]) _(es5-ext/array/#/splice)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.splice).
+ES6's version of `splice`, returns array of same type as the context.
+
+#### arr.uniq() _(es5-ext/array/#/uniq)_
+
+Returns duplicate-free version of the array
+
+#### arr.values() _(es5-ext/array/#/values)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.values).
+Returns iterator object which traverses all array values.
+
+#### arr[@@iterator] _(es5-ext/array/#/@@iterator)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype-@@iterator).
+Returns iterator object which traverses all array values.
+
+### Boolean Constructor extensions
+
+#### isBoolean(x) _(es5-ext/boolean/is-boolean)_
+
+Whether value is boolean
+
+### Date Constructor extensions
+
+#### isDate(x) _(es5-ext/date/is-date)_
+
+Whether value is date instance
+
+#### validDate(x) _(es5-ext/date/valid-date)_
+
+If given object is not date throw TypeError in other case return it.
+
+### Date Prototype extensions
+
+#### date.copy(date) _(es5-ext/date/#/copy)_
+
+Returns a copy of the date object
+
+#### date.daysInMonth() _(es5-ext/date/#/days-in-month)_
+
+Returns number of days of date's month
+
+#### date.floorDay() _(es5-ext/date/#/floor-day)_
+
+Sets the date time to 00:00:00.000
+
+#### date.floorMonth() _(es5-ext/date/#/floor-month)_
+
+Sets date day to 1 and date time to 00:00:00.000
+
+#### date.floorYear() _(es5-ext/date/#/floor-year)_
+
+Sets date month to 0, day to 1 and date time to 00:00:00.000
+
+#### date.format(pattern) _(es5-ext/date/#/format)_
+
+Formats date up to given string. Supported patterns:
+
+* `%Y` - Year with century, 1999, 2003
+* `%y` - Year without century, 99, 03
+* `%m` - Month, 01..12
+* `%d` - Day of the month 01..31
+* `%H` - Hour (24-hour clock), 00..23
+* `%M` - Minute, 00..59
+* `%S` - Second, 00..59
+* `%L` - Milliseconds, 000..999
+
+### Error Constructor extensions
+
+#### custom(message/_, code, ext_/) _(es5-ext/error/custom)_
+
+Creates custom error object, optinally extended with `code` and other extension properties (provided with `ext` object)
+
+#### isError(x) _(es5-ext/error/is-error)_
+
+Whether value is an error (instance of `Error`).
+
+#### validError(x) _(es5-ext/error/valid-error)_
+
+If given object is not error throw TypeError in other case return it.
+
+### Error Prototype extensions
+
+#### err.throw() _(es5-ext/error/#/throw)_
+
+Throws error
+
+### Function Constructor extensions
+
+Some of the functions were inspired by [Functional JavaScript](http://osteele.com/sources/javascript/functional/) project by Olivier Steele
+
+#### constant(x) _(es5-ext/function/constant)_
+
+Returns a constant function that returns pregiven argument
+
+_k(x)(y) =def x_
+
+#### identity(x) _(es5-ext/function/identity)_
+
+Identity function. Returns first argument
+
+_i(x) =def x_
+
+#### invoke(name[, …args]) _(es5-ext/function/invoke)_
+
+Returns a function that takes an object as an argument, and applies object's
+_name_ method to arguments.
+_name_ can be name of the method or method itself.
+
+_invoke(name, …args)(object, …args2) =def object\[name\]\(…args, …args2\)_
+
+#### isArguments(x) _(es5-ext/function/is-arguments)_
+
+Whether value is arguments object
+
+#### isFunction(arg) _(es5-ext/function/is-function)_
+
+Whether value is instance of function
+
+#### noop() _(es5-ext/function/noop)_
+
+No operation function
+
+#### pluck(name) _(es5-ext/function/pluck)_
+
+Returns a function that takes an object, and returns the value of its _name_
+property
+
+_pluck(name)(obj) =def obj[name]_
+
+#### validFunction(arg) _(es5-ext/function/valid-function)_
+
+If given object is not function throw TypeError in other case return it.
+
+### Function Prototype extensions
+
+Some of the methods were inspired by [Functional JavaScript](http://osteele.com/sources/javascript/functional/) project by Olivier Steele
+
+#### fn.compose([…fns]) _(es5-ext/function/#/compose)_
+
+Applies the functions in reverse argument-list order.
+
+_f1.compose(f2, f3, f4)(…args) =def f1(f2(f3(f4(…arg))))_
+
+#### fn.copy() _(es5-ext/function/#/copy)_
+
+Produces copy of given function
+
+#### fn.curry([n]) _(es5-ext/function/#/curry)_
+
+Invoking the function returned by this function only _n_ arguments are passed to the underlying function. If the underlying function is not saturated, the result is a function that passes all its arguments to the underlying function.
+If _n_ is not provided then it defaults to context function length
+
+_f.curry(4)(arg1, arg2)(arg3)(arg4) =def f(arg1, args2, arg3, arg4)_
+
+#### fn.lock([…args]) _(es5-ext/function/#/lock)_
+
+Returns a function that applies the underlying function to _args_, and ignores its own arguments.
+
+_f.lock(…args)(…args2) =def f(…args)_
+
+_Named after it's counterpart in Google Closure_
+
+#### fn.not() _(es5-ext/function/#/not)_
+
+Returns a function that returns boolean negation of value returned by underlying function.
+
+_f.not()(…args) =def !f(…args)_
+
+#### fn.partial([…args]) _(es5-ext/function/#/partial)_
+
+Returns a function that when called will behave like context function called with initially passed arguments. If more arguments are suplilied, they are appended to initial args.
+
+_f.partial(…args1)(…args2) =def f(…args1, …args2)_
+
+#### fn.spread() _(es5-ext/function/#/spread)_
+
+Returns a function that applies underlying function with first list argument
+
+_f.match()(args) =def f.apply(null, args)_
+
+#### fn.toStringTokens() _(es5-ext/function/#/to-string-tokens)_
+
+Serializes function into two (arguments and body) string tokens. Result is plain object with `args` and `body` properties.
+
+### Math extensions
+
+#### acosh(x) _(es5-ext/math/acosh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.acosh).
+
+#### asinh(x) _(es5-ext/math/asinh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.asinh).
+
+#### atanh(x) _(es5-ext/math/atanh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.atanh).
+
+#### cbrt(x) _(es5-ext/math/cbrt)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.cbrt).
+
+#### clz32(x) _(es5-ext/math/clz32)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.clz32).
+
+#### cosh(x) _(es5-ext/math/cosh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.cosh).
+
+#### expm1(x) _(es5-ext/math/expm1)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.expm1).
+
+#### fround(x) _(es5-ext/math/fround)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.fround).
+
+#### hypot([…values]) _(es5-ext/math/hypot)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.hypot).
+
+#### imul(x, y) _(es5-ext/math/imul)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.imul).
+
+#### log1p(x) _(es5-ext/math/log1p)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log1p).
+
+#### log2(x) _(es5-ext/math/log2)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log2).
+
+#### log10(x) _(es5-ext/math/log10)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log10).
+
+#### sign(x) _(es5-ext/math/sign)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.sign).
+
+#### sinh(x) _(es5-ext/math/sinh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.sinh).
+
+#### tanh(x) _(es5-ext/math/tanh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.tanh).
+
+#### trunc(x) _(es5-ext/math/trunc)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.trunc).
+
+### Number Constructor extensions
+
+#### EPSILON _(es5-ext/number/epsilon)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.epsilon).
+
+The difference between 1 and the smallest value greater than 1 that is representable as a Number value, which is approximately 2.2204460492503130808472633361816 x 10-16.
+
+#### isFinite(x) _(es5-ext/number/is-finite)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isfinite).
+Whether value is finite. Differs from global isNaN that it doesn't do type coercion.
+
+#### isInteger(x) _(es5-ext/number/is-integer)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isinteger).
+Whether value is integer.
+
+#### isNaN(x) _(es5-ext/number/is-nan)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isnan).
+Whether value is NaN. Differs from global isNaN that it doesn't do type coercion.
+
+#### isNumber(x) _(es5-ext/number/is-number)_
+
+Whether given value is number
+
+#### isSafeInteger(x) _(es5-ext/number/is-safe-integer)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.issafeinteger).
+
+#### MAX*SAFE_INTEGER *(es5-ext/number/max-safe-integer)\_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.maxsafeinteger).
+The value of Number.MAX_SAFE_INTEGER is 9007199254740991.
+
+#### MIN*SAFE_INTEGER *(es5-ext/number/min-safe-integer)\_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.minsafeinteger).
+The value of Number.MIN_SAFE_INTEGER is -9007199254740991 (253-1).
+
+#### toInteger(x) _(es5-ext/number/to-integer)_
+
+Converts value to integer
+
+#### toPosInteger(x) _(es5-ext/number/to-pos-integer)_
+
+Converts value to positive integer. If provided value is less than 0, then 0 is returned
+
+#### toUint32(x) _(es5-ext/number/to-uint32)_
+
+Converts value to unsigned 32 bit integer. This type is used for array lengths.
+See: http://www.2ality.com/2012/02/js-integers.html
+
+### Number Prototype extensions
+
+#### num.pad(length[, precision]) _(es5-ext/number/#/pad)_
+
+Pad given number with zeros. Returns string
+
+### Object Constructor extensions
+
+#### assign(target, source[, …sourcen]) _(es5-ext/object/assign)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign).
+Extend _target_ by enumerable own properties of other objects. If properties are already set on target object, they will be overwritten.
+
+#### clear(obj) _(es5-ext/object/clear)_
+
+Remove all enumerable own properties of the object
+
+#### compact(obj) _(es5-ext/object/compact)_
+
+Returns copy of the object with all enumerable properties that have no falsy values
+
+#### compare(obj1, obj2) _(es5-ext/object/compare)_
+
+Universal cross-type compare function. To be used for e.g. array sort.
+
+#### copy(obj) _(es5-ext/object/copy)_
+
+Returns copy of the object with all enumerable properties.
+
+#### copyDeep(obj) _(es5-ext/object/copy-deep)_
+
+Returns deep copy of the object with all enumerable properties.
+
+#### count(obj) _(es5-ext/object/count)_
+
+Counts number of enumerable own properties on object
+
+#### create(obj[, properties]) _(es5-ext/object/create)_
+
+`Object.create` alternative that provides workaround for [V8 issue](http://code.google.com/p/v8/issues/detail?id=2804).
+
+When `null` is provided as a prototype, it's substituted with specially prepared object that derives from Object.prototype but has all Object.prototype properties shadowed with undefined.
+
+It's quirky solution that allows us to have plain objects with no truthy properties but with turnable prototype.
+
+Use only for objects that you plan to switch prototypes of and be aware of limitations of this workaround.
+
+#### eq(x, y) _(es5-ext/object/eq)_
+
+Whether two values are equal, using [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) algorithm.
+
+#### every(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/every)_
+
+Analogous to Array.prototype.every. Returns true if every key-value pair in this object satisfies the provided testing function.
+Optionally _compareFn_ can be provided which assures that keys are tested in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).
+
+#### filter(obj, cb[, thisArg]) _(es5-ext/object/filter)_
+
+Analogous to Array.prototype.filter. Returns new object with properites for which _cb_ function returned truthy value.
+
+#### firstKey(obj) _(es5-ext/object/first-key)_
+
+Returns first enumerable key of the object, as keys are unordered by specification, it can be any key of an object.
+
+#### flatten(obj) _(es5-ext/object/flatten)_
+
+Returns new object, with flatten properties of input object
+
+_flatten({ a: { b: 1 }, c: { d: 1 } }) =def { b: 1, d: 1 }_
+
+#### forEach(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/for-each)_
+
+Analogous to Array.prototype.forEach. Calls a function for each key-value pair found in object
+Optionally _compareFn_ can be provided which assures that properties are iterated in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).
+
+#### getPropertyNames() _(es5-ext/object/get-property-names)_
+
+Get all (not just own) property names of the object
+
+#### is(x, y) _(es5-ext/object/is)_
+
+Whether two values are equal, using [_SameValue_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) algorithm.
+
+#### isArrayLike(x) _(es5-ext/object/is-array-like)_
+
+Whether object is array-like object
+
+#### isCopy(x, y) _(es5-ext/object/is-copy)_
+
+Two values are considered a copy of same value when all of their own enumerable properties have same values.
+
+#### isCopyDeep(x, y) _(es5-ext/object/is-copy-deep)_
+
+Deep comparision of objects
+
+#### isEmpty(obj) _(es5-ext/object/is-empty)_
+
+True if object doesn't have any own enumerable property
+
+#### isObject(arg) _(es5-ext/object/is-object)_
+
+Whether value is not primitive
+
+#### isPlainObject(arg) _(es5-ext/object/is-plain-object)_
+
+Whether object is plain object, its protototype should be Object.prototype and it cannot be host object.
+
+#### keyOf(obj, searchValue) _(es5-ext/object/key-of)_
+
+Search object for value
+
+#### keys(obj) _(es5-ext/object/keys)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys).
+ES6's version of `keys`, doesn't throw on primitive input
+
+#### map(obj, cb[, thisArg]) _(es5-ext/object/map)_
+
+Analogous to Array.prototype.map. Creates a new object with properties which values are results of calling a provided function on every key-value pair in this object.
+
+#### mapKeys(obj, cb[, thisArg]) _(es5-ext/object/map-keys)_
+
+Create new object with same values, but remapped keys
+
+#### mixin(target, source) _(es5-ext/object/mixin)_
+
+Extend _target_ by all own properties of other objects. Properties found in both objects will be overwritten (unless they're not configurable and cannot be overwritten).
+_It was for a moment part of ECMAScript 6 draft._
+
+#### mixinPrototypes(target, …source]) _(es5-ext/object/mixin-prototypes)_
+
+Extends _target_, with all source and source's prototype properties.
+Useful as an alternative for `setPrototypeOf` in environments in which it cannot be shimmed (no `__proto__` support).
+
+#### normalizeOptions(options) _(es5-ext/object/normalize-options)_
+
+Normalizes options object into flat plain object.
+
+Useful for functions in which we either need to keep options object for future reference or need to modify it for internal use.
+
+* It never returns input `options` object back (always a copy is created)
+* `options` can be undefined in such case empty plain object is returned.
+* Copies all enumerable properties found down prototype chain.
+
+#### primitiveSet([…names]) _(es5-ext/object/primitive-set)_
+
+Creates `null` prototype based plain object, and sets on it all property names provided in arguments to true.
+
+#### safeTraverse(obj[, …names]) _(es5-ext/object/safe-traverse)_
+
+Safe navigation of object properties. See http://wiki.ecmascript.org/doku.php?id=strawman:existential_operator
+
+#### serialize(value) _(es5-ext/object/serialize)_
+
+Serialize value into string. Differs from [JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) that it serializes also dates, functions and regular expresssions.
+
+#### setPrototypeOf(object, proto) _(es5-ext/object/set-prototype-of)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.setprototypeof).
+If native version is not provided, it depends on existence of `__proto__` functionality, if it's missing, `null` instead of function is exposed.
+
+#### some(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/some)_
+
+Analogous to Array.prototype.some Returns true if any key-value pair satisfies the provided
+testing function.
+Optionally _compareFn_ can be provided which assures that keys are tested in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).
+
+#### toArray(obj[, cb[, thisArg[, compareFn]]]) _(es5-ext/object/to-array)_
+
+Creates an array of results of calling a provided function on every key-value pair in this object.
+Optionally _compareFn_ can be provided which assures that results are added in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).
+
+#### unserialize(str) _(es5-ext/object/unserialize)_
+
+Userializes value previously serialized with [serialize](#serializevalue-es5-extobjectserialize)
+
+#### validCallable(x) _(es5-ext/object/valid-callable)_
+
+If given object is not callable throw TypeError in other case return it.
+
+#### validObject(x) _(es5-ext/object/valid-object)_
+
+Throws error if given value is not an object, otherwise it is returned.
+
+#### validValue(x) _(es5-ext/object/valid-value)_
+
+Throws error if given value is `null` or `undefined`, otherwise returns value.
+
+### RegExp Constructor extensions
+
+#### escape(str) _(es5-ext/reg-exp/escape)_
+
+Escapes string to be used in regular expression
+
+#### isRegExp(x) _(es5-ext/reg-exp/is-reg-exp)_
+
+Whether object is regular expression
+
+#### validRegExp(x) _(es5-ext/reg-exp/valid-reg-exp)_
+
+If object is regular expression it is returned, otherwise TypeError is thrown.
+
+### RegExp Prototype extensions
+
+#### re.isSticky(x) _(es5-ext/reg-exp/#/is-sticky)_
+
+Whether regular expression has `sticky` flag.
+
+It's to be used as counterpart to [regExp.sticky](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-get-regexp.prototype.sticky) if it's not implemented.
+
+#### re.isUnicode(x) _(es5-ext/reg-exp/#/is-unicode)_
+
+Whether regular expression has `unicode` flag.
+
+It's to be used as counterpart to [regExp.unicode](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-get-regexp.prototype.unicode) if it's not implemented.
+
+#### re.match(string) _(es5-ext/reg-exp/#/match)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.match).
+
+#### re.replace(string, replaceValue) _(es5-ext/reg-exp/#/replace)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.replace).
+
+#### re.search(string) _(es5-ext/reg-exp/#/search)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.search).
+
+#### re.split(string) _(es5-ext/reg-exp/#/search)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.split).
+
+#### re.sticky _(es5-ext/reg-exp/#/sticky/implement)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.sticky).
+It's a getter, so only `implement` and `is-implemented` modules are provided.
+
+#### re.unicode _(es5-ext/reg-exp/#/unicode/implement)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.unicode).
+It's a getter, so only `implement` and `is-implemented` modules are provided.
+
+### String Constructor extensions
+
+#### formatMethod(fMap) _(es5-ext/string/format-method)_
+
+Creates format method. It's used e.g. to create `Date.prototype.format` method
+
+#### fromCodePoint([…codePoints]) _(es5-ext/string/from-code-point)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.fromcodepoint)
+
+#### isString(x) _(es5-ext/string/is-string)_
+
+Whether object is string
+
+#### randomUniq() _(es5-ext/string/random-uniq)_
+
+Returns randomly generated id, with guarantee of local uniqueness (no same id will be returned twice)
+
+#### raw(callSite[, …substitutions]) _(es5-ext/string/raw)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.raw)
+
+### String Prototype extensions
+
+#### str.at(pos) _(es5-ext/string/#/at)_
+
+_Proposed for ECMAScript 6/7 standard, but not (yet) in a draft_
+
+Returns a string at given position in Unicode-safe manner.
+Based on [implementation by Mathias Bynens](https://github.com/mathiasbynens/String.prototype.at).
+
+#### str.camelToHyphen() _(es5-ext/string/#/camel-to-hyphen)_
+
+Convert camelCase string to hyphen separated, e.g. one-two-three -> oneTwoThree.
+Useful when converting names from js property convention into filename convention.
+
+#### str.capitalize() _(es5-ext/string/#/capitalize)_
+
+Capitalize first character of a string
+
+#### str.caseInsensitiveCompare(str) _(es5-ext/string/#/case-insensitive-compare)_
+
+Case insensitive compare
+
+#### str.codePointAt(pos) _(es5-ext/string/#/code-point-at)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.codepointat)
+
+Based on [implementation by Mathias Bynens](https://github.com/mathiasbynens/String.prototype.codePointAt).
+
+#### str.contains(searchString[, position]) _(es5-ext/string/#/contains)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.contains)
+
+Whether string contains given string.
+
+#### str.endsWith(searchString[, endPosition]) _(es5-ext/string/#/ends-with)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.endswith).
+Whether strings ends with given string
+
+#### str.hyphenToCamel() _(es5-ext/string/#/hyphen-to-camel)_
+
+Convert hyphen separated string to camelCase, e.g. one-two-three -> oneTwoThree.
+Useful when converting names from filename convention to js property name convention.
+
+#### str.indent(str[, count]) _(es5-ext/string/#/indent)_
+
+Indents each line with provided _str_ (if _count_ given then _str_ is repeated _count_ times).
+
+#### str.last() _(es5-ext/string/#/last)_
+
+Return last character
+
+#### str.normalize([form]) _(es5-ext/string/#/normalize)_
+
+[_Introduced with ECMAScript 6_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize).
+Returns the Unicode Normalization Form of a given string.
+Based on Matsuza's version. Code used for integrated shim can be found at [github.com/walling/unorm](https://github.com/walling/unorm/blob/master/lib/unorm.js)
+
+#### str.pad(fill[, length]) _(es5-ext/string/#/pad)_
+
+Pad string with _fill_.
+If _length_ si given than _fill_ is reapated _length_ times.
+If _length_ is negative then pad is applied from right.
+
+#### str.repeat(n) _(es5-ext/string/#/repeat)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.repeat).
+Repeat given string _n_ times
+
+#### str.plainReplace(search, replace) _(es5-ext/string/#/plain-replace)_
+
+Simple `replace` version. Doesn't support regular expressions. Replaces just first occurrence of search string. Doesn't support insert patterns, therefore it is safe to replace text with text obtained programmatically (there's no need for additional _$_ characters escape in such case).
+
+#### str.plainReplaceAll(search, replace) _(es5-ext/string/#/plain-replace-all)_
+
+Simple `replace` version. Doesn't support regular expressions. Replaces all occurrences of search string. Doesn't support insert patterns, therefore it is safe to replace text with text obtained programmatically (there's no need for additional _$_ characters escape in such case).
+
+#### str.startsWith(searchString[, position]) _(es5-ext/string/#/starts-with)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.startswith).
+Whether strings starts with given string
+
+#### str[@@iterator] _(es5-ext/string/#/@@iterator)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype-@@iterator).
+Returns iterator object which traverses all string characters (with respect to unicode symbols)
+
+### Tests
+
+ $ npm test
+
+[nix-build-image]: https://semaphoreci.com/api/v1/medikoo-org/es5-ext/branches/master/shields_badge.svg
+[nix-build-url]: https://semaphoreci.com/medikoo-org/es5-ext
+[win-build-image]: https://ci.appveyor.com/api/projects/status/3jox67ksw3p8hkwh?svg=true
+[win-build-url]: https://ci.appveyor.com/project/medikoo/es5-ext
+[transpilation-image]: https://img.shields.io/badge/transpilation-free-brightgreen.svg
+[npm-image]: https://img.shields.io/npm/v/es5-ext.svg
+[npm-url]: https://www.npmjs.com/package/es5-ext
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/@@iterator/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/@@iterator/implement.js
new file mode 100644
index 0000000000..8073f2bc6c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/@@iterator/implement.js
@@ -0,0 +1,10 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, require("es6-symbol").iterator, {
+ value: require("./shim"),
+ configurable: true,
+ enumerable: false,
+ writable: true
+ });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/@@iterator/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/@@iterator/index.js
new file mode 100644
index 0000000000..d937746549
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/@@iterator/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype[require("es6-symbol").iterator] : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/@@iterator/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/@@iterator/is-implemented.js
new file mode 100644
index 0000000000..6445c04ea0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/@@iterator/is-implemented.js
@@ -0,0 +1,16 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator;
+
+module.exports = function () {
+ var arr = ["foo", 1], iterator, result;
+ if (typeof arr[iteratorSymbol] !== "function") return false;
+ iterator = arr[iteratorSymbol]();
+ if (!iterator) return false;
+ if (typeof iterator.next !== "function") return false;
+ result = iterator.next();
+ if (!result) return false;
+ if (result.value !== "foo") return false;
+ if (result.done !== false) return false;
+ return true;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/@@iterator/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/@@iterator/shim.js
new file mode 100644
index 0000000000..307b1c0aa1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/@@iterator/shim.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("../values/shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/_compare-by-length.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/_compare-by-length.js
new file mode 100644
index 0000000000..f1c0cacc7c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/_compare-by-length.js
@@ -0,0 +1,9 @@
+// Used internally to sort array of lists by length
+
+"use strict";
+
+var toPosInt = require("../../number/to-pos-integer");
+
+module.exports = function (arr1, arr2) {
+ return toPosInt(arr1.length) - toPosInt(arr2.length);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/binary-search.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/binary-search.js
new file mode 100644
index 0000000000..9b2c42ec5f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/binary-search.js
@@ -0,0 +1,28 @@
+"use strict";
+
+var toPosInt = require("../../number/to-pos-integer")
+ , callable = require("../../object/valid-callable")
+ , value = require("../../object/valid-value")
+
+ , floor = Math.floor;
+
+module.exports = function (compareFn) {
+ var length, low, high, middle;
+
+ value(this);
+ callable(compareFn);
+
+ length = toPosInt(this.length);
+ low = 0;
+ high = length - 1;
+
+ while (low <= high) {
+ middle = floor((low + high) / 2);
+ if (compareFn(this[middle]) < 0) high = middle - 1;
+ else low = middle + 1;
+ }
+
+ if (high < 0) return 0;
+ if (high >= length) return length - 1;
+ return high;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/clear.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/clear.js
new file mode 100644
index 0000000000..fd539c9b7c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/clear.js
@@ -0,0 +1,12 @@
+// Inspired by Google Closure:
+// http://closure-library.googlecode.com/svn/docs/
+// closure_goog_array_array.js.html#goog.array.clear
+
+"use strict";
+
+var value = require("../../object/valid-value");
+
+module.exports = function () {
+ value(this).length = 0;
+ return this;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/compact.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/compact.js
new file mode 100644
index 0000000000..3da1309d34
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/compact.js
@@ -0,0 +1,13 @@
+// Inspired by: http://documentcloud.github.com/underscore/#compact
+
+"use strict";
+
+var isValue = require("../../object/is-value");
+
+var filter = Array.prototype.filter;
+
+module.exports = function () {
+ return filter.call(this, function (val) {
+ return isValue(val);
+ });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/concat/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/concat/implement.js
new file mode 100644
index 0000000000..a5a1a4090c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/concat/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "concat", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/concat/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/concat/index.js
new file mode 100644
index 0000000000..8bbb7bc191
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/concat/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.concat : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/concat/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/concat/is-implemented.js
new file mode 100644
index 0000000000..2a3a9fc60c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/concat/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var SubArray = require("../../_sub-array-dummy-safe");
+
+module.exports = function () {
+ return (new SubArray()).concat("foo") instanceof SubArray;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/concat/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/concat/shim.js
new file mode 100644
index 0000000000..5158dde523
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/concat/shim.js
@@ -0,0 +1,48 @@
+"use strict";
+
+var isPlainArray = require("../../is-plain-array")
+ , toPosInt = require("../../../number/to-pos-integer")
+ , isObject = require("../../../object/is-object")
+ , isConcatSpreadable = require("es6-symbol").isConcatSpreadable
+ , isArray = Array.isArray
+ , concat = Array.prototype.concat
+ , forEach = Array.prototype.forEach
+ , isSpreadable;
+
+isSpreadable = function (value) {
+ if (!value) return false;
+ if (!isObject(value)) return false;
+ if (value[isConcatSpreadable] !== undefined) {
+ return Boolean(value[isConcatSpreadable]);
+ }
+ return isArray(value);
+};
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (item /*, …items*/) {
+ var result;
+ if (!this || !isArray(this) || isPlainArray(this)) {
+ return concat.apply(this, arguments);
+ }
+ result = new this.constructor();
+ if (isSpreadable(this)) {
+ forEach.call(this, function (val, i) {
+ result[i] = val;
+ });
+ } else {
+ result[0] = this;
+ }
+ forEach.call(arguments, function (arg) {
+ var base;
+ if (isSpreadable(arg)) {
+ base = result.length;
+ result.length += toPosInt(arg.length);
+ forEach.call(arg, function (val, i) {
+ result[base + i] = val;
+ });
+ return;
+ }
+ result.push(arg);
+ });
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/contains.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/contains.js
new file mode 100644
index 0000000000..cde6850ece
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/contains.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var indexOf = require("./e-index-of");
+
+module.exports = function (searchElement/*, position*/) {
+ return indexOf.call(this, searchElement, arguments[1]) > -1;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/copy-within/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/copy-within/implement.js
new file mode 100644
index 0000000000..4658fcb4b2
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/copy-within/implement.js
@@ -0,0 +1,10 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "copyWithin", {
+ value: require("./shim"),
+ configurable: true,
+ enumerable: false,
+ writable: true
+ });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/copy-within/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/copy-within/index.js
new file mode 100644
index 0000000000..0919b79b94
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/copy-within/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.copyWithin : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/copy-within/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/copy-within/is-implemented.js
new file mode 100644
index 0000000000..40c499e6dd
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/copy-within/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var arr = [1, 2, 3, 4, 5];
+ if (typeof arr.copyWithin !== "function") return false;
+ return String(arr.copyWithin(1, 3)) === "1,4,5,4,5";
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/copy-within/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/copy-within/shim.js
new file mode 100644
index 0000000000..aad220ca70
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/copy-within/shim.js
@@ -0,0 +1,45 @@
+// Taken from: https://github.com/paulmillr/es6-shim/
+
+"use strict";
+
+var toInteger = require("../../../number/to-integer")
+ , toPosInt = require("../../../number/to-pos-integer")
+ , validValue = require("../../../object/valid-value")
+ , objHasOwnProperty = Object.prototype.hasOwnProperty
+ , max = Math.max
+ , min = Math.min;
+
+module.exports = function (target, start /*, end*/) {
+ var arr = validValue(this)
+ , end = arguments[2]
+ , length = toPosInt(arr.length)
+ , to
+ , from
+ , fin
+ , count
+ , direction;
+
+ target = toInteger(target);
+ start = toInteger(start);
+ end = end === undefined ? length : toInteger(end);
+
+ to = target < 0 ? max(length + target, 0) : min(target, length);
+ from = start < 0 ? max(length + start, 0) : min(start, length);
+ fin = end < 0 ? max(length + end, 0) : min(end, length);
+ count = min(fin - from, length - to);
+ direction = 1;
+
+ if (from < to && to < from + count) {
+ direction = -1;
+ from += count - 1;
+ to += count - 1;
+ }
+ while (count > 0) {
+ if (objHasOwnProperty.call(arr, from)) arr[to] = arr[from];
+ else delete arr[from];
+ from += direction;
+ to += direction;
+ count -= 1;
+ }
+ return arr;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/diff.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/diff.js
new file mode 100644
index 0000000000..fbb1682b70
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/diff.js
@@ -0,0 +1,13 @@
+"use strict";
+
+var value = require("../../object/valid-value")
+ , contains = require("./contains")
+ , filter = Array.prototype.filter;
+
+module.exports = function (other) {
+ value(this);
+ value(other);
+ return filter.call(this, function (item) {
+ return !contains.call(other, item);
+ });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/e-index-of.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/e-index-of.js
new file mode 100644
index 0000000000..8b0701177b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/e-index-of.js
@@ -0,0 +1,28 @@
+"use strict";
+
+var numberIsNaN = require("../../number/is-nan")
+ , toPosInt = require("../../number/to-pos-integer")
+ , value = require("../../object/valid-value")
+ , indexOf = Array.prototype.indexOf
+ , objHasOwnProperty = Object.prototype.hasOwnProperty
+ , abs = Math.abs
+ , floor = Math.floor;
+
+module.exports = function (searchElement /*, fromIndex*/) {
+ var i, length, fromIndex, val;
+ if (!numberIsNaN(searchElement)) return indexOf.apply(this, arguments);
+
+ length = toPosInt(value(this).length);
+ fromIndex = arguments[1];
+ if (isNaN(fromIndex)) fromIndex = 0;
+ else if (fromIndex >= 0) fromIndex = floor(fromIndex);
+ else fromIndex = toPosInt(this.length) - floor(abs(fromIndex));
+
+ for (i = fromIndex; i < length; ++i) {
+ if (objHasOwnProperty.call(this, i)) {
+ val = this[i];
+ if (numberIsNaN(val)) return i; // Jslint: ignore
+ }
+ }
+ return -1;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/e-last-index-of.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/e-last-index-of.js
new file mode 100644
index 0000000000..15dbe05b83
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/e-last-index-of.js
@@ -0,0 +1,31 @@
+"use strict";
+
+var numberIsNaN = require("../../number/is-nan")
+ , toPosInt = require("../../number/to-pos-integer")
+ , value = require("../../object/valid-value")
+ , lastIndexOf = Array.prototype.lastIndexOf
+ , objHasOwnProperty = Object.prototype.hasOwnProperty
+ , abs = Math.abs
+ , floor = Math.floor;
+
+module.exports = function (searchElement /*, fromIndex*/) {
+ var i, fromIndex, val;
+ if (!numberIsNaN(searchElement)) {
+ // Jslint: ignore
+ return lastIndexOf.apply(this, arguments);
+ }
+
+ value(this);
+ fromIndex = arguments[1];
+ if (isNaN(fromIndex)) fromIndex = toPosInt(this.length) - 1;
+ else if (fromIndex >= 0) fromIndex = floor(fromIndex);
+ else fromIndex = toPosInt(this.length) - floor(abs(fromIndex));
+
+ for (i = fromIndex; i >= 0; --i) {
+ if (objHasOwnProperty.call(this, i)) {
+ val = this[i];
+ if (numberIsNaN(val)) return i; // Jslint: ignore
+ }
+ }
+ return -1;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/entries/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/entries/implement.js
new file mode 100644
index 0000000000..acc8a111cb
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/entries/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "entries", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/entries/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/entries/index.js
new file mode 100644
index 0000000000..f18f7d921b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/entries/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.entries : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/entries/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/entries/is-implemented.js
new file mode 100644
index 0000000000..335f1c2097
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/entries/is-implemented.js
@@ -0,0 +1,15 @@
+"use strict";
+
+module.exports = function () {
+ var arr = [1, "foo"], iterator, result;
+ if (typeof arr.entries !== "function") return false;
+ iterator = arr.entries();
+ if (!iterator) return false;
+ if (typeof iterator.next !== "function") return false;
+ result = iterator.next();
+ if (!result || !result.value) return false;
+ if (result.value[0] !== 0) return false;
+ if (result.value[1] !== 1) return false;
+ if (result.done !== false) return false;
+ return true;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/entries/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/entries/shim.js
new file mode 100644
index 0000000000..caa45b7a2a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/entries/shim.js
@@ -0,0 +1,6 @@
+"use strict";
+
+var ArrayIterator = require("es6-iterator/array");
+module.exports = function () {
+ return new ArrayIterator(this, "key+value");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/exclusion.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/exclusion.js
new file mode 100644
index 0000000000..41057d06ff
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/exclusion.js
@@ -0,0 +1,31 @@
+"use strict";
+
+var value = require("../../object/valid-value")
+ , aFrom = require("../from")
+ , toArray = require("../to-array")
+ , contains = require("./contains")
+ , byLength = require("./_compare-by-length")
+ , filter = Array.prototype.filter
+ , push = Array.prototype.push;
+
+module.exports = function (/* …lists*/) {
+ var lists, seen, result;
+ if (!arguments.length) return aFrom(this);
+ push.apply(lists = [this], arguments);
+ lists.forEach(value);
+ seen = [];
+ result = [];
+ lists.sort(byLength).forEach(function (list) {
+ result = result
+ .filter(function (item) {
+ return !contains.call(list, item);
+ })
+ .concat(
+ filter.call(list, function (item) {
+ return !contains.call(seen, item);
+ })
+ );
+ push.apply(seen, toArray(list));
+ });
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/fill/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/fill/implement.js
new file mode 100644
index 0000000000..9de58b75f3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/fill/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "fill", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/fill/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/fill/index.js
new file mode 100644
index 0000000000..a8272475d0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/fill/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.fill : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/fill/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/fill/is-implemented.js
new file mode 100644
index 0000000000..5d6d02e1a5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/fill/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var arr = [1, 2, 3, 4, 5, 6];
+ if (typeof arr.fill !== "function") return false;
+ return String(arr.fill(-1, -3)) === "1,2,3,-1,-1,-1";
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/fill/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/fill/shim.js
new file mode 100644
index 0000000000..0040bf81a9
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/fill/shim.js
@@ -0,0 +1,25 @@
+// Taken from: https://github.com/paulmillr/es6-shim/
+
+"use strict";
+
+var toInteger = require("../../../number/to-integer")
+ , toPosInt = require("../../../number/to-pos-integer")
+ , validValue = require("../../../object/valid-value")
+ , max = Math.max
+ , min = Math.min;
+
+module.exports = function (value /*, start, end*/) {
+ var arr = validValue(this)
+ , start = arguments[1]
+ , end = arguments[2]
+ , length = toPosInt(arr.length)
+ , relativeStart
+ , i;
+
+ start = start === undefined ? 0 : toInteger(start);
+ end = end === undefined ? length : toInteger(end);
+
+ relativeStart = start < 0 ? max(length + start, 0) : min(start, length);
+ for (i = relativeStart; i < length && i < end; ++i) arr[i] = value;
+ return arr;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/filter/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/filter/implement.js
new file mode 100644
index 0000000000..450257515b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/filter/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "filter", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/filter/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/filter/index.js
new file mode 100644
index 0000000000..ad2082d938
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/filter/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.filter : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/filter/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/filter/is-implemented.js
new file mode 100644
index 0000000000..06de099605
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/filter/is-implemented.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var SubArray = require("../../_sub-array-dummy-safe")
+
+ , pass = function () {
+ return true;
+};
+
+module.exports = function () {
+ return (new SubArray()).filter(pass) instanceof SubArray;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/filter/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/filter/shim.js
new file mode 100644
index 0000000000..38304e4b87
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/filter/shim.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var isPlainArray = require("../../is-plain-array")
+ , callable = require("../../../object/valid-callable")
+ , isArray = Array.isArray
+ , filter = Array.prototype.filter
+ , forEach = Array.prototype.forEach
+ , call = Function.prototype.call;
+
+module.exports = function (callbackFn /*, thisArg*/) {
+ var result, thisArg, i;
+ if (!this || !isArray(this) || isPlainArray(this)) {
+ return filter.apply(this, arguments);
+ }
+ callable(callbackFn);
+ thisArg = arguments[1];
+ result = new this.constructor();
+ i = 0;
+ forEach.call(this, function (val, j, self) {
+ if (call.call(callbackFn, thisArg, val, j, self)) result[i++] = val;
+ });
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find-index/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find-index/implement.js
new file mode 100644
index 0000000000..4876b9e4e7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find-index/implement.js
@@ -0,0 +1,9 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "findIndex",
+ { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find-index/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find-index/index.js
new file mode 100644
index 0000000000..3d505b1f5a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find-index/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.findIndex : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find-index/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find-index/is-implemented.js
new file mode 100644
index 0000000000..818c920e44
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find-index/is-implemented.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var fn = function (value) {
+ return value > 3;
+};
+
+module.exports = function () {
+ var arr = [1, 2, 3, 4, 5, 6];
+ if (typeof arr.findIndex !== "function") return false;
+ return arr.findIndex(fn) === 3;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find-index/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find-index/shim.js
new file mode 100644
index 0000000000..bc82827ad9
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find-index/shim.js
@@ -0,0 +1,26 @@
+"use strict";
+
+var callable = require("../../../object/valid-callable")
+ , ensureValue = require("../../../object/valid-value")
+ , some = Array.prototype.some
+ , apply = Function.prototype.apply;
+
+module.exports = function (predicate /*, thisArg*/) {
+ var k, self;
+ self = Object(ensureValue(this));
+ callable(predicate);
+
+ return some.call(
+ self,
+ function (value, index) {
+ if (apply.call(predicate, this, arguments)) {
+ k = index;
+ return true;
+ }
+ return false;
+ },
+ arguments[1]
+ )
+ ? k
+ : -1;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find/implement.js
new file mode 100644
index 0000000000..d8ebc5b81a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "find", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find/index.js
new file mode 100644
index 0000000000..131a71be40
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.find : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find/is-implemented.js
new file mode 100644
index 0000000000..aa278a7b5d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find/is-implemented.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var fn = function (value) {
+ return value > 3;
+};
+
+module.exports = function () {
+ var arr = [1, 2, 3, 4, 5, 6];
+ if (typeof arr.find !== "function") return false;
+ return arr.find(fn) === 4;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find/shim.js
new file mode 100644
index 0000000000..c45a938057
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/find/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var findIndex = require("../find-index/shim");
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (predicate /*, thisArg*/) {
+ var index = findIndex.apply(this, arguments);
+ return index === -1 ? undefined : this[index];
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/first-index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/first-index.js
new file mode 100644
index 0000000000..19bff54194
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/first-index.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var toPosInt = require("../../number/to-pos-integer")
+ , value = require("../../object/valid-value")
+ , objHasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function () {
+ var i, length;
+ if (!(length = toPosInt(value(this).length))) return null;
+ i = 0;
+ while (!objHasOwnProperty.call(this, i)) {
+ if (++i === length) return null;
+ }
+ return i;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/first.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/first.js
new file mode 100644
index 0000000000..ca76833b1c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/first.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var firstIndex = require("./first-index");
+
+module.exports = function () {
+ var i;
+ if ((i = firstIndex.call(this)) !== null) return this[i];
+ return undefined;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/flatten.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/flatten.js
new file mode 100644
index 0000000000..40167274ec
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/flatten.js
@@ -0,0 +1,40 @@
+// Stack grow safe implementation
+
+"use strict";
+
+var ensureValue = require("../../object/valid-value")
+ , isArray = Array.isArray
+ , objHasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function () {
+ var input = ensureValue(this), index = 0, remaining, remainingIndexes, length, i, result = [];
+ // Jslint: ignore
+ main: while (input) {
+ length = input.length;
+ for (i = index; i < length; ++i) {
+ if (!objHasOwnProperty.call(input, i)) continue;
+ if (isArray(input[i])) {
+ if (i < length - 1) {
+ // eslint-disable-next-line max-depth
+ if (!remaining) {
+ remaining = [];
+ remainingIndexes = [];
+ }
+ remaining.push(input);
+ remainingIndexes.push(i + 1);
+ }
+ input = input[i];
+ index = 0;
+ continue main;
+ }
+ result.push(input[i]);
+ }
+ if (remaining) {
+ input = remaining.pop();
+ index = remainingIndexes.pop();
+ } else {
+ input = null;
+ }
+ }
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/for-each-right.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/for-each-right.js
new file mode 100644
index 0000000000..ebf076b17b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/for-each-right.js
@@ -0,0 +1,19 @@
+"use strict";
+
+var toPosInt = require("../../number/to-pos-integer")
+ , callable = require("../../object/valid-callable")
+ , value = require("../../object/valid-value")
+ , objHasOwnProperty = Object.prototype.hasOwnProperty
+ , call = Function.prototype.call;
+
+module.exports = function (cb /*, thisArg*/) {
+ var i, self, thisArg;
+
+ self = Object(value(this));
+ callable(cb);
+ thisArg = arguments[1];
+
+ for (i = toPosInt(self.length) - 1; i >= 0; --i) {
+ if (objHasOwnProperty.call(self, i)) call.call(cb, thisArg, self[i], i, self);
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/group.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/group.js
new file mode 100644
index 0000000000..711eb586a6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/group.js
@@ -0,0 +1,28 @@
+// Inspired by Underscore's groupBy:
+// http://documentcloud.github.com/underscore/#groupBy
+
+"use strict";
+
+var callable = require("../../object/valid-callable")
+ , value = require("../../object/valid-value")
+ , forEach = Array.prototype.forEach
+ , apply = Function.prototype.apply;
+
+module.exports = function (cb /*, thisArg*/) {
+ var result;
+
+ value(this);
+ callable(cb);
+
+ result = Object.create(null);
+ forEach.call(
+ this,
+ function (item) {
+ var key = apply.call(cb, this, arguments);
+ if (!result[key]) result[key] = [];
+ result[key].push(item);
+ },
+ arguments[1]
+ );
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/index.js
new file mode 100644
index 0000000000..596e83b5e4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/index.js
@@ -0,0 +1,41 @@
+"use strict";
+
+module.exports = {
+ "@@iterator": require("./@@iterator"),
+ "binarySearch": require("./binary-search"),
+ "clear": require("./clear"),
+ "compact": require("./compact"),
+ "concat": require("./concat"),
+ "contains": require("./contains"),
+ "copyWithin": require("./copy-within"),
+ "diff": require("./diff"),
+ "eIndexOf": require("./e-index-of"),
+ "eLastIndexOf": require("./e-last-index-of"),
+ "entries": require("./entries"),
+ "exclusion": require("./exclusion"),
+ "fill": require("./fill"),
+ "filter": require("./filter"),
+ "find": require("./find"),
+ "findIndex": require("./find-index"),
+ "first": require("./first"),
+ "firstIndex": require("./first-index"),
+ "flatten": require("./flatten"),
+ "forEachRight": require("./for-each-right"),
+ "keys": require("./keys"),
+ "group": require("./group"),
+ "indexesOf": require("./indexes-of"),
+ "intersection": require("./intersection"),
+ "isCopy": require("./is-copy"),
+ "isEmpty": require("./is-empty"),
+ "isUniq": require("./is-uniq"),
+ "last": require("./last"),
+ "lastIndex": require("./last-index"),
+ "map": require("./map"),
+ "remove": require("./remove"),
+ "separate": require("./separate"),
+ "slice": require("./slice"),
+ "someRight": require("./some-right"),
+ "splice": require("./splice"),
+ "uniq": require("./uniq"),
+ "values": require("./values")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/indexes-of.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/indexes-of.js
new file mode 100644
index 0000000000..6c39cd924f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/indexes-of.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var indexOf = require("./e-index-of");
+
+module.exports = function (value /*, fromIndex*/) {
+ var result = [], i, fromIndex = arguments[1];
+ while ((i = indexOf.call(this, value, fromIndex)) !== -1) {
+ result.push(i);
+ fromIndex = i + 1;
+ }
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/intersection.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/intersection.js
new file mode 100644
index 0000000000..91261d5f89
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/intersection.js
@@ -0,0 +1,21 @@
+"use strict";
+
+var value = require("../../object/valid-value")
+ , contains = require("./contains")
+ , byLength = require("./_compare-by-length")
+ , filter = Array.prototype.filter
+ , push = Array.prototype.push
+ , slice = Array.prototype.slice;
+
+module.exports = function (/* …list*/) {
+ var lists;
+ if (!arguments.length) slice.call(this);
+ push.apply(lists = [this], arguments);
+ lists.forEach(value);
+ lists.sort(byLength);
+ return lists.reduce(function (list1, list2) {
+ return filter.call(list1, function (item) {
+ return contains.call(list2, item);
+ });
+ });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/is-copy.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/is-copy.js
new file mode 100644
index 0000000000..1413b95df5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/is-copy.js
@@ -0,0 +1,21 @@
+"use strict";
+
+var toPosInt = require("../../number/to-pos-integer")
+ , eq = require("../../object/eq")
+ , value = require("../../object/valid-value")
+ , objHasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function (other) {
+ var i, length;
+ value(this);
+ value(other);
+ length = toPosInt(this.length);
+ if (length !== toPosInt(other.length)) return false;
+ for (i = 0; i < length; ++i) {
+ if (objHasOwnProperty.call(this, i) !== objHasOwnProperty.call(other, i)) {
+ return false;
+ }
+ if (!eq(this[i], other[i])) return false;
+ }
+ return true;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/is-empty.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/is-empty.js
new file mode 100644
index 0000000000..80a3069552
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/is-empty.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var ensureArray = require("../../object/ensure-array")
+ , firstIndex = require("./first-index");
+
+module.exports = function () {
+ return firstIndex.call(ensureArray(this)) === null;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/is-uniq.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/is-uniq.js
new file mode 100644
index 0000000000..148a5a918b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/is-uniq.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var indexOf = require("./e-index-of")
+
+ , every = Array.prototype.every
+ , isFirst;
+
+isFirst = function (value, index) {
+ return indexOf.call(this, value) === index;
+};
+
+module.exports = function () {
+ return every.call(this, isFirst, this);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/keys/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/keys/implement.js
new file mode 100644
index 0000000000..40d0df0118
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/keys/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "keys", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/keys/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/keys/index.js
new file mode 100644
index 0000000000..50a18f1976
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/keys/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.keys : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/keys/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/keys/is-implemented.js
new file mode 100644
index 0000000000..70a171f67f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/keys/is-implemented.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function () {
+ var arr = [1, "foo"], iterator, result;
+ if (typeof arr.keys !== "function") return false;
+ iterator = arr.keys();
+ if (!iterator) return false;
+ if (typeof iterator.next !== "function") return false;
+ result = iterator.next();
+ if (!result) return false;
+ if (result.value !== 0) return false;
+ if (result.done !== false) return false;
+ return true;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/keys/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/keys/shim.js
new file mode 100644
index 0000000000..c3c68c6d42
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/keys/shim.js
@@ -0,0 +1,6 @@
+"use strict";
+
+var ArrayIterator = require("es6-iterator/array");
+module.exports = function () {
+ return new ArrayIterator(this, "key");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/last-index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/last-index.js
new file mode 100644
index 0000000000..74aaba46c4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/last-index.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var toPosInt = require("../../number/to-pos-integer")
+ , value = require("../../object/valid-value")
+ , objHasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function () {
+ var i, length;
+ if (!(length = toPosInt(value(this).length))) return null;
+ i = length - 1;
+ while (!objHasOwnProperty.call(this, i)) {
+ if (--i === -1) return null;
+ }
+ return i;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/last.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/last.js
new file mode 100644
index 0000000000..38bb359b38
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/last.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var lastIndex = require("./last-index");
+
+module.exports = function () {
+ var i;
+ if ((i = lastIndex.call(this)) !== null) return this[i];
+ return undefined;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/map/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/map/implement.js
new file mode 100644
index 0000000000..a6d1d9001c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/map/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "map", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/map/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/map/index.js
new file mode 100644
index 0000000000..101c0649ee
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/map/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.map : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/map/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/map/is-implemented.js
new file mode 100644
index 0000000000..24ab9084fc
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/map/is-implemented.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var identity = require("../../../function/identity")
+ , SubArray = require("../../_sub-array-dummy-safe");
+
+module.exports = function () {
+ return (new SubArray()).map(identity) instanceof SubArray;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/map/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/map/shim.js
new file mode 100644
index 0000000000..6d8cc1fb63
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/map/shim.js
@@ -0,0 +1,21 @@
+"use strict";
+
+var isPlainArray = require("../../is-plain-array")
+ , callable = require("../../../object/valid-callable")
+
+ , isArray = Array.isArray, map = Array.prototype.map
+ , forEach = Array.prototype.forEach, call = Function.prototype.call;
+
+module.exports = function (callbackFn/*, thisArg*/) {
+ var result, thisArg;
+ if (!this || !isArray(this) || isPlainArray(this)) {
+ return map.apply(this, arguments);
+ }
+ callable(callbackFn);
+ thisArg = arguments[1];
+ result = new this.constructor(this.length);
+ forEach.call(this, function (val, i, self) {
+ result[i] = call.call(callbackFn, thisArg, val, i, self);
+ });
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/remove.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/remove.js
new file mode 100644
index 0000000000..6a8a08676d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/remove.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var indexOf = require("./e-index-of")
+ , forEach = Array.prototype.forEach
+ , splice = Array.prototype.splice;
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (itemToRemove /*, …item*/) {
+ forEach.call(
+ arguments,
+ function (item) {
+ var index = indexOf.call(this, item);
+ if (index !== -1) splice.call(this, index, 1);
+ },
+ this
+ );
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/separate.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/separate.js
new file mode 100644
index 0000000000..35e1cc5ac4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/separate.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var forEach = Array.prototype.forEach;
+
+module.exports = function (sep) {
+ var result = [];
+ forEach.call(this, function (val) {
+ result.push(val, sep);
+ });
+ result.pop();
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/slice/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/slice/implement.js
new file mode 100644
index 0000000000..568e87a1dc
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/slice/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "slice", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/slice/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/slice/index.js
new file mode 100644
index 0000000000..c80ee35954
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/slice/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.slice : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/slice/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/slice/is-implemented.js
new file mode 100644
index 0000000000..47904c2099
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/slice/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var SubArray = require("../../_sub-array-dummy-safe");
+
+module.exports = function () {
+ return (new SubArray()).slice() instanceof SubArray;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/slice/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/slice/shim.js
new file mode 100644
index 0000000000..ff13085b3b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/slice/shim.js
@@ -0,0 +1,36 @@
+"use strict";
+
+var toInteger = require("../../../number/to-integer")
+ , toPosInt = require("../../../number/to-pos-integer")
+ , isPlainArray = require("../../is-plain-array")
+ , isArray = Array.isArray
+ , slice = Array.prototype.slice
+ , objHasOwnProperty = Object.prototype.hasOwnProperty
+ , max = Math.max;
+
+module.exports = function (start, end) {
+ var length, result, i;
+ if (!this || !isArray(this) || isPlainArray(this)) {
+ return slice.apply(this, arguments);
+ }
+ length = toPosInt(this.length);
+ start = toInteger(start);
+ if (start < 0) start = max(length + start, 0);
+ else if (start > length) start = length;
+ if (end === undefined) {
+ end = length;
+ } else {
+ end = toInteger(end);
+ if (end < 0) end = max(length + end, 0);
+ else if (end > length) end = length;
+ }
+ if (start > end) start = end;
+ result = new this.constructor(end - start);
+ i = 0;
+ while (start !== end) {
+ if (objHasOwnProperty.call(this, start)) result[i] = this[start];
+ ++i;
+ ++start;
+ }
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/some-right.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/some-right.js
new file mode 100644
index 0000000000..d9a665fc28
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/some-right.js
@@ -0,0 +1,21 @@
+"use strict";
+
+var toPosInt = require("../../number/to-pos-integer")
+ , callable = require("../../object/valid-callable")
+ , value = require("../../object/valid-value")
+ , objHasOwnProperty = Object.prototype.hasOwnProperty
+ , call = Function.prototype.call;
+
+module.exports = function (cb /*, thisArg*/) {
+ var i, self, thisArg;
+ self = Object(value(this));
+ callable(cb);
+ thisArg = arguments[1];
+
+ for (i = toPosInt(self.length) - 1; i >= 0; --i) {
+ if (objHasOwnProperty.call(self, i) && call.call(cb, thisArg, self[i], i, self)) {
+ return true;
+ }
+ }
+ return false;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/splice/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/splice/implement.js
new file mode 100644
index 0000000000..1e1682b0cd
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/splice/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "splice", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/splice/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/splice/index.js
new file mode 100644
index 0000000000..e5fda9512b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/splice/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.prototype.splice : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/splice/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/splice/is-implemented.js
new file mode 100644
index 0000000000..afbb95a6df
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/splice/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var SubArray = require("../../_sub-array-dummy-safe");
+
+module.exports = function () {
+ return (new SubArray()).splice(0) instanceof SubArray;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/splice/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/splice/shim.js
new file mode 100644
index 0000000000..dc8d837b83
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/splice/shim.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var isPlainArray = require("../../is-plain-array")
+ , isArray = Array.isArray
+ , splice = Array.prototype.splice
+ , forEach = Array.prototype.forEach;
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (start, deleteCount /*, …items*/) {
+ var arr = splice.apply(this, arguments), result;
+ if (!this || !isArray(this) || isPlainArray(this)) return arr;
+ result = new this.constructor(arr.length);
+ forEach.call(arr, function (val, i) {
+ result[i] = val;
+ });
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/uniq.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/uniq.js
new file mode 100644
index 0000000000..944ce9334c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/uniq.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var indexOf = require("./e-index-of")
+
+ , filter = Array.prototype.filter
+
+ , isFirst;
+
+isFirst = function (value, index) {
+ return indexOf.call(this, value) === index;
+};
+
+module.exports = function () {
+ return filter.call(this, isFirst, this);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/values/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/values/implement.js
new file mode 100644
index 0000000000..b43e9f646e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/values/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array.prototype, "values", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/values/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/values/index.js
new file mode 100644
index 0000000000..30a50bae7e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/values/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./is-implemented")() ? Array.prototype.values : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/values/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/values/is-implemented.js
new file mode 100644
index 0000000000..8b72568a16
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/values/is-implemented.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function () {
+ var arr = ["foo", 1], iterator, result;
+ if (typeof arr.values !== "function") return false;
+ iterator = arr.values();
+ if (!iterator) return false;
+ if (typeof iterator.next !== "function") return false;
+ result = iterator.next();
+ if (!result) return false;
+ if (result.value !== "foo") return false;
+ if (result.done !== false) return false;
+ return true;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/#/values/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/values/shim.js
new file mode 100644
index 0000000000..e46a052612
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/#/values/shim.js
@@ -0,0 +1,6 @@
+"use strict";
+
+var ArrayIterator = require("es6-iterator/array");
+module.exports = function () {
+ return new ArrayIterator(this, "value");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/_is-extensible.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/_is-extensible.js
new file mode 100644
index 0000000000..a9e8ee7941
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/_is-extensible.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = (function () {
+ var SubArray = require("./_sub-array-dummy"), arr;
+
+ if (!SubArray) return false;
+ arr = new SubArray();
+ if (!Array.isArray(arr)) return false;
+ if (!(arr instanceof SubArray)) return false;
+
+ arr[34] = "foo";
+ return arr.length === 35;
+}());
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/_sub-array-dummy-safe.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/_sub-array-dummy-safe.js
new file mode 100644
index 0000000000..80e3b3c58b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/_sub-array-dummy-safe.js
@@ -0,0 +1,25 @@
+"use strict";
+
+var setPrototypeOf = require("../object/set-prototype-of")
+ , isExtensible = require("./_is-extensible");
+
+module.exports = (function () {
+ var SubArray;
+
+ if (isExtensible) return require("./_sub-array-dummy");
+
+ if (!setPrototypeOf) return null;
+ SubArray = function () {
+ var arr = Array.apply(this, arguments);
+ setPrototypeOf(arr, SubArray.prototype);
+ return arr;
+ };
+ setPrototypeOf(SubArray, Array);
+ SubArray.prototype = Object.create(Array.prototype, {
+ constructor: { value: SubArray,
+enumerable: false,
+writable: true,
+ configurable: true }
+ });
+ return SubArray;
+}());
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/_sub-array-dummy.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/_sub-array-dummy.js
new file mode 100644
index 0000000000..cf11152224
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/_sub-array-dummy.js
@@ -0,0 +1,20 @@
+"use strict";
+
+var setPrototypeOf = require("../object/set-prototype-of");
+
+module.exports = (function () {
+ var SubArray;
+
+ if (!setPrototypeOf) return null;
+ SubArray = function () {
+ Array.apply(this, arguments);
+};
+ setPrototypeOf(SubArray, Array);
+ SubArray.prototype = Object.create(Array.prototype, {
+ constructor: { value: SubArray,
+enumerable: false,
+writable: true,
+ configurable: true }
+ });
+ return SubArray;
+}());
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/from/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/from/implement.js
new file mode 100644
index 0000000000..41172242e4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/from/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array, "from", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/from/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/from/index.js
new file mode 100644
index 0000000000..ca4492d118
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/from/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.from
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/from/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/from/is-implemented.js
new file mode 100644
index 0000000000..3567c8766d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/from/is-implemented.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function () {
+ var from = Array.from, arr, result;
+ if (typeof from !== "function") return false;
+ arr = ["raz", "dwa"];
+ result = from(arr);
+ return Boolean(result && (result !== arr) && (result[1] === "dwa"));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/from/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/from/shim.js
new file mode 100644
index 0000000000..8928181ef7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/from/shim.js
@@ -0,0 +1,119 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator
+ , isArguments = require("../../function/is-arguments")
+ , isFunction = require("../../function/is-function")
+ , toPosInt = require("../../number/to-pos-integer")
+ , callable = require("../../object/valid-callable")
+ , validValue = require("../../object/valid-value")
+ , isValue = require("../../object/is-value")
+ , isString = require("../../string/is-string")
+ , isArray = Array.isArray
+ , call = Function.prototype.call
+ , desc = { configurable: true, enumerable: true, writable: true, value: null }
+ , defineProperty = Object.defineProperty;
+
+// eslint-disable-next-line complexity
+module.exports = function (arrayLike /*, mapFn, thisArg*/) {
+ var mapFn = arguments[1]
+ , thisArg = arguments[2]
+ , Context
+ , i
+ , j
+ , arr
+ , length
+ , code
+ , iterator
+ , result
+ , getIterator
+ , value;
+
+ arrayLike = Object(validValue(arrayLike));
+
+ if (isValue(mapFn)) callable(mapFn);
+ if (!this || this === Array || !isFunction(this)) {
+ // Result: Plain array
+ if (!mapFn) {
+ if (isArguments(arrayLike)) {
+ // Source: Arguments
+ length = arrayLike.length;
+ if (length !== 1) return Array.apply(null, arrayLike);
+ arr = new Array(1);
+ arr[0] = arrayLike[0];
+ return arr;
+ }
+ if (isArray(arrayLike)) {
+ // Source: Array
+ arr = new Array(length = arrayLike.length);
+ for (i = 0; i < length; ++i) arr[i] = arrayLike[i];
+ return arr;
+ }
+ }
+ arr = [];
+ } else {
+ // Result: Non plain array
+ Context = this;
+ }
+
+ if (!isArray(arrayLike)) {
+ if ((getIterator = arrayLike[iteratorSymbol]) !== undefined) {
+ // Source: Iterator
+ iterator = callable(getIterator).call(arrayLike);
+ if (Context) arr = new Context();
+ result = iterator.next();
+ i = 0;
+ while (!result.done) {
+ value = mapFn ? call.call(mapFn, thisArg, result.value, i) : result.value;
+ if (Context) {
+ desc.value = value;
+ defineProperty(arr, i, desc);
+ } else {
+ arr[i] = value;
+ }
+ result = iterator.next();
+ ++i;
+ }
+ length = i;
+ } else if (isString(arrayLike)) {
+ // Source: String
+ length = arrayLike.length;
+ if (Context) arr = new Context();
+ for (i = 0, j = 0; i < length; ++i) {
+ value = arrayLike[i];
+ if (i + 1 < length) {
+ code = value.charCodeAt(0);
+ // eslint-disable-next-line max-depth
+ if (code >= 0xd800 && code <= 0xdbff) value += arrayLike[++i];
+ }
+ value = mapFn ? call.call(mapFn, thisArg, value, j) : value;
+ if (Context) {
+ desc.value = value;
+ defineProperty(arr, j, desc);
+ } else {
+ arr[j] = value;
+ }
+ ++j;
+ }
+ length = j;
+ }
+ }
+ if (length === undefined) {
+ // Source: array or array-like
+ length = toPosInt(arrayLike.length);
+ if (Context) arr = new Context(length);
+ for (i = 0; i < length; ++i) {
+ value = mapFn ? call.call(mapFn, thisArg, arrayLike[i], i) : arrayLike[i];
+ if (Context) {
+ desc.value = value;
+ defineProperty(arr, i, desc);
+ } else {
+ arr[i] = value;
+ }
+ }
+ }
+ if (Context) {
+ desc.value = null;
+ arr.length = length;
+ }
+ return arr;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/generate.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/generate.js
new file mode 100644
index 0000000000..42b693035a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/generate.js
@@ -0,0 +1,18 @@
+"use strict";
+
+var toPosInt = require("../number/to-pos-integer")
+ , value = require("../object/valid-value")
+ , slice = Array.prototype.slice;
+
+module.exports = function (length /*, …fill*/) {
+ var arr, currentLength;
+ length = toPosInt(value(length));
+ if (length === 0) return [];
+
+ arr = arguments.length < 2 ? [undefined] : slice.call(arguments, 1, 1 + length);
+
+ while ((currentLength = arr.length) < length) {
+ arr = arr.concat(arr.slice(0, length - currentLength));
+ }
+ return arr;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/index.js
new file mode 100644
index 0000000000..49ff58ee4f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/index.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = {
+ "#": require("./#"),
+ "from": require("./from"),
+ "generate": require("./generate"),
+ "isPlainArray": require("./is-plain-array"),
+ "of": require("./of"),
+ "toArray": require("./to-array"),
+ "validArray": require("./valid-array")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/is-plain-array.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/is-plain-array.js
new file mode 100644
index 0000000000..ca3d25bb9b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/is-plain-array.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var isArray = Array.isArray, getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (obj) {
+ var proto;
+ if (!obj || !isArray(obj)) return false;
+ proto = getPrototypeOf(obj);
+ if (!isArray(proto)) return false;
+ return !isArray(getPrototypeOf(proto));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/of/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/of/implement.js
new file mode 100644
index 0000000000..92f8f3e306
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/of/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Array, "of", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/of/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/of/index.js
new file mode 100644
index 0000000000..43ab3f6275
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/of/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Array.of
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/of/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/of/is-implemented.js
new file mode 100644
index 0000000000..20b80c2075
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/of/is-implemented.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = function () {
+ var of = Array.of, result;
+ if (typeof of !== "function") return false;
+ result = of("foo", "bar");
+ return Boolean(result && (result[1] === "bar"));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/of/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/of/shim.js
new file mode 100644
index 0000000000..6cc9c38334
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/of/shim.js
@@ -0,0 +1,19 @@
+"use strict";
+
+var isFunction = require("../../function/is-function")
+ , slice = Array.prototype.slice
+ , defineProperty = Object.defineProperty
+ , desc = { configurable: true, enumerable: true, writable: true, value: null };
+
+module.exports = function (/* …items*/) {
+ var result, i, length;
+ if (!this || this === Array || !isFunction(this)) return slice.call(arguments);
+ result = new this(length = arguments.length);
+ for (i = 0; i < length; ++i) {
+ desc.value = arguments[i];
+ defineProperty(result, i, desc);
+ }
+ desc.value = null;
+ result.length = length;
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/to-array.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/to-array.js
new file mode 100644
index 0000000000..2078b7a3a7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/to-array.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var from = require("./from")
+
+ , isArray = Array.isArray;
+
+module.exports = function (arrayLike) {
+ return isArray(arrayLike) ? arrayLike : from(arrayLike);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/array/valid-array.js b/kbase-extension/static/ext_packages/igv/es5-ext/array/valid-array.js
new file mode 100644
index 0000000000..1e58c39a3f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/array/valid-array.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isArray = Array.isArray;
+
+module.exports = function (value) {
+ if (isArray(value)) return value;
+ throw new TypeError(value + " is not an array");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/boolean/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/boolean/index.js
new file mode 100644
index 0000000000..ffd3fd253b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/boolean/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = {
+ isBoolean: require("./is-boolean")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/boolean/is-boolean.js b/kbase-extension/static/ext_packages/igv/es5-ext/boolean/is-boolean.js
new file mode 100644
index 0000000000..394845f6cf
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/boolean/is-boolean.js
@@ -0,0 +1,10 @@
+"use strict";
+
+var objToString = Object.prototype.toString, id = objToString.call(true);
+
+module.exports = function (value) {
+ return (
+ typeof value === "boolean" ||
+ (typeof value === "object" && (value instanceof Boolean || objToString.call(value) === id))
+ );
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/date/#/copy.js b/kbase-extension/static/ext_packages/igv/es5-ext/date/#/copy.js
new file mode 100644
index 0000000000..9638a6539d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/date/#/copy.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var getTime = Date.prototype.getTime;
+
+module.exports = function () {
+ return new Date(getTime.call(this));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/date/#/days-in-month.js b/kbase-extension/static/ext_packages/igv/es5-ext/date/#/days-in-month.js
new file mode 100644
index 0000000000..8e8ca4d4fe
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/date/#/days-in-month.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var getMonth = Date.prototype.getMonth;
+
+module.exports = function () {
+ switch (getMonth.call(this)) {
+ case 1:
+ return this.getFullYear() % 4 ? 28 : 29;
+ case 3:
+ case 5:
+ case 8:
+ case 10:
+ return 30;
+ default:
+ return 31;
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/date/#/floor-day.js b/kbase-extension/static/ext_packages/igv/es5-ext/date/#/floor-day.js
new file mode 100644
index 0000000000..db696d38e7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/date/#/floor-day.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var setHours = Date.prototype.setHours;
+
+module.exports = function () {
+ setHours.call(this, 0, 0, 0, 0);
+ return this;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/date/#/floor-month.js b/kbase-extension/static/ext_packages/igv/es5-ext/date/#/floor-month.js
new file mode 100644
index 0000000000..c9c0460ba5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/date/#/floor-month.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var floorDay = require("./floor-day");
+
+module.exports = function () {
+ floorDay.call(this).setDate(1);
+ return this;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/date/#/floor-year.js b/kbase-extension/static/ext_packages/igv/es5-ext/date/#/floor-year.js
new file mode 100644
index 0000000000..e9b6f0fe71
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/date/#/floor-year.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var floorMonth = require("./floor-month");
+
+module.exports = function () {
+ floorMonth.call(this).setMonth(0);
+ return this;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/date/#/format.js b/kbase-extension/static/ext_packages/igv/es5-ext/date/#/format.js
new file mode 100644
index 0000000000..519d77c4a6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/date/#/format.js
@@ -0,0 +1,38 @@
+/* eslint id-length: "off" */
+
+"use strict";
+
+var pad = require("../../number/#/pad")
+ , date = require("../valid-date")
+ , format;
+
+format = require("../../string/format-method")({
+ Y: function () {
+ return String(this.getFullYear());
+ },
+ y: function () {
+ return String(this.getFullYear()).slice(-2);
+ },
+ m: function () {
+ return pad.call(this.getMonth() + 1, 2);
+ },
+ d: function () {
+ return pad.call(this.getDate(), 2);
+ },
+ H: function () {
+ return pad.call(this.getHours(), 2);
+ },
+ M: function () {
+ return pad.call(this.getMinutes(), 2);
+ },
+ S: function () {
+ return pad.call(this.getSeconds(), 2);
+ },
+ L: function () {
+ return pad.call(this.getMilliseconds(), 3);
+ }
+});
+
+module.exports = function (pattern) {
+ return format.call(date(this), pattern);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/date/#/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/date/#/index.js
new file mode 100644
index 0000000000..1781e21808
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/date/#/index.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = {
+ copy: require("./copy"),
+ daysInMonth: require("./days-in-month"),
+ floorDay: require("./floor-day"),
+ floorMonth: require("./floor-month"),
+ floorYear: require("./floor-year"),
+ format: require("./format")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/date/ensure-time-value.js b/kbase-extension/static/ext_packages/igv/es5-ext/date/ensure-time-value.js
new file mode 100644
index 0000000000..09f5afcf7e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/date/ensure-time-value.js
@@ -0,0 +1,10 @@
+"use strict";
+
+var safeToString = require("../safe-to-string")
+ , toInteger = require("../number/to-integer")
+ , isTimeValue = require("./is-time-value");
+
+module.exports = function (value) {
+ if (isTimeValue(value)) return toInteger(value);
+ throw new TypeError(safeToString(value) + " is not a valid time value");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/date/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/date/index.js
new file mode 100644
index 0000000000..c143149754
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/date/index.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = {
+ "#": require("./#"),
+ "ensureTimeValue": require("./ensure-time-value"),
+ "isDate": require("./is-date"),
+ "isTimeValue": require("./is-time-value"),
+ "validDate": require("./valid-date")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/date/is-date.js b/kbase-extension/static/ext_packages/igv/es5-ext/date/is-date.js
new file mode 100644
index 0000000000..f45bde469d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/date/is-date.js
@@ -0,0 +1,10 @@
+"use strict";
+
+var objToString = Object.prototype.toString, id = objToString.call(new Date());
+
+module.exports = function (value) {
+ return (
+ (value && !isNaN(value) && (value instanceof Date || objToString.call(value) === id)) ||
+ false
+ );
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/date/is-time-value.js b/kbase-extension/static/ext_packages/igv/es5-ext/date/is-time-value.js
new file mode 100644
index 0000000000..4240fec5e3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/date/is-time-value.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (value) {
+ try {
+ value = Number(value);
+ } catch (e) {
+ return false;
+ }
+ if (isNaN(value)) return false;
+ if (Math.abs(value) > 8.64e16) return false;
+ return true;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/date/valid-date.js b/kbase-extension/static/ext_packages/igv/es5-ext/date/valid-date.js
new file mode 100644
index 0000000000..0c73dc5d35
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/date/valid-date.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isDate = require("./is-date");
+
+module.exports = function (value) {
+ if (!isDate(value)) throw new TypeError(value + " is not valid Date object");
+ return value;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/error/#/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/error/#/index.js
new file mode 100644
index 0000000000..ac9a4306c4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/error/#/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = {
+ throw: require("./throw")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/error/#/throw.js b/kbase-extension/static/ext_packages/igv/es5-ext/error/#/throw.js
new file mode 100644
index 0000000000..3fe6bb4c8b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/error/#/throw.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var error = require("../valid-error");
+
+module.exports = function () {
+ throw error(this);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/error/custom.js b/kbase-extension/static/ext_packages/igv/es5-ext/error/custom.js
new file mode 100644
index 0000000000..0e4c8cb1f4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/error/custom.js
@@ -0,0 +1,20 @@
+"use strict";
+
+var assign = require("../object/assign")
+ , isObject = require("../object/is-object")
+ , isValue = require("../object/is-value")
+ , captureStackTrace = Error.captureStackTrace;
+
+exports = module.exports = function (message /*, code, ext*/) {
+ var err = new Error(message), code = arguments[1], ext = arguments[2];
+ if (!isValue(ext)) {
+ if (isObject(code)) {
+ ext = code;
+ code = null;
+ }
+ }
+ if (isValue(ext)) assign(err, ext);
+ if (isValue(code)) err.code = code;
+ if (captureStackTrace) captureStackTrace(err, exports);
+ return err;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/error/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/error/index.js
new file mode 100644
index 0000000000..cb7054a272
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/error/index.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = {
+ "#": require("./#"),
+ "custom": require("./custom"),
+ "isError": require("./is-error"),
+ "validError": require("./valid-error")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/error/is-error.js b/kbase-extension/static/ext_packages/igv/es5-ext/error/is-error.js
new file mode 100644
index 0000000000..aad67ed9a9
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/error/is-error.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var objToString = Object.prototype.toString, id = objToString.call(new Error());
+
+module.exports = function (value) {
+ return (value && (value instanceof Error || objToString.call(value) === id)) || false;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/error/valid-error.js b/kbase-extension/static/ext_packages/igv/es5-ext/error/valid-error.js
new file mode 100644
index 0000000000..432f7ba291
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/error/valid-error.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isError = require("./is-error");
+
+module.exports = function (value) {
+ if (!isError(value)) throw new TypeError(value + " is not an Error object");
+ return value;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/#/compose.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/compose.js
new file mode 100644
index 0000000000..0897517832
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/compose.js
@@ -0,0 +1,22 @@
+"use strict";
+
+var callable = require("../../object/valid-callable")
+ , aFrom = require("../../array/from")
+ , apply = Function.prototype.apply
+ , call = Function.prototype.call
+ , callFn = function (arg, fn) {
+ return call.call(fn, this, arg);
+};
+
+module.exports = function (fn /*, …fnn*/) {
+ var fns, first;
+ if (!fn) callable(fn);
+ fns = [this].concat(aFrom(arguments));
+ fns.forEach(callable);
+ fns = fns.reverse();
+ first = fns[0];
+ fns = fns.slice(1);
+ return function (argIgnored) {
+ return fns.reduce(callFn, apply.call(first, this, arguments));
+ };
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/#/copy.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/copy.js
new file mode 100644
index 0000000000..f0403b304b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/copy.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var mixin = require("../../object/mixin")
+ , validFunction = require("../valid-function")
+ , re = /^\s*function\s*([\0-')-\uffff]+)*\s*\(([\0-(*-\uffff]*)\)\s*\{/;
+
+module.exports = function () {
+ var match = String(validFunction(this)).match(re), fn;
+
+ // eslint-disable-next-line no-new-func
+ fn = new Function(
+ "fn",
+ "return function " +
+ match[1].trim() +
+ "(" +
+ match[2] +
+ ") { return fn.apply(this, arguments); };"
+ )(this);
+ try {
+ mixin(fn, this);
+ } catch (ignore) {}
+ return fn;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/#/curry.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/curry.js
new file mode 100644
index 0000000000..cc1e14a5a5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/curry.js
@@ -0,0 +1,24 @@
+"use strict";
+
+var toPosInt = require("../../number/to-pos-integer")
+ , callable = require("../../object/valid-callable")
+ , defineLength = require("../_define-length")
+
+ , slice = Array.prototype.slice, apply = Function.prototype.apply
+ , curry;
+
+curry = function self(fn, length, preArgs) {
+ return defineLength(function () {
+ var args = preArgs
+ ? preArgs.concat(slice.call(arguments, 0, length - preArgs.length))
+ : slice.call(arguments, 0, length);
+ return args.length === length ? apply.call(fn, this, args)
+ : self(fn, length, args);
+ }, preArgs ? length - preArgs.length : length);
+};
+
+module.exports = function (/* Length*/) {
+ var length = arguments[0];
+ return curry(callable(this),
+ isNaN(length) ? toPosInt(this.length) : toPosInt(length));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/#/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/index.js
new file mode 100644
index 0000000000..02ae9f491e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/index.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = {
+ compose: require("./compose"),
+ copy: require("./copy"),
+ curry: require("./curry"),
+ lock: require("./lock"),
+ microtaskDelay: require("./microtask-delay"),
+ not: require("./not"),
+ partial: require("./partial"),
+ spread: require("./spread"),
+ toStringTokens: require("./to-string-tokens")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/#/lock.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/lock.js
new file mode 100644
index 0000000000..dcd93bb105
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/lock.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var callable = require("../../object/valid-callable")
+
+ , apply = Function.prototype.apply;
+
+module.exports = function (/* …args*/) {
+ var fn = callable(this)
+ , args = arguments;
+
+ return function () {
+ return apply.call(fn, this, args);
+};
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/#/microtask-delay.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/microtask-delay.js
new file mode 100644
index 0000000000..89d47be561
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/microtask-delay.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var ensurePlainFunction = require("../../object/ensure-plain-function")
+ , defineLength = require("../_define-length")
+ , nextTick = require("next-tick");
+
+var apply = Function.prototype.apply;
+
+module.exports = function () {
+ var src = ensurePlainFunction(this);
+ return defineLength(function () {
+ nextTick(apply.bind(src, this, arguments));
+ }, this.length);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/#/not.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/not.js
new file mode 100644
index 0000000000..82d64def78
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/not.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var callable = require("../../object/valid-callable")
+ , defineLength = require("../_define-length")
+
+ , apply = Function.prototype.apply;
+
+module.exports = function () {
+ var fn = callable(this);
+
+ return defineLength(function () {
+ return !apply.call(fn, this, arguments);
+ }, fn.length);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/#/partial.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/partial.js
new file mode 100644
index 0000000000..1734b1355b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/partial.js
@@ -0,0 +1,16 @@
+"use strict";
+
+var callable = require("../../object/valid-callable")
+ , aFrom = require("../../array/from")
+ , defineLength = require("../_define-length")
+
+ , apply = Function.prototype.apply;
+
+module.exports = function (/* …args*/) {
+ var fn = callable(this)
+ , args = aFrom(arguments);
+
+ return defineLength(function () {
+ return apply.call(fn, this, args.concat(aFrom(arguments)));
+ }, fn.length - args.length);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/#/spread.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/spread.js
new file mode 100644
index 0000000000..755553b4e6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/spread.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var callable = require("../../object/valid-callable")
+
+ , apply = Function.prototype.apply;
+
+module.exports = function () {
+ var fn = callable(this);
+ return function (args) {
+ return apply.call(fn, this, args);
+};
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/#/to-string-tokens.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/to-string-tokens.js
new file mode 100644
index 0000000000..4ce026a56d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/#/to-string-tokens.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var validFunction = require("../valid-function");
+
+var re1 = /^\s*function[\0-')-\uffff]*\(([\0-(*-\uffff]*)\)\s*\{([\0-\uffff]*)\}\s*$/
+ , re2 = /^\s*\(?([\0-'*-\uffff]*)\)?\s*=>\s*(\{?[\0-\uffff]*\}?)\s*$/;
+
+module.exports = function () {
+ var str = String(validFunction(this)), data = str.match(re1);
+ if (!data) {
+ data = str.match(re2);
+ if (!data) throw new Error("Unrecognized string format");
+ data[1] = data[1].trim();
+ if (data[2][0] === "{") data[2] = data[2].trim().slice(1, -1);
+ }
+ return { args: data[1], body: data[2] };
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/_define-length.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/_define-length.js
new file mode 100644
index 0000000000..13749d3bbf
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/_define-length.js
@@ -0,0 +1,56 @@
+"use strict";
+
+var toPosInt = require("../number/to-pos-integer");
+
+var test = function (arg1, arg2) {
+ return arg2;
+};
+
+var desc, defineProperty, generate, mixin;
+
+try {
+ Object.defineProperty(test, "length", {
+ configurable: true,
+ writable: false,
+ enumerable: false,
+ value: 1
+ });
+} catch (ignore) {}
+
+if (test.length === 1) {
+ // ES6
+ desc = { configurable: true, writable: false, enumerable: false };
+ defineProperty = Object.defineProperty;
+ module.exports = function (fn, length) {
+ length = toPosInt(length);
+ if (fn.length === length) return fn;
+ desc.value = length;
+ return defineProperty(fn, "length", desc);
+ };
+} else {
+ mixin = require("../object/mixin");
+ generate = (function () {
+ var cache = [];
+ return function (length) {
+ var args, i = 0;
+ if (cache[length]) return cache[length];
+ args = [];
+ while (length--) args.push("a" + (++i).toString(36));
+ // eslint-disable-next-line no-new-func
+ return new Function(
+ "fn",
+ "return function (" + args.join(", ") + ") { return fn.apply(this, arguments); };"
+ );
+ };
+ }());
+ module.exports = function (src, length) {
+ var target;
+ length = toPosInt(length);
+ if (src.length === length) return src;
+ target = generate(length)(src);
+ try {
+ mixin(target, src);
+ } catch (ignore) {}
+ return target;
+ };
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/constant.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/constant.js
new file mode 100644
index 0000000000..c41435d572
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/constant.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (value) {
+ return function () {
+ return value;
+ };
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/identity.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/identity.js
new file mode 100644
index 0000000000..01a5aadf5d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/identity.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (value) {
+ return value;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/index.js
new file mode 100644
index 0000000000..1574fbbbe9
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/index.js
@@ -0,0 +1,15 @@
+// Export all modules.
+
+"use strict";
+
+module.exports = {
+ "#": require("./#"),
+ "constant": require("./constant"),
+ "identity": require("./identity"),
+ "invoke": require("./invoke"),
+ "isArguments": require("./is-arguments"),
+ "isFunction": require("./is-function"),
+ "noop": require("./noop"),
+ "pluck": require("./pluck"),
+ "validFunction": require("./valid-function")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/invoke.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/invoke.js
new file mode 100644
index 0000000000..c3d23f2d63
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/invoke.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var isCallable = require("../object/is-callable")
+ , value = require("../object/valid-value")
+
+ , slice = Array.prototype.slice, apply = Function.prototype.apply;
+
+module.exports = function (name/*, …args*/) {
+ var args = slice.call(arguments, 1), isFn = isCallable(name);
+ return function (obj) {
+ value(obj);
+ return apply.call(isFn ? name : obj[name], obj,
+ args.concat(slice.call(arguments, 1)));
+ };
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/is-arguments.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/is-arguments.js
new file mode 100644
index 0000000000..f4bf40608c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/is-arguments.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var objToString = Object.prototype.toString
+ , id = objToString.call(
+ (function () {
+ return arguments;
+ })()
+);
+
+module.exports = function (value) {
+ return objToString.call(value) === id;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/is-function.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/is-function.js
new file mode 100644
index 0000000000..d3d92f4ed0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/is-function.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var objToString = Object.prototype.toString, id = objToString.call(require("./noop"));
+
+module.exports = function (value) {
+ return typeof value === "function" && objToString.call(value) === id;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/noop.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/noop.js
new file mode 100644
index 0000000000..6174f03311
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/noop.js
@@ -0,0 +1,4 @@
+"use strict";
+
+// eslint-disable-next-line no-empty-function
+module.exports = function () {};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/pluck.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/pluck.js
new file mode 100644
index 0000000000..8507128ace
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/pluck.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var value = require("../object/valid-value");
+
+module.exports = function (name) {
+ return function (obj) {
+ return value(obj)[name];
+ };
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/function/valid-function.js b/kbase-extension/static/ext_packages/igv/es5-ext/function/valid-function.js
new file mode 100644
index 0000000000..060bd64534
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/function/valid-function.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isFunction = require("./is-function");
+
+module.exports = function (value) {
+ if (!isFunction(value)) throw new TypeError(value + " is not a function");
+ return value;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/global.js b/kbase-extension/static/ext_packages/igv/es5-ext/global.js
new file mode 100644
index 0000000000..d77579c57e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/global.js
@@ -0,0 +1,5 @@
+/* eslint strict: "off" */
+
+module.exports = (function () {
+ return this;
+}());
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/index.js
new file mode 100644
index 0000000000..0919764ec2
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/index.js
@@ -0,0 +1,22 @@
+"use strict";
+
+module.exports = {
+ global: require("./global"),
+ optionalChaining: require("./optional-chaining"),
+ safeToString: require("./safe-to-string"),
+ toShortStringRepresentation: require("./to-short-string-representation"),
+
+ array: require("./array"),
+ boolean: require("./boolean"),
+ date: require("./date"),
+ error: require("./error"),
+ function: require("./function"),
+ iterable: require("./iterable"),
+ json: require("./json"),
+ math: require("./math"),
+ number: require("./number"),
+ object: require("./object"),
+ promise: require("./promise"),
+ regExp: require("./reg-exp"),
+ string: require("./string")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/iterable/for-each.js b/kbase-extension/static/ext_packages/igv/es5-ext/iterable/for-each.js
new file mode 100644
index 0000000000..2840e952dc
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/iterable/for-each.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var forOf = require("es6-iterator/for-of")
+ , isIterable = require("es6-iterator/is-iterable")
+ , iterable = require("./validate")
+
+ , forEach = Array.prototype.forEach;
+
+module.exports = function (target, cb/*, thisArg*/) {
+ if (isIterable(iterable(target))) forOf(target, cb, arguments[2]);
+ else forEach.call(target, cb, arguments[2]);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/iterable/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/iterable/index.js
new file mode 100644
index 0000000000..4b898fc8c3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/iterable/index.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = {
+ forEach: require("./for-each"),
+ is: require("./is"),
+ validate: require("./validate"),
+ validateObject: require("./validate-object")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/iterable/is.js b/kbase-extension/static/ext_packages/igv/es5-ext/iterable/is.js
new file mode 100644
index 0000000000..aa5a9b9e11
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/iterable/is.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator
+ , isValue = require("../object/is-value")
+ , isArrayLike = require("../object/is-array-like");
+
+module.exports = function (value) {
+ if (!isValue(value)) return false;
+ if (typeof value[iteratorSymbol] === "function") return true;
+ return isArrayLike(value);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/iterable/validate-object.js b/kbase-extension/static/ext_packages/igv/es5-ext/iterable/validate-object.js
new file mode 100644
index 0000000000..26e622b576
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/iterable/validate-object.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var isObject = require("../object/is-object")
+ , is = require("./is");
+
+module.exports = function (value) {
+ if (is(value) && isObject(value)) return value;
+ throw new TypeError(value + " is not an iterable or array-like object");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/iterable/validate.js b/kbase-extension/static/ext_packages/igv/es5-ext/iterable/validate.js
new file mode 100644
index 0000000000..94a91c4710
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/iterable/validate.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var is = require("./is");
+
+module.exports = function (value) {
+ if (is(value)) return value;
+ throw new TypeError(value + " is not an iterable or array-like");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/json/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/json/index.js
new file mode 100644
index 0000000000..14b25cd641
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/json/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = {
+ safeStringify: require("./safe-stringify")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/json/safe-stringify.js b/kbase-extension/static/ext_packages/igv/es5-ext/json/safe-stringify.js
new file mode 100644
index 0000000000..2154f6c01a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/json/safe-stringify.js
@@ -0,0 +1,41 @@
+"use strict";
+
+var compact = require("../array/#/compact")
+ , isObject = require("../object/is-object")
+ , toArray = require("../object/to-array")
+ , isArray = Array.isArray
+ , stringify = JSON.stringify;
+
+module.exports = function self(value /*, replacer, space*/) {
+ var replacer = arguments[1], space = arguments[2];
+ try {
+ return stringify(value, replacer, space);
+ } catch (e) {
+ if (!isObject(value)) return null;
+ if (typeof value.toJSON === "function") return null;
+ if (isArray(value)) {
+ return (
+ "[" +
+ compact.call(
+ value.map(function (item) {
+ return self(item, replacer, space);
+ })
+ ) +
+ "]"
+ );
+ }
+ return (
+ "{" +
+ compact
+ .call(
+ toArray(value, function (item, key) {
+ item = self(item, replacer, space);
+ if (!item) return null;
+ return stringify(key) + ":" + item;
+ })
+ )
+ .join(",") +
+ "}"
+ );
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/_decimal-adjust.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/_decimal-adjust.js
new file mode 100644
index 0000000000..fd0b0025a8
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/_decimal-adjust.js
@@ -0,0 +1,29 @@
+// Credit:
+// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
+// #Decimal_rounding
+
+"use strict";
+
+var isValue = require("../object/is-value")
+ , ensureInteger = require("../object/ensure-integer");
+
+var split = String.prototype.split;
+
+module.exports = function (type) {
+ return function (value/*, exp*/) {
+ value = Number(value);
+ var exp = arguments[1];
+ if (isValue(exp)) exp = ensureInteger(exp);
+ if (!value) return value;
+ if (!exp) return Math[type](value);
+ if (!isFinite(value)) return value;
+
+ // Shift
+ var tokens = split.call(value, "e");
+ value = Math[type](tokens[0] + "e" + ((tokens[1] || 0) - exp));
+
+ // Shift back
+ tokens = value.toString().split("e");
+ return Number(tokens[0] + "e" + (Number(tokens[1] || 0) + exp));
+ };
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/_pack-ieee754.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/_pack-ieee754.js
new file mode 100644
index 0000000000..b77bc8d402
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/_pack-ieee754.js
@@ -0,0 +1,88 @@
+/* eslint no-bitwise: "off" */
+// Credit: https://github.com/paulmillr/es6-shim/
+
+"use strict";
+
+var abs = Math.abs
+ , floor = Math.floor
+ , log = Math.log
+ , min = Math.min
+ , pow = Math.pow
+ , LN2 = Math.LN2
+ , roundToEven;
+
+roundToEven = function (num) {
+ var whole = floor(num), fraction = num - whole;
+ if (fraction < 0.5) return whole;
+ if (fraction > 0.5) return whole + 1;
+ return whole % 2 ? whole + 1 : whole;
+};
+
+// eslint-disable-next-line max-statements
+module.exports = function (value, ebits, fbits) {
+ var bias = (1 << (ebits - 1)) - 1, sign, e, fraction, i, bits, str, bytes;
+
+ // Compute sign, exponent, fraction
+ if (isNaN(value)) {
+ // NaN
+ // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping
+ e = (1 << ebits) - 1;
+ fraction = pow(2, fbits - 1);
+ sign = 0;
+ } else if (value === Infinity || value === -Infinity) {
+ e = (1 << ebits) - 1;
+ fraction = 0;
+ sign = value < 0 ? 1 : 0;
+ } else if (value === 0) {
+ e = 0;
+ fraction = 0;
+ sign = 1 / value === -Infinity ? 1 : 0;
+ } else {
+ sign = value < 0;
+ value = abs(value);
+
+ if (value >= pow(2, 1 - bias)) {
+ e = min(floor(log(value) / LN2), 1023);
+ fraction = roundToEven(value / pow(2, e) * pow(2, fbits));
+ if (fraction / pow(2, fbits) >= 2) {
+ e += 1;
+ fraction = 1;
+ }
+ if (e > bias) {
+ // Overflow
+ e = (1 << ebits) - 1;
+ fraction = 0;
+ } else {
+ // Normal
+ e += bias;
+ fraction -= pow(2, fbits);
+ }
+ } else {
+ // Subnormal
+ e = 0;
+ fraction = roundToEven(value / pow(2, 1 - bias - fbits));
+ }
+ }
+
+ // Pack sign, exponent, fraction
+ bits = [];
+ for (i = fbits; i; i -= 1) {
+ bits.push(fraction % 2 ? 1 : 0);
+ fraction = floor(fraction / 2);
+ }
+ for (i = ebits; i; i -= 1) {
+ bits.push(e % 2 ? 1 : 0);
+ e = floor(e / 2);
+ }
+ bits.push(sign ? 1 : 0);
+ bits.reverse();
+ str = bits.join("");
+
+ // Bits to bytes
+ bytes = [];
+ while (str.length) {
+ bytes.push(parseInt(str.substring(0, 8), 2));
+ str = str.substring(8);
+ }
+ return bytes;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/_unpack-ieee754.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/_unpack-ieee754.js
new file mode 100644
index 0000000000..83fa9475ed
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/_unpack-ieee754.js
@@ -0,0 +1,33 @@
+/* eslint no-bitwise: "off" */
+// Credit: https://github.com/paulmillr/es6-shim/
+
+"use strict";
+
+var pow = Math.pow;
+
+module.exports = function (bytes, ebits, fbits) {
+ // Bytes to bits
+ var bits = [], i, j, bit, str, bias, sign, e, fraction;
+
+ for (i = bytes.length; i; i -= 1) {
+ bit = bytes[i - 1];
+ for (j = 8; j; j -= 1) {
+ bits.push(bit % 2 ? 1 : 0);
+ bit >>= 1;
+ }
+ }
+ bits.reverse();
+ str = bits.join("");
+
+ // Unpack sign, exponent, fraction
+ bias = (1 << (ebits - 1)) - 1;
+ sign = parseInt(str.substring(0, 1), 2) ? -1 : 1;
+ e = parseInt(str.substring(1, 1 + ebits), 2);
+ fraction = parseInt(str.substring(1 + ebits), 2);
+
+ // Produce number
+ if (e === (1 << ebits) - 1) return fraction === 0 ? sign * Infinity : NaN;
+ if (e > 0) return sign * pow(2, e - bias) * (1 + fraction / pow(2, fbits));
+ if (fraction !== 0) return sign * pow(2, -(bias - 1)) * (fraction / pow(2, fbits));
+ return sign < 0 ? -0 : 0;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/acosh/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/acosh/implement.js
new file mode 100644
index 0000000000..ea75c7d132
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/acosh/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Math, "acosh", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/acosh/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/acosh/index.js
new file mode 100644
index 0000000000..160f6b9923
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/acosh/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Math.acosh
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/acosh/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/acosh/is-implemented.js
new file mode 100644
index 0000000000..2e97301365
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/acosh/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var acosh = Math.acosh;
+ if (typeof acosh !== "function") return false;
+ return acosh(2) === 1.3169578969248166;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/acosh/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/acosh/shim.js
new file mode 100644
index 0000000000..3e632ffbad
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/acosh/shim.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var log = Math.log, sqrt = Math.sqrt;
+
+module.exports = function (value) {
+ if (isNaN(value)) return NaN;
+ value = Number(value);
+ if (value < 1) return NaN;
+ if (value === 1) return 0;
+ if (value === Infinity) return value;
+ return log(value + sqrt(value * value - 1));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/asinh/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/asinh/implement.js
new file mode 100644
index 0000000000..efa6704ec4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/asinh/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Math, "asinh", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/asinh/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/asinh/index.js
new file mode 100644
index 0000000000..b5fb120f2a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/asinh/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Math.asinh
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/asinh/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/asinh/is-implemented.js
new file mode 100644
index 0000000000..a7e0f20f82
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/asinh/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var asinh = Math.asinh;
+ if (typeof asinh !== "function") return false;
+ return asinh(2) === 1.4436354751788103;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/asinh/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/asinh/shim.js
new file mode 100644
index 0000000000..30ce2e4d69
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/asinh/shim.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var log = Math.log, sqrt = Math.sqrt;
+
+module.exports = function (value) {
+ if (isNaN(value)) return NaN;
+ value = Number(value);
+ if (value === 0) return value;
+ if (!isFinite(value)) return value;
+ if (value < 0) {
+ value = -value;
+ return -log(value + sqrt(value * value + 1));
+ }
+ return log(value + sqrt(value * value + 1));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/atanh/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/atanh/implement.js
new file mode 100644
index 0000000000..47d5cc22ac
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/atanh/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Math, "atanh", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/atanh/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/atanh/index.js
new file mode 100644
index 0000000000..51fbcd66af
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/atanh/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Math.atanh
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/atanh/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/atanh/is-implemented.js
new file mode 100644
index 0000000000..4787c4fa69
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/atanh/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var atanh = Math.atanh;
+ if (typeof atanh !== "function") return false;
+ return Math.round(atanh(0.5) * 1e15) === 549306144334055;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/atanh/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/atanh/shim.js
new file mode 100644
index 0000000000..9383e9714a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/atanh/shim.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var log = Math.log;
+
+module.exports = function (value) {
+ if (isNaN(value)) return NaN;
+ value = Number(value);
+ if (value < -1) return NaN;
+ if (value > 1) return NaN;
+ if (value === -1) return -Infinity;
+ if (value === 1) return Infinity;
+ if (value === 0) return value;
+ return 0.5 * log((1 + value) / (1 - value));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/cbrt/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/cbrt/implement.js
new file mode 100644
index 0000000000..f5adbab0d5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/cbrt/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Math, "cbrt", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/cbrt/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/cbrt/index.js
new file mode 100644
index 0000000000..47806407c3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/cbrt/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Math.cbrt
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/cbrt/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/cbrt/is-implemented.js
new file mode 100644
index 0000000000..a8ac0db26c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/cbrt/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var cbrt = Math.cbrt;
+ if (typeof cbrt !== "function") return false;
+ return cbrt(2) === 1.2599210498948732;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/cbrt/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/cbrt/shim.js
new file mode 100644
index 0000000000..8871c552f1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/cbrt/shim.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var pow = Math.pow;
+
+module.exports = function (value) {
+ if (isNaN(value)) return NaN;
+ value = Number(value);
+ if (value === 0) return value;
+ if (!isFinite(value)) return value;
+ if (value < 0) return -pow(-value, 1 / 3);
+ return pow(value, 1 / 3);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/ceil-10.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/ceil-10.js
new file mode 100644
index 0000000000..351221f6cd
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/ceil-10.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./_decimal-adjust")("ceil");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/clz32/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/clz32/implement.js
new file mode 100644
index 0000000000..10b4a41d0f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/clz32/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Math, "clz32", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/clz32/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/clz32/index.js
new file mode 100644
index 0000000000..a16ee33a5d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/clz32/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Math.clz32
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/clz32/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/clz32/is-implemented.js
new file mode 100644
index 0000000000..ee6d882882
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/clz32/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var clz32 = Math.clz32;
+ if (typeof clz32 !== "function") return false;
+ return clz32(1000) === 22;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/clz32/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/clz32/shim.js
new file mode 100644
index 0000000000..2b526c2c2f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/clz32/shim.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (value) {
+ // eslint-disable-next-line no-bitwise
+ value >>>= 0;
+ return value ? 32 - value.toString(2).length : 32;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/cosh/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/cosh/implement.js
new file mode 100644
index 0000000000..6f42b38796
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/cosh/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Math, "cosh", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/cosh/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/cosh/index.js
new file mode 100644
index 0000000000..5ed349afc1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/cosh/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Math.cosh
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/cosh/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/cosh/is-implemented.js
new file mode 100644
index 0000000000..7173054c7e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/cosh/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var cosh = Math.cosh;
+ if (typeof cosh !== "function") return false;
+ return cosh(1) === 1.5430806348152437;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/cosh/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/cosh/shim.js
new file mode 100644
index 0000000000..c762c84dae
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/cosh/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var exp = Math.exp;
+
+module.exports = function (value) {
+ if (isNaN(value)) return NaN;
+ value = Number(value);
+ if (value === 0) return 1;
+ if (!isFinite(value)) return Infinity;
+ return (exp(value) + exp(-value)) / 2;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/expm1/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/expm1/implement.js
new file mode 100644
index 0000000000..8c9d81113d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/expm1/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Math, "expm1", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/expm1/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/expm1/index.js
new file mode 100644
index 0000000000..5b5dff6b21
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/expm1/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Math.expm1
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/expm1/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/expm1/is-implemented.js
new file mode 100644
index 0000000000..dfd056e0ac
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/expm1/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var expm1 = Math.expm1;
+ if (typeof expm1 !== "function") return false;
+ return expm1(1).toFixed(15) === "1.718281828459045";
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/expm1/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/expm1/shim.js
new file mode 100644
index 0000000000..ce737b3bcc
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/expm1/shim.js
@@ -0,0 +1,16 @@
+// Thanks: https://github.com/monolithed/ECMAScript-6
+
+"use strict";
+
+var exp = Math.exp;
+
+module.exports = function (value) {
+ if (isNaN(value)) return NaN;
+ value = Number(value);
+ if (value === 0) return value;
+ if (value === Infinity) return Infinity;
+ if (value === -Infinity) return -1;
+
+ if (value > -1.0e-6 && value < 1.0e-6) return value + value * value / 2;
+ return exp(value) - 1;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/floor-10.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/floor-10.js
new file mode 100644
index 0000000000..3cb0c11906
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/floor-10.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./_decimal-adjust")("floor");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/fround/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/fround/implement.js
new file mode 100644
index 0000000000..b54d2fca6c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/fround/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Math, "fround", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/fround/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/fround/index.js
new file mode 100644
index 0000000000..db409e8373
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/fround/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Math.fround
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/fround/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/fround/is-implemented.js
new file mode 100644
index 0000000000..ad2b705dfc
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/fround/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var fround = Math.fround;
+ if (typeof fround !== "function") return false;
+ return fround(1.337) === 1.3370000123977661;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/fround/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/fround/shim.js
new file mode 100644
index 0000000000..bfbc54c6c8
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/fround/shim.js
@@ -0,0 +1,35 @@
+/* global Float32Array */
+
+// Credit: https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js
+
+"use strict";
+
+var toFloat32;
+
+if (typeof Float32Array === "undefined") {
+ toFloat32 = (function () {
+ var pack = require("../_pack-ieee754")
+ , unpack = require("../_unpack-ieee754");
+
+ return function (value) {
+ return unpack(pack(value, 8, 23), 8, 23);
+ };
+ }());
+} else {
+ toFloat32 = (function () {
+ var float32Array = new Float32Array(1);
+ return function (num) {
+ float32Array[0] = num;
+ return float32Array[0];
+ };
+ }());
+}
+
+module.exports = function (value) {
+ if (isNaN(value)) return NaN;
+ value = Number(value);
+ if (value === 0) return value;
+ if (!isFinite(value)) return value;
+
+ return toFloat32(value);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/hypot/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/hypot/implement.js
new file mode 100644
index 0000000000..e2b3928b37
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/hypot/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Math, "hypot", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/hypot/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/hypot/index.js
new file mode 100644
index 0000000000..a030a41988
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/hypot/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Math.hypot
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/hypot/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/hypot/is-implemented.js
new file mode 100644
index 0000000000..d317bc7e57
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/hypot/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var hypot = Math.hypot;
+ if (typeof hypot !== "function") return false;
+ return hypot(3, 4) === 5;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/hypot/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/hypot/shim.js
new file mode 100644
index 0000000000..2a92b17154
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/hypot/shim.js
@@ -0,0 +1,43 @@
+// Thanks for hints: https://github.com/paulmillr/es6-shim
+
+"use strict";
+
+var some = Array.prototype.some
+ , abs = Math.abs
+ , sqrt = Math.sqrt
+ , compare = function (val1, val2) {
+ return val2 - val1;
+}
+ , divide = function (value) {
+ return value / this;
+}
+ , add = function (sum, number) {
+ return sum + number * number;
+};
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (val1, val2 /*, …valn*/) {
+ var result, numbers;
+ if (!arguments.length) return 0;
+ some.call(arguments, function (val) {
+ if (isNaN(val)) {
+ result = NaN;
+ return false;
+ }
+ if (!isFinite(val)) {
+ result = Infinity;
+ return true;
+ }
+ if (result !== undefined) return false;
+ val = Number(val);
+ if (val === 0) return false;
+ if (numbers) numbers.push(abs(val));
+ else numbers = [abs(val)];
+ return false;
+ });
+ if (result !== undefined) return result;
+ if (!numbers) return 0;
+
+ numbers.sort(compare);
+ return numbers[0] * sqrt(numbers.map(divide, numbers[0]).reduce(add, 0));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/imul/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/imul/implement.js
new file mode 100644
index 0000000000..bff57735b5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/imul/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Math, "imul", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/imul/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/imul/index.js
new file mode 100644
index 0000000000..a756d5949e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/imul/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Math.imul
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/imul/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/imul/is-implemented.js
new file mode 100644
index 0000000000..0f32919840
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/imul/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var imul = Math.imul;
+ if (typeof imul !== "function") return false;
+ return imul(-1, 8) === -8;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/imul/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/imul/shim.js
new file mode 100644
index 0000000000..a14e5895b3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/imul/shim.js
@@ -0,0 +1,17 @@
+/* eslint no-bitwise: "off" */
+
+// Thanks: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference
+// /Global_Objects/Math/imul
+
+"use strict";
+
+module.exports = function (val1, val2) {
+ var xh = (val1 >>> 16) & 0xffff
+ , xl = val1 & 0xffff
+ , yh = (val2 >>> 16) & 0xffff
+ , yl = val2 & 0xffff;
+
+ // The shift by 0 fixes the sign on the high part
+ // the final |0 converts the unsigned value into a signed value
+ return (xl * yl + ((xh * yl + xl * yh) << 16 >>> 0)) | 0;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/index.js
new file mode 100644
index 0000000000..a59269cc6e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/index.js
@@ -0,0 +1,24 @@
+"use strict";
+
+module.exports = {
+ acosh: require("./acosh"),
+ asinh: require("./asinh"),
+ atanh: require("./atanh"),
+ cbrt: require("./cbrt"),
+ ceil10: require("./ceil-10"),
+ clz32: require("./clz32"),
+ cosh: require("./cosh"),
+ expm1: require("./expm1"),
+ floor10: require("./floor-10"),
+ fround: require("./fround"),
+ hypot: require("./hypot"),
+ imul: require("./imul"),
+ log10: require("./log10"),
+ log2: require("./log2"),
+ log1p: require("./log1p"),
+ round10: require("./round-10"),
+ sign: require("./sign"),
+ sinh: require("./sinh"),
+ tanh: require("./tanh"),
+ trunc: require("./trunc")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/log10/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/log10/implement.js
new file mode 100644
index 0000000000..669cee8870
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/log10/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Math, "log10", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/log10/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/log10/index.js
new file mode 100644
index 0000000000..bc2ec48169
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/log10/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Math.log10
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/log10/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/log10/is-implemented.js
new file mode 100644
index 0000000000..f2217597d2
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/log10/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var log10 = Math.log10;
+ if (typeof log10 !== "function") return false;
+ return log10(2) === 0.3010299956639812;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/log10/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/log10/shim.js
new file mode 100644
index 0000000000..e8599a260e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/log10/shim.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var log = Math.log, LOG10E = Math.LOG10E;
+
+module.exports = function (value) {
+ if (isNaN(value)) return NaN;
+ value = Number(value);
+ if (value < 0) return NaN;
+ if (value === 0) return -Infinity;
+ if (value === 1) return 0;
+ if (value === Infinity) return Infinity;
+
+ return log(value) * LOG10E;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/log1p/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/log1p/implement.js
new file mode 100644
index 0000000000..36fcee6199
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/log1p/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Math, "log1p", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/log1p/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/log1p/index.js
new file mode 100644
index 0000000000..41c67364f5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/log1p/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Math.log1p
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/log1p/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/log1p/is-implemented.js
new file mode 100644
index 0000000000..7626ab47ef
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/log1p/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var log1p = Math.log1p;
+ if (typeof log1p !== "function") return false;
+ return log1p(1) === 0.6931471805599453;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/log1p/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/log1p/shim.js
new file mode 100644
index 0000000000..7c6f227346
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/log1p/shim.js
@@ -0,0 +1,17 @@
+// Thanks: https://github.com/monolithed/ECMAScript-6/blob/master/ES6.js
+
+"use strict";
+
+var log = Math.log;
+
+module.exports = function (value) {
+ if (isNaN(value)) return NaN;
+ value = Number(value);
+ if (value < -1) return NaN;
+ if (value === -1) return -Infinity;
+ if (value === 0) return value;
+ if (value === Infinity) return Infinity;
+
+ if (value > -1.0e-8 && value < 1.0e-8) return value - value * value / 2;
+ return log(1 + value);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/log2/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/log2/implement.js
new file mode 100644
index 0000000000..f1c04e0961
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/log2/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Math, "log2", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/log2/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/log2/index.js
new file mode 100644
index 0000000000..d319caec41
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/log2/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Math.log2
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/log2/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/log2/is-implemented.js
new file mode 100644
index 0000000000..c70963f66c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/log2/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var log2 = Math.log2;
+ if (typeof log2 !== "function") return false;
+ return log2(3).toFixed(15) === "1.584962500721156";
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/log2/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/log2/shim.js
new file mode 100644
index 0000000000..51fcdae903
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/log2/shim.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var log = Math.log, LOG2E = Math.LOG2E;
+
+module.exports = function (value) {
+ if (isNaN(value)) return NaN;
+ value = Number(value);
+ if (value < 0) return NaN;
+ if (value === 0) return -Infinity;
+ if (value === 1) return 0;
+ if (value === Infinity) return Infinity;
+
+ return log(value) * LOG2E;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/round-10.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/round-10.js
new file mode 100644
index 0000000000..228c2351ed
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/round-10.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./_decimal-adjust")("round");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/sign/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/sign/implement.js
new file mode 100644
index 0000000000..bc7da14d15
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/sign/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Math, "sign", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/sign/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/sign/index.js
new file mode 100644
index 0000000000..9f2865643b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/sign/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Math.sign
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/sign/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/sign/is-implemented.js
new file mode 100644
index 0000000000..23ff83a6cf
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/sign/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var sign = Math.sign;
+ if (typeof sign !== "function") return false;
+ return (sign(10) === 1) && (sign(-20) === -1);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/sign/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/sign/shim.js
new file mode 100644
index 0000000000..760c69d128
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/sign/shim.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (value) {
+ value = Number(value);
+ if (isNaN(value) || (value === 0)) return value;
+ return value > 0 ? 1 : -1;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/sinh/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/sinh/implement.js
new file mode 100644
index 0000000000..cc4c40bcb1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/sinh/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Math, "sinh", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/sinh/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/sinh/index.js
new file mode 100644
index 0000000000..2c43dce175
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/sinh/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Math.sinh
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/sinh/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/sinh/is-implemented.js
new file mode 100644
index 0000000000..5e4ee40c3a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/sinh/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var sinh = Math.sinh;
+ if (typeof sinh !== "function") return false;
+ return (sinh(1) === 1.1752011936438014) && (sinh(Number.MIN_VALUE) === 5e-324);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/sinh/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/sinh/shim.js
new file mode 100644
index 0000000000..fc6a04776a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/sinh/shim.js
@@ -0,0 +1,18 @@
+// Parts of implementation taken from es6-shim project
+// See: https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js
+
+"use strict";
+
+var expm1 = require("../expm1")
+ , abs = Math.abs
+ , exp = Math.exp
+ , e = Math.E;
+
+module.exports = function (value) {
+ if (isNaN(value)) return NaN;
+ value = Number(value);
+ if (value === 0) return value;
+ if (!isFinite(value)) return value;
+ if (abs(value) < 1) return (expm1(value) - expm1(-value)) / 2;
+ return (exp(value - 1) - exp(-value - 1)) * e / 2;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/tanh/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/tanh/implement.js
new file mode 100644
index 0000000000..9e30d10d1c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/tanh/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Math, "tanh", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/tanh/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/tanh/index.js
new file mode 100644
index 0000000000..7c45d98870
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/tanh/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Math.tanh
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/tanh/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/tanh/is-implemented.js
new file mode 100644
index 0000000000..b17a1bc42f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/tanh/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var tanh = Math.tanh;
+ if (typeof tanh !== "function") return false;
+ return (tanh(1) === 0.7615941559557649) && (tanh(Number.MAX_VALUE) === 1);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/tanh/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/tanh/shim.js
new file mode 100644
index 0000000000..974dd7cda0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/tanh/shim.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var exp = Math.exp;
+
+module.exports = function (value) {
+ var num1, num2;
+ if (isNaN(value)) return NaN;
+ value = Number(value);
+ if (value === 0) return value;
+ if (value === Infinity) return 1;
+ if (value === -Infinity) return -1;
+ num1 = exp(value);
+ if (num1 === Infinity) return 1;
+ num2 = exp(-value);
+ if (num2 === Infinity) return -1;
+ return (num1 - num2) / (num1 + num2);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/trunc/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/trunc/implement.js
new file mode 100644
index 0000000000..1ecc124cda
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/trunc/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Math, "trunc", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/trunc/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/trunc/index.js
new file mode 100644
index 0000000000..94c02691a9
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/trunc/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Math.trunc
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/trunc/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/trunc/is-implemented.js
new file mode 100644
index 0000000000..b1507352ec
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/trunc/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var trunc = Math.trunc;
+ if (typeof trunc !== "function") return false;
+ return (trunc(13.67) === 13) && (trunc(-13.67) === -13);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/math/trunc/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/math/trunc/shim.js
new file mode 100644
index 0000000000..bf6ac8ccef
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/math/trunc/shim.js
@@ -0,0 +1,13 @@
+"use strict";
+
+var floor = Math.floor;
+
+module.exports = function (value) {
+ if (isNaN(value)) return NaN;
+ value = Number(value);
+ if (value === 0) return value;
+ if (value === Infinity) return Infinity;
+ if (value === -Infinity) return -Infinity;
+ if (value > 0) return floor(value);
+ return -floor(-value);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/#/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/#/index.js
new file mode 100644
index 0000000000..e6e21c309c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/#/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = {
+ pad: require("./pad")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/#/pad.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/#/pad.js
new file mode 100644
index 0000000000..26fe4b63ad
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/#/pad.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var pad = require("../../string/#/pad")
+ , toPosInt = require("../to-pos-integer")
+
+ , toFixed = Number.prototype.toFixed;
+
+module.exports = function (length/*, precision*/) {
+ var precision;
+ length = toPosInt(length);
+ precision = toPosInt(arguments[1]);
+
+ return pad.call(precision ? toFixed.call(this, precision) : this,
+ "0", length + (precision ? 1 + precision : 0));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/epsilon/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/epsilon/implement.js
new file mode 100644
index 0000000000..fa19131a89
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/epsilon/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Number, "EPSILON", { value: require("./"),
+ configurable: false,
+enumerable: false,
+writable: false });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/epsilon/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/epsilon/index.js
new file mode 100644
index 0000000000..12e8a8d2c6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/epsilon/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = 2.220446049250313e-16;
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/epsilon/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/epsilon/is-implemented.js
new file mode 100644
index 0000000000..1cfbded214
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/epsilon/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function () {
+ return typeof Number.EPSILON === "number";
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/index.js
new file mode 100644
index 0000000000..b57ff1505f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/index.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = {
+ "#": require("./#"),
+ "EPSILON": require("./epsilon"),
+ "isFinite": require("./is-finite"),
+ "isInteger": require("./is-integer"),
+ "isNaN": require("./is-nan"),
+ "isNatural": require("./is-natural"),
+ "isNumber": require("./is-number"),
+ "isSafeInteger": require("./is-safe-integer"),
+ "MAX_SAFE_INTEGER": require("./max-safe-integer"),
+ "MIN_SAFE_INTEGER": require("./min-safe-integer"),
+ "toInteger": require("./to-integer"),
+ "toPosInteger": require("./to-pos-integer"),
+ "toUint32": require("./to-uint32")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-finite/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-finite/implement.js
new file mode 100644
index 0000000000..17f67cbc49
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-finite/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Number, "isFinite", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-finite/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-finite/index.js
new file mode 100644
index 0000000000..dbeaf7b851
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-finite/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Number.isFinite
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-finite/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-finite/is-implemented.js
new file mode 100644
index 0000000000..eadd050788
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-finite/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var numberIsFinite = Number.isFinite;
+ if (typeof numberIsFinite !== "function") return false;
+ return !numberIsFinite("23") && numberIsFinite(34) && !numberIsFinite(Infinity);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-finite/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-finite/shim.js
new file mode 100644
index 0000000000..72dd7aae6e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-finite/shim.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (value) {
+ return (typeof value === "number") && isFinite(value);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-integer/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-integer/implement.js
new file mode 100644
index 0000000000..dd1f3bd0e8
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-integer/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Number, "isInteger", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-integer/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-integer/index.js
new file mode 100644
index 0000000000..71cde73a01
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-integer/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Number.isInteger
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-integer/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-integer/is-implemented.js
new file mode 100644
index 0000000000..f357c7178b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-integer/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var isInteger = Number.isInteger;
+ if (typeof isInteger !== "function") return false;
+ return !isInteger("23") && isInteger(34) && !isInteger(32.34);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-integer/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-integer/shim.js
new file mode 100644
index 0000000000..12058b5a46
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-integer/shim.js
@@ -0,0 +1,8 @@
+// Credit: http://www.2ality.com/2014/05/is-integer.html
+
+"use strict";
+
+module.exports = function (value) {
+ if (typeof value !== "number") return false;
+ return value % 1 === 0;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-nan/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-nan/implement.js
new file mode 100644
index 0000000000..2f9126c900
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-nan/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Number, "isNaN", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-nan/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-nan/index.js
new file mode 100644
index 0000000000..9128d5c013
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-nan/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Number.isNaN
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-nan/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-nan/is-implemented.js
new file mode 100644
index 0000000000..756838a413
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-nan/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var numberIsNaN = Number.isNaN;
+ if (typeof numberIsNaN !== "function") return false;
+ return !numberIsNaN({}) && numberIsNaN(NaN) && !numberIsNaN(34);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-nan/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-nan/shim.js
new file mode 100644
index 0000000000..b5730d1d64
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-nan/shim.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (value) {
+ // eslint-disable-next-line no-self-compare
+ return value !== value;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-natural.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-natural.js
new file mode 100644
index 0000000000..329966e32f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-natural.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isInteger = require("./is-integer");
+
+module.exports = function (num) {
+ return isInteger(num) && (num >= 0);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-number.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-number.js
new file mode 100644
index 0000000000..3da0712d2c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-number.js
@@ -0,0 +1,10 @@
+"use strict";
+
+var objToString = Object.prototype.toString, id = objToString.call(1);
+
+module.exports = function (value) {
+ return (
+ typeof value === "number" ||
+ (value instanceof Number || (typeof value === "object" && objToString.call(value) === id))
+ );
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-safe-integer/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-safe-integer/implement.js
new file mode 100644
index 0000000000..6092db75fa
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-safe-integer/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Number, "isSafeInteger", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-safe-integer/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-safe-integer/index.js
new file mode 100644
index 0000000000..d4314df154
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-safe-integer/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Number.isSafeInteger
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-safe-integer/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-safe-integer/is-implemented.js
new file mode 100644
index 0000000000..36b0db5611
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-safe-integer/is-implemented.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = function () {
+ var isSafeInteger = Number.isSafeInteger;
+ if (typeof isSafeInteger !== "function") return false;
+ return !isSafeInteger("23") && isSafeInteger(34232322323) &&
+ !isSafeInteger(9007199254740992);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/is-safe-integer/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-safe-integer/shim.js
new file mode 100644
index 0000000000..de7f22f37f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/is-safe-integer/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var isInteger = require("../is-integer/shim")
+ , maxValue = require("../max-safe-integer")
+
+ , abs = Math.abs;
+
+module.exports = function (value) {
+ if (!isInteger(value)) return false;
+ return abs(value) <= maxValue;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/max-safe-integer/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/max-safe-integer/implement.js
new file mode 100644
index 0000000000..be5a2933ab
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/max-safe-integer/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Number, "MAX_SAFE_INTEGER", { value: require("./"),
+ configurable: false,
+enumerable: false,
+writable: false });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/max-safe-integer/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/max-safe-integer/index.js
new file mode 100644
index 0000000000..75a41e7c05
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/max-safe-integer/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = Math.pow(2, 53) - 1;
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/max-safe-integer/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/max-safe-integer/is-implemented.js
new file mode 100644
index 0000000000..09a7da7504
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/max-safe-integer/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function () {
+ return typeof Number.MAX_SAFE_INTEGER === "number";
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/min-safe-integer/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/min-safe-integer/implement.js
new file mode 100644
index 0000000000..77d0274543
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/min-safe-integer/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Number, "MIN_SAFE_INTEGER", { value: require("./"),
+ configurable: false,
+enumerable: false,
+writable: false });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/min-safe-integer/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/min-safe-integer/index.js
new file mode 100644
index 0000000000..cde4514628
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/min-safe-integer/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = -(Math.pow(2, 53) - 1);
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/min-safe-integer/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/min-safe-integer/is-implemented.js
new file mode 100644
index 0000000000..7b63253fc3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/min-safe-integer/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function () {
+ return typeof Number.MIN_SAFE_INTEGER === "number";
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/to-integer.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/to-integer.js
new file mode 100644
index 0000000000..524395ce7c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/to-integer.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var sign = require("../math/sign")
+
+ , abs = Math.abs, floor = Math.floor;
+
+module.exports = function (value) {
+ if (isNaN(value)) return 0;
+ value = Number(value);
+ if ((value === 0) || !isFinite(value)) return value;
+ return sign(value) * floor(abs(value));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/to-pos-integer.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/to-pos-integer.js
new file mode 100644
index 0000000000..fe2813da56
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/to-pos-integer.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var toInteger = require("./to-integer")
+
+ , max = Math.max;
+
+module.exports = function (value) {
+ return max(0, toInteger(value));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/number/to-uint32.js b/kbase-extension/static/ext_packages/igv/es5-ext/number/to-uint32.js
new file mode 100644
index 0000000000..cb3590aa26
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/number/to-uint32.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (value) {
+ // eslint-disable-next-line no-bitwise
+ return value >>> 0;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/_iterate.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/_iterate.js
new file mode 100644
index 0000000000..1f0c85fd47
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/_iterate.js
@@ -0,0 +1,30 @@
+// Internal method, used by iteration functions.
+// Calls a function for each key-value pair found in object
+// Optionally takes compareFn to iterate object in specific order
+
+"use strict";
+
+var callable = require("./valid-callable")
+ , value = require("./valid-value")
+ , bind = Function.prototype.bind
+ , call = Function.prototype.call
+ , keys = Object.keys
+ , objPropertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (method, defVal) {
+ return function (obj, cb /*, thisArg, compareFn*/) {
+ var list, thisArg = arguments[2], compareFn = arguments[3];
+ obj = Object(value(obj));
+ callable(cb);
+
+ list = keys(obj);
+ if (compareFn) {
+ list.sort(typeof compareFn === "function" ? bind.call(compareFn, obj) : undefined);
+ }
+ if (typeof method !== "function") method = list[method];
+ return call.call(method, list, function (key, index) {
+ if (!objPropertyIsEnumerable.call(obj, key)) return defVal;
+ return call.call(cb, thisArg, obj[key], key, obj, index);
+ });
+ };
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/assign-deep.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/assign-deep.js
new file mode 100644
index 0000000000..558a5ce0b1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/assign-deep.js
@@ -0,0 +1,33 @@
+"use strict";
+
+var includes = require("../array/#/contains")
+ , uniq = require("../array/#/uniq")
+ , objForEach = require("./for-each")
+ , isPlainObject = require("./is-plain-object")
+ , ensureValue = require("./valid-value");
+
+var isArray = Array.isArray, slice = Array.prototype.slice;
+
+var deepAssign = function (target, source) {
+ if (isPlainObject(target)) {
+ if (!isPlainObject(source)) return source;
+ objForEach(source, function (value, key) {
+ target[key] = deepAssign(target[key], value);
+ });
+ return target;
+ }
+ if (isArray(target)) {
+ if (!isArray(source)) return source;
+ source.forEach(function (item) {
+ if (!includes.call(target, item)) target.push(item);
+ });
+ return target;
+ }
+ return source;
+};
+
+module.exports = function (target /*, ...objects*/) {
+ return uniq
+ .call([ensureValue(target)].concat(slice.call(arguments, 1).map(ensureValue)))
+ .reduce(deepAssign);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/assign/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/assign/implement.js
new file mode 100644
index 0000000000..de3c92f14f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/assign/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Object, "assign", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/assign/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/assign/index.js
new file mode 100644
index 0000000000..1dd31e6401
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/assign/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Object.assign
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/assign/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/assign/is-implemented.js
new file mode 100644
index 0000000000..6b90ea969d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/assign/is-implemented.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function () {
+ var assign = Object.assign, obj;
+ if (typeof assign !== "function") return false;
+ obj = { foo: "raz" };
+ assign(obj, { bar: "dwa" }, { trzy: "trzy" });
+ return (obj.foo + obj.bar + obj.trzy) === "razdwatrzy";
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/assign/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/assign/shim.js
new file mode 100644
index 0000000000..afa58f2f9f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/assign/shim.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var keys = require("../keys")
+ , value = require("../valid-value")
+ , max = Math.max;
+
+module.exports = function (dest, src /*, …srcn*/) {
+ var error, i, length = max(arguments.length, 2), assign;
+ dest = Object(value(dest));
+ assign = function (key) {
+ try {
+ dest[key] = src[key];
+ } catch (e) {
+ if (!error) error = e;
+ }
+ };
+ for (i = 1; i < length; ++i) {
+ src = arguments[i];
+ keys(src).forEach(assign);
+ }
+ if (error !== undefined) throw error;
+ return dest;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/clear.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/clear.js
new file mode 100644
index 0000000000..268cc5b5d5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/clear.js
@@ -0,0 +1,16 @@
+"use strict";
+
+var keys = require("./keys");
+
+module.exports = function (obj) {
+ var error;
+ keys(obj).forEach(function (key) {
+ try {
+ delete this[key];
+ } catch (e) {
+ if (!error) error = e;
+ }
+ }, obj);
+ if (error !== undefined) throw error;
+ return obj;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/compact.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/compact.js
new file mode 100644
index 0000000000..9943aedc7b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/compact.js
@@ -0,0 +1,10 @@
+"use strict";
+
+var filter = require("./filter")
+ , isValue = require("./is-value");
+
+module.exports = function (obj) {
+ return filter(obj, function (val) {
+ return isValue(val);
+ });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/compare.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/compare.js
new file mode 100644
index 0000000000..8d07858902
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/compare.js
@@ -0,0 +1,45 @@
+"use strict";
+
+var strCompare = require("../string/#/case-insensitive-compare")
+ , isObject = require("./is-object")
+ , isValue = require("./is-value")
+ , numIsNaN = require("../number/is-nan")
+ , resolve
+ , typeMap;
+
+typeMap = {
+ undefined: 0,
+ object: 1,
+ boolean: 2,
+ string: 3,
+ number: 4
+};
+
+resolve = function (a) {
+ if (isObject(a)) {
+ if (typeof a.valueOf !== "function") return NaN;
+ a = a.valueOf();
+ if (isObject(a)) {
+ if (typeof a.toString !== "function") return NaN;
+ a = a.toString();
+ if (typeof a !== "string") return NaN;
+ }
+ }
+ return a;
+};
+
+module.exports = function (val1, val2) {
+ if (val1 === val2) return 0; // Same
+
+ val1 = resolve(val1);
+ val2 = resolve(val2);
+ // eslint-disable-next-line eqeqeq
+ if (val1 == val2) return typeMap[typeof val1] - typeMap[typeof val2];
+ if (!isValue(val1)) return -1;
+ if (!isValue(val2)) return 1;
+ if (typeof val1 === "string" || typeof val2 === "string") {
+ return strCompare.call(val1, val2);
+ }
+ if (numIsNaN(val1) && numIsNaN(val2)) return 0; // Jslint: ignore
+ return Number(val1) - Number(val2);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/copy-deep.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/copy-deep.js
new file mode 100644
index 0000000000..39f9a1d691
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/copy-deep.js
@@ -0,0 +1,37 @@
+"use strict";
+
+var forEach = require("./for-each")
+ , isPlainObject = require("./is-plain-object")
+ , ensureValue = require("./valid-value")
+ , isArray = Array.isArray;
+
+var copyValue = function (value, ancestors, ancestorsCopy) {
+ var mode;
+ if (isPlainObject(value)) mode = "object";
+ else if (isArray(value)) mode = "array";
+ if (!mode) return value;
+
+ var copy = ancestorsCopy[ancestors.indexOf(value)];
+ if (copy) return copy;
+ copy = mode === "object" ? {} : [];
+
+ ancestors.push(value);
+ ancestorsCopy.push(copy);
+ if (mode === "object") {
+ forEach(value, function (item, key) {
+ copy[key] = copyValue(item, ancestors, ancestorsCopy);
+ });
+ } else {
+ value.forEach(function (item, index) {
+ copy[index] = copyValue(item, ancestors, ancestorsCopy);
+ });
+ }
+ ancestors.pop();
+ ancestorsCopy.pop();
+
+ return copy;
+};
+
+module.exports = function (source) {
+ return copyValue(ensureValue(source), [], []);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/copy.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/copy.js
new file mode 100644
index 0000000000..5368e42816
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/copy.js
@@ -0,0 +1,19 @@
+"use strict";
+
+var aFrom = require("../array/from")
+ , assign = require("./assign")
+ , value = require("./valid-value");
+
+module.exports = function (obj/*, propertyNames, options*/) {
+ var copy = Object(value(obj)), propertyNames = arguments[1], options = Object(arguments[2]);
+ if (copy !== obj && !propertyNames) return copy;
+ var result = {};
+ if (propertyNames) {
+ aFrom(propertyNames, function (propertyName) {
+ if (options.ensure || propertyName in obj) result[propertyName] = obj[propertyName];
+ });
+ } else {
+ assign(result, obj);
+ }
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/count.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/count.js
new file mode 100644
index 0000000000..8a2a71ef86
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/count.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var keys = require("./keys");
+
+module.exports = function (obj) {
+ return keys(obj).length;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/create.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/create.js
new file mode 100644
index 0000000000..9e3e6e8d18
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/create.js
@@ -0,0 +1,48 @@
+// Workaround for http://code.google.com/p/v8/issues/detail?id=2804
+
+"use strict";
+
+var create = Object.create, shim;
+
+if (!require("./set-prototype-of/is-implemented")()) {
+ shim = require("./set-prototype-of/shim");
+}
+
+module.exports = (function () {
+ var nullObject, polyProps, desc;
+ if (!shim) return create;
+ if (shim.level !== 1) return create;
+
+ nullObject = {};
+ polyProps = {};
+ desc = {
+ configurable: false,
+ enumerable: false,
+ writable: true,
+ value: undefined
+ };
+ Object.getOwnPropertyNames(Object.prototype).forEach(function (name) {
+ if (name === "__proto__") {
+ polyProps[name] = {
+ configurable: true,
+ enumerable: false,
+ writable: true,
+ value: undefined
+ };
+ return;
+ }
+ polyProps[name] = desc;
+ });
+ Object.defineProperties(nullObject, polyProps);
+
+ Object.defineProperty(shim, "nullPolyfill", {
+ configurable: false,
+ enumerable: false,
+ writable: false,
+ value: nullObject
+ });
+
+ return function (prototype, props) {
+ return create(prototype === null ? nullObject : prototype, props);
+ };
+}());
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-array.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-array.js
new file mode 100644
index 0000000000..5ca7a9493b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-array.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var toShortString = require("../to-short-string-representation")
+ , isArray = require("./is-array-like");
+
+module.exports = function (value) {
+ if (isArray(value)) return value;
+ throw new TypeError(toShortString(value) + " is not a array");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-finite-number.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-finite-number.js
new file mode 100644
index 0000000000..4f6e4b4a88
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-finite-number.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var isFiniteNumber = require("./is-finite-number")
+ , safeToString = require("../safe-to-string");
+
+module.exports = function (value) {
+ if (isFiniteNumber(value)) return Number(value);
+ throw new TypeError(safeToString(value) + " does not represent a finite number value");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-integer.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-integer.js
new file mode 100644
index 0000000000..9ec64b5bd4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-integer.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var toShortString = require("../to-short-string-representation")
+ , isInteger = require("./is-integer");
+
+module.exports = function (num) {
+ if (!isInteger(num)) throw new TypeError(toShortString(num) + " is not a integer");
+ return Number(num);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-natural-number-value.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-natural-number-value.js
new file mode 100644
index 0000000000..1a901aa42c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-natural-number-value.js
@@ -0,0 +1,10 @@
+"use strict";
+
+var isNaturalValue = require("./is-natural-number-value")
+ , toShortString = require("../to-short-string-representation");
+
+module.exports = function (arg) {
+ var num = Number(arg);
+ if (!isNaturalValue(arg)) throw new TypeError(toShortString(arg) + " is not a natural number");
+ return num;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-natural-number.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-natural-number.js
new file mode 100644
index 0000000000..ec7e514671
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-natural-number.js
@@ -0,0 +1,10 @@
+"use strict";
+
+var isNatural = require("../number/is-natural")
+ , toShortString = require("../to-short-string-representation");
+
+module.exports = function (arg) {
+ var num = Number(arg);
+ if (!isNatural(num)) throw new TypeError(toShortString(arg) + " is not a natural number");
+ return num;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-plain-function.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-plain-function.js
new file mode 100644
index 0000000000..6cd9853e92
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-plain-function.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var safeToString = require("../safe-to-string")
+ , isPlainFunction = require("./is-plain-function");
+
+module.exports = function (value) {
+ if (!isPlainFunction(value)) {
+ throw new TypeError(safeToString(value) + " is not a plain function");
+ }
+ return value;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-promise.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-promise.js
new file mode 100644
index 0000000000..b5b535631e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-promise.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var safeToString = require("../safe-to-string")
+ , isPromise = require("./is-promise");
+
+module.exports = function (value) {
+ if (!isPromise(value)) throw new TypeError(safeToString(value) + " is not a promise");
+ return value;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-thenable.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-thenable.js
new file mode 100644
index 0000000000..c55c17ad40
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/ensure-thenable.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var safeToString = require("../safe-to-string")
+ , isThenable = require("./is-thenable");
+
+module.exports = function (value) {
+ if (!isThenable(value)) throw new TypeError(safeToString(value) + " is not a thenable");
+ return value;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/eq.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/eq.js
new file mode 100644
index 0000000000..031246800f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/eq.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var numIsNaN = require("../number/is-nan");
+
+module.exports = function (val1, val2) {
+ return val1 === val2 || (numIsNaN(val1) && numIsNaN(val2));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/every.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/every.js
new file mode 100644
index 0000000000..892b5485a2
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/every.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./_iterate")("every", true);
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/filter.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/filter.js
new file mode 100644
index 0000000000..c7dd969b7e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/filter.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var callable = require("./valid-callable")
+ , forEach = require("./for-each")
+ , call = Function.prototype.call;
+
+module.exports = function (obj, cb /*, thisArg*/) {
+ var result = {}, thisArg = arguments[2];
+ callable(cb);
+ forEach(obj, function (value, key, targetObj, index) {
+ if (call.call(cb, thisArg, value, key, targetObj, index)) result[key] = targetObj[key];
+ });
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/find-key.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/find-key.js
new file mode 100644
index 0000000000..6da6ba6f48
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/find-key.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./_iterate")(require("../array/#/find"), false);
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/find.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/find.js
new file mode 100644
index 0000000000..5960421a0f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/find.js
@@ -0,0 +1,10 @@
+"use strict";
+
+var findKey = require("./find-key")
+ , isValue = require("./is-value");
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (obj, cb /*, thisArg, compareFn*/) {
+ var key = findKey.apply(this, arguments);
+ return isValue(key) ? obj[key] : key;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/first-key.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/first-key.js
new file mode 100644
index 0000000000..3666de57bd
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/first-key.js
@@ -0,0 +1,13 @@
+"use strict";
+
+var value = require("./valid-value")
+ , objPropertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (obj) {
+ var i;
+ value(obj);
+ for (i in obj) {
+ if (objPropertyIsEnumerable.call(obj, i)) return i;
+ }
+ return null;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/flatten.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/flatten.js
new file mode 100644
index 0000000000..34e1ab09ba
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/flatten.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var isPlainObject = require("./is-plain-object")
+ , forEach = require("./for-each")
+
+ , process;
+
+process = function self(value, key) {
+ if (isPlainObject(value)) forEach(value, self, this);
+ else this[key] = value;
+};
+
+module.exports = function (obj) {
+ var flattened = {};
+ forEach(obj, process, flattened);
+ return flattened;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/for-each.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/for-each.js
new file mode 100644
index 0000000000..d282956d05
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/for-each.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./_iterate")("forEach");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/get-property-names.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/get-property-names.js
new file mode 100644
index 0000000000..7dfef2794c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/get-property-names.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var uniq = require("../array/#/uniq")
+ , value = require("./valid-value")
+ , push = Array.prototype.push
+ , getOwnPropertyNames = Object.getOwnPropertyNames
+ , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (obj) {
+ var keys;
+ obj = Object(value(obj));
+ keys = getOwnPropertyNames(obj);
+ while ((obj = getPrototypeOf(obj))) {
+ push.apply(keys, getOwnPropertyNames(obj));
+ }
+ return uniq.call(keys);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/index.js
new file mode 100644
index 0000000000..91e8818a86
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/index.js
@@ -0,0 +1,68 @@
+"use strict";
+
+module.exports = {
+ assign: require("./assign"),
+ assignDeep: require("./assign-deep"),
+ clear: require("./clear"),
+ compact: require("./compact"),
+ compare: require("./compare"),
+ copy: require("./copy"),
+ copyDeep: require("./copy-deep"),
+ count: require("./count"),
+ create: require("./create"),
+ ensureArray: require("./ensure-array"),
+ ensureFiniteNumber: require("./ensure-finite-number"),
+ ensureInteger: require("./ensure-integer"),
+ ensureNaturalNumber: require("./ensure-natural-number"),
+ ensureNaturalNumberValue: require("./ensure-natural-number-value"),
+ ensurePlainFunction: require("./ensure-plain-function"),
+ ensurePromise: require("./ensure-promise"),
+ ensureThenable: require("./ensure-thenable"),
+ eq: require("./eq"),
+ every: require("./every"),
+ filter: require("./filter"),
+ find: require("./find"),
+ findKey: require("./find-key"),
+ firstKey: require("./first-key"),
+ flatten: require("./flatten"),
+ forEach: require("./for-each"),
+ getPropertyNames: require("./get-property-names"),
+ is: require("./is"),
+ isArrayLike: require("./is-array-like"),
+ isCallable: require("./is-callable"),
+ isCopy: require("./is-copy"),
+ isCopyDeep: require("./is-copy-deep"),
+ isEmpty: require("./is-empty"),
+ isFiniteNumber: require("./is-finite-number"),
+ isInteger: require("./is-integer"),
+ isNaturalNumber: require("./is-natural-number"),
+ isNaturalNumberValue: require("./is-natural-number-value"),
+ isNumberValue: require("./is-number-value"),
+ isObject: require("./is-object"),
+ isPlainFunction: require("./is-plain-function"),
+ isPlainObject: require("./is-plain-object"),
+ isPromise: require("./is-promise"),
+ isThenable: require("./is-thenable"),
+ isValue: require("./is-value"),
+ keyOf: require("./key-of"),
+ keys: require("./keys"),
+ map: require("./map"),
+ mapKeys: require("./map-keys"),
+ normalizeOptions: require("./normalize-options"),
+ mixin: require("./mixin"),
+ mixinPrototypes: require("./mixin-prototypes"),
+ primitiveSet: require("./primitive-set"),
+ safeTraverse: require("./safe-traverse"),
+ serialize: require("./serialize"),
+ setPrototypeOf: require("./set-prototype-of"),
+ some: require("./some"),
+ toArray: require("./to-array"),
+ unserialize: require("./unserialize"),
+ validateArrayLike: require("./validate-array-like"),
+ validateArrayLikeObject: require("./validate-array-like-object"),
+ validCallable: require("./valid-callable"),
+ validObject: require("./valid-object"),
+ validateStringifiable: require("./validate-stringifiable"),
+ validateStringifiableValue: require("./validate-stringifiable-value"),
+ validValue: require("./valid-value")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/is-array-like.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-array-like.js
new file mode 100644
index 0000000000..fcb9115d27
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-array-like.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var isFunction = require("../function/is-function")
+ , isObject = require("./is-object")
+ , isValue = require("./is-value");
+
+module.exports = function (value) {
+ return (
+ (isValue(value) &&
+ typeof value.length === "number" &&
+ // Just checking ((typeof x === 'object') && (typeof x !== 'function'))
+ // won't work right for some cases, e.g.:
+ // type of instance of NodeList in Safari is a 'function'
+ ((isObject(value) && !isFunction(value)) || typeof value === "string")) ||
+ false
+ );
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/is-callable.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-callable.js
new file mode 100644
index 0000000000..c55915bc3a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-callable.js
@@ -0,0 +1,7 @@
+// Deprecated
+
+"use strict";
+
+module.exports = function (obj) {
+ return typeof obj === "function";
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/is-copy-deep.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-copy-deep.js
new file mode 100644
index 0000000000..a1206aead2
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-copy-deep.js
@@ -0,0 +1,59 @@
+"use strict";
+
+var eq = require("./eq")
+ , isPlainObject = require("./is-plain-object")
+ , value = require("./valid-value");
+
+var isArray = Array.isArray
+ , keys = Object.keys
+ , objPropertyIsEnumerable = Object.prototype.propertyIsEnumerable
+ , objHasOwnProperty = Object.prototype.hasOwnProperty
+ , eqArr
+ , eqVal
+ , eqObj;
+
+eqArr = function (arr1, arr2, recMap) {
+ var i, length = arr1.length;
+ if (length !== arr2.length) return false;
+ for (i = 0; i < length; ++i) {
+ if (objHasOwnProperty.call(arr1, i) !== objHasOwnProperty.call(arr2, i)) return false;
+ if (!eqVal(arr1[i], arr2[i], recMap)) return false;
+ }
+ return true;
+};
+
+eqObj = function (obj1, obj2, recMap) {
+ var k1 = keys(obj1), k2 = keys(obj2);
+ if (k1.length !== k2.length) return false;
+ return k1.every(function (key) {
+ if (!objPropertyIsEnumerable.call(obj2, key)) return false;
+ return eqVal(obj1[key], obj2[key], recMap);
+ });
+};
+
+eqVal = function (val1, val2, recMap) {
+ var i, eqX, c1, c2;
+ if (eq(val1, val2)) return true;
+ if (isPlainObject(val1)) {
+ if (!isPlainObject(val2)) return false;
+ eqX = eqObj;
+ } else if (isArray(val1) && isArray(val2)) {
+ eqX = eqArr;
+ } else {
+ return false;
+ }
+ c1 = recMap[0];
+ c2 = recMap[1];
+ i = c1.indexOf(val1);
+ if (i === -1) {
+ i = c1.push(val1) - 1;
+ c2[i] = [];
+ } else if (c2[i].indexOf(val2) !== -1) return true;
+ c2[i].push(val2);
+ return eqX(val1, val2, recMap);
+};
+
+module.exports = function (val1, val2) {
+ if (eq(value(val1), value(val2))) return true;
+ return eqVal(Object(val1), Object(val2), [[], []]);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/is-copy.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-copy.js
new file mode 100644
index 0000000000..8c6ae5e2cc
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-copy.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var eq = require("./eq")
+ , value = require("./valid-value")
+ , keys = Object.keys
+ , objPropertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (val1, val2) {
+ var k1, k2;
+
+ if (eq(value(val1), value(val2))) return true;
+
+ val1 = Object(val1);
+ val2 = Object(val2);
+
+ k1 = keys(val1);
+ k2 = keys(val2);
+ if (k1.length !== k2.length) return false;
+ return k1.every(function (key) {
+ if (!objPropertyIsEnumerable.call(val2, key)) return false;
+ return eq(val1[key], val2[key]);
+ });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/is-empty.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-empty.js
new file mode 100644
index 0000000000..dbc52d0cc5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-empty.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var value = require("./valid-value")
+ , objPropertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (obj) {
+ var i;
+ value(obj);
+ for (i in obj) {
+ // Jslint: ignore
+ if (objPropertyIsEnumerable.call(obj, i)) return false;
+ }
+ return true;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/is-finite-number.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-finite-number.js
new file mode 100644
index 0000000000..78ed669202
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-finite-number.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isNumber = require("./is-number-value");
+
+module.exports = function (value) {
+ return isNumber(value) && isFinite(value);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/is-integer.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-integer.js
new file mode 100644
index 0000000000..1745b82944
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-integer.js
@@ -0,0 +1,10 @@
+"use strict";
+
+var isInteger = require("../number/is-integer")
+ , isValue = require("./is-value");
+
+module.exports = function (arg) {
+ if (!isValue(arg)) return false;
+ arg = Number(arg);
+ return isInteger(arg);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/is-natural-number-value.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-natural-number-value.js
new file mode 100644
index 0000000000..c74452187e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-natural-number-value.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var isNaturalNumber = require("./is-natural-number")
+ , isValue = require("./is-value");
+
+module.exports = function (arg) {
+ if (!isValue(arg)) return false;
+ return isNaturalNumber(arg);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/is-natural-number.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-natural-number.js
new file mode 100644
index 0000000000..37d7458635
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-natural-number.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isNatural = require("../number/is-natural");
+
+module.exports = function (arg) {
+ return isNatural(Number(arg));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/is-number-value.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-number-value.js
new file mode 100644
index 0000000000..e91527686b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-number-value.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var isValue = require("./is-value");
+
+module.exports = function (value) {
+ if (!isValue(value)) return false;
+ try {
+ return !isNaN(value);
+ } catch (e) {
+ return false;
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/is-object.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-object.js
new file mode 100644
index 0000000000..846ae21758
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-object.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var isValue = require("./is-value");
+
+var map = { function: true, object: true };
+
+module.exports = function (value) {
+ return (isValue(value) && map[typeof value]) || false;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/is-plain-function.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-plain-function.js
new file mode 100644
index 0000000000..a2f32348a1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-plain-function.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var isClassStr = RegExp.prototype.test.bind(/^\s*class[\s{/}]/)
+ , fnToString = Function.prototype.toString;
+
+module.exports = function (fn) {
+ if (typeof fn !== "function") return false;
+ if (typeof fn.call !== "function") return false;
+ if (typeof fn.apply !== "function") return false;
+ return !isClassStr(fnToString.call(fn));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/is-plain-object.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-plain-object.js
new file mode 100644
index 0000000000..ff15328961
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-plain-object.js
@@ -0,0 +1,20 @@
+"use strict";
+
+var getPrototypeOf = Object.getPrototypeOf
+ , prototype = Object.prototype
+ , objToString = prototype.toString
+ , id = Object().toString();
+
+module.exports = function (value) {
+ var proto, valueConstructor;
+ if (!value || typeof value !== "object" || objToString.call(value) !== id) {
+ return false;
+ }
+ proto = getPrototypeOf(value);
+ if (proto === null) {
+ valueConstructor = value.constructor;
+ if (typeof valueConstructor !== "function") return true;
+ return valueConstructor.prototype !== value;
+ }
+ return proto === prototype || getPrototypeOf(proto) === null;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/is-promise.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-promise.js
new file mode 100644
index 0000000000..33d6df133d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-promise.js
@@ -0,0 +1,4 @@
+"use strict";
+
+// In next major this check will also confirm on promise constructor
+module.exports = require("./is-thenable");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/is-thenable.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-thenable.js
new file mode 100644
index 0000000000..a37bffb6ed
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-thenable.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isCallable = require("./is-callable")
+ , isObject = require("./is-object");
+
+module.exports = function (value) {
+ return isObject(value) && isCallable(value.then);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/is-value.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-value.js
new file mode 100644
index 0000000000..82af8f3389
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/is-value.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var _undefined = require("../function/noop")(); // Support ES3 engines
+
+module.exports = function (val) {
+ return (val !== _undefined) && (val !== null);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/is.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/is.js
new file mode 100644
index 0000000000..54baadec88
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/is.js
@@ -0,0 +1,10 @@
+// Implementation credits go to:
+// http://wiki.ecmascript.org/doku.php?id=harmony:egal
+
+"use strict";
+
+var numIsNaN = require("../number/is-nan");
+
+module.exports = function (val1, val2) {
+ return val1 === val2 ? val1 !== 0 || 1 / val1 === 1 / val2 : numIsNaN(val1) && numIsNaN(val2);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/key-of.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/key-of.js
new file mode 100644
index 0000000000..dc640e4dcb
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/key-of.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var eq = require("./eq")
+ , some = require("./some");
+
+module.exports = function (obj, searchValue) {
+ var result;
+ return some(obj, function (value, name) {
+ if (eq(value, searchValue)) {
+ result = name;
+ return true;
+ }
+ return false;
+ })
+ ? result
+ : null;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/keys/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/keys/implement.js
new file mode 100644
index 0000000000..7119a706e3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/keys/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(Object, "keys", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/keys/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/keys/index.js
new file mode 100644
index 0000000000..b56b5347cc
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/keys/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Object.keys
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/keys/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/keys/is-implemented.js
new file mode 100644
index 0000000000..7abd33a886
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/keys/is-implemented.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function () {
+ try {
+ Object.keys("primitive");
+ return true;
+ } catch (e) {
+ return false;
+}
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/keys/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/keys/shim.js
new file mode 100644
index 0000000000..bc802017e5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/keys/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var isValue = require("../is-value");
+
+var keys = Object.keys;
+
+module.exports = function (object) {
+ return keys(isValue(object) ? Object(object) : object);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/map-keys.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/map-keys.js
new file mode 100644
index 0000000000..72dada0707
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/map-keys.js
@@ -0,0 +1,18 @@
+"use strict";
+
+var callable = require("./valid-callable")
+ , forEach = require("./for-each")
+ , call = Function.prototype.call;
+
+module.exports = function (obj, cb /*, thisArg*/) {
+ var result = {}, thisArg = arguments[2];
+ callable(cb);
+ forEach(
+ obj,
+ function (value, key, targetObj, index) {
+ result[call.call(cb, thisArg, key, value, this, index)] = value;
+ },
+ obj
+ );
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/map.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/map.js
new file mode 100644
index 0000000000..7b718db174
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/map.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var callable = require("./valid-callable")
+ , forEach = require("./for-each")
+ , call = Function.prototype.call;
+
+module.exports = function (obj, cb /*, thisArg*/) {
+ var result = {}, thisArg = arguments[2];
+ callable(cb);
+ forEach(obj, function (value, key, targetObj, index) {
+ result[key] = call.call(cb, thisArg, value, key, targetObj, index);
+ });
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/mixin-prototypes.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/mixin-prototypes.js
new file mode 100644
index 0000000000..9094aef1d9
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/mixin-prototypes.js
@@ -0,0 +1,37 @@
+"use strict";
+
+var value = require("./valid-value")
+ , mixin = require("./mixin")
+ , defineProperty = Object.defineProperty
+ , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
+ , getOwnPropertyNames = Object.getOwnPropertyNames
+ , getPrototypeOf = Object.getPrototypeOf
+ , objHasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function (target, source) {
+ var error, end, define;
+ target = Object(value(target));
+ source = Object(value(source));
+ end = getPrototypeOf(target);
+ if (source === end) return target;
+ try {
+ mixin(target, source);
+ } catch (e) {
+ error = e;
+ }
+ source = getPrototypeOf(source);
+ define = function (name) {
+ if (objHasOwnProperty.call(target, name)) return;
+ try {
+ defineProperty(target, name, getOwnPropertyDescriptor(source, name));
+ } catch (e) {
+ error = e;
+ }
+ };
+ while (source && source !== end) {
+ getOwnPropertyNames(source).forEach(define);
+ source = getPrototypeOf(source);
+ }
+ if (error) throw error;
+ return target;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/mixin.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/mixin.js
new file mode 100644
index 0000000000..4da7cd519d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/mixin.js
@@ -0,0 +1,31 @@
+"use strict";
+
+var value = require("./valid-value")
+
+ , defineProperty = Object.defineProperty
+ , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
+ , getOwnPropertyNames = Object.getOwnPropertyNames
+ , getOwnPropertySymbols = Object.getOwnPropertySymbols;
+
+module.exports = function (target, source) {
+ var error, sourceObject = Object(value(source));
+ target = Object(value(target));
+ getOwnPropertyNames(sourceObject).forEach(function (name) {
+ try {
+ defineProperty(target, name, getOwnPropertyDescriptor(source, name));
+ } catch (e) {
+ error = e;
+}
+ });
+ if (typeof getOwnPropertySymbols === "function") {
+ getOwnPropertySymbols(sourceObject).forEach(function (symbol) {
+ try {
+ defineProperty(target, symbol, getOwnPropertyDescriptor(source, symbol));
+ } catch (e) {
+ error = e;
+}
+ });
+ }
+ if (error !== undefined) throw error;
+ return target;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/normalize-options.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/normalize-options.js
new file mode 100644
index 0000000000..6c394fe9cb
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/normalize-options.js
@@ -0,0 +1,20 @@
+"use strict";
+
+var isValue = require("./is-value");
+
+var forEach = Array.prototype.forEach, create = Object.create;
+
+var process = function (src, obj) {
+ var key;
+ for (key in src) obj[key] = src[key];
+};
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (opts1 /*, …options*/) {
+ var result = create(null);
+ forEach.call(arguments, function (options) {
+ if (!isValue(options)) return;
+ process(Object(options), result);
+ });
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/primitive-set.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/primitive-set.js
new file mode 100644
index 0000000000..235eaa7faf
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/primitive-set.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var forEach = Array.prototype.forEach, create = Object.create;
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (arg /*, …args*/) {
+ var set = create(null);
+ forEach.call(arguments, function (name) {
+ set[name] = true;
+ });
+ return set;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/safe-traverse.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/safe-traverse.js
new file mode 100644
index 0000000000..7b72d55500
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/safe-traverse.js
@@ -0,0 +1,16 @@
+"use strict";
+
+var value = require("./valid-value")
+ , isValue = require("./is-value");
+
+module.exports = function (obj /*, …names*/) {
+ var length, current = 1;
+ value(obj);
+ length = arguments.length - 1;
+ if (!length) return obj;
+ while (current < length) {
+ obj = obj[arguments[current++]];
+ if (!isValue(obj)) return undefined;
+ }
+ return obj[arguments[current]];
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/serialize.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/serialize.js
new file mode 100644
index 0000000000..4be9aeb1b4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/serialize.js
@@ -0,0 +1,41 @@
+"use strict";
+
+var toArray = require("./to-array")
+ , isDate = require("../date/is-date")
+ , isValue = require("../object/is-value")
+ , isRegExp = require("../reg-exp/is-reg-exp");
+
+var isArray = Array.isArray
+ , stringify = JSON.stringify
+ , objHasOwnProperty = Object.prototype.hasOwnProperty;
+var keyValueToString = function (value, key) {
+ return stringify(key) + ":" + exports(value);
+};
+
+var sparseMap = function (arr) {
+ var i, length = arr.length, result = new Array(length);
+ for (i = 0; i < length; ++i) {
+ if (!objHasOwnProperty.call(arr, i)) continue;
+ result[i] = exports(arr[i]);
+ }
+ return result;
+};
+
+module.exports = exports = function (obj) {
+ if (!isValue(obj)) return String(obj);
+ switch (typeof obj) {
+ case "string":
+ return stringify(obj);
+ case "number":
+ case "boolean":
+ case "function":
+ return String(obj);
+ case "object":
+ if (isArray(obj)) return "[" + sparseMap(obj) + "]";
+ if (isRegExp(obj)) return String(obj);
+ if (isDate(obj)) return "new Date(" + obj.valueOf() + ")";
+ return "{" + toArray(obj, keyValueToString) + "}";
+ default:
+ throw new TypeError("Serialization of " + String(obj) + "is unsupported");
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/set-prototype-of/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/set-prototype-of/implement.js
new file mode 100644
index 0000000000..1b91aebaf7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/set-prototype-of/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var shim;
+
+if (!require("./is-implemented")() && (shim = require("./shim"))) {
+ Object.defineProperty(Object, "setPrototypeOf",
+ { value: shim, configurable: true, enumerable: false, writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/set-prototype-of/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/set-prototype-of/index.js
new file mode 100644
index 0000000000..e035173f6e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/set-prototype-of/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? Object.setPrototypeOf
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/set-prototype-of/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/set-prototype-of/is-implemented.js
new file mode 100644
index 0000000000..1a00627b79
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/set-prototype-of/is-implemented.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var create = Object.create, getPrototypeOf = Object.getPrototypeOf, plainObject = {};
+
+module.exports = function (/* CustomCreate*/) {
+ var setPrototypeOf = Object.setPrototypeOf, customCreate = arguments[0] || create;
+ if (typeof setPrototypeOf !== "function") return false;
+ return getPrototypeOf(setPrototypeOf(customCreate(null), plainObject)) === plainObject;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/set-prototype-of/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/set-prototype-of/shim.js
new file mode 100644
index 0000000000..bc2178444a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/set-prototype-of/shim.js
@@ -0,0 +1,86 @@
+/* eslint no-proto: "off" */
+
+// Big thanks to @WebReflection for sorting this out
+// https://gist.github.com/WebReflection/5593554
+
+"use strict";
+
+var isObject = require("../is-object")
+ , value = require("../valid-value")
+ , objIsPrototypeOf = Object.prototype.isPrototypeOf
+ , defineProperty = Object.defineProperty
+ , nullDesc = {
+ configurable: true,
+ enumerable: false,
+ writable: true,
+ value: undefined
+}
+ , validate;
+
+validate = function (obj, prototype) {
+ value(obj);
+ if (prototype === null || isObject(prototype)) return obj;
+ throw new TypeError("Prototype must be null or an object");
+};
+
+module.exports = (function (status) {
+ var fn, set;
+ if (!status) return null;
+ if (status.level === 2) {
+ if (status.set) {
+ set = status.set;
+ fn = function (obj, prototype) {
+ set.call(validate(obj, prototype), prototype);
+ return obj;
+ };
+ } else {
+ fn = function (obj, prototype) {
+ validate(obj, prototype).__proto__ = prototype;
+ return obj;
+ };
+ }
+ } else {
+ fn = function self(obj, prototype) {
+ var isNullBase;
+ validate(obj, prototype);
+ isNullBase = objIsPrototypeOf.call(self.nullPolyfill, obj);
+ if (isNullBase) delete self.nullPolyfill.__proto__;
+ if (prototype === null) prototype = self.nullPolyfill;
+ obj.__proto__ = prototype;
+ if (isNullBase) defineProperty(self.nullPolyfill, "__proto__", nullDesc);
+ return obj;
+ };
+ }
+ return Object.defineProperty(fn, "level", {
+ configurable: false,
+ enumerable: false,
+ writable: false,
+ value: status.level
+ });
+}(
+ (function () {
+ var tmpObj1 = Object.create(null)
+ , tmpObj2 = {}
+ , set
+ , desc = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__");
+
+ if (desc) {
+ try {
+ set = desc.set; // Opera crashes at this point
+ set.call(tmpObj1, tmpObj2);
+ } catch (ignore) {}
+ if (Object.getPrototypeOf(tmpObj1) === tmpObj2) return { set: set, level: 2 };
+ }
+
+ tmpObj1.__proto__ = tmpObj2;
+ if (Object.getPrototypeOf(tmpObj1) === tmpObj2) return { level: 2 };
+
+ tmpObj1 = {};
+ tmpObj1.__proto__ = tmpObj2;
+ if (Object.getPrototypeOf(tmpObj1) === tmpObj2) return { level: 1 };
+
+ return false;
+ })()
+));
+
+require("../create");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/some.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/some.js
new file mode 100644
index 0000000000..c919466b21
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/some.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./_iterate")("some", false);
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/to-array.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/to-array.js
new file mode 100644
index 0000000000..6ed50a8eb7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/to-array.js
@@ -0,0 +1,24 @@
+"use strict";
+
+var callable = require("./valid-callable")
+ , isValue = require("./is-value")
+ , forEach = require("./for-each")
+ , call = Function.prototype.call
+ , defaultCb = function (value, key) {
+ return [key, value];
+};
+
+module.exports = function (obj /*, cb, thisArg, compareFn*/) {
+ var a = [], cb = arguments[1], thisArg = arguments[2];
+ cb = isValue(cb) ? callable(cb) : defaultCb;
+
+ forEach(
+ obj,
+ function (value, key, targetObj, index) {
+ a.push(call.call(cb, thisArg, value, key, this, index));
+ },
+ obj,
+ arguments[3]
+ );
+ return a;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/unserialize.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/unserialize.js
new file mode 100644
index 0000000000..7574514397
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/unserialize.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var value = require("./valid-value");
+
+module.exports = exports = function (code) {
+ // eslint-disable-next-line no-new-func
+ return new Function("return " + value(code))();
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/valid-callable.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/valid-callable.js
new file mode 100644
index 0000000000..a97fb3eaf3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/valid-callable.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (fn) {
+ if (typeof fn !== "function") throw new TypeError(fn + " is not a function");
+ return fn;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/valid-object.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/valid-object.js
new file mode 100644
index 0000000000..74b5e5f27d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/valid-object.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isObject = require("./is-object");
+
+module.exports = function (value) {
+ if (!isObject(value)) throw new TypeError(value + " is not an Object");
+ return value;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/valid-value.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/valid-value.js
new file mode 100644
index 0000000000..d0ced8a471
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/valid-value.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isValue = require("./is-value");
+
+module.exports = function (value) {
+ if (!isValue(value)) throw new TypeError("Cannot use null or undefined");
+ return value;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/validate-array-like-object.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/validate-array-like-object.js
new file mode 100644
index 0000000000..d7c45b365f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/validate-array-like-object.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var isArrayLike = require("./is-array-like")
+ , isObject = require("./is-object");
+
+module.exports = function (obj) {
+ if (isObject(obj) && isArrayLike(obj)) return obj;
+ throw new TypeError(obj + " is not array-like object");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/validate-array-like.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/validate-array-like.js
new file mode 100644
index 0000000000..07aa794956
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/validate-array-like.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isArrayLike = require("./is-array-like");
+
+module.exports = function (obj) {
+ if (isArrayLike(obj)) return obj;
+ throw new TypeError(obj + " is not array-like value");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/validate-stringifiable-value.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/validate-stringifiable-value.js
new file mode 100644
index 0000000000..5f47042813
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/validate-stringifiable-value.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var ensureValue = require("./valid-value")
+ , stringifiable = require("./validate-stringifiable");
+
+module.exports = function (value) {
+ return stringifiable(ensureValue(value));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/object/validate-stringifiable.js b/kbase-extension/static/ext_packages/igv/es5-ext/object/validate-stringifiable.js
new file mode 100644
index 0000000000..2b1f12714e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/object/validate-stringifiable.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var isCallable = require("./is-callable");
+
+module.exports = function (stringifiable) {
+ try {
+ if (stringifiable && isCallable(stringifiable.toString)) return stringifiable.toString();
+ return String(stringifiable);
+ } catch (e) {
+ throw new TypeError("Passed argument cannot be stringifed");
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/optional-chaining.js b/kbase-extension/static/ext_packages/igv/es5-ext/optional-chaining.js
new file mode 100644
index 0000000000..f1811279ef
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/optional-chaining.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var isValue = require("./object/is-value");
+
+var slice = Array.prototype.slice;
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (value, propertyName1 /*, …propertyNamen*/) {
+ var propertyNames = slice.call(arguments, 1), index = 0, length = propertyNames.length;
+ while (isValue(value) && index < length) value = value[propertyNames[index++]];
+ return index === length ? value : undefined;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/package.json b/kbase-extension/static/ext_packages/igv/es5-ext/package.json
new file mode 100644
index 0000000000..eac9fc712c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/package.json
@@ -0,0 +1,90 @@
+{
+ "_args": [
+ [
+ "es5-ext@0.10.42",
+ "/Users/jim/DMZ/narrative-mar-2018/kbase-extension/static/ext_components"
+ ]
+ ],
+ "_from": "es5-ext@0.10.42",
+ "_id": "es5-ext@0.10.42",
+ "_inBundle": false,
+ "_integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==",
+ "_location": "/es5-ext",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "version",
+ "registry": true,
+ "raw": "es5-ext@0.10.42",
+ "name": "es5-ext",
+ "escapedName": "es5-ext",
+ "rawSpec": "0.10.42",
+ "saveSpec": null,
+ "fetchSpec": "0.10.42"
+ },
+ "_requiredBy": [
+ "/d",
+ "/es6-iterator",
+ "/es6-set",
+ "/es6-symbol",
+ "/event-emitter"
+ ],
+ "_resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz",
+ "_spec": "0.10.42",
+ "_where": "/Users/jim/DMZ/narrative-mar-2018/kbase-extension/static/ext_components",
+ "author": {
+ "name": "Mariusz Nowak",
+ "email": "medyk@medikoo.com",
+ "url": "http://www.medikoo.com/"
+ },
+ "bugs": {
+ "url": "https://github.com/medikoo/es5-ext/issues"
+ },
+ "dependencies": {
+ "es6-iterator": "~2.0.3",
+ "es6-symbol": "~3.1.1",
+ "next-tick": "1"
+ },
+ "description": "ECMAScript extensions and shims",
+ "devDependencies": {
+ "eslint": "^4.15",
+ "eslint-config-medikoo-es5": "^1.4.8",
+ "tad": "~0.2.7"
+ },
+ "eslintConfig": {
+ "extends": "medikoo-es5",
+ "root": true,
+ "rules": {
+ "no-extend-native": "off"
+ }
+ },
+ "homepage": "https://github.com/medikoo/es5-ext#readme",
+ "keywords": [
+ "ecmascript",
+ "ecmascript5",
+ "ecmascript6",
+ "es5",
+ "es6",
+ "extensions",
+ "ext",
+ "addons",
+ "extras",
+ "harmony",
+ "javascript",
+ "polyfill",
+ "shim",
+ "util",
+ "utils",
+ "utilities"
+ ],
+ "license": "ISC",
+ "name": "es5-ext",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/medikoo/es5-ext.git"
+ },
+ "scripts": {
+ "lint": "eslint --ignore-path=.gitignore .",
+ "test": "node ./node_modules/tad/bin/tad"
+ },
+ "version": "0.10.42"
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/promise/#/as-callback.js b/kbase-extension/static/ext_packages/igv/es5-ext/promise/#/as-callback.js
new file mode 100644
index 0000000000..5b61d1ba6d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/promise/#/as-callback.js
@@ -0,0 +1,19 @@
+"use strict";
+
+var ensurePlainFunction = require("../../object/ensure-plain-function")
+ , ensureThenable = require("../../object/ensure-thenable")
+ , microtaskDelay = require("../../function/#/microtask-delay");
+
+module.exports = function (callback) {
+ ensureThenable(this);
+ ensurePlainFunction(callback);
+ // Rely on microtaskDelay to escape eventual error swallowing
+ this.then(
+ microtaskDelay.call(function (value) {
+ callback(null, value);
+ }),
+ microtaskDelay.call(function (reason) {
+ callback(reason);
+ })
+ );
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/promise/#/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/promise/#/index.js
new file mode 100644
index 0000000000..557a4e7644
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/promise/#/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = {
+ asCallback: require("./as-callback")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/promise/.eslintrc.json b/kbase-extension/static/ext_packages/igv/es5-ext/promise/.eslintrc.json
new file mode 100644
index 0000000000..fd5e0e9d3e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/promise/.eslintrc.json
@@ -0,0 +1,3 @@
+{
+ "globals": { "Promise": true }
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/promise/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/promise/index.js
new file mode 100644
index 0000000000..6232b41825
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/promise/index.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = {
+ "#": require("./#"),
+ "lazy": require("./lazy")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/promise/lazy.js b/kbase-extension/static/ext_packages/igv/es5-ext/promise/lazy.js
new file mode 100644
index 0000000000..9611ef1dac
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/promise/lazy.js
@@ -0,0 +1,38 @@
+"use strict";
+
+var isFunction = require("../function/is-function");
+
+module.exports = function (executor) {
+ var Constructor;
+ if (isFunction(this)) {
+ Constructor = this;
+ } else if (typeof Promise === "function") {
+ Constructor = Promise;
+ } else {
+ throw new TypeError("Could not resolve Promise constuctor");
+ }
+
+ var lazyThen;
+ var promise = new Constructor(function (resolve, reject) {
+ lazyThen = function (onSuccess, onFailure) {
+ if (!hasOwnProperty.call(this, "then")) {
+ // Sanity check
+ throw new Error("Unexpected (inherited) lazy then invocation");
+ }
+
+ try {
+ executor(resolve, reject);
+ } catch (reason) {
+ reject(reason);
+ }
+ delete this.then;
+ return this.then(onSuccess, onFailure);
+ };
+ });
+
+ return Object.defineProperty(promise, "then", {
+ configurable: true,
+ writable: true,
+ value: lazyThen
+ });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/index.js
new file mode 100644
index 0000000000..9b098e0e24
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/index.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = {
+ isSticky: require("./is-sticky"),
+ isUnicode: require("./is-unicode"),
+ match: require("./match"),
+ replace: require("./replace"),
+ search: require("./search"),
+ split: require("./split")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/is-sticky.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/is-sticky.js
new file mode 100644
index 0000000000..2d4bb2a652
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/is-sticky.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var validRegExp = require("../valid-reg-exp")
+
+ , re = /\/[a-xz]*y[a-xz]*$/;
+
+module.exports = function () {
+ return Boolean(String(validRegExp(this)).match(re));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/is-unicode.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/is-unicode.js
new file mode 100644
index 0000000000..4c1ad9e2c5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/is-unicode.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var validRegExp = require("../valid-reg-exp")
+
+ , re = /\/[a-xz]*u[a-xz]*$/;
+
+module.exports = function () {
+ return Boolean(String(validRegExp(this)).match(re));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/match/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/match/implement.js
new file mode 100644
index 0000000000..ba89bcec1a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/match/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(RegExp.prototype, "match", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/match/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/match/index.js
new file mode 100644
index 0000000000..b74d2f295e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/match/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? RegExp.prototype.match
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/match/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/match/is-implemented.js
new file mode 100644
index 0000000000..a5065fc72e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/match/is-implemented.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var re = /foo/;
+
+module.exports = function () {
+ if (typeof re.match !== "function") return false;
+ return re.match("barfoobar") && !re.match("elo");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/match/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/match/shim.js
new file mode 100644
index 0000000000..2955821861
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/match/shim.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var validRegExp = require("../../valid-reg-exp");
+
+module.exports = function (string) {
+ validRegExp(this);
+ return String(string).match(this);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/replace/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/replace/implement.js
new file mode 100644
index 0000000000..0db82917dc
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/replace/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(RegExp.prototype, "replace", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/replace/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/replace/index.js
new file mode 100644
index 0000000000..41ff4ba0c3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/replace/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? RegExp.prototype.replace
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/replace/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/replace/is-implemented.js
new file mode 100644
index 0000000000..0a2e7c2fe8
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/replace/is-implemented.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var re = /foo/;
+
+module.exports = function () {
+ if (typeof re.replace !== "function") return false;
+ return re.replace("foobar", "mar") === "marbar";
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/replace/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/replace/shim.js
new file mode 100644
index 0000000000..66f5d5b7ce
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/replace/shim.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var validRegExp = require("../../valid-reg-exp");
+
+module.exports = function (string, replaceValue) {
+ validRegExp(this);
+ return String(string).replace(this, replaceValue);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/search/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/search/implement.js
new file mode 100644
index 0000000000..34452615d0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/search/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(RegExp.prototype, "search", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/search/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/search/index.js
new file mode 100644
index 0000000000..a17213e4de
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/search/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? RegExp.prototype.search
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/search/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/search/is-implemented.js
new file mode 100644
index 0000000000..7f38669f10
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/search/is-implemented.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var re = /foo/;
+
+module.exports = function () {
+ if (typeof re.search !== "function") return false;
+ return re.search("barfoo") === 3;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/search/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/search/shim.js
new file mode 100644
index 0000000000..c97a78731c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/search/shim.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var validRegExp = require("../../valid-reg-exp");
+
+module.exports = function (string) {
+ validRegExp(this);
+ return String(string).search(this);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/split/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/split/implement.js
new file mode 100644
index 0000000000..d94acdd858
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/split/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(RegExp.prototype, "split", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/split/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/split/index.js
new file mode 100644
index 0000000000..7942f452d6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/split/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? RegExp.prototype.split
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/split/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/split/is-implemented.js
new file mode 100644
index 0000000000..90fca0cc86
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/split/is-implemented.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var re = /\|/;
+
+module.exports = function () {
+ if (typeof re.split !== "function") return false;
+ return re.split("bar|foo")[1] === "foo";
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/split/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/split/shim.js
new file mode 100644
index 0000000000..c9c73cce26
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/split/shim.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var validRegExp = require("../../valid-reg-exp");
+
+module.exports = function (string) {
+ validRegExp(this);
+ return String(string).split(this);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/sticky/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/sticky/implement.js
new file mode 100644
index 0000000000..f636890f47
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/sticky/implement.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var isSticky = require("../is-sticky");
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(RegExp.prototype, "sticky", { configurable: true,
+ enumerable: false,
+get: isSticky });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/sticky/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/sticky/is-implemented.js
new file mode 100644
index 0000000000..a1ade11148
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/sticky/is-implemented.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function () {
+ var dummyRegExp = /a/;
+ // We need to do check on instance and not on prototype due to how ES2015 spec evolved:
+ // https://github.com/tc39/ecma262/issues/262
+ // https://github.com/tc39/ecma262/pull/263
+ // https://bugs.chromium.org/p/v8/issues/detail?id=4617
+ return "sticky" in dummyRegExp;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/unicode/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/unicode/implement.js
new file mode 100644
index 0000000000..a5fb20365b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/unicode/implement.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var isUnicode = require("../is-unicode");
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(RegExp.prototype, "unicode", { configurable: true,
+ enumerable: false,
+get: isUnicode });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/unicode/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/unicode/is-implemented.js
new file mode 100644
index 0000000000..48605d72a1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/#/unicode/is-implemented.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function () {
+ var dummyRegExp = /a/;
+ // We need to do check on instance and not on prototype due to how ES2015 spec evolved:
+ // https://github.com/tc39/ecma262/issues/262
+ // https://github.com/tc39/ecma262/pull/263
+ // https://bugs.chromium.org/p/v8/issues/detail?id=4617
+ return "unicode" in dummyRegExp;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/escape.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/escape.js
new file mode 100644
index 0000000000..964e3c61ac
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/escape.js
@@ -0,0 +1,11 @@
+// Thanks to Andrew Clover:
+// http://stackoverflow.com/questions/3561493
+// /is-there-a-regexp-escape-function-in-javascript
+
+"use strict";
+
+var re = /[-/\\^$*+?.()|[\]{}]/g;
+
+module.exports = function (str) {
+ return String(str).replace(re, "\\$&");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/index.js
new file mode 100644
index 0000000000..f023fe0398
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/index.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = {
+ "#": require("./#"),
+ "escape": require("./escape"),
+ "isRegExp": require("./is-reg-exp"),
+ "validRegExp": require("./valid-reg-exp")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/is-reg-exp.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/is-reg-exp.js
new file mode 100644
index 0000000000..b966b0f263
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/is-reg-exp.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var objToString = Object.prototype.toString, id = objToString.call(/a/);
+
+module.exports = function (value) {
+ return (value && (value instanceof RegExp || objToString.call(value) === id)) || false;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/valid-reg-exp.js b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/valid-reg-exp.js
new file mode 100644
index 0000000000..a05927a7eb
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/reg-exp/valid-reg-exp.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isRegExp = require("./is-reg-exp");
+
+module.exports = function (value) {
+ if (!isRegExp(value)) throw new TypeError(value + " is not a RegExp object");
+ return value;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/safe-to-string.js b/kbase-extension/static/ext_packages/igv/es5-ext/safe-to-string.js
new file mode 100644
index 0000000000..8c3ad3b09e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/safe-to-string.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var isCallable = require("./object/is-callable");
+
+module.exports = function (value) {
+ try {
+ if (value && isCallable(value.toString)) return value.toString();
+ return String(value);
+ } catch (e) {
+ return "[Non-coercible (to string) value]";
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/@@iterator/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/@@iterator/implement.js
new file mode 100644
index 0000000000..ab85d7c7a4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/@@iterator/implement.js
@@ -0,0 +1,6 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(String.prototype, require("es6-symbol").iterator,
+ { value: require("./shim"), configurable: true, enumerable: false, writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/@@iterator/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/@@iterator/index.js
new file mode 100644
index 0000000000..b2bd1e863b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/@@iterator/index.js
@@ -0,0 +1,4 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? String.prototype[require("es6-symbol").iterator] : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/@@iterator/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/@@iterator/is-implemented.js
new file mode 100644
index 0000000000..bb8a8d6efa
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/@@iterator/is-implemented.js
@@ -0,0 +1,16 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator;
+
+module.exports = function () {
+ var str = "🙈f", iterator, result;
+ if (typeof str[iteratorSymbol] !== "function") return false;
+ iterator = str[iteratorSymbol]();
+ if (!iterator) return false;
+ if (typeof iterator.next !== "function") return false;
+ result = iterator.next();
+ if (!result) return false;
+ if (result.value !== "🙈") return false;
+ if (result.done !== false) return false;
+ return true;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/@@iterator/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/@@iterator/shim.js
new file mode 100644
index 0000000000..1eafee27fe
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/@@iterator/shim.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var StringIterator = require("es6-iterator/string")
+ , value = require("../../../object/valid-value");
+
+module.exports = function () {
+ return new StringIterator(value(this));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/at.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/at.js
new file mode 100644
index 0000000000..a8c291794b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/at.js
@@ -0,0 +1,35 @@
+// Based on: https://github.com/mathiasbynens/String.prototype.at
+// Thanks @mathiasbynens !
+
+"use strict";
+
+var toInteger = require("../../number/to-integer")
+ , validValue = require("../../object/valid-value");
+
+module.exports = function (pos) {
+ var str = String(validValue(this)), size = str.length, cuFirst, cuSecond, nextPos, len;
+ pos = toInteger(pos);
+
+ // Account for out-of-bounds indices
+ // The odd lower bound is because the ToInteger operation is
+ // going to round `n` to `0` for `-1 < n <= 0`.
+ if (pos <= -1 || pos >= size) return "";
+
+ // Second half of `ToInteger`
+ // eslint-disable-next-line no-bitwise
+ pos |= 0;
+ // Get the first code unit and code unit value
+ cuFirst = str.charCodeAt(pos);
+ nextPos = pos + 1;
+ len = 1;
+ if (
+ // Check if it’s the start of a surrogate pair
+ cuFirst >= 0xd800 &&
+ cuFirst <= 0xdbff && // High surrogate
+ size > nextPos // There is a next code unit
+ ) {
+ cuSecond = str.charCodeAt(nextPos);
+ if (cuSecond >= 0xdc00 && cuSecond <= 0xdfff) len = 2; // Low surrogate
+ }
+ return str.slice(pos, pos + len);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/camel-to-hyphen.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/camel-to-hyphen.js
new file mode 100644
index 0000000000..002dfd0b2b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/camel-to-hyphen.js
@@ -0,0 +1,10 @@
+"use strict";
+
+var replace = String.prototype.replace
+ , re = /([A-Z])/g;
+
+module.exports = function () {
+ var str = replace.call(this, re, "-$1").toLowerCase();
+ if (str[0] === "-") str = str.slice(1);
+ return str;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/capitalize.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/capitalize.js
new file mode 100644
index 0000000000..fc92a9fb63
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/capitalize.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var value = require("../../object/valid-value");
+
+module.exports = function () {
+ var str = String(value(this));
+ return str.charAt(0).toUpperCase() + str.slice(1);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/case-insensitive-compare.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/case-insensitive-compare.js
new file mode 100644
index 0000000000..5d961a5e38
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/case-insensitive-compare.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var toLowerCase = String.prototype.toLowerCase;
+
+module.exports = function (other) {
+ return toLowerCase.call(this).localeCompare(toLowerCase.call(String(other)));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/code-point-at/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/code-point-at/implement.js
new file mode 100644
index 0000000000..f1dc80a049
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/code-point-at/implement.js
@@ -0,0 +1,9 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(String.prototype, "codePointAt",
+ { value: require("./shim"),
+configurable: true,
+enumerable: false,
+ writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/code-point-at/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/code-point-at/index.js
new file mode 100644
index 0000000000..33d45c9f2d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/code-point-at/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? String.prototype.codePointAt
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/code-point-at/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/code-point-at/is-implemented.js
new file mode 100644
index 0000000000..7da785f2c1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/code-point-at/is-implemented.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var str = "abc\uD834\uDF06def";
+
+module.exports = function () {
+ if (typeof str.codePointAt !== "function") return false;
+ return str.codePointAt(3) === 0x1D306;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/code-point-at/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/code-point-at/shim.js
new file mode 100644
index 0000000000..0f331c3f10
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/code-point-at/shim.js
@@ -0,0 +1,26 @@
+// Based on: https://github.com/mathiasbynens/String.prototype.codePointAt
+// Thanks @mathiasbynens !
+
+"use strict";
+
+var toInteger = require("../../../number/to-integer")
+ , validValue = require("../../../object/valid-value");
+
+module.exports = function (pos) {
+ var str = String(validValue(this)), length = str.length, first, second;
+ pos = toInteger(pos);
+
+ // Account for out-of-bounds indices:
+ if (pos < 0 || pos >= length) return undefined;
+
+ // Get the first code unit
+ first = str.charCodeAt(pos);
+ if (first >= 0xd800 && first <= 0xdbff && length > pos + 1) {
+ second = str.charCodeAt(pos + 1);
+ if (second >= 0xdc00 && second <= 0xdfff) {
+ // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
+ return (first - 0xd800) * 0x400 + second - 0xdc00 + 0x10000;
+ }
+ }
+ return first;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/contains/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/contains/implement.js
new file mode 100644
index 0000000000..395acea23a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/contains/implement.js
@@ -0,0 +1,9 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(String.prototype, "contains",
+ { value: require("./shim"),
+configurable: true,
+enumerable: false,
+ writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/contains/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/contains/index.js
new file mode 100644
index 0000000000..4f6a071404
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/contains/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? String.prototype.contains
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/contains/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/contains/is-implemented.js
new file mode 100644
index 0000000000..c270bb1ad0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/contains/is-implemented.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var str = "razdwatrzy";
+
+module.exports = function () {
+ if (typeof str.contains !== "function") return false;
+ return (str.contains("dwa") === true) && (str.contains("foo") === false);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/contains/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/contains/shim.js
new file mode 100644
index 0000000000..a7219f2e9d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/contains/shim.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var indexOf = String.prototype.indexOf;
+
+module.exports = function (searchString/*, position*/) {
+ return indexOf.call(this, searchString, arguments[1]) > -1;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/count.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/count.js
new file mode 100644
index 0000000000..7607013625
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/count.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var ensureString = require("../../object/validate-stringifiable-value");
+
+module.exports = function (search) {
+ var string = ensureString(this), count = 0, index = 0;
+
+ search = ensureString(search);
+ if (!search) throw new TypeError("Search string cannot be empty");
+ while ((index = string.indexOf(search, index)) !== -1) {
+ ++count;
+ index += search.length;
+ }
+ return count;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/ends-with/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/ends-with/implement.js
new file mode 100644
index 0000000000..19e5b86b89
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/ends-with/implement.js
@@ -0,0 +1,9 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(String.prototype, "endsWith",
+ { value: require("./shim"),
+configurable: true,
+enumerable: false,
+ writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/ends-with/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/ends-with/index.js
new file mode 100644
index 0000000000..952ed0ce19
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/ends-with/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? String.prototype.endsWith
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/ends-with/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/ends-with/is-implemented.js
new file mode 100644
index 0000000000..fce38eb8ef
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/ends-with/is-implemented.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var str = "razdwatrzy";
+
+module.exports = function () {
+ if (typeof str.endsWith !== "function") return false;
+ return (str.endsWith("trzy") === true) && (str.endsWith("raz") === false);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/ends-with/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/ends-with/shim.js
new file mode 100644
index 0000000000..c5371aa939
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/ends-with/shim.js
@@ -0,0 +1,18 @@
+"use strict";
+
+var toInteger = require("../../../number/to-integer")
+ , value = require("../../../object/valid-value")
+ , isValue = require("../../../object/is-value")
+ , min = Math.min
+ , max = Math.max;
+
+module.exports = function (searchString /*, endPosition*/) {
+ var self, start, endPos;
+ self = String(value(this));
+ searchString = String(searchString);
+ endPos = arguments[1];
+ start =
+ (isValue(endPos) ? min(max(toInteger(endPos), 0), self.length) : self.length) -
+ searchString.length;
+ return start < 0 ? false : self.indexOf(searchString, start) === start;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/hyphen-to-camel.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/hyphen-to-camel.js
new file mode 100644
index 0000000000..20a5105ccf
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/hyphen-to-camel.js
@@ -0,0 +1,10 @@
+"use strict";
+
+var replace = String.prototype.replace, re = /-([a-z0-9])/g;
+var toUpperCase = function (ignored, a) {
+ return a.toUpperCase();
+};
+
+module.exports = function () {
+ return replace.call(this, re, toUpperCase);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/indent.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/indent.js
new file mode 100644
index 0000000000..df8869dbc8
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/indent.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var isValue = require("../../object/is-value")
+ , repeat = require("./repeat")
+ , replace = String.prototype.replace
+ , re = /(\r\n|[\n\r\u2028\u2029])([\u0000-\u0009\u000b-\uffff]+)/g;
+
+module.exports = function (indent /*, count*/) {
+ var count = arguments[1];
+ indent = repeat.call(String(indent), isValue(count) ? count : 1);
+ return indent + replace.call(this, re, "$1" + indent + "$2");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/index.js
new file mode 100644
index 0000000000..2344489745
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/index.js
@@ -0,0 +1,23 @@
+"use strict";
+
+module.exports = {
+ "@@iterator": require("./@@iterator"),
+ "at": require("./at"),
+ "count": require("./count"),
+ "camelToHyphen": require("./camel-to-hyphen"),
+ "capitalize": require("./capitalize"),
+ "caseInsensitiveCompare": require("./case-insensitive-compare"),
+ "codePointAt": require("./code-point-at"),
+ "contains": require("./contains"),
+ "hyphenToCamel": require("./hyphen-to-camel"),
+ "endsWith": require("./ends-with"),
+ "indent": require("./indent"),
+ "last": require("./last"),
+ "normalize": require("./normalize"),
+ "pad": require("./pad"),
+ "plainReplace": require("./plain-replace"),
+ "plainReplaceAll": require("./plain-replace-all"),
+ "repeat": require("./repeat"),
+ "startsWith": require("./starts-with"),
+ "uncapitalize": require("./uncapitalize")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/last.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/last.js
new file mode 100644
index 0000000000..f5c957fcae
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/last.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var value = require("../../object/valid-value");
+
+module.exports = function () {
+ var self = String(value(this)), length = self.length;
+ return length ? self[length - 1] : null;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/normalize/_data.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/normalize/_data.js
new file mode 100644
index 0000000000..356d5a6a54
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/normalize/_data.js
@@ -0,0 +1,7203 @@
+/* eslint max-lines: "off", no-sparse-arrays: "off", comma-style: "off" */
+
+"use strict";
+
+module.exports = {
+ 0: {
+ 60: [, , { 824: 8814 }],
+ 61: [, , { 824: 8800 }],
+ 62: [, , { 824: 8815 }],
+ 65: [
+ ,
+ ,
+ {
+ 768: 192,
+ 769: 193,
+ 770: 194,
+ 771: 195,
+ 772: 256,
+ 774: 258,
+ 775: 550,
+ 776: 196,
+ 777: 7842,
+ 778: 197,
+ 780: 461,
+ 783: 512,
+ 785: 514,
+ 803: 7840,
+ 805: 7680,
+ 808: 260
+ }
+ ],
+ 66: [, , { 775: 7682, 803: 7684, 817: 7686 }],
+ 67: [, , { 769: 262, 770: 264, 775: 266, 780: 268, 807: 199 }],
+ 68: [
+ ,
+ ,
+ { 775: 7690, 780: 270, 803: 7692, 807: 7696, 813: 7698, 817: 7694 }
+ ],
+ 69: [
+ ,
+ ,
+ {
+ 768: 200,
+ 769: 201,
+ 770: 202,
+ 771: 7868,
+ 772: 274,
+ 774: 276,
+ 775: 278,
+ 776: 203,
+ 777: 7866,
+ 780: 282,
+ 783: 516,
+ 785: 518,
+ 803: 7864,
+ 807: 552,
+ 808: 280,
+ 813: 7704,
+ 816: 7706
+ }
+ ],
+ 70: [, , { 775: 7710 }],
+ 71: [
+ ,
+ ,
+ { 769: 500, 770: 284, 772: 7712, 774: 286, 775: 288, 780: 486, 807: 290 }
+ ],
+ 72: [
+ ,
+ ,
+ {
+ 770: 292,
+ 775: 7714,
+ 776: 7718,
+ 780: 542,
+ 803: 7716,
+ 807: 7720,
+ 814: 7722
+ }
+ ],
+ 73: [
+ ,
+ ,
+ {
+ 768: 204,
+ 769: 205,
+ 770: 206,
+ 771: 296,
+ 772: 298,
+ 774: 300,
+ 775: 304,
+ 776: 207,
+ 777: 7880,
+ 780: 463,
+ 783: 520,
+ 785: 522,
+ 803: 7882,
+ 808: 302,
+ 816: 7724
+ }
+ ],
+ 74: [, , { 770: 308 }],
+ 75: [, , { 769: 7728, 780: 488, 803: 7730, 807: 310, 817: 7732 }],
+ 76: [, , { 769: 313, 780: 317, 803: 7734, 807: 315, 813: 7740, 817: 7738 }],
+ 77: [, , { 769: 7742, 775: 7744, 803: 7746 }],
+ 78: [
+ ,
+ ,
+ {
+ 768: 504,
+ 769: 323,
+ 771: 209,
+ 775: 7748,
+ 780: 327,
+ 803: 7750,
+ 807: 325,
+ 813: 7754,
+ 817: 7752
+ }
+ ],
+ 79: [
+ ,
+ ,
+ {
+ 768: 210,
+ 769: 211,
+ 770: 212,
+ 771: 213,
+ 772: 332,
+ 774: 334,
+ 775: 558,
+ 776: 214,
+ 777: 7886,
+ 779: 336,
+ 780: 465,
+ 783: 524,
+ 785: 526,
+ 795: 416,
+ 803: 7884,
+ 808: 490
+ }
+ ],
+ 80: [, , { 769: 7764, 775: 7766 }],
+ 82: [
+ ,
+ ,
+ {
+ 769: 340,
+ 775: 7768,
+ 780: 344,
+ 783: 528,
+ 785: 530,
+ 803: 7770,
+ 807: 342,
+ 817: 7774
+ }
+ ],
+ 83: [
+ ,
+ ,
+ { 769: 346, 770: 348, 775: 7776, 780: 352, 803: 7778, 806: 536, 807: 350 }
+ ],
+ 84: [
+ ,
+ ,
+ {
+ 775: 7786,
+ 780: 356,
+ 803: 7788,
+ 806: 538,
+ 807: 354,
+ 813: 7792,
+ 817: 7790
+ }
+ ],
+ 85: [
+ ,
+ ,
+ {
+ 768: 217,
+ 769: 218,
+ 770: 219,
+ 771: 360,
+ 772: 362,
+ 774: 364,
+ 776: 220,
+ 777: 7910,
+ 778: 366,
+ 779: 368,
+ 780: 467,
+ 783: 532,
+ 785: 534,
+ 795: 431,
+ 803: 7908,
+ 804: 7794,
+ 808: 370,
+ 813: 7798,
+ 816: 7796
+ }
+ ],
+ 86: [, , { 771: 7804, 803: 7806 }],
+ 87: [
+ ,
+ ,
+ { 768: 7808, 769: 7810, 770: 372, 775: 7814, 776: 7812, 803: 7816 }
+ ],
+ 88: [, , { 775: 7818, 776: 7820 }],
+ 89: [
+ ,
+ ,
+ {
+ 768: 7922,
+ 769: 221,
+ 770: 374,
+ 771: 7928,
+ 772: 562,
+ 775: 7822,
+ 776: 376,
+ 777: 7926,
+ 803: 7924
+ }
+ ],
+ 90: [, , { 769: 377, 770: 7824, 775: 379, 780: 381, 803: 7826, 817: 7828 }],
+ 97: [
+ ,
+ ,
+ {
+ 768: 224,
+ 769: 225,
+ 770: 226,
+ 771: 227,
+ 772: 257,
+ 774: 259,
+ 775: 551,
+ 776: 228,
+ 777: 7843,
+ 778: 229,
+ 780: 462,
+ 783: 513,
+ 785: 515,
+ 803: 7841,
+ 805: 7681,
+ 808: 261
+ }
+ ],
+ 98: [, , { 775: 7683, 803: 7685, 817: 7687 }],
+ 99: [, , { 769: 263, 770: 265, 775: 267, 780: 269, 807: 231 }],
+ 100: [
+ ,
+ ,
+ { 775: 7691, 780: 271, 803: 7693, 807: 7697, 813: 7699, 817: 7695 }
+ ],
+ 101: [
+ ,
+ ,
+ {
+ 768: 232,
+ 769: 233,
+ 770: 234,
+ 771: 7869,
+ 772: 275,
+ 774: 277,
+ 775: 279,
+ 776: 235,
+ 777: 7867,
+ 780: 283,
+ 783: 517,
+ 785: 519,
+ 803: 7865,
+ 807: 553,
+ 808: 281,
+ 813: 7705,
+ 816: 7707
+ }
+ ],
+ 102: [, , { 775: 7711 }],
+ 103: [
+ ,
+ ,
+ { 769: 501, 770: 285, 772: 7713, 774: 287, 775: 289, 780: 487, 807: 291 }
+ ],
+ 104: [
+ ,
+ ,
+ {
+ 770: 293,
+ 775: 7715,
+ 776: 7719,
+ 780: 543,
+ 803: 7717,
+ 807: 7721,
+ 814: 7723,
+ 817: 7830
+ }
+ ],
+ 105: [
+ ,
+ ,
+ {
+ 768: 236,
+ 769: 237,
+ 770: 238,
+ 771: 297,
+ 772: 299,
+ 774: 301,
+ 776: 239,
+ 777: 7881,
+ 780: 464,
+ 783: 521,
+ 785: 523,
+ 803: 7883,
+ 808: 303,
+ 816: 7725
+ }
+ ],
+ 106: [, , { 770: 309, 780: 496 }],
+ 107: [, , { 769: 7729, 780: 489, 803: 7731, 807: 311, 817: 7733 }],
+ 108: [
+ ,
+ ,
+ { 769: 314, 780: 318, 803: 7735, 807: 316, 813: 7741, 817: 7739 }
+ ],
+ 109: [, , { 769: 7743, 775: 7745, 803: 7747 }],
+ 110: [
+ ,
+ ,
+ {
+ 768: 505,
+ 769: 324,
+ 771: 241,
+ 775: 7749,
+ 780: 328,
+ 803: 7751,
+ 807: 326,
+ 813: 7755,
+ 817: 7753
+ }
+ ],
+ 111: [
+ ,
+ ,
+ {
+ 768: 242,
+ 769: 243,
+ 770: 244,
+ 771: 245,
+ 772: 333,
+ 774: 335,
+ 775: 559,
+ 776: 246,
+ 777: 7887,
+ 779: 337,
+ 780: 466,
+ 783: 525,
+ 785: 527,
+ 795: 417,
+ 803: 7885,
+ 808: 491
+ }
+ ],
+ 112: [, , { 769: 7765, 775: 7767 }],
+ 114: [
+ ,
+ ,
+ {
+ 769: 341,
+ 775: 7769,
+ 780: 345,
+ 783: 529,
+ 785: 531,
+ 803: 7771,
+ 807: 343,
+ 817: 7775
+ }
+ ],
+ 115: [
+ ,
+ ,
+ { 769: 347, 770: 349, 775: 7777, 780: 353, 803: 7779, 806: 537, 807: 351 }
+ ],
+ 116: [
+ ,
+ ,
+ {
+ 775: 7787,
+ 776: 7831,
+ 780: 357,
+ 803: 7789,
+ 806: 539,
+ 807: 355,
+ 813: 7793,
+ 817: 7791
+ }
+ ],
+ 117: [
+ ,
+ ,
+ {
+ 768: 249,
+ 769: 250,
+ 770: 251,
+ 771: 361,
+ 772: 363,
+ 774: 365,
+ 776: 252,
+ 777: 7911,
+ 778: 367,
+ 779: 369,
+ 780: 468,
+ 783: 533,
+ 785: 535,
+ 795: 432,
+ 803: 7909,
+ 804: 7795,
+ 808: 371,
+ 813: 7799,
+ 816: 7797
+ }
+ ],
+ 118: [, , { 771: 7805, 803: 7807 }],
+ 119: [
+ ,
+ ,
+ {
+ 768: 7809,
+ 769: 7811,
+ 770: 373,
+ 775: 7815,
+ 776: 7813,
+ 778: 7832,
+ 803: 7817
+ }
+ ],
+ 120: [, , { 775: 7819, 776: 7821 }],
+ 121: [
+ ,
+ ,
+ {
+ 768: 7923,
+ 769: 253,
+ 770: 375,
+ 771: 7929,
+ 772: 563,
+ 775: 7823,
+ 776: 255,
+ 777: 7927,
+ 778: 7833,
+ 803: 7925
+ }
+ ],
+ 122: [
+ ,
+ ,
+ { 769: 378, 770: 7825, 775: 380, 780: 382, 803: 7827, 817: 7829 }
+ ],
+ 160: [[32], 256],
+ 168: [[32, 776], 256, { 768: 8173, 769: 901, 834: 8129 }],
+ 170: [[97], 256],
+ 175: [[32, 772], 256],
+ 178: [[50], 256],
+ 179: [[51], 256],
+ 180: [[32, 769], 256],
+ 181: [[956], 256],
+ 184: [[32, 807], 256],
+ 185: [[49], 256],
+ 186: [[111], 256],
+ 188: [[49, 8260, 52], 256],
+ 189: [[49, 8260, 50], 256],
+ 190: [[51, 8260, 52], 256],
+ 192: [[65, 768]],
+ 193: [[65, 769]],
+ 194: [[65, 770], , { 768: 7846, 769: 7844, 771: 7850, 777: 7848 }],
+ 195: [[65, 771]],
+ 196: [[65, 776], , { 772: 478 }],
+ 197: [[65, 778], , { 769: 506 }],
+ 198: [, , { 769: 508, 772: 482 }],
+ 199: [[67, 807], , { 769: 7688 }],
+ 200: [[69, 768]],
+ 201: [[69, 769]],
+ 202: [[69, 770], , { 768: 7872, 769: 7870, 771: 7876, 777: 7874 }],
+ 203: [[69, 776]],
+ 204: [[73, 768]],
+ 205: [[73, 769]],
+ 206: [[73, 770]],
+ 207: [[73, 776], , { 769: 7726 }],
+ 209: [[78, 771]],
+ 210: [[79, 768]],
+ 211: [[79, 769]],
+ 212: [[79, 770], , { 768: 7890, 769: 7888, 771: 7894, 777: 7892 }],
+ 213: [[79, 771], , { 769: 7756, 772: 556, 776: 7758 }],
+ 214: [[79, 776], , { 772: 554 }],
+ 216: [, , { 769: 510 }],
+ 217: [[85, 768]],
+ 218: [[85, 769]],
+ 219: [[85, 770]],
+ 220: [[85, 776], , { 768: 475, 769: 471, 772: 469, 780: 473 }],
+ 221: [[89, 769]],
+ 224: [[97, 768]],
+ 225: [[97, 769]],
+ 226: [[97, 770], , { 768: 7847, 769: 7845, 771: 7851, 777: 7849 }],
+ 227: [[97, 771]],
+ 228: [[97, 776], , { 772: 479 }],
+ 229: [[97, 778], , { 769: 507 }],
+ 230: [, , { 769: 509, 772: 483 }],
+ 231: [[99, 807], , { 769: 7689 }],
+ 232: [[101, 768]],
+ 233: [[101, 769]],
+ 234: [[101, 770], , { 768: 7873, 769: 7871, 771: 7877, 777: 7875 }],
+ 235: [[101, 776]],
+ 236: [[105, 768]],
+ 237: [[105, 769]],
+ 238: [[105, 770]],
+ 239: [[105, 776], , { 769: 7727 }],
+ 241: [[110, 771]],
+ 242: [[111, 768]],
+ 243: [[111, 769]],
+ 244: [[111, 770], , { 768: 7891, 769: 7889, 771: 7895, 777: 7893 }],
+ 245: [[111, 771], , { 769: 7757, 772: 557, 776: 7759 }],
+ 246: [[111, 776], , { 772: 555 }],
+ 248: [, , { 769: 511 }],
+ 249: [[117, 768]],
+ 250: [[117, 769]],
+ 251: [[117, 770]],
+ 252: [[117, 776], , { 768: 476, 769: 472, 772: 470, 780: 474 }],
+ 253: [[121, 769]],
+ 255: [[121, 776]]
+ },
+ 256: {
+ 256: [[65, 772]],
+ 257: [[97, 772]],
+ 258: [[65, 774], , { 768: 7856, 769: 7854, 771: 7860, 777: 7858 }],
+ 259: [[97, 774], , { 768: 7857, 769: 7855, 771: 7861, 777: 7859 }],
+ 260: [[65, 808]],
+ 261: [[97, 808]],
+ 262: [[67, 769]],
+ 263: [[99, 769]],
+ 264: [[67, 770]],
+ 265: [[99, 770]],
+ 266: [[67, 775]],
+ 267: [[99, 775]],
+ 268: [[67, 780]],
+ 269: [[99, 780]],
+ 270: [[68, 780]],
+ 271: [[100, 780]],
+ 274: [[69, 772], , { 768: 7700, 769: 7702 }],
+ 275: [[101, 772], , { 768: 7701, 769: 7703 }],
+ 276: [[69, 774]],
+ 277: [[101, 774]],
+ 278: [[69, 775]],
+ 279: [[101, 775]],
+ 280: [[69, 808]],
+ 281: [[101, 808]],
+ 282: [[69, 780]],
+ 283: [[101, 780]],
+ 284: [[71, 770]],
+ 285: [[103, 770]],
+ 286: [[71, 774]],
+ 287: [[103, 774]],
+ 288: [[71, 775]],
+ 289: [[103, 775]],
+ 290: [[71, 807]],
+ 291: [[103, 807]],
+ 292: [[72, 770]],
+ 293: [[104, 770]],
+ 296: [[73, 771]],
+ 297: [[105, 771]],
+ 298: [[73, 772]],
+ 299: [[105, 772]],
+ 300: [[73, 774]],
+ 301: [[105, 774]],
+ 302: [[73, 808]],
+ 303: [[105, 808]],
+ 304: [[73, 775]],
+ 306: [[73, 74], 256],
+ 307: [[105, 106], 256],
+ 308: [[74, 770]],
+ 309: [[106, 770]],
+ 310: [[75, 807]],
+ 311: [[107, 807]],
+ 313: [[76, 769]],
+ 314: [[108, 769]],
+ 315: [[76, 807]],
+ 316: [[108, 807]],
+ 317: [[76, 780]],
+ 318: [[108, 780]],
+ 319: [[76, 183], 256],
+ 320: [[108, 183], 256],
+ 323: [[78, 769]],
+ 324: [[110, 769]],
+ 325: [[78, 807]],
+ 326: [[110, 807]],
+ 327: [[78, 780]],
+ 328: [[110, 780]],
+ 329: [[700, 110], 256],
+ 332: [[79, 772], , { 768: 7760, 769: 7762 }],
+ 333: [[111, 772], , { 768: 7761, 769: 7763 }],
+ 334: [[79, 774]],
+ 335: [[111, 774]],
+ 336: [[79, 779]],
+ 337: [[111, 779]],
+ 340: [[82, 769]],
+ 341: [[114, 769]],
+ 342: [[82, 807]],
+ 343: [[114, 807]],
+ 344: [[82, 780]],
+ 345: [[114, 780]],
+ 346: [[83, 769], , { 775: 7780 }],
+ 347: [[115, 769], , { 775: 7781 }],
+ 348: [[83, 770]],
+ 349: [[115, 770]],
+ 350: [[83, 807]],
+ 351: [[115, 807]],
+ 352: [[83, 780], , { 775: 7782 }],
+ 353: [[115, 780], , { 775: 7783 }],
+ 354: [[84, 807]],
+ 355: [[116, 807]],
+ 356: [[84, 780]],
+ 357: [[116, 780]],
+ 360: [[85, 771], , { 769: 7800 }],
+ 361: [[117, 771], , { 769: 7801 }],
+ 362: [[85, 772], , { 776: 7802 }],
+ 363: [[117, 772], , { 776: 7803 }],
+ 364: [[85, 774]],
+ 365: [[117, 774]],
+ 366: [[85, 778]],
+ 367: [[117, 778]],
+ 368: [[85, 779]],
+ 369: [[117, 779]],
+ 370: [[85, 808]],
+ 371: [[117, 808]],
+ 372: [[87, 770]],
+ 373: [[119, 770]],
+ 374: [[89, 770]],
+ 375: [[121, 770]],
+ 376: [[89, 776]],
+ 377: [[90, 769]],
+ 378: [[122, 769]],
+ 379: [[90, 775]],
+ 380: [[122, 775]],
+ 381: [[90, 780]],
+ 382: [[122, 780]],
+ 383: [[115], 256, { 775: 7835 }],
+ 416: [
+ [79, 795],
+ ,
+ { 768: 7900, 769: 7898, 771: 7904, 777: 7902, 803: 7906 }
+ ],
+ 417: [
+ [111, 795],
+ ,
+ { 768: 7901, 769: 7899, 771: 7905, 777: 7903, 803: 7907 }
+ ],
+ 431: [
+ [85, 795],
+ ,
+ { 768: 7914, 769: 7912, 771: 7918, 777: 7916, 803: 7920 }
+ ],
+ 432: [
+ [117, 795],
+ ,
+ { 768: 7915, 769: 7913, 771: 7919, 777: 7917, 803: 7921 }
+ ],
+ 439: [, , { 780: 494 }],
+ 452: [[68, 381], 256],
+ 453: [[68, 382], 256],
+ 454: [[100, 382], 256],
+ 455: [[76, 74], 256],
+ 456: [[76, 106], 256],
+ 457: [[108, 106], 256],
+ 458: [[78, 74], 256],
+ 459: [[78, 106], 256],
+ 460: [[110, 106], 256],
+ 461: [[65, 780]],
+ 462: [[97, 780]],
+ 463: [[73, 780]],
+ 464: [[105, 780]],
+ 465: [[79, 780]],
+ 466: [[111, 780]],
+ 467: [[85, 780]],
+ 468: [[117, 780]],
+ 469: [[220, 772]],
+ 470: [[252, 772]],
+ 471: [[220, 769]],
+ 472: [[252, 769]],
+ 473: [[220, 780]],
+ 474: [[252, 780]],
+ 475: [[220, 768]],
+ 476: [[252, 768]],
+ 478: [[196, 772]],
+ 479: [[228, 772]],
+ 480: [[550, 772]],
+ 481: [[551, 772]],
+ 482: [[198, 772]],
+ 483: [[230, 772]],
+ 486: [[71, 780]],
+ 487: [[103, 780]],
+ 488: [[75, 780]],
+ 489: [[107, 780]],
+ 490: [[79, 808], , { 772: 492 }],
+ 491: [[111, 808], , { 772: 493 }],
+ 492: [[490, 772]],
+ 493: [[491, 772]],
+ 494: [[439, 780]],
+ 495: [[658, 780]],
+ 496: [[106, 780]],
+ 497: [[68, 90], 256],
+ 498: [[68, 122], 256],
+ 499: [[100, 122], 256],
+ 500: [[71, 769]],
+ 501: [[103, 769]],
+ 504: [[78, 768]],
+ 505: [[110, 768]],
+ 506: [[197, 769]],
+ 507: [[229, 769]],
+ 508: [[198, 769]],
+ 509: [[230, 769]],
+ 510: [[216, 769]],
+ 511: [[248, 769]],
+ 66045: [, 220]
+ },
+ 512: {
+ 512: [[65, 783]],
+ 513: [[97, 783]],
+ 514: [[65, 785]],
+ 515: [[97, 785]],
+ 516: [[69, 783]],
+ 517: [[101, 783]],
+ 518: [[69, 785]],
+ 519: [[101, 785]],
+ 520: [[73, 783]],
+ 521: [[105, 783]],
+ 522: [[73, 785]],
+ 523: [[105, 785]],
+ 524: [[79, 783]],
+ 525: [[111, 783]],
+ 526: [[79, 785]],
+ 527: [[111, 785]],
+ 528: [[82, 783]],
+ 529: [[114, 783]],
+ 530: [[82, 785]],
+ 531: [[114, 785]],
+ 532: [[85, 783]],
+ 533: [[117, 783]],
+ 534: [[85, 785]],
+ 535: [[117, 785]],
+ 536: [[83, 806]],
+ 537: [[115, 806]],
+ 538: [[84, 806]],
+ 539: [[116, 806]],
+ 542: [[72, 780]],
+ 543: [[104, 780]],
+ 550: [[65, 775], , { 772: 480 }],
+ 551: [[97, 775], , { 772: 481 }],
+ 552: [[69, 807], , { 774: 7708 }],
+ 553: [[101, 807], , { 774: 7709 }],
+ 554: [[214, 772]],
+ 555: [[246, 772]],
+ 556: [[213, 772]],
+ 557: [[245, 772]],
+ 558: [[79, 775], , { 772: 560 }],
+ 559: [[111, 775], , { 772: 561 }],
+ 560: [[558, 772]],
+ 561: [[559, 772]],
+ 562: [[89, 772]],
+ 563: [[121, 772]],
+ 658: [, , { 780: 495 }],
+ 688: [[104], 256],
+ 689: [[614], 256],
+ 690: [[106], 256],
+ 691: [[114], 256],
+ 692: [[633], 256],
+ 693: [[635], 256],
+ 694: [[641], 256],
+ 695: [[119], 256],
+ 696: [[121], 256],
+ 728: [[32, 774], 256],
+ 729: [[32, 775], 256],
+ 730: [[32, 778], 256],
+ 731: [[32, 808], 256],
+ 732: [[32, 771], 256],
+ 733: [[32, 779], 256],
+ 736: [[611], 256],
+ 737: [[108], 256],
+ 738: [[115], 256],
+ 739: [[120], 256],
+ 740: [[661], 256]
+ },
+ 768: {
+ 768: [, 230],
+ 769: [, 230],
+ 770: [, 230],
+ 771: [, 230],
+ 772: [, 230],
+ 773: [, 230],
+ 774: [, 230],
+ 775: [, 230],
+ 776: [, 230, { 769: 836 }],
+ 777: [, 230],
+ 778: [, 230],
+ 779: [, 230],
+ 780: [, 230],
+ 781: [, 230],
+ 782: [, 230],
+ 783: [, 230],
+ 784: [, 230],
+ 785: [, 230],
+ 786: [, 230],
+ 787: [, 230],
+ 788: [, 230],
+ 789: [, 232],
+ 790: [, 220],
+ 791: [, 220],
+ 792: [, 220],
+ 793: [, 220],
+ 794: [, 232],
+ 795: [, 216],
+ 796: [, 220],
+ 797: [, 220],
+ 798: [, 220],
+ 799: [, 220],
+ 800: [, 220],
+ 801: [, 202],
+ 802: [, 202],
+ 803: [, 220],
+ 804: [, 220],
+ 805: [, 220],
+ 806: [, 220],
+ 807: [, 202],
+ 808: [, 202],
+ 809: [, 220],
+ 810: [, 220],
+ 811: [, 220],
+ 812: [, 220],
+ 813: [, 220],
+ 814: [, 220],
+ 815: [, 220],
+ 816: [, 220],
+ 817: [, 220],
+ 818: [, 220],
+ 819: [, 220],
+ 820: [, 1],
+ 821: [, 1],
+ 822: [, 1],
+ 823: [, 1],
+ 824: [, 1],
+ 825: [, 220],
+ 826: [, 220],
+ 827: [, 220],
+ 828: [, 220],
+ 829: [, 230],
+ 830: [, 230],
+ 831: [, 230],
+ 832: [[768], 230],
+ 833: [[769], 230],
+ 834: [, 230],
+ 835: [[787], 230],
+ 836: [[776, 769], 230],
+ 837: [, 240],
+ 838: [, 230],
+ 839: [, 220],
+ 840: [, 220],
+ 841: [, 220],
+ 842: [, 230],
+ 843: [, 230],
+ 844: [, 230],
+ 845: [, 220],
+ 846: [, 220],
+ 848: [, 230],
+ 849: [, 230],
+ 850: [, 230],
+ 851: [, 220],
+ 852: [, 220],
+ 853: [, 220],
+ 854: [, 220],
+ 855: [, 230],
+ 856: [, 232],
+ 857: [, 220],
+ 858: [, 220],
+ 859: [, 230],
+ 860: [, 233],
+ 861: [, 234],
+ 862: [, 234],
+ 863: [, 233],
+ 864: [, 234],
+ 865: [, 234],
+ 866: [, 233],
+ 867: [, 230],
+ 868: [, 230],
+ 869: [, 230],
+ 870: [, 230],
+ 871: [, 230],
+ 872: [, 230],
+ 873: [, 230],
+ 874: [, 230],
+ 875: [, 230],
+ 876: [, 230],
+ 877: [, 230],
+ 878: [, 230],
+ 879: [, 230],
+ 884: [[697]],
+ 890: [[32, 837], 256],
+ 894: [[59]],
+ 900: [[32, 769], 256],
+ 901: [[168, 769]],
+ 902: [[913, 769]],
+ 903: [[183]],
+ 904: [[917, 769]],
+ 905: [[919, 769]],
+ 906: [[921, 769]],
+ 908: [[927, 769]],
+ 910: [[933, 769]],
+ 911: [[937, 769]],
+ 912: [[970, 769]],
+ 913: [
+ ,
+ ,
+ {
+ 768: 8122,
+ 769: 902,
+ 772: 8121,
+ 774: 8120,
+ 787: 7944,
+ 788: 7945,
+ 837: 8124
+ }
+ ],
+ 917: [, , { 768: 8136, 769: 904, 787: 7960, 788: 7961 }],
+ 919: [, , { 768: 8138, 769: 905, 787: 7976, 788: 7977, 837: 8140 }],
+ 921: [
+ ,
+ ,
+ {
+ 768: 8154,
+ 769: 906,
+ 772: 8153,
+ 774: 8152,
+ 776: 938,
+ 787: 7992,
+ 788: 7993
+ }
+ ],
+ 927: [, , { 768: 8184, 769: 908, 787: 8008, 788: 8009 }],
+ 929: [, , { 788: 8172 }],
+ 933: [
+ ,
+ ,
+ { 768: 8170, 769: 910, 772: 8169, 774: 8168, 776: 939, 788: 8025 }
+ ],
+ 937: [, , { 768: 8186, 769: 911, 787: 8040, 788: 8041, 837: 8188 }],
+ 938: [[921, 776]],
+ 939: [[933, 776]],
+ 940: [[945, 769], , { 837: 8116 }],
+ 941: [[949, 769]],
+ 942: [[951, 769], , { 837: 8132 }],
+ 943: [[953, 769]],
+ 944: [[971, 769]],
+ 945: [
+ ,
+ ,
+ {
+ 768: 8048,
+ 769: 940,
+ 772: 8113,
+ 774: 8112,
+ 787: 7936,
+ 788: 7937,
+ 834: 8118,
+ 837: 8115
+ }
+ ],
+ 949: [, , { 768: 8050, 769: 941, 787: 7952, 788: 7953 }],
+ 951: [
+ ,
+ ,
+ { 768: 8052, 769: 942, 787: 7968, 788: 7969, 834: 8134, 837: 8131 }
+ ],
+ 953: [
+ ,
+ ,
+ {
+ 768: 8054,
+ 769: 943,
+ 772: 8145,
+ 774: 8144,
+ 776: 970,
+ 787: 7984,
+ 788: 7985,
+ 834: 8150
+ }
+ ],
+ 959: [, , { 768: 8056, 769: 972, 787: 8000, 788: 8001 }],
+ 961: [, , { 787: 8164, 788: 8165 }],
+ 965: [
+ ,
+ ,
+ {
+ 768: 8058,
+ 769: 973,
+ 772: 8161,
+ 774: 8160,
+ 776: 971,
+ 787: 8016,
+ 788: 8017,
+ 834: 8166
+ }
+ ],
+ 969: [
+ ,
+ ,
+ { 768: 8060, 769: 974, 787: 8032, 788: 8033, 834: 8182, 837: 8179 }
+ ],
+ 970: [[953, 776], , { 768: 8146, 769: 912, 834: 8151 }],
+ 971: [[965, 776], , { 768: 8162, 769: 944, 834: 8167 }],
+ 972: [[959, 769]],
+ 973: [[965, 769]],
+ 974: [[969, 769], , { 837: 8180 }],
+ 976: [[946], 256],
+ 977: [[952], 256],
+ 978: [[933], 256, { 769: 979, 776: 980 }],
+ 979: [[978, 769]],
+ 980: [[978, 776]],
+ 981: [[966], 256],
+ 982: [[960], 256],
+ 1008: [[954], 256],
+ 1009: [[961], 256],
+ 1010: [[962], 256],
+ 1012: [[920], 256],
+ 1013: [[949], 256],
+ 1017: [[931], 256]
+ },
+ 1024: {
+ 1024: [[1045, 768]],
+ 1025: [[1045, 776]],
+ 1027: [[1043, 769]],
+ 1030: [, , { 776: 1031 }],
+ 1031: [[1030, 776]],
+ 1036: [[1050, 769]],
+ 1037: [[1048, 768]],
+ 1038: [[1059, 774]],
+ 1040: [, , { 774: 1232, 776: 1234 }],
+ 1043: [, , { 769: 1027 }],
+ 1045: [, , { 768: 1024, 774: 1238, 776: 1025 }],
+ 1046: [, , { 774: 1217, 776: 1244 }],
+ 1047: [, , { 776: 1246 }],
+ 1048: [, , { 768: 1037, 772: 1250, 774: 1049, 776: 1252 }],
+ 1049: [[1048, 774]],
+ 1050: [, , { 769: 1036 }],
+ 1054: [, , { 776: 1254 }],
+ 1059: [, , { 772: 1262, 774: 1038, 776: 1264, 779: 1266 }],
+ 1063: [, , { 776: 1268 }],
+ 1067: [, , { 776: 1272 }],
+ 1069: [, , { 776: 1260 }],
+ 1072: [, , { 774: 1233, 776: 1235 }],
+ 1075: [, , { 769: 1107 }],
+ 1077: [, , { 768: 1104, 774: 1239, 776: 1105 }],
+ 1078: [, , { 774: 1218, 776: 1245 }],
+ 1079: [, , { 776: 1247 }],
+ 1080: [, , { 768: 1117, 772: 1251, 774: 1081, 776: 1253 }],
+ 1081: [[1080, 774]],
+ 1082: [, , { 769: 1116 }],
+ 1086: [, , { 776: 1255 }],
+ 1091: [, , { 772: 1263, 774: 1118, 776: 1265, 779: 1267 }],
+ 1095: [, , { 776: 1269 }],
+ 1099: [, , { 776: 1273 }],
+ 1101: [, , { 776: 1261 }],
+ 1104: [[1077, 768]],
+ 1105: [[1077, 776]],
+ 1107: [[1075, 769]],
+ 1110: [, , { 776: 1111 }],
+ 1111: [[1110, 776]],
+ 1116: [[1082, 769]],
+ 1117: [[1080, 768]],
+ 1118: [[1091, 774]],
+ 1140: [, , { 783: 1142 }],
+ 1141: [, , { 783: 1143 }],
+ 1142: [[1140, 783]],
+ 1143: [[1141, 783]],
+ 1155: [, 230],
+ 1156: [, 230],
+ 1157: [, 230],
+ 1158: [, 230],
+ 1159: [, 230],
+ 1217: [[1046, 774]],
+ 1218: [[1078, 774]],
+ 1232: [[1040, 774]],
+ 1233: [[1072, 774]],
+ 1234: [[1040, 776]],
+ 1235: [[1072, 776]],
+ 1238: [[1045, 774]],
+ 1239: [[1077, 774]],
+ 1240: [, , { 776: 1242 }],
+ 1241: [, , { 776: 1243 }],
+ 1242: [[1240, 776]],
+ 1243: [[1241, 776]],
+ 1244: [[1046, 776]],
+ 1245: [[1078, 776]],
+ 1246: [[1047, 776]],
+ 1247: [[1079, 776]],
+ 1250: [[1048, 772]],
+ 1251: [[1080, 772]],
+ 1252: [[1048, 776]],
+ 1253: [[1080, 776]],
+ 1254: [[1054, 776]],
+ 1255: [[1086, 776]],
+ 1256: [, , { 776: 1258 }],
+ 1257: [, , { 776: 1259 }],
+ 1258: [[1256, 776]],
+ 1259: [[1257, 776]],
+ 1260: [[1069, 776]],
+ 1261: [[1101, 776]],
+ 1262: [[1059, 772]],
+ 1263: [[1091, 772]],
+ 1264: [[1059, 776]],
+ 1265: [[1091, 776]],
+ 1266: [[1059, 779]],
+ 1267: [[1091, 779]],
+ 1268: [[1063, 776]],
+ 1269: [[1095, 776]],
+ 1272: [[1067, 776]],
+ 1273: [[1099, 776]]
+ },
+ 1280: {
+ 1415: [[1381, 1410], 256],
+ 1425: [, 220],
+ 1426: [, 230],
+ 1427: [, 230],
+ 1428: [, 230],
+ 1429: [, 230],
+ 1430: [, 220],
+ 1431: [, 230],
+ 1432: [, 230],
+ 1433: [, 230],
+ 1434: [, 222],
+ 1435: [, 220],
+ 1436: [, 230],
+ 1437: [, 230],
+ 1438: [, 230],
+ 1439: [, 230],
+ 1440: [, 230],
+ 1441: [, 230],
+ 1442: [, 220],
+ 1443: [, 220],
+ 1444: [, 220],
+ 1445: [, 220],
+ 1446: [, 220],
+ 1447: [, 220],
+ 1448: [, 230],
+ 1449: [, 230],
+ 1450: [, 220],
+ 1451: [, 230],
+ 1452: [, 230],
+ 1453: [, 222],
+ 1454: [, 228],
+ 1455: [, 230],
+ 1456: [, 10],
+ 1457: [, 11],
+ 1458: [, 12],
+ 1459: [, 13],
+ 1460: [, 14],
+ 1461: [, 15],
+ 1462: [, 16],
+ 1463: [, 17],
+ 1464: [, 18],
+ 1465: [, 19],
+ 1466: [, 19],
+ 1467: [, 20],
+ 1468: [, 21],
+ 1469: [, 22],
+ 1471: [, 23],
+ 1473: [, 24],
+ 1474: [, 25],
+ 1476: [, 230],
+ 1477: [, 220],
+ 1479: [, 18]
+ },
+ 1536: {
+ 1552: [, 230],
+ 1553: [, 230],
+ 1554: [, 230],
+ 1555: [, 230],
+ 1556: [, 230],
+ 1557: [, 230],
+ 1558: [, 230],
+ 1559: [, 230],
+ 1560: [, 30],
+ 1561: [, 31],
+ 1562: [, 32],
+ 1570: [[1575, 1619]],
+ 1571: [[1575, 1620]],
+ 1572: [[1608, 1620]],
+ 1573: [[1575, 1621]],
+ 1574: [[1610, 1620]],
+ 1575: [, , { 1619: 1570, 1620: 1571, 1621: 1573 }],
+ 1608: [, , { 1620: 1572 }],
+ 1610: [, , { 1620: 1574 }],
+ 1611: [, 27],
+ 1612: [, 28],
+ 1613: [, 29],
+ 1614: [, 30],
+ 1615: [, 31],
+ 1616: [, 32],
+ 1617: [, 33],
+ 1618: [, 34],
+ 1619: [, 230],
+ 1620: [, 230],
+ 1621: [, 220],
+ 1622: [, 220],
+ 1623: [, 230],
+ 1624: [, 230],
+ 1625: [, 230],
+ 1626: [, 230],
+ 1627: [, 230],
+ 1628: [, 220],
+ 1629: [, 230],
+ 1630: [, 230],
+ 1631: [, 220],
+ 1648: [, 35],
+ 1653: [[1575, 1652], 256],
+ 1654: [[1608, 1652], 256],
+ 1655: [[1735, 1652], 256],
+ 1656: [[1610, 1652], 256],
+ 1728: [[1749, 1620]],
+ 1729: [, , { 1620: 1730 }],
+ 1730: [[1729, 1620]],
+ 1746: [, , { 1620: 1747 }],
+ 1747: [[1746, 1620]],
+ 1749: [, , { 1620: 1728 }],
+ 1750: [, 230],
+ 1751: [, 230],
+ 1752: [, 230],
+ 1753: [, 230],
+ 1754: [, 230],
+ 1755: [, 230],
+ 1756: [, 230],
+ 1759: [, 230],
+ 1760: [, 230],
+ 1761: [, 230],
+ 1762: [, 230],
+ 1763: [, 220],
+ 1764: [, 230],
+ 1767: [, 230],
+ 1768: [, 230],
+ 1770: [, 220],
+ 1771: [, 230],
+ 1772: [, 230],
+ 1773: [, 220]
+ },
+ 1792: {
+ 1809: [, 36],
+ 1840: [, 230],
+ 1841: [, 220],
+ 1842: [, 230],
+ 1843: [, 230],
+ 1844: [, 220],
+ 1845: [, 230],
+ 1846: [, 230],
+ 1847: [, 220],
+ 1848: [, 220],
+ 1849: [, 220],
+ 1850: [, 230],
+ 1851: [, 220],
+ 1852: [, 220],
+ 1853: [, 230],
+ 1854: [, 220],
+ 1855: [, 230],
+ 1856: [, 230],
+ 1857: [, 230],
+ 1858: [, 220],
+ 1859: [, 230],
+ 1860: [, 220],
+ 1861: [, 230],
+ 1862: [, 220],
+ 1863: [, 230],
+ 1864: [, 220],
+ 1865: [, 230],
+ 1866: [, 230],
+ 2027: [, 230],
+ 2028: [, 230],
+ 2029: [, 230],
+ 2030: [, 230],
+ 2031: [, 230],
+ 2032: [, 230],
+ 2033: [, 230],
+ 2034: [, 220],
+ 2035: [, 230]
+ },
+ 2048: {
+ 2070: [, 230],
+ 2071: [, 230],
+ 2072: [, 230],
+ 2073: [, 230],
+ 2075: [, 230],
+ 2076: [, 230],
+ 2077: [, 230],
+ 2078: [, 230],
+ 2079: [, 230],
+ 2080: [, 230],
+ 2081: [, 230],
+ 2082: [, 230],
+ 2083: [, 230],
+ 2085: [, 230],
+ 2086: [, 230],
+ 2087: [, 230],
+ 2089: [, 230],
+ 2090: [, 230],
+ 2091: [, 230],
+ 2092: [, 230],
+ 2093: [, 230],
+ 2137: [, 220],
+ 2138: [, 220],
+ 2139: [, 220],
+ 2276: [, 230],
+ 2277: [, 230],
+ 2278: [, 220],
+ 2279: [, 230],
+ 2280: [, 230],
+ 2281: [, 220],
+ 2282: [, 230],
+ 2283: [, 230],
+ 2284: [, 230],
+ 2285: [, 220],
+ 2286: [, 220],
+ 2287: [, 220],
+ 2288: [, 27],
+ 2289: [, 28],
+ 2290: [, 29],
+ 2291: [, 230],
+ 2292: [, 230],
+ 2293: [, 230],
+ 2294: [, 220],
+ 2295: [, 230],
+ 2296: [, 230],
+ 2297: [, 220],
+ 2298: [, 220],
+ 2299: [, 230],
+ 2300: [, 230],
+ 2301: [, 230],
+ 2302: [, 230]
+ },
+ 2304: {
+ 2344: [, , { 2364: 2345 }],
+ 2345: [[2344, 2364]],
+ 2352: [, , { 2364: 2353 }],
+ 2353: [[2352, 2364]],
+ 2355: [, , { 2364: 2356 }],
+ 2356: [[2355, 2364]],
+ 2364: [, 7],
+ 2381: [, 9],
+ 2385: [, 230],
+ 2386: [, 220],
+ 2387: [, 230],
+ 2388: [, 230],
+ 2392: [[2325, 2364], 512],
+ 2393: [[2326, 2364], 512],
+ 2394: [[2327, 2364], 512],
+ 2395: [[2332, 2364], 512],
+ 2396: [[2337, 2364], 512],
+ 2397: [[2338, 2364], 512],
+ 2398: [[2347, 2364], 512],
+ 2399: [[2351, 2364], 512],
+ 2492: [, 7],
+ 2503: [, , { 2494: 2507, 2519: 2508 }],
+ 2507: [[2503, 2494]],
+ 2508: [[2503, 2519]],
+ 2509: [, 9],
+ 2524: [[2465, 2492], 512],
+ 2525: [[2466, 2492], 512],
+ 2527: [[2479, 2492], 512]
+ },
+ 2560: {
+ 2611: [[2610, 2620], 512],
+ 2614: [[2616, 2620], 512],
+ 2620: [, 7],
+ 2637: [, 9],
+ 2649: [[2582, 2620], 512],
+ 2650: [[2583, 2620], 512],
+ 2651: [[2588, 2620], 512],
+ 2654: [[2603, 2620], 512],
+ 2748: [, 7],
+ 2765: [, 9],
+ 68109: [, 220],
+ 68111: [, 230],
+ 68152: [, 230],
+ 68153: [, 1],
+ 68154: [, 220],
+ 68159: [, 9]
+ },
+ 2816: {
+ 2876: [, 7],
+ 2887: [, , { 2878: 2891, 2902: 2888, 2903: 2892 }],
+ 2888: [[2887, 2902]],
+ 2891: [[2887, 2878]],
+ 2892: [[2887, 2903]],
+ 2893: [, 9],
+ 2908: [[2849, 2876], 512],
+ 2909: [[2850, 2876], 512],
+ 2962: [, , { 3031: 2964 }],
+ 2964: [[2962, 3031]],
+ 3014: [, , { 3006: 3018, 3031: 3020 }],
+ 3015: [, , { 3006: 3019 }],
+ 3018: [[3014, 3006]],
+ 3019: [[3015, 3006]],
+ 3020: [[3014, 3031]],
+ 3021: [, 9]
+ },
+ 3072: {
+ 3142: [, , { 3158: 3144 }],
+ 3144: [[3142, 3158]],
+ 3149: [, 9],
+ 3157: [, 84],
+ 3158: [, 91],
+ 3260: [, 7],
+ 3263: [, , { 3285: 3264 }],
+ 3264: [[3263, 3285]],
+ 3270: [, , { 3266: 3274, 3285: 3271, 3286: 3272 }],
+ 3271: [[3270, 3285]],
+ 3272: [[3270, 3286]],
+ 3274: [[3270, 3266], , { 3285: 3275 }],
+ 3275: [[3274, 3285]],
+ 3277: [, 9]
+ },
+ 3328: {
+ 3398: [, , { 3390: 3402, 3415: 3404 }],
+ 3399: [, , { 3390: 3403 }],
+ 3402: [[3398, 3390]],
+ 3403: [[3399, 3390]],
+ 3404: [[3398, 3415]],
+ 3405: [, 9],
+ 3530: [, 9],
+ 3545: [, , { 3530: 3546, 3535: 3548, 3551: 3550 }],
+ 3546: [[3545, 3530]],
+ 3548: [[3545, 3535], , { 3530: 3549 }],
+ 3549: [[3548, 3530]],
+ 3550: [[3545, 3551]]
+ },
+ 3584: {
+ 3635: [[3661, 3634], 256],
+ 3640: [, 103],
+ 3641: [, 103],
+ 3642: [, 9],
+ 3656: [, 107],
+ 3657: [, 107],
+ 3658: [, 107],
+ 3659: [, 107],
+ 3763: [[3789, 3762], 256],
+ 3768: [, 118],
+ 3769: [, 118],
+ 3784: [, 122],
+ 3785: [, 122],
+ 3786: [, 122],
+ 3787: [, 122],
+ 3804: [[3755, 3737], 256],
+ 3805: [[3755, 3745], 256]
+ },
+ 3840: {
+ 3852: [[3851], 256],
+ 3864: [, 220],
+ 3865: [, 220],
+ 3893: [, 220],
+ 3895: [, 220],
+ 3897: [, 216],
+ 3907: [[3906, 4023], 512],
+ 3917: [[3916, 4023], 512],
+ 3922: [[3921, 4023], 512],
+ 3927: [[3926, 4023], 512],
+ 3932: [[3931, 4023], 512],
+ 3945: [[3904, 4021], 512],
+ 3953: [, 129],
+ 3954: [, 130],
+ 3955: [[3953, 3954], 512],
+ 3956: [, 132],
+ 3957: [[3953, 3956], 512],
+ 3958: [[4018, 3968], 512],
+ 3959: [[4018, 3969], 256],
+ 3960: [[4019, 3968], 512],
+ 3961: [[4019, 3969], 256],
+ 3962: [, 130],
+ 3963: [, 130],
+ 3964: [, 130],
+ 3965: [, 130],
+ 3968: [, 130],
+ 3969: [[3953, 3968], 512],
+ 3970: [, 230],
+ 3971: [, 230],
+ 3972: [, 9],
+ 3974: [, 230],
+ 3975: [, 230],
+ 3987: [[3986, 4023], 512],
+ 3997: [[3996, 4023], 512],
+ 4002: [[4001, 4023], 512],
+ 4007: [[4006, 4023], 512],
+ 4012: [[4011, 4023], 512],
+ 4025: [[3984, 4021], 512],
+ 4038: [, 220]
+ },
+ 4096: {
+ 4133: [, , { 4142: 4134 }],
+ 4134: [[4133, 4142]],
+ 4151: [, 7],
+ 4153: [, 9],
+ 4154: [, 9],
+ 4237: [, 220],
+ 4348: [[4316], 256],
+ 69702: [, 9],
+ 69785: [, , { 69818: 69786 }],
+ 69786: [[69785, 69818]],
+ 69787: [, , { 69818: 69788 }],
+ 69788: [[69787, 69818]],
+ 69797: [, , { 69818: 69803 }],
+ 69803: [[69797, 69818]],
+ 69817: [, 9],
+ 69818: [, 7]
+ },
+ 4352: {
+ 69888: [, 230],
+ 69889: [, 230],
+ 69890: [, 230],
+ 69934: [[69937, 69927]],
+ 69935: [[69938, 69927]],
+ 69937: [, , { 69927: 69934 }],
+ 69938: [, , { 69927: 69935 }],
+ 69939: [, 9],
+ 69940: [, 9],
+ 70080: [, 9]
+ },
+ 4864: { 4957: [, 230], 4958: [, 230], 4959: [, 230] },
+ 5632: { 71350: [, 9], 71351: [, 7] },
+ 5888: { 5908: [, 9], 5940: [, 9], 6098: [, 9], 6109: [, 230] },
+ 6144: { 6313: [, 228] },
+ 6400: { 6457: [, 222], 6458: [, 230], 6459: [, 220] },
+ 6656: {
+ 6679: [, 230],
+ 6680: [, 220],
+ 6752: [, 9],
+ 6773: [, 230],
+ 6774: [, 230],
+ 6775: [, 230],
+ 6776: [, 230],
+ 6777: [, 230],
+ 6778: [, 230],
+ 6779: [, 230],
+ 6780: [, 230],
+ 6783: [, 220]
+ },
+ 6912: {
+ 6917: [, , { 6965: 6918 }],
+ 6918: [[6917, 6965]],
+ 6919: [, , { 6965: 6920 }],
+ 6920: [[6919, 6965]],
+ 6921: [, , { 6965: 6922 }],
+ 6922: [[6921, 6965]],
+ 6923: [, , { 6965: 6924 }],
+ 6924: [[6923, 6965]],
+ 6925: [, , { 6965: 6926 }],
+ 6926: [[6925, 6965]],
+ 6929: [, , { 6965: 6930 }],
+ 6930: [[6929, 6965]],
+ 6964: [, 7],
+ 6970: [, , { 6965: 6971 }],
+ 6971: [[6970, 6965]],
+ 6972: [, , { 6965: 6973 }],
+ 6973: [[6972, 6965]],
+ 6974: [, , { 6965: 6976 }],
+ 6975: [, , { 6965: 6977 }],
+ 6976: [[6974, 6965]],
+ 6977: [[6975, 6965]],
+ 6978: [, , { 6965: 6979 }],
+ 6979: [[6978, 6965]],
+ 6980: [, 9],
+ 7019: [, 230],
+ 7020: [, 220],
+ 7021: [, 230],
+ 7022: [, 230],
+ 7023: [, 230],
+ 7024: [, 230],
+ 7025: [, 230],
+ 7026: [, 230],
+ 7027: [, 230],
+ 7082: [, 9],
+ 7083: [, 9],
+ 7142: [, 7],
+ 7154: [, 9],
+ 7155: [, 9]
+ },
+ 7168: {
+ 7223: [, 7],
+ 7376: [, 230],
+ 7377: [, 230],
+ 7378: [, 230],
+ 7380: [, 1],
+ 7381: [, 220],
+ 7382: [, 220],
+ 7383: [, 220],
+ 7384: [, 220],
+ 7385: [, 220],
+ 7386: [, 230],
+ 7387: [, 230],
+ 7388: [, 220],
+ 7389: [, 220],
+ 7390: [, 220],
+ 7391: [, 220],
+ 7392: [, 230],
+ 7394: [, 1],
+ 7395: [, 1],
+ 7396: [, 1],
+ 7397: [, 1],
+ 7398: [, 1],
+ 7399: [, 1],
+ 7400: [, 1],
+ 7405: [, 220],
+ 7412: [, 230]
+ },
+ 7424: {
+ 7468: [[65], 256],
+ 7469: [[198], 256],
+ 7470: [[66], 256],
+ 7472: [[68], 256],
+ 7473: [[69], 256],
+ 7474: [[398], 256],
+ 7475: [[71], 256],
+ 7476: [[72], 256],
+ 7477: [[73], 256],
+ 7478: [[74], 256],
+ 7479: [[75], 256],
+ 7480: [[76], 256],
+ 7481: [[77], 256],
+ 7482: [[78], 256],
+ 7484: [[79], 256],
+ 7485: [[546], 256],
+ 7486: [[80], 256],
+ 7487: [[82], 256],
+ 7488: [[84], 256],
+ 7489: [[85], 256],
+ 7490: [[87], 256],
+ 7491: [[97], 256],
+ 7492: [[592], 256],
+ 7493: [[593], 256],
+ 7494: [[7426], 256],
+ 7495: [[98], 256],
+ 7496: [[100], 256],
+ 7497: [[101], 256],
+ 7498: [[601], 256],
+ 7499: [[603], 256],
+ 7500: [[604], 256],
+ 7501: [[103], 256],
+ 7503: [[107], 256],
+ 7504: [[109], 256],
+ 7505: [[331], 256],
+ 7506: [[111], 256],
+ 7507: [[596], 256],
+ 7508: [[7446], 256],
+ 7509: [[7447], 256],
+ 7510: [[112], 256],
+ 7511: [[116], 256],
+ 7512: [[117], 256],
+ 7513: [[7453], 256],
+ 7514: [[623], 256],
+ 7515: [[118], 256],
+ 7516: [[7461], 256],
+ 7517: [[946], 256],
+ 7518: [[947], 256],
+ 7519: [[948], 256],
+ 7520: [[966], 256],
+ 7521: [[967], 256],
+ 7522: [[105], 256],
+ 7523: [[114], 256],
+ 7524: [[117], 256],
+ 7525: [[118], 256],
+ 7526: [[946], 256],
+ 7527: [[947], 256],
+ 7528: [[961], 256],
+ 7529: [[966], 256],
+ 7530: [[967], 256],
+ 7544: [[1085], 256],
+ 7579: [[594], 256],
+ 7580: [[99], 256],
+ 7581: [[597], 256],
+ 7582: [[240], 256],
+ 7583: [[604], 256],
+ 7584: [[102], 256],
+ 7585: [[607], 256],
+ 7586: [[609], 256],
+ 7587: [[613], 256],
+ 7588: [[616], 256],
+ 7589: [[617], 256],
+ 7590: [[618], 256],
+ 7591: [[7547], 256],
+ 7592: [[669], 256],
+ 7593: [[621], 256],
+ 7594: [[7557], 256],
+ 7595: [[671], 256],
+ 7596: [[625], 256],
+ 7597: [[624], 256],
+ 7598: [[626], 256],
+ 7599: [[627], 256],
+ 7600: [[628], 256],
+ 7601: [[629], 256],
+ 7602: [[632], 256],
+ 7603: [[642], 256],
+ 7604: [[643], 256],
+ 7605: [[427], 256],
+ 7606: [[649], 256],
+ 7607: [[650], 256],
+ 7608: [[7452], 256],
+ 7609: [[651], 256],
+ 7610: [[652], 256],
+ 7611: [[122], 256],
+ 7612: [[656], 256],
+ 7613: [[657], 256],
+ 7614: [[658], 256],
+ 7615: [[952], 256],
+ 7616: [, 230],
+ 7617: [, 230],
+ 7618: [, 220],
+ 7619: [, 230],
+ 7620: [, 230],
+ 7621: [, 230],
+ 7622: [, 230],
+ 7623: [, 230],
+ 7624: [, 230],
+ 7625: [, 230],
+ 7626: [, 220],
+ 7627: [, 230],
+ 7628: [, 230],
+ 7629: [, 234],
+ 7630: [, 214],
+ 7631: [, 220],
+ 7632: [, 202],
+ 7633: [, 230],
+ 7634: [, 230],
+ 7635: [, 230],
+ 7636: [, 230],
+ 7637: [, 230],
+ 7638: [, 230],
+ 7639: [, 230],
+ 7640: [, 230],
+ 7641: [, 230],
+ 7642: [, 230],
+ 7643: [, 230],
+ 7644: [, 230],
+ 7645: [, 230],
+ 7646: [, 230],
+ 7647: [, 230],
+ 7648: [, 230],
+ 7649: [, 230],
+ 7650: [, 230],
+ 7651: [, 230],
+ 7652: [, 230],
+ 7653: [, 230],
+ 7654: [, 230],
+ 7676: [, 233],
+ 7677: [, 220],
+ 7678: [, 230],
+ 7679: [, 220]
+ },
+ 7680: {
+ 7680: [[65, 805]],
+ 7681: [[97, 805]],
+ 7682: [[66, 775]],
+ 7683: [[98, 775]],
+ 7684: [[66, 803]],
+ 7685: [[98, 803]],
+ 7686: [[66, 817]],
+ 7687: [[98, 817]],
+ 7688: [[199, 769]],
+ 7689: [[231, 769]],
+ 7690: [[68, 775]],
+ 7691: [[100, 775]],
+ 7692: [[68, 803]],
+ 7693: [[100, 803]],
+ 7694: [[68, 817]],
+ 7695: [[100, 817]],
+ 7696: [[68, 807]],
+ 7697: [[100, 807]],
+ 7698: [[68, 813]],
+ 7699: [[100, 813]],
+ 7700: [[274, 768]],
+ 7701: [[275, 768]],
+ 7702: [[274, 769]],
+ 7703: [[275, 769]],
+ 7704: [[69, 813]],
+ 7705: [[101, 813]],
+ 7706: [[69, 816]],
+ 7707: [[101, 816]],
+ 7708: [[552, 774]],
+ 7709: [[553, 774]],
+ 7710: [[70, 775]],
+ 7711: [[102, 775]],
+ 7712: [[71, 772]],
+ 7713: [[103, 772]],
+ 7714: [[72, 775]],
+ 7715: [[104, 775]],
+ 7716: [[72, 803]],
+ 7717: [[104, 803]],
+ 7718: [[72, 776]],
+ 7719: [[104, 776]],
+ 7720: [[72, 807]],
+ 7721: [[104, 807]],
+ 7722: [[72, 814]],
+ 7723: [[104, 814]],
+ 7724: [[73, 816]],
+ 7725: [[105, 816]],
+ 7726: [[207, 769]],
+ 7727: [[239, 769]],
+ 7728: [[75, 769]],
+ 7729: [[107, 769]],
+ 7730: [[75, 803]],
+ 7731: [[107, 803]],
+ 7732: [[75, 817]],
+ 7733: [[107, 817]],
+ 7734: [[76, 803], , { 772: 7736 }],
+ 7735: [[108, 803], , { 772: 7737 }],
+ 7736: [[7734, 772]],
+ 7737: [[7735, 772]],
+ 7738: [[76, 817]],
+ 7739: [[108, 817]],
+ 7740: [[76, 813]],
+ 7741: [[108, 813]],
+ 7742: [[77, 769]],
+ 7743: [[109, 769]],
+ 7744: [[77, 775]],
+ 7745: [[109, 775]],
+ 7746: [[77, 803]],
+ 7747: [[109, 803]],
+ 7748: [[78, 775]],
+ 7749: [[110, 775]],
+ 7750: [[78, 803]],
+ 7751: [[110, 803]],
+ 7752: [[78, 817]],
+ 7753: [[110, 817]],
+ 7754: [[78, 813]],
+ 7755: [[110, 813]],
+ 7756: [[213, 769]],
+ 7757: [[245, 769]],
+ 7758: [[213, 776]],
+ 7759: [[245, 776]],
+ 7760: [[332, 768]],
+ 7761: [[333, 768]],
+ 7762: [[332, 769]],
+ 7763: [[333, 769]],
+ 7764: [[80, 769]],
+ 7765: [[112, 769]],
+ 7766: [[80, 775]],
+ 7767: [[112, 775]],
+ 7768: [[82, 775]],
+ 7769: [[114, 775]],
+ 7770: [[82, 803], , { 772: 7772 }],
+ 7771: [[114, 803], , { 772: 7773 }],
+ 7772: [[7770, 772]],
+ 7773: [[7771, 772]],
+ 7774: [[82, 817]],
+ 7775: [[114, 817]],
+ 7776: [[83, 775]],
+ 7777: [[115, 775]],
+ 7778: [[83, 803], , { 775: 7784 }],
+ 7779: [[115, 803], , { 775: 7785 }],
+ 7780: [[346, 775]],
+ 7781: [[347, 775]],
+ 7782: [[352, 775]],
+ 7783: [[353, 775]],
+ 7784: [[7778, 775]],
+ 7785: [[7779, 775]],
+ 7786: [[84, 775]],
+ 7787: [[116, 775]],
+ 7788: [[84, 803]],
+ 7789: [[116, 803]],
+ 7790: [[84, 817]],
+ 7791: [[116, 817]],
+ 7792: [[84, 813]],
+ 7793: [[116, 813]],
+ 7794: [[85, 804]],
+ 7795: [[117, 804]],
+ 7796: [[85, 816]],
+ 7797: [[117, 816]],
+ 7798: [[85, 813]],
+ 7799: [[117, 813]],
+ 7800: [[360, 769]],
+ 7801: [[361, 769]],
+ 7802: [[362, 776]],
+ 7803: [[363, 776]],
+ 7804: [[86, 771]],
+ 7805: [[118, 771]],
+ 7806: [[86, 803]],
+ 7807: [[118, 803]],
+ 7808: [[87, 768]],
+ 7809: [[119, 768]],
+ 7810: [[87, 769]],
+ 7811: [[119, 769]],
+ 7812: [[87, 776]],
+ 7813: [[119, 776]],
+ 7814: [[87, 775]],
+ 7815: [[119, 775]],
+ 7816: [[87, 803]],
+ 7817: [[119, 803]],
+ 7818: [[88, 775]],
+ 7819: [[120, 775]],
+ 7820: [[88, 776]],
+ 7821: [[120, 776]],
+ 7822: [[89, 775]],
+ 7823: [[121, 775]],
+ 7824: [[90, 770]],
+ 7825: [[122, 770]],
+ 7826: [[90, 803]],
+ 7827: [[122, 803]],
+ 7828: [[90, 817]],
+ 7829: [[122, 817]],
+ 7830: [[104, 817]],
+ 7831: [[116, 776]],
+ 7832: [[119, 778]],
+ 7833: [[121, 778]],
+ 7834: [[97, 702], 256],
+ 7835: [[383, 775]],
+ 7840: [[65, 803], , { 770: 7852, 774: 7862 }],
+ 7841: [[97, 803], , { 770: 7853, 774: 7863 }],
+ 7842: [[65, 777]],
+ 7843: [[97, 777]],
+ 7844: [[194, 769]],
+ 7845: [[226, 769]],
+ 7846: [[194, 768]],
+ 7847: [[226, 768]],
+ 7848: [[194, 777]],
+ 7849: [[226, 777]],
+ 7850: [[194, 771]],
+ 7851: [[226, 771]],
+ 7852: [[7840, 770]],
+ 7853: [[7841, 770]],
+ 7854: [[258, 769]],
+ 7855: [[259, 769]],
+ 7856: [[258, 768]],
+ 7857: [[259, 768]],
+ 7858: [[258, 777]],
+ 7859: [[259, 777]],
+ 7860: [[258, 771]],
+ 7861: [[259, 771]],
+ 7862: [[7840, 774]],
+ 7863: [[7841, 774]],
+ 7864: [[69, 803], , { 770: 7878 }],
+ 7865: [[101, 803], , { 770: 7879 }],
+ 7866: [[69, 777]],
+ 7867: [[101, 777]],
+ 7868: [[69, 771]],
+ 7869: [[101, 771]],
+ 7870: [[202, 769]],
+ 7871: [[234, 769]],
+ 7872: [[202, 768]],
+ 7873: [[234, 768]],
+ 7874: [[202, 777]],
+ 7875: [[234, 777]],
+ 7876: [[202, 771]],
+ 7877: [[234, 771]],
+ 7878: [[7864, 770]],
+ 7879: [[7865, 770]],
+ 7880: [[73, 777]],
+ 7881: [[105, 777]],
+ 7882: [[73, 803]],
+ 7883: [[105, 803]],
+ 7884: [[79, 803], , { 770: 7896 }],
+ 7885: [[111, 803], , { 770: 7897 }],
+ 7886: [[79, 777]],
+ 7887: [[111, 777]],
+ 7888: [[212, 769]],
+ 7889: [[244, 769]],
+ 7890: [[212, 768]],
+ 7891: [[244, 768]],
+ 7892: [[212, 777]],
+ 7893: [[244, 777]],
+ 7894: [[212, 771]],
+ 7895: [[244, 771]],
+ 7896: [[7884, 770]],
+ 7897: [[7885, 770]],
+ 7898: [[416, 769]],
+ 7899: [[417, 769]],
+ 7900: [[416, 768]],
+ 7901: [[417, 768]],
+ 7902: [[416, 777]],
+ 7903: [[417, 777]],
+ 7904: [[416, 771]],
+ 7905: [[417, 771]],
+ 7906: [[416, 803]],
+ 7907: [[417, 803]],
+ 7908: [[85, 803]],
+ 7909: [[117, 803]],
+ 7910: [[85, 777]],
+ 7911: [[117, 777]],
+ 7912: [[431, 769]],
+ 7913: [[432, 769]],
+ 7914: [[431, 768]],
+ 7915: [[432, 768]],
+ 7916: [[431, 777]],
+ 7917: [[432, 777]],
+ 7918: [[431, 771]],
+ 7919: [[432, 771]],
+ 7920: [[431, 803]],
+ 7921: [[432, 803]],
+ 7922: [[89, 768]],
+ 7923: [[121, 768]],
+ 7924: [[89, 803]],
+ 7925: [[121, 803]],
+ 7926: [[89, 777]],
+ 7927: [[121, 777]],
+ 7928: [[89, 771]],
+ 7929: [[121, 771]]
+ },
+ 7936: {
+ 7936: [[945, 787], , { 768: 7938, 769: 7940, 834: 7942, 837: 8064 }],
+ 7937: [[945, 788], , { 768: 7939, 769: 7941, 834: 7943, 837: 8065 }],
+ 7938: [[7936, 768], , { 837: 8066 }],
+ 7939: [[7937, 768], , { 837: 8067 }],
+ 7940: [[7936, 769], , { 837: 8068 }],
+ 7941: [[7937, 769], , { 837: 8069 }],
+ 7942: [[7936, 834], , { 837: 8070 }],
+ 7943: [[7937, 834], , { 837: 8071 }],
+ 7944: [[913, 787], , { 768: 7946, 769: 7948, 834: 7950, 837: 8072 }],
+ 7945: [[913, 788], , { 768: 7947, 769: 7949, 834: 7951, 837: 8073 }],
+ 7946: [[7944, 768], , { 837: 8074 }],
+ 7947: [[7945, 768], , { 837: 8075 }],
+ 7948: [[7944, 769], , { 837: 8076 }],
+ 7949: [[7945, 769], , { 837: 8077 }],
+ 7950: [[7944, 834], , { 837: 8078 }],
+ 7951: [[7945, 834], , { 837: 8079 }],
+ 7952: [[949, 787], , { 768: 7954, 769: 7956 }],
+ 7953: [[949, 788], , { 768: 7955, 769: 7957 }],
+ 7954: [[7952, 768]],
+ 7955: [[7953, 768]],
+ 7956: [[7952, 769]],
+ 7957: [[7953, 769]],
+ 7960: [[917, 787], , { 768: 7962, 769: 7964 }],
+ 7961: [[917, 788], , { 768: 7963, 769: 7965 }],
+ 7962: [[7960, 768]],
+ 7963: [[7961, 768]],
+ 7964: [[7960, 769]],
+ 7965: [[7961, 769]],
+ 7968: [[951, 787], , { 768: 7970, 769: 7972, 834: 7974, 837: 8080 }],
+ 7969: [[951, 788], , { 768: 7971, 769: 7973, 834: 7975, 837: 8081 }],
+ 7970: [[7968, 768], , { 837: 8082 }],
+ 7971: [[7969, 768], , { 837: 8083 }],
+ 7972: [[7968, 769], , { 837: 8084 }],
+ 7973: [[7969, 769], , { 837: 8085 }],
+ 7974: [[7968, 834], , { 837: 8086 }],
+ 7975: [[7969, 834], , { 837: 8087 }],
+ 7976: [[919, 787], , { 768: 7978, 769: 7980, 834: 7982, 837: 8088 }],
+ 7977: [[919, 788], , { 768: 7979, 769: 7981, 834: 7983, 837: 8089 }],
+ 7978: [[7976, 768], , { 837: 8090 }],
+ 7979: [[7977, 768], , { 837: 8091 }],
+ 7980: [[7976, 769], , { 837: 8092 }],
+ 7981: [[7977, 769], , { 837: 8093 }],
+ 7982: [[7976, 834], , { 837: 8094 }],
+ 7983: [[7977, 834], , { 837: 8095 }],
+ 7984: [[953, 787], , { 768: 7986, 769: 7988, 834: 7990 }],
+ 7985: [[953, 788], , { 768: 7987, 769: 7989, 834: 7991 }],
+ 7986: [[7984, 768]],
+ 7987: [[7985, 768]],
+ 7988: [[7984, 769]],
+ 7989: [[7985, 769]],
+ 7990: [[7984, 834]],
+ 7991: [[7985, 834]],
+ 7992: [[921, 787], , { 768: 7994, 769: 7996, 834: 7998 }],
+ 7993: [[921, 788], , { 768: 7995, 769: 7997, 834: 7999 }],
+ 7994: [[7992, 768]],
+ 7995: [[7993, 768]],
+ 7996: [[7992, 769]],
+ 7997: [[7993, 769]],
+ 7998: [[7992, 834]],
+ 7999: [[7993, 834]],
+ 8000: [[959, 787], , { 768: 8002, 769: 8004 }],
+ 8001: [[959, 788], , { 768: 8003, 769: 8005 }],
+ 8002: [[8000, 768]],
+ 8003: [[8001, 768]],
+ 8004: [[8000, 769]],
+ 8005: [[8001, 769]],
+ 8008: [[927, 787], , { 768: 8010, 769: 8012 }],
+ 8009: [[927, 788], , { 768: 8011, 769: 8013 }],
+ 8010: [[8008, 768]],
+ 8011: [[8009, 768]],
+ 8012: [[8008, 769]],
+ 8013: [[8009, 769]],
+ 8016: [[965, 787], , { 768: 8018, 769: 8020, 834: 8022 }],
+ 8017: [[965, 788], , { 768: 8019, 769: 8021, 834: 8023 }],
+ 8018: [[8016, 768]],
+ 8019: [[8017, 768]],
+ 8020: [[8016, 769]],
+ 8021: [[8017, 769]],
+ 8022: [[8016, 834]],
+ 8023: [[8017, 834]],
+ 8025: [[933, 788], , { 768: 8027, 769: 8029, 834: 8031 }],
+ 8027: [[8025, 768]],
+ 8029: [[8025, 769]],
+ 8031: [[8025, 834]],
+ 8032: [[969, 787], , { 768: 8034, 769: 8036, 834: 8038, 837: 8096 }],
+ 8033: [[969, 788], , { 768: 8035, 769: 8037, 834: 8039, 837: 8097 }],
+ 8034: [[8032, 768], , { 837: 8098 }],
+ 8035: [[8033, 768], , { 837: 8099 }],
+ 8036: [[8032, 769], , { 837: 8100 }],
+ 8037: [[8033, 769], , { 837: 8101 }],
+ 8038: [[8032, 834], , { 837: 8102 }],
+ 8039: [[8033, 834], , { 837: 8103 }],
+ 8040: [[937, 787], , { 768: 8042, 769: 8044, 834: 8046, 837: 8104 }],
+ 8041: [[937, 788], , { 768: 8043, 769: 8045, 834: 8047, 837: 8105 }],
+ 8042: [[8040, 768], , { 837: 8106 }],
+ 8043: [[8041, 768], , { 837: 8107 }],
+ 8044: [[8040, 769], , { 837: 8108 }],
+ 8045: [[8041, 769], , { 837: 8109 }],
+ 8046: [[8040, 834], , { 837: 8110 }],
+ 8047: [[8041, 834], , { 837: 8111 }],
+ 8048: [[945, 768], , { 837: 8114 }],
+ 8049: [[940]],
+ 8050: [[949, 768]],
+ 8051: [[941]],
+ 8052: [[951, 768], , { 837: 8130 }],
+ 8053: [[942]],
+ 8054: [[953, 768]],
+ 8055: [[943]],
+ 8056: [[959, 768]],
+ 8057: [[972]],
+ 8058: [[965, 768]],
+ 8059: [[973]],
+ 8060: [[969, 768], , { 837: 8178 }],
+ 8061: [[974]],
+ 8064: [[7936, 837]],
+ 8065: [[7937, 837]],
+ 8066: [[7938, 837]],
+ 8067: [[7939, 837]],
+ 8068: [[7940, 837]],
+ 8069: [[7941, 837]],
+ 8070: [[7942, 837]],
+ 8071: [[7943, 837]],
+ 8072: [[7944, 837]],
+ 8073: [[7945, 837]],
+ 8074: [[7946, 837]],
+ 8075: [[7947, 837]],
+ 8076: [[7948, 837]],
+ 8077: [[7949, 837]],
+ 8078: [[7950, 837]],
+ 8079: [[7951, 837]],
+ 8080: [[7968, 837]],
+ 8081: [[7969, 837]],
+ 8082: [[7970, 837]],
+ 8083: [[7971, 837]],
+ 8084: [[7972, 837]],
+ 8085: [[7973, 837]],
+ 8086: [[7974, 837]],
+ 8087: [[7975, 837]],
+ 8088: [[7976, 837]],
+ 8089: [[7977, 837]],
+ 8090: [[7978, 837]],
+ 8091: [[7979, 837]],
+ 8092: [[7980, 837]],
+ 8093: [[7981, 837]],
+ 8094: [[7982, 837]],
+ 8095: [[7983, 837]],
+ 8096: [[8032, 837]],
+ 8097: [[8033, 837]],
+ 8098: [[8034, 837]],
+ 8099: [[8035, 837]],
+ 8100: [[8036, 837]],
+ 8101: [[8037, 837]],
+ 8102: [[8038, 837]],
+ 8103: [[8039, 837]],
+ 8104: [[8040, 837]],
+ 8105: [[8041, 837]],
+ 8106: [[8042, 837]],
+ 8107: [[8043, 837]],
+ 8108: [[8044, 837]],
+ 8109: [[8045, 837]],
+ 8110: [[8046, 837]],
+ 8111: [[8047, 837]],
+ 8112: [[945, 774]],
+ 8113: [[945, 772]],
+ 8114: [[8048, 837]],
+ 8115: [[945, 837]],
+ 8116: [[940, 837]],
+ 8118: [[945, 834], , { 837: 8119 }],
+ 8119: [[8118, 837]],
+ 8120: [[913, 774]],
+ 8121: [[913, 772]],
+ 8122: [[913, 768]],
+ 8123: [[902]],
+ 8124: [[913, 837]],
+ 8125: [[32, 787], 256],
+ 8126: [[953]],
+ 8127: [[32, 787], 256, { 768: 8141, 769: 8142, 834: 8143 }],
+ 8128: [[32, 834], 256],
+ 8129: [[168, 834]],
+ 8130: [[8052, 837]],
+ 8131: [[951, 837]],
+ 8132: [[942, 837]],
+ 8134: [[951, 834], , { 837: 8135 }],
+ 8135: [[8134, 837]],
+ 8136: [[917, 768]],
+ 8137: [[904]],
+ 8138: [[919, 768]],
+ 8139: [[905]],
+ 8140: [[919, 837]],
+ 8141: [[8127, 768]],
+ 8142: [[8127, 769]],
+ 8143: [[8127, 834]],
+ 8144: [[953, 774]],
+ 8145: [[953, 772]],
+ 8146: [[970, 768]],
+ 8147: [[912]],
+ 8150: [[953, 834]],
+ 8151: [[970, 834]],
+ 8152: [[921, 774]],
+ 8153: [[921, 772]],
+ 8154: [[921, 768]],
+ 8155: [[906]],
+ 8157: [[8190, 768]],
+ 8158: [[8190, 769]],
+ 8159: [[8190, 834]],
+ 8160: [[965, 774]],
+ 8161: [[965, 772]],
+ 8162: [[971, 768]],
+ 8163: [[944]],
+ 8164: [[961, 787]],
+ 8165: [[961, 788]],
+ 8166: [[965, 834]],
+ 8167: [[971, 834]],
+ 8168: [[933, 774]],
+ 8169: [[933, 772]],
+ 8170: [[933, 768]],
+ 8171: [[910]],
+ 8172: [[929, 788]],
+ 8173: [[168, 768]],
+ 8174: [[901]],
+ 8175: [[96]],
+ 8178: [[8060, 837]],
+ 8179: [[969, 837]],
+ 8180: [[974, 837]],
+ 8182: [[969, 834], , { 837: 8183 }],
+ 8183: [[8182, 837]],
+ 8184: [[927, 768]],
+ 8185: [[908]],
+ 8186: [[937, 768]],
+ 8187: [[911]],
+ 8188: [[937, 837]],
+ 8189: [[180]],
+ 8190: [[32, 788], 256, { 768: 8157, 769: 8158, 834: 8159 }]
+ },
+ 8192: {
+ 8192: [[8194]],
+ 8193: [[8195]],
+ 8194: [[32], 256],
+ 8195: [[32], 256],
+ 8196: [[32], 256],
+ 8197: [[32], 256],
+ 8198: [[32], 256],
+ 8199: [[32], 256],
+ 8200: [[32], 256],
+ 8201: [[32], 256],
+ 8202: [[32], 256],
+ 8209: [[8208], 256],
+ 8215: [[32, 819], 256],
+ 8228: [[46], 256],
+ 8229: [[46, 46], 256],
+ 8230: [[46, 46, 46], 256],
+ 8239: [[32], 256],
+ 8243: [[8242, 8242], 256],
+ 8244: [[8242, 8242, 8242], 256],
+ 8246: [[8245, 8245], 256],
+ 8247: [[8245, 8245, 8245], 256],
+ 8252: [[33, 33], 256],
+ 8254: [[32, 773], 256],
+ 8263: [[63, 63], 256],
+ 8264: [[63, 33], 256],
+ 8265: [[33, 63], 256],
+ 8279: [[8242, 8242, 8242, 8242], 256],
+ 8287: [[32], 256],
+ 8304: [[48], 256],
+ 8305: [[105], 256],
+ 8308: [[52], 256],
+ 8309: [[53], 256],
+ 8310: [[54], 256],
+ 8311: [[55], 256],
+ 8312: [[56], 256],
+ 8313: [[57], 256],
+ 8314: [[43], 256],
+ 8315: [[8722], 256],
+ 8316: [[61], 256],
+ 8317: [[40], 256],
+ 8318: [[41], 256],
+ 8319: [[110], 256],
+ 8320: [[48], 256],
+ 8321: [[49], 256],
+ 8322: [[50], 256],
+ 8323: [[51], 256],
+ 8324: [[52], 256],
+ 8325: [[53], 256],
+ 8326: [[54], 256],
+ 8327: [[55], 256],
+ 8328: [[56], 256],
+ 8329: [[57], 256],
+ 8330: [[43], 256],
+ 8331: [[8722], 256],
+ 8332: [[61], 256],
+ 8333: [[40], 256],
+ 8334: [[41], 256],
+ 8336: [[97], 256],
+ 8337: [[101], 256],
+ 8338: [[111], 256],
+ 8339: [[120], 256],
+ 8340: [[601], 256],
+ 8341: [[104], 256],
+ 8342: [[107], 256],
+ 8343: [[108], 256],
+ 8344: [[109], 256],
+ 8345: [[110], 256],
+ 8346: [[112], 256],
+ 8347: [[115], 256],
+ 8348: [[116], 256],
+ 8360: [[82, 115], 256],
+ 8400: [, 230],
+ 8401: [, 230],
+ 8402: [, 1],
+ 8403: [, 1],
+ 8404: [, 230],
+ 8405: [, 230],
+ 8406: [, 230],
+ 8407: [, 230],
+ 8408: [, 1],
+ 8409: [, 1],
+ 8410: [, 1],
+ 8411: [, 230],
+ 8412: [, 230],
+ 8417: [, 230],
+ 8421: [, 1],
+ 8422: [, 1],
+ 8423: [, 230],
+ 8424: [, 220],
+ 8425: [, 230],
+ 8426: [, 1],
+ 8427: [, 1],
+ 8428: [, 220],
+ 8429: [, 220],
+ 8430: [, 220],
+ 8431: [, 220],
+ 8432: [, 230]
+ },
+ 8448: {
+ 8448: [[97, 47, 99], 256],
+ 8449: [[97, 47, 115], 256],
+ 8450: [[67], 256],
+ 8451: [[176, 67], 256],
+ 8453: [[99, 47, 111], 256],
+ 8454: [[99, 47, 117], 256],
+ 8455: [[400], 256],
+ 8457: [[176, 70], 256],
+ 8458: [[103], 256],
+ 8459: [[72], 256],
+ 8460: [[72], 256],
+ 8461: [[72], 256],
+ 8462: [[104], 256],
+ 8463: [[295], 256],
+ 8464: [[73], 256],
+ 8465: [[73], 256],
+ 8466: [[76], 256],
+ 8467: [[108], 256],
+ 8469: [[78], 256],
+ 8470: [[78, 111], 256],
+ 8473: [[80], 256],
+ 8474: [[81], 256],
+ 8475: [[82], 256],
+ 8476: [[82], 256],
+ 8477: [[82], 256],
+ 8480: [[83, 77], 256],
+ 8481: [[84, 69, 76], 256],
+ 8482: [[84, 77], 256],
+ 8484: [[90], 256],
+ 8486: [[937]],
+ 8488: [[90], 256],
+ 8490: [[75]],
+ 8491: [[197]],
+ 8492: [[66], 256],
+ 8493: [[67], 256],
+ 8495: [[101], 256],
+ 8496: [[69], 256],
+ 8497: [[70], 256],
+ 8499: [[77], 256],
+ 8500: [[111], 256],
+ 8501: [[1488], 256],
+ 8502: [[1489], 256],
+ 8503: [[1490], 256],
+ 8504: [[1491], 256],
+ 8505: [[105], 256],
+ 8507: [[70, 65, 88], 256],
+ 8508: [[960], 256],
+ 8509: [[947], 256],
+ 8510: [[915], 256],
+ 8511: [[928], 256],
+ 8512: [[8721], 256],
+ 8517: [[68], 256],
+ 8518: [[100], 256],
+ 8519: [[101], 256],
+ 8520: [[105], 256],
+ 8521: [[106], 256],
+ 8528: [[49, 8260, 55], 256],
+ 8529: [[49, 8260, 57], 256],
+ 8530: [[49, 8260, 49, 48], 256],
+ 8531: [[49, 8260, 51], 256],
+ 8532: [[50, 8260, 51], 256],
+ 8533: [[49, 8260, 53], 256],
+ 8534: [[50, 8260, 53], 256],
+ 8535: [[51, 8260, 53], 256],
+ 8536: [[52, 8260, 53], 256],
+ 8537: [[49, 8260, 54], 256],
+ 8538: [[53, 8260, 54], 256],
+ 8539: [[49, 8260, 56], 256],
+ 8540: [[51, 8260, 56], 256],
+ 8541: [[53, 8260, 56], 256],
+ 8542: [[55, 8260, 56], 256],
+ 8543: [[49, 8260], 256],
+ 8544: [[73], 256],
+ 8545: [[73, 73], 256],
+ 8546: [[73, 73, 73], 256],
+ 8547: [[73, 86], 256],
+ 8548: [[86], 256],
+ 8549: [[86, 73], 256],
+ 8550: [[86, 73, 73], 256],
+ 8551: [[86, 73, 73, 73], 256],
+ 8552: [[73, 88], 256],
+ 8553: [[88], 256],
+ 8554: [[88, 73], 256],
+ 8555: [[88, 73, 73], 256],
+ 8556: [[76], 256],
+ 8557: [[67], 256],
+ 8558: [[68], 256],
+ 8559: [[77], 256],
+ 8560: [[105], 256],
+ 8561: [[105, 105], 256],
+ 8562: [[105, 105, 105], 256],
+ 8563: [[105, 118], 256],
+ 8564: [[118], 256],
+ 8565: [[118, 105], 256],
+ 8566: [[118, 105, 105], 256],
+ 8567: [[118, 105, 105, 105], 256],
+ 8568: [[105, 120], 256],
+ 8569: [[120], 256],
+ 8570: [[120, 105], 256],
+ 8571: [[120, 105, 105], 256],
+ 8572: [[108], 256],
+ 8573: [[99], 256],
+ 8574: [[100], 256],
+ 8575: [[109], 256],
+ 8585: [[48, 8260, 51], 256],
+ 8592: [, , { 824: 8602 }],
+ 8594: [, , { 824: 8603 }],
+ 8596: [, , { 824: 8622 }],
+ 8602: [[8592, 824]],
+ 8603: [[8594, 824]],
+ 8622: [[8596, 824]],
+ 8653: [[8656, 824]],
+ 8654: [[8660, 824]],
+ 8655: [[8658, 824]],
+ 8656: [, , { 824: 8653 }],
+ 8658: [, , { 824: 8655 }],
+ 8660: [, , { 824: 8654 }]
+ },
+ 8704: {
+ 8707: [, , { 824: 8708 }],
+ 8708: [[8707, 824]],
+ 8712: [, , { 824: 8713 }],
+ 8713: [[8712, 824]],
+ 8715: [, , { 824: 8716 }],
+ 8716: [[8715, 824]],
+ 8739: [, , { 824: 8740 }],
+ 8740: [[8739, 824]],
+ 8741: [, , { 824: 8742 }],
+ 8742: [[8741, 824]],
+ 8748: [[8747, 8747], 256],
+ 8749: [[8747, 8747, 8747], 256],
+ 8751: [[8750, 8750], 256],
+ 8752: [[8750, 8750, 8750], 256],
+ 8764: [, , { 824: 8769 }],
+ 8769: [[8764, 824]],
+ 8771: [, , { 824: 8772 }],
+ 8772: [[8771, 824]],
+ 8773: [, , { 824: 8775 }],
+ 8775: [[8773, 824]],
+ 8776: [, , { 824: 8777 }],
+ 8777: [[8776, 824]],
+ 8781: [, , { 824: 8813 }],
+ 8800: [[61, 824]],
+ 8801: [, , { 824: 8802 }],
+ 8802: [[8801, 824]],
+ 8804: [, , { 824: 8816 }],
+ 8805: [, , { 824: 8817 }],
+ 8813: [[8781, 824]],
+ 8814: [[60, 824]],
+ 8815: [[62, 824]],
+ 8816: [[8804, 824]],
+ 8817: [[8805, 824]],
+ 8818: [, , { 824: 8820 }],
+ 8819: [, , { 824: 8821 }],
+ 8820: [[8818, 824]],
+ 8821: [[8819, 824]],
+ 8822: [, , { 824: 8824 }],
+ 8823: [, , { 824: 8825 }],
+ 8824: [[8822, 824]],
+ 8825: [[8823, 824]],
+ 8826: [, , { 824: 8832 }],
+ 8827: [, , { 824: 8833 }],
+ 8828: [, , { 824: 8928 }],
+ 8829: [, , { 824: 8929 }],
+ 8832: [[8826, 824]],
+ 8833: [[8827, 824]],
+ 8834: [, , { 824: 8836 }],
+ 8835: [, , { 824: 8837 }],
+ 8836: [[8834, 824]],
+ 8837: [[8835, 824]],
+ 8838: [, , { 824: 8840 }],
+ 8839: [, , { 824: 8841 }],
+ 8840: [[8838, 824]],
+ 8841: [[8839, 824]],
+ 8849: [, , { 824: 8930 }],
+ 8850: [, , { 824: 8931 }],
+ 8866: [, , { 824: 8876 }],
+ 8872: [, , { 824: 8877 }],
+ 8873: [, , { 824: 8878 }],
+ 8875: [, , { 824: 8879 }],
+ 8876: [[8866, 824]],
+ 8877: [[8872, 824]],
+ 8878: [[8873, 824]],
+ 8879: [[8875, 824]],
+ 8882: [, , { 824: 8938 }],
+ 8883: [, , { 824: 8939 }],
+ 8884: [, , { 824: 8940 }],
+ 8885: [, , { 824: 8941 }],
+ 8928: [[8828, 824]],
+ 8929: [[8829, 824]],
+ 8930: [[8849, 824]],
+ 8931: [[8850, 824]],
+ 8938: [[8882, 824]],
+ 8939: [[8883, 824]],
+ 8940: [[8884, 824]],
+ 8941: [[8885, 824]]
+ },
+ 8960: { 9001: [[12296]], 9002: [[12297]] },
+ 9216: {
+ 9312: [[49], 256],
+ 9313: [[50], 256],
+ 9314: [[51], 256],
+ 9315: [[52], 256],
+ 9316: [[53], 256],
+ 9317: [[54], 256],
+ 9318: [[55], 256],
+ 9319: [[56], 256],
+ 9320: [[57], 256],
+ 9321: [[49, 48], 256],
+ 9322: [[49, 49], 256],
+ 9323: [[49, 50], 256],
+ 9324: [[49, 51], 256],
+ 9325: [[49, 52], 256],
+ 9326: [[49, 53], 256],
+ 9327: [[49, 54], 256],
+ 9328: [[49, 55], 256],
+ 9329: [[49, 56], 256],
+ 9330: [[49, 57], 256],
+ 9331: [[50, 48], 256],
+ 9332: [[40, 49, 41], 256],
+ 9333: [[40, 50, 41], 256],
+ 9334: [[40, 51, 41], 256],
+ 9335: [[40, 52, 41], 256],
+ 9336: [[40, 53, 41], 256],
+ 9337: [[40, 54, 41], 256],
+ 9338: [[40, 55, 41], 256],
+ 9339: [[40, 56, 41], 256],
+ 9340: [[40, 57, 41], 256],
+ 9341: [[40, 49, 48, 41], 256],
+ 9342: [[40, 49, 49, 41], 256],
+ 9343: [[40, 49, 50, 41], 256],
+ 9344: [[40, 49, 51, 41], 256],
+ 9345: [[40, 49, 52, 41], 256],
+ 9346: [[40, 49, 53, 41], 256],
+ 9347: [[40, 49, 54, 41], 256],
+ 9348: [[40, 49, 55, 41], 256],
+ 9349: [[40, 49, 56, 41], 256],
+ 9350: [[40, 49, 57, 41], 256],
+ 9351: [[40, 50, 48, 41], 256],
+ 9352: [[49, 46], 256],
+ 9353: [[50, 46], 256],
+ 9354: [[51, 46], 256],
+ 9355: [[52, 46], 256],
+ 9356: [[53, 46], 256],
+ 9357: [[54, 46], 256],
+ 9358: [[55, 46], 256],
+ 9359: [[56, 46], 256],
+ 9360: [[57, 46], 256],
+ 9361: [[49, 48, 46], 256],
+ 9362: [[49, 49, 46], 256],
+ 9363: [[49, 50, 46], 256],
+ 9364: [[49, 51, 46], 256],
+ 9365: [[49, 52, 46], 256],
+ 9366: [[49, 53, 46], 256],
+ 9367: [[49, 54, 46], 256],
+ 9368: [[49, 55, 46], 256],
+ 9369: [[49, 56, 46], 256],
+ 9370: [[49, 57, 46], 256],
+ 9371: [[50, 48, 46], 256],
+ 9372: [[40, 97, 41], 256],
+ 9373: [[40, 98, 41], 256],
+ 9374: [[40, 99, 41], 256],
+ 9375: [[40, 100, 41], 256],
+ 9376: [[40, 101, 41], 256],
+ 9377: [[40, 102, 41], 256],
+ 9378: [[40, 103, 41], 256],
+ 9379: [[40, 104, 41], 256],
+ 9380: [[40, 105, 41], 256],
+ 9381: [[40, 106, 41], 256],
+ 9382: [[40, 107, 41], 256],
+ 9383: [[40, 108, 41], 256],
+ 9384: [[40, 109, 41], 256],
+ 9385: [[40, 110, 41], 256],
+ 9386: [[40, 111, 41], 256],
+ 9387: [[40, 112, 41], 256],
+ 9388: [[40, 113, 41], 256],
+ 9389: [[40, 114, 41], 256],
+ 9390: [[40, 115, 41], 256],
+ 9391: [[40, 116, 41], 256],
+ 9392: [[40, 117, 41], 256],
+ 9393: [[40, 118, 41], 256],
+ 9394: [[40, 119, 41], 256],
+ 9395: [[40, 120, 41], 256],
+ 9396: [[40, 121, 41], 256],
+ 9397: [[40, 122, 41], 256],
+ 9398: [[65], 256],
+ 9399: [[66], 256],
+ 9400: [[67], 256],
+ 9401: [[68], 256],
+ 9402: [[69], 256],
+ 9403: [[70], 256],
+ 9404: [[71], 256],
+ 9405: [[72], 256],
+ 9406: [[73], 256],
+ 9407: [[74], 256],
+ 9408: [[75], 256],
+ 9409: [[76], 256],
+ 9410: [[77], 256],
+ 9411: [[78], 256],
+ 9412: [[79], 256],
+ 9413: [[80], 256],
+ 9414: [[81], 256],
+ 9415: [[82], 256],
+ 9416: [[83], 256],
+ 9417: [[84], 256],
+ 9418: [[85], 256],
+ 9419: [[86], 256],
+ 9420: [[87], 256],
+ 9421: [[88], 256],
+ 9422: [[89], 256],
+ 9423: [[90], 256],
+ 9424: [[97], 256],
+ 9425: [[98], 256],
+ 9426: [[99], 256],
+ 9427: [[100], 256],
+ 9428: [[101], 256],
+ 9429: [[102], 256],
+ 9430: [[103], 256],
+ 9431: [[104], 256],
+ 9432: [[105], 256],
+ 9433: [[106], 256],
+ 9434: [[107], 256],
+ 9435: [[108], 256],
+ 9436: [[109], 256],
+ 9437: [[110], 256],
+ 9438: [[111], 256],
+ 9439: [[112], 256],
+ 9440: [[113], 256],
+ 9441: [[114], 256],
+ 9442: [[115], 256],
+ 9443: [[116], 256],
+ 9444: [[117], 256],
+ 9445: [[118], 256],
+ 9446: [[119], 256],
+ 9447: [[120], 256],
+ 9448: [[121], 256],
+ 9449: [[122], 256],
+ 9450: [[48], 256]
+ },
+ 10752: {
+ 10764: [[8747, 8747, 8747, 8747], 256],
+ 10868: [[58, 58, 61], 256],
+ 10869: [[61, 61], 256],
+ 10870: [[61, 61, 61], 256],
+ 10972: [[10973, 824], 512]
+ },
+ 11264: {
+ 11388: [[106], 256],
+ 11389: [[86], 256],
+ 11503: [, 230],
+ 11504: [, 230],
+ 11505: [, 230]
+ },
+ 11520: {
+ 11631: [[11617], 256],
+ 11647: [, 9],
+ 11744: [, 230],
+ 11745: [, 230],
+ 11746: [, 230],
+ 11747: [, 230],
+ 11748: [, 230],
+ 11749: [, 230],
+ 11750: [, 230],
+ 11751: [, 230],
+ 11752: [, 230],
+ 11753: [, 230],
+ 11754: [, 230],
+ 11755: [, 230],
+ 11756: [, 230],
+ 11757: [, 230],
+ 11758: [, 230],
+ 11759: [, 230],
+ 11760: [, 230],
+ 11761: [, 230],
+ 11762: [, 230],
+ 11763: [, 230],
+ 11764: [, 230],
+ 11765: [, 230],
+ 11766: [, 230],
+ 11767: [, 230],
+ 11768: [, 230],
+ 11769: [, 230],
+ 11770: [, 230],
+ 11771: [, 230],
+ 11772: [, 230],
+ 11773: [, 230],
+ 11774: [, 230],
+ 11775: [, 230]
+ },
+ 11776: { 11935: [[27597], 256], 12019: [[40863], 256] },
+ 12032: {
+ 12032: [[19968], 256],
+ 12033: [[20008], 256],
+ 12034: [[20022], 256],
+ 12035: [[20031], 256],
+ 12036: [[20057], 256],
+ 12037: [[20101], 256],
+ 12038: [[20108], 256],
+ 12039: [[20128], 256],
+ 12040: [[20154], 256],
+ 12041: [[20799], 256],
+ 12042: [[20837], 256],
+ 12043: [[20843], 256],
+ 12044: [[20866], 256],
+ 12045: [[20886], 256],
+ 12046: [[20907], 256],
+ 12047: [[20960], 256],
+ 12048: [[20981], 256],
+ 12049: [[20992], 256],
+ 12050: [[21147], 256],
+ 12051: [[21241], 256],
+ 12052: [[21269], 256],
+ 12053: [[21274], 256],
+ 12054: [[21304], 256],
+ 12055: [[21313], 256],
+ 12056: [[21340], 256],
+ 12057: [[21353], 256],
+ 12058: [[21378], 256],
+ 12059: [[21430], 256],
+ 12060: [[21448], 256],
+ 12061: [[21475], 256],
+ 12062: [[22231], 256],
+ 12063: [[22303], 256],
+ 12064: [[22763], 256],
+ 12065: [[22786], 256],
+ 12066: [[22794], 256],
+ 12067: [[22805], 256],
+ 12068: [[22823], 256],
+ 12069: [[22899], 256],
+ 12070: [[23376], 256],
+ 12071: [[23424], 256],
+ 12072: [[23544], 256],
+ 12073: [[23567], 256],
+ 12074: [[23586], 256],
+ 12075: [[23608], 256],
+ 12076: [[23662], 256],
+ 12077: [[23665], 256],
+ 12078: [[24027], 256],
+ 12079: [[24037], 256],
+ 12080: [[24049], 256],
+ 12081: [[24062], 256],
+ 12082: [[24178], 256],
+ 12083: [[24186], 256],
+ 12084: [[24191], 256],
+ 12085: [[24308], 256],
+ 12086: [[24318], 256],
+ 12087: [[24331], 256],
+ 12088: [[24339], 256],
+ 12089: [[24400], 256],
+ 12090: [[24417], 256],
+ 12091: [[24435], 256],
+ 12092: [[24515], 256],
+ 12093: [[25096], 256],
+ 12094: [[25142], 256],
+ 12095: [[25163], 256],
+ 12096: [[25903], 256],
+ 12097: [[25908], 256],
+ 12098: [[25991], 256],
+ 12099: [[26007], 256],
+ 12100: [[26020], 256],
+ 12101: [[26041], 256],
+ 12102: [[26080], 256],
+ 12103: [[26085], 256],
+ 12104: [[26352], 256],
+ 12105: [[26376], 256],
+ 12106: [[26408], 256],
+ 12107: [[27424], 256],
+ 12108: [[27490], 256],
+ 12109: [[27513], 256],
+ 12110: [[27571], 256],
+ 12111: [[27595], 256],
+ 12112: [[27604], 256],
+ 12113: [[27611], 256],
+ 12114: [[27663], 256],
+ 12115: [[27668], 256],
+ 12116: [[27700], 256],
+ 12117: [[28779], 256],
+ 12118: [[29226], 256],
+ 12119: [[29238], 256],
+ 12120: [[29243], 256],
+ 12121: [[29247], 256],
+ 12122: [[29255], 256],
+ 12123: [[29273], 256],
+ 12124: [[29275], 256],
+ 12125: [[29356], 256],
+ 12126: [[29572], 256],
+ 12127: [[29577], 256],
+ 12128: [[29916], 256],
+ 12129: [[29926], 256],
+ 12130: [[29976], 256],
+ 12131: [[29983], 256],
+ 12132: [[29992], 256],
+ 12133: [[30000], 256],
+ 12134: [[30091], 256],
+ 12135: [[30098], 256],
+ 12136: [[30326], 256],
+ 12137: [[30333], 256],
+ 12138: [[30382], 256],
+ 12139: [[30399], 256],
+ 12140: [[30446], 256],
+ 12141: [[30683], 256],
+ 12142: [[30690], 256],
+ 12143: [[30707], 256],
+ 12144: [[31034], 256],
+ 12145: [[31160], 256],
+ 12146: [[31166], 256],
+ 12147: [[31348], 256],
+ 12148: [[31435], 256],
+ 12149: [[31481], 256],
+ 12150: [[31859], 256],
+ 12151: [[31992], 256],
+ 12152: [[32566], 256],
+ 12153: [[32593], 256],
+ 12154: [[32650], 256],
+ 12155: [[32701], 256],
+ 12156: [[32769], 256],
+ 12157: [[32780], 256],
+ 12158: [[32786], 256],
+ 12159: [[32819], 256],
+ 12160: [[32895], 256],
+ 12161: [[32905], 256],
+ 12162: [[33251], 256],
+ 12163: [[33258], 256],
+ 12164: [[33267], 256],
+ 12165: [[33276], 256],
+ 12166: [[33292], 256],
+ 12167: [[33307], 256],
+ 12168: [[33311], 256],
+ 12169: [[33390], 256],
+ 12170: [[33394], 256],
+ 12171: [[33400], 256],
+ 12172: [[34381], 256],
+ 12173: [[34411], 256],
+ 12174: [[34880], 256],
+ 12175: [[34892], 256],
+ 12176: [[34915], 256],
+ 12177: [[35198], 256],
+ 12178: [[35211], 256],
+ 12179: [[35282], 256],
+ 12180: [[35328], 256],
+ 12181: [[35895], 256],
+ 12182: [[35910], 256],
+ 12183: [[35925], 256],
+ 12184: [[35960], 256],
+ 12185: [[35997], 256],
+ 12186: [[36196], 256],
+ 12187: [[36208], 256],
+ 12188: [[36275], 256],
+ 12189: [[36523], 256],
+ 12190: [[36554], 256],
+ 12191: [[36763], 256],
+ 12192: [[36784], 256],
+ 12193: [[36789], 256],
+ 12194: [[37009], 256],
+ 12195: [[37193], 256],
+ 12196: [[37318], 256],
+ 12197: [[37324], 256],
+ 12198: [[37329], 256],
+ 12199: [[38263], 256],
+ 12200: [[38272], 256],
+ 12201: [[38428], 256],
+ 12202: [[38582], 256],
+ 12203: [[38585], 256],
+ 12204: [[38632], 256],
+ 12205: [[38737], 256],
+ 12206: [[38750], 256],
+ 12207: [[38754], 256],
+ 12208: [[38761], 256],
+ 12209: [[38859], 256],
+ 12210: [[38893], 256],
+ 12211: [[38899], 256],
+ 12212: [[38913], 256],
+ 12213: [[39080], 256],
+ 12214: [[39131], 256],
+ 12215: [[39135], 256],
+ 12216: [[39318], 256],
+ 12217: [[39321], 256],
+ 12218: [[39340], 256],
+ 12219: [[39592], 256],
+ 12220: [[39640], 256],
+ 12221: [[39647], 256],
+ 12222: [[39717], 256],
+ 12223: [[39727], 256],
+ 12224: [[39730], 256],
+ 12225: [[39740], 256],
+ 12226: [[39770], 256],
+ 12227: [[40165], 256],
+ 12228: [[40565], 256],
+ 12229: [[40575], 256],
+ 12230: [[40613], 256],
+ 12231: [[40635], 256],
+ 12232: [[40643], 256],
+ 12233: [[40653], 256],
+ 12234: [[40657], 256],
+ 12235: [[40697], 256],
+ 12236: [[40701], 256],
+ 12237: [[40718], 256],
+ 12238: [[40723], 256],
+ 12239: [[40736], 256],
+ 12240: [[40763], 256],
+ 12241: [[40778], 256],
+ 12242: [[40786], 256],
+ 12243: [[40845], 256],
+ 12244: [[40860], 256],
+ 12245: [[40864], 256]
+ },
+ 12288: {
+ 12288: [[32], 256],
+ 12330: [, 218],
+ 12331: [, 228],
+ 12332: [, 232],
+ 12333: [, 222],
+ 12334: [, 224],
+ 12335: [, 224],
+ 12342: [[12306], 256],
+ 12344: [[21313], 256],
+ 12345: [[21316], 256],
+ 12346: [[21317], 256],
+ 12358: [, , { 12441: 12436 }],
+ 12363: [, , { 12441: 12364 }],
+ 12364: [[12363, 12441]],
+ 12365: [, , { 12441: 12366 }],
+ 12366: [[12365, 12441]],
+ 12367: [, , { 12441: 12368 }],
+ 12368: [[12367, 12441]],
+ 12369: [, , { 12441: 12370 }],
+ 12370: [[12369, 12441]],
+ 12371: [, , { 12441: 12372 }],
+ 12372: [[12371, 12441]],
+ 12373: [, , { 12441: 12374 }],
+ 12374: [[12373, 12441]],
+ 12375: [, , { 12441: 12376 }],
+ 12376: [[12375, 12441]],
+ 12377: [, , { 12441: 12378 }],
+ 12378: [[12377, 12441]],
+ 12379: [, , { 12441: 12380 }],
+ 12380: [[12379, 12441]],
+ 12381: [, , { 12441: 12382 }],
+ 12382: [[12381, 12441]],
+ 12383: [, , { 12441: 12384 }],
+ 12384: [[12383, 12441]],
+ 12385: [, , { 12441: 12386 }],
+ 12386: [[12385, 12441]],
+ 12388: [, , { 12441: 12389 }],
+ 12389: [[12388, 12441]],
+ 12390: [, , { 12441: 12391 }],
+ 12391: [[12390, 12441]],
+ 12392: [, , { 12441: 12393 }],
+ 12393: [[12392, 12441]],
+ 12399: [, , { 12441: 12400, 12442: 12401 }],
+ 12400: [[12399, 12441]],
+ 12401: [[12399, 12442]],
+ 12402: [, , { 12441: 12403, 12442: 12404 }],
+ 12403: [[12402, 12441]],
+ 12404: [[12402, 12442]],
+ 12405: [, , { 12441: 12406, 12442: 12407 }],
+ 12406: [[12405, 12441]],
+ 12407: [[12405, 12442]],
+ 12408: [, , { 12441: 12409, 12442: 12410 }],
+ 12409: [[12408, 12441]],
+ 12410: [[12408, 12442]],
+ 12411: [, , { 12441: 12412, 12442: 12413 }],
+ 12412: [[12411, 12441]],
+ 12413: [[12411, 12442]],
+ 12436: [[12358, 12441]],
+ 12441: [, 8],
+ 12442: [, 8],
+ 12443: [[32, 12441], 256],
+ 12444: [[32, 12442], 256],
+ 12445: [, , { 12441: 12446 }],
+ 12446: [[12445, 12441]],
+ 12447: [[12424, 12426], 256],
+ 12454: [, , { 12441: 12532 }],
+ 12459: [, , { 12441: 12460 }],
+ 12460: [[12459, 12441]],
+ 12461: [, , { 12441: 12462 }],
+ 12462: [[12461, 12441]],
+ 12463: [, , { 12441: 12464 }],
+ 12464: [[12463, 12441]],
+ 12465: [, , { 12441: 12466 }],
+ 12466: [[12465, 12441]],
+ 12467: [, , { 12441: 12468 }],
+ 12468: [[12467, 12441]],
+ 12469: [, , { 12441: 12470 }],
+ 12470: [[12469, 12441]],
+ 12471: [, , { 12441: 12472 }],
+ 12472: [[12471, 12441]],
+ 12473: [, , { 12441: 12474 }],
+ 12474: [[12473, 12441]],
+ 12475: [, , { 12441: 12476 }],
+ 12476: [[12475, 12441]],
+ 12477: [, , { 12441: 12478 }],
+ 12478: [[12477, 12441]],
+ 12479: [, , { 12441: 12480 }],
+ 12480: [[12479, 12441]],
+ 12481: [, , { 12441: 12482 }],
+ 12482: [[12481, 12441]],
+ 12484: [, , { 12441: 12485 }],
+ 12485: [[12484, 12441]],
+ 12486: [, , { 12441: 12487 }],
+ 12487: [[12486, 12441]],
+ 12488: [, , { 12441: 12489 }],
+ 12489: [[12488, 12441]],
+ 12495: [, , { 12441: 12496, 12442: 12497 }],
+ 12496: [[12495, 12441]],
+ 12497: [[12495, 12442]],
+ 12498: [, , { 12441: 12499, 12442: 12500 }],
+ 12499: [[12498, 12441]],
+ 12500: [[12498, 12442]],
+ 12501: [, , { 12441: 12502, 12442: 12503 }],
+ 12502: [[12501, 12441]],
+ 12503: [[12501, 12442]],
+ 12504: [, , { 12441: 12505, 12442: 12506 }],
+ 12505: [[12504, 12441]],
+ 12506: [[12504, 12442]],
+ 12507: [, , { 12441: 12508, 12442: 12509 }],
+ 12508: [[12507, 12441]],
+ 12509: [[12507, 12442]],
+ 12527: [, , { 12441: 12535 }],
+ 12528: [, , { 12441: 12536 }],
+ 12529: [, , { 12441: 12537 }],
+ 12530: [, , { 12441: 12538 }],
+ 12532: [[12454, 12441]],
+ 12535: [[12527, 12441]],
+ 12536: [[12528, 12441]],
+ 12537: [[12529, 12441]],
+ 12538: [[12530, 12441]],
+ 12541: [, , { 12441: 12542 }],
+ 12542: [[12541, 12441]],
+ 12543: [[12467, 12488], 256]
+ },
+ 12544: {
+ 12593: [[4352], 256],
+ 12594: [[4353], 256],
+ 12595: [[4522], 256],
+ 12596: [[4354], 256],
+ 12597: [[4524], 256],
+ 12598: [[4525], 256],
+ 12599: [[4355], 256],
+ 12600: [[4356], 256],
+ 12601: [[4357], 256],
+ 12602: [[4528], 256],
+ 12603: [[4529], 256],
+ 12604: [[4530], 256],
+ 12605: [[4531], 256],
+ 12606: [[4532], 256],
+ 12607: [[4533], 256],
+ 12608: [[4378], 256],
+ 12609: [[4358], 256],
+ 12610: [[4359], 256],
+ 12611: [[4360], 256],
+ 12612: [[4385], 256],
+ 12613: [[4361], 256],
+ 12614: [[4362], 256],
+ 12615: [[4363], 256],
+ 12616: [[4364], 256],
+ 12617: [[4365], 256],
+ 12618: [[4366], 256],
+ 12619: [[4367], 256],
+ 12620: [[4368], 256],
+ 12621: [[4369], 256],
+ 12622: [[4370], 256],
+ 12623: [[4449], 256],
+ 12624: [[4450], 256],
+ 12625: [[4451], 256],
+ 12626: [[4452], 256],
+ 12627: [[4453], 256],
+ 12628: [[4454], 256],
+ 12629: [[4455], 256],
+ 12630: [[4456], 256],
+ 12631: [[4457], 256],
+ 12632: [[4458], 256],
+ 12633: [[4459], 256],
+ 12634: [[4460], 256],
+ 12635: [[4461], 256],
+ 12636: [[4462], 256],
+ 12637: [[4463], 256],
+ 12638: [[4464], 256],
+ 12639: [[4465], 256],
+ 12640: [[4466], 256],
+ 12641: [[4467], 256],
+ 12642: [[4468], 256],
+ 12643: [[4469], 256],
+ 12644: [[4448], 256],
+ 12645: [[4372], 256],
+ 12646: [[4373], 256],
+ 12647: [[4551], 256],
+ 12648: [[4552], 256],
+ 12649: [[4556], 256],
+ 12650: [[4558], 256],
+ 12651: [[4563], 256],
+ 12652: [[4567], 256],
+ 12653: [[4569], 256],
+ 12654: [[4380], 256],
+ 12655: [[4573], 256],
+ 12656: [[4575], 256],
+ 12657: [[4381], 256],
+ 12658: [[4382], 256],
+ 12659: [[4384], 256],
+ 12660: [[4386], 256],
+ 12661: [[4387], 256],
+ 12662: [[4391], 256],
+ 12663: [[4393], 256],
+ 12664: [[4395], 256],
+ 12665: [[4396], 256],
+ 12666: [[4397], 256],
+ 12667: [[4398], 256],
+ 12668: [[4399], 256],
+ 12669: [[4402], 256],
+ 12670: [[4406], 256],
+ 12671: [[4416], 256],
+ 12672: [[4423], 256],
+ 12673: [[4428], 256],
+ 12674: [[4593], 256],
+ 12675: [[4594], 256],
+ 12676: [[4439], 256],
+ 12677: [[4440], 256],
+ 12678: [[4441], 256],
+ 12679: [[4484], 256],
+ 12680: [[4485], 256],
+ 12681: [[4488], 256],
+ 12682: [[4497], 256],
+ 12683: [[4498], 256],
+ 12684: [[4500], 256],
+ 12685: [[4510], 256],
+ 12686: [[4513], 256],
+ 12690: [[19968], 256],
+ 12691: [[20108], 256],
+ 12692: [[19977], 256],
+ 12693: [[22235], 256],
+ 12694: [[19978], 256],
+ 12695: [[20013], 256],
+ 12696: [[19979], 256],
+ 12697: [[30002], 256],
+ 12698: [[20057], 256],
+ 12699: [[19993], 256],
+ 12700: [[19969], 256],
+ 12701: [[22825], 256],
+ 12702: [[22320], 256],
+ 12703: [[20154], 256]
+ },
+ 12800: {
+ 12800: [[40, 4352, 41], 256],
+ 12801: [[40, 4354, 41], 256],
+ 12802: [[40, 4355, 41], 256],
+ 12803: [[40, 4357, 41], 256],
+ 12804: [[40, 4358, 41], 256],
+ 12805: [[40, 4359, 41], 256],
+ 12806: [[40, 4361, 41], 256],
+ 12807: [[40, 4363, 41], 256],
+ 12808: [[40, 4364, 41], 256],
+ 12809: [[40, 4366, 41], 256],
+ 12810: [[40, 4367, 41], 256],
+ 12811: [[40, 4368, 41], 256],
+ 12812: [[40, 4369, 41], 256],
+ 12813: [[40, 4370, 41], 256],
+ 12814: [[40, 4352, 4449, 41], 256],
+ 12815: [[40, 4354, 4449, 41], 256],
+ 12816: [[40, 4355, 4449, 41], 256],
+ 12817: [[40, 4357, 4449, 41], 256],
+ 12818: [[40, 4358, 4449, 41], 256],
+ 12819: [[40, 4359, 4449, 41], 256],
+ 12820: [[40, 4361, 4449, 41], 256],
+ 12821: [[40, 4363, 4449, 41], 256],
+ 12822: [[40, 4364, 4449, 41], 256],
+ 12823: [[40, 4366, 4449, 41], 256],
+ 12824: [[40, 4367, 4449, 41], 256],
+ 12825: [[40, 4368, 4449, 41], 256],
+ 12826: [[40, 4369, 4449, 41], 256],
+ 12827: [[40, 4370, 4449, 41], 256],
+ 12828: [[40, 4364, 4462, 41], 256],
+ 12829: [[40, 4363, 4457, 4364, 4453, 4523, 41], 256],
+ 12830: [[40, 4363, 4457, 4370, 4462, 41], 256],
+ 12832: [[40, 19968, 41], 256],
+ 12833: [[40, 20108, 41], 256],
+ 12834: [[40, 19977, 41], 256],
+ 12835: [[40, 22235, 41], 256],
+ 12836: [[40, 20116, 41], 256],
+ 12837: [[40, 20845, 41], 256],
+ 12838: [[40, 19971, 41], 256],
+ 12839: [[40, 20843, 41], 256],
+ 12840: [[40, 20061, 41], 256],
+ 12841: [[40, 21313, 41], 256],
+ 12842: [[40, 26376, 41], 256],
+ 12843: [[40, 28779, 41], 256],
+ 12844: [[40, 27700, 41], 256],
+ 12845: [[40, 26408, 41], 256],
+ 12846: [[40, 37329, 41], 256],
+ 12847: [[40, 22303, 41], 256],
+ 12848: [[40, 26085, 41], 256],
+ 12849: [[40, 26666, 41], 256],
+ 12850: [[40, 26377, 41], 256],
+ 12851: [[40, 31038, 41], 256],
+ 12852: [[40, 21517, 41], 256],
+ 12853: [[40, 29305, 41], 256],
+ 12854: [[40, 36001, 41], 256],
+ 12855: [[40, 31069, 41], 256],
+ 12856: [[40, 21172, 41], 256],
+ 12857: [[40, 20195, 41], 256],
+ 12858: [[40, 21628, 41], 256],
+ 12859: [[40, 23398, 41], 256],
+ 12860: [[40, 30435, 41], 256],
+ 12861: [[40, 20225, 41], 256],
+ 12862: [[40, 36039, 41], 256],
+ 12863: [[40, 21332, 41], 256],
+ 12864: [[40, 31085, 41], 256],
+ 12865: [[40, 20241, 41], 256],
+ 12866: [[40, 33258, 41], 256],
+ 12867: [[40, 33267, 41], 256],
+ 12868: [[21839], 256],
+ 12869: [[24188], 256],
+ 12870: [[25991], 256],
+ 12871: [[31631], 256],
+ 12880: [[80, 84, 69], 256],
+ 12881: [[50, 49], 256],
+ 12882: [[50, 50], 256],
+ 12883: [[50, 51], 256],
+ 12884: [[50, 52], 256],
+ 12885: [[50, 53], 256],
+ 12886: [[50, 54], 256],
+ 12887: [[50, 55], 256],
+ 12888: [[50, 56], 256],
+ 12889: [[50, 57], 256],
+ 12890: [[51, 48], 256],
+ 12891: [[51, 49], 256],
+ 12892: [[51, 50], 256],
+ 12893: [[51, 51], 256],
+ 12894: [[51, 52], 256],
+ 12895: [[51, 53], 256],
+ 12896: [[4352], 256],
+ 12897: [[4354], 256],
+ 12898: [[4355], 256],
+ 12899: [[4357], 256],
+ 12900: [[4358], 256],
+ 12901: [[4359], 256],
+ 12902: [[4361], 256],
+ 12903: [[4363], 256],
+ 12904: [[4364], 256],
+ 12905: [[4366], 256],
+ 12906: [[4367], 256],
+ 12907: [[4368], 256],
+ 12908: [[4369], 256],
+ 12909: [[4370], 256],
+ 12910: [[4352, 4449], 256],
+ 12911: [[4354, 4449], 256],
+ 12912: [[4355, 4449], 256],
+ 12913: [[4357, 4449], 256],
+ 12914: [[4358, 4449], 256],
+ 12915: [[4359, 4449], 256],
+ 12916: [[4361, 4449], 256],
+ 12917: [[4363, 4449], 256],
+ 12918: [[4364, 4449], 256],
+ 12919: [[4366, 4449], 256],
+ 12920: [[4367, 4449], 256],
+ 12921: [[4368, 4449], 256],
+ 12922: [[4369, 4449], 256],
+ 12923: [[4370, 4449], 256],
+ 12924: [[4366, 4449, 4535, 4352, 4457], 256],
+ 12925: [[4364, 4462, 4363, 4468], 256],
+ 12926: [[4363, 4462], 256],
+ 12928: [[19968], 256],
+ 12929: [[20108], 256],
+ 12930: [[19977], 256],
+ 12931: [[22235], 256],
+ 12932: [[20116], 256],
+ 12933: [[20845], 256],
+ 12934: [[19971], 256],
+ 12935: [[20843], 256],
+ 12936: [[20061], 256],
+ 12937: [[21313], 256],
+ 12938: [[26376], 256],
+ 12939: [[28779], 256],
+ 12940: [[27700], 256],
+ 12941: [[26408], 256],
+ 12942: [[37329], 256],
+ 12943: [[22303], 256],
+ 12944: [[26085], 256],
+ 12945: [[26666], 256],
+ 12946: [[26377], 256],
+ 12947: [[31038], 256],
+ 12948: [[21517], 256],
+ 12949: [[29305], 256],
+ 12950: [[36001], 256],
+ 12951: [[31069], 256],
+ 12952: [[21172], 256],
+ 12953: [[31192], 256],
+ 12954: [[30007], 256],
+ 12955: [[22899], 256],
+ 12956: [[36969], 256],
+ 12957: [[20778], 256],
+ 12958: [[21360], 256],
+ 12959: [[27880], 256],
+ 12960: [[38917], 256],
+ 12961: [[20241], 256],
+ 12962: [[20889], 256],
+ 12963: [[27491], 256],
+ 12964: [[19978], 256],
+ 12965: [[20013], 256],
+ 12966: [[19979], 256],
+ 12967: [[24038], 256],
+ 12968: [[21491], 256],
+ 12969: [[21307], 256],
+ 12970: [[23447], 256],
+ 12971: [[23398], 256],
+ 12972: [[30435], 256],
+ 12973: [[20225], 256],
+ 12974: [[36039], 256],
+ 12975: [[21332], 256],
+ 12976: [[22812], 256],
+ 12977: [[51, 54], 256],
+ 12978: [[51, 55], 256],
+ 12979: [[51, 56], 256],
+ 12980: [[51, 57], 256],
+ 12981: [[52, 48], 256],
+ 12982: [[52, 49], 256],
+ 12983: [[52, 50], 256],
+ 12984: [[52, 51], 256],
+ 12985: [[52, 52], 256],
+ 12986: [[52, 53], 256],
+ 12987: [[52, 54], 256],
+ 12988: [[52, 55], 256],
+ 12989: [[52, 56], 256],
+ 12990: [[52, 57], 256],
+ 12991: [[53, 48], 256],
+ 12992: [[49, 26376], 256],
+ 12993: [[50, 26376], 256],
+ 12994: [[51, 26376], 256],
+ 12995: [[52, 26376], 256],
+ 12996: [[53, 26376], 256],
+ 12997: [[54, 26376], 256],
+ 12998: [[55, 26376], 256],
+ 12999: [[56, 26376], 256],
+ 13000: [[57, 26376], 256],
+ 13001: [[49, 48, 26376], 256],
+ 13002: [[49, 49, 26376], 256],
+ 13003: [[49, 50, 26376], 256],
+ 13004: [[72, 103], 256],
+ 13005: [[101, 114, 103], 256],
+ 13006: [[101, 86], 256],
+ 13007: [[76, 84, 68], 256],
+ 13008: [[12450], 256],
+ 13009: [[12452], 256],
+ 13010: [[12454], 256],
+ 13011: [[12456], 256],
+ 13012: [[12458], 256],
+ 13013: [[12459], 256],
+ 13014: [[12461], 256],
+ 13015: [[12463], 256],
+ 13016: [[12465], 256],
+ 13017: [[12467], 256],
+ 13018: [[12469], 256],
+ 13019: [[12471], 256],
+ 13020: [[12473], 256],
+ 13021: [[12475], 256],
+ 13022: [[12477], 256],
+ 13023: [[12479], 256],
+ 13024: [[12481], 256],
+ 13025: [[12484], 256],
+ 13026: [[12486], 256],
+ 13027: [[12488], 256],
+ 13028: [[12490], 256],
+ 13029: [[12491], 256],
+ 13030: [[12492], 256],
+ 13031: [[12493], 256],
+ 13032: [[12494], 256],
+ 13033: [[12495], 256],
+ 13034: [[12498], 256],
+ 13035: [[12501], 256],
+ 13036: [[12504], 256],
+ 13037: [[12507], 256],
+ 13038: [[12510], 256],
+ 13039: [[12511], 256],
+ 13040: [[12512], 256],
+ 13041: [[12513], 256],
+ 13042: [[12514], 256],
+ 13043: [[12516], 256],
+ 13044: [[12518], 256],
+ 13045: [[12520], 256],
+ 13046: [[12521], 256],
+ 13047: [[12522], 256],
+ 13048: [[12523], 256],
+ 13049: [[12524], 256],
+ 13050: [[12525], 256],
+ 13051: [[12527], 256],
+ 13052: [[12528], 256],
+ 13053: [[12529], 256],
+ 13054: [[12530], 256]
+ },
+ 13056: {
+ 13056: [[12450, 12497, 12540, 12488], 256],
+ 13057: [[12450, 12523, 12501, 12449], 256],
+ 13058: [[12450, 12531, 12506, 12450], 256],
+ 13059: [[12450, 12540, 12523], 256],
+ 13060: [[12452, 12491, 12531, 12464], 256],
+ 13061: [[12452, 12531, 12481], 256],
+ 13062: [[12454, 12457, 12531], 256],
+ 13063: [[12456, 12473, 12463, 12540, 12489], 256],
+ 13064: [[12456, 12540, 12459, 12540], 256],
+ 13065: [[12458, 12531, 12473], 256],
+ 13066: [[12458, 12540, 12512], 256],
+ 13067: [[12459, 12452, 12522], 256],
+ 13068: [[12459, 12521, 12483, 12488], 256],
+ 13069: [[12459, 12525, 12522, 12540], 256],
+ 13070: [[12460, 12525, 12531], 256],
+ 13071: [[12460, 12531, 12510], 256],
+ 13072: [[12462, 12460], 256],
+ 13073: [[12462, 12491, 12540], 256],
+ 13074: [[12461, 12517, 12522, 12540], 256],
+ 13075: [[12462, 12523, 12480, 12540], 256],
+ 13076: [[12461, 12525], 256],
+ 13077: [[12461, 12525, 12464, 12521, 12512], 256],
+ 13078: [[12461, 12525, 12513, 12540, 12488, 12523], 256],
+ 13079: [[12461, 12525, 12527, 12483, 12488], 256],
+ 13080: [[12464, 12521, 12512], 256],
+ 13081: [[12464, 12521, 12512, 12488, 12531], 256],
+ 13082: [[12463, 12523, 12476, 12452, 12525], 256],
+ 13083: [[12463, 12525, 12540, 12493], 256],
+ 13084: [[12465, 12540, 12473], 256],
+ 13085: [[12467, 12523, 12490], 256],
+ 13086: [[12467, 12540, 12509], 256],
+ 13087: [[12469, 12452, 12463, 12523], 256],
+ 13088: [[12469, 12531, 12481, 12540, 12512], 256],
+ 13089: [[12471, 12522, 12531, 12464], 256],
+ 13090: [[12475, 12531, 12481], 256],
+ 13091: [[12475, 12531, 12488], 256],
+ 13092: [[12480, 12540, 12473], 256],
+ 13093: [[12487, 12471], 256],
+ 13094: [[12489, 12523], 256],
+ 13095: [[12488, 12531], 256],
+ 13096: [[12490, 12494], 256],
+ 13097: [[12494, 12483, 12488], 256],
+ 13098: [[12495, 12452, 12484], 256],
+ 13099: [[12497, 12540, 12475, 12531, 12488], 256],
+ 13100: [[12497, 12540, 12484], 256],
+ 13101: [[12496, 12540, 12524, 12523], 256],
+ 13102: [[12500, 12450, 12473, 12488, 12523], 256],
+ 13103: [[12500, 12463, 12523], 256],
+ 13104: [[12500, 12467], 256],
+ 13105: [[12499, 12523], 256],
+ 13106: [[12501, 12449, 12521, 12483, 12489], 256],
+ 13107: [[12501, 12451, 12540, 12488], 256],
+ 13108: [[12502, 12483, 12471, 12455, 12523], 256],
+ 13109: [[12501, 12521, 12531], 256],
+ 13110: [[12504, 12463, 12479, 12540, 12523], 256],
+ 13111: [[12506, 12477], 256],
+ 13112: [[12506, 12491, 12498], 256],
+ 13113: [[12504, 12523, 12484], 256],
+ 13114: [[12506, 12531, 12473], 256],
+ 13115: [[12506, 12540, 12472], 256],
+ 13116: [[12505, 12540, 12479], 256],
+ 13117: [[12509, 12452, 12531, 12488], 256],
+ 13118: [[12508, 12523, 12488], 256],
+ 13119: [[12507, 12531], 256],
+ 13120: [[12509, 12531, 12489], 256],
+ 13121: [[12507, 12540, 12523], 256],
+ 13122: [[12507, 12540, 12531], 256],
+ 13123: [[12510, 12452, 12463, 12525], 256],
+ 13124: [[12510, 12452, 12523], 256],
+ 13125: [[12510, 12483, 12495], 256],
+ 13126: [[12510, 12523, 12463], 256],
+ 13127: [[12510, 12531, 12471, 12519, 12531], 256],
+ 13128: [[12511, 12463, 12525, 12531], 256],
+ 13129: [[12511, 12522], 256],
+ 13130: [[12511, 12522, 12496, 12540, 12523], 256],
+ 13131: [[12513, 12460], 256],
+ 13132: [[12513, 12460, 12488, 12531], 256],
+ 13133: [[12513, 12540, 12488, 12523], 256],
+ 13134: [[12516, 12540, 12489], 256],
+ 13135: [[12516, 12540, 12523], 256],
+ 13136: [[12518, 12450, 12531], 256],
+ 13137: [[12522, 12483, 12488, 12523], 256],
+ 13138: [[12522, 12521], 256],
+ 13139: [[12523, 12500, 12540], 256],
+ 13140: [[12523, 12540, 12502, 12523], 256],
+ 13141: [[12524, 12512], 256],
+ 13142: [[12524, 12531, 12488, 12466, 12531], 256],
+ 13143: [[12527, 12483, 12488], 256],
+ 13144: [[48, 28857], 256],
+ 13145: [[49, 28857], 256],
+ 13146: [[50, 28857], 256],
+ 13147: [[51, 28857], 256],
+ 13148: [[52, 28857], 256],
+ 13149: [[53, 28857], 256],
+ 13150: [[54, 28857], 256],
+ 13151: [[55, 28857], 256],
+ 13152: [[56, 28857], 256],
+ 13153: [[57, 28857], 256],
+ 13154: [[49, 48, 28857], 256],
+ 13155: [[49, 49, 28857], 256],
+ 13156: [[49, 50, 28857], 256],
+ 13157: [[49, 51, 28857], 256],
+ 13158: [[49, 52, 28857], 256],
+ 13159: [[49, 53, 28857], 256],
+ 13160: [[49, 54, 28857], 256],
+ 13161: [[49, 55, 28857], 256],
+ 13162: [[49, 56, 28857], 256],
+ 13163: [[49, 57, 28857], 256],
+ 13164: [[50, 48, 28857], 256],
+ 13165: [[50, 49, 28857], 256],
+ 13166: [[50, 50, 28857], 256],
+ 13167: [[50, 51, 28857], 256],
+ 13168: [[50, 52, 28857], 256],
+ 13169: [[104, 80, 97], 256],
+ 13170: [[100, 97], 256],
+ 13171: [[65, 85], 256],
+ 13172: [[98, 97, 114], 256],
+ 13173: [[111, 86], 256],
+ 13174: [[112, 99], 256],
+ 13175: [[100, 109], 256],
+ 13176: [[100, 109, 178], 256],
+ 13177: [[100, 109, 179], 256],
+ 13178: [[73, 85], 256],
+ 13179: [[24179, 25104], 256],
+ 13180: [[26157, 21644], 256],
+ 13181: [[22823, 27491], 256],
+ 13182: [[26126, 27835], 256],
+ 13183: [[26666, 24335, 20250, 31038], 256],
+ 13184: [[112, 65], 256],
+ 13185: [[110, 65], 256],
+ 13186: [[956, 65], 256],
+ 13187: [[109, 65], 256],
+ 13188: [[107, 65], 256],
+ 13189: [[75, 66], 256],
+ 13190: [[77, 66], 256],
+ 13191: [[71, 66], 256],
+ 13192: [[99, 97, 108], 256],
+ 13193: [[107, 99, 97, 108], 256],
+ 13194: [[112, 70], 256],
+ 13195: [[110, 70], 256],
+ 13196: [[956, 70], 256],
+ 13197: [[956, 103], 256],
+ 13198: [[109, 103], 256],
+ 13199: [[107, 103], 256],
+ 13200: [[72, 122], 256],
+ 13201: [[107, 72, 122], 256],
+ 13202: [[77, 72, 122], 256],
+ 13203: [[71, 72, 122], 256],
+ 13204: [[84, 72, 122], 256],
+ 13205: [[956, 8467], 256],
+ 13206: [[109, 8467], 256],
+ 13207: [[100, 8467], 256],
+ 13208: [[107, 8467], 256],
+ 13209: [[102, 109], 256],
+ 13210: [[110, 109], 256],
+ 13211: [[956, 109], 256],
+ 13212: [[109, 109], 256],
+ 13213: [[99, 109], 256],
+ 13214: [[107, 109], 256],
+ 13215: [[109, 109, 178], 256],
+ 13216: [[99, 109, 178], 256],
+ 13217: [[109, 178], 256],
+ 13218: [[107, 109, 178], 256],
+ 13219: [[109, 109, 179], 256],
+ 13220: [[99, 109, 179], 256],
+ 13221: [[109, 179], 256],
+ 13222: [[107, 109, 179], 256],
+ 13223: [[109, 8725, 115], 256],
+ 13224: [[109, 8725, 115, 178], 256],
+ 13225: [[80, 97], 256],
+ 13226: [[107, 80, 97], 256],
+ 13227: [[77, 80, 97], 256],
+ 13228: [[71, 80, 97], 256],
+ 13229: [[114, 97, 100], 256],
+ 13230: [[114, 97, 100, 8725, 115], 256],
+ 13231: [[114, 97, 100, 8725, 115, 178], 256],
+ 13232: [[112, 115], 256],
+ 13233: [[110, 115], 256],
+ 13234: [[956, 115], 256],
+ 13235: [[109, 115], 256],
+ 13236: [[112, 86], 256],
+ 13237: [[110, 86], 256],
+ 13238: [[956, 86], 256],
+ 13239: [[109, 86], 256],
+ 13240: [[107, 86], 256],
+ 13241: [[77, 86], 256],
+ 13242: [[112, 87], 256],
+ 13243: [[110, 87], 256],
+ 13244: [[956, 87], 256],
+ 13245: [[109, 87], 256],
+ 13246: [[107, 87], 256],
+ 13247: [[77, 87], 256],
+ 13248: [[107, 937], 256],
+ 13249: [[77, 937], 256],
+ 13250: [[97, 46, 109, 46], 256],
+ 13251: [[66, 113], 256],
+ 13252: [[99, 99], 256],
+ 13253: [[99, 100], 256],
+ 13254: [[67, 8725, 107, 103], 256],
+ 13255: [[67, 111, 46], 256],
+ 13256: [[100, 66], 256],
+ 13257: [[71, 121], 256],
+ 13258: [[104, 97], 256],
+ 13259: [[72, 80], 256],
+ 13260: [[105, 110], 256],
+ 13261: [[75, 75], 256],
+ 13262: [[75, 77], 256],
+ 13263: [[107, 116], 256],
+ 13264: [[108, 109], 256],
+ 13265: [[108, 110], 256],
+ 13266: [[108, 111, 103], 256],
+ 13267: [[108, 120], 256],
+ 13268: [[109, 98], 256],
+ 13269: [[109, 105, 108], 256],
+ 13270: [[109, 111, 108], 256],
+ 13271: [[80, 72], 256],
+ 13272: [[112, 46, 109, 46], 256],
+ 13273: [[80, 80, 77], 256],
+ 13274: [[80, 82], 256],
+ 13275: [[115, 114], 256],
+ 13276: [[83, 118], 256],
+ 13277: [[87, 98], 256],
+ 13278: [[86, 8725, 109], 256],
+ 13279: [[65, 8725, 109], 256],
+ 13280: [[49, 26085], 256],
+ 13281: [[50, 26085], 256],
+ 13282: [[51, 26085], 256],
+ 13283: [[52, 26085], 256],
+ 13284: [[53, 26085], 256],
+ 13285: [[54, 26085], 256],
+ 13286: [[55, 26085], 256],
+ 13287: [[56, 26085], 256],
+ 13288: [[57, 26085], 256],
+ 13289: [[49, 48, 26085], 256],
+ 13290: [[49, 49, 26085], 256],
+ 13291: [[49, 50, 26085], 256],
+ 13292: [[49, 51, 26085], 256],
+ 13293: [[49, 52, 26085], 256],
+ 13294: [[49, 53, 26085], 256],
+ 13295: [[49, 54, 26085], 256],
+ 13296: [[49, 55, 26085], 256],
+ 13297: [[49, 56, 26085], 256],
+ 13298: [[49, 57, 26085], 256],
+ 13299: [[50, 48, 26085], 256],
+ 13300: [[50, 49, 26085], 256],
+ 13301: [[50, 50, 26085], 256],
+ 13302: [[50, 51, 26085], 256],
+ 13303: [[50, 52, 26085], 256],
+ 13304: [[50, 53, 26085], 256],
+ 13305: [[50, 54, 26085], 256],
+ 13306: [[50, 55, 26085], 256],
+ 13307: [[50, 56, 26085], 256],
+ 13308: [[50, 57, 26085], 256],
+ 13309: [[51, 48, 26085], 256],
+ 13310: [[51, 49, 26085], 256],
+ 13311: [[103, 97, 108], 256]
+ },
+ 42496: {
+ 42607: [, 230],
+ 42612: [, 230],
+ 42613: [, 230],
+ 42614: [, 230],
+ 42615: [, 230],
+ 42616: [, 230],
+ 42617: [, 230],
+ 42618: [, 230],
+ 42619: [, 230],
+ 42620: [, 230],
+ 42621: [, 230],
+ 42655: [, 230],
+ 42736: [, 230],
+ 42737: [, 230]
+ },
+ 42752: { 42864: [[42863], 256], 43000: [[294], 256], 43001: [[339], 256] },
+ 43008: {
+ 43014: [, 9],
+ 43204: [, 9],
+ 43232: [, 230],
+ 43233: [, 230],
+ 43234: [, 230],
+ 43235: [, 230],
+ 43236: [, 230],
+ 43237: [, 230],
+ 43238: [, 230],
+ 43239: [, 230],
+ 43240: [, 230],
+ 43241: [, 230],
+ 43242: [, 230],
+ 43243: [, 230],
+ 43244: [, 230],
+ 43245: [, 230],
+ 43246: [, 230],
+ 43247: [, 230],
+ 43248: [, 230],
+ 43249: [, 230]
+ },
+ 43264: {
+ 43307: [, 220],
+ 43308: [, 220],
+ 43309: [, 220],
+ 43347: [, 9],
+ 43443: [, 7],
+ 43456: [, 9]
+ },
+ 43520: {
+ 43696: [, 230],
+ 43698: [, 230],
+ 43699: [, 230],
+ 43700: [, 220],
+ 43703: [, 230],
+ 43704: [, 230],
+ 43710: [, 230],
+ 43711: [, 230],
+ 43713: [, 230],
+ 43766: [, 9]
+ },
+ 43776: { 44013: [, 9] },
+ 53504: {
+ 119134: [[119127, 119141], 512],
+ 119135: [[119128, 119141], 512],
+ 119136: [[119135, 119150], 512],
+ 119137: [[119135, 119151], 512],
+ 119138: [[119135, 119152], 512],
+ 119139: [[119135, 119153], 512],
+ 119140: [[119135, 119154], 512],
+ 119141: [, 216],
+ 119142: [, 216],
+ 119143: [, 1],
+ 119144: [, 1],
+ 119145: [, 1],
+ 119149: [, 226],
+ 119150: [, 216],
+ 119151: [, 216],
+ 119152: [, 216],
+ 119153: [, 216],
+ 119154: [, 216],
+ 119163: [, 220],
+ 119164: [, 220],
+ 119165: [, 220],
+ 119166: [, 220],
+ 119167: [, 220],
+ 119168: [, 220],
+ 119169: [, 220],
+ 119170: [, 220],
+ 119173: [, 230],
+ 119174: [, 230],
+ 119175: [, 230],
+ 119176: [, 230],
+ 119177: [, 230],
+ 119178: [, 220],
+ 119179: [, 220],
+ 119210: [, 230],
+ 119211: [, 230],
+ 119212: [, 230],
+ 119213: [, 230],
+ 119227: [[119225, 119141], 512],
+ 119228: [[119226, 119141], 512],
+ 119229: [[119227, 119150], 512],
+ 119230: [[119228, 119150], 512],
+ 119231: [[119227, 119151], 512],
+ 119232: [[119228, 119151], 512]
+ },
+ 53760: { 119362: [, 230], 119363: [, 230], 119364: [, 230] },
+ 54272: {
+ 119808: [[65], 256],
+ 119809: [[66], 256],
+ 119810: [[67], 256],
+ 119811: [[68], 256],
+ 119812: [[69], 256],
+ 119813: [[70], 256],
+ 119814: [[71], 256],
+ 119815: [[72], 256],
+ 119816: [[73], 256],
+ 119817: [[74], 256],
+ 119818: [[75], 256],
+ 119819: [[76], 256],
+ 119820: [[77], 256],
+ 119821: [[78], 256],
+ 119822: [[79], 256],
+ 119823: [[80], 256],
+ 119824: [[81], 256],
+ 119825: [[82], 256],
+ 119826: [[83], 256],
+ 119827: [[84], 256],
+ 119828: [[85], 256],
+ 119829: [[86], 256],
+ 119830: [[87], 256],
+ 119831: [[88], 256],
+ 119832: [[89], 256],
+ 119833: [[90], 256],
+ 119834: [[97], 256],
+ 119835: [[98], 256],
+ 119836: [[99], 256],
+ 119837: [[100], 256],
+ 119838: [[101], 256],
+ 119839: [[102], 256],
+ 119840: [[103], 256],
+ 119841: [[104], 256],
+ 119842: [[105], 256],
+ 119843: [[106], 256],
+ 119844: [[107], 256],
+ 119845: [[108], 256],
+ 119846: [[109], 256],
+ 119847: [[110], 256],
+ 119848: [[111], 256],
+ 119849: [[112], 256],
+ 119850: [[113], 256],
+ 119851: [[114], 256],
+ 119852: [[115], 256],
+ 119853: [[116], 256],
+ 119854: [[117], 256],
+ 119855: [[118], 256],
+ 119856: [[119], 256],
+ 119857: [[120], 256],
+ 119858: [[121], 256],
+ 119859: [[122], 256],
+ 119860: [[65], 256],
+ 119861: [[66], 256],
+ 119862: [[67], 256],
+ 119863: [[68], 256],
+ 119864: [[69], 256],
+ 119865: [[70], 256],
+ 119866: [[71], 256],
+ 119867: [[72], 256],
+ 119868: [[73], 256],
+ 119869: [[74], 256],
+ 119870: [[75], 256],
+ 119871: [[76], 256],
+ 119872: [[77], 256],
+ 119873: [[78], 256],
+ 119874: [[79], 256],
+ 119875: [[80], 256],
+ 119876: [[81], 256],
+ 119877: [[82], 256],
+ 119878: [[83], 256],
+ 119879: [[84], 256],
+ 119880: [[85], 256],
+ 119881: [[86], 256],
+ 119882: [[87], 256],
+ 119883: [[88], 256],
+ 119884: [[89], 256],
+ 119885: [[90], 256],
+ 119886: [[97], 256],
+ 119887: [[98], 256],
+ 119888: [[99], 256],
+ 119889: [[100], 256],
+ 119890: [[101], 256],
+ 119891: [[102], 256],
+ 119892: [[103], 256],
+ 119894: [[105], 256],
+ 119895: [[106], 256],
+ 119896: [[107], 256],
+ 119897: [[108], 256],
+ 119898: [[109], 256],
+ 119899: [[110], 256],
+ 119900: [[111], 256],
+ 119901: [[112], 256],
+ 119902: [[113], 256],
+ 119903: [[114], 256],
+ 119904: [[115], 256],
+ 119905: [[116], 256],
+ 119906: [[117], 256],
+ 119907: [[118], 256],
+ 119908: [[119], 256],
+ 119909: [[120], 256],
+ 119910: [[121], 256],
+ 119911: [[122], 256],
+ 119912: [[65], 256],
+ 119913: [[66], 256],
+ 119914: [[67], 256],
+ 119915: [[68], 256],
+ 119916: [[69], 256],
+ 119917: [[70], 256],
+ 119918: [[71], 256],
+ 119919: [[72], 256],
+ 119920: [[73], 256],
+ 119921: [[74], 256],
+ 119922: [[75], 256],
+ 119923: [[76], 256],
+ 119924: [[77], 256],
+ 119925: [[78], 256],
+ 119926: [[79], 256],
+ 119927: [[80], 256],
+ 119928: [[81], 256],
+ 119929: [[82], 256],
+ 119930: [[83], 256],
+ 119931: [[84], 256],
+ 119932: [[85], 256],
+ 119933: [[86], 256],
+ 119934: [[87], 256],
+ 119935: [[88], 256],
+ 119936: [[89], 256],
+ 119937: [[90], 256],
+ 119938: [[97], 256],
+ 119939: [[98], 256],
+ 119940: [[99], 256],
+ 119941: [[100], 256],
+ 119942: [[101], 256],
+ 119943: [[102], 256],
+ 119944: [[103], 256],
+ 119945: [[104], 256],
+ 119946: [[105], 256],
+ 119947: [[106], 256],
+ 119948: [[107], 256],
+ 119949: [[108], 256],
+ 119950: [[109], 256],
+ 119951: [[110], 256],
+ 119952: [[111], 256],
+ 119953: [[112], 256],
+ 119954: [[113], 256],
+ 119955: [[114], 256],
+ 119956: [[115], 256],
+ 119957: [[116], 256],
+ 119958: [[117], 256],
+ 119959: [[118], 256],
+ 119960: [[119], 256],
+ 119961: [[120], 256],
+ 119962: [[121], 256],
+ 119963: [[122], 256],
+ 119964: [[65], 256],
+ 119966: [[67], 256],
+ 119967: [[68], 256],
+ 119970: [[71], 256],
+ 119973: [[74], 256],
+ 119974: [[75], 256],
+ 119977: [[78], 256],
+ 119978: [[79], 256],
+ 119979: [[80], 256],
+ 119980: [[81], 256],
+ 119982: [[83], 256],
+ 119983: [[84], 256],
+ 119984: [[85], 256],
+ 119985: [[86], 256],
+ 119986: [[87], 256],
+ 119987: [[88], 256],
+ 119988: [[89], 256],
+ 119989: [[90], 256],
+ 119990: [[97], 256],
+ 119991: [[98], 256],
+ 119992: [[99], 256],
+ 119993: [[100], 256],
+ 119995: [[102], 256],
+ 119997: [[104], 256],
+ 119998: [[105], 256],
+ 119999: [[106], 256],
+ 120000: [[107], 256],
+ 120001: [[108], 256],
+ 120002: [[109], 256],
+ 120003: [[110], 256],
+ 120005: [[112], 256],
+ 120006: [[113], 256],
+ 120007: [[114], 256],
+ 120008: [[115], 256],
+ 120009: [[116], 256],
+ 120010: [[117], 256],
+ 120011: [[118], 256],
+ 120012: [[119], 256],
+ 120013: [[120], 256],
+ 120014: [[121], 256],
+ 120015: [[122], 256],
+ 120016: [[65], 256],
+ 120017: [[66], 256],
+ 120018: [[67], 256],
+ 120019: [[68], 256],
+ 120020: [[69], 256],
+ 120021: [[70], 256],
+ 120022: [[71], 256],
+ 120023: [[72], 256],
+ 120024: [[73], 256],
+ 120025: [[74], 256],
+ 120026: [[75], 256],
+ 120027: [[76], 256],
+ 120028: [[77], 256],
+ 120029: [[78], 256],
+ 120030: [[79], 256],
+ 120031: [[80], 256],
+ 120032: [[81], 256],
+ 120033: [[82], 256],
+ 120034: [[83], 256],
+ 120035: [[84], 256],
+ 120036: [[85], 256],
+ 120037: [[86], 256],
+ 120038: [[87], 256],
+ 120039: [[88], 256],
+ 120040: [[89], 256],
+ 120041: [[90], 256],
+ 120042: [[97], 256],
+ 120043: [[98], 256],
+ 120044: [[99], 256],
+ 120045: [[100], 256],
+ 120046: [[101], 256],
+ 120047: [[102], 256],
+ 120048: [[103], 256],
+ 120049: [[104], 256],
+ 120050: [[105], 256],
+ 120051: [[106], 256],
+ 120052: [[107], 256],
+ 120053: [[108], 256],
+ 120054: [[109], 256],
+ 120055: [[110], 256],
+ 120056: [[111], 256],
+ 120057: [[112], 256],
+ 120058: [[113], 256],
+ 120059: [[114], 256],
+ 120060: [[115], 256],
+ 120061: [[116], 256],
+ 120062: [[117], 256],
+ 120063: [[118], 256]
+ },
+ 54528: {
+ 120064: [[119], 256],
+ 120065: [[120], 256],
+ 120066: [[121], 256],
+ 120067: [[122], 256],
+ 120068: [[65], 256],
+ 120069: [[66], 256],
+ 120071: [[68], 256],
+ 120072: [[69], 256],
+ 120073: [[70], 256],
+ 120074: [[71], 256],
+ 120077: [[74], 256],
+ 120078: [[75], 256],
+ 120079: [[76], 256],
+ 120080: [[77], 256],
+ 120081: [[78], 256],
+ 120082: [[79], 256],
+ 120083: [[80], 256],
+ 120084: [[81], 256],
+ 120086: [[83], 256],
+ 120087: [[84], 256],
+ 120088: [[85], 256],
+ 120089: [[86], 256],
+ 120090: [[87], 256],
+ 120091: [[88], 256],
+ 120092: [[89], 256],
+ 120094: [[97], 256],
+ 120095: [[98], 256],
+ 120096: [[99], 256],
+ 120097: [[100], 256],
+ 120098: [[101], 256],
+ 120099: [[102], 256],
+ 120100: [[103], 256],
+ 120101: [[104], 256],
+ 120102: [[105], 256],
+ 120103: [[106], 256],
+ 120104: [[107], 256],
+ 120105: [[108], 256],
+ 120106: [[109], 256],
+ 120107: [[110], 256],
+ 120108: [[111], 256],
+ 120109: [[112], 256],
+ 120110: [[113], 256],
+ 120111: [[114], 256],
+ 120112: [[115], 256],
+ 120113: [[116], 256],
+ 120114: [[117], 256],
+ 120115: [[118], 256],
+ 120116: [[119], 256],
+ 120117: [[120], 256],
+ 120118: [[121], 256],
+ 120119: [[122], 256],
+ 120120: [[65], 256],
+ 120121: [[66], 256],
+ 120123: [[68], 256],
+ 120124: [[69], 256],
+ 120125: [[70], 256],
+ 120126: [[71], 256],
+ 120128: [[73], 256],
+ 120129: [[74], 256],
+ 120130: [[75], 256],
+ 120131: [[76], 256],
+ 120132: [[77], 256],
+ 120134: [[79], 256],
+ 120138: [[83], 256],
+ 120139: [[84], 256],
+ 120140: [[85], 256],
+ 120141: [[86], 256],
+ 120142: [[87], 256],
+ 120143: [[88], 256],
+ 120144: [[89], 256],
+ 120146: [[97], 256],
+ 120147: [[98], 256],
+ 120148: [[99], 256],
+ 120149: [[100], 256],
+ 120150: [[101], 256],
+ 120151: [[102], 256],
+ 120152: [[103], 256],
+ 120153: [[104], 256],
+ 120154: [[105], 256],
+ 120155: [[106], 256],
+ 120156: [[107], 256],
+ 120157: [[108], 256],
+ 120158: [[109], 256],
+ 120159: [[110], 256],
+ 120160: [[111], 256],
+ 120161: [[112], 256],
+ 120162: [[113], 256],
+ 120163: [[114], 256],
+ 120164: [[115], 256],
+ 120165: [[116], 256],
+ 120166: [[117], 256],
+ 120167: [[118], 256],
+ 120168: [[119], 256],
+ 120169: [[120], 256],
+ 120170: [[121], 256],
+ 120171: [[122], 256],
+ 120172: [[65], 256],
+ 120173: [[66], 256],
+ 120174: [[67], 256],
+ 120175: [[68], 256],
+ 120176: [[69], 256],
+ 120177: [[70], 256],
+ 120178: [[71], 256],
+ 120179: [[72], 256],
+ 120180: [[73], 256],
+ 120181: [[74], 256],
+ 120182: [[75], 256],
+ 120183: [[76], 256],
+ 120184: [[77], 256],
+ 120185: [[78], 256],
+ 120186: [[79], 256],
+ 120187: [[80], 256],
+ 120188: [[81], 256],
+ 120189: [[82], 256],
+ 120190: [[83], 256],
+ 120191: [[84], 256],
+ 120192: [[85], 256],
+ 120193: [[86], 256],
+ 120194: [[87], 256],
+ 120195: [[88], 256],
+ 120196: [[89], 256],
+ 120197: [[90], 256],
+ 120198: [[97], 256],
+ 120199: [[98], 256],
+ 120200: [[99], 256],
+ 120201: [[100], 256],
+ 120202: [[101], 256],
+ 120203: [[102], 256],
+ 120204: [[103], 256],
+ 120205: [[104], 256],
+ 120206: [[105], 256],
+ 120207: [[106], 256],
+ 120208: [[107], 256],
+ 120209: [[108], 256],
+ 120210: [[109], 256],
+ 120211: [[110], 256],
+ 120212: [[111], 256],
+ 120213: [[112], 256],
+ 120214: [[113], 256],
+ 120215: [[114], 256],
+ 120216: [[115], 256],
+ 120217: [[116], 256],
+ 120218: [[117], 256],
+ 120219: [[118], 256],
+ 120220: [[119], 256],
+ 120221: [[120], 256],
+ 120222: [[121], 256],
+ 120223: [[122], 256],
+ 120224: [[65], 256],
+ 120225: [[66], 256],
+ 120226: [[67], 256],
+ 120227: [[68], 256],
+ 120228: [[69], 256],
+ 120229: [[70], 256],
+ 120230: [[71], 256],
+ 120231: [[72], 256],
+ 120232: [[73], 256],
+ 120233: [[74], 256],
+ 120234: [[75], 256],
+ 120235: [[76], 256],
+ 120236: [[77], 256],
+ 120237: [[78], 256],
+ 120238: [[79], 256],
+ 120239: [[80], 256],
+ 120240: [[81], 256],
+ 120241: [[82], 256],
+ 120242: [[83], 256],
+ 120243: [[84], 256],
+ 120244: [[85], 256],
+ 120245: [[86], 256],
+ 120246: [[87], 256],
+ 120247: [[88], 256],
+ 120248: [[89], 256],
+ 120249: [[90], 256],
+ 120250: [[97], 256],
+ 120251: [[98], 256],
+ 120252: [[99], 256],
+ 120253: [[100], 256],
+ 120254: [[101], 256],
+ 120255: [[102], 256],
+ 120256: [[103], 256],
+ 120257: [[104], 256],
+ 120258: [[105], 256],
+ 120259: [[106], 256],
+ 120260: [[107], 256],
+ 120261: [[108], 256],
+ 120262: [[109], 256],
+ 120263: [[110], 256],
+ 120264: [[111], 256],
+ 120265: [[112], 256],
+ 120266: [[113], 256],
+ 120267: [[114], 256],
+ 120268: [[115], 256],
+ 120269: [[116], 256],
+ 120270: [[117], 256],
+ 120271: [[118], 256],
+ 120272: [[119], 256],
+ 120273: [[120], 256],
+ 120274: [[121], 256],
+ 120275: [[122], 256],
+ 120276: [[65], 256],
+ 120277: [[66], 256],
+ 120278: [[67], 256],
+ 120279: [[68], 256],
+ 120280: [[69], 256],
+ 120281: [[70], 256],
+ 120282: [[71], 256],
+ 120283: [[72], 256],
+ 120284: [[73], 256],
+ 120285: [[74], 256],
+ 120286: [[75], 256],
+ 120287: [[76], 256],
+ 120288: [[77], 256],
+ 120289: [[78], 256],
+ 120290: [[79], 256],
+ 120291: [[80], 256],
+ 120292: [[81], 256],
+ 120293: [[82], 256],
+ 120294: [[83], 256],
+ 120295: [[84], 256],
+ 120296: [[85], 256],
+ 120297: [[86], 256],
+ 120298: [[87], 256],
+ 120299: [[88], 256],
+ 120300: [[89], 256],
+ 120301: [[90], 256],
+ 120302: [[97], 256],
+ 120303: [[98], 256],
+ 120304: [[99], 256],
+ 120305: [[100], 256],
+ 120306: [[101], 256],
+ 120307: [[102], 256],
+ 120308: [[103], 256],
+ 120309: [[104], 256],
+ 120310: [[105], 256],
+ 120311: [[106], 256],
+ 120312: [[107], 256],
+ 120313: [[108], 256],
+ 120314: [[109], 256],
+ 120315: [[110], 256],
+ 120316: [[111], 256],
+ 120317: [[112], 256],
+ 120318: [[113], 256],
+ 120319: [[114], 256]
+ },
+ 54784: {
+ 120320: [[115], 256],
+ 120321: [[116], 256],
+ 120322: [[117], 256],
+ 120323: [[118], 256],
+ 120324: [[119], 256],
+ 120325: [[120], 256],
+ 120326: [[121], 256],
+ 120327: [[122], 256],
+ 120328: [[65], 256],
+ 120329: [[66], 256],
+ 120330: [[67], 256],
+ 120331: [[68], 256],
+ 120332: [[69], 256],
+ 120333: [[70], 256],
+ 120334: [[71], 256],
+ 120335: [[72], 256],
+ 120336: [[73], 256],
+ 120337: [[74], 256],
+ 120338: [[75], 256],
+ 120339: [[76], 256],
+ 120340: [[77], 256],
+ 120341: [[78], 256],
+ 120342: [[79], 256],
+ 120343: [[80], 256],
+ 120344: [[81], 256],
+ 120345: [[82], 256],
+ 120346: [[83], 256],
+ 120347: [[84], 256],
+ 120348: [[85], 256],
+ 120349: [[86], 256],
+ 120350: [[87], 256],
+ 120351: [[88], 256],
+ 120352: [[89], 256],
+ 120353: [[90], 256],
+ 120354: [[97], 256],
+ 120355: [[98], 256],
+ 120356: [[99], 256],
+ 120357: [[100], 256],
+ 120358: [[101], 256],
+ 120359: [[102], 256],
+ 120360: [[103], 256],
+ 120361: [[104], 256],
+ 120362: [[105], 256],
+ 120363: [[106], 256],
+ 120364: [[107], 256],
+ 120365: [[108], 256],
+ 120366: [[109], 256],
+ 120367: [[110], 256],
+ 120368: [[111], 256],
+ 120369: [[112], 256],
+ 120370: [[113], 256],
+ 120371: [[114], 256],
+ 120372: [[115], 256],
+ 120373: [[116], 256],
+ 120374: [[117], 256],
+ 120375: [[118], 256],
+ 120376: [[119], 256],
+ 120377: [[120], 256],
+ 120378: [[121], 256],
+ 120379: [[122], 256],
+ 120380: [[65], 256],
+ 120381: [[66], 256],
+ 120382: [[67], 256],
+ 120383: [[68], 256],
+ 120384: [[69], 256],
+ 120385: [[70], 256],
+ 120386: [[71], 256],
+ 120387: [[72], 256],
+ 120388: [[73], 256],
+ 120389: [[74], 256],
+ 120390: [[75], 256],
+ 120391: [[76], 256],
+ 120392: [[77], 256],
+ 120393: [[78], 256],
+ 120394: [[79], 256],
+ 120395: [[80], 256],
+ 120396: [[81], 256],
+ 120397: [[82], 256],
+ 120398: [[83], 256],
+ 120399: [[84], 256],
+ 120400: [[85], 256],
+ 120401: [[86], 256],
+ 120402: [[87], 256],
+ 120403: [[88], 256],
+ 120404: [[89], 256],
+ 120405: [[90], 256],
+ 120406: [[97], 256],
+ 120407: [[98], 256],
+ 120408: [[99], 256],
+ 120409: [[100], 256],
+ 120410: [[101], 256],
+ 120411: [[102], 256],
+ 120412: [[103], 256],
+ 120413: [[104], 256],
+ 120414: [[105], 256],
+ 120415: [[106], 256],
+ 120416: [[107], 256],
+ 120417: [[108], 256],
+ 120418: [[109], 256],
+ 120419: [[110], 256],
+ 120420: [[111], 256],
+ 120421: [[112], 256],
+ 120422: [[113], 256],
+ 120423: [[114], 256],
+ 120424: [[115], 256],
+ 120425: [[116], 256],
+ 120426: [[117], 256],
+ 120427: [[118], 256],
+ 120428: [[119], 256],
+ 120429: [[120], 256],
+ 120430: [[121], 256],
+ 120431: [[122], 256],
+ 120432: [[65], 256],
+ 120433: [[66], 256],
+ 120434: [[67], 256],
+ 120435: [[68], 256],
+ 120436: [[69], 256],
+ 120437: [[70], 256],
+ 120438: [[71], 256],
+ 120439: [[72], 256],
+ 120440: [[73], 256],
+ 120441: [[74], 256],
+ 120442: [[75], 256],
+ 120443: [[76], 256],
+ 120444: [[77], 256],
+ 120445: [[78], 256],
+ 120446: [[79], 256],
+ 120447: [[80], 256],
+ 120448: [[81], 256],
+ 120449: [[82], 256],
+ 120450: [[83], 256],
+ 120451: [[84], 256],
+ 120452: [[85], 256],
+ 120453: [[86], 256],
+ 120454: [[87], 256],
+ 120455: [[88], 256],
+ 120456: [[89], 256],
+ 120457: [[90], 256],
+ 120458: [[97], 256],
+ 120459: [[98], 256],
+ 120460: [[99], 256],
+ 120461: [[100], 256],
+ 120462: [[101], 256],
+ 120463: [[102], 256],
+ 120464: [[103], 256],
+ 120465: [[104], 256],
+ 120466: [[105], 256],
+ 120467: [[106], 256],
+ 120468: [[107], 256],
+ 120469: [[108], 256],
+ 120470: [[109], 256],
+ 120471: [[110], 256],
+ 120472: [[111], 256],
+ 120473: [[112], 256],
+ 120474: [[113], 256],
+ 120475: [[114], 256],
+ 120476: [[115], 256],
+ 120477: [[116], 256],
+ 120478: [[117], 256],
+ 120479: [[118], 256],
+ 120480: [[119], 256],
+ 120481: [[120], 256],
+ 120482: [[121], 256],
+ 120483: [[122], 256],
+ 120484: [[305], 256],
+ 120485: [[567], 256],
+ 120488: [[913], 256],
+ 120489: [[914], 256],
+ 120490: [[915], 256],
+ 120491: [[916], 256],
+ 120492: [[917], 256],
+ 120493: [[918], 256],
+ 120494: [[919], 256],
+ 120495: [[920], 256],
+ 120496: [[921], 256],
+ 120497: [[922], 256],
+ 120498: [[923], 256],
+ 120499: [[924], 256],
+ 120500: [[925], 256],
+ 120501: [[926], 256],
+ 120502: [[927], 256],
+ 120503: [[928], 256],
+ 120504: [[929], 256],
+ 120505: [[1012], 256],
+ 120506: [[931], 256],
+ 120507: [[932], 256],
+ 120508: [[933], 256],
+ 120509: [[934], 256],
+ 120510: [[935], 256],
+ 120511: [[936], 256],
+ 120512: [[937], 256],
+ 120513: [[8711], 256],
+ 120514: [[945], 256],
+ 120515: [[946], 256],
+ 120516: [[947], 256],
+ 120517: [[948], 256],
+ 120518: [[949], 256],
+ 120519: [[950], 256],
+ 120520: [[951], 256],
+ 120521: [[952], 256],
+ 120522: [[953], 256],
+ 120523: [[954], 256],
+ 120524: [[955], 256],
+ 120525: [[956], 256],
+ 120526: [[957], 256],
+ 120527: [[958], 256],
+ 120528: [[959], 256],
+ 120529: [[960], 256],
+ 120530: [[961], 256],
+ 120531: [[962], 256],
+ 120532: [[963], 256],
+ 120533: [[964], 256],
+ 120534: [[965], 256],
+ 120535: [[966], 256],
+ 120536: [[967], 256],
+ 120537: [[968], 256],
+ 120538: [[969], 256],
+ 120539: [[8706], 256],
+ 120540: [[1013], 256],
+ 120541: [[977], 256],
+ 120542: [[1008], 256],
+ 120543: [[981], 256],
+ 120544: [[1009], 256],
+ 120545: [[982], 256],
+ 120546: [[913], 256],
+ 120547: [[914], 256],
+ 120548: [[915], 256],
+ 120549: [[916], 256],
+ 120550: [[917], 256],
+ 120551: [[918], 256],
+ 120552: [[919], 256],
+ 120553: [[920], 256],
+ 120554: [[921], 256],
+ 120555: [[922], 256],
+ 120556: [[923], 256],
+ 120557: [[924], 256],
+ 120558: [[925], 256],
+ 120559: [[926], 256],
+ 120560: [[927], 256],
+ 120561: [[928], 256],
+ 120562: [[929], 256],
+ 120563: [[1012], 256],
+ 120564: [[931], 256],
+ 120565: [[932], 256],
+ 120566: [[933], 256],
+ 120567: [[934], 256],
+ 120568: [[935], 256],
+ 120569: [[936], 256],
+ 120570: [[937], 256],
+ 120571: [[8711], 256],
+ 120572: [[945], 256],
+ 120573: [[946], 256],
+ 120574: [[947], 256],
+ 120575: [[948], 256]
+ },
+ 55040: {
+ 120576: [[949], 256],
+ 120577: [[950], 256],
+ 120578: [[951], 256],
+ 120579: [[952], 256],
+ 120580: [[953], 256],
+ 120581: [[954], 256],
+ 120582: [[955], 256],
+ 120583: [[956], 256],
+ 120584: [[957], 256],
+ 120585: [[958], 256],
+ 120586: [[959], 256],
+ 120587: [[960], 256],
+ 120588: [[961], 256],
+ 120589: [[962], 256],
+ 120590: [[963], 256],
+ 120591: [[964], 256],
+ 120592: [[965], 256],
+ 120593: [[966], 256],
+ 120594: [[967], 256],
+ 120595: [[968], 256],
+ 120596: [[969], 256],
+ 120597: [[8706], 256],
+ 120598: [[1013], 256],
+ 120599: [[977], 256],
+ 120600: [[1008], 256],
+ 120601: [[981], 256],
+ 120602: [[1009], 256],
+ 120603: [[982], 256],
+ 120604: [[913], 256],
+ 120605: [[914], 256],
+ 120606: [[915], 256],
+ 120607: [[916], 256],
+ 120608: [[917], 256],
+ 120609: [[918], 256],
+ 120610: [[919], 256],
+ 120611: [[920], 256],
+ 120612: [[921], 256],
+ 120613: [[922], 256],
+ 120614: [[923], 256],
+ 120615: [[924], 256],
+ 120616: [[925], 256],
+ 120617: [[926], 256],
+ 120618: [[927], 256],
+ 120619: [[928], 256],
+ 120620: [[929], 256],
+ 120621: [[1012], 256],
+ 120622: [[931], 256],
+ 120623: [[932], 256],
+ 120624: [[933], 256],
+ 120625: [[934], 256],
+ 120626: [[935], 256],
+ 120627: [[936], 256],
+ 120628: [[937], 256],
+ 120629: [[8711], 256],
+ 120630: [[945], 256],
+ 120631: [[946], 256],
+ 120632: [[947], 256],
+ 120633: [[948], 256],
+ 120634: [[949], 256],
+ 120635: [[950], 256],
+ 120636: [[951], 256],
+ 120637: [[952], 256],
+ 120638: [[953], 256],
+ 120639: [[954], 256],
+ 120640: [[955], 256],
+ 120641: [[956], 256],
+ 120642: [[957], 256],
+ 120643: [[958], 256],
+ 120644: [[959], 256],
+ 120645: [[960], 256],
+ 120646: [[961], 256],
+ 120647: [[962], 256],
+ 120648: [[963], 256],
+ 120649: [[964], 256],
+ 120650: [[965], 256],
+ 120651: [[966], 256],
+ 120652: [[967], 256],
+ 120653: [[968], 256],
+ 120654: [[969], 256],
+ 120655: [[8706], 256],
+ 120656: [[1013], 256],
+ 120657: [[977], 256],
+ 120658: [[1008], 256],
+ 120659: [[981], 256],
+ 120660: [[1009], 256],
+ 120661: [[982], 256],
+ 120662: [[913], 256],
+ 120663: [[914], 256],
+ 120664: [[915], 256],
+ 120665: [[916], 256],
+ 120666: [[917], 256],
+ 120667: [[918], 256],
+ 120668: [[919], 256],
+ 120669: [[920], 256],
+ 120670: [[921], 256],
+ 120671: [[922], 256],
+ 120672: [[923], 256],
+ 120673: [[924], 256],
+ 120674: [[925], 256],
+ 120675: [[926], 256],
+ 120676: [[927], 256],
+ 120677: [[928], 256],
+ 120678: [[929], 256],
+ 120679: [[1012], 256],
+ 120680: [[931], 256],
+ 120681: [[932], 256],
+ 120682: [[933], 256],
+ 120683: [[934], 256],
+ 120684: [[935], 256],
+ 120685: [[936], 256],
+ 120686: [[937], 256],
+ 120687: [[8711], 256],
+ 120688: [[945], 256],
+ 120689: [[946], 256],
+ 120690: [[947], 256],
+ 120691: [[948], 256],
+ 120692: [[949], 256],
+ 120693: [[950], 256],
+ 120694: [[951], 256],
+ 120695: [[952], 256],
+ 120696: [[953], 256],
+ 120697: [[954], 256],
+ 120698: [[955], 256],
+ 120699: [[956], 256],
+ 120700: [[957], 256],
+ 120701: [[958], 256],
+ 120702: [[959], 256],
+ 120703: [[960], 256],
+ 120704: [[961], 256],
+ 120705: [[962], 256],
+ 120706: [[963], 256],
+ 120707: [[964], 256],
+ 120708: [[965], 256],
+ 120709: [[966], 256],
+ 120710: [[967], 256],
+ 120711: [[968], 256],
+ 120712: [[969], 256],
+ 120713: [[8706], 256],
+ 120714: [[1013], 256],
+ 120715: [[977], 256],
+ 120716: [[1008], 256],
+ 120717: [[981], 256],
+ 120718: [[1009], 256],
+ 120719: [[982], 256],
+ 120720: [[913], 256],
+ 120721: [[914], 256],
+ 120722: [[915], 256],
+ 120723: [[916], 256],
+ 120724: [[917], 256],
+ 120725: [[918], 256],
+ 120726: [[919], 256],
+ 120727: [[920], 256],
+ 120728: [[921], 256],
+ 120729: [[922], 256],
+ 120730: [[923], 256],
+ 120731: [[924], 256],
+ 120732: [[925], 256],
+ 120733: [[926], 256],
+ 120734: [[927], 256],
+ 120735: [[928], 256],
+ 120736: [[929], 256],
+ 120737: [[1012], 256],
+ 120738: [[931], 256],
+ 120739: [[932], 256],
+ 120740: [[933], 256],
+ 120741: [[934], 256],
+ 120742: [[935], 256],
+ 120743: [[936], 256],
+ 120744: [[937], 256],
+ 120745: [[8711], 256],
+ 120746: [[945], 256],
+ 120747: [[946], 256],
+ 120748: [[947], 256],
+ 120749: [[948], 256],
+ 120750: [[949], 256],
+ 120751: [[950], 256],
+ 120752: [[951], 256],
+ 120753: [[952], 256],
+ 120754: [[953], 256],
+ 120755: [[954], 256],
+ 120756: [[955], 256],
+ 120757: [[956], 256],
+ 120758: [[957], 256],
+ 120759: [[958], 256],
+ 120760: [[959], 256],
+ 120761: [[960], 256],
+ 120762: [[961], 256],
+ 120763: [[962], 256],
+ 120764: [[963], 256],
+ 120765: [[964], 256],
+ 120766: [[965], 256],
+ 120767: [[966], 256],
+ 120768: [[967], 256],
+ 120769: [[968], 256],
+ 120770: [[969], 256],
+ 120771: [[8706], 256],
+ 120772: [[1013], 256],
+ 120773: [[977], 256],
+ 120774: [[1008], 256],
+ 120775: [[981], 256],
+ 120776: [[1009], 256],
+ 120777: [[982], 256],
+ 120778: [[988], 256],
+ 120779: [[989], 256],
+ 120782: [[48], 256],
+ 120783: [[49], 256],
+ 120784: [[50], 256],
+ 120785: [[51], 256],
+ 120786: [[52], 256],
+ 120787: [[53], 256],
+ 120788: [[54], 256],
+ 120789: [[55], 256],
+ 120790: [[56], 256],
+ 120791: [[57], 256],
+ 120792: [[48], 256],
+ 120793: [[49], 256],
+ 120794: [[50], 256],
+ 120795: [[51], 256],
+ 120796: [[52], 256],
+ 120797: [[53], 256],
+ 120798: [[54], 256],
+ 120799: [[55], 256],
+ 120800: [[56], 256],
+ 120801: [[57], 256],
+ 120802: [[48], 256],
+ 120803: [[49], 256],
+ 120804: [[50], 256],
+ 120805: [[51], 256],
+ 120806: [[52], 256],
+ 120807: [[53], 256],
+ 120808: [[54], 256],
+ 120809: [[55], 256],
+ 120810: [[56], 256],
+ 120811: [[57], 256],
+ 120812: [[48], 256],
+ 120813: [[49], 256],
+ 120814: [[50], 256],
+ 120815: [[51], 256],
+ 120816: [[52], 256],
+ 120817: [[53], 256],
+ 120818: [[54], 256],
+ 120819: [[55], 256],
+ 120820: [[56], 256],
+ 120821: [[57], 256],
+ 120822: [[48], 256],
+ 120823: [[49], 256],
+ 120824: [[50], 256],
+ 120825: [[51], 256],
+ 120826: [[52], 256],
+ 120827: [[53], 256],
+ 120828: [[54], 256],
+ 120829: [[55], 256],
+ 120830: [[56], 256],
+ 120831: [[57], 256]
+ },
+ 60928: {
+ 126464: [[1575], 256],
+ 126465: [[1576], 256],
+ 126466: [[1580], 256],
+ 126467: [[1583], 256],
+ 126469: [[1608], 256],
+ 126470: [[1586], 256],
+ 126471: [[1581], 256],
+ 126472: [[1591], 256],
+ 126473: [[1610], 256],
+ 126474: [[1603], 256],
+ 126475: [[1604], 256],
+ 126476: [[1605], 256],
+ 126477: [[1606], 256],
+ 126478: [[1587], 256],
+ 126479: [[1593], 256],
+ 126480: [[1601], 256],
+ 126481: [[1589], 256],
+ 126482: [[1602], 256],
+ 126483: [[1585], 256],
+ 126484: [[1588], 256],
+ 126485: [[1578], 256],
+ 126486: [[1579], 256],
+ 126487: [[1582], 256],
+ 126488: [[1584], 256],
+ 126489: [[1590], 256],
+ 126490: [[1592], 256],
+ 126491: [[1594], 256],
+ 126492: [[1646], 256],
+ 126493: [[1722], 256],
+ 126494: [[1697], 256],
+ 126495: [[1647], 256],
+ 126497: [[1576], 256],
+ 126498: [[1580], 256],
+ 126500: [[1607], 256],
+ 126503: [[1581], 256],
+ 126505: [[1610], 256],
+ 126506: [[1603], 256],
+ 126507: [[1604], 256],
+ 126508: [[1605], 256],
+ 126509: [[1606], 256],
+ 126510: [[1587], 256],
+ 126511: [[1593], 256],
+ 126512: [[1601], 256],
+ 126513: [[1589], 256],
+ 126514: [[1602], 256],
+ 126516: [[1588], 256],
+ 126517: [[1578], 256],
+ 126518: [[1579], 256],
+ 126519: [[1582], 256],
+ 126521: [[1590], 256],
+ 126523: [[1594], 256],
+ 126530: [[1580], 256],
+ 126535: [[1581], 256],
+ 126537: [[1610], 256],
+ 126539: [[1604], 256],
+ 126541: [[1606], 256],
+ 126542: [[1587], 256],
+ 126543: [[1593], 256],
+ 126545: [[1589], 256],
+ 126546: [[1602], 256],
+ 126548: [[1588], 256],
+ 126551: [[1582], 256],
+ 126553: [[1590], 256],
+ 126555: [[1594], 256],
+ 126557: [[1722], 256],
+ 126559: [[1647], 256],
+ 126561: [[1576], 256],
+ 126562: [[1580], 256],
+ 126564: [[1607], 256],
+ 126567: [[1581], 256],
+ 126568: [[1591], 256],
+ 126569: [[1610], 256],
+ 126570: [[1603], 256],
+ 126572: [[1605], 256],
+ 126573: [[1606], 256],
+ 126574: [[1587], 256],
+ 126575: [[1593], 256],
+ 126576: [[1601], 256],
+ 126577: [[1589], 256],
+ 126578: [[1602], 256],
+ 126580: [[1588], 256],
+ 126581: [[1578], 256],
+ 126582: [[1579], 256],
+ 126583: [[1582], 256],
+ 126585: [[1590], 256],
+ 126586: [[1592], 256],
+ 126587: [[1594], 256],
+ 126588: [[1646], 256],
+ 126590: [[1697], 256],
+ 126592: [[1575], 256],
+ 126593: [[1576], 256],
+ 126594: [[1580], 256],
+ 126595: [[1583], 256],
+ 126596: [[1607], 256],
+ 126597: [[1608], 256],
+ 126598: [[1586], 256],
+ 126599: [[1581], 256],
+ 126600: [[1591], 256],
+ 126601: [[1610], 256],
+ 126603: [[1604], 256],
+ 126604: [[1605], 256],
+ 126605: [[1606], 256],
+ 126606: [[1587], 256],
+ 126607: [[1593], 256],
+ 126608: [[1601], 256],
+ 126609: [[1589], 256],
+ 126610: [[1602], 256],
+ 126611: [[1585], 256],
+ 126612: [[1588], 256],
+ 126613: [[1578], 256],
+ 126614: [[1579], 256],
+ 126615: [[1582], 256],
+ 126616: [[1584], 256],
+ 126617: [[1590], 256],
+ 126618: [[1592], 256],
+ 126619: [[1594], 256],
+ 126625: [[1576], 256],
+ 126626: [[1580], 256],
+ 126627: [[1583], 256],
+ 126629: [[1608], 256],
+ 126630: [[1586], 256],
+ 126631: [[1581], 256],
+ 126632: [[1591], 256],
+ 126633: [[1610], 256],
+ 126635: [[1604], 256],
+ 126636: [[1605], 256],
+ 126637: [[1606], 256],
+ 126638: [[1587], 256],
+ 126639: [[1593], 256],
+ 126640: [[1601], 256],
+ 126641: [[1589], 256],
+ 126642: [[1602], 256],
+ 126643: [[1585], 256],
+ 126644: [[1588], 256],
+ 126645: [[1578], 256],
+ 126646: [[1579], 256],
+ 126647: [[1582], 256],
+ 126648: [[1584], 256],
+ 126649: [[1590], 256],
+ 126650: [[1592], 256],
+ 126651: [[1594], 256]
+ },
+ 61696: {
+ 127232: [[48, 46], 256],
+ 127233: [[48, 44], 256],
+ 127234: [[49, 44], 256],
+ 127235: [[50, 44], 256],
+ 127236: [[51, 44], 256],
+ 127237: [[52, 44], 256],
+ 127238: [[53, 44], 256],
+ 127239: [[54, 44], 256],
+ 127240: [[55, 44], 256],
+ 127241: [[56, 44], 256],
+ 127242: [[57, 44], 256],
+ 127248: [[40, 65, 41], 256],
+ 127249: [[40, 66, 41], 256],
+ 127250: [[40, 67, 41], 256],
+ 127251: [[40, 68, 41], 256],
+ 127252: [[40, 69, 41], 256],
+ 127253: [[40, 70, 41], 256],
+ 127254: [[40, 71, 41], 256],
+ 127255: [[40, 72, 41], 256],
+ 127256: [[40, 73, 41], 256],
+ 127257: [[40, 74, 41], 256],
+ 127258: [[40, 75, 41], 256],
+ 127259: [[40, 76, 41], 256],
+ 127260: [[40, 77, 41], 256],
+ 127261: [[40, 78, 41], 256],
+ 127262: [[40, 79, 41], 256],
+ 127263: [[40, 80, 41], 256],
+ 127264: [[40, 81, 41], 256],
+ 127265: [[40, 82, 41], 256],
+ 127266: [[40, 83, 41], 256],
+ 127267: [[40, 84, 41], 256],
+ 127268: [[40, 85, 41], 256],
+ 127269: [[40, 86, 41], 256],
+ 127270: [[40, 87, 41], 256],
+ 127271: [[40, 88, 41], 256],
+ 127272: [[40, 89, 41], 256],
+ 127273: [[40, 90, 41], 256],
+ 127274: [[12308, 83, 12309], 256],
+ 127275: [[67], 256],
+ 127276: [[82], 256],
+ 127277: [[67, 68], 256],
+ 127278: [[87, 90], 256],
+ 127280: [[65], 256],
+ 127281: [[66], 256],
+ 127282: [[67], 256],
+ 127283: [[68], 256],
+ 127284: [[69], 256],
+ 127285: [[70], 256],
+ 127286: [[71], 256],
+ 127287: [[72], 256],
+ 127288: [[73], 256],
+ 127289: [[74], 256],
+ 127290: [[75], 256],
+ 127291: [[76], 256],
+ 127292: [[77], 256],
+ 127293: [[78], 256],
+ 127294: [[79], 256],
+ 127295: [[80], 256],
+ 127296: [[81], 256],
+ 127297: [[82], 256],
+ 127298: [[83], 256],
+ 127299: [[84], 256],
+ 127300: [[85], 256],
+ 127301: [[86], 256],
+ 127302: [[87], 256],
+ 127303: [[88], 256],
+ 127304: [[89], 256],
+ 127305: [[90], 256],
+ 127306: [[72, 86], 256],
+ 127307: [[77, 86], 256],
+ 127308: [[83, 68], 256],
+ 127309: [[83, 83], 256],
+ 127310: [[80, 80, 86], 256],
+ 127311: [[87, 67], 256],
+ 127338: [[77, 67], 256],
+ 127339: [[77, 68], 256],
+ 127376: [[68, 74], 256]
+ },
+ 61952: {
+ 127488: [[12411, 12363], 256],
+ 127489: [[12467, 12467], 256],
+ 127490: [[12469], 256],
+ 127504: [[25163], 256],
+ 127505: [[23383], 256],
+ 127506: [[21452], 256],
+ 127507: [[12487], 256],
+ 127508: [[20108], 256],
+ 127509: [[22810], 256],
+ 127510: [[35299], 256],
+ 127511: [[22825], 256],
+ 127512: [[20132], 256],
+ 127513: [[26144], 256],
+ 127514: [[28961], 256],
+ 127515: [[26009], 256],
+ 127516: [[21069], 256],
+ 127517: [[24460], 256],
+ 127518: [[20877], 256],
+ 127519: [[26032], 256],
+ 127520: [[21021], 256],
+ 127521: [[32066], 256],
+ 127522: [[29983], 256],
+ 127523: [[36009], 256],
+ 127524: [[22768], 256],
+ 127525: [[21561], 256],
+ 127526: [[28436], 256],
+ 127527: [[25237], 256],
+ 127528: [[25429], 256],
+ 127529: [[19968], 256],
+ 127530: [[19977], 256],
+ 127531: [[36938], 256],
+ 127532: [[24038], 256],
+ 127533: [[20013], 256],
+ 127534: [[21491], 256],
+ 127535: [[25351], 256],
+ 127536: [[36208], 256],
+ 127537: [[25171], 256],
+ 127538: [[31105], 256],
+ 127539: [[31354], 256],
+ 127540: [[21512], 256],
+ 127541: [[28288], 256],
+ 127542: [[26377], 256],
+ 127543: [[26376], 256],
+ 127544: [[30003], 256],
+ 127545: [[21106], 256],
+ 127546: [[21942], 256],
+ 127552: [[12308, 26412, 12309], 256],
+ 127553: [[12308, 19977, 12309], 256],
+ 127554: [[12308, 20108, 12309], 256],
+ 127555: [[12308, 23433, 12309], 256],
+ 127556: [[12308, 28857, 12309], 256],
+ 127557: [[12308, 25171, 12309], 256],
+ 127558: [[12308, 30423, 12309], 256],
+ 127559: [[12308, 21213, 12309], 256],
+ 127560: [[12308, 25943, 12309], 256],
+ 127568: [[24471], 256],
+ 127569: [[21487], 256]
+ },
+ 63488: {
+ 194560: [[20029]],
+ 194561: [[20024]],
+ 194562: [[20033]],
+ 194563: [[131362]],
+ 194564: [[20320]],
+ 194565: [[20398]],
+ 194566: [[20411]],
+ 194567: [[20482]],
+ 194568: [[20602]],
+ 194569: [[20633]],
+ 194570: [[20711]],
+ 194571: [[20687]],
+ 194572: [[13470]],
+ 194573: [[132666]],
+ 194574: [[20813]],
+ 194575: [[20820]],
+ 194576: [[20836]],
+ 194577: [[20855]],
+ 194578: [[132380]],
+ 194579: [[13497]],
+ 194580: [[20839]],
+ 194581: [[20877]],
+ 194582: [[132427]],
+ 194583: [[20887]],
+ 194584: [[20900]],
+ 194585: [[20172]],
+ 194586: [[20908]],
+ 194587: [[20917]],
+ 194588: [[168415]],
+ 194589: [[20981]],
+ 194590: [[20995]],
+ 194591: [[13535]],
+ 194592: [[21051]],
+ 194593: [[21062]],
+ 194594: [[21106]],
+ 194595: [[21111]],
+ 194596: [[13589]],
+ 194597: [[21191]],
+ 194598: [[21193]],
+ 194599: [[21220]],
+ 194600: [[21242]],
+ 194601: [[21253]],
+ 194602: [[21254]],
+ 194603: [[21271]],
+ 194604: [[21321]],
+ 194605: [[21329]],
+ 194606: [[21338]],
+ 194607: [[21363]],
+ 194608: [[21373]],
+ 194609: [[21375]],
+ 194610: [[21375]],
+ 194611: [[21375]],
+ 194612: [[133676]],
+ 194613: [[28784]],
+ 194614: [[21450]],
+ 194615: [[21471]],
+ 194616: [[133987]],
+ 194617: [[21483]],
+ 194618: [[21489]],
+ 194619: [[21510]],
+ 194620: [[21662]],
+ 194621: [[21560]],
+ 194622: [[21576]],
+ 194623: [[21608]],
+ 194624: [[21666]],
+ 194625: [[21750]],
+ 194626: [[21776]],
+ 194627: [[21843]],
+ 194628: [[21859]],
+ 194629: [[21892]],
+ 194630: [[21892]],
+ 194631: [[21913]],
+ 194632: [[21931]],
+ 194633: [[21939]],
+ 194634: [[21954]],
+ 194635: [[22294]],
+ 194636: [[22022]],
+ 194637: [[22295]],
+ 194638: [[22097]],
+ 194639: [[22132]],
+ 194640: [[20999]],
+ 194641: [[22766]],
+ 194642: [[22478]],
+ 194643: [[22516]],
+ 194644: [[22541]],
+ 194645: [[22411]],
+ 194646: [[22578]],
+ 194647: [[22577]],
+ 194648: [[22700]],
+ 194649: [[136420]],
+ 194650: [[22770]],
+ 194651: [[22775]],
+ 194652: [[22790]],
+ 194653: [[22810]],
+ 194654: [[22818]],
+ 194655: [[22882]],
+ 194656: [[136872]],
+ 194657: [[136938]],
+ 194658: [[23020]],
+ 194659: [[23067]],
+ 194660: [[23079]],
+ 194661: [[23000]],
+ 194662: [[23142]],
+ 194663: [[14062]],
+ 194664: [[14076]],
+ 194665: [[23304]],
+ 194666: [[23358]],
+ 194667: [[23358]],
+ 194668: [[137672]],
+ 194669: [[23491]],
+ 194670: [[23512]],
+ 194671: [[23527]],
+ 194672: [[23539]],
+ 194673: [[138008]],
+ 194674: [[23551]],
+ 194675: [[23558]],
+ 194676: [[24403]],
+ 194677: [[23586]],
+ 194678: [[14209]],
+ 194679: [[23648]],
+ 194680: [[23662]],
+ 194681: [[23744]],
+ 194682: [[23693]],
+ 194683: [[138724]],
+ 194684: [[23875]],
+ 194685: [[138726]],
+ 194686: [[23918]],
+ 194687: [[23915]],
+ 194688: [[23932]],
+ 194689: [[24033]],
+ 194690: [[24034]],
+ 194691: [[14383]],
+ 194692: [[24061]],
+ 194693: [[24104]],
+ 194694: [[24125]],
+ 194695: [[24169]],
+ 194696: [[14434]],
+ 194697: [[139651]],
+ 194698: [[14460]],
+ 194699: [[24240]],
+ 194700: [[24243]],
+ 194701: [[24246]],
+ 194702: [[24266]],
+ 194703: [[172946]],
+ 194704: [[24318]],
+ 194705: [[140081]],
+ 194706: [[140081]],
+ 194707: [[33281]],
+ 194708: [[24354]],
+ 194709: [[24354]],
+ 194710: [[14535]],
+ 194711: [[144056]],
+ 194712: [[156122]],
+ 194713: [[24418]],
+ 194714: [[24427]],
+ 194715: [[14563]],
+ 194716: [[24474]],
+ 194717: [[24525]],
+ 194718: [[24535]],
+ 194719: [[24569]],
+ 194720: [[24705]],
+ 194721: [[14650]],
+ 194722: [[14620]],
+ 194723: [[24724]],
+ 194724: [[141012]],
+ 194725: [[24775]],
+ 194726: [[24904]],
+ 194727: [[24908]],
+ 194728: [[24910]],
+ 194729: [[24908]],
+ 194730: [[24954]],
+ 194731: [[24974]],
+ 194732: [[25010]],
+ 194733: [[24996]],
+ 194734: [[25007]],
+ 194735: [[25054]],
+ 194736: [[25074]],
+ 194737: [[25078]],
+ 194738: [[25104]],
+ 194739: [[25115]],
+ 194740: [[25181]],
+ 194741: [[25265]],
+ 194742: [[25300]],
+ 194743: [[25424]],
+ 194744: [[142092]],
+ 194745: [[25405]],
+ 194746: [[25340]],
+ 194747: [[25448]],
+ 194748: [[25475]],
+ 194749: [[25572]],
+ 194750: [[142321]],
+ 194751: [[25634]],
+ 194752: [[25541]],
+ 194753: [[25513]],
+ 194754: [[14894]],
+ 194755: [[25705]],
+ 194756: [[25726]],
+ 194757: [[25757]],
+ 194758: [[25719]],
+ 194759: [[14956]],
+ 194760: [[25935]],
+ 194761: [[25964]],
+ 194762: [[143370]],
+ 194763: [[26083]],
+ 194764: [[26360]],
+ 194765: [[26185]],
+ 194766: [[15129]],
+ 194767: [[26257]],
+ 194768: [[15112]],
+ 194769: [[15076]],
+ 194770: [[20882]],
+ 194771: [[20885]],
+ 194772: [[26368]],
+ 194773: [[26268]],
+ 194774: [[32941]],
+ 194775: [[17369]],
+ 194776: [[26391]],
+ 194777: [[26395]],
+ 194778: [[26401]],
+ 194779: [[26462]],
+ 194780: [[26451]],
+ 194781: [[144323]],
+ 194782: [[15177]],
+ 194783: [[26618]],
+ 194784: [[26501]],
+ 194785: [[26706]],
+ 194786: [[26757]],
+ 194787: [[144493]],
+ 194788: [[26766]],
+ 194789: [[26655]],
+ 194790: [[26900]],
+ 194791: [[15261]],
+ 194792: [[26946]],
+ 194793: [[27043]],
+ 194794: [[27114]],
+ 194795: [[27304]],
+ 194796: [[145059]],
+ 194797: [[27355]],
+ 194798: [[15384]],
+ 194799: [[27425]],
+ 194800: [[145575]],
+ 194801: [[27476]],
+ 194802: [[15438]],
+ 194803: [[27506]],
+ 194804: [[27551]],
+ 194805: [[27578]],
+ 194806: [[27579]],
+ 194807: [[146061]],
+ 194808: [[138507]],
+ 194809: [[146170]],
+ 194810: [[27726]],
+ 194811: [[146620]],
+ 194812: [[27839]],
+ 194813: [[27853]],
+ 194814: [[27751]],
+ 194815: [[27926]]
+ },
+ 63744: {
+ 63744: [[35912]],
+ 63745: [[26356]],
+ 63746: [[36554]],
+ 63747: [[36040]],
+ 63748: [[28369]],
+ 63749: [[20018]],
+ 63750: [[21477]],
+ 63751: [[40860]],
+ 63752: [[40860]],
+ 63753: [[22865]],
+ 63754: [[37329]],
+ 63755: [[21895]],
+ 63756: [[22856]],
+ 63757: [[25078]],
+ 63758: [[30313]],
+ 63759: [[32645]],
+ 63760: [[34367]],
+ 63761: [[34746]],
+ 63762: [[35064]],
+ 63763: [[37007]],
+ 63764: [[27138]],
+ 63765: [[27931]],
+ 63766: [[28889]],
+ 63767: [[29662]],
+ 63768: [[33853]],
+ 63769: [[37226]],
+ 63770: [[39409]],
+ 63771: [[20098]],
+ 63772: [[21365]],
+ 63773: [[27396]],
+ 63774: [[29211]],
+ 63775: [[34349]],
+ 63776: [[40478]],
+ 63777: [[23888]],
+ 63778: [[28651]],
+ 63779: [[34253]],
+ 63780: [[35172]],
+ 63781: [[25289]],
+ 63782: [[33240]],
+ 63783: [[34847]],
+ 63784: [[24266]],
+ 63785: [[26391]],
+ 63786: [[28010]],
+ 63787: [[29436]],
+ 63788: [[37070]],
+ 63789: [[20358]],
+ 63790: [[20919]],
+ 63791: [[21214]],
+ 63792: [[25796]],
+ 63793: [[27347]],
+ 63794: [[29200]],
+ 63795: [[30439]],
+ 63796: [[32769]],
+ 63797: [[34310]],
+ 63798: [[34396]],
+ 63799: [[36335]],
+ 63800: [[38706]],
+ 63801: [[39791]],
+ 63802: [[40442]],
+ 63803: [[30860]],
+ 63804: [[31103]],
+ 63805: [[32160]],
+ 63806: [[33737]],
+ 63807: [[37636]],
+ 63808: [[40575]],
+ 63809: [[35542]],
+ 63810: [[22751]],
+ 63811: [[24324]],
+ 63812: [[31840]],
+ 63813: [[32894]],
+ 63814: [[29282]],
+ 63815: [[30922]],
+ 63816: [[36034]],
+ 63817: [[38647]],
+ 63818: [[22744]],
+ 63819: [[23650]],
+ 63820: [[27155]],
+ 63821: [[28122]],
+ 63822: [[28431]],
+ 63823: [[32047]],
+ 63824: [[32311]],
+ 63825: [[38475]],
+ 63826: [[21202]],
+ 63827: [[32907]],
+ 63828: [[20956]],
+ 63829: [[20940]],
+ 63830: [[31260]],
+ 63831: [[32190]],
+ 63832: [[33777]],
+ 63833: [[38517]],
+ 63834: [[35712]],
+ 63835: [[25295]],
+ 63836: [[27138]],
+ 63837: [[35582]],
+ 63838: [[20025]],
+ 63839: [[23527]],
+ 63840: [[24594]],
+ 63841: [[29575]],
+ 63842: [[30064]],
+ 63843: [[21271]],
+ 63844: [[30971]],
+ 63845: [[20415]],
+ 63846: [[24489]],
+ 63847: [[19981]],
+ 63848: [[27852]],
+ 63849: [[25976]],
+ 63850: [[32034]],
+ 63851: [[21443]],
+ 63852: [[22622]],
+ 63853: [[30465]],
+ 63854: [[33865]],
+ 63855: [[35498]],
+ 63856: [[27578]],
+ 63857: [[36784]],
+ 63858: [[27784]],
+ 63859: [[25342]],
+ 63860: [[33509]],
+ 63861: [[25504]],
+ 63862: [[30053]],
+ 63863: [[20142]],
+ 63864: [[20841]],
+ 63865: [[20937]],
+ 63866: [[26753]],
+ 63867: [[31975]],
+ 63868: [[33391]],
+ 63869: [[35538]],
+ 63870: [[37327]],
+ 63871: [[21237]],
+ 63872: [[21570]],
+ 63873: [[22899]],
+ 63874: [[24300]],
+ 63875: [[26053]],
+ 63876: [[28670]],
+ 63877: [[31018]],
+ 63878: [[38317]],
+ 63879: [[39530]],
+ 63880: [[40599]],
+ 63881: [[40654]],
+ 63882: [[21147]],
+ 63883: [[26310]],
+ 63884: [[27511]],
+ 63885: [[36706]],
+ 63886: [[24180]],
+ 63887: [[24976]],
+ 63888: [[25088]],
+ 63889: [[25754]],
+ 63890: [[28451]],
+ 63891: [[29001]],
+ 63892: [[29833]],
+ 63893: [[31178]],
+ 63894: [[32244]],
+ 63895: [[32879]],
+ 63896: [[36646]],
+ 63897: [[34030]],
+ 63898: [[36899]],
+ 63899: [[37706]],
+ 63900: [[21015]],
+ 63901: [[21155]],
+ 63902: [[21693]],
+ 63903: [[28872]],
+ 63904: [[35010]],
+ 63905: [[35498]],
+ 63906: [[24265]],
+ 63907: [[24565]],
+ 63908: [[25467]],
+ 63909: [[27566]],
+ 63910: [[31806]],
+ 63911: [[29557]],
+ 63912: [[20196]],
+ 63913: [[22265]],
+ 63914: [[23527]],
+ 63915: [[23994]],
+ 63916: [[24604]],
+ 63917: [[29618]],
+ 63918: [[29801]],
+ 63919: [[32666]],
+ 63920: [[32838]],
+ 63921: [[37428]],
+ 63922: [[38646]],
+ 63923: [[38728]],
+ 63924: [[38936]],
+ 63925: [[20363]],
+ 63926: [[31150]],
+ 63927: [[37300]],
+ 63928: [[38584]],
+ 63929: [[24801]],
+ 63930: [[20102]],
+ 63931: [[20698]],
+ 63932: [[23534]],
+ 63933: [[23615]],
+ 63934: [[26009]],
+ 63935: [[27138]],
+ 63936: [[29134]],
+ 63937: [[30274]],
+ 63938: [[34044]],
+ 63939: [[36988]],
+ 63940: [[40845]],
+ 63941: [[26248]],
+ 63942: [[38446]],
+ 63943: [[21129]],
+ 63944: [[26491]],
+ 63945: [[26611]],
+ 63946: [[27969]],
+ 63947: [[28316]],
+ 63948: [[29705]],
+ 63949: [[30041]],
+ 63950: [[30827]],
+ 63951: [[32016]],
+ 63952: [[39006]],
+ 63953: [[20845]],
+ 63954: [[25134]],
+ 63955: [[38520]],
+ 63956: [[20523]],
+ 63957: [[23833]],
+ 63958: [[28138]],
+ 63959: [[36650]],
+ 63960: [[24459]],
+ 63961: [[24900]],
+ 63962: [[26647]],
+ 63963: [[29575]],
+ 63964: [[38534]],
+ 63965: [[21033]],
+ 63966: [[21519]],
+ 63967: [[23653]],
+ 63968: [[26131]],
+ 63969: [[26446]],
+ 63970: [[26792]],
+ 63971: [[27877]],
+ 63972: [[29702]],
+ 63973: [[30178]],
+ 63974: [[32633]],
+ 63975: [[35023]],
+ 63976: [[35041]],
+ 63977: [[37324]],
+ 63978: [[38626]],
+ 63979: [[21311]],
+ 63980: [[28346]],
+ 63981: [[21533]],
+ 63982: [[29136]],
+ 63983: [[29848]],
+ 63984: [[34298]],
+ 63985: [[38563]],
+ 63986: [[40023]],
+ 63987: [[40607]],
+ 63988: [[26519]],
+ 63989: [[28107]],
+ 63990: [[33256]],
+ 63991: [[31435]],
+ 63992: [[31520]],
+ 63993: [[31890]],
+ 63994: [[29376]],
+ 63995: [[28825]],
+ 63996: [[35672]],
+ 63997: [[20160]],
+ 63998: [[33590]],
+ 63999: [[21050]],
+ 194816: [[27966]],
+ 194817: [[28023]],
+ 194818: [[27969]],
+ 194819: [[28009]],
+ 194820: [[28024]],
+ 194821: [[28037]],
+ 194822: [[146718]],
+ 194823: [[27956]],
+ 194824: [[28207]],
+ 194825: [[28270]],
+ 194826: [[15667]],
+ 194827: [[28363]],
+ 194828: [[28359]],
+ 194829: [[147153]],
+ 194830: [[28153]],
+ 194831: [[28526]],
+ 194832: [[147294]],
+ 194833: [[147342]],
+ 194834: [[28614]],
+ 194835: [[28729]],
+ 194836: [[28702]],
+ 194837: [[28699]],
+ 194838: [[15766]],
+ 194839: [[28746]],
+ 194840: [[28797]],
+ 194841: [[28791]],
+ 194842: [[28845]],
+ 194843: [[132389]],
+ 194844: [[28997]],
+ 194845: [[148067]],
+ 194846: [[29084]],
+ 194847: [[148395]],
+ 194848: [[29224]],
+ 194849: [[29237]],
+ 194850: [[29264]],
+ 194851: [[149000]],
+ 194852: [[29312]],
+ 194853: [[29333]],
+ 194854: [[149301]],
+ 194855: [[149524]],
+ 194856: [[29562]],
+ 194857: [[29579]],
+ 194858: [[16044]],
+ 194859: [[29605]],
+ 194860: [[16056]],
+ 194861: [[16056]],
+ 194862: [[29767]],
+ 194863: [[29788]],
+ 194864: [[29809]],
+ 194865: [[29829]],
+ 194866: [[29898]],
+ 194867: [[16155]],
+ 194868: [[29988]],
+ 194869: [[150582]],
+ 194870: [[30014]],
+ 194871: [[150674]],
+ 194872: [[30064]],
+ 194873: [[139679]],
+ 194874: [[30224]],
+ 194875: [[151457]],
+ 194876: [[151480]],
+ 194877: [[151620]],
+ 194878: [[16380]],
+ 194879: [[16392]],
+ 194880: [[30452]],
+ 194881: [[151795]],
+ 194882: [[151794]],
+ 194883: [[151833]],
+ 194884: [[151859]],
+ 194885: [[30494]],
+ 194886: [[30495]],
+ 194887: [[30495]],
+ 194888: [[30538]],
+ 194889: [[16441]],
+ 194890: [[30603]],
+ 194891: [[16454]],
+ 194892: [[16534]],
+ 194893: [[152605]],
+ 194894: [[30798]],
+ 194895: [[30860]],
+ 194896: [[30924]],
+ 194897: [[16611]],
+ 194898: [[153126]],
+ 194899: [[31062]],
+ 194900: [[153242]],
+ 194901: [[153285]],
+ 194902: [[31119]],
+ 194903: [[31211]],
+ 194904: [[16687]],
+ 194905: [[31296]],
+ 194906: [[31306]],
+ 194907: [[31311]],
+ 194908: [[153980]],
+ 194909: [[154279]],
+ 194910: [[154279]],
+ 194911: [[31470]],
+ 194912: [[16898]],
+ 194913: [[154539]],
+ 194914: [[31686]],
+ 194915: [[31689]],
+ 194916: [[16935]],
+ 194917: [[154752]],
+ 194918: [[31954]],
+ 194919: [[17056]],
+ 194920: [[31976]],
+ 194921: [[31971]],
+ 194922: [[32000]],
+ 194923: [[155526]],
+ 194924: [[32099]],
+ 194925: [[17153]],
+ 194926: [[32199]],
+ 194927: [[32258]],
+ 194928: [[32325]],
+ 194929: [[17204]],
+ 194930: [[156200]],
+ 194931: [[156231]],
+ 194932: [[17241]],
+ 194933: [[156377]],
+ 194934: [[32634]],
+ 194935: [[156478]],
+ 194936: [[32661]],
+ 194937: [[32762]],
+ 194938: [[32773]],
+ 194939: [[156890]],
+ 194940: [[156963]],
+ 194941: [[32864]],
+ 194942: [[157096]],
+ 194943: [[32880]],
+ 194944: [[144223]],
+ 194945: [[17365]],
+ 194946: [[32946]],
+ 194947: [[33027]],
+ 194948: [[17419]],
+ 194949: [[33086]],
+ 194950: [[23221]],
+ 194951: [[157607]],
+ 194952: [[157621]],
+ 194953: [[144275]],
+ 194954: [[144284]],
+ 194955: [[33281]],
+ 194956: [[33284]],
+ 194957: [[36766]],
+ 194958: [[17515]],
+ 194959: [[33425]],
+ 194960: [[33419]],
+ 194961: [[33437]],
+ 194962: [[21171]],
+ 194963: [[33457]],
+ 194964: [[33459]],
+ 194965: [[33469]],
+ 194966: [[33510]],
+ 194967: [[158524]],
+ 194968: [[33509]],
+ 194969: [[33565]],
+ 194970: [[33635]],
+ 194971: [[33709]],
+ 194972: [[33571]],
+ 194973: [[33725]],
+ 194974: [[33767]],
+ 194975: [[33879]],
+ 194976: [[33619]],
+ 194977: [[33738]],
+ 194978: [[33740]],
+ 194979: [[33756]],
+ 194980: [[158774]],
+ 194981: [[159083]],
+ 194982: [[158933]],
+ 194983: [[17707]],
+ 194984: [[34033]],
+ 194985: [[34035]],
+ 194986: [[34070]],
+ 194987: [[160714]],
+ 194988: [[34148]],
+ 194989: [[159532]],
+ 194990: [[17757]],
+ 194991: [[17761]],
+ 194992: [[159665]],
+ 194993: [[159954]],
+ 194994: [[17771]],
+ 194995: [[34384]],
+ 194996: [[34396]],
+ 194997: [[34407]],
+ 194998: [[34409]],
+ 194999: [[34473]],
+ 195000: [[34440]],
+ 195001: [[34574]],
+ 195002: [[34530]],
+ 195003: [[34681]],
+ 195004: [[34600]],
+ 195005: [[34667]],
+ 195006: [[34694]],
+ 195007: [[17879]],
+ 195008: [[34785]],
+ 195009: [[34817]],
+ 195010: [[17913]],
+ 195011: [[34912]],
+ 195012: [[34915]],
+ 195013: [[161383]],
+ 195014: [[35031]],
+ 195015: [[35038]],
+ 195016: [[17973]],
+ 195017: [[35066]],
+ 195018: [[13499]],
+ 195019: [[161966]],
+ 195020: [[162150]],
+ 195021: [[18110]],
+ 195022: [[18119]],
+ 195023: [[35488]],
+ 195024: [[35565]],
+ 195025: [[35722]],
+ 195026: [[35925]],
+ 195027: [[162984]],
+ 195028: [[36011]],
+ 195029: [[36033]],
+ 195030: [[36123]],
+ 195031: [[36215]],
+ 195032: [[163631]],
+ 195033: [[133124]],
+ 195034: [[36299]],
+ 195035: [[36284]],
+ 195036: [[36336]],
+ 195037: [[133342]],
+ 195038: [[36564]],
+ 195039: [[36664]],
+ 195040: [[165330]],
+ 195041: [[165357]],
+ 195042: [[37012]],
+ 195043: [[37105]],
+ 195044: [[37137]],
+ 195045: [[165678]],
+ 195046: [[37147]],
+ 195047: [[37432]],
+ 195048: [[37591]],
+ 195049: [[37592]],
+ 195050: [[37500]],
+ 195051: [[37881]],
+ 195052: [[37909]],
+ 195053: [[166906]],
+ 195054: [[38283]],
+ 195055: [[18837]],
+ 195056: [[38327]],
+ 195057: [[167287]],
+ 195058: [[18918]],
+ 195059: [[38595]],
+ 195060: [[23986]],
+ 195061: [[38691]],
+ 195062: [[168261]],
+ 195063: [[168474]],
+ 195064: [[19054]],
+ 195065: [[19062]],
+ 195066: [[38880]],
+ 195067: [[168970]],
+ 195068: [[19122]],
+ 195069: [[169110]],
+ 195070: [[38923]],
+ 195071: [[38923]]
+ },
+ 64000: {
+ 64000: [[20999]],
+ 64001: [[24230]],
+ 64002: [[25299]],
+ 64003: [[31958]],
+ 64004: [[23429]],
+ 64005: [[27934]],
+ 64006: [[26292]],
+ 64007: [[36667]],
+ 64008: [[34892]],
+ 64009: [[38477]],
+ 64010: [[35211]],
+ 64011: [[24275]],
+ 64012: [[20800]],
+ 64013: [[21952]],
+ 64016: [[22618]],
+ 64018: [[26228]],
+ 64021: [[20958]],
+ 64022: [[29482]],
+ 64023: [[30410]],
+ 64024: [[31036]],
+ 64025: [[31070]],
+ 64026: [[31077]],
+ 64027: [[31119]],
+ 64028: [[38742]],
+ 64029: [[31934]],
+ 64030: [[32701]],
+ 64032: [[34322]],
+ 64034: [[35576]],
+ 64037: [[36920]],
+ 64038: [[37117]],
+ 64042: [[39151]],
+ 64043: [[39164]],
+ 64044: [[39208]],
+ 64045: [[40372]],
+ 64046: [[37086]],
+ 64047: [[38583]],
+ 64048: [[20398]],
+ 64049: [[20711]],
+ 64050: [[20813]],
+ 64051: [[21193]],
+ 64052: [[21220]],
+ 64053: [[21329]],
+ 64054: [[21917]],
+ 64055: [[22022]],
+ 64056: [[22120]],
+ 64057: [[22592]],
+ 64058: [[22696]],
+ 64059: [[23652]],
+ 64060: [[23662]],
+ 64061: [[24724]],
+ 64062: [[24936]],
+ 64063: [[24974]],
+ 64064: [[25074]],
+ 64065: [[25935]],
+ 64066: [[26082]],
+ 64067: [[26257]],
+ 64068: [[26757]],
+ 64069: [[28023]],
+ 64070: [[28186]],
+ 64071: [[28450]],
+ 64072: [[29038]],
+ 64073: [[29227]],
+ 64074: [[29730]],
+ 64075: [[30865]],
+ 64076: [[31038]],
+ 64077: [[31049]],
+ 64078: [[31048]],
+ 64079: [[31056]],
+ 64080: [[31062]],
+ 64081: [[31069]],
+ 64082: [[31117]],
+ 64083: [[31118]],
+ 64084: [[31296]],
+ 64085: [[31361]],
+ 64086: [[31680]],
+ 64087: [[32244]],
+ 64088: [[32265]],
+ 64089: [[32321]],
+ 64090: [[32626]],
+ 64091: [[32773]],
+ 64092: [[33261]],
+ 64093: [[33401]],
+ 64094: [[33401]],
+ 64095: [[33879]],
+ 64096: [[35088]],
+ 64097: [[35222]],
+ 64098: [[35585]],
+ 64099: [[35641]],
+ 64100: [[36051]],
+ 64101: [[36104]],
+ 64102: [[36790]],
+ 64103: [[36920]],
+ 64104: [[38627]],
+ 64105: [[38911]],
+ 64106: [[38971]],
+ 64107: [[24693]],
+ 64108: [[148206]],
+ 64109: [[33304]],
+ 64112: [[20006]],
+ 64113: [[20917]],
+ 64114: [[20840]],
+ 64115: [[20352]],
+ 64116: [[20805]],
+ 64117: [[20864]],
+ 64118: [[21191]],
+ 64119: [[21242]],
+ 64120: [[21917]],
+ 64121: [[21845]],
+ 64122: [[21913]],
+ 64123: [[21986]],
+ 64124: [[22618]],
+ 64125: [[22707]],
+ 64126: [[22852]],
+ 64127: [[22868]],
+ 64128: [[23138]],
+ 64129: [[23336]],
+ 64130: [[24274]],
+ 64131: [[24281]],
+ 64132: [[24425]],
+ 64133: [[24493]],
+ 64134: [[24792]],
+ 64135: [[24910]],
+ 64136: [[24840]],
+ 64137: [[24974]],
+ 64138: [[24928]],
+ 64139: [[25074]],
+ 64140: [[25140]],
+ 64141: [[25540]],
+ 64142: [[25628]],
+ 64143: [[25682]],
+ 64144: [[25942]],
+ 64145: [[26228]],
+ 64146: [[26391]],
+ 64147: [[26395]],
+ 64148: [[26454]],
+ 64149: [[27513]],
+ 64150: [[27578]],
+ 64151: [[27969]],
+ 64152: [[28379]],
+ 64153: [[28363]],
+ 64154: [[28450]],
+ 64155: [[28702]],
+ 64156: [[29038]],
+ 64157: [[30631]],
+ 64158: [[29237]],
+ 64159: [[29359]],
+ 64160: [[29482]],
+ 64161: [[29809]],
+ 64162: [[29958]],
+ 64163: [[30011]],
+ 64164: [[30237]],
+ 64165: [[30239]],
+ 64166: [[30410]],
+ 64167: [[30427]],
+ 64168: [[30452]],
+ 64169: [[30538]],
+ 64170: [[30528]],
+ 64171: [[30924]],
+ 64172: [[31409]],
+ 64173: [[31680]],
+ 64174: [[31867]],
+ 64175: [[32091]],
+ 64176: [[32244]],
+ 64177: [[32574]],
+ 64178: [[32773]],
+ 64179: [[33618]],
+ 64180: [[33775]],
+ 64181: [[34681]],
+ 64182: [[35137]],
+ 64183: [[35206]],
+ 64184: [[35222]],
+ 64185: [[35519]],
+ 64186: [[35576]],
+ 64187: [[35531]],
+ 64188: [[35585]],
+ 64189: [[35582]],
+ 64190: [[35565]],
+ 64191: [[35641]],
+ 64192: [[35722]],
+ 64193: [[36104]],
+ 64194: [[36664]],
+ 64195: [[36978]],
+ 64196: [[37273]],
+ 64197: [[37494]],
+ 64198: [[38524]],
+ 64199: [[38627]],
+ 64200: [[38742]],
+ 64201: [[38875]],
+ 64202: [[38911]],
+ 64203: [[38923]],
+ 64204: [[38971]],
+ 64205: [[39698]],
+ 64206: [[40860]],
+ 64207: [[141386]],
+ 64208: [[141380]],
+ 64209: [[144341]],
+ 64210: [[15261]],
+ 64211: [[16408]],
+ 64212: [[16441]],
+ 64213: [[152137]],
+ 64214: [[154832]],
+ 64215: [[163539]],
+ 64216: [[40771]],
+ 64217: [[40846]],
+ 195072: [[38953]],
+ 195073: [[169398]],
+ 195074: [[39138]],
+ 195075: [[19251]],
+ 195076: [[39209]],
+ 195077: [[39335]],
+ 195078: [[39362]],
+ 195079: [[39422]],
+ 195080: [[19406]],
+ 195081: [[170800]],
+ 195082: [[39698]],
+ 195083: [[40000]],
+ 195084: [[40189]],
+ 195085: [[19662]],
+ 195086: [[19693]],
+ 195087: [[40295]],
+ 195088: [[172238]],
+ 195089: [[19704]],
+ 195090: [[172293]],
+ 195091: [[172558]],
+ 195092: [[172689]],
+ 195093: [[40635]],
+ 195094: [[19798]],
+ 195095: [[40697]],
+ 195096: [[40702]],
+ 195097: [[40709]],
+ 195098: [[40719]],
+ 195099: [[40726]],
+ 195100: [[40763]],
+ 195101: [[173568]]
+ },
+ 64256: {
+ 64256: [[102, 102], 256],
+ 64257: [[102, 105], 256],
+ 64258: [[102, 108], 256],
+ 64259: [[102, 102, 105], 256],
+ 64260: [[102, 102, 108], 256],
+ 64261: [[383, 116], 256],
+ 64262: [[115, 116], 256],
+ 64275: [[1396, 1398], 256],
+ 64276: [[1396, 1381], 256],
+ 64277: [[1396, 1387], 256],
+ 64278: [[1406, 1398], 256],
+ 64279: [[1396, 1389], 256],
+ 64285: [[1497, 1460], 512],
+ 64286: [, 26],
+ 64287: [[1522, 1463], 512],
+ 64288: [[1506], 256],
+ 64289: [[1488], 256],
+ 64290: [[1491], 256],
+ 64291: [[1492], 256],
+ 64292: [[1499], 256],
+ 64293: [[1500], 256],
+ 64294: [[1501], 256],
+ 64295: [[1512], 256],
+ 64296: [[1514], 256],
+ 64297: [[43], 256],
+ 64298: [[1513, 1473], 512],
+ 64299: [[1513, 1474], 512],
+ 64300: [[64329, 1473], 512],
+ 64301: [[64329, 1474], 512],
+ 64302: [[1488, 1463], 512],
+ 64303: [[1488, 1464], 512],
+ 64304: [[1488, 1468], 512],
+ 64305: [[1489, 1468], 512],
+ 64306: [[1490, 1468], 512],
+ 64307: [[1491, 1468], 512],
+ 64308: [[1492, 1468], 512],
+ 64309: [[1493, 1468], 512],
+ 64310: [[1494, 1468], 512],
+ 64312: [[1496, 1468], 512],
+ 64313: [[1497, 1468], 512],
+ 64314: [[1498, 1468], 512],
+ 64315: [[1499, 1468], 512],
+ 64316: [[1500, 1468], 512],
+ 64318: [[1502, 1468], 512],
+ 64320: [[1504, 1468], 512],
+ 64321: [[1505, 1468], 512],
+ 64323: [[1507, 1468], 512],
+ 64324: [[1508, 1468], 512],
+ 64326: [[1510, 1468], 512],
+ 64327: [[1511, 1468], 512],
+ 64328: [[1512, 1468], 512],
+ 64329: [[1513, 1468], 512],
+ 64330: [[1514, 1468], 512],
+ 64331: [[1493, 1465], 512],
+ 64332: [[1489, 1471], 512],
+ 64333: [[1499, 1471], 512],
+ 64334: [[1508, 1471], 512],
+ 64335: [[1488, 1500], 256],
+ 64336: [[1649], 256],
+ 64337: [[1649], 256],
+ 64338: [[1659], 256],
+ 64339: [[1659], 256],
+ 64340: [[1659], 256],
+ 64341: [[1659], 256],
+ 64342: [[1662], 256],
+ 64343: [[1662], 256],
+ 64344: [[1662], 256],
+ 64345: [[1662], 256],
+ 64346: [[1664], 256],
+ 64347: [[1664], 256],
+ 64348: [[1664], 256],
+ 64349: [[1664], 256],
+ 64350: [[1658], 256],
+ 64351: [[1658], 256],
+ 64352: [[1658], 256],
+ 64353: [[1658], 256],
+ 64354: [[1663], 256],
+ 64355: [[1663], 256],
+ 64356: [[1663], 256],
+ 64357: [[1663], 256],
+ 64358: [[1657], 256],
+ 64359: [[1657], 256],
+ 64360: [[1657], 256],
+ 64361: [[1657], 256],
+ 64362: [[1700], 256],
+ 64363: [[1700], 256],
+ 64364: [[1700], 256],
+ 64365: [[1700], 256],
+ 64366: [[1702], 256],
+ 64367: [[1702], 256],
+ 64368: [[1702], 256],
+ 64369: [[1702], 256],
+ 64370: [[1668], 256],
+ 64371: [[1668], 256],
+ 64372: [[1668], 256],
+ 64373: [[1668], 256],
+ 64374: [[1667], 256],
+ 64375: [[1667], 256],
+ 64376: [[1667], 256],
+ 64377: [[1667], 256],
+ 64378: [[1670], 256],
+ 64379: [[1670], 256],
+ 64380: [[1670], 256],
+ 64381: [[1670], 256],
+ 64382: [[1671], 256],
+ 64383: [[1671], 256],
+ 64384: [[1671], 256],
+ 64385: [[1671], 256],
+ 64386: [[1677], 256],
+ 64387: [[1677], 256],
+ 64388: [[1676], 256],
+ 64389: [[1676], 256],
+ 64390: [[1678], 256],
+ 64391: [[1678], 256],
+ 64392: [[1672], 256],
+ 64393: [[1672], 256],
+ 64394: [[1688], 256],
+ 64395: [[1688], 256],
+ 64396: [[1681], 256],
+ 64397: [[1681], 256],
+ 64398: [[1705], 256],
+ 64399: [[1705], 256],
+ 64400: [[1705], 256],
+ 64401: [[1705], 256],
+ 64402: [[1711], 256],
+ 64403: [[1711], 256],
+ 64404: [[1711], 256],
+ 64405: [[1711], 256],
+ 64406: [[1715], 256],
+ 64407: [[1715], 256],
+ 64408: [[1715], 256],
+ 64409: [[1715], 256],
+ 64410: [[1713], 256],
+ 64411: [[1713], 256],
+ 64412: [[1713], 256],
+ 64413: [[1713], 256],
+ 64414: [[1722], 256],
+ 64415: [[1722], 256],
+ 64416: [[1723], 256],
+ 64417: [[1723], 256],
+ 64418: [[1723], 256],
+ 64419: [[1723], 256],
+ 64420: [[1728], 256],
+ 64421: [[1728], 256],
+ 64422: [[1729], 256],
+ 64423: [[1729], 256],
+ 64424: [[1729], 256],
+ 64425: [[1729], 256],
+ 64426: [[1726], 256],
+ 64427: [[1726], 256],
+ 64428: [[1726], 256],
+ 64429: [[1726], 256],
+ 64430: [[1746], 256],
+ 64431: [[1746], 256],
+ 64432: [[1747], 256],
+ 64433: [[1747], 256],
+ 64467: [[1709], 256],
+ 64468: [[1709], 256],
+ 64469: [[1709], 256],
+ 64470: [[1709], 256],
+ 64471: [[1735], 256],
+ 64472: [[1735], 256],
+ 64473: [[1734], 256],
+ 64474: [[1734], 256],
+ 64475: [[1736], 256],
+ 64476: [[1736], 256],
+ 64477: [[1655], 256],
+ 64478: [[1739], 256],
+ 64479: [[1739], 256],
+ 64480: [[1733], 256],
+ 64481: [[1733], 256],
+ 64482: [[1737], 256],
+ 64483: [[1737], 256],
+ 64484: [[1744], 256],
+ 64485: [[1744], 256],
+ 64486: [[1744], 256],
+ 64487: [[1744], 256],
+ 64488: [[1609], 256],
+ 64489: [[1609], 256],
+ 64490: [[1574, 1575], 256],
+ 64491: [[1574, 1575], 256],
+ 64492: [[1574, 1749], 256],
+ 64493: [[1574, 1749], 256],
+ 64494: [[1574, 1608], 256],
+ 64495: [[1574, 1608], 256],
+ 64496: [[1574, 1735], 256],
+ 64497: [[1574, 1735], 256],
+ 64498: [[1574, 1734], 256],
+ 64499: [[1574, 1734], 256],
+ 64500: [[1574, 1736], 256],
+ 64501: [[1574, 1736], 256],
+ 64502: [[1574, 1744], 256],
+ 64503: [[1574, 1744], 256],
+ 64504: [[1574, 1744], 256],
+ 64505: [[1574, 1609], 256],
+ 64506: [[1574, 1609], 256],
+ 64507: [[1574, 1609], 256],
+ 64508: [[1740], 256],
+ 64509: [[1740], 256],
+ 64510: [[1740], 256],
+ 64511: [[1740], 256]
+ },
+ 64512: {
+ 64512: [[1574, 1580], 256],
+ 64513: [[1574, 1581], 256],
+ 64514: [[1574, 1605], 256],
+ 64515: [[1574, 1609], 256],
+ 64516: [[1574, 1610], 256],
+ 64517: [[1576, 1580], 256],
+ 64518: [[1576, 1581], 256],
+ 64519: [[1576, 1582], 256],
+ 64520: [[1576, 1605], 256],
+ 64521: [[1576, 1609], 256],
+ 64522: [[1576, 1610], 256],
+ 64523: [[1578, 1580], 256],
+ 64524: [[1578, 1581], 256],
+ 64525: [[1578, 1582], 256],
+ 64526: [[1578, 1605], 256],
+ 64527: [[1578, 1609], 256],
+ 64528: [[1578, 1610], 256],
+ 64529: [[1579, 1580], 256],
+ 64530: [[1579, 1605], 256],
+ 64531: [[1579, 1609], 256],
+ 64532: [[1579, 1610], 256],
+ 64533: [[1580, 1581], 256],
+ 64534: [[1580, 1605], 256],
+ 64535: [[1581, 1580], 256],
+ 64536: [[1581, 1605], 256],
+ 64537: [[1582, 1580], 256],
+ 64538: [[1582, 1581], 256],
+ 64539: [[1582, 1605], 256],
+ 64540: [[1587, 1580], 256],
+ 64541: [[1587, 1581], 256],
+ 64542: [[1587, 1582], 256],
+ 64543: [[1587, 1605], 256],
+ 64544: [[1589, 1581], 256],
+ 64545: [[1589, 1605], 256],
+ 64546: [[1590, 1580], 256],
+ 64547: [[1590, 1581], 256],
+ 64548: [[1590, 1582], 256],
+ 64549: [[1590, 1605], 256],
+ 64550: [[1591, 1581], 256],
+ 64551: [[1591, 1605], 256],
+ 64552: [[1592, 1605], 256],
+ 64553: [[1593, 1580], 256],
+ 64554: [[1593, 1605], 256],
+ 64555: [[1594, 1580], 256],
+ 64556: [[1594, 1605], 256],
+ 64557: [[1601, 1580], 256],
+ 64558: [[1601, 1581], 256],
+ 64559: [[1601, 1582], 256],
+ 64560: [[1601, 1605], 256],
+ 64561: [[1601, 1609], 256],
+ 64562: [[1601, 1610], 256],
+ 64563: [[1602, 1581], 256],
+ 64564: [[1602, 1605], 256],
+ 64565: [[1602, 1609], 256],
+ 64566: [[1602, 1610], 256],
+ 64567: [[1603, 1575], 256],
+ 64568: [[1603, 1580], 256],
+ 64569: [[1603, 1581], 256],
+ 64570: [[1603, 1582], 256],
+ 64571: [[1603, 1604], 256],
+ 64572: [[1603, 1605], 256],
+ 64573: [[1603, 1609], 256],
+ 64574: [[1603, 1610], 256],
+ 64575: [[1604, 1580], 256],
+ 64576: [[1604, 1581], 256],
+ 64577: [[1604, 1582], 256],
+ 64578: [[1604, 1605], 256],
+ 64579: [[1604, 1609], 256],
+ 64580: [[1604, 1610], 256],
+ 64581: [[1605, 1580], 256],
+ 64582: [[1605, 1581], 256],
+ 64583: [[1605, 1582], 256],
+ 64584: [[1605, 1605], 256],
+ 64585: [[1605, 1609], 256],
+ 64586: [[1605, 1610], 256],
+ 64587: [[1606, 1580], 256],
+ 64588: [[1606, 1581], 256],
+ 64589: [[1606, 1582], 256],
+ 64590: [[1606, 1605], 256],
+ 64591: [[1606, 1609], 256],
+ 64592: [[1606, 1610], 256],
+ 64593: [[1607, 1580], 256],
+ 64594: [[1607, 1605], 256],
+ 64595: [[1607, 1609], 256],
+ 64596: [[1607, 1610], 256],
+ 64597: [[1610, 1580], 256],
+ 64598: [[1610, 1581], 256],
+ 64599: [[1610, 1582], 256],
+ 64600: [[1610, 1605], 256],
+ 64601: [[1610, 1609], 256],
+ 64602: [[1610, 1610], 256],
+ 64603: [[1584, 1648], 256],
+ 64604: [[1585, 1648], 256],
+ 64605: [[1609, 1648], 256],
+ 64606: [[32, 1612, 1617], 256],
+ 64607: [[32, 1613, 1617], 256],
+ 64608: [[32, 1614, 1617], 256],
+ 64609: [[32, 1615, 1617], 256],
+ 64610: [[32, 1616, 1617], 256],
+ 64611: [[32, 1617, 1648], 256],
+ 64612: [[1574, 1585], 256],
+ 64613: [[1574, 1586], 256],
+ 64614: [[1574, 1605], 256],
+ 64615: [[1574, 1606], 256],
+ 64616: [[1574, 1609], 256],
+ 64617: [[1574, 1610], 256],
+ 64618: [[1576, 1585], 256],
+ 64619: [[1576, 1586], 256],
+ 64620: [[1576, 1605], 256],
+ 64621: [[1576, 1606], 256],
+ 64622: [[1576, 1609], 256],
+ 64623: [[1576, 1610], 256],
+ 64624: [[1578, 1585], 256],
+ 64625: [[1578, 1586], 256],
+ 64626: [[1578, 1605], 256],
+ 64627: [[1578, 1606], 256],
+ 64628: [[1578, 1609], 256],
+ 64629: [[1578, 1610], 256],
+ 64630: [[1579, 1585], 256],
+ 64631: [[1579, 1586], 256],
+ 64632: [[1579, 1605], 256],
+ 64633: [[1579, 1606], 256],
+ 64634: [[1579, 1609], 256],
+ 64635: [[1579, 1610], 256],
+ 64636: [[1601, 1609], 256],
+ 64637: [[1601, 1610], 256],
+ 64638: [[1602, 1609], 256],
+ 64639: [[1602, 1610], 256],
+ 64640: [[1603, 1575], 256],
+ 64641: [[1603, 1604], 256],
+ 64642: [[1603, 1605], 256],
+ 64643: [[1603, 1609], 256],
+ 64644: [[1603, 1610], 256],
+ 64645: [[1604, 1605], 256],
+ 64646: [[1604, 1609], 256],
+ 64647: [[1604, 1610], 256],
+ 64648: [[1605, 1575], 256],
+ 64649: [[1605, 1605], 256],
+ 64650: [[1606, 1585], 256],
+ 64651: [[1606, 1586], 256],
+ 64652: [[1606, 1605], 256],
+ 64653: [[1606, 1606], 256],
+ 64654: [[1606, 1609], 256],
+ 64655: [[1606, 1610], 256],
+ 64656: [[1609, 1648], 256],
+ 64657: [[1610, 1585], 256],
+ 64658: [[1610, 1586], 256],
+ 64659: [[1610, 1605], 256],
+ 64660: [[1610, 1606], 256],
+ 64661: [[1610, 1609], 256],
+ 64662: [[1610, 1610], 256],
+ 64663: [[1574, 1580], 256],
+ 64664: [[1574, 1581], 256],
+ 64665: [[1574, 1582], 256],
+ 64666: [[1574, 1605], 256],
+ 64667: [[1574, 1607], 256],
+ 64668: [[1576, 1580], 256],
+ 64669: [[1576, 1581], 256],
+ 64670: [[1576, 1582], 256],
+ 64671: [[1576, 1605], 256],
+ 64672: [[1576, 1607], 256],
+ 64673: [[1578, 1580], 256],
+ 64674: [[1578, 1581], 256],
+ 64675: [[1578, 1582], 256],
+ 64676: [[1578, 1605], 256],
+ 64677: [[1578, 1607], 256],
+ 64678: [[1579, 1605], 256],
+ 64679: [[1580, 1581], 256],
+ 64680: [[1580, 1605], 256],
+ 64681: [[1581, 1580], 256],
+ 64682: [[1581, 1605], 256],
+ 64683: [[1582, 1580], 256],
+ 64684: [[1582, 1605], 256],
+ 64685: [[1587, 1580], 256],
+ 64686: [[1587, 1581], 256],
+ 64687: [[1587, 1582], 256],
+ 64688: [[1587, 1605], 256],
+ 64689: [[1589, 1581], 256],
+ 64690: [[1589, 1582], 256],
+ 64691: [[1589, 1605], 256],
+ 64692: [[1590, 1580], 256],
+ 64693: [[1590, 1581], 256],
+ 64694: [[1590, 1582], 256],
+ 64695: [[1590, 1605], 256],
+ 64696: [[1591, 1581], 256],
+ 64697: [[1592, 1605], 256],
+ 64698: [[1593, 1580], 256],
+ 64699: [[1593, 1605], 256],
+ 64700: [[1594, 1580], 256],
+ 64701: [[1594, 1605], 256],
+ 64702: [[1601, 1580], 256],
+ 64703: [[1601, 1581], 256],
+ 64704: [[1601, 1582], 256],
+ 64705: [[1601, 1605], 256],
+ 64706: [[1602, 1581], 256],
+ 64707: [[1602, 1605], 256],
+ 64708: [[1603, 1580], 256],
+ 64709: [[1603, 1581], 256],
+ 64710: [[1603, 1582], 256],
+ 64711: [[1603, 1604], 256],
+ 64712: [[1603, 1605], 256],
+ 64713: [[1604, 1580], 256],
+ 64714: [[1604, 1581], 256],
+ 64715: [[1604, 1582], 256],
+ 64716: [[1604, 1605], 256],
+ 64717: [[1604, 1607], 256],
+ 64718: [[1605, 1580], 256],
+ 64719: [[1605, 1581], 256],
+ 64720: [[1605, 1582], 256],
+ 64721: [[1605, 1605], 256],
+ 64722: [[1606, 1580], 256],
+ 64723: [[1606, 1581], 256],
+ 64724: [[1606, 1582], 256],
+ 64725: [[1606, 1605], 256],
+ 64726: [[1606, 1607], 256],
+ 64727: [[1607, 1580], 256],
+ 64728: [[1607, 1605], 256],
+ 64729: [[1607, 1648], 256],
+ 64730: [[1610, 1580], 256],
+ 64731: [[1610, 1581], 256],
+ 64732: [[1610, 1582], 256],
+ 64733: [[1610, 1605], 256],
+ 64734: [[1610, 1607], 256],
+ 64735: [[1574, 1605], 256],
+ 64736: [[1574, 1607], 256],
+ 64737: [[1576, 1605], 256],
+ 64738: [[1576, 1607], 256],
+ 64739: [[1578, 1605], 256],
+ 64740: [[1578, 1607], 256],
+ 64741: [[1579, 1605], 256],
+ 64742: [[1579, 1607], 256],
+ 64743: [[1587, 1605], 256],
+ 64744: [[1587, 1607], 256],
+ 64745: [[1588, 1605], 256],
+ 64746: [[1588, 1607], 256],
+ 64747: [[1603, 1604], 256],
+ 64748: [[1603, 1605], 256],
+ 64749: [[1604, 1605], 256],
+ 64750: [[1606, 1605], 256],
+ 64751: [[1606, 1607], 256],
+ 64752: [[1610, 1605], 256],
+ 64753: [[1610, 1607], 256],
+ 64754: [[1600, 1614, 1617], 256],
+ 64755: [[1600, 1615, 1617], 256],
+ 64756: [[1600, 1616, 1617], 256],
+ 64757: [[1591, 1609], 256],
+ 64758: [[1591, 1610], 256],
+ 64759: [[1593, 1609], 256],
+ 64760: [[1593, 1610], 256],
+ 64761: [[1594, 1609], 256],
+ 64762: [[1594, 1610], 256],
+ 64763: [[1587, 1609], 256],
+ 64764: [[1587, 1610], 256],
+ 64765: [[1588, 1609], 256],
+ 64766: [[1588, 1610], 256],
+ 64767: [[1581, 1609], 256]
+ },
+ 64768: {
+ 64768: [[1581, 1610], 256],
+ 64769: [[1580, 1609], 256],
+ 64770: [[1580, 1610], 256],
+ 64771: [[1582, 1609], 256],
+ 64772: [[1582, 1610], 256],
+ 64773: [[1589, 1609], 256],
+ 64774: [[1589, 1610], 256],
+ 64775: [[1590, 1609], 256],
+ 64776: [[1590, 1610], 256],
+ 64777: [[1588, 1580], 256],
+ 64778: [[1588, 1581], 256],
+ 64779: [[1588, 1582], 256],
+ 64780: [[1588, 1605], 256],
+ 64781: [[1588, 1585], 256],
+ 64782: [[1587, 1585], 256],
+ 64783: [[1589, 1585], 256],
+ 64784: [[1590, 1585], 256],
+ 64785: [[1591, 1609], 256],
+ 64786: [[1591, 1610], 256],
+ 64787: [[1593, 1609], 256],
+ 64788: [[1593, 1610], 256],
+ 64789: [[1594, 1609], 256],
+ 64790: [[1594, 1610], 256],
+ 64791: [[1587, 1609], 256],
+ 64792: [[1587, 1610], 256],
+ 64793: [[1588, 1609], 256],
+ 64794: [[1588, 1610], 256],
+ 64795: [[1581, 1609], 256],
+ 64796: [[1581, 1610], 256],
+ 64797: [[1580, 1609], 256],
+ 64798: [[1580, 1610], 256],
+ 64799: [[1582, 1609], 256],
+ 64800: [[1582, 1610], 256],
+ 64801: [[1589, 1609], 256],
+ 64802: [[1589, 1610], 256],
+ 64803: [[1590, 1609], 256],
+ 64804: [[1590, 1610], 256],
+ 64805: [[1588, 1580], 256],
+ 64806: [[1588, 1581], 256],
+ 64807: [[1588, 1582], 256],
+ 64808: [[1588, 1605], 256],
+ 64809: [[1588, 1585], 256],
+ 64810: [[1587, 1585], 256],
+ 64811: [[1589, 1585], 256],
+ 64812: [[1590, 1585], 256],
+ 64813: [[1588, 1580], 256],
+ 64814: [[1588, 1581], 256],
+ 64815: [[1588, 1582], 256],
+ 64816: [[1588, 1605], 256],
+ 64817: [[1587, 1607], 256],
+ 64818: [[1588, 1607], 256],
+ 64819: [[1591, 1605], 256],
+ 64820: [[1587, 1580], 256],
+ 64821: [[1587, 1581], 256],
+ 64822: [[1587, 1582], 256],
+ 64823: [[1588, 1580], 256],
+ 64824: [[1588, 1581], 256],
+ 64825: [[1588, 1582], 256],
+ 64826: [[1591, 1605], 256],
+ 64827: [[1592, 1605], 256],
+ 64828: [[1575, 1611], 256],
+ 64829: [[1575, 1611], 256],
+ 64848: [[1578, 1580, 1605], 256],
+ 64849: [[1578, 1581, 1580], 256],
+ 64850: [[1578, 1581, 1580], 256],
+ 64851: [[1578, 1581, 1605], 256],
+ 64852: [[1578, 1582, 1605], 256],
+ 64853: [[1578, 1605, 1580], 256],
+ 64854: [[1578, 1605, 1581], 256],
+ 64855: [[1578, 1605, 1582], 256],
+ 64856: [[1580, 1605, 1581], 256],
+ 64857: [[1580, 1605, 1581], 256],
+ 64858: [[1581, 1605, 1610], 256],
+ 64859: [[1581, 1605, 1609], 256],
+ 64860: [[1587, 1581, 1580], 256],
+ 64861: [[1587, 1580, 1581], 256],
+ 64862: [[1587, 1580, 1609], 256],
+ 64863: [[1587, 1605, 1581], 256],
+ 64864: [[1587, 1605, 1581], 256],
+ 64865: [[1587, 1605, 1580], 256],
+ 64866: [[1587, 1605, 1605], 256],
+ 64867: [[1587, 1605, 1605], 256],
+ 64868: [[1589, 1581, 1581], 256],
+ 64869: [[1589, 1581, 1581], 256],
+ 64870: [[1589, 1605, 1605], 256],
+ 64871: [[1588, 1581, 1605], 256],
+ 64872: [[1588, 1581, 1605], 256],
+ 64873: [[1588, 1580, 1610], 256],
+ 64874: [[1588, 1605, 1582], 256],
+ 64875: [[1588, 1605, 1582], 256],
+ 64876: [[1588, 1605, 1605], 256],
+ 64877: [[1588, 1605, 1605], 256],
+ 64878: [[1590, 1581, 1609], 256],
+ 64879: [[1590, 1582, 1605], 256],
+ 64880: [[1590, 1582, 1605], 256],
+ 64881: [[1591, 1605, 1581], 256],
+ 64882: [[1591, 1605, 1581], 256],
+ 64883: [[1591, 1605, 1605], 256],
+ 64884: [[1591, 1605, 1610], 256],
+ 64885: [[1593, 1580, 1605], 256],
+ 64886: [[1593, 1605, 1605], 256],
+ 64887: [[1593, 1605, 1605], 256],
+ 64888: [[1593, 1605, 1609], 256],
+ 64889: [[1594, 1605, 1605], 256],
+ 64890: [[1594, 1605, 1610], 256],
+ 64891: [[1594, 1605, 1609], 256],
+ 64892: [[1601, 1582, 1605], 256],
+ 64893: [[1601, 1582, 1605], 256],
+ 64894: [[1602, 1605, 1581], 256],
+ 64895: [[1602, 1605, 1605], 256],
+ 64896: [[1604, 1581, 1605], 256],
+ 64897: [[1604, 1581, 1610], 256],
+ 64898: [[1604, 1581, 1609], 256],
+ 64899: [[1604, 1580, 1580], 256],
+ 64900: [[1604, 1580, 1580], 256],
+ 64901: [[1604, 1582, 1605], 256],
+ 64902: [[1604, 1582, 1605], 256],
+ 64903: [[1604, 1605, 1581], 256],
+ 64904: [[1604, 1605, 1581], 256],
+ 64905: [[1605, 1581, 1580], 256],
+ 64906: [[1605, 1581, 1605], 256],
+ 64907: [[1605, 1581, 1610], 256],
+ 64908: [[1605, 1580, 1581], 256],
+ 64909: [[1605, 1580, 1605], 256],
+ 64910: [[1605, 1582, 1580], 256],
+ 64911: [[1605, 1582, 1605], 256],
+ 64914: [[1605, 1580, 1582], 256],
+ 64915: [[1607, 1605, 1580], 256],
+ 64916: [[1607, 1605, 1605], 256],
+ 64917: [[1606, 1581, 1605], 256],
+ 64918: [[1606, 1581, 1609], 256],
+ 64919: [[1606, 1580, 1605], 256],
+ 64920: [[1606, 1580, 1605], 256],
+ 64921: [[1606, 1580, 1609], 256],
+ 64922: [[1606, 1605, 1610], 256],
+ 64923: [[1606, 1605, 1609], 256],
+ 64924: [[1610, 1605, 1605], 256],
+ 64925: [[1610, 1605, 1605], 256],
+ 64926: [[1576, 1582, 1610], 256],
+ 64927: [[1578, 1580, 1610], 256],
+ 64928: [[1578, 1580, 1609], 256],
+ 64929: [[1578, 1582, 1610], 256],
+ 64930: [[1578, 1582, 1609], 256],
+ 64931: [[1578, 1605, 1610], 256],
+ 64932: [[1578, 1605, 1609], 256],
+ 64933: [[1580, 1605, 1610], 256],
+ 64934: [[1580, 1581, 1609], 256],
+ 64935: [[1580, 1605, 1609], 256],
+ 64936: [[1587, 1582, 1609], 256],
+ 64937: [[1589, 1581, 1610], 256],
+ 64938: [[1588, 1581, 1610], 256],
+ 64939: [[1590, 1581, 1610], 256],
+ 64940: [[1604, 1580, 1610], 256],
+ 64941: [[1604, 1605, 1610], 256],
+ 64942: [[1610, 1581, 1610], 256],
+ 64943: [[1610, 1580, 1610], 256],
+ 64944: [[1610, 1605, 1610], 256],
+ 64945: [[1605, 1605, 1610], 256],
+ 64946: [[1602, 1605, 1610], 256],
+ 64947: [[1606, 1581, 1610], 256],
+ 64948: [[1602, 1605, 1581], 256],
+ 64949: [[1604, 1581, 1605], 256],
+ 64950: [[1593, 1605, 1610], 256],
+ 64951: [[1603, 1605, 1610], 256],
+ 64952: [[1606, 1580, 1581], 256],
+ 64953: [[1605, 1582, 1610], 256],
+ 64954: [[1604, 1580, 1605], 256],
+ 64955: [[1603, 1605, 1605], 256],
+ 64956: [[1604, 1580, 1605], 256],
+ 64957: [[1606, 1580, 1581], 256],
+ 64958: [[1580, 1581, 1610], 256],
+ 64959: [[1581, 1580, 1610], 256],
+ 64960: [[1605, 1580, 1610], 256],
+ 64961: [[1601, 1605, 1610], 256],
+ 64962: [[1576, 1581, 1610], 256],
+ 64963: [[1603, 1605, 1605], 256],
+ 64964: [[1593, 1580, 1605], 256],
+ 64965: [[1589, 1605, 1605], 256],
+ 64966: [[1587, 1582, 1610], 256],
+ 64967: [[1606, 1580, 1610], 256],
+ 65008: [[1589, 1604, 1746], 256],
+ 65009: [[1602, 1604, 1746], 256],
+ 65010: [[1575, 1604, 1604, 1607], 256],
+ 65011: [[1575, 1603, 1576, 1585], 256],
+ 65012: [[1605, 1581, 1605, 1583], 256],
+ 65013: [[1589, 1604, 1593, 1605], 256],
+ 65014: [[1585, 1587, 1608, 1604], 256],
+ 65015: [[1593, 1604, 1610, 1607], 256],
+ 65016: [[1608, 1587, 1604, 1605], 256],
+ 65017: [[1589, 1604, 1609], 256],
+ 65018: [
+ [
+ 1589,
+ 1604,
+ 1609,
+ 32,
+ 1575,
+ 1604,
+ 1604,
+ 1607,
+ 32,
+ 1593,
+ 1604,
+ 1610,
+ 1607,
+ 32,
+ 1608,
+ 1587,
+ 1604,
+ 1605
+ ],
+ 256
+ ],
+ 65019: [[1580, 1604, 32, 1580, 1604, 1575, 1604, 1607], 256],
+ 65020: [[1585, 1740, 1575, 1604], 256]
+ },
+ 65024: {
+ 65040: [[44], 256],
+ 65041: [[12289], 256],
+ 65042: [[12290], 256],
+ 65043: [[58], 256],
+ 65044: [[59], 256],
+ 65045: [[33], 256],
+ 65046: [[63], 256],
+ 65047: [[12310], 256],
+ 65048: [[12311], 256],
+ 65049: [[8230], 256],
+ 65056: [, 230],
+ 65057: [, 230],
+ 65058: [, 230],
+ 65059: [, 230],
+ 65060: [, 230],
+ 65061: [, 230],
+ 65062: [, 230],
+ 65072: [[8229], 256],
+ 65073: [[8212], 256],
+ 65074: [[8211], 256],
+ 65075: [[95], 256],
+ 65076: [[95], 256],
+ 65077: [[40], 256],
+ 65078: [[41], 256],
+ 65079: [[123], 256],
+ 65080: [[125], 256],
+ 65081: [[12308], 256],
+ 65082: [[12309], 256],
+ 65083: [[12304], 256],
+ 65084: [[12305], 256],
+ 65085: [[12298], 256],
+ 65086: [[12299], 256],
+ 65087: [[12296], 256],
+ 65088: [[12297], 256],
+ 65089: [[12300], 256],
+ 65090: [[12301], 256],
+ 65091: [[12302], 256],
+ 65092: [[12303], 256],
+ 65095: [[91], 256],
+ 65096: [[93], 256],
+ 65097: [[8254], 256],
+ 65098: [[8254], 256],
+ 65099: [[8254], 256],
+ 65100: [[8254], 256],
+ 65101: [[95], 256],
+ 65102: [[95], 256],
+ 65103: [[95], 256],
+ 65104: [[44], 256],
+ 65105: [[12289], 256],
+ 65106: [[46], 256],
+ 65108: [[59], 256],
+ 65109: [[58], 256],
+ 65110: [[63], 256],
+ 65111: [[33], 256],
+ 65112: [[8212], 256],
+ 65113: [[40], 256],
+ 65114: [[41], 256],
+ 65115: [[123], 256],
+ 65116: [[125], 256],
+ 65117: [[12308], 256],
+ 65118: [[12309], 256],
+ 65119: [[35], 256],
+ 65120: [[38], 256],
+ 65121: [[42], 256],
+ 65122: [[43], 256],
+ 65123: [[45], 256],
+ 65124: [[60], 256],
+ 65125: [[62], 256],
+ 65126: [[61], 256],
+ 65128: [[92], 256],
+ 65129: [[36], 256],
+ 65130: [[37], 256],
+ 65131: [[64], 256],
+ 65136: [[32, 1611], 256],
+ 65137: [[1600, 1611], 256],
+ 65138: [[32, 1612], 256],
+ 65140: [[32, 1613], 256],
+ 65142: [[32, 1614], 256],
+ 65143: [[1600, 1614], 256],
+ 65144: [[32, 1615], 256],
+ 65145: [[1600, 1615], 256],
+ 65146: [[32, 1616], 256],
+ 65147: [[1600, 1616], 256],
+ 65148: [[32, 1617], 256],
+ 65149: [[1600, 1617], 256],
+ 65150: [[32, 1618], 256],
+ 65151: [[1600, 1618], 256],
+ 65152: [[1569], 256],
+ 65153: [[1570], 256],
+ 65154: [[1570], 256],
+ 65155: [[1571], 256],
+ 65156: [[1571], 256],
+ 65157: [[1572], 256],
+ 65158: [[1572], 256],
+ 65159: [[1573], 256],
+ 65160: [[1573], 256],
+ 65161: [[1574], 256],
+ 65162: [[1574], 256],
+ 65163: [[1574], 256],
+ 65164: [[1574], 256],
+ 65165: [[1575], 256],
+ 65166: [[1575], 256],
+ 65167: [[1576], 256],
+ 65168: [[1576], 256],
+ 65169: [[1576], 256],
+ 65170: [[1576], 256],
+ 65171: [[1577], 256],
+ 65172: [[1577], 256],
+ 65173: [[1578], 256],
+ 65174: [[1578], 256],
+ 65175: [[1578], 256],
+ 65176: [[1578], 256],
+ 65177: [[1579], 256],
+ 65178: [[1579], 256],
+ 65179: [[1579], 256],
+ 65180: [[1579], 256],
+ 65181: [[1580], 256],
+ 65182: [[1580], 256],
+ 65183: [[1580], 256],
+ 65184: [[1580], 256],
+ 65185: [[1581], 256],
+ 65186: [[1581], 256],
+ 65187: [[1581], 256],
+ 65188: [[1581], 256],
+ 65189: [[1582], 256],
+ 65190: [[1582], 256],
+ 65191: [[1582], 256],
+ 65192: [[1582], 256],
+ 65193: [[1583], 256],
+ 65194: [[1583], 256],
+ 65195: [[1584], 256],
+ 65196: [[1584], 256],
+ 65197: [[1585], 256],
+ 65198: [[1585], 256],
+ 65199: [[1586], 256],
+ 65200: [[1586], 256],
+ 65201: [[1587], 256],
+ 65202: [[1587], 256],
+ 65203: [[1587], 256],
+ 65204: [[1587], 256],
+ 65205: [[1588], 256],
+ 65206: [[1588], 256],
+ 65207: [[1588], 256],
+ 65208: [[1588], 256],
+ 65209: [[1589], 256],
+ 65210: [[1589], 256],
+ 65211: [[1589], 256],
+ 65212: [[1589], 256],
+ 65213: [[1590], 256],
+ 65214: [[1590], 256],
+ 65215: [[1590], 256],
+ 65216: [[1590], 256],
+ 65217: [[1591], 256],
+ 65218: [[1591], 256],
+ 65219: [[1591], 256],
+ 65220: [[1591], 256],
+ 65221: [[1592], 256],
+ 65222: [[1592], 256],
+ 65223: [[1592], 256],
+ 65224: [[1592], 256],
+ 65225: [[1593], 256],
+ 65226: [[1593], 256],
+ 65227: [[1593], 256],
+ 65228: [[1593], 256],
+ 65229: [[1594], 256],
+ 65230: [[1594], 256],
+ 65231: [[1594], 256],
+ 65232: [[1594], 256],
+ 65233: [[1601], 256],
+ 65234: [[1601], 256],
+ 65235: [[1601], 256],
+ 65236: [[1601], 256],
+ 65237: [[1602], 256],
+ 65238: [[1602], 256],
+ 65239: [[1602], 256],
+ 65240: [[1602], 256],
+ 65241: [[1603], 256],
+ 65242: [[1603], 256],
+ 65243: [[1603], 256],
+ 65244: [[1603], 256],
+ 65245: [[1604], 256],
+ 65246: [[1604], 256],
+ 65247: [[1604], 256],
+ 65248: [[1604], 256],
+ 65249: [[1605], 256],
+ 65250: [[1605], 256],
+ 65251: [[1605], 256],
+ 65252: [[1605], 256],
+ 65253: [[1606], 256],
+ 65254: [[1606], 256],
+ 65255: [[1606], 256],
+ 65256: [[1606], 256],
+ 65257: [[1607], 256],
+ 65258: [[1607], 256],
+ 65259: [[1607], 256],
+ 65260: [[1607], 256],
+ 65261: [[1608], 256],
+ 65262: [[1608], 256],
+ 65263: [[1609], 256],
+ 65264: [[1609], 256],
+ 65265: [[1610], 256],
+ 65266: [[1610], 256],
+ 65267: [[1610], 256],
+ 65268: [[1610], 256],
+ 65269: [[1604, 1570], 256],
+ 65270: [[1604, 1570], 256],
+ 65271: [[1604, 1571], 256],
+ 65272: [[1604, 1571], 256],
+ 65273: [[1604, 1573], 256],
+ 65274: [[1604, 1573], 256],
+ 65275: [[1604, 1575], 256],
+ 65276: [[1604, 1575], 256]
+ },
+ 65280: {
+ 65281: [[33], 256],
+ 65282: [[34], 256],
+ 65283: [[35], 256],
+ 65284: [[36], 256],
+ 65285: [[37], 256],
+ 65286: [[38], 256],
+ 65287: [[39], 256],
+ 65288: [[40], 256],
+ 65289: [[41], 256],
+ 65290: [[42], 256],
+ 65291: [[43], 256],
+ 65292: [[44], 256],
+ 65293: [[45], 256],
+ 65294: [[46], 256],
+ 65295: [[47], 256],
+ 65296: [[48], 256],
+ 65297: [[49], 256],
+ 65298: [[50], 256],
+ 65299: [[51], 256],
+ 65300: [[52], 256],
+ 65301: [[53], 256],
+ 65302: [[54], 256],
+ 65303: [[55], 256],
+ 65304: [[56], 256],
+ 65305: [[57], 256],
+ 65306: [[58], 256],
+ 65307: [[59], 256],
+ 65308: [[60], 256],
+ 65309: [[61], 256],
+ 65310: [[62], 256],
+ 65311: [[63], 256],
+ 65312: [[64], 256],
+ 65313: [[65], 256],
+ 65314: [[66], 256],
+ 65315: [[67], 256],
+ 65316: [[68], 256],
+ 65317: [[69], 256],
+ 65318: [[70], 256],
+ 65319: [[71], 256],
+ 65320: [[72], 256],
+ 65321: [[73], 256],
+ 65322: [[74], 256],
+ 65323: [[75], 256],
+ 65324: [[76], 256],
+ 65325: [[77], 256],
+ 65326: [[78], 256],
+ 65327: [[79], 256],
+ 65328: [[80], 256],
+ 65329: [[81], 256],
+ 65330: [[82], 256],
+ 65331: [[83], 256],
+ 65332: [[84], 256],
+ 65333: [[85], 256],
+ 65334: [[86], 256],
+ 65335: [[87], 256],
+ 65336: [[88], 256],
+ 65337: [[89], 256],
+ 65338: [[90], 256],
+ 65339: [[91], 256],
+ 65340: [[92], 256],
+ 65341: [[93], 256],
+ 65342: [[94], 256],
+ 65343: [[95], 256],
+ 65344: [[96], 256],
+ 65345: [[97], 256],
+ 65346: [[98], 256],
+ 65347: [[99], 256],
+ 65348: [[100], 256],
+ 65349: [[101], 256],
+ 65350: [[102], 256],
+ 65351: [[103], 256],
+ 65352: [[104], 256],
+ 65353: [[105], 256],
+ 65354: [[106], 256],
+ 65355: [[107], 256],
+ 65356: [[108], 256],
+ 65357: [[109], 256],
+ 65358: [[110], 256],
+ 65359: [[111], 256],
+ 65360: [[112], 256],
+ 65361: [[113], 256],
+ 65362: [[114], 256],
+ 65363: [[115], 256],
+ 65364: [[116], 256],
+ 65365: [[117], 256],
+ 65366: [[118], 256],
+ 65367: [[119], 256],
+ 65368: [[120], 256],
+ 65369: [[121], 256],
+ 65370: [[122], 256],
+ 65371: [[123], 256],
+ 65372: [[124], 256],
+ 65373: [[125], 256],
+ 65374: [[126], 256],
+ 65375: [[10629], 256],
+ 65376: [[10630], 256],
+ 65377: [[12290], 256],
+ 65378: [[12300], 256],
+ 65379: [[12301], 256],
+ 65380: [[12289], 256],
+ 65381: [[12539], 256],
+ 65382: [[12530], 256],
+ 65383: [[12449], 256],
+ 65384: [[12451], 256],
+ 65385: [[12453], 256],
+ 65386: [[12455], 256],
+ 65387: [[12457], 256],
+ 65388: [[12515], 256],
+ 65389: [[12517], 256],
+ 65390: [[12519], 256],
+ 65391: [[12483], 256],
+ 65392: [[12540], 256],
+ 65393: [[12450], 256],
+ 65394: [[12452], 256],
+ 65395: [[12454], 256],
+ 65396: [[12456], 256],
+ 65397: [[12458], 256],
+ 65398: [[12459], 256],
+ 65399: [[12461], 256],
+ 65400: [[12463], 256],
+ 65401: [[12465], 256],
+ 65402: [[12467], 256],
+ 65403: [[12469], 256],
+ 65404: [[12471], 256],
+ 65405: [[12473], 256],
+ 65406: [[12475], 256],
+ 65407: [[12477], 256],
+ 65408: [[12479], 256],
+ 65409: [[12481], 256],
+ 65410: [[12484], 256],
+ 65411: [[12486], 256],
+ 65412: [[12488], 256],
+ 65413: [[12490], 256],
+ 65414: [[12491], 256],
+ 65415: [[12492], 256],
+ 65416: [[12493], 256],
+ 65417: [[12494], 256],
+ 65418: [[12495], 256],
+ 65419: [[12498], 256],
+ 65420: [[12501], 256],
+ 65421: [[12504], 256],
+ 65422: [[12507], 256],
+ 65423: [[12510], 256],
+ 65424: [[12511], 256],
+ 65425: [[12512], 256],
+ 65426: [[12513], 256],
+ 65427: [[12514], 256],
+ 65428: [[12516], 256],
+ 65429: [[12518], 256],
+ 65430: [[12520], 256],
+ 65431: [[12521], 256],
+ 65432: [[12522], 256],
+ 65433: [[12523], 256],
+ 65434: [[12524], 256],
+ 65435: [[12525], 256],
+ 65436: [[12527], 256],
+ 65437: [[12531], 256],
+ 65438: [[12441], 256],
+ 65439: [[12442], 256],
+ 65440: [[12644], 256],
+ 65441: [[12593], 256],
+ 65442: [[12594], 256],
+ 65443: [[12595], 256],
+ 65444: [[12596], 256],
+ 65445: [[12597], 256],
+ 65446: [[12598], 256],
+ 65447: [[12599], 256],
+ 65448: [[12600], 256],
+ 65449: [[12601], 256],
+ 65450: [[12602], 256],
+ 65451: [[12603], 256],
+ 65452: [[12604], 256],
+ 65453: [[12605], 256],
+ 65454: [[12606], 256],
+ 65455: [[12607], 256],
+ 65456: [[12608], 256],
+ 65457: [[12609], 256],
+ 65458: [[12610], 256],
+ 65459: [[12611], 256],
+ 65460: [[12612], 256],
+ 65461: [[12613], 256],
+ 65462: [[12614], 256],
+ 65463: [[12615], 256],
+ 65464: [[12616], 256],
+ 65465: [[12617], 256],
+ 65466: [[12618], 256],
+ 65467: [[12619], 256],
+ 65468: [[12620], 256],
+ 65469: [[12621], 256],
+ 65470: [[12622], 256],
+ 65474: [[12623], 256],
+ 65475: [[12624], 256],
+ 65476: [[12625], 256],
+ 65477: [[12626], 256],
+ 65478: [[12627], 256],
+ 65479: [[12628], 256],
+ 65482: [[12629], 256],
+ 65483: [[12630], 256],
+ 65484: [[12631], 256],
+ 65485: [[12632], 256],
+ 65486: [[12633], 256],
+ 65487: [[12634], 256],
+ 65490: [[12635], 256],
+ 65491: [[12636], 256],
+ 65492: [[12637], 256],
+ 65493: [[12638], 256],
+ 65494: [[12639], 256],
+ 65495: [[12640], 256],
+ 65498: [[12641], 256],
+ 65499: [[12642], 256],
+ 65500: [[12643], 256],
+ 65504: [[162], 256],
+ 65505: [[163], 256],
+ 65506: [[172], 256],
+ 65507: [[175], 256],
+ 65508: [[166], 256],
+ 65509: [[165], 256],
+ 65510: [[8361], 256],
+ 65512: [[9474], 256],
+ 65513: [[8592], 256],
+ 65514: [[8593], 256],
+ 65515: [[8594], 256],
+ 65516: [[8595], 256],
+ 65517: [[9632], 256],
+ 65518: [[9675], 256]
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/normalize/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/normalize/implement.js
new file mode 100644
index 0000000000..ad11739e4f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/normalize/implement.js
@@ -0,0 +1,9 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(String.prototype, "normalize",
+ { value: require("./shim"),
+configurable: true,
+enumerable: false,
+ writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/normalize/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/normalize/index.js
new file mode 100644
index 0000000000..7e91b08ba2
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/normalize/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? String.prototype.normalize
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/normalize/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/normalize/is-implemented.js
new file mode 100644
index 0000000000..01b48a9d61
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/normalize/is-implemented.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var str = "æøåäüö";
+
+module.exports = function () {
+ if (typeof str.normalize !== "function") return false;
+ return str.normalize("NFKD") === "æøåäüö";
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/normalize/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/normalize/shim.js
new file mode 100644
index 0000000000..aba37f55d5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/normalize/shim.js
@@ -0,0 +1,317 @@
+/* eslint no-bitwise: "off", max-statements: "off", max-lines: "off" */
+
+// Taken from: https://github.com/walling/unorm/blob/master/lib/unorm.js
+
+/*
+ * UnicodeNormalizer 1.0.0
+ * Copyright (c) 2008 Matsuza
+ * Dual licensed under the MIT (MIT-LICENSE.txt) and
+ * GPL (GPL-LICENSE.txt) licenses.
+ * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
+ * $Rev: 13309 $
+*/
+
+"use strict";
+
+var primitiveSet = require("../../../object/primitive-set")
+ , validValue = require("../../../object/valid-value")
+ , data = require("./_data");
+
+var floor = Math.floor
+ , forms = primitiveSet("NFC", "NFD", "NFKC", "NFKD")
+ , DEFAULT_FEATURE = [null, 0, {}]
+ , CACHE_THRESHOLD = 10
+ , SBase = 0xac00
+ , LBase = 0x1100
+ , VBase = 0x1161
+ , TBase = 0x11a7
+ , LCount = 19
+ , VCount = 21
+ , TCount = 28
+ , NCount = VCount * TCount
+ , SCount = LCount * NCount
+ , UChar
+ , cache = {}
+ , cacheCounter = []
+ , fromCache
+ , fromData
+ , fromCpOnly
+ , fromRuleBasedJamo
+ , fromCpFilter
+ , strategies
+ , UCharIterator
+ , RecursDecompIterator
+ , DecompIterator
+ , CompIterator
+ , createIterator
+ , normalize;
+
+UChar = function (cp, feature) {
+ this.codepoint = cp;
+ this.feature = feature;
+};
+
+// Strategies
+(function () {
+ for (var i = 0; i <= 0xff; ++i) cacheCounter[i] = 0;
+}());
+
+fromCache = function (nextStep, cp, needFeature) {
+ var ret = cache[cp];
+ if (!ret) {
+ ret = nextStep(cp, needFeature);
+ if (Boolean(ret.feature) && ++cacheCounter[(cp >> 8) & 0xff] > CACHE_THRESHOLD) {
+ cache[cp] = ret;
+ }
+ }
+ return ret;
+};
+
+fromData = function (next, cp) {
+ var hash = cp & 0xff00, dunit = UChar.udata[hash] || {}, feature = dunit[cp];
+ return feature ? new UChar(cp, feature) : new UChar(cp, DEFAULT_FEATURE);
+};
+fromCpOnly = function (next, cp, needFeature) {
+ return needFeature ? next(cp, needFeature) : new UChar(cp, null);
+};
+
+fromRuleBasedJamo = function (next, cp, needFeature) {
+ var char, base, i, arr, SIndex, TIndex, feature, j;
+ if (cp < LBase || (LBase + LCount <= cp && cp < SBase) || SBase + SCount < cp) {
+ return next(cp, needFeature);
+ }
+ if (LBase <= cp && cp < LBase + LCount) {
+ char = {};
+ base = (cp - LBase) * VCount;
+ for (i = 0; i < VCount; ++i) {
+ char[VBase + i] = SBase + TCount * (i + base);
+ }
+ arr = new Array(3);
+ arr[2] = char;
+ return new UChar(cp, arr);
+ }
+
+ SIndex = cp - SBase;
+ TIndex = SIndex % TCount;
+ feature = [];
+ if (TIndex === 0) {
+ feature[0] = [LBase + floor(SIndex / NCount), VBase + floor(SIndex % NCount / TCount)];
+ feature[2] = {};
+ for (j = 1; j < TCount; ++j) {
+ feature[2][TBase + j] = cp + j;
+ }
+ } else {
+ feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
+ }
+ return new UChar(cp, feature);
+};
+
+fromCpFilter = function (next, cp, needFeature) {
+ return cp < 60 || (cp > 13311 && cp < 42607)
+ ? new UChar(cp, DEFAULT_FEATURE)
+ : next(cp, needFeature);
+};
+
+strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
+
+UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
+ return function (cp, needFeature) {
+ return strategy(next, cp, needFeature);
+ };
+}, null);
+
+UChar.isHighSurrogate = function (cp) {
+ return cp >= 0xd800 && cp <= 0xdbff;
+};
+UChar.isLowSurrogate = function (cp) {
+ return cp >= 0xdc00 && cp <= 0xdfff;
+};
+
+UChar.prototype.prepFeature = function () {
+ if (!this.feature) {
+ this.feature = UChar.fromCharCode(this.codepoint, true).feature;
+ }
+};
+
+UChar.prototype.toString = function () {
+ var num;
+ if (this.codepoint < 0x10000) return String.fromCharCode(this.codepoint);
+ num = this.codepoint - 0x10000;
+ return String.fromCharCode(floor(num / 0x400) + 0xd800, num % 0x400 + 0xdc00);
+};
+
+UChar.prototype.getDecomp = function () {
+ this.prepFeature();
+ return this.feature[0] || null;
+};
+
+UChar.prototype.isCompatibility = function () {
+ this.prepFeature();
+ return Boolean(this.feature[1]) && this.feature[1] & (1 << 8);
+};
+UChar.prototype.isExclude = function () {
+ this.prepFeature();
+ return Boolean(this.feature[1]) && this.feature[1] & (1 << 9);
+};
+UChar.prototype.getCanonicalClass = function () {
+ this.prepFeature();
+ return this.feature[1] ? this.feature[1] & 0xff : 0;
+};
+UChar.prototype.getComposite = function (following) {
+ var cp;
+ this.prepFeature();
+ if (!this.feature[2]) return null;
+ cp = this.feature[2][following.codepoint];
+ return cp ? UChar.fromCharCode(cp) : null;
+};
+
+UCharIterator = function (str) {
+ this.str = str;
+ this.cursor = 0;
+};
+UCharIterator.prototype.next = function () {
+ if (Boolean(this.str) && this.cursor < this.str.length) {
+ var cp = this.str.charCodeAt(this.cursor++), d;
+ if (
+ UChar.isHighSurrogate(cp) &&
+ this.cursor < this.str.length &&
+ UChar.isLowSurrogate(d = this.str.charCodeAt(this.cursor))
+ ) {
+ cp = (cp - 0xd800) * 0x400 + (d - 0xdc00) + 0x10000;
+ ++this.cursor;
+ }
+ return UChar.fromCharCode(cp);
+ }
+ this.str = null;
+ return null;
+};
+
+RecursDecompIterator = function (it, cano) {
+ this.it = it;
+ this.canonical = cano;
+ this.resBuf = [];
+};
+
+RecursDecompIterator.prototype.next = function () {
+ var recursiveDecomp, uchar;
+ recursiveDecomp = function (cano, ucharLoc) {
+ var decomp = ucharLoc.getDecomp(), ret, i, a, j;
+ if (Boolean(decomp) && !(cano && ucharLoc.isCompatibility())) {
+ ret = [];
+ for (i = 0; i < decomp.length; ++i) {
+ a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
+ // Ret.concat(a); //<-why does not this work?
+ // following block is a workaround.
+ for (j = 0; j < a.length; ++j) ret.push(a[j]);
+ }
+ return ret;
+ }
+ return [ucharLoc];
+ };
+ if (this.resBuf.length === 0) {
+ uchar = this.it.next();
+ if (!uchar) return null;
+ this.resBuf = recursiveDecomp(this.canonical, uchar);
+ }
+ return this.resBuf.shift();
+};
+
+DecompIterator = function (it) {
+ this.it = it;
+ this.resBuf = [];
+};
+
+DecompIterator.prototype.next = function () {
+ var cc, uchar, inspt, uchar2, cc2;
+ if (this.resBuf.length === 0) {
+ do {
+ uchar = this.it.next();
+ if (!uchar) break;
+ cc = uchar.getCanonicalClass();
+ inspt = this.resBuf.length;
+ if (cc !== 0) {
+ for (inspt; inspt > 0; --inspt) {
+ uchar2 = this.resBuf[inspt - 1];
+ cc2 = uchar2.getCanonicalClass();
+ // eslint-disable-next-line max-depth
+ if (cc2 <= cc) break;
+ }
+ }
+ this.resBuf.splice(inspt, 0, uchar);
+ } while (cc !== 0);
+ }
+ return this.resBuf.shift();
+};
+
+CompIterator = function (it) {
+ this.it = it;
+ this.procBuf = [];
+ this.resBuf = [];
+ this.lastClass = null;
+};
+
+CompIterator.prototype.next = function () {
+ var uchar, starter, composite, cc;
+ while (this.resBuf.length === 0) {
+ uchar = this.it.next();
+ if (!uchar) {
+ this.resBuf = this.procBuf;
+ this.procBuf = [];
+ break;
+ }
+ if (this.procBuf.length === 0) {
+ this.lastClass = uchar.getCanonicalClass();
+ this.procBuf.push(uchar);
+ } else {
+ starter = this.procBuf[0];
+ composite = starter.getComposite(uchar);
+ cc = uchar.getCanonicalClass();
+ if (Boolean(composite) && (this.lastClass < cc || this.lastClass === 0)) {
+ this.procBuf[0] = composite;
+ } else {
+ if (cc === 0) {
+ this.resBuf = this.procBuf;
+ this.procBuf = [];
+ }
+ this.lastClass = cc;
+ this.procBuf.push(uchar);
+ }
+ }
+ }
+ return this.resBuf.shift();
+};
+
+createIterator = function (mode, str) {
+ switch (mode) {
+ case "NFD":
+ return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
+ case "NFKD":
+ return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
+ case "NFC":
+ return new CompIterator(
+ new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true))
+ );
+ case "NFKC":
+ return new CompIterator(
+ new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false))
+ );
+ default:
+ throw new Error(mode + " is invalid");
+ }
+};
+normalize = function (mode, str) {
+ var it = createIterator(mode, str), ret = "", uchar;
+ while ((uchar = it.next())) ret += uchar.toString();
+ return ret;
+};
+
+/* Unicode data */
+UChar.udata = data;
+
+module.exports = function (/* Form*/) {
+ var str = String(validValue(this)), form = arguments[0];
+ if (form === undefined) form = "NFC";
+ else form = String(form);
+ if (!forms[form]) throw new RangeError("Invalid normalization form: " + form);
+ return normalize(form, str);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/pad.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/pad.js
new file mode 100644
index 0000000000..159f89519e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/pad.js
@@ -0,0 +1,18 @@
+"use strict";
+
+var toInteger = require("../../number/to-integer")
+ , value = require("../../object/valid-value")
+ , repeat = require("./repeat")
+
+ , abs = Math.abs, max = Math.max;
+
+module.exports = function (fill/*, length*/) {
+ var self = String(value(this))
+ , sLength = self.length
+ , length = arguments[1];
+
+ length = isNaN(length) ? 1 : toInteger(length);
+ fill = repeat.call(String(fill), abs(length));
+ if (length >= 0) return fill.slice(0, max(0, length - sLength)) + self;
+ return self + ((sLength + length) >= 0 ? "" : fill.slice(length + sLength));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/plain-replace-all.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/plain-replace-all.js
new file mode 100644
index 0000000000..9334fe09d3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/plain-replace-all.js
@@ -0,0 +1,16 @@
+"use strict";
+
+var value = require("../../object/valid-value");
+
+module.exports = function (search, replace) {
+ var index, pos = 0, str = String(value(this)), sl, rl;
+ search = String(search);
+ replace = String(replace);
+ sl = search.length;
+ rl = replace.length;
+ while ((index = str.indexOf(search, pos)) !== -1) {
+ str = str.slice(0, index) + replace + str.slice(index + sl);
+ pos = index + rl;
+ }
+ return str;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/plain-replace.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/plain-replace.js
new file mode 100644
index 0000000000..f24f5215cb
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/plain-replace.js
@@ -0,0 +1,10 @@
+"use strict";
+
+var indexOf = String.prototype.indexOf, slice = String.prototype.slice;
+
+module.exports = function (search, replace) {
+ var index = indexOf.call(this, search);
+ if (index === -1) return String(this);
+ return slice.call(this, 0, index) + replace +
+ slice.call(this, index + String(search).length);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/repeat/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/repeat/implement.js
new file mode 100644
index 0000000000..7066b7b49b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/repeat/implement.js
@@ -0,0 +1,9 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(String.prototype, "repeat",
+ { value: require("./shim"),
+configurable: true,
+enumerable: false,
+ writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/repeat/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/repeat/index.js
new file mode 100644
index 0000000000..99d44b2ef0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/repeat/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? String.prototype.repeat
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/repeat/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/repeat/is-implemented.js
new file mode 100644
index 0000000000..e8e02409c3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/repeat/is-implemented.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var str = "foo";
+
+module.exports = function () {
+ if (typeof str.repeat !== "function") return false;
+ return str.repeat(2) === "foofoo";
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/repeat/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/repeat/shim.js
new file mode 100644
index 0000000000..ac259a83b6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/repeat/shim.js
@@ -0,0 +1,24 @@
+// Thanks
+// @rauchma http://www.2ality.com/2014/01/efficient-string-repeat.html
+// @mathiasbynens https://github.com/mathiasbynens/String.prototype.repeat/blob/4a4b567def/repeat.js
+
+"use strict";
+
+var value = require("../../../object/valid-value")
+ , toInteger = require("../../../number/to-integer");
+
+module.exports = function (count) {
+ var str = String(value(this)), result;
+ count = toInteger(count);
+ if (count < 0) throw new RangeError("Count must be >= 0");
+ if (!isFinite(count)) throw new RangeError("Count must be < ∞");
+
+ result = "";
+ while (count) {
+ if (count % 2) result += str;
+ if (count > 1) str += str;
+ // eslint-disable-next-line no-bitwise
+ count >>= 1;
+ }
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/starts-with/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/starts-with/implement.js
new file mode 100644
index 0000000000..11613da22f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/starts-with/implement.js
@@ -0,0 +1,9 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(String.prototype, "startsWith",
+ { value: require("./shim"),
+configurable: true,
+enumerable: false,
+ writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/starts-with/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/starts-with/index.js
new file mode 100644
index 0000000000..9a6c3743d9
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/starts-with/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? String.prototype.startsWith
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/starts-with/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/starts-with/is-implemented.js
new file mode 100644
index 0000000000..f6b6e2960b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/starts-with/is-implemented.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var str = "razdwatrzy";
+
+module.exports = function () {
+ if (typeof str.startsWith !== "function") return false;
+ return (str.startsWith("trzy") === false) &&
+ (str.startsWith("raz") === true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/starts-with/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/starts-with/shim.js
new file mode 100644
index 0000000000..d455477997
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/starts-with/shim.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var value = require("../../../object/valid-value")
+ , toInteger = require("../../../number/to-integer")
+
+ , max = Math.max, min = Math.min;
+
+module.exports = function (searchString/*, position*/) {
+ var start, self = String(value(this));
+ start = min(max(toInteger(arguments[1]), 0), self.length);
+ return self.indexOf(searchString, start) === start;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/#/uncapitalize.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/uncapitalize.js
new file mode 100644
index 0000000000..202dbb7386
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/#/uncapitalize.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var ensureStringifiable = require("../../object/validate-stringifiable-value");
+
+module.exports = function () {
+ var str = ensureStringifiable(this);
+ return str.charAt(0).toLowerCase() + str.slice(1);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/format-method.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/format-method.js
new file mode 100644
index 0000000000..28956fea21
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/format-method.js
@@ -0,0 +1,27 @@
+"use strict";
+
+var isCallable = require("../object/is-callable")
+ , value = require("../object/valid-value")
+ , call = Function.prototype.call;
+
+module.exports = function (fmap) {
+ fmap = Object(value(fmap));
+ return function (pattern) {
+ var context = this;
+ value(context);
+ pattern = String(pattern);
+ return pattern.replace(/%([a-zA-Z]+)|\\([\u0000-\uffff])/g, function (
+ match,
+ token,
+ escapeChar
+ ) {
+ var t, result;
+ if (escapeChar) return escapeChar;
+ t = token;
+ while (t && !(result = fmap[t])) t = t.slice(0, -1);
+ if (!result) return match;
+ if (isCallable(result)) result = call.call(result, context);
+ return result + token.slice(t.length);
+ });
+ };
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/from-code-point/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/from-code-point/implement.js
new file mode 100644
index 0000000000..4f815d6be1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/from-code-point/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(String, "fromCodePoint", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/from-code-point/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/from-code-point/index.js
new file mode 100644
index 0000000000..d5a8112216
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/from-code-point/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? String.fromCodePoint
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/from-code-point/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/from-code-point/is-implemented.js
new file mode 100644
index 0000000000..e6ccfa7fa7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/from-code-point/is-implemented.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function () {
+ var fromCodePoint = String.fromCodePoint;
+ if (typeof fromCodePoint !== "function") return false;
+ return fromCodePoint(0x1D306, 0x61, 0x1D307) === "\ud834\udf06a\ud834\udf07";
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/from-code-point/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/from-code-point/shim.js
new file mode 100644
index 0000000000..55824f5730
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/from-code-point/shim.js
@@ -0,0 +1,37 @@
+// Based on:
+// http://norbertlindenberg.com/2012/05/ecmascript-supplementary-characters/
+// and:
+// https://github.com/mathiasbynens/String.fromCodePoint/blob/master
+// /fromcodepoint.js
+
+"use strict";
+
+var floor = Math.floor, fromCharCode = String.fromCharCode;
+
+// eslint-disable-next-line no-unused-vars
+module.exports = function (codePoint1 /*, …codePoints*/) {
+ var chars = [], length = arguments.length, i, codePoint, result = "";
+ for (i = 0; i < length; ++i) {
+ codePoint = Number(arguments[i]);
+ if (
+ !isFinite(codePoint) ||
+ codePoint < 0 ||
+ codePoint > 0x10ffff ||
+ floor(codePoint) !== codePoint
+ ) {
+ throw new RangeError("Invalid code point " + codePoint);
+ }
+
+ if (codePoint < 0x10000) {
+ chars.push(codePoint);
+ } else {
+ codePoint -= 0x10000;
+ // eslint-disable-next-line no-bitwise
+ chars.push((codePoint >> 10) + 0xd800, codePoint % 0x400 + 0xdc00);
+ }
+ if (i + 1 !== length && chars.length <= 0x4000) continue;
+ result += fromCharCode.apply(null, chars);
+ chars.length = 0;
+ }
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/index.js
new file mode 100644
index 0000000000..4393588f10
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/index.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = {
+ "#": require("./#"),
+ "formatMethod": require("./format-method"),
+ "fromCodePoint": require("./from-code-point"),
+ "isString": require("./is-string"),
+ "random": require("./random"),
+ "randomUniq": require("./random-uniq"),
+ "raw": require("./raw")
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/is-string.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/is-string.js
new file mode 100644
index 0000000000..1b1e863090
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/is-string.js
@@ -0,0 +1,13 @@
+"use strict";
+
+var objToString = Object.prototype.toString, id = objToString.call("");
+
+module.exports = function (value) {
+ return (
+ typeof value === "string" ||
+ (value &&
+ typeof value === "object" &&
+ (value instanceof String || objToString.call(value) === id)) ||
+ false
+ );
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/random-uniq.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/random-uniq.js
new file mode 100644
index 0000000000..ea10a8167a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/random-uniq.js
@@ -0,0 +1,13 @@
+"use strict";
+
+var generated = Object.create(null), random = Math.random;
+
+module.exports = function () {
+ var str;
+ do {
+ str = random()
+ .toString(36)
+ .slice(2);
+ } while (generated[str]);
+ return str;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/random.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/random.js
new file mode 100644
index 0000000000..4ecec7fcd0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/random.js
@@ -0,0 +1,42 @@
+"use strict";
+
+var isValue = require("../object/is-value")
+ , toNaturalNumber = require("../number/to-pos-integer");
+
+var generated = Object.create(null), random = Math.random, uniqTryLimit = 100;
+
+var getChunk = function () {
+ return random()
+ .toString(36)
+ .slice(2);
+};
+
+var getString = function (/* length */) {
+ var str = getChunk(), length = arguments[0];
+ if (!isValue(length)) return str;
+ while (str.length < length) str += getChunk();
+ return str.slice(0, length);
+};
+
+module.exports = function (/* options */) {
+ var options = Object(arguments[0]), length = options.length, isUnique = options.isUnique;
+
+ if (isValue(length)) length = toNaturalNumber(length);
+
+ var str = getString(length);
+ if (isUnique) {
+ var count = 0;
+ while (generated[str]) {
+ if (++count === uniqTryLimit) {
+ throw new Error(
+ "Cannot generate random string.\n" +
+ "String.random is not designed to effectively generate many short and " +
+ "unique random strings"
+ );
+ }
+ str = getString(length);
+ }
+ generated[str] = true;
+ }
+ return str;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/raw/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/raw/implement.js
new file mode 100644
index 0000000000..0f17df3f14
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/raw/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+if (!require("./is-implemented")()) {
+ Object.defineProperty(String, "raw", { value: require("./shim"),
+ configurable: true,
+enumerable: false,
+writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/raw/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/raw/index.js
new file mode 100644
index 0000000000..e818dd56dd
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/raw/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = require("./is-implemented")()
+ ? String.raw
+ : require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/raw/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/raw/is-implemented.js
new file mode 100644
index 0000000000..8758108c0c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/raw/is-implemented.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function () {
+ var raw = String.raw, test;
+ if (typeof raw !== "function") return false;
+ test = ["foo\nbar", "marko\n"];
+ test.raw = ["foo\\nbar", "marko\\n"];
+ return raw(test, "INSE\nRT") === "foo\\nbarINSE\nRTmarko\\n";
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/string/raw/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/string/raw/shim.js
new file mode 100644
index 0000000000..8c52bb552a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/string/raw/shim.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var toPosInt = require("../../number/to-pos-integer")
+ , validValue = require("../../object/valid-value")
+ , reduce = Array.prototype.reduce;
+
+module.exports = function (callSite /*, …substitutions*/) {
+ var args, rawValue = Object(validValue(Object(validValue(callSite)).raw));
+ if (!toPosInt(rawValue.length)) return "";
+ args = arguments;
+ return reduce.call(rawValue, function (str1, str2, i) {
+ return str1 + String(args[i]) + str2;
+ });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/.eslintrc.json b/kbase-extension/static/ext_packages/igv/es5-ext/test/.eslintrc.json
new file mode 100644
index 0000000000..3ac4585bd7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/.eslintrc.json
@@ -0,0 +1,14 @@
+{
+ "globals": {
+ "Symbol": true
+ },
+ "rules": {
+ "consistent-this": "off",
+ "id-length": "off",
+ "no-empty-function": "off",
+ "no-eval": "off",
+ "no-new-wrappers": "off",
+ "no-prototype-builtins": "off",
+ "no-shadow": "off"
+ }
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/__tad.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/__tad.js
new file mode 100644
index 0000000000..883c379282
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/__tad.js
@@ -0,0 +1,3 @@
+"use strict";
+
+exports.context = null;
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/@@iterator/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/@@iterator/implement.js
new file mode 100644
index 0000000000..1a20aa82e4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/@@iterator/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/@@iterator/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/@@iterator/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/@@iterator/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/@@iterator/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/@@iterator/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/@@iterator/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/@@iterator/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/@@iterator/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/@@iterator/shim.js
new file mode 100644
index 0000000000..71b71d58a0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/@@iterator/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+exports.__generic = function (t, a) {
+ var iterator = t.call(this);
+ a.deep(iterator.next(), { value: "1", done: false });
+ a.deep(iterator.next(), { value: "2", done: false });
+ a.deep(iterator.next(), { value: "3", done: false });
+ a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/_compare-by-length.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/_compare-by-length.js
new file mode 100644
index 0000000000..a53d8470f6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/_compare-by-length.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var arr = [4, 5, 6], obj1 = { length: 8 }, obj2 = {}, obj3 = { length: 1 };
+
+ a.deep([arr, obj1, obj2, obj3].sort(t), [obj2, obj3, arr, obj1]);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/binary-search.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/binary-search.js
new file mode 100644
index 0000000000..04dfaefa46
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/binary-search.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var compare = function (value) {
+ return this - value;
+};
+
+module.exports = function (t, a) {
+ var arr;
+ arr = [2, 5, 5, 8, 34, 67, 98, 345, 678];
+
+ // Highest, equal match
+ a(t.call(arr, compare.bind(1)), 0, "All higher");
+ a(t.call(arr, compare.bind(679)), arr.length - 1, "All lower");
+ a(t.call(arr, compare.bind(4)), 0, "Mid");
+ a(t.call(arr, compare.bind(5)), 2, "Match");
+ a(t.call(arr, compare.bind(6)), 2, "Above");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/clear.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/clear.js
new file mode 100644
index 0000000000..640cc1926b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/clear.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var arr = [1, 2, {}, 4];
+ a(t.call(arr), arr, "Returns same array");
+ a.deep(arr, [], "Empties array");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/compact.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/compact.js
new file mode 100644
index 0000000000..05160844ed
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/compact.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ a(t.call(this).length, 3);
+ },
+ "": function (t, a) {
+ var o, x, y, z;
+ o = {};
+ x = [0, 1, "", null, o, false, undefined, true];
+ y = x.slice(0);
+
+ a.not(z = t.call(x), x, "Returns different object");
+ a.deep(x, y, "Origin not changed");
+ a.deep(z, [0, 1, "", o, false, true], "Result");
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/concat/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/concat/implement.js
new file mode 100644
index 0000000000..c4dc41fa79
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/concat/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/concat/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/concat/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/concat/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/concat/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/concat/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/concat/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/concat/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/concat/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/concat/shim.js
new file mode 100644
index 0000000000..30a9b0c62a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/concat/shim.js
@@ -0,0 +1,26 @@
+"use strict";
+
+var isConcatSpreadable = require("es6-symbol").isConcatSpreadable
+ , SubArray = require("../../../../array/_sub-array-dummy-safe");
+
+module.exports = function (t, a) {
+ var arr = [1, 3, 45], x = {}, subArr, subArr2, result;
+
+ a.deep(t.call(arr, "2d", x, ["ere", "fe", x], false, null),
+ [1, 3, 45, "2d", x, "ere", "fe", x, false, null], "Plain array");
+
+ subArr = new SubArray("lol", "miszko");
+ subArr2 = new SubArray("elo", "fol");
+
+ result = t.call(subArr, "df", arr, "fef", subArr2, null);
+ a(result instanceof SubArray, true, "Instance of subclass");
+ a.deep(result, ["lol", "miszko", "df", 1, 3, 45, "fef", "elo", "fol", null],
+ "Spreable by default");
+
+ SubArray.prototype[isConcatSpreadable] = false;
+
+ result = t.call(subArr, "df", arr, "fef", subArr2, null);
+ a.deep(result, [subArr, "df", 1, 3, 45, "fef", subArr2, null], "Non spreadable");
+
+ delete SubArray.prototype[isConcatSpreadable];
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/contains.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/contains.js
new file mode 100644
index 0000000000..fb0f96ce8e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/contains.js
@@ -0,0 +1,21 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ a(t.call(this, this[1]), true, "Contains");
+ a(t.call(this, {}), false, "Does Not contain");
+ },
+ "": function (t, a) {
+ var o, x = {}, y = {};
+
+ o = [1, "raz", x];
+
+ a(t.call(o, 1), true, "First");
+ a(t.call(o, "1"), false, "Type coercion");
+ a(t.call(o, "raz"), true, "Primitive");
+ a(t.call(o, "foo"), false, "Primitive not found");
+ a(t.call(o, x), true, "Object found");
+ a(t.call(o, y), false, "Object not found");
+ a(t.call(o, 1, 1), false, "Position");
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/copy-within/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/copy-within/implement.js
new file mode 100644
index 0000000000..87272ac0fb
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/copy-within/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/copy-within/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/copy-within/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/copy-within/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/copy-within/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/copy-within/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/copy-within/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/copy-within/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/copy-within/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/copy-within/shim.js
new file mode 100644
index 0000000000..03a631fe27
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/copy-within/shim.js
@@ -0,0 +1,29 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var args, x;
+
+ a.h1("2 args");
+ x = [1, 2, 3, 4, 5];
+ t.call(x, 0, 3);
+ a.deep(x, [4, 5, 3, 4, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], 1, 3), [1, 4, 5, 4, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], 1, 2), [1, 3, 4, 5, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], 2, 2), [1, 2, 3, 4, 5]);
+
+ a.h1("3 args");
+ a.deep(t.call([1, 2, 3, 4, 5], 0, 3, 4), [4, 2, 3, 4, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], 1, 3, 4), [1, 4, 3, 4, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], 1, 2, 4), [1, 3, 4, 4, 5]);
+
+ a.h1("Negative args");
+ a.deep(t.call([1, 2, 3, 4, 5], 0, -2), [4, 5, 3, 4, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], 0, -2, -1), [4, 2, 3, 4, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], -4, -3, -2), [1, 3, 3, 4, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], -4, -3, -1), [1, 3, 4, 4, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], -4, -3), [1, 3, 4, 5, 5]);
+
+ a.h1("Array-likes");
+ args = { 0: 1, 1: 2, 2: 3, length: 3 };
+ a.deep(t.call(args, -2, 0), { 0: 1, 1: 1, 2: 2, length: 3 });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/diff.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/diff.js
new file mode 100644
index 0000000000..397c5ddfeb
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/diff.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ a.deep(t.call(this, this), []);
+ },
+ "": function (t, a) {
+ var x = {}, y = {};
+
+ a.deep(t.call([1, "raz", x, 2, "trzy", y], [x, 2, "trzy"]), [1, "raz", y],
+ "Scope longer");
+ a.deep(t.call([1, "raz", x], [x, 2, "trzy", 1, y]), ["raz"],
+ "Arg longer");
+ a.deep(t.call([1, "raz", x], []), [1, "raz", x], "Empty arg");
+ a.deep(t.call([], [1, y, "sdfs"]), [], "Empty scope");
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/e-index-of.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/e-index-of.js
new file mode 100644
index 0000000000..1e42cbd735
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/e-index-of.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = {};
+ a(t.call([3, "raz", {}, x, {}], x), 3, "Regular");
+ a(t.call([3, "raz", NaN, {}, NaN], NaN), 2, "NaN");
+ a(t.call([3, "raz", 0, {}, -0], -0), 2, "-0");
+ a(t.call([3, "raz", -0, {}, 0], +0), 2, "+0");
+ a(t.call([3, "raz", NaN, {}, NaN], NaN, 3), 4, "fromIndex");
+ a(t.call([3, "raz", NaN, {}, NaN], NaN, -1), 4, "fromIndex negative #1");
+ a(t.call([3, "raz", NaN, {}, NaN], NaN, -2), 4, "fromIndex negative #2");
+ a(t.call([3, "raz", NaN, {}, NaN], NaN, -3), 2, "fromIndex negative #3");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/e-last-index-of.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/e-last-index-of.js
new file mode 100644
index 0000000000..2c7fff9fcc
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/e-last-index-of.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = {};
+ a(t.call([3, "raz", {}, x, {}, x], x), 5, "Regular");
+ a(t.call([3, "raz", NaN, {}, x], NaN), 2, "NaN");
+ a(t.call([3, "raz", 0, {}, -0], -0), 4, "-0");
+ a(t.call([3, "raz", -0, {}, 0], +0), 4, "+0");
+ a(t.call([3, "raz", NaN, {}, NaN], NaN, 3), 2, "fromIndex");
+ a(t.call([3, "raz", NaN, 2, NaN], NaN, -1), 4, "Negative fromIndex #1");
+ a(t.call([3, "raz", NaN, 2, NaN], NaN, -2), 2, "Negative fromIndex #2");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/entries/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/entries/implement.js
new file mode 100644
index 0000000000..fa16930c3f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/entries/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/entries/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/entries/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/entries/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/entries/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/entries/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/entries/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/entries/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/entries/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/entries/shim.js
new file mode 100644
index 0000000000..87ac25a98d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/entries/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+exports.__generic = function (t, a) {
+ var iterator = t.call(this);
+ a.deep(iterator.next(), { value: [0, "1"], done: false });
+ a.deep(iterator.next(), { value: [1, "2"], done: false });
+ a.deep(iterator.next(), { value: [2, "3"], done: false });
+ a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/exclusion.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/exclusion.js
new file mode 100644
index 0000000000..827c037a32
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/exclusion.js
@@ -0,0 +1,15 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ var x = {};
+ a.deep(t.call(this, this, [this[0], this[2], x]), [x]);
+ },
+ "": function (t, a) {
+ var x = {}, y = {};
+
+ a.deep(t.call([x, y]), [x, y], "No arguments");
+ a.deep(t.call([x, 1], [], []), [x, 1], "Empty arguments");
+ a.deep(t.call([1, "raz", x], [2, "raz", y], [2, "raz", x]), [1, y]);
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/fill/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/fill/implement.js
new file mode 100644
index 0000000000..fe806a6bfa
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/fill/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/fill/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/fill/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/fill/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/fill/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/fill/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/fill/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/fill/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/fill/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/fill/shim.js
new file mode 100644
index 0000000000..c752e10b80
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/fill/shim.js
@@ -0,0 +1,18 @@
+// Taken from https://github.com/paulmillr/es6-shim/blob/master/test/array.js
+
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+
+ x = [1, 2, 3, 4, 5, 6];
+ a(t.call(x, -1), x, "Returns self object");
+ a.deep(x, [-1, -1, -1, -1, -1, -1], "Value");
+
+ a.deep(t.call([1, 2, 3, 4, 5, 6], -1, 3), [1, 2, 3, -1, -1, -1],
+ "Positive start");
+ a.deep(t.call([1, 2, 3, 4, 5, 6], -1, -3), [1, 2, 3, -1, -1, -1],
+ "Negative start");
+ a.deep(t.call([1, 2, 3, 4, 5, 6], -1, 9), [1, 2, 3, 4, 5, 6],
+ "Large start");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/filter/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/filter/implement.js
new file mode 100644
index 0000000000..cac92c83a0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/filter/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/filter/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/filter/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/filter/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/filter/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/filter/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/filter/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/filter/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/filter/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/filter/shim.js
new file mode 100644
index 0000000000..e20a6511f0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/filter/shim.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var SubArray = require("../../../../array/_sub-array-dummy-safe");
+
+module.exports = function (t, a) {
+ var arr, x = {}, subArr, result;
+
+ arr = ["foo", undefined, 0, "2d", false, x, null];
+
+ a.deep(t.call(arr, Boolean), ["foo", "2d", x], "Plain array");
+
+ subArr = new SubArray("foo", undefined, 0, "2d", false, x, null);
+
+ result = t.call(subArr, Boolean);
+ a(result instanceof SubArray, true, "Instance of subclass");
+ a.deep(result, ["foo", "2d", x], "Result of subclass");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find-index/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find-index/implement.js
new file mode 100644
index 0000000000..341bedef49
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find-index/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/find-index/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find-index/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find-index/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find-index/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find-index/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find-index/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find-index/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find-index/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find-index/shim.js
new file mode 100644
index 0000000000..0a6fe11357
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find-index/shim.js
@@ -0,0 +1,17 @@
+"use strict";
+
+exports.__generic = function (t, a) {
+ var count = 0, o = {}, self = Object(this);
+ a(t.call(self, function (value, i, scope) {
+ a(value, this[i], "Value");
+ a(i, count++, "Index");
+ a(scope, this, "Scope");
+ }, self), -1, "Falsy result");
+ a(count, 3);
+
+ count = -1;
+ a(t.call(this, function () {
+ return ++count ? o : null;
+ }, this), 1, "Truthy result");
+ a(count, 1);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find/implement.js
new file mode 100644
index 0000000000..9333b25fb1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/find/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find/shim.js
new file mode 100644
index 0000000000..b8fd9f060d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/find/shim.js
@@ -0,0 +1,17 @@
+"use strict";
+
+exports.__generic = function (t, a) {
+ var count = 0, o = {}, self = Object(this);
+ a(t.call(self, function (value, i, scope) {
+ a(value, this[i], "Value");
+ a(i, count++, "Index");
+ a(scope, this, "Scope");
+ }, self), undefined, "Falsy result");
+ a(count, 3);
+
+ count = -1;
+ a(t.call(this, function () {
+ return ++count ? o : null;
+ }, this), this[1], "Truthy result");
+ a(count, 1);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/first-index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/first-index.js
new file mode 100644
index 0000000000..af3388b556
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/first-index.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+ a(t.call([]), null, "Empty");
+ a(t.call([null]), 0, "One value");
+ a(t.call([1, 2, 3]), 0, "Many values");
+ a(t.call(new Array(1000)), null, "Sparse empty");
+ x = [];
+ x[883] = undefined;
+ x[890] = null;
+ a(t.call(x), 883, "Manual sparse, distant value");
+ x = new Array(1000);
+ x[657] = undefined;
+ x[700] = null;
+ a(t.call(x), 657, "Sparse, distant value");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/first.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/first.js
new file mode 100644
index 0000000000..5e9c1ae845
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/first.js
@@ -0,0 +1,13 @@
+"use strict";
+
+exports.__generic = function (t, a) {
+ a(t.call(this), this[0]);
+};
+exports[""] = function (t, a) {
+ var x;
+ a(t.call([]), undefined, "Empty");
+ a(t.call(new Array(234), undefined, "Sparse empty"));
+ x = new Array(2342);
+ x[434] = {};
+ a(t.call(x), x[434], "Sparse");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/flatten.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/flatten.js
new file mode 100644
index 0000000000..c1234c3ab6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/flatten.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var o = [1, 2, [3, 4, [5, 6], 7, 8], 9, 10, [11, 12, [13, 14]], 15];
+
+module.exports = {
+ "__generic": function (t, a) {
+ a(t.call(this).length, 3);
+ },
+ "Nested Arrays": function (t, a) {
+ var result = t.call(o);
+ a.not(o, result);
+ a.deep(result, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]);
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/for-each-right.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/for-each-right.js
new file mode 100644
index 0000000000..109101f8b5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/for-each-right.js
@@ -0,0 +1,47 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ var count = 0, first, last, x, icount = this.length;
+ t.call(this, function (item, index, col) {
+ ++count;
+ if (!first) {
+ first = item;
+ }
+ last = item;
+ x = col;
+ a(index, --icount, "Index");
+ });
+ a(count, this.length, "Iterated");
+ a(first, this[this.length - 1], "First is last");
+ a(last, this[0], "Last is first");
+ a.deep(x, Object(this), "Collection as third argument"); // Jslint: skip
+ },
+ "": function (t, a) {
+ var x = {}, y, count;
+ t.call(
+ [1],
+ function () {
+ y = this;
+ },
+ x
+ );
+ a(y, x, "Scope");
+ y = 0;
+ t.call([3, 4, 4], function (a, i) {
+ y += i;
+ });
+ a(y, 3, "Indexes");
+
+ x = [1, 3];
+ x[5] = "x";
+ y = 0;
+ count = 0;
+ t.call(x, function (a, i) {
+ ++count;
+ y += i;
+ });
+ a(y, 6, "Misssing Indexes");
+ a(count, 3, "Misssing Indexes, count");
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/group.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/group.js
new file mode 100644
index 0000000000..12667de98c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/group.js
@@ -0,0 +1,24 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ var count = 0, self;
+
+ self = Object(this);
+ a.deep(t.call(self, function (v, i, scope) {
+ a(v, this[i], "Value");
+ a(i, count++, "Index");
+ a(scope, this, "Scope");
+ return i;
+ }, self), { 0: [this[0]], 1: [this[1]], 2: [this[2]] });
+ },
+ "": function (t, a) {
+ var r;
+ r = t.call([2, 3, 3, 4, 5, 6, 7, 7, 23, 45, 34, 56],
+ function (v) {
+ return v % 2 ? "odd" : "even";
+ });
+ a.deep(r.odd, [3, 3, 5, 7, 7, 23, 45]);
+ a.deep(r.even, [2, 4, 6, 34, 56]);
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/indexes-of.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/indexes-of.js
new file mode 100644
index 0000000000..1463417d43
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/indexes-of.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ a.deep(t.call(this, this[1]), [1]);
+ },
+ "": function (t, a) {
+ var x = {};
+ a.deep(t.call([1, 3, 5, 3, 5], 6), [], "No result");
+ a.deep(t.call([1, 3, 5, 1, 3, 5, 1], 1), [0, 3, 6], "Some results");
+ a.deep(t.call([], x), [], "Empty array");
+ a.deep(t.call([x, 3, {}, x, 3, 5, x], x), [0, 3, 6], "Search for object");
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/intersection.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/intersection.js
new file mode 100644
index 0000000000..bb1097d1e1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/intersection.js
@@ -0,0 +1,24 @@
+"use strict";
+
+var toArray = require("../../../array/to-array");
+
+module.exports = {
+ "__generic": function (t, a) {
+ a.deep(t.call(this, this, this), toArray(this));
+ },
+ "": function (t, a) {
+ var x = {}, y = {}, p, r;
+ a.deep(t.call([], [2, 3, 4]), [], "Empty #1");
+ a.deep(t.call([2, 3, 4], []), [], "Empty #2");
+ a.deep(t.call([2, 3, x], [y, 5, 7]), [], "Different");
+ p = t.call([3, 5, "raz", {}, "dwa", x], [1, 3, "raz", "dwa", "trzy", x, {}],
+ [3, "raz", x, 65]);
+ r = [3, "raz", x];
+ p.sort();
+ r.sort();
+ a.deep(p, r, "Same parts");
+ a.deep(t.call(r, r), r, "Same");
+ a.deep(t.call([1, 2, x, 4, 5, y, 7], [7, y, 5, 4, x, 2, 1]),
+ [1, 2, x, 4, 5, y, 7], "Long reverse same");
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/is-copy.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/is-copy.js
new file mode 100644
index 0000000000..b090c2acde
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/is-copy.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = {};
+ a(t.call([], []), true, "Empty");
+ a(t.call([], {}), true, "Empty lists");
+ a(t.call([1, x, "raz"], [1, x, "raz"]), true, "Same");
+ a(t.call([1, x, "raz"], { 0: 1, 1: x, 2: "raz", length: 3 }), true,
+ "Same lists");
+ a(t.call([1, x, "raz"], [x, 1, "raz"]), false, "Diff order");
+ a(t.call([1, x], [1, x, "raz"]), false, "Diff length #1");
+ a(t.call([1, x, "raz"], [1, x]), false, "Diff length #2");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/is-empty.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/is-empty.js
new file mode 100644
index 0000000000..1e1c097b31
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/is-empty.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = {};
+ a(t.call([]), true, "Empty");
+ a(t.call({ length: 0 }), true, "Empty lists");
+ a(t.call([1, x, "raz"]), false, "Non empty");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/is-uniq.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/is-uniq.js
new file mode 100644
index 0000000000..ab531ac513
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/is-uniq.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = {};
+ a(t.call([]), true, "Empty");
+ a(t.call({}), true, "Empty lists");
+ a(t.call([1, x, "raz"]), true, "Uniq");
+ a(t.call([1, x, 1, "raz"]), false, "Not Uniq: primitive");
+ a(t.call([1, x, "1", "raz"]), true, "Uniq: primitive");
+ a(t.call([1, x, 1, {}, "raz"]), false, "Not Uniq: Obj");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/keys/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/keys/implement.js
new file mode 100644
index 0000000000..cc1f9316ad
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/keys/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/keys/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/keys/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/keys/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/keys/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/keys/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/keys/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/keys/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/keys/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/keys/shim.js
new file mode 100644
index 0000000000..9be9a8f09c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/keys/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+exports.__generic = function (t, a) {
+ var iterator = t.call(this);
+ a.deep(iterator.next(), { value: 0, done: false });
+ a.deep(iterator.next(), { value: 1, done: false });
+ a.deep(iterator.next(), { value: 2, done: false });
+ a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/last-index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/last-index.js
new file mode 100644
index 0000000000..e66d16f141
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/last-index.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+ a(t.call([]), null, "Empty");
+ a(t.call([null]), 0, "One value");
+ a(t.call([1, 2, 3]), 2, "Many values");
+ a(t.call(new Array(1000)), null, "Sparse empty");
+ x = [];
+ x[883] = null;
+ x[890] = undefined;
+ a(t.call(x), 890, "Manual sparse, distant value");
+ x = new Array(1000);
+ x[657] = null;
+ x[700] = undefined;
+ a(t.call(x), 700, "Sparse, distant value");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/last.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/last.js
new file mode 100644
index 0000000000..6ca5d05390
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/last.js
@@ -0,0 +1,15 @@
+"use strict";
+
+exports.__generic = function (t, a) {
+ a(t.call(this), this[this.length - 1]);
+};
+
+exports[""] = function (t, a) {
+ var x;
+ a(t.call([]), undefined, "Empty");
+ a(t.call(new Array(234), undefined, "Sparse empty"));
+ x = new Array(2342);
+ x[434] = {};
+ x[450] = {};
+ a(t.call(x), x[450], "Sparse");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/map/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/map/implement.js
new file mode 100644
index 0000000000..26bb411582
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/map/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/map/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/map/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/map/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/map/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/map/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/map/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/map/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/map/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/map/shim.js
new file mode 100644
index 0000000000..02a5af2509
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/map/shim.js
@@ -0,0 +1,19 @@
+"use strict";
+
+var SubArray = require("../../../../array/_sub-array-dummy-safe");
+
+module.exports = function (t, a) {
+ var arr, x = {}, subArr, result;
+
+ arr = ["foo", undefined, 0, "2d", false, x, null];
+
+ a.deep(t.call(arr, Boolean), [true, false, false, true, false, true, false],
+ "Plain array");
+
+ subArr = new SubArray("foo", undefined, 0, "2d", false, x, null);
+
+ result = t.call(subArr, Boolean);
+ a(result instanceof SubArray, true, "Instance of subclass");
+ a.deep(result, [true, false, false, true, false, true, false],
+ "Result of subclass");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/remove.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/remove.js
new file mode 100644
index 0000000000..d67457ea9f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/remove.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var y = {}, z = {}, x = [9, z, 5, y, "foo"];
+ t.call(x, y);
+ a.deep(x, [9, z, 5, "foo"]);
+ t.call(x, {});
+ a.deep(x, [9, z, 5, "foo"], "Not existing");
+ t.call(x, 5);
+ a.deep(x, [9, z, "foo"], "Primitive");
+ x = [9, z, 5, y, "foo"];
+ t.call(x, z, 5, "foo");
+ a.deep(x, [9, y], "More than one argument");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/separate.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/separate.js
new file mode 100644
index 0000000000..9792637f31
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/separate.js
@@ -0,0 +1,15 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = [], y = {}, z = {};
+ a.deep(t.call(x, y), [], "Empty");
+ a.not(t.call(x), x, "Returns copy");
+ a.deep(t.call([1], y), [1], "One");
+ a.deep(t.call([1, "raz"], y), [1, y, "raz"], "One");
+ a.deep(t.call([1, "raz", x], y), [1, y, "raz", y, x], "More");
+ x = new Array(1000);
+ x[23] = 2;
+ x[3453] = "raz";
+ x[500] = z;
+ a.deep(t.call(x, y), [2, y, z, y, "raz"], "Sparse");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/slice/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/slice/implement.js
new file mode 100644
index 0000000000..8c9b9be63e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/slice/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/slice/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/slice/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/slice/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/slice/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/slice/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/slice/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/slice/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/slice/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/slice/shim.js
new file mode 100644
index 0000000000..f09ad13cff
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/slice/shim.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var SubArray = require("../../../../array/_sub-array-dummy-safe");
+
+module.exports = function (t, a) {
+ var arr, x = {}, subArr, result;
+
+ arr = ["foo", undefined, 0, "2d", false, x, null];
+
+ a.deep(t.call(arr, 2, 4), [0, "2d"], "Plain array: result");
+
+ subArr = new SubArray("foo", undefined, 0, "2d", false, x, null);
+
+ result = t.call(subArr, 2, 4);
+ a(result instanceof SubArray, true, "Instance of subclass");
+ a.deep(result, [0, "2d"], "Subclass: result");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/some-right.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/some-right.js
new file mode 100644
index 0000000000..1e0f407e64
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/some-right.js
@@ -0,0 +1,62 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ var count = 0, first, last, x, icount = this.length;
+ t.call(this, function (item, index, col) {
+ ++count;
+ if (!first) {
+ first = item;
+ }
+ last = item;
+ x = col;
+ a(index, --icount, "Index");
+ });
+ a(count, this.length, "Iterated");
+ a(first, this[this.length - 1], "First is last");
+ a(last, this[0], "Last is first");
+ a.deep(x, Object(this), "Collection as third argument"); // Jslint: skip
+ },
+ "": function (t, a) {
+ var x = {}, y, count;
+ t.call(
+ [1],
+ function () {
+ y = this;
+ },
+ x
+ );
+ a(y, x, "Scope");
+ y = 0;
+ t.call([3, 4, 4], function (a, i) {
+ y += i;
+ });
+ a(y, 3, "Indexes");
+
+ x = [1, 3];
+ x[5] = "x";
+ y = 0;
+ count = 0;
+ a(
+ t.call(x, function (a, i) {
+ ++count;
+ y += i;
+ }),
+ false,
+ "Return"
+ );
+ a(y, 6, "Misssing Indexes");
+ a(count, 3, "Misssing Indexes, count");
+
+ count = 0;
+ a(
+ t.call([-2, -3, -4, 2, -5], function (item) {
+ ++count;
+ return item > 0;
+ }),
+ true,
+ "Return"
+ );
+ a(count, 2, "Break after true is returned");
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/splice/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/splice/implement.js
new file mode 100644
index 0000000000..f09257a433
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/splice/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/splice/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/splice/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/splice/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/splice/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/splice/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/splice/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/splice/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/splice/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/splice/shim.js
new file mode 100644
index 0000000000..480200784d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/splice/shim.js
@@ -0,0 +1,19 @@
+"use strict";
+
+var SubArray = require("../../../../array/_sub-array-dummy-safe");
+
+module.exports = function (t, a) {
+ var arr, x = {}, subArr, result;
+
+ arr = ["foo", undefined, 0, "2d", false, x, null];
+
+ a.deep(t.call(arr, 2, 2, "bar"), [0, "2d"], "Plain array: result");
+ a.deep(arr, ["foo", undefined, "bar", false, x, null], "Plain array: change");
+
+ subArr = new SubArray("foo", undefined, 0, "2d", false, x, null);
+
+ result = t.call(subArr, 2, 2, "bar");
+ a(result instanceof SubArray, true, "Instance of subclass");
+ a.deep(result, [0, "2d"], "Subclass: result");
+ a.deep(subArr, ["foo", undefined, "bar", false, x, null], "Subclass: change");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/uniq.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/uniq.js
new file mode 100644
index 0000000000..c7223b26ed
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/uniq.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ a(t.call(this).length, 3);
+ },
+ "": function (t, a) {
+ var o, x = {}, y = {}, z = {}, w;
+ o = [1, 2, x, 3, 1, "raz", "1", y, x, "trzy", z, "raz"];
+
+ a.not(w = t.call(o), o, "Returns different object");
+ a.deep(w, [1, 2, x, 3, "raz", "1", y, "trzy", z], "Result");
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/values/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/values/implement.js
new file mode 100644
index 0000000000..4ba7613aff
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/values/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/values/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/values/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/values/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/values/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/values/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/values/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/values/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/values/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/values/shim.js
new file mode 100644
index 0000000000..71b71d58a0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/#/values/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+exports.__generic = function (t, a) {
+ var iterator = t.call(this);
+ a.deep(iterator.next(), { value: "1", done: false });
+ a.deep(iterator.next(), { value: "2", done: false });
+ a.deep(iterator.next(), { value: "3", done: false });
+ a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/__scopes.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/__scopes.js
new file mode 100644
index 0000000000..bf47389f76
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/__scopes.js
@@ -0,0 +1,11 @@
+"use strict";
+
+exports.Array = ["1", "2", "3"];
+
+exports.Arguments = (function () {
+ return arguments;
+}("1", "2", "3"));
+
+exports.String = "123";
+
+exports.Object = { 0: "1", 1: "2", 2: "3", 3: "4", length: 3 };
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/_is-extensible.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/_is-extensible.js
new file mode 100644
index 0000000000..87881863b3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/_is-extensible.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t, "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/_sub-array-dummy-safe.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/_sub-array-dummy-safe.js
new file mode 100644
index 0000000000..6b42f4d159
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/_sub-array-dummy-safe.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isArray = Array.isArray;
+
+module.exports = function (t) {
+ t(t === null || isArray(t.prototype), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/_sub-array-dummy.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/_sub-array-dummy.js
new file mode 100644
index 0000000000..6b42f4d159
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/_sub-array-dummy.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isArray = Array.isArray;
+
+module.exports = function (t) {
+ t(t === null || isArray(t.prototype), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/from/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/from/implement.js
new file mode 100644
index 0000000000..2ed3788f91
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/from/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../array/from/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/from/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/from/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/from/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/from/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/from/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/from/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/from/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/from/shim.js
new file mode 100644
index 0000000000..17974c4be7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/from/shim.js
@@ -0,0 +1,138 @@
+// Some tests taken from: https://github.com/mathiasbynens/Array.from/blob/master/tests/tests.js
+
+"use strict";
+
+module.exports = function (t, a) {
+ var o = [1, 2, 3], MyType;
+ a.not(t(o), o, "Array");
+ a.deep(t(o), o, "Array: same content");
+ a.deep(t("12r3v"), ["1", "2", "r", "3", "v"], "String");
+ a.deep(
+ t(
+ (function () {
+ return arguments;
+ })(3, o, "raz")
+ ),
+ [3, o, "raz"],
+ "Arguments"
+ );
+ a.deep(
+ t(
+ (function () {
+ return arguments;
+ })(3)
+ ),
+ [3],
+ "Arguments with one numeric value"
+ );
+
+ a.deep(t({ 0: "raz", 1: "dwa", length: 2 }), ["raz", "dwa"], "Other");
+
+ a.deep(
+ t(
+ o,
+ function (val) {
+ return (val + 2) * 10;
+ },
+ 10
+ ),
+ [30, 40, 50],
+ "Mapping"
+ );
+
+ a.throws(
+ function () {
+ t();
+ },
+ TypeError,
+ "Undefined"
+ );
+ a.deep(t(3), [], "Primitive");
+
+ a(t.length, 1, "Length");
+ a.deep(t({ length: 0 }), [], "No values Array-like");
+ a.deep(t({ length: -1 }), [], "Invalid length Array-like");
+ a.deep(t({ length: -Infinity }), [], "Invalid length Array-like #2");
+ a.throws(
+ function () {
+ t(undefined);
+ },
+ TypeError,
+ "Undefined"
+ );
+ a.throws(
+ function () {
+ t(null);
+ },
+ TypeError,
+ "Null"
+ );
+ a.deep(t(false), [], "Boolean");
+ a.deep(t(-Infinity), [], "Inifity");
+ a.deep(t(-0), [], "-0");
+ a.deep(t(+0), [], "+0");
+ a.deep(t(1), [], "1");
+ a.deep(t(Number(Infinity)), [], "+Infinity");
+ a.deep(t({}), [], "Plain object");
+ a.deep(t({ length: 1 }), [undefined], "Sparse array-like");
+ a.deep(
+ t({ 0: "a", 1: "b", length: 2 }, function (x) {
+ return x + x;
+ }),
+ ["aa", "bb"],
+ "Map"
+ );
+ a.deep(
+ t(
+ { 0: "a", 1: "b", length: 2 },
+ function () {
+ return String(this);
+ },
+ undefined
+ ),
+ ["undefined", "undefined"],
+ "Map context"
+ );
+ a.deep(
+ t(
+ { 0: "a", 1: "b", length: 2 },
+ function () {
+ return String(this);
+ },
+ "x"
+ ),
+ ["x", "x"],
+ "Map primitive context"
+ );
+ a.throws(
+ function () {
+ t({}, "foo", "x");
+ },
+ TypeError,
+ "Non callable for map"
+ );
+
+ a.deep(t({ length: 1, 0: "a" }), ["a"], "Null context");
+
+ a(t({ __proto__: { 0: "abc", length: 1 } })[0], "abc", "Values on prototype");
+
+ a.throws(
+ function () {
+ t.call(function () {
+ return Object.freeze({});
+ }, {});
+ },
+ TypeError,
+ "Contructor producing freezed objects"
+ );
+
+ // Ensure no setters are called for the indexes
+ // Ensure no setters are called for the indexes
+ MyType = function () {};
+ Object.defineProperty(MyType.prototype, "0", {
+ set: function (x) {
+ throw new Error("Setter called: " + x);
+ }
+ });
+ a.deep(t.call(MyType, { 0: "abc", length: 1 }), { 0: "abc", length: 1 }, "Defined not set");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/generate.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/generate.js
new file mode 100644
index 0000000000..efd5f7c8c0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/generate.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = {}, y = {};
+ a.deep(t(3), [undefined, undefined, undefined], "Just length");
+ a.deep(t(0, "x"), [], "No repeat");
+ a.deep(t(1, x, y), [x], "Arguments length larger than repeat number");
+ a.deep(t(3, x), [x, x, x], "Single argument");
+ a.deep(t(5, x, y), [x, y, x, y, x], "Many arguments");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/is-plain-array.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/is-plain-array.js
new file mode 100644
index 0000000000..2cfd50d3b8
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/is-plain-array.js
@@ -0,0 +1,18 @@
+"use strict";
+
+var SubArray = require("../../array/_sub-array-dummy-safe");
+
+module.exports = function (t, a) {
+ var arr = [1, 2, 3];
+ a(t(arr), true, "Array");
+ a(t(null), false, "Null");
+ a(t(), false, "Undefined");
+ a(t("234"), false, "String");
+ a(t(23), false, "Number");
+ a(t({}), false, "Plain object");
+ a(t({ length: 1, 0: "raz" }), false, "Array-like");
+ a(t(Object.create(arr)), false, "Array extension");
+ if (!SubArray) return;
+ a(t(new SubArray(23)), false, "Subclass instance");
+ a(t(Array.prototype), false, "Array.prototype");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/of/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/of/implement.js
new file mode 100644
index 0000000000..0b1f5c8f89
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/of/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../array/of/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/of/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/of/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/of/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/of/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/of/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/of/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/of/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/of/shim.js
new file mode 100644
index 0000000000..7d18859af5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/of/shim.js
@@ -0,0 +1,89 @@
+/* eslint no-useless-call: "off" */
+// Most tests taken from https://github.com/mathiasbynens/Array.of/blob/master/tests/tests.js
+// Thanks @mathiasbynens
+
+"use strict";
+
+var defineProperty = Object.defineProperty;
+
+module.exports = function (t, a) {
+ var x = {}, testObject, MyType;
+
+ a.deep(t(), [], "No arguments");
+ a.deep(t(3), [3], "One numeric argument");
+ a.deep(t(3, "raz", null, x, undefined), [3, "raz", null, x, undefined], "Many arguments");
+
+ a(t.length, 0, "Length");
+
+ a.deep(t("abc"), ["abc"], "String");
+ a.deep(t(undefined), [undefined], "Undefined");
+ a.deep(t(null), [null], "Null");
+ a.deep(t(false), [false], "Boolean");
+ a.deep(t(-Infinity), [-Infinity], "Infinity");
+ a.deep(t(-0), [-0], "-0");
+ a.deep(t(+0), [+0], "+0");
+ a.deep(t(1), [1], "1");
+ a.deep(t(1, 2, 3), [1, 2, 3], "Numeric args");
+ a.deep(t(Number(Infinity)), [Number(Infinity)], "+Infinity");
+ a.deep(
+ t({ 0: "a", 1: "b", 2: "c", length: 3 }),
+ [{ 0: "a", 1: "b", 2: "c", length: 3 }],
+ "Array like"
+ );
+ a.deep(
+ t(undefined, null, false, -Infinity, -0, +0, 1, 2, Number(Infinity)),
+ [undefined, null, false, -Infinity, -0, +0, 1, 2, Number(Infinity)],
+ "Falsy arguments"
+ );
+
+ a.h1("Null context");
+ a.deep(t.call(null, "abc"), ["abc"], "String");
+ a.deep(t.call(null, undefined), [undefined], "Undefined");
+ a.deep(t.call(null, null), [null], "Null");
+ a.deep(t.call(null, false), [false], "Boolean");
+ a.deep(t.call(null, -Infinity), [-Infinity], "-Infinity");
+ a.deep(t.call(null, -0), [-0], "-0");
+ a.deep(t.call(null, +0), [+0], "+0");
+ a.deep(t.call(null, 1), [1], "1");
+ a.deep(t.call(null, 1, 2, 3), [1, 2, 3], "Numeric");
+ a.deep(t.call(null, Number(Infinity)), [Number(Infinity)], "+Infinity");
+ a.deep(
+ t.call(null, { 0: "a", 1: "b", 2: "c", length: 3 }),
+ [{ 0: "a", 1: "b", 2: "c", length: 3 }],
+ "Array-like"
+ );
+ a.deep(
+ t.call(null, undefined, null, false, -Infinity, -0, +0, 1, 2, Number(Infinity)),
+ [undefined, null, false, -Infinity, -0, +0, 1, 2, Number(Infinity)],
+ "Falsy"
+ );
+
+ a.h1("Other constructor context");
+ a.deep(t.call(Object, 1, 2, 3), { 0: 1, 1: 2, 2: 3, length: 3 }, "Many arguments");
+
+ testObject = Object(3);
+ testObject[0] = 1;
+ testObject[1] = 2;
+ testObject[2] = 3;
+ testObject.length = 3;
+ a.deep(t.call(Object, 1, 2, 3), testObject, "Test object");
+ a(t.call(Object).length, 0, "No arguments");
+ a.throws(
+ function () {
+ t.call(function () {
+ return Object.freeze({});
+ });
+ },
+ TypeError,
+ "Frozen instance"
+ );
+
+ // Ensure no setters are called for the indexes
+ MyType = function () {};
+ defineProperty(MyType.prototype, "0", {
+ set: function (x) {
+ throw new Error("Setter called: " + x);
+ }
+ });
+ a.deep(t.call(MyType, "abc"), { 0: "abc", length: 1 }, "Define, not set");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/to-array.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/to-array.js
new file mode 100644
index 0000000000..a1f10a4a4a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/to-array.js
@@ -0,0 +1,27 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o = [1, 2, 3];
+ a(t(o), o, "Array");
+ a.deep(t("12r3v"), ["1", "2", "r", "3", "v"], "String");
+ a.deep(
+ t(
+ (function () {
+ return arguments;
+ })(3, o, "raz")
+ ),
+ [3, o, "raz"],
+ "Arguments"
+ );
+ a.deep(
+ t(
+ (function () {
+ return arguments;
+ })(3)
+ ),
+ [3],
+ "Arguments with one numeric value"
+ );
+
+ a.deep(t({ 0: "raz", 1: "dwa", length: 2 }), ["raz", "dwa"], "Other");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/array/valid-array.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/valid-array.js
new file mode 100644
index 0000000000..a3708b22db
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/array/valid-array.js
@@ -0,0 +1,30 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+ a.throws(function () {
+ t();
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "Null");
+ a.throws(function () {
+ t(0);
+}, TypeError, "Number");
+ a.throws(function () {
+ t(true);
+}, TypeError, "Boolean");
+ a.throws(function () {
+ t("raz");
+}, TypeError, "String");
+ a.throws(function () {
+ t(function () {});
+}, TypeError, "Function");
+ a.throws(function () {
+ t({});
+}, TypeError, "Object");
+ a.throws(function () {
+ t({ length: 0 });
+}, TypeError, "Array-like");
+ a(t(x = []), x, "Array");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/boolean/is-boolean.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/boolean/is-boolean.js
new file mode 100644
index 0000000000..e36b3f34e4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/boolean/is-boolean.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t("arar"), false, "String");
+ a(t(12), false, "Number");
+ a(t(false), true, "Boolean");
+ a(t(new Boolean(false)), true, "Boolean object");
+ a(t(new Date()), false, "Date");
+ a(t(new String("raz")), false, "String object");
+ a(t({}), false, "Plain object");
+ a(t(/a/), false, "Regular expression");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/copy.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/copy.js
new file mode 100644
index 0000000000..27c996bba5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/copy.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o = new Date(), o2;
+
+ o2 = t.call(o);
+ a.not(o, o2, "Different objects");
+ a.ok(o2 instanceof Date, "Instance of Date");
+ a(o.getTime(), o2.getTime(), "Same time");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/days-in-month.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/days-in-month.js
new file mode 100644
index 0000000000..ce2dd7754d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/days-in-month.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(new Date(2001, 0, 1)), 31, "January");
+ a(t.call(new Date(2001, 1, 1)), 28, "February");
+ a(t.call(new Date(2000, 1, 1)), 29, "February (leap)");
+ a(t.call(new Date(2001, 2, 1)), 31, "March");
+ a(t.call(new Date(2001, 3, 1)), 30, "April");
+ a(t.call(new Date(2001, 4, 1)), 31, "May");
+ a(t.call(new Date(2001, 5, 1)), 30, "June");
+ a(t.call(new Date(2001, 6, 1)), 31, "July");
+ a(t.call(new Date(2001, 7, 1)), 31, "August");
+ a(t.call(new Date(2001, 8, 1)), 30, "September");
+ a(t.call(new Date(2001, 9, 1)), 31, "October");
+ a(t.call(new Date(2001, 10, 1)), 30, "November");
+ a(t.call(new Date(2001, 11, 1)), 31, "December");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/floor-day.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/floor-day.js
new file mode 100644
index 0000000000..fa929d6839
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/floor-day.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(new Date(2000, 0, 1, 13, 32, 34, 234)).valueOf(),
+ new Date(2000, 0, 1).valueOf());
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/floor-month.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/floor-month.js
new file mode 100644
index 0000000000..1df4ddbeb6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/floor-month.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(new Date(2000, 0, 15, 13, 32, 34, 234)).valueOf(),
+ new Date(2000, 0, 1).valueOf());
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/floor-year.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/floor-year.js
new file mode 100644
index 0000000000..5b78b7dcf6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/floor-year.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(new Date(2000, 5, 13, 13, 32, 34, 234)).valueOf(),
+ new Date(2000, 0, 1).valueOf());
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/format.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/format.js
new file mode 100644
index 0000000000..510b26b440
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/#/format.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var dt = new Date(2011, 2, 3, 3, 5, 5, 32);
+ a(t.call(dt, " %Y.%y.%m.%d.%H.%M.%S.%L "), " 2011.11.03.03.03.05.05.032 ");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/date/ensure-time-value.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/ensure-time-value.js
new file mode 100644
index 0000000000..39ddc23c42
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/ensure-time-value.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(12), 12, "Number in range");
+ a(t(12.23), 12, "Rounds number in range");
+ a(t(-12.63), -12, "Rounds negative number in range");
+ a.throws(
+ function () {
+ t(NaN);
+ },
+ TypeError,
+ "Throws on invalid"
+ );
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/date/is-date.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/is-date.js
new file mode 100644
index 0000000000..90ae8ad70f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/is-date.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t("arar"), false, "String");
+ a(t(12), false, "Number");
+ a(t(true), false, "Boolean");
+ a(t(new Date()), true, "Date");
+ a(t(new String("raz")), false, "String object");
+ a(t({}), false, "Plain object");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/date/is-time-value.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/is-time-value.js
new file mode 100644
index 0000000000..a21677c064
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/is-time-value.js
@@ -0,0 +1,15 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t("arar"), false, "String");
+ a(t(12), true, "Number in range");
+ a(t(true), true, "Boolean");
+ a(t(new Date()), true, "Date");
+ a(t({}), false, "Plain object");
+ a(t(NaN), false, "NaN");
+ a(t(Infinity), false, "Infinity");
+ a(t(8.64e17), false, "Beyond range");
+ a(t(8.64e15), true, "Below range");
+ a(t(-8.64e17), false, "Negative beyond range");
+ a(t(-8.64e15), true, "Negative below range");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/date/valid-date.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/valid-date.js
new file mode 100644
index 0000000000..2856cb6a86
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/date/valid-date.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var d = new Date();
+ a(t(d), d, "Date");
+ a.throws(function () {
+ t({});
+ }, "Object");
+ a.throws(function () {
+ t({ valueOf: function () {
+ return 20;
+} });
+ }, "Number object");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/error/#/throw.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/error/#/throw.js
new file mode 100644
index 0000000000..8c5d04eea3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/error/#/throw.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var e = new Error();
+ try {
+ t.call(e);
+ } catch (e2) {
+ a(e2, e);
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/error/custom.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/error/custom.js
new file mode 100644
index 0000000000..ca35c7666e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/error/custom.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var T = t, err = new T("My Error", "MY_ERROR", { errno: 123 });
+ a(err instanceof Error, true, "Instance of error");
+ a(err.constructor, Error, "Constructor");
+ a(err.name, "Error", "Name");
+ a(String(err), "Error: My Error", "String representation");
+ a(err.code, "MY_ERROR", "Code");
+ a(err.errno, 123, "Errno");
+ a(typeof err.stack, "string", "Stack trace");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/error/is-error.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/error/is-error.js
new file mode 100644
index 0000000000..423c7359e6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/error/is-error.js
@@ -0,0 +1,18 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(), false, "Undefined");
+ a(t(1), false, "Primitive");
+ a(t({}), false, "Objectt");
+ a(t({ toString: function () {
+ return "[object Error]";
+} }), false,
+ "Fake error");
+ a(t(new Error()), true, "Error");
+ a(t(new EvalError()), true, "EvalError");
+ a(t(new RangeError()), true, "RangeError");
+ a(t(new ReferenceError()), true, "ReferenceError");
+ a(t(new SyntaxError()), true, "SyntaxError");
+ a(t(new TypeError()), true, "TypeError");
+ a(t(new URIError()), true, "URIError");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/error/valid-error.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/error/valid-error.js
new file mode 100644
index 0000000000..7d032bf239
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/error/valid-error.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var e = new Error();
+ a(t(e), e, "Error");
+ a.throws(function () {
+ t({});
+ }, "Other");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/compose.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/compose.js
new file mode 100644
index 0000000000..433f3b4b13
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/compose.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var f = function (a, b) {
+ return ["a", arguments.length, a, b];
+}
+ , g = function (a) {
+ return ["b", arguments.length].concat(a);
+}
+ , h = function (a) {
+ return ["c", arguments.length].concat(a);
+};
+
+module.exports = function (t, a) {
+ a.deep(t.call(h, g, f)(1, 2), ["c", 1, "b", 1, "a", 2, 1, 2]);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/copy.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/copy.js
new file mode 100644
index 0000000000..e7988ce742
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/copy.js
@@ -0,0 +1,22 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var foo = "raz", bar = "dwa";
+ // eslint-disable-next-line func-names
+ var fn = function marko(a, b) {
+ return this + a + b + foo + bar;
+ };
+ var result, o = {};
+
+ fn.prototype = o;
+
+ fn.foo = "raz";
+
+ result = t.call(fn);
+
+ a(result.length, fn.length, "Length");
+ a(result.name, fn.name, "Length");
+ a(result.call("marko", "el", "fe"), "markoelferazdwa", "Body");
+ a(result.prototype, fn.prototype, "Prototype");
+ a(result.foo, fn.foo, "Custom property");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/curry.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/curry.js
new file mode 100644
index 0000000000..c30313a0d4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/curry.js
@@ -0,0 +1,20 @@
+"use strict";
+
+var toArray = require("../../../array/to-array")
+
+ , f = function () {
+ return toArray(arguments);
+};
+
+module.exports = function (t, a) {
+ var x, y = {}, z;
+ a.deep(t.call(f, 0, 1, 2)(3), [], "0 arguments");
+ x = t.call(f, 5, {});
+ a(x.length, 5, "Length #1");
+ z = x(1, 2);
+ a(z.length, 3, "Length #2");
+ z = z(3, 4);
+ a(z.length, 1, "Length #1");
+ a.deep(z(5, 6), [1, 2, 3, 4, 5], "Many arguments");
+ a.deep(x(8, 3)(y, 45)("raz", 6), [8, 3, y, 45, "raz"], "Many arguments #2");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/lock.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/lock.js
new file mode 100644
index 0000000000..08ea9505c7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/lock.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(function () {
+ return arguments.length;
+ })(1, 2, 3), 0);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/microtask-delay.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/microtask-delay.js
new file mode 100644
index 0000000000..8bd0dc1256
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/microtask-delay.js
@@ -0,0 +1,22 @@
+"use strict";
+
+var nextTick = require("next-tick");
+
+module.exports = function (t, a, d) {
+ var wasInvoked = false, args = [{}, {}], context = {};
+ var target = t.call(function () {
+ a(this, context);
+ a.deep(arguments, args);
+ wasInvoked = true;
+ });
+
+ nextTick(function () {
+ a(wasInvoked, false);
+ target.apply(context, args);
+ a(wasInvoked, false);
+ nextTick(function () {
+ a(wasInvoked, true);
+ d();
+ });
+ });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/not.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/not.js
new file mode 100644
index 0000000000..64fff71500
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/not.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var identity = require("../../../function/identity")
+ , noop = require("../../../function/noop");
+
+module.exports = function (t, a) {
+ a(t.call(identity)(""), true, "Falsy");
+ a(t.call(noop)(), true, "Undefined");
+ a(t.call(identity)({}), false, "Any object");
+ a(t.call(identity)(true), false, "True");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/partial.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/partial.js
new file mode 100644
index 0000000000..7e9428fa90
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/partial.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var toArray = require("../../../array/to-array")
+
+ , f = function () {
+ return toArray(arguments);
+};
+
+module.exports = function (t, a) {
+ a.deep(t.call(f, 1)(2, 3), [1, 2, 3]);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/spread.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/spread.js
new file mode 100644
index 0000000000..d082fcabcc
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/spread.js
@@ -0,0 +1,10 @@
+"use strict";
+
+var f = function (a, b) {
+ return this[a] + this[b];
+}
+ , o = { a: 3, b: 4 };
+
+module.exports = function (t, a) {
+ a(t.call(f).call(o, ["a", "b"]), 7);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/to-string-tokens.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/to-string-tokens.js
new file mode 100644
index 0000000000..0691cc394e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/#/to-string-tokens.js
@@ -0,0 +1,33 @@
+/* eslint no-eval: "off" */
+
+"use strict";
+
+module.exports = function (t, a) {
+ a.deep(
+ t.call(function (a, b) {
+ return this[a] + this[b];
+ }),
+ { args: "a, b", body: "\n\t\t\treturn this[a] + this[b];\n\t\t" }
+ );
+ a.deep(t.call(function () {}), { args: "", body: "" });
+ // eslint-disable-next-line no-unused-vars
+ a.deep(t.call(function (raz) {}), { args: "raz", body: "" });
+ a.deep(
+ t.call(function () {
+ Object();
+ }),
+ { args: "", body: "\n\t\t\tObject();\n\t\t" }
+ );
+
+ try {
+ eval("(() => {})");
+ } catch (e) {
+ // Non ES2015 env
+ return;
+ }
+
+ a.deep(t.call(eval("(() => {})")), { args: "", body: "" });
+ a.deep(t.call(eval("((elo) => foo)")), { args: "elo", body: "foo" });
+ a.deep(t.call(eval("(elo => foo)")), { args: "elo", body: "foo" });
+ a.deep(t.call(eval("((elo, bar) => foo())")), { args: "elo, bar", body: "foo()" });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/_define-length.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/_define-length.js
new file mode 100644
index 0000000000..324e273c02
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/_define-length.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var foo = "raz", bar = "dwa"
+ , fn = function (a, b) {
+ return this + a + b + foo + bar;
+}
+ , result;
+
+ result = t(fn, 3);
+ a(result.call("marko", "el", "fe"), "markoelferazdwa", "Content");
+ a(result.length, 3, "Length");
+ a(result.prototype, fn.prototype, "Prototype");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/constant.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/constant.js
new file mode 100644
index 0000000000..4ba2d8983f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/constant.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var o = {};
+
+module.exports = function (t, a) {
+ a(t(o)(), o);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/identity.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/identity.js
new file mode 100644
index 0000000000..a5b0b1bc9f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/identity.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var o = {};
+
+module.exports = function (t, a) {
+ a(t(o), o);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/invoke.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/invoke.js
new file mode 100644
index 0000000000..6268f47e9e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/invoke.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var constant = require("../../function/constant")
+
+ , o = { b: constant("c") };
+
+module.exports = function (t, a) {
+ a(t("b")(o), "c");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/is-arguments.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/is-arguments.js
new file mode 100644
index 0000000000..5bd54ac7e7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/is-arguments.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var args, dummy;
+ args = (function () {
+ return arguments;
+}());
+ dummy = { 0: 1, 1: 2 };
+ Object.defineProperty(dummy, "length", { value: 2 });
+ a(t(args), true, "Arguments");
+ a(t(dummy), false, "Dummy");
+ a(t([]), false, "Array");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/is-function.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/is-function.js
new file mode 100644
index 0000000000..fe89798514
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/is-function.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var o = { call: Function.prototype.call, apply: Function.prototype.apply };
+
+module.exports = function (t, a) {
+ a(t(function () {}), true, "Function is function");
+ a(t(o), false, "Plain object is not function");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/noop.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/noop.js
new file mode 100644
index 0000000000..34de85ab63
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/noop.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(1, 2, 3), "undefined");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/pluck.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/pluck.js
new file mode 100644
index 0000000000..f8954c59db
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/pluck.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var o = { foo: "bar" };
+
+module.exports = function (t, a) {
+ a(t("foo")(o), o.foo);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/function/valid-function.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/valid-function.js
new file mode 100644
index 0000000000..30c0360845
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/function/valid-function.js
@@ -0,0 +1,22 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var f = function () {};
+ a(t(f), f, "Function");
+ // eslint-disable-next-line no-new-func
+ f = new Function();
+ a(t(f), f, "Function");
+ a.throws(function () {
+ t({});
+ }, "Object");
+ a.throws(function () {
+ t(/re/);
+ }, "RegExp");
+ a.throws(function () {
+ t({
+ call: function () {
+ return 20;
+ }
+ });
+ }, "Plain object");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/global.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/global.js
new file mode 100644
index 0000000000..554ad4ccd8
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/global.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.ok(t && typeof t === "object");
+ a(typeof t.Array, "function");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/iterable/for-each.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/iterable/for-each.js
new file mode 100644
index 0000000000..d6c3872aa1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/iterable/for-each.js
@@ -0,0 +1,42 @@
+"use strict";
+
+var ArrayIterator = require("es6-iterator/array")
+
+ , slice = Array.prototype.slice;
+
+module.exports = function (t, a) {
+ var i = 0, x = ["raz", "dwa", "trzy"], y = {};
+ t(x, function () {
+ a.deep(slice.call(arguments, 0, 1), [x[i]], "Array " + i + "#");
+ a(this, y, "Array: context: " + i++ + "#");
+ }, y);
+ i = 0;
+ t((function () {
+ return arguments;
+}("raz", "dwa", "trzy")), function () {
+ a.deep(slice.call(arguments, 0, 1), [x[i]], "Arguments" + i + "#");
+ a(this, y, "Arguments: context: " + i++ + "#");
+ }, y);
+ i = 0;
+ t({ 0: "raz", 1: "dwa", 2: "trzy", length: 3 }, function () {
+ a.deep(slice.call(arguments, 0, 1), [x[i]], "Array-like" + i + "#");
+ a(this, y, "Array-like: context: " + i++ + "#");
+ }, y);
+ i = 0;
+ t(x = "foo", function () {
+ a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+ a(this, y, "Regular String: context: " + i++ + "#");
+ }, y);
+ i = 0;
+ x = ["r", "💩", "z"];
+ t("r💩z", function () {
+ a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+ a(this, y, "Unicode String: context: " + i++ + "#");
+ }, y);
+ i = 0;
+ t(new ArrayIterator(x), function () {
+ a.deep(slice.call(arguments, 0, 1), [x[i]], "Iterator " + i + "#");
+ a(this, y, "Iterator: context: " + i++ + "#");
+ }, y);
+
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/iterable/is.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/iterable/is.js
new file mode 100644
index 0000000000..04d34a83c0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/iterable/is.js
@@ -0,0 +1,28 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator;
+
+module.exports = function (t, a) {
+ var x;
+ a(t([]), true, "Array");
+ a(t(""), true, "String");
+ a(
+ t(
+ (function () {
+ return arguments;
+ })()
+ ),
+ true,
+ "Arguments"
+ );
+ a(t({ length: 0 }), true, "List object");
+ a(t(function () {}), false, "Function");
+ a(t({}), false, "Plain object");
+ a(t(/raz/), false, "Regexp");
+ a(t(), false, "No argument");
+ a(t(null), false, "Null");
+ a(t(undefined), false, "Undefined");
+ x = {};
+ x[iteratorSymbol] = function () {};
+ a(t(x), true, "Iterable");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/iterable/validate-object.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/iterable/validate-object.js
new file mode 100644
index 0000000000..83a9ca15e7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/iterable/validate-object.js
@@ -0,0 +1,34 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator;
+
+module.exports = function (t, a) {
+ var x;
+ a.throws(function () {
+ t(0);
+}, TypeError, "0");
+ a.throws(function () {
+ t(false);
+}, TypeError, "false");
+ a.throws(function () {
+ t("");
+}, TypeError, "String");
+ a.throws(function () {
+ t({});
+}, TypeError, "Plain Object");
+ a.throws(function () {
+ t(function () {});
+}, TypeError, "Function");
+ a(t(x = new String("raz")), x, "String object"); // Jslint: ignore
+
+ a(t(x = { length: 1 }), x, "Array like");
+ a.throws(function () {
+ t();
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "null");
+ x = {};
+ x[iteratorSymbol] = function () {};
+ a(t(x), x, "Iterable");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/iterable/validate.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/iterable/validate.js
new file mode 100644
index 0000000000..61cab5d38f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/iterable/validate.js
@@ -0,0 +1,32 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator;
+
+module.exports = function (t, a) {
+ var x;
+ a.throws(function () {
+ t(0);
+}, TypeError, "0");
+ a.throws(function () {
+ t(false);
+}, TypeError, "false");
+ a(t(""), "", "''");
+ a.throws(function () {
+ t({});
+}, TypeError, "Plain Object");
+ a.throws(function () {
+ t(function () {});
+}, TypeError, "Function");
+ a(t(x = new String("raz")), x, "String object"); // Jslint: ignore
+
+ a(t(x = { length: 1 }), x, "Array like");
+ a.throws(function () {
+ t();
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "null");
+ x = {};
+ x[iteratorSymbol] = function () {};
+ a(t(x), x, "Iterable");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/json/safe-stringify.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/json/safe-stringify.js
new file mode 100644
index 0000000000..2d13f3def1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/json/safe-stringify.js
@@ -0,0 +1,26 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({ foo: "bar" }), JSON.stringify({ foo: "bar" }));
+ a(t({ foo: { elo: 12 } }), "{\"foo\":{\"elo\":12}}");
+ a(t({ foo: { elo: 12,
+mel: {
+ toJSON: function () {
+ throw new Error("Nu nu!");
+}
+ } } }), "{\"foo\":{\"elo\":12}}");
+ a(t({ foo: { elo: 12 },
+mel: {
+ toJSON: function () {
+ throw new Error("Nu nu!");
+}
+ } }), "{\"foo\":{\"elo\":12}}");
+ a(t({ foo: { elo: 12 },
+mel: [
+"raz", {
+ toJSON: function () {
+ throw new Error("Nu nu!");
+}
+ }, 0, 2
+] }), "{\"foo\":{\"elo\":12},\"mel\":[\"raz\",0,2]}");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/_decimal-adjust.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/_decimal-adjust.js
new file mode 100644
index 0000000000..6da15ecf8e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/_decimal-adjust.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ // Just sanity check, as real tests are in 'round', 'ceil' and 'floor' variants
+ a(t("round")(55.55, -1), 55.6);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/_pack-ieee754.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/_pack-ieee754.js
new file mode 100644
index 0000000000..7e56f7f299
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/_pack-ieee754.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.deep(t(1.337, 8, 23), [63, 171, 34, 209]);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/_unpack-ieee754.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/_unpack-ieee754.js
new file mode 100644
index 0000000000..52730f389b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/_unpack-ieee754.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.deep(t([63, 171, 34, 209], 8, 23), 1.3370000123977661);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/acosh/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/acosh/implement.js
new file mode 100644
index 0000000000..d7bcc28aeb
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/acosh/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/acosh/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/acosh/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/acosh/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/acosh/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/acosh/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/acosh/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/acosh/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/acosh/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/acosh/shim.js
new file mode 100644
index 0000000000..17ac18193b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/acosh/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(-1), NaN, "Negative");
+ a(t(0), NaN, "Zero");
+ a(t(0.5), NaN, "Below 1");
+ a(t(1), 0, "1");
+ a(t(2), 1.3169578969248166, "Other");
+ a(t(Infinity), Infinity, "Infinity");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/asinh/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/asinh/implement.js
new file mode 100644
index 0000000000..ab4b969146
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/asinh/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/asinh/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/asinh/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/asinh/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/asinh/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/asinh/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/asinh/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/asinh/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/asinh/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/asinh/shim.js
new file mode 100644
index 0000000000..a4328d2e1f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/asinh/shim.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(0), 0, "Zero");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(-Infinity), -Infinity, "-Infinity");
+ a(t(-2), -1.4436354751788103, "Negative");
+ a(t(2), 1.4436354751788103, "Positive");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/atanh/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/atanh/implement.js
new file mode 100644
index 0000000000..bcd3bd875f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/atanh/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/atanh/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/atanh/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/atanh/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/atanh/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/atanh/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/atanh/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/atanh/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/atanh/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/atanh/shim.js
new file mode 100644
index 0000000000..f58709cc4a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/atanh/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(-2), NaN, "Less than -1");
+ a(t(2), NaN, "Greater than 1");
+ a(t(-1), -Infinity, "-1");
+ a(t(1), Infinity, "1");
+ a(t(0), 0, "Zero");
+ a(Math.round(t(0.5) * 1e15), 549306144334055, "Other");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cbrt/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cbrt/implement.js
new file mode 100644
index 0000000000..132e9296d1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cbrt/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/cbrt/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cbrt/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cbrt/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cbrt/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cbrt/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cbrt/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cbrt/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cbrt/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cbrt/shim.js
new file mode 100644
index 0000000000..fc1beee4c8
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cbrt/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(0), 0, "Zero");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(-Infinity), -Infinity, "-Infinity");
+ a(t(-1), -1, "-1");
+ a(t(1), 1, "1");
+ a(t(2), 1.2599210498948732, "Ohter");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/ceil-10.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/ceil-10.js
new file mode 100644
index 0000000000..1c4a386626
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/ceil-10.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(55.51, -1), 55.6);
+ a(t(51, 1), 60);
+ a(t(-55.59, -1), -55.5);
+ a(t(-59, 1), -50);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/clz32/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/clz32/implement.js
new file mode 100644
index 0000000000..36f529f15f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/clz32/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/clz32/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/clz32/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/clz32/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/clz32/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/clz32/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/clz32/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/clz32/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/clz32/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/clz32/shim.js
new file mode 100644
index 0000000000..4d8dd2fa0e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/clz32/shim.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(1), 31, "1");
+ a(t(1000), 22, "1000");
+ a(t(), 32, "No arguments");
+ a(t(Infinity), 32, "Infinity");
+ a(t(-Infinity), 32, "-Infinity");
+ a(t("foo"), 32, "String");
+ a(t(true), 31, "Boolean");
+ a(t(3.5), 30, "Float");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cosh/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cosh/implement.js
new file mode 100644
index 0000000000..6ad42efb04
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cosh/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/cosh/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cosh/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cosh/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cosh/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cosh/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cosh/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cosh/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cosh/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cosh/shim.js
new file mode 100644
index 0000000000..0b917c7062
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/cosh/shim.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(0), 1, "Zero");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(-Infinity), Infinity, "-Infinity");
+ a(t(1), 1.5430806348152437, "1");
+ a(t(Number.MAX_VALUE), Infinity);
+ a(t(-Number.MAX_VALUE), Infinity);
+ a(t(Number.MIN_VALUE), 1);
+ a(t(-Number.MIN_VALUE), 1);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/expm1/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/expm1/implement.js
new file mode 100644
index 0000000000..7fb528a3eb
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/expm1/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/expm1/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/expm1/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/expm1/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/expm1/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/expm1/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/expm1/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/expm1/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/expm1/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/expm1/shim.js
new file mode 100644
index 0000000000..cebb063c6c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/expm1/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(0), 0, "Zero");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(-Infinity), -1, "-Infinity");
+ a(t(1).toFixed(15), "1.718281828459045", "1");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/floor-10.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/floor-10.js
new file mode 100644
index 0000000000..a086d80fe3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/floor-10.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(55.59, -1), 55.5);
+ a(t(59, 1), 50);
+ a(t(-55.51, -1), -55.6);
+ a(t(-51, 1), -60);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/fround/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/fround/implement.js
new file mode 100644
index 0000000000..c7b9ad4a94
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/fround/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/fround/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/fround/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/fround/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/fround/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/fround/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/fround/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/fround/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/fround/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/fround/shim.js
new file mode 100644
index 0000000000..0525bfab97
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/fround/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(0), 0, "Zero");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(-Infinity), -Infinity, "-Infinity");
+ a(t(1.337), 1.3370000123977661, "1");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/hypot/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/hypot/implement.js
new file mode 100644
index 0000000000..29c87fe93e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/hypot/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/hypot/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/hypot/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/hypot/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/hypot/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/hypot/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/hypot/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/hypot/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/hypot/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/hypot/shim.js
new file mode 100644
index 0000000000..89e4657c1e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/hypot/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(), 0, "No arguments");
+ a(t(0, -0, 0), 0, "Zeros");
+ a(t(4, NaN, Infinity), Infinity, "Infinity");
+ a(t(4, NaN, -Infinity), Infinity, "Infinity");
+ a(t(4, NaN, 34), NaN, "NaN");
+ a(t(3, 4), 5, "#1");
+ a(t(3, 4, 5), 7.0710678118654755, "#2");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/imul/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/imul/implement.js
new file mode 100644
index 0000000000..b633a72b5f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/imul/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/imul/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/imul/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/imul/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/imul/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/imul/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/imul/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/imul/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/imul/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/imul/shim.js
new file mode 100644
index 0000000000..a8d4e9060e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/imul/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(), 0, "No arguments");
+ a(t(0, 0), 0, "Zeros");
+ a(t(2, 4), 8, "#1");
+ a(t(-1, 8), -8, "#2");
+ a(t(0xfffffffe, 5), -10, "#3");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log10/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log10/implement.js
new file mode 100644
index 0000000000..afc9dab173
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log10/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/log10/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log10/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log10/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log10/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log10/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log10/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log10/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log10/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log10/shim.js
new file mode 100644
index 0000000000..d0696287f9
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log10/shim.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(-0.5), NaN, "Less than 0");
+ a(t(0), -Infinity, "0");
+ a(t(1), 0, "1");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(2), 0.3010299956639812, "Other");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log1p/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log1p/implement.js
new file mode 100644
index 0000000000..baa2ab159f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log1p/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/log1p/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log1p/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log1p/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log1p/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log1p/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log1p/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log1p/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log1p/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log1p/shim.js
new file mode 100644
index 0000000000..66b400ccde
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log1p/shim.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(-1.5), NaN, "Less than -1");
+ a(t(-1), -Infinity, "-1");
+ a(t(0), 0, "0");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(1), 0.6931471805599453, "Other");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log2/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log2/implement.js
new file mode 100644
index 0000000000..43bdf43601
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log2/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/log2/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log2/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log2/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log2/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log2/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log2/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log2/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log2/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log2/shim.js
new file mode 100644
index 0000000000..f587e3393a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/log2/shim.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(-0.5), NaN, "Less than 0");
+ a(t(0), -Infinity, "0");
+ a(t(1), 0, "1");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(3).toFixed(15), "1.584962500721156", "Other");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/round-10.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/round-10.js
new file mode 100644
index 0000000000..c7ae38c4a8
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/round-10.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(55.55, -1), 55.6);
+ a(t(55.549, -1), 55.5);
+ a(t(55, 1), 60);
+ a(t(54.9, 1), 50);
+ a(t(-55.55, -1), -55.5);
+ a(t(-55.551, -1), -55.6);
+ a(t(-55, 1), -50);
+ a(t(-55.1, 1), -60);
+ a(t(1.005, -2), 1.01);
+ a(t(-1.005, -2), -1.0);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sign/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sign/implement.js
new file mode 100644
index 0000000000..409beb1f58
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sign/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/sign/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sign/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sign/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sign/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sign/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sign/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sign/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sign/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sign/shim.js
new file mode 100644
index 0000000000..071ea07e17
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sign/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var is = require("../../../object/is");
+
+module.exports = function (t, a) {
+ a(is(t(0), +0), true, "+0");
+ a(is(t(-0), -0), true, "-0");
+ a(t({}), NaN, true, "NaN");
+ a(t(-234234234), -1, "Negative");
+ a(t(234234234), 1, "Positive");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sinh/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sinh/implement.js
new file mode 100644
index 0000000000..ca4b5e7b5e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sinh/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/sinh/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sinh/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sinh/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sinh/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sinh/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sinh/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sinh/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sinh/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sinh/shim.js
new file mode 100644
index 0000000000..f168a7f716
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/sinh/shim.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(0), 0, "Zero");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(-Infinity), -Infinity, "-Infinity");
+ a(t(1), 1.1752011936438014, "1");
+ a(t(Number.MAX_VALUE), Infinity);
+ a(t(-Number.MAX_VALUE), -Infinity);
+ a(t(Number.MIN_VALUE), 5e-324);
+ a(t(-Number.MIN_VALUE), -5e-324);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/tanh/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/tanh/implement.js
new file mode 100644
index 0000000000..8503711f45
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/tanh/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/tanh/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/tanh/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/tanh/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/tanh/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/tanh/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/tanh/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/tanh/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/tanh/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/tanh/shim.js
new file mode 100644
index 0000000000..5da3c08751
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/tanh/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(0), 0, "Zero");
+ a(t(Infinity), 1, "Infinity");
+ a(t(-Infinity), -1, "-Infinity");
+ a(t(1), 0.7615941559557649, "1");
+ a(t(Number.MAX_VALUE), 1);
+ a(t(-Number.MAX_VALUE), -1);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/trunc/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/trunc/implement.js
new file mode 100644
index 0000000000..0d3374fc93
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/trunc/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/trunc/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/trunc/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/trunc/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/trunc/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/trunc/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/trunc/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/trunc/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/math/trunc/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/trunc/shim.js
new file mode 100644
index 0000000000..b80e868303
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/math/trunc/shim.js
@@ -0,0 +1,16 @@
+"use strict";
+
+var is = require("../../../object/is");
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(0), 0, "Zero");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(-Infinity), -Infinity, "-Infinity");
+ a(is(t(0.234), 0), true, "0");
+ a(is(t(-0.234), -0), true, "-0");
+ a(t(13.7), 13, "Positive #1");
+ a(t(12.3), 12, "Positive #2");
+ a(t(-12.3), -12, "Negative #1");
+ a(t(-14.7), -14, "Negative #2");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/#/pad.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/#/pad.js
new file mode 100644
index 0000000000..cc8aa5e402
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/#/pad.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(78, 4), "0078");
+ a(t.call(65.12323, 4, 3), "0065.123", "Precision");
+ a(t.call(65, 4, 3), "0065.000", "Precision integer");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/epsilon/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/epsilon/implement.js
new file mode 100644
index 0000000000..d387b7c1e5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/epsilon/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../number/epsilon/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/epsilon/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/epsilon/index.js
new file mode 100644
index 0000000000..d20e5c3bc4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/epsilon/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t, "number");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/epsilon/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/epsilon/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/epsilon/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-finite/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-finite/implement.js
new file mode 100644
index 0000000000..5300de627b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-finite/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../number/is-finite/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-finite/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-finite/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-finite/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-finite/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-finite/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-finite/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-finite/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-finite/shim.js
new file mode 100644
index 0000000000..8fa004fd44
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-finite/shim.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(2), true, "Number");
+ a(t("23"), false, "Not numeric");
+ a(t(NaN), false, "NaN");
+ a(t(Infinity), false, "Infinity");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-integer/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-integer/implement.js
new file mode 100644
index 0000000000..2290b25077
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-integer/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../number/is-integer/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-integer/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-integer/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-integer/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-integer/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-integer/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-integer/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-integer/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-integer/shim.js
new file mode 100644
index 0000000000..e367990bb3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-integer/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(2), true, "Number");
+ a(t(2.34), false, "Float");
+ a(t("23"), false, "Not numeric");
+ a(t(NaN), false, "NaN");
+ a(t(Infinity), false, "Infinity");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-nan/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-nan/implement.js
new file mode 100644
index 0000000000..10fa084edb
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-nan/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../number/is-nan/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-nan/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-nan/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-nan/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-nan/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-nan/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-nan/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-nan/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-nan/shim.js
new file mode 100644
index 0000000000..31810474e9
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-nan/shim.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(2), false, "Number");
+ a(t({}), false, "Not numeric");
+ a(t(NaN), true, "NaN");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-natural.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-natural.js
new file mode 100644
index 0000000000..8fe4dcc464
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-natural.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(2), true, "Number");
+ a(t(-2), false, "Negative");
+ a(t(2.34), false, "Float");
+ a(t("23"), false, "Not numeric");
+ a(t(NaN), false, "NaN");
+ a(t(Infinity), false, "Infinity");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-number.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-number.js
new file mode 100644
index 0000000000..9cd670c1bd
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-number.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(0), true, "Zero");
+ a(t(NaN), true, "NaN");
+ a(t(Infinity), true, "Infinity");
+ a(t(12), true, "Number");
+ a(t(false), false, "Boolean");
+ a(t(new Date()), false, "Date");
+ a(t(new Number(2)), true, "Number object");
+ a(t("asdfaf"), false, "String");
+ a(t(""), false, "Empty String");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-safe-integer/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-safe-integer/implement.js
new file mode 100644
index 0000000000..96f634b16e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-safe-integer/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../number/is-safe-integer/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-safe-integer/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-safe-integer/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-safe-integer/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-safe-integer/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-safe-integer/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-safe-integer/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-safe-integer/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-safe-integer/shim.js
new file mode 100644
index 0000000000..a4ea6913c7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/is-safe-integer/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(2), true, "Number");
+ a(t(2.34), false, "Float");
+ a(t(Math.pow(2, 53)), false, "Too large");
+ a(t(Math.pow(2, 53) - 1), true, "Maximum");
+ a(t("23"), false, "Not numeric");
+ a(t(NaN), false, "NaN");
+ a(t(Infinity), false, "Infinity");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/max-safe-integer/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/max-safe-integer/implement.js
new file mode 100644
index 0000000000..1928f3410f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/max-safe-integer/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../number/max-safe-integer/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/max-safe-integer/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/max-safe-integer/index.js
new file mode 100644
index 0000000000..d20e5c3bc4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/max-safe-integer/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t, "number");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/max-safe-integer/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/max-safe-integer/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/max-safe-integer/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/min-safe-integer/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/min-safe-integer/implement.js
new file mode 100644
index 0000000000..f8b309a8c7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/min-safe-integer/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../number/min-safe-integer/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/min-safe-integer/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/min-safe-integer/index.js
new file mode 100644
index 0000000000..d20e5c3bc4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/min-safe-integer/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t, "number");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/min-safe-integer/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/min-safe-integer/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/min-safe-integer/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/to-integer.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/to-integer.js
new file mode 100644
index 0000000000..b7b975f568
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/to-integer.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), 0, "NaN");
+ a(t(20), 20, "Positive integer");
+ a(t("-20"), -20, "String negative integer");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(15.343), 15, "Float");
+ a(t(-15.343), -15, "Negative float");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/to-pos-integer.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/to-pos-integer.js
new file mode 100644
index 0000000000..27c7cdfae8
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/to-pos-integer.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), 0, "NaN");
+ a(t(20), 20, "Positive integer");
+ a(t(-20), 0, "Negative integer");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(15.343), 15, "Float");
+ a(t(-15.343), 0, "Negative float");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/number/to-uint32.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/to-uint32.js
new file mode 100644
index 0000000000..7eea42f5f3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/number/to-uint32.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), 0, "Not numeric");
+ a(t(-4), 4294967292, "Negative");
+ a(t(133432), 133432, "Positive");
+ a(t(8589934592), 0, "Greater than maximum");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/_iterate.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/_iterate.js
new file mode 100644
index 0000000000..d7728f4297
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/_iterate.js
@@ -0,0 +1,30 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o = { raz: 1, dwa: 2, trzy: 3 }
+ , o2 = {}, o3 = {}, arr, i = -1;
+
+ t = t("forEach");
+ t(o, function (value, name, self, index) {
+ o2[name] = value;
+ a(index, ++i, "Index");
+ a(self, o, "Self");
+ a(this, o3, "Scope");
+ }, o3);
+ a.deep(o2, o);
+
+ arr = [];
+ o2 = {};
+ i = -1;
+ t(o, function (value, name, self, index) {
+ arr.push(value);
+ o2[name] = value;
+ a(index, ++i, "Index");
+ a(self, o, "Self");
+ a(this, o3, "Scope");
+ }, o3, function (a, b) {
+ return o[b] - o[a];
+ });
+ a.deep(o2, o, "Sort by Values: Content");
+ a.deep(arr, [3, 2, 1], "Sort by Values: Order");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/assign-deep.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/assign-deep.js
new file mode 100644
index 0000000000..071eeb7394
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/assign-deep.js
@@ -0,0 +1,15 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o1 = { a: 1, b: 2 }, o2 = { b: 3, c: 4 };
+
+ a(t(o1, o2), o1, "Returns self");
+ a.deep(o1, { a: 1, b: 3, c: 4 }, "Single: content");
+
+ a.deep(t({}, o1, o2), { a: 1, b: 3, c: 4 }, "Multi argument");
+
+ var obj1 = { foo: { bar: 3, marko: true } }
+ , obj2 = { foo: { elo: 12, marko: false }, miszka: [23] };
+ a.deep(t({}, obj1, obj2), { foo: { bar: 3, marko: false, elo: 12 }, miszka: [23] });
+ a(t(true), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/assign/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/assign/implement.js
new file mode 100644
index 0000000000..c3e0396bae
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/assign/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../object/assign/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/assign/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/assign/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/assign/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/assign/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/assign/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/assign/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/assign/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/assign/shim.js
new file mode 100644
index 0000000000..360749076e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/assign/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o1 = { a: 1, b: 2 }
+ , o2 = { b: 3, c: 4 };
+
+ a(t(o1, o2), o1, "Returns self");
+ a.deep(o1, { a: 1, b: 3, c: 4 }, "Single: content");
+
+ a.deep(t({}, o1, o2), { a: 1, b: 3, c: 4 }, "Multi argument");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/clear.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/clear.js
new file mode 100644
index 0000000000..5735e7967c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/clear.js
@@ -0,0 +1,13 @@
+"use strict";
+
+var isEmpty = require("../../object/is-empty");
+
+module.exports = function (t, a) {
+ var x = {};
+ a(t(x), x, "Empty: Returns same object");
+ a(isEmpty(x), true, "Empty: Not changed");
+ x.foo = "raz";
+ x.bar = "dwa";
+ a(t(x), x, "Same object");
+ a(isEmpty(x), true, "Emptied");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/compact.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/compact.js
new file mode 100644
index 0000000000..353f6f3277
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/compact.js
@@ -0,0 +1,20 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = {}, y = {}, z;
+ z = t(x);
+ a.not(z, x, "Returns different object");
+ a.deep(z, {}, "Empty on empty");
+
+ x = { foo: "bar",
+a: 0,
+b: false,
+c: "",
+d: "0",
+e: null,
+bar: y,
+ elo: undefined };
+ z = t(x);
+ a.deep(z, { foo: "bar", a: 0, b: false, c: "", d: "0", bar: y },
+ "Cleared null values");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/compare.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/compare.js
new file mode 100644
index 0000000000..23cc511607
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/compare.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var d = new Date();
+
+ a.ok(t(12, 3) > 0, "Numbers");
+ a.ok(t(2, 13) < 0, "Numbers #2");
+ a.ok(t("aaa", "aa") > 0, "Strings");
+ a.ok(t("aa", "ab") < 0, "Strings #2");
+ a(t("aa", "aa"), 0, "Strings same");
+ a(t(d, new Date(d.getTime())), 0, "Same date");
+ a.ok(t(d, new Date(d.getTime() + 1)) < 0, "Different date");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/copy-deep.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/copy-deep.js
new file mode 100644
index 0000000000..93813830f9
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/copy-deep.js
@@ -0,0 +1,35 @@
+"use strict";
+
+var stringify = JSON.stringify;
+
+module.exports = function (t, a) {
+ var o = { 1: "raz", 2: "dwa", 3: "trzy" }, no = t(o);
+
+ a.not(no, o, "Return different object");
+ a(stringify(no), stringify(o), "Match properties and values");
+
+ o = {
+ foo: "bar",
+ raz: {
+ dwa: "dwa",
+ trzy: { cztery: "pięć", sześć: "siedem" },
+ osiem: {},
+ dziewięć: function () {}
+ },
+ dziesięć: 10,
+ jedenaście: ["raz", ["dwa", "trzy", { elo: "true" }]]
+ };
+ o.raz.rec = o;
+
+ no = t(o);
+ a.not(o.raz, no.raz, "Deep");
+ a.not(o.raz.trzy, no.raz.trzy, "Deep #2");
+ a(stringify(o.raz.trzy), stringify(no.raz.trzy), "Deep content");
+ a(no.raz.rec, no, "Recursive");
+ a.not(o.raz.osiem, no.raz.osiem, "Empty object");
+ a(o.raz["dziewięć"], no.raz["dziewięć"], "Function");
+ a.not(o["jedenaście"], no["jedenaście"]);
+ a.not(o["jedenaście"][1], no["jedenaście"][1]);
+ a.not(o["jedenaście"][1][2], no["jedenaście"][1][2]);
+ a(t(true), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/copy.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/copy.js
new file mode 100644
index 0000000000..a5e2c3480a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/copy.js
@@ -0,0 +1,30 @@
+"use strict";
+
+var stringify = JSON.stringify;
+
+module.exports = function (t, a) {
+ var o = { 1: "raz", 2: "dwa", 3: "trzy" }, no = t(o);
+
+ a.not(no, o, "Return different object");
+ a(stringify(no), stringify(o), "Match properties and values");
+
+ o = {
+ foo: "bar",
+ raz: {
+ dwa: "dwa",
+ trzy: { cztery: "pięć", sześć: "siedem" },
+ osiem: {},
+ dziewięć: function () {}
+ },
+ dziesięć: 10
+ };
+ o.raz.rec = o;
+
+ no = t(o);
+ a(o.raz, no.raz, "Shallow");
+
+ a.deep(t(o, ["foo"]), { foo: "bar" });
+ a.deep(t(Object.create(o), ["foo"]), { foo: "bar" });
+ a.deep(t(o, ["foo", "habla"]), { foo: "bar" });
+ a.deep(t(o, ["foo", "habla"], { ensure: true }), { foo: "bar", habla: undefined });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/count.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/count.js
new file mode 100644
index 0000000000..ec1c504502
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/count.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), 0, "Empty");
+ a(t({ raz: 1, dwa: null, trzy: undefined, cztery: 0 }), 4,
+ "Some properties");
+ a(t(Object.defineProperties({}, {
+ raz: { value: "raz" },
+ dwa: { value: "dwa", enumerable: true }
+ })), 1, "Some properties hidden");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/create.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/create.js
new file mode 100644
index 0000000000..c9f3029f68
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/create.js
@@ -0,0 +1,22 @@
+"use strict";
+
+var setPrototypeOf = require("../../object/set-prototype-of")
+
+ , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (t, a) {
+ var x = {}, obj;
+
+ a(getPrototypeOf(t(x)), x, "Normal object");
+ a(getPrototypeOf(t(null)),
+ (setPrototypeOf && setPrototypeOf.nullPolyfill) || null, "Null");
+
+ a.h1("Properties");
+ a.h2("Normal object");
+ a(getPrototypeOf(obj = t(x, { foo: { value: "bar" } })), x, "Prototype");
+ a(obj.foo, "bar", "Property");
+ a.h2("Null");
+ a(getPrototypeOf(obj = t(null, { foo: { value: "bar2" } })),
+ (setPrototypeOf && setPrototypeOf.nullPolyfill) || null, "Prototype");
+ a(obj.foo, "bar2", "Property");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-array.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-array.js
new file mode 100644
index 0000000000..fd3c32c979
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-array.js
@@ -0,0 +1,55 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var arr = [];
+ a(t(arr), arr, "Array");
+ a(t(""), "", "String");
+ var args = (function () {
+ return arguments;
+ }());
+ a(t(args), args, "Arguments");
+ var arrayLike = { length: 0 };
+ a(t(arrayLike), arrayLike, "Array like");
+ a.throws(
+ function () {
+ t(function () {});
+ },
+ TypeError,
+ "Function"
+ );
+ a.throws(
+ function () {
+ t({});
+ },
+ TypeError,
+ "Plain object"
+ );
+ a.throws(
+ function () {
+ t(/raz/);
+ },
+ TypeError,
+ "Regexp"
+ );
+ a.throws(
+ function () {
+ t();
+ },
+ TypeError,
+ "No argument"
+ );
+ a.throws(
+ function () {
+ t(null);
+ },
+ TypeError,
+ "Null"
+ );
+ a.throws(
+ function () {
+ t(undefined);
+ },
+ TypeError,
+ "Undefined"
+ );
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-finite-number.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-finite-number.js
new file mode 100644
index 0000000000..f1e6166b5c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-finite-number.js
@@ -0,0 +1,54 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.throws(
+ function () {
+ t(undefined);
+ },
+ TypeError,
+ "Undefined"
+ );
+ a.throws(
+ function () {
+ t(null);
+ },
+ TypeError,
+ "Null"
+ );
+ a(t(0), 0, "Zero");
+ a.throws(
+ function () {
+ t(NaN);
+ },
+ TypeError,
+ "NaN"
+ );
+ a.throws(
+ function () {
+ t(Infinity);
+ },
+ TypeError,
+ "Infinity"
+ );
+ a(t(12), 12, "Number");
+ a(t(false), 0, "Boolean");
+ a(t(new Date(1000000)), 1000000, "Date");
+ a(t(new Number(2)), 2, "Number object");
+ a.throws(
+ function () {
+ t("asdfaf");
+ },
+ TypeError,
+ "String"
+ );
+ a(t(""), 0, "Empty String");
+ if (typeof Symbol === "function") {
+ a.throws(
+ function () {
+ t(Symbol("test"));
+ },
+ TypeError,
+ "Symbol"
+ );
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-integer.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-integer.js
new file mode 100644
index 0000000000..03db9c3610
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-integer.js
@@ -0,0 +1,42 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.throws(
+ function () {
+ t(undefined);
+ },
+ TypeError,
+ "Undefined"
+ );
+ a.throws(
+ function () {
+ t(null);
+ },
+ TypeError,
+ "Null"
+ );
+ a(t(2), 2, "Number");
+ a(t(-2), -2, "Negative");
+ a.throws(
+ function () {
+ t(2.34);
+ },
+ TypeError,
+ "Float"
+ );
+ a(t("23"), 23, "Numeric string");
+ a.throws(
+ function () {
+ t(NaN);
+ },
+ TypeError,
+ "NaN"
+ );
+ a.throws(
+ function () {
+ t(Infinity);
+ },
+ TypeError,
+ "Infinity"
+ );
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-natural-number-value.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-natural-number-value.js
new file mode 100644
index 0000000000..9aaae370ad
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-natural-number-value.js
@@ -0,0 +1,24 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.throws(function () {
+ t(undefined);
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "Null");
+ a(t(2), 2, "Number");
+ a.throws(function () {
+ t(-2);
+}, TypeError, "Negative");
+ a.throws(function () {
+ t(2.34);
+}, TypeError, "Float");
+ a(t("23"), 23, "Numeric string");
+ a.throws(function () {
+ t(NaN);
+}, TypeError, "NaN");
+ a.throws(function () {
+ t(Infinity);
+}, TypeError, "Infinity");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-natural-number.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-natural-number.js
new file mode 100644
index 0000000000..ff0e836af4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-natural-number.js
@@ -0,0 +1,22 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.throws(function () {
+ t(undefined);
+}, TypeError, "Undefined");
+ a(t(null), 0, "Null");
+ a(t(2), 2, "Number");
+ a.throws(function () {
+ t(-2);
+}, TypeError, "Negative");
+ a.throws(function () {
+ t(2.34);
+}, TypeError, "Float");
+ a(t("23"), 23, "Numeric string");
+ a.throws(function () {
+ t(NaN);
+}, TypeError, "NaN");
+ a.throws(function () {
+ t(Infinity);
+}, TypeError, "Infinity");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-plain-function.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-plain-function.js
new file mode 100644
index 0000000000..3306d3a5eb
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-plain-function.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ // Just sanity checks, as logic is tested at isPlainFunction
+ var fn = function () {};
+ a(t(fn), fn, "Function");
+ a.throws(
+ function () {
+ t({});
+ },
+ TypeError,
+ "Error"
+ );
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-promise.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-promise.js
new file mode 100644
index 0000000000..1af15bab75
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-promise.js
@@ -0,0 +1,32 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var promise;
+ a.throws(function () {
+ t();
+}, TypeError);
+ a.throws(function () {
+ t(null);
+}, TypeError);
+ a.throws(function () {
+ t("promise");
+}, TypeError);
+ a.throws(function () {
+ t({});
+}, TypeError);
+ a.throws(function () {
+ t(function () {});
+}, TypeError);
+ a.throws(function () {
+ t({ then: {} });
+}, TypeError);
+ promise = { then: function () {} };
+ a(t(promise), promise);
+ promise = function () {};
+ promise.then = {};
+ a.throws(function () {
+ t(promise);
+}, TypeError);
+ promise.then = function () {};
+ a(t(promise), promise);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-thenable.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-thenable.js
new file mode 100644
index 0000000000..151238bafe
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/ensure-thenable.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ // Just sanity checks as proper tests are at isThenable
+ var thenable = { then: function () {} };
+
+ a.throws(function () {
+ t({});
+ }, TypeError);
+ a(t(thenable), thenable);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/eq.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/eq.js
new file mode 100644
index 0000000000..8cad90aebf
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/eq.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o = {};
+ a(t(o, {}), false, "Different objects");
+ a(t(o, o), true, "Same objects");
+ a(t("1", "1"), true, "Same primitive");
+ a(t("1", 1), false, "Different primitive types");
+ a(t(NaN, NaN), true, "NaN");
+ a(t(0, 0), true, "0,0");
+ a(t(0, -0), true, "0,-0");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/every.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/every.js
new file mode 100644
index 0000000000..7e837d22e2
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/every.js
@@ -0,0 +1,21 @@
+"use strict";
+
+var o = { 1: 1, 2: 2, 3: 3 };
+
+module.exports = function (t, a) {
+ var o2 = {};
+ t(o, function (value, name) {
+ o2[name] = value;
+ return true;
+ });
+ a(JSON.stringify(o2), JSON.stringify(o), "Iterates");
+
+ a(t(o, function () {
+ return true;
+ }), true, "Succeeds");
+
+ a(t(o, function () {
+ return false;
+ }), false, "Fails");
+
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/filter.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/filter.js
new file mode 100644
index 0000000000..c714d23734
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/filter.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.deep(t({ 1: 1, 2: 2, 3: 3, 4: 4 },
+ function (value) {
+ return Boolean(value % 2);
+}), { 1: 1, 3: 3 });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/find-key.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/find-key.js
new file mode 100644
index 0000000000..d4a578ff3b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/find-key.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var o = { 1: 1, 2: 2, 3: 3 };
+
+module.exports = function (t, a) {
+ var o2 = {}, i = 0;
+ t(o, function (value, name) {
+ o2[name] = value;
+ return false;
+ });
+ a(JSON.stringify(o2), JSON.stringify(o), "Iterates");
+
+ a(t(o, function () {
+ ++i;
+ return true;
+ }), "1", "Finds");
+ a(i, 1, "Stops iteration after condition is met");
+
+ a(t(o, function () {
+ return false;
+ }), undefined, "Fails");
+
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/find.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/find.js
new file mode 100644
index 0000000000..eea5124709
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/find.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var o = { 1: 1, 2: 2, 3: 3 };
+
+module.exports = function (t, a) {
+ var o2 = {}, i = 0;
+ t(o, function (value, name) {
+ o2[name] = value;
+ return false;
+ });
+ a(JSON.stringify(o2), JSON.stringify(o), "Iterates");
+
+ a(t(o, function () {
+ ++i;
+ return true;
+ }), 1, "Finds");
+ a(i, 1, "Stops iteration after condition is met");
+
+ a(t(o, function () {
+ return false;
+ }), undefined, "Fails");
+
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/first-key.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/first-key.js
new file mode 100644
index 0000000000..6010ba11c5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/first-key.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = {}, y = Object.create(null);
+ a(t(x), null, "Normal: Empty");
+ a(t(y), null, "Null extension: Empty");
+ x.foo = "raz";
+ x.bar = 343;
+ a(["foo", "bar"].indexOf(t(x)) !== -1, true, "Normal");
+ y.elo = "foo";
+ y.mar = "wew";
+ a(["elo", "mar"].indexOf(t(y)) !== -1, true, "Null extension");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/flatten.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/flatten.js
new file mode 100644
index 0000000000..277a97cfdb
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/flatten.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.deep(t({ a: { aa: 1, ab: 2 }, b: { ba: 3, bb: 4 } }),
+ { aa: 1, ab: 2, ba: 3, bb: 4 });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/for-each.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/for-each.js
new file mode 100644
index 0000000000..97c6399a88
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/for-each.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o = { raz: 1, dwa: 2, trzy: 3 }
+ , o2 = {};
+ a(t(o, function (value, name) {
+ o2[name] = value;
+ }), undefined, "Return");
+ a.deep(o2, o);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/get-property-names.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/get-property-names.js
new file mode 100644
index 0000000000..a1d6377fe6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/get-property-names.js
@@ -0,0 +1,18 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o = { first: 1, second: 4 }, r1, r2;
+ o = Object.create(o, {
+ third: { value: null }
+ });
+ o.first = 2;
+ o = Object.create(o);
+ o.fourth = 3;
+
+ r1 = t(o);
+ r1.sort();
+ r2 = ["first", "second", "third", "fourth"]
+ .concat(Object.getOwnPropertyNames(Object.prototype));
+ r2.sort();
+ a.deep(r1, r2);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-array-like.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-array-like.js
new file mode 100644
index 0000000000..50f5ce596e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-array-like.js
@@ -0,0 +1,22 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t([]), true, "Array");
+ a(t(""), true, "String");
+ a(
+ t(
+ (function () {
+ return arguments;
+ })()
+ ),
+ true,
+ "Arguments"
+ );
+ a(t({ length: 0 }), true, "List object");
+ a(t(function () {}), false, "Function");
+ a(t({}), false, "Plain object");
+ a(t(/raz/), false, "Regexp");
+ a(t(), false, "No argument");
+ a(t(null), false, "Null");
+ a(t(undefined), false, "Undefined");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-callable.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-callable.js
new file mode 100644
index 0000000000..415023e397
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-callable.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(function () {}), true, "Function");
+ a(t({}), false, "Object");
+ a(t(), false, "Undefined");
+ a(t(null), false, "Null");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-copy-deep.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-copy-deep.js
new file mode 100644
index 0000000000..9c8ad92572
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-copy-deep.js
@@ -0,0 +1,46 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x, y;
+
+ a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 3 }), true, "Same");
+ a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 4 }), false,
+ "Different property value");
+ a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2 }), false,
+ "Property only in source");
+ a(t({ 1: 1, 2: 2 }, { 1: 1, 2: 2, 3: 4 }), false,
+ "Property only in target");
+
+ a(t("raz", "dwa"), false, "String: diff");
+ a(t("raz", "raz"), true, "String: same");
+ a(t("32", 32), false, "String & Number");
+
+ a(t([1, "raz", true], [1, "raz", true]), true, "Array: same");
+ a(t([1, "raz", undefined], [1, "raz"]), false, "Array: diff");
+ a(t(["foo"], ["one"]), false, "Array: One value comparision");
+
+ x = { foo: { bar: { mar: {} } } };
+ y = { foo: { bar: { mar: {} } } };
+ a(t(x, y), true, "Deep");
+
+ a(t({ foo: { bar: { mar: "foo" } } }, { foo: { bar: { mar: {} } } }),
+ false, "Deep: false");
+
+ x = { foo: { bar: { mar: {} } } };
+ x.rec = { foo: x };
+
+ y = { foo: { bar: { mar: {} } } };
+ y.rec = { foo: x };
+
+ a(t(x, y), true, "Object: Infinite Recursion: Same #1");
+
+ x.rec.foo = y;
+ a(t(x, y), true, "Object: Infinite Recursion: Same #2");
+
+ x.rec.foo = x;
+ y.rec.foo = y;
+ a(t(x, y), true, "Object: Infinite Recursion: Same #3");
+
+ y.foo.bar.mar = "raz";
+ a(t(x, y), false, "Object: Infinite Recursion: Diff");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-copy.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-copy.js
new file mode 100644
index 0000000000..6052bb0519
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-copy.js
@@ -0,0 +1,18 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 3 }), true, "Same");
+ a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 4 }), false,
+ "Different property value");
+ a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2 }), false,
+ "Property only in source");
+ a(t({ 1: 1, 2: 2 }, { 1: 1, 2: 2, 3: 4 }), false,
+ "Property only in target");
+
+ a(t("raz", "dwa"), false, "String: diff");
+ a(t("raz", "raz"), true, "String: same");
+ a(t("32", 32), false, "String & Number");
+
+ a(t([1, "raz", true], [1, "raz", true]), true, "Array: same");
+ a(t([1, "raz", undefined], [1, "raz"]), false, "Array: diff");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-empty.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-empty.js
new file mode 100644
index 0000000000..067b1621f0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-empty.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), true, "Empty");
+ a(t({ 1: 1 }), false, "Not empty");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-finite-number.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-finite-number.js
new file mode 100644
index 0000000000..6475fb6616
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-finite-number.js
@@ -0,0 +1,18 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(undefined), false, "Undefined");
+ a(t(null), false, "Null");
+ a(t(0), true, "Zero");
+ a(t(NaN), false, "NaN");
+ a(t(Infinity), false, "Infinity");
+ a(t(12), true, "Number");
+ a(t(false), true, "Boolean");
+ a(t(new Date()), true, "Date");
+ a(t(new Number(2)), true, "Number object");
+ a(t("asdfaf"), false, "String");
+ a(t(""), true, "Empty String");
+ if (typeof Symbol === "function") {
+ a(t(Symbol("test")), false, "Symbol");
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-integer.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-integer.js
new file mode 100644
index 0000000000..a0bcd5cda1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-integer.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(undefined), false, "Undefined");
+ a(t(null), false, "Null");
+ a(t(2), true, "Number");
+ a(t(-2), true, "Negative");
+ a(t(2.34), false, "Float");
+ a(t("23"), true, "Numeric string");
+ a(t(NaN), false, "NaN");
+ a(t(Infinity), false, "Infinity");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-natural-number-value.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-natural-number-value.js
new file mode 100644
index 0000000000..2bc2b1c8d8
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-natural-number-value.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(undefined), false, "Undefined");
+ a(t(null), false, "Null");
+ a(t(2), true, "Number");
+ a(t(-2), false, "Negative");
+ a(t(2.34), false, "Float");
+ a(t("23"), true, "Numeric string");
+ a(t(NaN), false, "NaN");
+ a(t(Infinity), false, "Infinity");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-natural-number.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-natural-number.js
new file mode 100644
index 0000000000..bb110e604f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-natural-number.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(undefined), false, "Undefined");
+ a(t(null), true, "Null");
+ a(t(2), true, "Number");
+ a(t(-2), false, "Negative");
+ a(t(2.34), false, "Float");
+ a(t("23"), true, "Numeric string");
+ a(t(NaN), false, "NaN");
+ a(t(Infinity), false, "Infinity");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-number-value.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-number-value.js
new file mode 100644
index 0000000000..2c09d25172
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-number-value.js
@@ -0,0 +1,18 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(undefined), false, "Undefined");
+ a(t(null), false, "Null");
+ a(t(0), true, "Zero");
+ a(t(NaN), false, "NaN");
+ a(t(Infinity), true, "Infinity");
+ a(t(12), true, "Number");
+ a(t(false), true, "Boolean");
+ a(t(new Date()), true, "Date");
+ a(t(new Number(2)), true, "Number object");
+ a(t("asdfaf"), false, "String");
+ a(t(""), true, "Empty String");
+ if (typeof Symbol === "function") {
+ a(t(Symbol("test")), false, "Symbol");
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-object.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-object.js
new file mode 100644
index 0000000000..0b83599784
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-object.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t("arar"), false, "String");
+ a(t(12), false, "Number");
+ a(t(true), false, "Boolean");
+ a(t(null), false, "Null");
+ a(t(new Date()), true, "Date");
+ a(t(new String("raz")), true, "String object");
+ a(t({}), true, "Plain object");
+ a(t(/a/), true, "Regular expression");
+ a(t(function () {}), true, "Function");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-plain-function.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-plain-function.js
new file mode 100644
index 0000000000..9c1f5ed389
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-plain-function.js
@@ -0,0 +1,42 @@
+"use strict";
+
+var setPrototypeOf = require("../../object/set-prototype-of");
+
+module.exports = function (t, a) {
+ a(t(function () {}), true, "Function");
+ a(t({}), false, "Object");
+ a(t(), false, "Undefined");
+ a(t(null), false, "Null");
+ if (setPrototypeOf) {
+ a(
+ t(Object.setPrototypeOf(function () {}, Object.prototype)),
+ false,
+ "Function with non-function prototype"
+ );
+ }
+ var arrowfn;
+ try {
+ arrowfn = eval("(() => {})");
+ } catch (e) {}
+ if (arrowfn) {
+ a(t(arrowfn), true, "Arrow function");
+ }
+
+ var classFn;
+ try {
+ classFn = eval("(class {})");
+ } catch (e) {}
+ if (classFn) {
+ a(t(classFn), false, "Class");
+ }
+
+ var commentedClassFn;
+ try {
+ // Follows issue reported to ljhard/is-callable project:
+ // https://github.com/ljharb/is-callable/issues/4
+ commentedClassFn = eval("(class/*kkk*/\n//blah\n Bar\n//blah\n {})");
+ } catch (e) {}
+ if (commentedClassFn) {
+ a(t(commentedClassFn, false, "Class"), false, "Class with comments");
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-plain-object.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-plain-object.js
new file mode 100644
index 0000000000..7324438d9b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-plain-object.js
@@ -0,0 +1,18 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), true, "Empty {} is plain object");
+ a(t({ a: true }), true, "{} with property is plain object");
+ a(t({ prototype: 1, constructor: 2, __proto__: 3 }), true,
+ "{} with any property keys is plain object");
+ a(t(null), false, "Null is not plain object");
+ a(t("string"), false, "Primitive is not plain object");
+ a(t(function () {}), false, "Function is not plain object");
+ a(t(Object.create({})), false,
+ "Object whose prototype is not Object.prototype is not plain object");
+ a(t(Object.create(Object.prototype)), true,
+ "Object whose prototype is Object.prototype is plain object");
+ a(t(Object.create(null)), true,
+ "Object whose prototype is null is plain object");
+ a(t(Object.prototype), false, "Object.prototype");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-promise.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-promise.js
new file mode 100644
index 0000000000..18bf934d80
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-promise.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var promise;
+ a(t(), false);
+ a(t(null), false);
+ a(t("promise"), false);
+ a(t({}), false);
+ a(t(function () {}), false);
+ a(t({ then: {} }), false);
+ a(t({ then: function () {} }), true);
+ promise = function () {};
+ promise.then = {};
+ a(t(promise), false);
+ promise.then = function () {};
+ a(t(promise), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-thenable.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-thenable.js
new file mode 100644
index 0000000000..18bf934d80
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-thenable.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var promise;
+ a(t(), false);
+ a(t(null), false);
+ a(t("promise"), false);
+ a(t({}), false);
+ a(t(function () {}), false);
+ a(t({ then: {} }), false);
+ a(t({ then: function () {} }), true);
+ promise = function () {};
+ promise.then = {};
+ a(t(promise), false);
+ promise.then = function () {};
+ a(t(promise), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-value.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-value.js
new file mode 100644
index 0000000000..c97722d0a8
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is-value.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(), false);
+ a(t(undefined), false);
+ a(t(null), false);
+ a(t(NaN), true);
+ a(t(0), true);
+ a(t(false), true);
+ a(t("null"), true);
+ a(t(""), true);
+ a(t({}), true);
+ a(t(Object.prototype), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is.js
new file mode 100644
index 0000000000..c94ed41c78
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/is.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o = {};
+ a(t(o, {}), false, "Different objects");
+ a(t(o, o), true, "Same objects");
+ a(t("1", "1"), true, "Same primitive");
+ a(t("1", 1), false, "Different primitive types");
+ a(t(NaN, NaN), true, "NaN");
+ a(t(0, 0), true, "0,0");
+ a(t(0, -0), false, "0,-0");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/key-of.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/key-of.js
new file mode 100644
index 0000000000..bf10ca03bf
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/key-of.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = {}, y = {}
+ , o = { foo: "bar", raz: x, trzy: "cztery", five: "6" };
+
+ a(t(o, "bar"), "foo", "First property");
+ a(t(o, 6), null, "Primitive that's not there");
+ a(t(o, x), "raz", "Object");
+ a(t(o, y), null, "Object that's not there");
+ a(t(o, "6"), "five", "Last property");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/keys/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/keys/implement.js
new file mode 100644
index 0000000000..d364abed9b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/keys/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../object/keys/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/keys/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/keys/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/keys/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/keys/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/keys/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/keys/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/keys/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/keys/shim.js
new file mode 100644
index 0000000000..47e6547ed4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/keys/shim.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.deep(t({ foo: "bar" }), ["foo"], "Object");
+ a.deep(t("raz"), ["0", "1", "2"], "Primitive");
+ a.throws(function () {
+ t();
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "Undefined");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/map-keys.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/map-keys.js
new file mode 100644
index 0000000000..4598db21ac
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/map-keys.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.deep(t({ 1: 1, 2: 2, 3: 3 }, function (key, value) {
+ return "x" + (key + value);
+ }), { x11: 1, x22: 2, x33: 3 });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/map.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/map.js
new file mode 100644
index 0000000000..78c1ed346d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/map.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var obj = { 1: 1, 2: 2, 3: 3 };
+ a.deep(t(obj, function (value, key, context) {
+ a(context, obj, "Context argument");
+ return (value + 1) + key;
+ }), { 1: "21", 2: "32", 3: "43" });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/mixin-prototypes.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/mixin-prototypes.js
new file mode 100644
index 0000000000..8745d9779e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/mixin-prototypes.js
@@ -0,0 +1,73 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o, o1, o2, x, y = {}, z = {};
+ o = { inherited: true, visible: 23 };
+ o1 = Object.create(o);
+ o1.visible = z;
+ o1.nonremovable = "raz";
+ Object.defineProperty(o1, "hidden", { value: "hidden" });
+
+ o2 = Object.defineProperties({}, { nonremovable: { value: y } });
+ o2.other = "other";
+
+ try {
+ t(o2, o1);
+} catch (ignore) {}
+
+ a(o2.visible, z, "Enumerable");
+ a(o1.hidden, "hidden", "Not Enumerable");
+ a(o2.propertyIsEnumerable("visible"), true, "Enumerable is enumerable");
+ a(o2.propertyIsEnumerable("hidden"), false,
+ "Not enumerable is not enumerable");
+
+ a(o2.inherited, true, "Extend deep");
+
+ a(o2.nonremovable, y, "Do not overwrite non configurable");
+ a(o2.other, "other", "Own kept");
+
+ x = {};
+ t(x, o2);
+ try {
+ t(x, o1);
+} catch (ignore) {}
+
+ a(x.visible, z, "Enumerable");
+ a(x.hidden, "hidden", "Not Enumerable");
+ a(x.propertyIsEnumerable("visible"), true, "Enumerable is enumerable");
+ a(x.propertyIsEnumerable("hidden"), false,
+ "Not enumerable is not enumerable");
+
+ a(x.inherited, true, "Extend deep");
+
+ a(x.nonremovable, y, "Ignored non configurable");
+ a(x.other, "other", "Other");
+
+ x.visible = 3;
+ a(x.visible, 3, "Writable is writable");
+
+ x = {};
+ t(x, o1);
+ a.throws(function () {
+ x.hidden = 3;
+ }, "Not writable is not writable");
+
+ x = {};
+ t(x, o1);
+ delete x.visible;
+ a.ok(!x.hasOwnProperty("visible"), "Configurable is configurable");
+
+ x = {};
+ t(x, o1);
+ a.throws(function () {
+ delete x.hidden;
+ }, "Not configurable is not configurable");
+
+ x = Object.defineProperty({}, "foo",
+ { configurable: false, writable: true, enumerable: false, value: "bar" });
+
+ try {
+ t(x, { foo: "lorem" });
+} catch (ignore) {}
+ a(x.foo, "bar", "Writable, not enumerable");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/mixin.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/mixin.js
new file mode 100644
index 0000000000..d1905c17cf
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/mixin.js
@@ -0,0 +1,75 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o, o1, o2, x, y = {}, z = {};
+ o = { inherited: true };
+ o1 = Object.create(o);
+ o1.visible = z;
+ o1.nonremovable = "raz";
+ Object.defineProperty(o1, "hidden", { value: "hidden" });
+
+ o2 = Object.defineProperties({}, { nonremovable: { value: y } });
+ o2.other = "other";
+
+ try {
+ t(o2, o1);
+} catch (ignore) {}
+
+ a(o2.visible, z, "Enumerable");
+ a(o1.hidden, "hidden", "Not Enumerable");
+ a(o2.propertyIsEnumerable("visible"), true, "Enumerable is enumerable");
+ a(o2.propertyIsEnumerable("hidden"), false,
+ "Not enumerable is not enumerable");
+
+ a(o2.hasOwnProperty("inherited"), false, "Extend only own");
+ a(o2.inherited, undefined, "Extend ony own: value");
+
+ a(o2.nonremovable, y, "Do not overwrite non configurable");
+ a(o2.other, "other", "Own kept");
+
+ x = {};
+ t(x, o2);
+ try {
+ t(x, o1);
+} catch (ignore) {}
+
+ a(x.visible, z, "Enumerable");
+ a(x.hidden, "hidden", "Not Enumerable");
+ a(x.propertyIsEnumerable("visible"), true, "Enumerable is enumerable");
+ a(x.propertyIsEnumerable("hidden"), false,
+ "Not enumerable is not enumerable");
+
+ a(x.hasOwnProperty("inherited"), false, "Extend only own");
+ a(x.inherited, undefined, "Extend ony own: value");
+
+ a(x.nonremovable, y, "Ignored non configurable");
+ a(x.other, "other", "Other");
+
+ x.visible = 3;
+ a(x.visible, 3, "Writable is writable");
+
+ x = {};
+ t(x, o1);
+ a.throws(function () {
+ x.hidden = 3;
+ }, "Not writable is not writable");
+
+ x = {};
+ t(x, o1);
+ delete x.visible;
+ a.ok(!x.hasOwnProperty("visible"), "Configurable is configurable");
+
+ x = {};
+ t(x, o1);
+ a.throws(function () {
+ delete x.hidden;
+ }, "Not configurable is not configurable");
+
+ x = Object.defineProperty({}, "foo",
+ { configurable: false, writable: true, enumerable: false, value: "bar" });
+
+ try {
+ t(x, { foo: "lorem" });
+} catch (ignore) {}
+ a(x.foo, "bar", "Writable, not enumerable");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/normalize-options.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/normalize-options.js
new file mode 100644
index 0000000000..028864fec9
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/normalize-options.js
@@ -0,0 +1,46 @@
+"use strict";
+
+var create = Object.create, defineProperty = Object.defineProperty;
+
+module.exports = function (t, a) {
+ var x = { foo: "raz", bar: "dwa" }, y;
+ y = t(x);
+ a.not(y, x, "Returns copy");
+ a.deep(y, x, "Plain");
+
+ x = { raz: "one", dwa: "two" };
+ defineProperty(x, "get", {
+ configurable: true,
+ enumerable: true,
+ get: function () {
+ return this.dwa;
+}
+ });
+ x = create(x);
+ x.trzy = "three";
+ x.cztery = "four";
+ x = create(x);
+ x.dwa = "two!";
+ x.trzy = "three!";
+ x.piec = "five";
+ x.szesc = "six";
+
+ a.deep(t(x), { raz: "one",
+dwa: "two!",
+trzy: "three!",
+cztery: "four",
+ piec: "five",
+szesc: "six",
+get: "two!" }, "Deep object");
+
+ a.deep(t({ marko: "raz", raz: "foo" }, x, { szesc: "elo", siedem: "bibg" }),
+ { marko: "raz",
+raz: "one",
+dwa: "two!",
+trzy: "three!",
+cztery: "four",
+ piec: "five",
+szesc: "elo",
+siedem: "bibg",
+get: "two!" }, "Multiple options");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/primitive-set.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/primitive-set.js
new file mode 100644
index 0000000000..b5083d5ccb
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/primitive-set.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var getPropertyNames = require("../../object/get-property-names")
+ , isPlainObject = require("../../object/is-plain-object");
+
+module.exports = function (t, a) {
+ var x = t();
+ a(isPlainObject(x), true, "Plain object");
+ a.deep(getPropertyNames(x), [], "No properties");
+ x.foo = "bar";
+ a.deep(getPropertyNames(x), ["foo"], "Extensible");
+
+ a.deep(t("raz", "dwa", 3), { raz: true, dwa: true, 3: true },
+ "Arguments handling");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/safe-traverse.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/safe-traverse.js
new file mode 100644
index 0000000000..acf49c0ed8
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/safe-traverse.js
@@ -0,0 +1,15 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var obj = { foo: { bar: { lorem: 12 } } };
+ a(t(obj), obj, "No props");
+ a(t(obj, "foo"), obj.foo, "One");
+ a(t(obj, "raz"), undefined, "One: Fail");
+ a(t(obj, "foo", "bar"), obj.foo.bar, "Two");
+ a(t(obj, "dsd", "raz"), undefined, "Two: Fail #1");
+ a(t(obj, "foo", "raz"), undefined, "Two: Fail #2");
+ a(t(obj, "foo", "bar", "lorem"), obj.foo.bar.lorem, "Three");
+ a(t(obj, "dsd", "raz", "fef"), undefined, "Three: Fail #1");
+ a(t(obj, "foo", "raz", "asdf"), undefined, "Three: Fail #2");
+ a(t(obj, "foo", "bar", "asd"), undefined, "Three: Fail #3");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/serialize.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/serialize.js
new file mode 100644
index 0000000000..f0ca800cc4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/serialize.js
@@ -0,0 +1,45 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var fn = function (raz, dwa) {
+ return raz + dwa;
+ };
+ a(t(), "undefined", "Undefined");
+ a(t(null), "null", "Null");
+ a(t(null), "null", "Null");
+ a(t("raz"), "\"raz\"", "String");
+ a(t("raz\"ddwa\ntrzy"), "\"raz\\\"ddwa\\ntrzy\"", "String with escape");
+ a(t(false), "false", "Booelean");
+ a(t(fn), String(fn), "Function");
+
+ a(t(/raz-dwa/g), "/raz-dwa/g", "RegExp");
+ a(t(new Date(1234567)), "new Date(1234567)", "Date");
+ a(t([]), "[]", "Empty array");
+ a(
+ t([undefined, false, null, "raz\"ddwa\ntrzy", fn, /raz/g, new Date(1234567), ["foo"]]),
+ "[undefined,false,null,\"raz\\\"ddwa\\ntrzy\"," +
+ String(fn) +
+ ",/raz/g,new Date(1234567),[\"foo\"]]",
+ "Rich Array"
+ );
+ a(t({}), "{}", "Empty object");
+ a(
+ t({
+ raz: undefined,
+ dwa: false,
+ trzy: null,
+ cztery: "raz\"ddwa\ntrzy",
+ piec: fn,
+ szesc: /raz/g,
+ siedem: new Date(1234567),
+ osiem: ["foo", 32],
+ dziewiec: { foo: "bar", dwa: 343 }
+ }),
+ "{\"raz\":undefined,\"dwa\":false,\"trzy\":null,\"cztery\":\"raz\\\"ddwa\\ntrzy\"," +
+ "\"piec\":" +
+ String(fn) +
+ ",\"szesc\":/raz/g,\"siedem\":new Date(1234567),\"osiem\":[\"foo\",32]," +
+ "\"dziewiec\":{\"foo\":\"bar\",\"dwa\":343}}",
+ "Rich object"
+ );
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/set-prototype-of/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/set-prototype-of/implement.js
new file mode 100644
index 0000000000..5b8fb9e99f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/set-prototype-of/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var create = require("../../../object/create")
+ , isImplemented = require("../../../object/set-prototype-of/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(create), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/set-prototype-of/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/set-prototype-of/index.js
new file mode 100644
index 0000000000..23619b0797
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/set-prototype-of/index.js
@@ -0,0 +1,27 @@
+"use strict";
+
+var create = require("../../../object/create")
+
+ , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (t, a) {
+ var x = {}, y = {};
+
+ if (t === null) return;
+ a(t(x, y), x, "Return self object");
+ a(getPrototypeOf(x), y, "Object");
+ a.throws(function () {
+ t(x);
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t("foo");
+}, TypeError, "Primitive");
+ a(getPrototypeOf(t(x, null)), t.nullPolyfill || null, "Null");
+ x = create(null);
+ a.h1("Change null prototype");
+ a(t(x, y), x, "Result");
+ a(getPrototypeOf(x), y, "Prototype");
+ a.h1("Set null prototype");
+ a(t(y, null), y, "Result");
+ a(getPrototypeOf(y), t.nullPolyfill || null, "Prototype");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/set-prototype-of/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/set-prototype-of/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/set-prototype-of/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/set-prototype-of/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/set-prototype-of/shim.js
new file mode 100644
index 0000000000..23619b0797
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/set-prototype-of/shim.js
@@ -0,0 +1,27 @@
+"use strict";
+
+var create = require("../../../object/create")
+
+ , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (t, a) {
+ var x = {}, y = {};
+
+ if (t === null) return;
+ a(t(x, y), x, "Return self object");
+ a(getPrototypeOf(x), y, "Object");
+ a.throws(function () {
+ t(x);
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t("foo");
+}, TypeError, "Primitive");
+ a(getPrototypeOf(t(x, null)), t.nullPolyfill || null, "Null");
+ x = create(null);
+ a.h1("Change null prototype");
+ a(t(x, y), x, "Result");
+ a(getPrototypeOf(x), y, "Prototype");
+ a.h1("Set null prototype");
+ a(t(y, null), y, "Result");
+ a(getPrototypeOf(y), t.nullPolyfill || null, "Prototype");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/some.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/some.js
new file mode 100644
index 0000000000..97e5d772d1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/some.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var o = { 1: 1, 2: 2, 3: 3 };
+
+module.exports = function (t, a) {
+ var o2 = {}, i = 0;
+ t(o, function (value, name) {
+ o2[name] = value;
+ return false;
+ });
+ a(JSON.stringify(o2), JSON.stringify(o), "Iterates");
+
+ a(t(o, function () {
+ ++i;
+ return true;
+ }), true, "Succeeds");
+ a(i, 1, "Stops iteration after condition is met");
+
+ a(t(o, function () {
+ return false;
+ }), false, "Fails");
+
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/to-array.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/to-array.js
new file mode 100644
index 0000000000..cd11a05f2f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/to-array.js
@@ -0,0 +1,15 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o = { 1: 1, 2: 2, 3: 3 }, o1 = {}
+ , o2 = t(o, function (value, name, self) {
+ a(self, o, "Self");
+ a(this, o1, "Scope");
+ return value + Number(name);
+ }, o1);
+ a.deep(o2, [2, 4, 6]);
+
+ t(o).sort().forEach(function (item) {
+ a.deep(item, [item[0], o[item[0]]], "Default");
+ });
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/unserialize.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/unserialize.js
new file mode 100644
index 0000000000..5af3c77fe0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/unserialize.js
@@ -0,0 +1,41 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var fn = function (raz, dwa) {
+ return raz + dwa;
+ };
+ a(t("undefined"), undefined, "Undefined");
+ a(t("null"), null, "Null");
+ a(t("\"raz\""), "raz", "String");
+ a(t("\"raz\\\"ddwa\\ntrzy\""), "raz\"ddwa\ntrzy", "String with escape");
+ a(t("false"), false, "Booelean");
+ a(String(t(String(fn))), String(fn), "Function");
+
+ a.deep(t("/raz-dwa/g"), /raz-dwa/g, "RegExp");
+ a.deep(t("new Date(1234567)"), new Date(1234567), "Date");
+ a.deep(t("[]"), [], "Empty array");
+ a.deep(
+ t("[undefined,false,null,\"raz\\\"ddwa\\ntrzy\",/raz/g,new Date(1234567),[\"foo\"]]"),
+ [undefined, false, null, "raz\"ddwa\ntrzy", /raz/g, new Date(1234567), ["foo"]],
+ "Rich Array"
+ );
+ a.deep(t("{}"), {}, "Empty object");
+ a.deep(
+ t(
+ "{\"raz\":undefined,\"dwa\":false,\"trzy\":null,\"cztery\":\"raz\\\"ddwa\\ntrzy\"," +
+ "\"szesc\":/raz/g,\"siedem\":new Date(1234567),\"osiem\":[\"foo\",32]," +
+ "\"dziewiec\":{\"foo\":\"bar\",\"dwa\":343}}"
+ ),
+ {
+ raz: undefined,
+ dwa: false,
+ trzy: null,
+ cztery: "raz\"ddwa\ntrzy",
+ szesc: /raz/g,
+ siedem: new Date(1234567),
+ osiem: ["foo", 32],
+ dziewiec: { foo: "bar", dwa: 343 }
+ },
+ "Rich object"
+ );
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/valid-callable.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/valid-callable.js
new file mode 100644
index 0000000000..fb7310c849
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/valid-callable.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var f = function () {};
+ a(t(f), f, "Function");
+ a.throws(function () {
+ t({});
+ }, "Not Function");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/valid-object.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/valid-object.js
new file mode 100644
index 0000000000..b33be9779a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/valid-object.js
@@ -0,0 +1,25 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+ a.throws(function () {
+ t(0);
+}, TypeError, "0");
+ a.throws(function () {
+ t(false);
+}, TypeError, "false");
+ a.throws(function () {
+ t("");
+}, TypeError, "''");
+ a(t(x = {}), x, "Object");
+ a(t(x = function () {}), x, "Function");
+ a(t(x = new String("raz")), x, "String object"); // Jslint: ignore
+ a(t(x = new Date()), x, "Date");
+
+ a.throws(function () {
+ t();
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "null");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/valid-value.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/valid-value.js
new file mode 100644
index 0000000000..394f89f774
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/valid-value.js
@@ -0,0 +1,19 @@
+"use strict";
+
+var numIsNaN = require("../../number/is-nan");
+
+module.exports = function (t, a) {
+ var x;
+ a(t(0), 0, "0");
+ a(t(false), false, "false");
+ a(t(""), "", "''");
+ a(numIsNaN(t(NaN)), true, "NaN");
+ a(t(x = {}), x, "{}");
+
+ a.throws(function () {
+ t();
+ }, "Undefined");
+ a.throws(function () {
+ t(null);
+ }, "null");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/validate-array-like-object.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/validate-array-like-object.js
new file mode 100644
index 0000000000..b10ec69b58
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/validate-array-like-object.js
@@ -0,0 +1,29 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+ a.throws(function () {
+ t(0);
+}, TypeError, "0");
+ a.throws(function () {
+ t(false);
+}, TypeError, "false");
+ a.throws(function () {
+ t("");
+}, TypeError, "String");
+ a.throws(function () {
+ t({});
+}, TypeError, "Plain Object");
+ a.throws(function () {
+ t(function () {});
+}, TypeError, "Function");
+ a(t(x = new String("raz")), x, "String object"); // Jslint: ignore
+
+ a(t(x = { length: 1 }), x, "Array like");
+ a.throws(function () {
+ t();
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "null");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/validate-array-like.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/validate-array-like.js
new file mode 100644
index 0000000000..6da6b191ea
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/validate-array-like.js
@@ -0,0 +1,27 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+ a.throws(function () {
+ t(0);
+}, TypeError, "0");
+ a.throws(function () {
+ t(false);
+}, TypeError, "false");
+ a(t(""), "", "''");
+ a.throws(function () {
+ t({});
+}, TypeError, "Plain Object");
+ a.throws(function () {
+ t(function () {});
+}, TypeError, "Function");
+ a(t(x = new String("raz")), x, "String object"); // Jslint: ignore
+
+ a(t(x = { length: 1 }), x, "Array like");
+ a.throws(function () {
+ t();
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "null");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/validate-stringifiable-value.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/validate-stringifiable-value.js
new file mode 100644
index 0000000000..8283814ab1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/validate-stringifiable-value.js
@@ -0,0 +1,22 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+ a.throws(function () {
+ t();
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "Null");
+ a(t(0), "0");
+ a(t(false), "false");
+ a(t(""), "");
+ a(t({}), String({}), "Object");
+ a(t(x = function () {}), String(x), "Function");
+ a(t(x = new String("raz")), String(x), "String object"); // Jslint: ignore
+ a(t(x = new Date()), String(x), "Date");
+
+ a.throws(function () {
+ t(Object.create(null));
+}, TypeError, "Null prototype object");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/object/validate-stringifiable.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/validate-stringifiable.js
new file mode 100644
index 0000000000..e75a4157bf
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/object/validate-stringifiable.js
@@ -0,0 +1,18 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+ a(t(), "undefined", "Undefined");
+ a(t(null), "null", "Null");
+ a(t(0), "0");
+ a(t(false), "false");
+ a(t(""), "");
+ a(t({}), String({}), "Object");
+ a(t(x = function () {}), String(x), "Function");
+ a(t(x = new String("raz")), String(x), "String object"); // Jslint: ignore
+ a(t(x = new Date()), String(x), "Date");
+
+ a.throws(function () {
+ t(Object.create(null));
+}, TypeError, "Null prototype object");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/optional-chaining.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/optional-chaining.js
new file mode 100644
index 0000000000..1f7d405634
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/optional-chaining.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var obj = { foo: { bar: "elo", par: null } };
+ a(t(), undefined);
+ a(t(null), null);
+ a(t(obj), obj);
+ a(t(obj, "foo"), obj.foo);
+ a(t(obj, "foo", "bar"), "elo");
+ a(t(obj, "foo", "bar", "slice"), String.prototype.slice);
+ a(t(obj, "foo", "par"), null);
+ a(t(obj, "foo", "par", "marko"), undefined);
+ a(t(obj, "marko"), undefined);
+ a(t(""), "");
+ a(t("", "foo"), undefined);
+ a(t("", "slice"), String.prototype.slice);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/promise/#/as-callback.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/promise/#/as-callback.js
new file mode 100644
index 0000000000..528d766aa1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/promise/#/as-callback.js
@@ -0,0 +1,32 @@
+"use strict";
+
+module.exports = function (t, a) {
+ if (typeof Promise !== "function") return null;
+ return {
+ Success: function (d) {
+ t.call(
+ new Promise(function (resolve) {
+ resolve("foo");
+ }),
+ function (error, value) {
+ a(error, null);
+ a(value, "foo");
+ d();
+ }
+ );
+ },
+ Failure: function (d) {
+ var error = new Error("Rejection");
+ t.call(
+ new Promise(function (resolve, reject) {
+ reject(error);
+ }),
+ function (passedError, value) {
+ a(passedError, error);
+ a(value, undefined);
+ d();
+ }
+ );
+ }
+ };
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/promise/.eslintrc.json b/kbase-extension/static/ext_packages/igv/es5-ext/test/promise/.eslintrc.json
new file mode 100644
index 0000000000..b8acafa720
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/promise/.eslintrc.json
@@ -0,0 +1,3 @@
+{
+ "globals": { "Promise": true, "setTimeout": true }
+}
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/promise/lazy.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/promise/lazy.js
new file mode 100644
index 0000000000..8c7a5bfa0d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/promise/lazy.js
@@ -0,0 +1,52 @@
+"use strict";
+
+module.exports = function (t) {
+ if (typeof Promise !== "function") return null; // Run tests only in ES2015+ env
+
+ return {
+ "Delays execution": function (a, d) {
+ var invoked = false;
+ var promise = t(function (resolve) {
+ invoked = true;
+ setTimeout(function () {
+ resolve(20);
+ }, 10);
+ });
+
+ a(invoked, false);
+
+ setTimeout(function () {
+ a(invoked, false);
+ promise.then(function (value) {
+ a(value, 20);
+ setTimeout(d, 0); // Escape error swallowing
+ });
+ a(invoked, true);
+ }, 15);
+ },
+ "Passes rejection": function (a, d) {
+ var promise = t(function (resolve, reject) {
+ setTimeout(function () {
+ reject(new Error("Stop"));
+ }, 10);
+ });
+
+ promise.catch(function (error) {
+ a(error instanceof Error, true);
+ a(error.message, "Stop");
+ setTimeout(d, 0); // Escape error swallowing
+ });
+ },
+ "Passes sync exception": function (a, d) {
+ var promise = t(function () {
+ throw new Error("Stop");
+ });
+
+ promise.catch(function (error) {
+ a(error instanceof Error, true);
+ a(error.message, "Stop");
+ setTimeout(d, 0); // Escape error swallowing
+ });
+ }
+ };
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/index.js
new file mode 100644
index 0000000000..7ab9ab8af5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/index.js
@@ -0,0 +1,15 @@
+/* eslint-env node */
+
+"use strict";
+
+var indexTest = require("tad/lib/utils/index-test")
+ , path = require("path").resolve(__dirname, "../../../reg-exp/#");
+
+module.exports = function (t, a, d) {
+ indexTest(
+ indexTest.readDir(path).aside(function (data) {
+ delete data.sticky;
+ delete data.unicode;
+ })
+ )(t, a, d);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/is-sticky.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/is-sticky.js
new file mode 100644
index 0000000000..e65740e76d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/is-sticky.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var re;
+ a(t.call(/raz/), false, "Normal");
+ a(t.call(/raz/g), false, "Global");
+ try {
+ // eslint-disable-next-line no-invalid-regexp
+ re = new RegExp("raz", "y");
+ } catch (ignore) {}
+ if (!re) return;
+ a(t.call(re), true, "Sticky");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/is-unicode.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/is-unicode.js
new file mode 100644
index 0000000000..86217aa042
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/is-unicode.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var re;
+ a(t.call(/raz/), false, "Normal");
+ a(t.call(/raz/g), false, "Global");
+ try {
+ // eslint-disable-next-line no-invalid-regexp
+ re = new RegExp("raz", "u");
+ } catch (ignore) {}
+ if (!re) return;
+ a(t.call(re), true, "Unicode");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/match/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/match/implement.js
new file mode 100644
index 0000000000..633d9bb6b0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/match/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../reg-exp/#/match/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/match/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/match/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/match/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/match/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/match/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/match/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/match/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/match/shim.js
new file mode 100644
index 0000000000..fce094f61b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/match/shim.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var result = ["foo"];
+ result.index = 0;
+ result.input = "foobar";
+ a.deep(t.call(/foo/, "foobar"), result);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/replace/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/replace/implement.js
new file mode 100644
index 0000000000..7da5e66948
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/replace/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../reg-exp/#/replace/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/replace/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/replace/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/replace/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/replace/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/replace/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/replace/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/replace/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/replace/shim.js
new file mode 100644
index 0000000000..4178065db1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/replace/shim.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(/foo/, "foobar", "mar"), "marbar");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/search/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/search/implement.js
new file mode 100644
index 0000000000..ded73e27d6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/search/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../reg-exp/#/search/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/search/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/search/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/search/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/search/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/search/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/search/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/search/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/search/shim.js
new file mode 100644
index 0000000000..779b132747
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/search/shim.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(/foo/, "barfoo"), 3);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/split/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/split/implement.js
new file mode 100644
index 0000000000..4ef532bd73
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/split/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../reg-exp/#/split/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/split/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/split/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/split/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/split/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/split/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/split/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/split/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/split/shim.js
new file mode 100644
index 0000000000..a01250e9a6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/split/shim.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.deep(t.call(/\|/, "bar|foo"), ["bar", "foo"]);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/sticky/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/sticky/implement.js
new file mode 100644
index 0000000000..d7e59bf99a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/sticky/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../reg-exp/#/sticky/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/sticky/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/sticky/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/sticky/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/unicode/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/unicode/implement.js
new file mode 100644
index 0000000000..9cb2b3792c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/unicode/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../reg-exp/#/unicode/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/unicode/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/unicode/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/#/unicode/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/escape.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/escape.js
new file mode 100644
index 0000000000..9478f52342
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/escape.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var str = "(?:^te|er)s{2}t\\[raz]+$";
+ a(RegExp("^" + t(str) + "$").test(str), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/is-reg-exp.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/is-reg-exp.js
new file mode 100644
index 0000000000..7727eabaf5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/is-reg-exp.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t("arar"), false, "String");
+ a(t(12), false, "Number");
+ a(t(true), false, "Boolean");
+ a(t(new Date()), false, "Date");
+ a(t(new String("raz")), false, "String object");
+ a(t({}), false, "Plain object");
+ a(t(/a/), true, "Regular expression");
+ a(t(new RegExp("a")), true, "Regular expression via constructor");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/valid-reg-exp.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/valid-reg-exp.js
new file mode 100644
index 0000000000..2f99441b02
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/reg-exp/valid-reg-exp.js
@@ -0,0 +1,19 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var r = /raz/;
+ a(t(r), r, "Direct");
+ r = new RegExp("foo");
+ a(t(r), r, "Constructor");
+ a.throws(function () {
+ t({});
+ }, "Object");
+ a.throws(function () {
+ t(function () {});
+ }, "Function");
+ a.throws(function () {
+ t({ exec: function () {
+ return 20;
+} });
+ }, "Plain object");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/safe-to-string.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/safe-to-string.js
new file mode 100644
index 0000000000..b9ffe1a890
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/safe-to-string.js
@@ -0,0 +1,19 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(), "undefined");
+ a(t(null), "null");
+ a(t(10), "10");
+ a(t("str"), "str");
+ a(
+ t({
+ toString: function () {
+ return "miszka";
+ }
+ }),
+ "miszka"
+ );
+ // eslint-disable-next-line symbol-description
+ if (typeof Symbol === "function") a(t(Symbol()), "Symbol()");
+ a(t(Object.create(null)), "[Non-coercible (to string) value]");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/@@iterator/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/@@iterator/implement.js
new file mode 100644
index 0000000000..c984fb2684
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/@@iterator/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/@@iterator/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/@@iterator/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/@@iterator/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/@@iterator/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/@@iterator/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/@@iterator/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/@@iterator/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/@@iterator/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/@@iterator/shim.js
new file mode 100644
index 0000000000..467cdc355d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/@@iterator/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var it = t.call("r💩z");
+ a.deep(it.next(), { done: false, value: "r" }, "#1");
+ a.deep(it.next(), { done: false, value: "💩" }, "#2");
+ a.deep(it.next(), { done: false, value: "z" }, "#3");
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/at.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/at.js
new file mode 100644
index 0000000000..a614f938f6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/at.js
@@ -0,0 +1,132 @@
+/* eslint no-useless-call: "off" */
+// See tests at https://github.com/mathiasbynens/String.prototype.at
+
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.length, 1, "Length");
+
+ a.h1("BMP");
+ a(t.call("abc\uD834\uDF06def", -Infinity), "", "-Infinity");
+ a(t.call("abc\uD834\uDF06def", -1), "", "-1");
+ a(t.call("abc\uD834\uDF06def", -0), "a", "-0");
+ a(t.call("abc\uD834\uDF06def", +0), "a", "+0");
+ a(t.call("abc\uD834\uDF06def", 1), "b", "1");
+ a(t.call("abc\uD834\uDF06def", 3), "\uD834\uDF06", "3");
+ a(t.call("abc\uD834\uDF06def", 4), "\uDF06", "4");
+ a(t.call("abc\uD834\uDF06def", 5), "d", "5");
+ a(t.call("abc\uD834\uDF06def", 42), "", "42");
+ a(t.call("abc\uD834\uDF06def", Number(Infinity)), "", "+Infinity");
+ a(t.call("abc\uD834\uDF06def", null), "a", "null");
+ a(t.call("abc\uD834\uDF06def", undefined), "a", "undefined");
+ a(t.call("abc\uD834\uDF06def"), "a", "No argument");
+ a(t.call("abc\uD834\uDF06def", false), "a", "false");
+ a(t.call("abc\uD834\uDF06def", NaN), "a", "NaN");
+ a(t.call("abc\uD834\uDF06def", ""), "a", "Empty string");
+ a(t.call("abc\uD834\uDF06def", "_"), "a", "_");
+ a(t.call("abc\uD834\uDF06def", "1"), "b", "'1'");
+ a(t.call("abc\uD834\uDF06def", []), "a", "[]");
+ a(t.call("abc\uD834\uDF06def", {}), "a", "{}");
+ a(t.call("abc\uD834\uDF06def", -0.9), "a", "-0.9");
+ a(t.call("abc\uD834\uDF06def", 1.9), "b", "1.9");
+ a(t.call("abc\uD834\uDF06def", 7.9), "f", "7.9");
+ a(t.call("abc\uD834\uDF06def", Math.pow(2, 32)), "", "Big number");
+
+ a.h1("Astral symbol");
+ a(t.call("\uD834\uDF06def", -Infinity), "", "-Infinity");
+ a(t.call("\uD834\uDF06def", -1), "", "-1");
+ a(t.call("\uD834\uDF06def", -0), "\uD834\uDF06", "-0");
+ a(t.call("\uD834\uDF06def", +0), "\uD834\uDF06", "+0");
+ a(t.call("\uD834\uDF06def", 1), "\uDF06", "1");
+ a(t.call("\uD834\uDF06def", 2), "d", "2");
+ a(t.call("\uD834\uDF06def", 3), "e", "3");
+ a(t.call("\uD834\uDF06def", 4), "f", "4");
+ a(t.call("\uD834\uDF06def", 42), "", "42");
+ a(t.call("\uD834\uDF06def", Number(Infinity)), "", "+Infinity");
+ a(t.call("\uD834\uDF06def", null), "\uD834\uDF06", "null");
+ a(t.call("\uD834\uDF06def", undefined), "\uD834\uDF06", "undefined");
+ a(t.call("\uD834\uDF06def"), "\uD834\uDF06", "No arguments");
+ a(t.call("\uD834\uDF06def", false), "\uD834\uDF06", "false");
+ a(t.call("\uD834\uDF06def", NaN), "\uD834\uDF06", "NaN");
+ a(t.call("\uD834\uDF06def", ""), "\uD834\uDF06", "Empty string");
+ a(t.call("\uD834\uDF06def", "_"), "\uD834\uDF06", "_");
+ a(t.call("\uD834\uDF06def", "1"), "\uDF06", "'1'");
+
+ a.h1("Lone high surrogates");
+ a(t.call("\uD834abc", -Infinity), "", "-Infinity");
+ a(t.call("\uD834abc", -1), "", "-1");
+ a(t.call("\uD834abc", -0), "\uD834", "-0");
+ a(t.call("\uD834abc", +0), "\uD834", "+0");
+ a(t.call("\uD834abc", 1), "a", "1");
+ a(t.call("\uD834abc", 42), "", "42");
+ a(t.call("\uD834abc", Number(Infinity)), "", "Infinity");
+ a(t.call("\uD834abc", null), "\uD834", "null");
+ a(t.call("\uD834abc", undefined), "\uD834", "undefined");
+ a(t.call("\uD834abc"), "\uD834", "No arguments");
+ a(t.call("\uD834abc", false), "\uD834", "false");
+ a(t.call("\uD834abc", NaN), "\uD834", "NaN");
+ a(t.call("\uD834abc", ""), "\uD834", "Empty string");
+ a(t.call("\uD834abc", "_"), "\uD834", "_");
+ a(t.call("\uD834abc", "1"), "a", "'a'");
+
+ a.h1("Lone low surrogates");
+ a(t.call("\uDF06abc", -Infinity), "", "-Infinity");
+ a(t.call("\uDF06abc", -1), "", "-1");
+ a(t.call("\uDF06abc", -0), "\uDF06", "-0");
+ a(t.call("\uDF06abc", +0), "\uDF06", "+0");
+ a(t.call("\uDF06abc", 1), "a", "1");
+ a(t.call("\uDF06abc", 42), "", "42");
+ a(t.call("\uDF06abc", Number(Infinity)), "", "+Infinity");
+ a(t.call("\uDF06abc", null), "\uDF06", "null");
+ a(t.call("\uDF06abc", undefined), "\uDF06", "undefined");
+ a(t.call("\uDF06abc"), "\uDF06", "No arguments");
+ a(t.call("\uDF06abc", false), "\uDF06", "false");
+ a(t.call("\uDF06abc", NaN), "\uDF06", "NaN");
+ a(t.call("\uDF06abc", ""), "\uDF06", "Empty string");
+ a(t.call("\uDF06abc", "_"), "\uDF06", "_");
+ a(t.call("\uDF06abc", "1"), "a", "'1'");
+
+ a.h1("Context");
+ a.throws(
+ function () {
+ t.call(undefined);
+ },
+ TypeError,
+ "Undefined"
+ );
+ a.throws(
+ function () {
+ t.call(undefined, 4);
+ },
+ TypeError,
+ "Undefined + argument"
+ );
+ a.throws(
+ function () {
+ t.call(null);
+ },
+ TypeError,
+ "Null"
+ );
+ a.throws(
+ function () {
+ t.call(null, 4);
+ },
+ TypeError,
+ "Null + argument"
+ );
+ a(t.call(42, 0), "4", "Number #1");
+ a(t.call(42, 1), "2", "Number #2");
+ a(
+ t.call(
+ {
+ toString: function () {
+ return "abc";
+ }
+ },
+ 2
+ ),
+ "c",
+ "Object"
+ );
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/camel-to-hyphen.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/camel-to-hyphen.js
new file mode 100644
index 0000000000..bbf9ae48a9
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/camel-to-hyphen.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("razDwaTRzy4yFoo45My"), "raz-dwa-t-rzy4y-foo45-my");
+ a(t.call("razDwaTRzy4yFoo45My-"), "raz-dwa-t-rzy4y-foo45-my-");
+ a(t.call("razDwaTRzy4yFoo45My--"), "raz-dwa-t-rzy4y-foo45-my--");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/capitalize.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/capitalize.js
new file mode 100644
index 0000000000..884ae9cbb8
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/capitalize.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("raz"), "Raz", "Word");
+ a(t.call("BLA"), "BLA", "Uppercase");
+ a(t.call(""), "", "Empty");
+ a(t.call("a"), "A", "One letter");
+ a(t.call("this is a test"), "This is a test", "Sentence");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/case-insensitive-compare.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/case-insensitive-compare.js
new file mode 100644
index 0000000000..8117f92058
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/case-insensitive-compare.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("AA", "aa"), 0, "Same");
+ a.ok(t.call("Amber", "zebra") < 0, "Less");
+ a.ok(t.call("Zebra", "amber") > 0, "Greater");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/code-point-at/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/code-point-at/implement.js
new file mode 100644
index 0000000000..f966c53543
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/code-point-at/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isImplemented =
+ require("../../../../string/#/code-point-at/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/code-point-at/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/code-point-at/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/code-point-at/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/code-point-at/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/code-point-at/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/code-point-at/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/code-point-at/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/code-point-at/shim.js
new file mode 100644
index 0000000000..40d62766e7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/code-point-at/shim.js
@@ -0,0 +1,119 @@
+/* eslint no-useless-call: "off" */
+
+// Taken from: https://github.com/mathiasbynens/String.prototype.codePointAt
+// /blob/master/tests/tests.js
+
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.length, 1, "Length");
+
+ // String that starts with a BMP symbol
+ a(t.call("abc\uD834\uDF06def", ""), 0x61);
+ a(t.call("abc\uD834\uDF06def", "_"), 0x61);
+ a(t.call("abc\uD834\uDF06def"), 0x61);
+ a(t.call("abc\uD834\uDF06def", -Infinity), undefined);
+ a(t.call("abc\uD834\uDF06def", -1), undefined);
+ a(t.call("abc\uD834\uDF06def", -0), 0x61);
+ a(t.call("abc\uD834\uDF06def", 0), 0x61);
+ a(t.call("abc\uD834\uDF06def", 3), 0x1d306);
+ a(t.call("abc\uD834\uDF06def", 4), 0xdf06);
+ a(t.call("abc\uD834\uDF06def", 5), 0x64);
+ a(t.call("abc\uD834\uDF06def", 42), undefined);
+ a(t.call("abc\uD834\uDF06def", Infinity), undefined);
+ a(t.call("abc\uD834\uDF06def", Infinity), undefined);
+ a(t.call("abc\uD834\uDF06def", NaN), 0x61);
+ a(t.call("abc\uD834\uDF06def", false), 0x61);
+ a(t.call("abc\uD834\uDF06def", null), 0x61);
+ a(t.call("abc\uD834\uDF06def", undefined), 0x61);
+
+ // String that starts with an astral symbol
+ a(t.call("\uD834\uDF06def", ""), 0x1d306);
+ a(t.call("\uD834\uDF06def", "1"), 0xdf06);
+ a(t.call("\uD834\uDF06def", "_"), 0x1d306);
+ a(t.call("\uD834\uDF06def"), 0x1d306);
+ a(t.call("\uD834\uDF06def", -1), undefined);
+ a(t.call("\uD834\uDF06def", -0), 0x1d306);
+ a(t.call("\uD834\uDF06def", 0), 0x1d306);
+ a(t.call("\uD834\uDF06def", 1), 0xdf06);
+ a(t.call("\uD834\uDF06def", 42), undefined);
+ a(t.call("\uD834\uDF06def", false), 0x1d306);
+ a(t.call("\uD834\uDF06def", null), 0x1d306);
+ a(t.call("\uD834\uDF06def", undefined), 0x1d306);
+
+ // Lone high surrogates
+ a(t.call("\uD834abc", ""), 0xd834);
+ a(t.call("\uD834abc", "_"), 0xd834);
+ a(t.call("\uD834abc"), 0xd834);
+ a(t.call("\uD834abc", -1), undefined);
+ a(t.call("\uD834abc", -0), 0xd834);
+ a(t.call("\uD834abc", 0), 0xd834);
+ a(t.call("\uD834abc", false), 0xd834);
+ a(t.call("\uD834abc", NaN), 0xd834);
+ a(t.call("\uD834abc", null), 0xd834);
+ a(t.call("\uD834abc", undefined), 0xd834);
+
+ // Lone low surrogates
+ a(t.call("\uDF06abc", ""), 0xdf06);
+ a(t.call("\uDF06abc", "_"), 0xdf06);
+ a(t.call("\uDF06abc"), 0xdf06);
+ a(t.call("\uDF06abc", -1), undefined);
+ a(t.call("\uDF06abc", -0), 0xdf06);
+ a(t.call("\uDF06abc", 0), 0xdf06);
+ a(t.call("\uDF06abc", false), 0xdf06);
+ a(t.call("\uDF06abc", NaN), 0xdf06);
+ a(t.call("\uDF06abc", null), 0xdf06);
+ a(t.call("\uDF06abc", undefined), 0xdf06);
+
+ a.throws(function () {
+ t.call(undefined);
+ }, TypeError);
+ a.throws(function () {
+ t.call(undefined, 4);
+ }, TypeError);
+ a.throws(function () {
+ t.call(null);
+ }, TypeError);
+ a.throws(function () {
+ t.call(null, 4);
+ }, TypeError);
+ a(t.call(42, 0), 0x34);
+ a(t.call(42, 1), 0x32);
+ a(
+ t.call(
+ {
+ toString: function () {
+ return "abc";
+ }
+ },
+ 2
+ ),
+ 0x63
+ );
+
+ a.throws(function () {
+ t.apply(undefined);
+ }, TypeError);
+ a.throws(function () {
+ t.apply(undefined, [4]);
+ }, TypeError);
+ a.throws(function () {
+ t.apply(null);
+ }, TypeError);
+ a.throws(function () {
+ t.apply(null, [4]);
+ }, TypeError);
+ a(t.apply(42, [0]), 0x34);
+ a(t.apply(42, [1]), 0x32);
+ a(
+ t.apply(
+ {
+ toString: function () {
+ return "abc";
+ }
+ },
+ [2]
+ ),
+ 0x63
+ );
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/contains/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/contains/implement.js
new file mode 100644
index 0000000000..297a832f9c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/contains/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/contains/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/contains/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/contains/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/contains/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/contains/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/contains/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/contains/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/contains/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/contains/shim.js
new file mode 100644
index 0000000000..0a73671d45
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/contains/shim.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("raz", ""), true, "Empty");
+ a(t.call("", ""), true, "Both Empty");
+ a(t.call("raz", "raz"), true, "Same");
+ a(t.call("razdwa", "raz"), true, "Starts with");
+ a(t.call("razdwa", "dwa"), true, "Ends with");
+ a(t.call("razdwa", "zdw"), true, "In middle");
+ a(t.call("", "raz"), false, "Something in empty");
+ a(t.call("az", "raz"), false, "Longer");
+ a(t.call("azasdfasdf", "azff"), false, "Not found");
+ a(t.call("razdwa", "raz", 1), false, "Position");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/count.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/count.js
new file mode 100644
index 0000000000..d259c9012d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/count.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.throws(function () {
+ t.call("", "");
+ });
+ a(t.call("x", "x"), 1);
+ a(t.call("xx", "x"), 2);
+ a(t.call("xxx", "xx"), 1);
+ a(t.call("xxxx", "xx"), 2);
+ a(t.call("xx", "xxx"), 0);
+ a(t.call("", "elo"), 0);
+ a(t.call("fooo", "foofooo"), 0);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/ends-with/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/ends-with/implement.js
new file mode 100644
index 0000000000..5a2ca3cc66
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/ends-with/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/ends-with/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/ends-with/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/ends-with/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/ends-with/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/ends-with/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/ends-with/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/ends-with/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/ends-with/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/ends-with/shim.js
new file mode 100644
index 0000000000..7539883315
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/ends-with/shim.js
@@ -0,0 +1,16 @@
+// In some parts copied from:
+// http://closure-library.googlecode.com/svn/trunk/closure/goog/
+// string/string_test.html
+
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("abc", ""), true, "Empty needle");
+ a(t.call("abcd", "cd"), true, "Ends with needle");
+ a(t.call("abcd", "abcd"), true, "Needle equals haystack");
+ a(t.call("abcd", "ab"), false, "Doesn't end with needle");
+ a(t.call("abc", "defg"), false, "Length trick");
+ a(t.call("razdwa", "zd", 3), false, "Position: false");
+ a(t.call("razdwa", "zd", 4), true, "Position: true");
+ a(t.call("razdwa", "zd", 5), false, "Position: false #2");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/hyphen-to-camel.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/hyphen-to-camel.js
new file mode 100644
index 0000000000..89c8161c9e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/hyphen-to-camel.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("raz-dwa-t-rzy-4y-rtr4-tiu-45-pa"), "razDwaTRzy4yRtr4Tiu45Pa");
+ a(t.call("raz-dwa-t-rzy-4y-rtr4-tiu-45-pa-"), "razDwaTRzy4yRtr4Tiu45Pa-");
+ a(t.call("raz-dwa-t-rzy-4y-rtr4-tiu-45-pa--"), "razDwaTRzy4yRtr4Tiu45Pa--");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/indent.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/indent.js
new file mode 100644
index 0000000000..6b1dd895d2
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/indent.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("ra\nzz", ""), "ra\nzz", "Empty");
+ a(t.call("ra\nzz", "\t", 3), "\t\t\tra\n\t\t\tzz", "String repeat");
+ a(t.call("ra\nzz\nsss\nfff\n", "\t"), "\tra\n\tzz\n\tsss\n\tfff\n",
+ "Multi-line");
+ a(t.call("ra\n\nzz\n", "\t"), "\tra\n\n\tzz\n", "Don't touch empty lines");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/last.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/last.js
new file mode 100644
index 0000000000..fea798d6a7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/last.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(""), null, "Null");
+ a(t.call("abcdef"), "f", "String");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/normalize/_data.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/normalize/_data.js
new file mode 100644
index 0000000000..9631211944
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/normalize/_data.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t[0], "object");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/normalize/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/normalize/implement.js
new file mode 100644
index 0000000000..b053aa892a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/normalize/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/normalize/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/normalize/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/normalize/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/normalize/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/normalize/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/normalize/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/normalize/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/normalize/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/normalize/shim.js
new file mode 100644
index 0000000000..0c80aa4098
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/normalize/shim.js
@@ -0,0 +1,13 @@
+// Taken from: https://github.com/walling/unorm/blob/master/test/es6-shim.js
+
+"use strict";
+
+var str = "äiti";
+
+module.exports = function (t, a) {
+ a(t.call(str), "\u00e4iti");
+ a(t.call(str, "NFC"), "\u00e4iti");
+ a(t.call(str, "NFD"), "a\u0308iti");
+ a(t.call(str, "NFKC"), "\u00e4iti");
+ a(t.call(str, "NFKD"), "a\u0308iti");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/pad.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/pad.js
new file mode 100644
index 0000000000..e573453fb0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/pad.js
@@ -0,0 +1,24 @@
+"use strict";
+
+var partial = require("../../../function/#/partial");
+
+module.exports = {
+ Left: function (t, a) {
+ t = partial.call(t, "x", 5);
+
+ a(t.call("yy"), "xxxyy");
+ a(t.call(""), "xxxxx", "Empty string");
+
+ a(t.call("yyyyy"), "yyyyy", "Equal length");
+ a(t.call("yyyyyyy"), "yyyyyyy", "Longer");
+ },
+ Right: function (t, a) {
+ t = partial.call(t, "x", -5);
+
+ a(t.call("yy"), "yyxxx");
+ a(t.call(""), "xxxxx", "Empty string");
+
+ a(t.call("yyyyy"), "yyyyy", "Equal length");
+ a(t.call("yyyyyyy"), "yyyyyyy", "Longer");
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/plain-replace-all.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/plain-replace-all.js
new file mode 100644
index 0000000000..e5f801c62f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/plain-replace-all.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("razdwatrzy", "dwa", "olera"), "razoleratrzy", "Basic");
+ a(t.call("razdwatrzy", "dwa", "ole$&a"), "razole$&atrzy", "Inserts");
+ a(t.call("razdwa", "ola", "sdfs"), "razdwa", "No replace");
+
+ a(t.call("$raz$$dwa$trzy$", "$", "&&"), "&&raz&&&&dwa&&trzy&&", "Multi");
+ a(t.call("$raz$$dwa$$$$trzy$", "$$", "&"), "$raz&dwa&&trzy$",
+ "Multi many chars");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/plain-replace.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/plain-replace.js
new file mode 100644
index 0000000000..9f6c2beefd
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/plain-replace.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("razdwatrzy", "dwa", "olera"), "razoleratrzy", "Basic");
+ a(t.call("razdwatrzy", "dwa", "ole$&a"), "razole$&atrzy", "Inserts");
+ a(t.call("razdwa", "ola", "sdfs"), "razdwa", "No replace");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/repeat/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/repeat/implement.js
new file mode 100644
index 0000000000..2709628959
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/repeat/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/repeat/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/repeat/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/repeat/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/repeat/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/repeat/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/repeat/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/repeat/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/repeat/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/repeat/shim.js
new file mode 100644
index 0000000000..c5848840c8
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/repeat/shim.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("a", 0), "", "Empty");
+ a(t.call("a", 1), "a", "1");
+ a(t.call("a", 2), "aa", "2");
+ a(t.call("\t", 5), "\t\t\t\t\t", "Whitespace");
+ a(t.call("raz", 3), "razrazraz", "Many chars");
+ a(t.call("raz", 3), "razrazraz", "Many chars");
+ a(t.call("razfoobar", 5), "razfoobarrazfoobarrazfoobarrazfoobarrazfoobar", "Many chars");
+ a(t.call("a", 300).length, 300);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/starts-with/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/starts-with/implement.js
new file mode 100644
index 0000000000..d1f1ce2529
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/starts-with/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/starts-with/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/starts-with/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/starts-with/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/starts-with/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/starts-with/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/starts-with/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/starts-with/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/starts-with/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/starts-with/shim.js
new file mode 100644
index 0000000000..4b5e4e402a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/starts-with/shim.js
@@ -0,0 +1,14 @@
+// Inspired and in some parts copied from:
+// http://closure-library.googlecode.com/svn/trunk/closure/goog
+// /string/string_test.html
+
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("abc", ""), true, "Empty needle");
+ a(t.call("abcd", "ab"), true, "Starts with needle");
+ a(t.call("abcd", "abcd"), true, "Needle equals haystack");
+ a(t.call("abcd", "bcde", 1), false, "Needle larger than haystack");
+ a(!t.call("abcd", "cd"), true, "Doesn't start with needle");
+ a(t.call("abcd", "bc", 1), true, "Position");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/uncapitalize.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/uncapitalize.js
new file mode 100644
index 0000000000..cddd847ce9
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/#/uncapitalize.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("raz"), "raz", "Word");
+ a(t.call("BLA"), "bLA", "Uppercase");
+ a(t.call(""), "", "Empty");
+ a(t.call("a"), "a", "One letter");
+ a(t.call("this is a test"), "this is a test", "Sentence");
+ a(t.call("This is a test"), "this is a test", "Capitalized sentence");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/format-method.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/format-method.js
new file mode 100644
index 0000000000..d0c216b461
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/format-method.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ t = t({
+ a: "A",
+ aa: "B",
+ ab: "C",
+ b: "D",
+ c: function () {
+ return ++this.a;
+ }
+ });
+ a(t.call({ a: 0 }, " %a%aab%abb%b\\%aa%ab%c%c "), " ABbCbD%aaC12 ");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/from-code-point/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/from-code-point/implement.js
new file mode 100644
index 0000000000..31ed7b5bde
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/from-code-point/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../string/from-code-point/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/from-code-point/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/from-code-point/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/from-code-point/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/from-code-point/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/from-code-point/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/from-code-point/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/from-code-point/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/from-code-point/shim.js
new file mode 100644
index 0000000000..023931f131
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/from-code-point/shim.js
@@ -0,0 +1,73 @@
+// Taken from: https://github.com/mathiasbynens/String.fromCodePoint/blob/master
+// /tests/tests.js
+
+"use strict";
+
+var pow = Math.pow;
+
+module.exports = function (t, a) {
+ var counter, result;
+
+ a(t.length, 1, "Length");
+ a(String.propertyIsEnumerable("fromCodePoint"), false, "Not enumerable");
+
+ a(t(""), "\0", "Empty string");
+ a(t(), "", "No arguments");
+ a(t(-0), "\0", "-0");
+ a(t(0), "\0", "0");
+ a(t(0x1D306), "\uD834\uDF06", "Unicode");
+ a(t(0x1D306, 0x61, 0x1D307), "\uD834\uDF06a\uD834\uDF07", "Complex unicode");
+ a(t(0x61, 0x62, 0x1D307), "ab\uD834\uDF07", "Complex");
+ a(t(false), "\0", "false");
+ a(t(null), "\0", "null");
+
+ a.throws(function () {
+ t("_");
+}, RangeError, "_");
+ a.throws(function () {
+ t(Infinity);
+}, RangeError, "Infinity");
+ a.throws(function () {
+ t(-Infinity);
+}, RangeError, "-Infinity");
+ a.throws(function () {
+ t(-1);
+}, RangeError, "-1");
+ a.throws(function () {
+ t(0x10FFFF + 1);
+}, RangeError, "Range error #1");
+ a.throws(function () {
+ t(3.14);
+}, RangeError, "Range error #2");
+ a.throws(function () {
+ t(3e-2);
+}, RangeError, "Range error #3");
+ a.throws(function () {
+ t(-Infinity);
+}, RangeError, "Range error #4");
+ a.throws(function () {
+ t(Number(Infinity));
+}, RangeError, "Range error #5");
+ a.throws(function () {
+ t(NaN);
+}, RangeError, "Range error #6");
+ a.throws(function () {
+ t(undefined);
+}, RangeError, "Range error #7");
+ a.throws(function () {
+ t({});
+}, RangeError, "Range error #8");
+ a.throws(function () {
+ t(/re/);
+}, RangeError, "Range error #9");
+
+ counter = pow(2, 15) * 3 / 2;
+ result = [];
+ while (--counter >= 0) result.push(0); // One code unit per symbol
+ t.apply(null, result); // Must not throw
+
+ counter = pow(2, 15) * 3 / 2;
+ result = [];
+ while (--counter >= 0) result.push(0xFFFF + 1); // Two code units per symbol
+ t.apply(null, result); // Must not throw
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/is-string.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/is-string.js
new file mode 100644
index 0000000000..0e831221d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/is-string.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(null), false, "Null");
+ a(t(""), true, "Empty string");
+ a(t(12), false, "Number");
+ a(t(false), false, "Boolean");
+ a(t(new Date()), false, "Date");
+ a(t(new String("raz")), true, "String object");
+ a(t("asdfaf"), true, "String");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/random-uniq.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/random-uniq.js
new file mode 100644
index 0000000000..3b6d889ad3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/random-uniq.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var isValidFormat = RegExp.prototype.test.bind(/^[a-z0-9]+$/);
+
+module.exports = function (t, a) {
+ a(typeof t(), "string");
+ a.ok(t().length > 7);
+ a.not(t(), t());
+ a.ok(isValidFormat(t()));
+ a.ok(isValidFormat(t()));
+ a.ok(isValidFormat(t()));
+ a.ok(isValidFormat(t()));
+ a.ok(isValidFormat(t()));
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/random.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/random.js
new file mode 100644
index 0000000000..3fa44ca5ba
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/random.js
@@ -0,0 +1,13 @@
+"use strict";
+
+var isValidFormat = RegExp.prototype.test.bind(/^[a-z0-9]+$/);
+
+module.exports = function (t, a) {
+ a(typeof t(), "string");
+ a.ok(t().length > 7);
+ a.not(t({ isUnique: true }), t({ isUnique: true }));
+ a.ok(isValidFormat(t()));
+ a(t({ length: 1 }).length, 1);
+ a(t({ length: 100 }).length, 100);
+ a(t({ length: 0 }), "");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/raw/implement.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/raw/implement.js
new file mode 100644
index 0000000000..25b624e8e9
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/raw/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../string/raw/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/raw/index.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/raw/index.js
new file mode 100644
index 0000000000..10bb8f65d7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/raw/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/raw/is-implemented.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/raw/is-implemented.js
new file mode 100644
index 0000000000..5003e7e937
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/raw/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/string/raw/shim.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/raw/shim.js
new file mode 100644
index 0000000000..17a11ac52f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/string/raw/shim.js
@@ -0,0 +1,15 @@
+// Partially taken from:
+// https://github.com/paulmillr/es6-shim/blob/master/test/string.js
+
+"use strict";
+
+module.exports = function (t, a) {
+ var callSite = [];
+
+ callSite.raw = ["The total is ", " ($", " with tax)"];
+ a(t(callSite, "{total}", "{total * 1.01}"),
+ "The total is {total} (${total * 1.01} with tax)");
+
+ callSite.raw = [];
+ a(t(callSite, "{total}", "{total * 1.01}"), "");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/test/to-short-string-representation.js b/kbase-extension/static/ext_packages/igv/es5-ext/test/to-short-string-representation.js
new file mode 100644
index 0000000000..d76dc7d088
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/test/to-short-string-representation.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var repeat = require("../string/#/repeat");
+
+module.exports = function (t, a) {
+ a(t(), "undefined");
+ a(t(null), "null");
+ a(t(10), "10");
+ a(t("str"), "str");
+ a(
+ t({
+ toString: function () {
+ return "miszka";
+ }
+ }),
+ "miszka"
+ );
+ // eslint-disable-next-line symbol-description
+ if (typeof Symbol === "function") a(t(Symbol()), "Symbol()");
+ a(t(Object.create(null)), "[Non-coercible (to string) value]");
+ a(t(repeat.call("a", 300)), repeat.call("a", 99) + "…");
+ a(t("mar\ntoo\nfar"), "mar\\ntoo\\nfar");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es5-ext/to-short-string-representation.js b/kbase-extension/static/ext_packages/igv/es5-ext/to-short-string-representation.js
new file mode 100644
index 0000000000..5aede5380c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es5-ext/to-short-string-representation.js
@@ -0,0 +1,16 @@
+"use strict";
+
+var safeToString = require("./safe-to-string");
+
+var reNewLine = /[\n\r\u2028\u2029]/g;
+
+module.exports = function (value) {
+ var string = safeToString(value);
+ // Trim if too long
+ if (string.length > 100) string = string.slice(0, 99) + "…";
+ // Replace eventual new lines
+ string = string.replace(reNewLine, function (char) {
+ return JSON.stringify(char).slice(1, -1);
+ });
+ return string;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/#/chain.js b/kbase-extension/static/ext_packages/igv/es6-iterator/#/chain.js
new file mode 100644
index 0000000000..190a3464eb
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/#/chain.js
@@ -0,0 +1,40 @@
+"use strict";
+
+var setPrototypeOf = require("es5-ext/object/set-prototype-of")
+ , d = require("d")
+ , Iterator = require("../")
+ , validIterable = require("../valid-iterable")
+
+ , push = Array.prototype.push
+ , defineProperties = Object.defineProperties
+ , IteratorChain;
+
+IteratorChain = function (iterators) {
+ defineProperties(this, {
+ __iterators__: d("", iterators),
+ __current__: d("w", iterators.shift())
+ });
+};
+if (setPrototypeOf) setPrototypeOf(IteratorChain, Iterator);
+
+IteratorChain.prototype = Object.create(Iterator.prototype, {
+ constructor: d(IteratorChain),
+ next: d(function () {
+ var result;
+ if (!this.__current__) return { done: true, value: undefined };
+ result = this.__current__.next();
+ while (result.done) {
+ this.__current__ = this.__iterators__.shift();
+ if (!this.__current__) return { done: true, value: undefined };
+ result = this.__current__.next();
+ }
+ return result;
+ })
+});
+
+module.exports = function () {
+ var iterators = [this];
+ push.apply(iterators, arguments);
+ iterators.forEach(validIterable);
+ return new IteratorChain(iterators);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/.editorconfig b/kbase-extension/static/ext_packages/igv/es6-iterator/.editorconfig
new file mode 100644
index 0000000000..c24a6cd1f4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/.editorconfig
@@ -0,0 +1,14 @@
+# EditorConfig is awesome: http://EditorConfig.org
+
+# top-most EditorConfig file
+root = true
+
+# Unix-style newlines with a newline ending every file
+[*]
+end_of_line = lf
+insert_final_newline = true
+indent_style = tab
+
+[{*.json,*.yml}]
+indent_style = space
+indent_size = 2
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/.npmignore b/kbase-extension/static/ext_packages/igv/es6-iterator/.npmignore
new file mode 100644
index 0000000000..a91db6550d
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/.npmignore
@@ -0,0 +1,12 @@
+.DS_Store
+Thumbs.db
+/.idea
+/.vscode
+npm-debug.log
+/wallaby.js
+/node_modules
+/.travis.yml
+/.gitignore
+/.circle.yml
+/.circleci
+/.appveyor.yml
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/CHANGELOG.md b/kbase-extension/static/ext_packages/igv/es6-iterator/CHANGELOG.md
new file mode 100644
index 0000000000..37eb16abe3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/CHANGELOG.md
@@ -0,0 +1,27 @@
+# Change Log
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+
+## [2.0.3](https://github.com/medikoo/es6-iterator/compare/v2.0.2...v2.0.3) (2017-10-17)
+
+
+### Bug Fixes
+
+* configurability of toStringTag ([b99f692](https://github.com/medikoo/es6-iterator/commit/b99f692))
+
+
+
+
+## [2.0.2](https://github.com/medikoo/es6-iterator/compare/v2.0.1...v2.0.2) (2017-10-17)
+
+
+### Bug Fixes
+
+* constructor exposure ([dbc0c51](https://github.com/medikoo/es6-iterator/commit/dbc0c51))
+* do not allow non constructor calls ([1f2f800](https://github.com/medikoo/es6-iterator/commit/1f2f800))
+* toString and toStringTag symbol definitions. ([2d17786](https://github.com/medikoo/es6-iterator/commit/2d17786)), closes [#6](https://github.com/medikoo/es6-iterator/issues/6)
+
+## Changelog for previous versions
+
+See `CHANGES` file
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/CHANGES b/kbase-extension/static/ext_packages/igv/es6-iterator/CHANGES
new file mode 100644
index 0000000000..83095f7ce8
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/CHANGES
@@ -0,0 +1,42 @@
+For recent changelog see CHANGELOG.md
+
+-----
+
+v2.0.1 -- 2017.03.15
+* Update dependencies
+
+v2.0.0 -- 2015.10.02
+* Use es6-symbol at v3
+
+v1.0.0 -- 2015.06.23
+* Implement support for arguments object
+* Drop support for v0.8 node ('^' in package.json dependencies)
+
+v0.1.3 -- 2015.02.02
+* Update dependencies
+* Fix spelling of LICENSE
+
+v0.1.2 -- 2014.11.19
+* Optimise internal `_next` to not verify internal's list length at all times
+ (#2 thanks @RReverser)
+* Fix documentation examples
+* Configure lint scripts
+
+v0.1.1 -- 2014.04.29
+* Fix es6-symbol dependency version
+
+v0.1.0 -- 2014.04.29
+* Assure strictly npm hosted dependencies
+* Remove sparse arrays dedicated handling (as per spec)
+* Add: isIterable, validIterable and chain (method)
+* Remove toArray, it's addressed by Array.from (polyfil can be found in es5-ext/array/from)
+* Add break possiblity to 'forOf' via 'doBreak' function argument
+* Provide dedicated iterator for array-likes (ArrayIterator) and for strings (StringIterator)
+* Provide @@toStringTag symbol
+* When available rely on @@iterator symbol
+* Remove 32bit integer maximum list length restriction
+* Improve Iterator internals
+* Update to use latest version of dependencies
+
+v0.0.0 -- 2013.10.12
+Initial (dev version)
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/LICENSE b/kbase-extension/static/ext_packages/igv/es6-iterator/LICENSE
new file mode 100644
index 0000000000..d7c36d5585
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (C) 2013-2017 Mariusz Nowak (www.medikoo.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/README.md b/kbase-extension/static/ext_packages/igv/es6-iterator/README.md
new file mode 100644
index 0000000000..288373da7a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/README.md
@@ -0,0 +1,148 @@
+# es6-iterator
+## ECMAScript 6 Iterator interface
+
+### Installation
+
+ $ npm install es6-iterator
+
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+## API
+
+### Constructors
+
+#### Iterator(list) _(es6-iterator)_
+
+Abstract Iterator interface. Meant for extensions and not to be used on its own.
+
+Accepts any _list_ object (technically object with numeric _length_ property).
+
+_Mind it doesn't iterate strings properly, for that use dedicated [StringIterator](#string-iterator)_
+
+```javascript
+var Iterator = require('es6-iterator')
+var iterator = new Iterator([1, 2, 3]);
+
+iterator.next(); // { value: 1, done: false }
+iterator.next(); // { value: 2, done: false }
+iterator.next(); // { value: 3, done: false }
+iterator.next(); // { value: undefined, done: true }
+```
+
+
+#### ArrayIterator(arrayLike[, kind]) _(es6-iterator/array)_
+
+Dedicated for arrays and array-likes. Supports three iteration kinds:
+* __value__ _(default)_ - Iterates values
+* __key__ - Iterates indexes
+* __key+value__ - Iterates keys and indexes, each iteration value is in _[key, value]_ form.
+
+
+```javascript
+var ArrayIterator = require('es6-iterator/array')
+var iterator = new ArrayIterator([1, 2, 3], 'key+value');
+
+iterator.next(); // { value: [0, 1], done: false }
+iterator.next(); // { value: [1, 2], done: false }
+iterator.next(); // { value: [2, 3], done: false }
+iterator.next(); // { value: undefined, done: true }
+```
+
+May also be used for _arguments_ objects:
+
+```javascript
+(function () {
+ var iterator = new ArrayIterator(arguments);
+
+ iterator.next(); // { value: 1, done: false }
+ iterator.next(); // { value: 2, done: false }
+ iterator.next(); // { value: 3, done: false }
+ iterator.next(); // { value: undefined, done: true }
+}(1, 2, 3));
+```
+
+#### StringIterator(str) _(es6-iterator/string)_
+
+Assures proper iteration over unicode symbols.
+See: http://mathiasbynens.be/notes/javascript-unicode
+
+```javascript
+var StringIterator = require('es6-iterator/string');
+var iterator = new StringIterator('f🙈o🙉o🙊');
+
+iterator.next(); // { value: 'f', done: false }
+iterator.next(); // { value: '🙈', done: false }
+iterator.next(); // { value: 'o', done: false }
+iterator.next(); // { value: '🙉', done: false }
+iterator.next(); // { value: 'o', done: false }
+iterator.next(); // { value: '🙊', done: false }
+iterator.next(); // { value: undefined, done: true }
+```
+
+### Function utilities
+
+#### forOf(iterable, callback[, thisArg]) _(es6-iterator/for-of)_
+
+Polyfill for ECMAScript 6 [`for...of`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of) statement.
+
+```
+var forOf = require('es6-iterator/for-of');
+var result = [];
+
+forOf('🙈🙉🙊', function (monkey) { result.push(monkey); });
+console.log(result); // ['🙈', '🙉', '🙊'];
+```
+
+Optionally you can break iteration at any point:
+
+```javascript
+var result = [];
+
+forOf([1,2,3,4]', function (val, doBreak) {
+ result.push(monkey);
+ if (val >= 3) doBreak();
+});
+console.log(result); // [1, 2, 3];
+```
+
+#### get(obj) _(es6-iterator/get)_
+
+Return iterator for any iterable object.
+
+```javascript
+var getIterator = require('es6-iterator/get');
+var iterator = get([1,2,3]);
+
+iterator.next(); // { value: 1, done: false }
+iterator.next(); // { value: 2, done: false }
+iterator.next(); // { value: 3, done: false }
+iterator.next(); // { value: undefined, done: true }
+```
+
+#### isIterable(obj) _(es6-iterator/is-iterable)_
+
+Whether _obj_ is iterable
+
+```javascript
+var isIterable = require('es6-iterator/is-iterable');
+
+isIterable(null); // false
+isIterable(true); // false
+isIterable('str'); // true
+isIterable(['a', 'r', 'r']); // true
+isIterable(new ArrayIterator([])); // true
+```
+
+#### validIterable(obj) _(es6-iterator/valid-iterable)_
+
+If _obj_ is an iterable it is returned. Otherwise _TypeError_ is thrown.
+
+### Method extensions
+
+#### iterator.chain(iterator1[, …iteratorn]) _(es6-iterator/#/chain)_
+
+Chain multiple iterators into one.
+
+### Tests [![Build Status](https://travis-ci.org/medikoo/es6-iterator.png)](https://travis-ci.org/medikoo/es6-iterator)
+
+ $ npm test
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/appveyor.yml b/kbase-extension/static/ext_packages/igv/es6-iterator/appveyor.yml
new file mode 100644
index 0000000000..942ab82787
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/appveyor.yml
@@ -0,0 +1,26 @@
+# Test against the latest version of this Node.js version
+environment:
+ matrix:
+ # node.js
+ - nodejs_version: "0.12"
+ - nodejs_version: "4"
+ - nodejs_version: "6"
+ - nodejs_version: "8"
+
+# Install scripts. (runs after repo cloning)
+install:
+ # Get the latest stable version of Node.js or io.js
+ - ps: Install-Product node $env:nodejs_version
+ # install modules
+ - npm install
+
+# Post-install test scripts.
+test_script:
+ # Output useful info for debugging.
+ - node --version
+ - npm --version
+ # run tests
+ - npm test
+
+# Don't actually build.
+build: off
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/array.js b/kbase-extension/static/ext_packages/igv/es6-iterator/array.js
new file mode 100644
index 0000000000..d7a46a4819
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/array.js
@@ -0,0 +1,32 @@
+"use strict";
+
+var setPrototypeOf = require("es5-ext/object/set-prototype-of")
+ , contains = require("es5-ext/string/#/contains")
+ , d = require("d")
+ , Symbol = require("es6-symbol")
+ , Iterator = require("./");
+
+var defineProperty = Object.defineProperty, ArrayIterator;
+
+ArrayIterator = module.exports = function (arr, kind) {
+ if (!(this instanceof ArrayIterator)) throw new TypeError("Constructor requires 'new'");
+ Iterator.call(this, arr);
+ if (!kind) kind = "value";
+ else if (contains.call(kind, "key+value")) kind = "key+value";
+ else if (contains.call(kind, "key")) kind = "key";
+ else kind = "value";
+ defineProperty(this, "__kind__", d("", kind));
+};
+if (setPrototypeOf) setPrototypeOf(ArrayIterator, Iterator);
+
+// Internal %ArrayIteratorPrototype% doesn't expose its constructor
+delete ArrayIterator.prototype.constructor;
+
+ArrayIterator.prototype = Object.create(Iterator.prototype, {
+ _resolve: d(function (i) {
+ if (this.__kind__ === "value") return this.__list__[i];
+ if (this.__kind__ === "key+value") return [i, this.__list__[i]];
+ return i;
+ })
+});
+defineProperty(ArrayIterator.prototype, Symbol.toStringTag, d("c", "Array Iterator"));
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/for-of.js b/kbase-extension/static/ext_packages/igv/es6-iterator/for-of.js
new file mode 100644
index 0000000000..5d15c349fd
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/for-of.js
@@ -0,0 +1,47 @@
+"use strict";
+
+var isArguments = require("es5-ext/function/is-arguments")
+ , callable = require("es5-ext/object/valid-callable")
+ , isString = require("es5-ext/string/is-string")
+ , get = require("./get");
+
+var isArray = Array.isArray, call = Function.prototype.call, some = Array.prototype.some;
+
+module.exports = function (iterable, cb /*, thisArg*/) {
+ var mode, thisArg = arguments[2], result, doBreak, broken, i, length, char, code;
+ if (isArray(iterable) || isArguments(iterable)) mode = "array";
+ else if (isString(iterable)) mode = "string";
+ else iterable = get(iterable);
+
+ callable(cb);
+ doBreak = function () {
+ broken = true;
+ };
+ if (mode === "array") {
+ some.call(iterable, function (value) {
+ call.call(cb, thisArg, value, doBreak);
+ return broken;
+ });
+ return;
+ }
+ if (mode === "string") {
+ length = iterable.length;
+ for (i = 0; i < length; ++i) {
+ char = iterable[i];
+ if (i + 1 < length) {
+ code = char.charCodeAt(0);
+ if (code >= 0xd800 && code <= 0xdbff) char += iterable[++i];
+ }
+ call.call(cb, thisArg, char, doBreak);
+ if (broken) break;
+ }
+ return;
+ }
+ result = iterable.next();
+
+ while (!result.done) {
+ call.call(cb, thisArg, result.value, doBreak);
+ if (broken) return;
+ result = iterable.next();
+ }
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/get.js b/kbase-extension/static/ext_packages/igv/es6-iterator/get.js
new file mode 100644
index 0000000000..d36c9e2475
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/get.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var isArguments = require("es5-ext/function/is-arguments")
+ , isString = require("es5-ext/string/is-string")
+ , ArrayIterator = require("./array")
+ , StringIterator = require("./string")
+ , iterable = require("./valid-iterable")
+ , iteratorSymbol = require("es6-symbol").iterator;
+
+module.exports = function (obj) {
+ if (typeof iterable(obj)[iteratorSymbol] === "function") return obj[iteratorSymbol]();
+ if (isArguments(obj)) return new ArrayIterator(obj);
+ if (isString(obj)) return new StringIterator(obj);
+ return new ArrayIterator(obj);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/index.js b/kbase-extension/static/ext_packages/igv/es6-iterator/index.js
new file mode 100644
index 0000000000..790475fdda
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/index.js
@@ -0,0 +1,106 @@
+"use strict";
+
+var clear = require("es5-ext/array/#/clear")
+ , assign = require("es5-ext/object/assign")
+ , callable = require("es5-ext/object/valid-callable")
+ , value = require("es5-ext/object/valid-value")
+ , d = require("d")
+ , autoBind = require("d/auto-bind")
+ , Symbol = require("es6-symbol");
+
+var defineProperty = Object.defineProperty, defineProperties = Object.defineProperties, Iterator;
+
+module.exports = Iterator = function (list, context) {
+ if (!(this instanceof Iterator)) throw new TypeError("Constructor requires 'new'");
+ defineProperties(this, {
+ __list__: d("w", value(list)),
+ __context__: d("w", context),
+ __nextIndex__: d("w", 0)
+ });
+ if (!context) return;
+ callable(context.on);
+ context.on("_add", this._onAdd);
+ context.on("_delete", this._onDelete);
+ context.on("_clear", this._onClear);
+};
+
+// Internal %IteratorPrototype% doesn't expose its constructor
+delete Iterator.prototype.constructor;
+
+defineProperties(
+ Iterator.prototype,
+ assign(
+ {
+ _next: d(function () {
+ var i;
+ if (!this.__list__) return undefined;
+ if (this.__redo__) {
+ i = this.__redo__.shift();
+ if (i !== undefined) return i;
+ }
+ if (this.__nextIndex__ < this.__list__.length) return this.__nextIndex__++;
+ this._unBind();
+ return undefined;
+ }),
+ next: d(function () {
+ return this._createResult(this._next());
+ }),
+ _createResult: d(function (i) {
+ if (i === undefined) return { done: true, value: undefined };
+ return { done: false, value: this._resolve(i) };
+ }),
+ _resolve: d(function (i) {
+ return this.__list__[i];
+ }),
+ _unBind: d(function () {
+ this.__list__ = null;
+ delete this.__redo__;
+ if (!this.__context__) return;
+ this.__context__.off("_add", this._onAdd);
+ this.__context__.off("_delete", this._onDelete);
+ this.__context__.off("_clear", this._onClear);
+ this.__context__ = null;
+ }),
+ toString: d(function () {
+ return "[object " + (this[Symbol.toStringTag] || "Object") + "]";
+ })
+ },
+ autoBind({
+ _onAdd: d(function (index) {
+ if (index >= this.__nextIndex__) return;
+ ++this.__nextIndex__;
+ if (!this.__redo__) {
+ defineProperty(this, "__redo__", d("c", [index]));
+ return;
+ }
+ this.__redo__.forEach(function (redo, i) {
+ if (redo >= index) this.__redo__[i] = ++redo;
+ }, this);
+ this.__redo__.push(index);
+ }),
+ _onDelete: d(function (index) {
+ var i;
+ if (index >= this.__nextIndex__) return;
+ --this.__nextIndex__;
+ if (!this.__redo__) return;
+ i = this.__redo__.indexOf(index);
+ if (i !== -1) this.__redo__.splice(i, 1);
+ this.__redo__.forEach(function (redo, j) {
+ if (redo > index) this.__redo__[j] = --redo;
+ }, this);
+ }),
+ _onClear: d(function () {
+ if (this.__redo__) clear.call(this.__redo__);
+ this.__nextIndex__ = 0;
+ })
+ })
+ )
+);
+
+defineProperty(
+ Iterator.prototype,
+ Symbol.iterator,
+ d(function () {
+ return this;
+ })
+);
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/is-iterable.js b/kbase-extension/static/ext_packages/igv/es6-iterator/is-iterable.js
new file mode 100644
index 0000000000..cda7dfeb38
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/is-iterable.js
@@ -0,0 +1,16 @@
+"use strict";
+
+var isArguments = require("es5-ext/function/is-arguments")
+ , isValue = require("es5-ext/object/is-value")
+ , isString = require("es5-ext/string/is-string");
+
+var iteratorSymbol = require("es6-symbol").iterator
+ , isArray = Array.isArray;
+
+module.exports = function (value) {
+ if (!isValue(value)) return false;
+ if (isArray(value)) return true;
+ if (isString(value)) return true;
+ if (isArguments(value)) return true;
+ return typeof value[iteratorSymbol] === "function";
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/package.json b/kbase-extension/static/ext_packages/igv/es6-iterator/package.json
new file mode 100644
index 0000000000..a657bfe471
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/package.json
@@ -0,0 +1,78 @@
+{
+ "_args": [
+ [
+ "es6-iterator@2.0.3",
+ "/Users/jim/DMZ/narrative-mar-2018/kbase-extension/static/ext_components"
+ ]
+ ],
+ "_from": "es6-iterator@2.0.3",
+ "_id": "es6-iterator@2.0.3",
+ "_inBundle": false,
+ "_integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+ "_location": "/es6-iterator",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "version",
+ "registry": true,
+ "raw": "es6-iterator@2.0.3",
+ "name": "es6-iterator",
+ "escapedName": "es6-iterator",
+ "rawSpec": "2.0.3",
+ "saveSpec": null,
+ "fetchSpec": "2.0.3"
+ },
+ "_requiredBy": [
+ "/es5-ext",
+ "/es6-set"
+ ],
+ "_resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "_spec": "2.0.3",
+ "_where": "/Users/jim/DMZ/narrative-mar-2018/kbase-extension/static/ext_components",
+ "author": {
+ "name": "Mariusz Nowak",
+ "email": "medyk@medikoo.com",
+ "url": "http://www.medikoo.com/"
+ },
+ "bugs": {
+ "url": "https://github.com/medikoo/es6-iterator/issues"
+ },
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "^0.10.35",
+ "es6-symbol": "^3.1.1"
+ },
+ "description": "Iterator abstraction based on ES6 specification",
+ "devDependencies": {
+ "eslint": "^4.9",
+ "eslint-config-medikoo-es5": "^1.4.4",
+ "event-emitter": "^0.3.5",
+ "tad": "^0.2.7"
+ },
+ "eslintConfig": {
+ "extends": "medikoo-es5",
+ "root": true,
+ "rules": {
+ "no-extend-native": "off"
+ }
+ },
+ "homepage": "https://github.com/medikoo/es6-iterator#readme",
+ "keywords": [
+ "iterator",
+ "array",
+ "list",
+ "set",
+ "map",
+ "generator"
+ ],
+ "license": "MIT",
+ "name": "es6-iterator",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/medikoo/es6-iterator.git"
+ },
+ "scripts": {
+ "lint": "eslint --ignore-path=.gitignore .",
+ "test": "node ./node_modules/tad/bin/tad"
+ },
+ "version": "2.0.3"
+}
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/string.js b/kbase-extension/static/ext_packages/igv/es6-iterator/string.js
new file mode 100644
index 0000000000..48882252b3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/string.js
@@ -0,0 +1,39 @@
+// Thanks @mathiasbynens
+// http://mathiasbynens.be/notes/javascript-unicode#iterating-over-symbols
+
+"use strict";
+
+var setPrototypeOf = require("es5-ext/object/set-prototype-of")
+ , d = require("d")
+ , Symbol = require("es6-symbol")
+ , Iterator = require("./");
+
+var defineProperty = Object.defineProperty, StringIterator;
+
+StringIterator = module.exports = function (str) {
+ if (!(this instanceof StringIterator)) throw new TypeError("Constructor requires 'new'");
+ str = String(str);
+ Iterator.call(this, str);
+ defineProperty(this, "__length__", d("", str.length));
+};
+if (setPrototypeOf) setPrototypeOf(StringIterator, Iterator);
+
+// Internal %ArrayIteratorPrototype% doesn't expose its constructor
+delete StringIterator.prototype.constructor;
+
+StringIterator.prototype = Object.create(Iterator.prototype, {
+ _next: d(function () {
+ if (!this.__list__) return undefined;
+ if (this.__nextIndex__ < this.__length__) return this.__nextIndex__++;
+ this._unBind();
+ return undefined;
+ }),
+ _resolve: d(function (i) {
+ var char = this.__list__[i], code;
+ if (this.__nextIndex__ === this.__length__) return char;
+ code = char.charCodeAt(0);
+ if (code >= 0xd800 && code <= 0xdbff) return char + this.__list__[this.__nextIndex__++];
+ return char;
+ })
+});
+defineProperty(StringIterator.prototype, Symbol.toStringTag, d("c", "String Iterator"));
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/test/#/chain.js b/kbase-extension/static/ext_packages/igv/es6-iterator/test/#/chain.js
new file mode 100644
index 0000000000..457356f2f1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/test/#/chain.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var Iterator = require("../../");
+
+module.exports = function (t, a) {
+ var i1 = new Iterator(["raz", "dwa", "trzy"])
+ , i2 = new Iterator(["cztery", "pięć", "sześć"])
+ , i3 = new Iterator(["siedem", "osiem", "dziewięć"])
+
+ , iterator = t.call(i1, i2, i3);
+
+ a.deep(iterator.next(), { done: false, value: "raz" }, "#1");
+ a.deep(iterator.next(), { done: false, value: "dwa" }, "#2");
+ a.deep(iterator.next(), { done: false, value: "trzy" }, "#3");
+ a.deep(iterator.next(), { done: false, value: "cztery" }, "#4");
+ a.deep(iterator.next(), { done: false, value: "pięć" }, "#5");
+ a.deep(iterator.next(), { done: false, value: "sześć" }, "#6");
+ a.deep(iterator.next(), { done: false, value: "siedem" }, "#7");
+ a.deep(iterator.next(), { done: false, value: "osiem" }, "#8");
+ a.deep(iterator.next(), { done: false, value: "dziewięć" }, "#9");
+ a.deep(iterator.next(), { done: true, value: undefined }, "Done #1");
+ a.deep(iterator.next(), { done: true, value: undefined }, "Done #2");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/test/.eslintrc.json b/kbase-extension/static/ext_packages/igv/es6-iterator/test/.eslintrc.json
new file mode 100644
index 0000000000..99f0b65533
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/test/.eslintrc.json
@@ -0,0 +1,5 @@
+{
+ "rules": {
+ "id-length": "off"
+ }
+}
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/test/array.js b/kbase-extension/static/ext_packages/igv/es6-iterator/test/array.js
new file mode 100644
index 0000000000..447dfa7328
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/test/array.js
@@ -0,0 +1,67 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator;
+
+module.exports = function (T) {
+ return {
+ "Values": function (a) {
+ var x = ["raz", "dwa", "trzy", "cztery", "pięć", "sześć"], it;
+
+ it = new T(x);
+ a(it[iteratorSymbol](), it, "@@iterator");
+ a.deep(it.next(), { done: false, value: "raz" }, "#1");
+ a.deep(it.next(), { done: false, value: "dwa" }, "#2");
+ x.splice(1, 0, "elo");
+ a.deep(it.next(), { done: false, value: "dwa" }, "Insert");
+ a.deep(it.next(), { done: false, value: "trzy" }, "#3");
+ a.deep(it.next(), { done: false, value: "cztery" }, "#4");
+ x.pop();
+ a.deep(it.next(), { done: false, value: "pięć" }, "#5");
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+ },
+ "Keys & Values": function (a) {
+ var x = ["raz", "dwa", "trzy", "cztery", "pięć", "sześć"], it;
+
+ it = new T(x, "key+value");
+ a(it[iteratorSymbol](), it, "@@iterator");
+ a.deep(it.next(), { done: false, value: [0, "raz"] }, "#1");
+ a.deep(it.next(), { done: false, value: [1, "dwa"] }, "#2");
+ x.splice(1, 0, "elo");
+ a.deep(it.next(), { done: false, value: [2, "dwa"] }, "Insert");
+ a.deep(it.next(), { done: false, value: [3, "trzy"] }, "#3");
+ a.deep(it.next(), { done: false, value: [4, "cztery"] }, "#4");
+ x.pop();
+ a.deep(it.next(), { done: false, value: [5, "pięć"] }, "#5");
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+ },
+ "Keys": function (a) {
+ var x = ["raz", "dwa", "trzy", "cztery", "pięć", "sześć"], it;
+
+ it = new T(x, "key");
+ a(it[iteratorSymbol](), it, "@@iterator");
+ a.deep(it.next(), { done: false, value: 0 }, "#1");
+ a.deep(it.next(), { done: false, value: 1 }, "#2");
+ x.splice(1, 0, "elo");
+ a.deep(it.next(), { done: false, value: 2 }, "Insert");
+ a.deep(it.next(), { done: false, value: 3 }, "#3");
+ a.deep(it.next(), { done: false, value: 4 }, "#4");
+ x.pop();
+ a.deep(it.next(), { done: false, value: 5 }, "#5");
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+ },
+ "Sparse": function (a) {
+ var x = new Array(6), it;
+
+ x[2] = "raz";
+ x[4] = "dwa";
+ it = new T(x);
+ a.deep(it.next(), { done: false, value: undefined }, "#1");
+ a.deep(it.next(), { done: false, value: undefined }, "#2");
+ a.deep(it.next(), { done: false, value: "raz" }, "#3");
+ a.deep(it.next(), { done: false, value: undefined }, "#4");
+ a.deep(it.next(), { done: false, value: "dwa" }, "#5");
+ a.deep(it.next(), { done: false, value: undefined }, "#6");
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+ }
+ };
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/test/for-of.js b/kbase-extension/static/ext_packages/igv/es6-iterator/test/for-of.js
new file mode 100644
index 0000000000..9b47e979dd
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/test/for-of.js
@@ -0,0 +1,42 @@
+"use strict";
+
+var ArrayIterator = require("../array")
+
+ , slice = Array.prototype.slice;
+
+module.exports = function (t, a) {
+ var i = 0, x = ["raz", "dwa", "trzy"], y = {}, called = 0;
+ t(x, function () {
+ a.deep(slice.call(arguments, 0, 1), [x[i]], "Array " + i + "#");
+ a(this, y, "Array: context: " + i++ + "#");
+ }, y);
+ i = 0;
+ t((function () {
+ return arguments;
+}("raz", "dwa", "trzy")), function () {
+ a.deep(slice.call(arguments, 0, 1), [x[i]], "Arguments" + i + "#");
+ a(this, y, "Arguments: context: " + i++ + "#");
+ }, y);
+ i = 0;
+ t(x = "foo", function () {
+ a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+ a(this, y, "Regular String: context: " + i++ + "#");
+ }, y);
+ i = 0;
+ x = ["r", "💩", "z"];
+ t("r💩z", function () {
+ a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+ a(this, y, "Unicode String: context: " + i++ + "#");
+ }, y);
+ i = 0;
+ t(new ArrayIterator(x), function () {
+ a.deep(slice.call(arguments, 0, 1), [x[i]], "Iterator " + i + "#");
+ a(this, y, "Iterator: context: " + i++ + "#");
+ }, y);
+
+ t(x = ["raz", "dwa", "trzy"], function (value, doBreak) {
+ ++called;
+ return doBreak();
+ });
+ a(called, 1, "Break");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/test/get.js b/kbase-extension/static/ext_packages/igv/es6-iterator/test/get.js
new file mode 100644
index 0000000000..c5947d3e61
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/test/get.js
@@ -0,0 +1,27 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator
+ , Iterator = require("../");
+
+module.exports = function (t, a) {
+ var iterator;
+ a.throws(function () {
+ t();
+}, TypeError, "Null");
+ a.throws(function () {
+ t({});
+}, TypeError, "Plain object");
+ a.throws(function () {
+ t({ length: 0 });
+}, TypeError, "Array-like");
+ iterator = {};
+ iterator[iteratorSymbol] = function () {
+ return new Iterator([]);
+};
+ a(t(iterator) instanceof Iterator, true, "Iterator");
+ a(String(t([])), "[object Array Iterator]", " Array");
+ a(String(t(function () {
+ return arguments;
+}())), "[object Array Iterator]", " Arguments");
+ a(String(t("foo")), "[object String Iterator]", "String");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/test/index.js b/kbase-extension/static/ext_packages/igv/es6-iterator/test/index.js
new file mode 100644
index 0000000000..4898218545
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/test/index.js
@@ -0,0 +1,99 @@
+"use strict";
+
+var ee = require("event-emitter")
+ , iteratorSymbol = require("es6-symbol").iterator;
+
+module.exports = function (T) {
+ return {
+ "": function (a) {
+ var x = ["raz", "dwa", "trzy", "cztery", "pięć"], it, y, z;
+
+ it = new T(x);
+ a(it[iteratorSymbol](), it, "@@iterator");
+ y = it.next();
+ a.deep(y, { done: false, value: "raz" }, "#1");
+ z = it.next();
+ a.not(y, z, "Recreate result");
+ a.deep(z, { done: false, value: "dwa" }, "#2");
+ a.deep(it.next(), { done: false, value: "trzy" }, "#3");
+ a.deep(it.next(), { done: false, value: "cztery" }, "#4");
+ a.deep(it.next(), { done: false, value: "pięć" }, "#5");
+ a.deep(y = it.next(), { done: true, value: undefined }, "End");
+ a.not(y, it.next(), "Recreate result on dead");
+ },
+ "Emited": function (a) {
+ var x = ["raz", "dwa", "trzy", "cztery", "pięć"], y, it;
+
+ y = ee();
+ it = new T(x, y);
+ a.deep(it.next(), { done: false, value: "raz" }, "#1");
+ a.deep(it.next(), { done: false, value: "dwa" }, "#2");
+ y.emit("_add", x.push("sześć") - 1);
+ a.deep(it.next(), { done: false, value: "trzy" }, "#3");
+ x.splice(1, 0, "półtora");
+ y.emit("_add", 1);
+ a.deep(it.next(), { done: false, value: "półtora" }, "Insert");
+ x.splice(5, 1);
+ y.emit("_delete", 5);
+ a.deep(it.next(), { done: false, value: "cztery" }, "#4");
+ a.deep(it.next(), { done: false, value: "sześć" }, "#5");
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+ },
+ "Emited #2": function (a) {
+ var x = ["raz", "dwa", "trzy", "cztery", "pięć", "sześć"], y, it;
+
+ y = ee();
+ it = new T(x, y);
+ a.deep(it.next(), { done: false, value: "raz" }, "#1");
+ a.deep(it.next(), { done: false, value: "dwa" }, "#2");
+ x.splice(1, 0, "półtora");
+ y.emit("_add", 1);
+ x.splice(1, 0, "1.25");
+ y.emit("_add", 1);
+ x.splice(0, 1);
+ y.emit("_delete", 0);
+ a.deep(it.next(), { done: false, value: "półtora" }, "Insert");
+ a.deep(it.next(), { done: false, value: "1.25" }, "Insert #2");
+ a.deep(it.next(), { done: false, value: "trzy" }, "#3");
+ a.deep(it.next(), { done: false, value: "cztery" }, "#4");
+ x.splice(5, 1);
+ y.emit("_delete", 5);
+ a.deep(it.next(), { done: false, value: "sześć" }, "#5");
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+ },
+ "Emited: Clear #1": function (a) {
+ var x = ["raz", "dwa", "trzy", "cztery", "pięć", "sześć"], y, it;
+
+ y = ee();
+ it = new T(x, y);
+ a.deep(it.next(), { done: false, value: "raz" }, "#1");
+ a.deep(it.next(), { done: false, value: "dwa" }, "#2");
+ x.length = 0;
+ y.emit("_clear");
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+ },
+ "Emited: Clear #2": function (a) {
+ var x = ["raz", "dwa", "trzy", "cztery", "pięć", "sześć"], y, it;
+
+ y = ee();
+ it = new T(x, y);
+ a.deep(it.next(), { done: false, value: "raz" }, "#1");
+ a.deep(it.next(), { done: false, value: "dwa" }, "#2");
+ x.length = 0;
+ y.emit("_clear");
+ x.push("foo");
+ x.push("bar");
+ a.deep(it.next(), { done: false, value: "foo" }, "#3");
+ a.deep(it.next(), { done: false, value: "bar" }, "#4");
+ x.splice(1, 0, "półtora");
+ y.emit("_add", 1);
+ x.splice(1, 0, "1.25");
+ y.emit("_add", 1);
+ x.splice(0, 1);
+ y.emit("_delete", 0);
+ a.deep(it.next(), { done: false, value: "półtora" }, "Insert");
+ a.deep(it.next(), { done: false, value: "1.25" }, "Insert #2");
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+ }
+ };
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/test/is-iterable.js b/kbase-extension/static/ext_packages/igv/es6-iterator/test/is-iterable.js
new file mode 100644
index 0000000000..5787351a47
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/test/is-iterable.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator
+ , Iterator = require("../");
+
+module.exports = function (t, a) {
+ var iterator;
+ a(t(), false, "Undefined");
+ a(t(123), false, "Number");
+ a(t({}), false, "Plain object");
+ a(t({ length: 0 }), false, "Array-like");
+ iterator = {};
+ iterator[iteratorSymbol] = function () {
+ return new Iterator([]);
+};
+ a(t(iterator), true, "Iterator");
+ a(t([]), true, "Array");
+ a(t("foo"), true, "String");
+ a(t(""), true, "Empty string");
+ a(t(function () {
+ return arguments;
+}()), true, "Arguments");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/test/string.js b/kbase-extension/static/ext_packages/igv/es6-iterator/test/string.js
new file mode 100644
index 0000000000..3f2a5b6797
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/test/string.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator;
+
+module.exports = function (T, a) {
+ var it = new T("foobar");
+
+ a(it[iteratorSymbol](), it, "@@iterator");
+ a.deep(it.next(), { done: false, value: "f" }, "#1");
+ a.deep(it.next(), { done: false, value: "o" }, "#2");
+ a.deep(it.next(), { done: false, value: "o" }, "#3");
+ a.deep(it.next(), { done: false, value: "b" }, "#4");
+ a.deep(it.next(), { done: false, value: "a" }, "#5");
+ a.deep(it.next(), { done: false, value: "r" }, "#6");
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+
+ a.h1("Outside of BMP");
+ it = new T("r💩z");
+ a.deep(it.next(), { done: false, value: "r" }, "#1");
+ a.deep(it.next(), { done: false, value: "💩" }, "#2");
+ a.deep(it.next(), { done: false, value: "z" }, "#3");
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/test/valid-iterable.js b/kbase-extension/static/ext_packages/igv/es6-iterator/test/valid-iterable.js
new file mode 100644
index 0000000000..b8b2a8a619
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/test/valid-iterable.js
@@ -0,0 +1,28 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator
+ , Iterator = require("../");
+
+module.exports = function (t, a) {
+ var obj;
+ a.throws(function () {
+ t();
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t({});
+}, TypeError, "Plain object");
+ a.throws(function () {
+ t({ length: 0 });
+}, TypeError, "Array-like");
+ obj = {};
+ obj[iteratorSymbol] = function () {
+ return new Iterator([]);
+};
+ a(t(obj), obj, "Iterator");
+ obj = [];
+ a(t(obj), obj, "Array");
+ obj = (function () {
+ return arguments;
+}());
+ a(t(obj), obj, "Arguments");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-iterator/valid-iterable.js b/kbase-extension/static/ext_packages/igv/es6-iterator/valid-iterable.js
new file mode 100644
index 0000000000..8c6e071598
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-iterator/valid-iterable.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isIterable = require("./is-iterable");
+
+module.exports = function (value) {
+ if (!isIterable(value)) throw new TypeError(value + " is not iterable");
+ return value;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/.lint b/kbase-extension/static/ext_packages/igv/es6-set/.lint
new file mode 100644
index 0000000000..89386b35ca
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/.lint
@@ -0,0 +1,13 @@
+@root
+
+module
+
+tabs
+indent 2
+maxlen 100
+
+ass
+nomen
+plusplus
+
+predef+ Set
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/.npmignore b/kbase-extension/static/ext_packages/igv/es6-set/.npmignore
new file mode 100644
index 0000000000..155e41f691
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/.npmignore
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/npm-debug.log
+/.lintcache
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/.travis.yml b/kbase-extension/static/ext_packages/igv/es6-set/.travis.yml
new file mode 100644
index 0000000000..09a917c05c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/.travis.yml
@@ -0,0 +1,13 @@
+sudo: false # http://docs.travis-ci.com/user/workers/container-based-infrastructure/
+language: node_js
+node_js:
+ - 0.12
+ - 4
+ - 6
+ - 7
+
+notifications:
+ email:
+ - medikoo+es6-set@medikoo.com
+
+script: "npm test && npm run lint"
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/CHANGES b/kbase-extension/static/ext_packages/igv/es6-set/CHANGES
new file mode 100644
index 0000000000..21ad4bf303
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/CHANGES
@@ -0,0 +1,34 @@
+v0.1.5 -- 2017.03.16
+* Improve documentation
+* Update dependencies
+
+v0.1.4 -- 2016.01.19
+* Ensure Set polyfill function name is `Set` (#2)
+
+v0.1.3 -- 2015.11.18
+* Relax validation of native implementation (do not require proper stringification of Set.prototype)
+
+v0.1.2 -- 2015.10.02
+* Improve native Set detection
+* Fix spelling of LICENSE
+* Set.prototype.filter extension
+* Update dependencies
+
+v0.1.1 -- 2014.10.07
+* Fix isImplemented so it validates native Set properly
+* Add getFirst and getLast extensions
+* Configure linter scripts
+
+v0.1.0 -- 2014.04.29
+* Assure strictly npm hosted dependencies
+* Introduce faster 'primitive' alternative (doesn't guarantee order of iteration)
+* Add isNativeImplemented, and some, every and copy method extensions
+* If native Set is provided polyfill extends it
+* Optimize forEach iteration
+* Remove comparator support (as it was removed from spec)
+* Provide @@toStringTag symbol, ad @@iterator symbols on iterators
+* Update to use latest dependencies versions
+* Improve interals
+
+v0.0.0 -- 2013.10.12
+Initial (dev) version
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/LICENSE b/kbase-extension/static/ext_packages/igv/es6-set/LICENSE
new file mode 100644
index 0000000000..aaf35282f4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/LICENSE
@@ -0,0 +1,19 @@
+Copyright (C) 2013 Mariusz Nowak (www.medikoo.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/README.md b/kbase-extension/static/ext_packages/igv/es6-set/README.md
new file mode 100644
index 0000000000..4ec0a005f5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/README.md
@@ -0,0 +1,74 @@
+# es6-set
+## Set collection as specified in ECMAScript6
+
+__Warning:
+v0.1 version does not ensure O(1) algorithm complexity (but O(n)). This shortcoming will be addressed in v1.0__
+
+### Usage
+
+If you want to make sure your environment implements `Set`, do:
+
+```javascript
+require('es6-set/implement');
+```
+
+If you'd like to use native version when it exists and fallback to polyfill if it doesn't, but without implementing `Set` on global scope, do:
+
+```javascript
+var Set = require('es6-set');
+```
+
+If you strictly want to use polyfill even if native `Set` exists, do:
+
+```javascript
+var Set = require('es6-set/polyfill');
+```
+
+### Installation
+
+ $ npm install es6-set
+
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+#### API
+
+Best is to refer to [specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-set-objects). Still if you want quick look, follow examples:
+
+```javascript
+var Set = require('es6-set');
+
+var set = new Set(['raz', 'dwa', {}]);
+
+set.size; // 3
+set.has('raz'); // true
+set.has('foo'); // false
+set.add('foo'); // set
+set.size // 4
+set.has('foo'); // true
+set.has('dwa'); // true
+set.delete('dwa'); // true
+set.size; // 3
+
+set.forEach(function (value) {
+ // 'raz', {}, 'foo' iterated
+});
+
+// FF nightly only:
+for (value of set) {
+ // 'raz', {}, 'foo' iterated
+}
+
+var iterator = set.values();
+
+iterator.next(); // { done: false, value: 'raz' }
+iterator.next(); // { done: false, value: {} }
+iterator.next(); // { done: false, value: 'foo' }
+iterator.next(); // { done: true, value: undefined }
+
+set.clear(); // undefined
+set.size; // 0
+```
+
+## Tests [![Build Status](https://travis-ci.org/medikoo/es6-set.png)](https://travis-ci.org/medikoo/es6-set)
+
+ $ npm test
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/ext/copy.js b/kbase-extension/static/ext_packages/igv/es6-set/ext/copy.js
new file mode 100644
index 0000000000..a8fd5c20c8
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/ext/copy.js
@@ -0,0 +1,5 @@
+'use strict';
+
+var Set = require('../');
+
+module.exports = function () { return new Set(this); };
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/ext/every.js b/kbase-extension/static/ext_packages/igv/es6-set/ext/every.js
new file mode 100644
index 0000000000..ea64ebc56f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/ext/every.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var callable = require('es5-ext/object/valid-callable')
+ , forOf = require('es6-iterator/for-of')
+
+ , call = Function.prototype.call;
+
+module.exports = function (cb/*, thisArg*/) {
+ var thisArg = arguments[1], result = true;
+ callable(cb);
+ forOf(this, function (value, doBreak) {
+ if (!call.call(cb, thisArg, value)) {
+ result = false;
+ doBreak();
+ }
+ });
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/ext/filter.js b/kbase-extension/static/ext_packages/igv/es6-set/ext/filter.js
new file mode 100644
index 0000000000..1178fc591c
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/ext/filter.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var callable = require('es5-ext/object/valid-callable')
+ , forOf = require('es6-iterator/for-of')
+ , isSet = require('../is-set')
+ , Set = require('../')
+
+ , call = Function.prototype.call;
+
+module.exports = function (cb/*, thisArg*/) {
+ var thisArg = arguments[1], result;
+ callable(cb);
+ result = isSet(this) ? new this.constructor() : new Set();
+ forOf(this, function (value) {
+ if (call.call(cb, thisArg, value)) result.add(value);
+ });
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/ext/get-first.js b/kbase-extension/static/ext_packages/igv/es6-set/ext/get-first.js
new file mode 100644
index 0000000000..b5d89fc13f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/ext/get-first.js
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function () {
+ return this.values().next().value;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/ext/get-last.js b/kbase-extension/static/ext_packages/igv/es6-set/ext/get-last.js
new file mode 100644
index 0000000000..d22ce737bc
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/ext/get-last.js
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function () {
+ var value, iterator = this.values(), item;
+ while (true) {
+ item = iterator.next();
+ if (item.done) break;
+ value = item.value;
+ }
+ return value;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/ext/some.js b/kbase-extension/static/ext_packages/igv/es6-set/ext/some.js
new file mode 100644
index 0000000000..400a5a0c62
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/ext/some.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var callable = require('es5-ext/object/valid-callable')
+ , forOf = require('es6-iterator/for-of')
+
+ , call = Function.prototype.call;
+
+module.exports = function (cb/*, thisArg*/) {
+ var thisArg = arguments[1], result = false;
+ callable(cb);
+ forOf(this, function (value, doBreak) {
+ if (call.call(cb, thisArg, value)) {
+ result = true;
+ doBreak();
+ }
+ });
+ return result;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/implement.js b/kbase-extension/static/ext_packages/igv/es6-set/implement.js
new file mode 100644
index 0000000000..f03362e083
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/implement.js
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+ Object.defineProperty(require('es5-ext/global'), 'Set',
+ { value: require('./polyfill'), configurable: true, enumerable: false,
+ writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/index.js b/kbase-extension/static/ext_packages/igv/es6-set/index.js
new file mode 100644
index 0000000000..daa7886195
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/index.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ? Set : require('./polyfill');
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/is-implemented.js b/kbase-extension/static/ext_packages/igv/es6-set/is-implemented.js
new file mode 100644
index 0000000000..7f1bfbb7cc
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/is-implemented.js
@@ -0,0 +1,24 @@
+'use strict';
+
+module.exports = function () {
+ var set, iterator, result;
+ if (typeof Set !== 'function') return false;
+ set = new Set(['raz', 'dwa', 'trzy']);
+ if (String(set) !== '[object Set]') return false;
+ if (set.size !== 3) return false;
+ if (typeof set.add !== 'function') return false;
+ if (typeof set.clear !== 'function') return false;
+ if (typeof set.delete !== 'function') return false;
+ if (typeof set.entries !== 'function') return false;
+ if (typeof set.forEach !== 'function') return false;
+ if (typeof set.has !== 'function') return false;
+ if (typeof set.keys !== 'function') return false;
+ if (typeof set.values !== 'function') return false;
+
+ iterator = set.values();
+ result = iterator.next();
+ if (result.done !== false) return false;
+ if (result.value !== 'raz') return false;
+
+ return true;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/is-native-implemented.js b/kbase-extension/static/ext_packages/igv/es6-set/is-native-implemented.js
new file mode 100644
index 0000000000..e8b0160ec0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/is-native-implemented.js
@@ -0,0 +1,9 @@
+// Exports true if environment provides native `Set` implementation,
+// whatever that is.
+
+'use strict';
+
+module.exports = (function () {
+ if (typeof Set === 'undefined') return false;
+ return (Object.prototype.toString.call(Set.prototype) === '[object Set]');
+}());
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/is-set.js b/kbase-extension/static/ext_packages/igv/es6-set/is-set.js
new file mode 100644
index 0000000000..6b491ddee3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/is-set.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var toString = Object.prototype.toString
+ , toStringTagSymbol = require('es6-symbol').toStringTag
+
+ , id = '[object Set]'
+ , Global = (typeof Set === 'undefined') ? null : Set;
+
+module.exports = function (x) {
+ return (x && ((Global && ((x instanceof Global) || (x === Global.prototype))) ||
+ (toString.call(x) === id) || (x[toStringTagSymbol] === 'Set'))) || false;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/package.json b/kbase-extension/static/ext_packages/igv/es6-set/package.json
new file mode 100644
index 0000000000..379e774f1f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/package.json
@@ -0,0 +1,70 @@
+{
+ "_from": "es6-set",
+ "_id": "es6-set@0.1.5",
+ "_inBundle": false,
+ "_integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
+ "_location": "/es6-set",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "tag",
+ "registry": true,
+ "raw": "es6-set",
+ "name": "es6-set",
+ "escapedName": "es6-set",
+ "rawSpec": "",
+ "saveSpec": null,
+ "fetchSpec": "latest"
+ },
+ "_requiredBy": [
+ "#USER",
+ "/"
+ ],
+ "_resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
+ "_shasum": "d2b3ec5d4d800ced818db538d28974db0a73ccb1",
+ "_spec": "es6-set",
+ "_where": "/Users/jim/DMZ/narrative-mar-2018",
+ "author": {
+ "name": "Mariusz Nowak",
+ "email": "medyk@medikoo.com",
+ "url": "http://www.medikoo.com/"
+ },
+ "bugs": {
+ "url": "https://github.com/medikoo/es6-set/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.14",
+ "es6-iterator": "~2.0.1",
+ "es6-symbol": "3.1.1",
+ "event-emitter": "~0.3.5"
+ },
+ "deprecated": false,
+ "description": "ECMAScript6 Set polyfill",
+ "devDependencies": {
+ "tad": "~0.2.7",
+ "xlint": "~0.2.2",
+ "xlint-jslint-medikoo": "~0.1.4"
+ },
+ "homepage": "https://github.com/medikoo/es6-set#readme",
+ "keywords": [
+ "set",
+ "collection",
+ "es6",
+ "harmony",
+ "list",
+ "hash"
+ ],
+ "license": "MIT",
+ "name": "es6-set",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/medikoo/es6-set.git"
+ },
+ "scripts": {
+ "lint": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream",
+ "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
+ "test": "node ./node_modules/tad/bin/tad"
+ },
+ "version": "0.1.5"
+}
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/polyfill.js b/kbase-extension/static/ext_packages/igv/es6-set/polyfill.js
new file mode 100644
index 0000000000..51b1e63079
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/polyfill.js
@@ -0,0 +1,80 @@
+'use strict';
+
+var clear = require('es5-ext/array/#/clear')
+ , eIndexOf = require('es5-ext/array/#/e-index-of')
+ , setPrototypeOf = require('es5-ext/object/set-prototype-of')
+ , callable = require('es5-ext/object/valid-callable')
+ , d = require('d')
+ , ee = require('event-emitter')
+ , Symbol = require('es6-symbol')
+ , iterator = require('es6-iterator/valid-iterable')
+ , forOf = require('es6-iterator/for-of')
+ , Iterator = require('./lib/iterator')
+ , isNative = require('./is-native-implemented')
+
+ , call = Function.prototype.call
+ , defineProperty = Object.defineProperty, getPrototypeOf = Object.getPrototypeOf
+ , SetPoly, getValues, NativeSet;
+
+if (isNative) NativeSet = Set;
+
+module.exports = SetPoly = function Set(/*iterable*/) {
+ var iterable = arguments[0], self;
+ if (!(this instanceof SetPoly)) throw new TypeError('Constructor requires \'new\'');
+ if (isNative && setPrototypeOf) self = setPrototypeOf(new NativeSet(), getPrototypeOf(this));
+ else self = this;
+ if (iterable != null) iterator(iterable);
+ defineProperty(self, '__setData__', d('c', []));
+ if (!iterable) return self;
+ forOf(iterable, function (value) {
+ if (eIndexOf.call(this, value) !== -1) return;
+ this.push(value);
+ }, self.__setData__);
+ return self;
+};
+
+if (isNative) {
+ if (setPrototypeOf) setPrototypeOf(SetPoly, NativeSet);
+ SetPoly.prototype = Object.create(NativeSet.prototype, { constructor: d(SetPoly) });
+}
+
+ee(Object.defineProperties(SetPoly.prototype, {
+ add: d(function (value) {
+ if (this.has(value)) return this;
+ this.emit('_add', this.__setData__.push(value) - 1, value);
+ return this;
+ }),
+ clear: d(function () {
+ if (!this.__setData__.length) return;
+ clear.call(this.__setData__);
+ this.emit('_clear');
+ }),
+ delete: d(function (value) {
+ var index = eIndexOf.call(this.__setData__, value);
+ if (index === -1) return false;
+ this.__setData__.splice(index, 1);
+ this.emit('_delete', index, value);
+ return true;
+ }),
+ entries: d(function () { return new Iterator(this, 'key+value'); }),
+ forEach: d(function (cb/*, thisArg*/) {
+ var thisArg = arguments[1], iterator, result, value;
+ callable(cb);
+ iterator = this.values();
+ result = iterator._next();
+ while (result !== undefined) {
+ value = iterator._resolve(result);
+ call.call(cb, thisArg, value, value, this);
+ result = iterator._next();
+ }
+ }),
+ has: d(function (value) {
+ return (eIndexOf.call(this.__setData__, value) !== -1);
+ }),
+ keys: d(getValues = function () { return this.values(); }),
+ size: d.gs(function () { return this.__setData__.length; }),
+ values: d(function () { return new Iterator(this); }),
+ toString: d(function () { return '[object Set]'; })
+}));
+defineProperty(SetPoly.prototype, Symbol.iterator, d(getValues));
+defineProperty(SetPoly.prototype, Symbol.toStringTag, d('c', 'Set'));
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/primitive/index.js b/kbase-extension/static/ext_packages/igv/es6-set/primitive/index.js
new file mode 100644
index 0000000000..6bcad18d3f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/primitive/index.js
@@ -0,0 +1,87 @@
+'use strict';
+
+var callable = require('es5-ext/object/valid-callable')
+ , clear = require('es5-ext/object/clear')
+ , setPrototypeOf = require('es5-ext/object/set-prototype-of')
+ , d = require('d')
+ , iterator = require('es6-iterator/valid-iterable')
+ , forOf = require('es6-iterator/for-of')
+ , Set = require('../polyfill')
+ , Iterator = require('../lib/primitive-iterator')
+ , isNative = require('../is-native-implemented')
+
+ , create = Object.create, defineProperties = Object.defineProperties
+ , defineProperty = Object.defineProperty, getPrototypeOf = Object.getPrototypeOf
+ , hasOwnProperty = Object.prototype.hasOwnProperty
+ , PrimitiveSet;
+
+module.exports = PrimitiveSet = function (/*iterable, serialize*/) {
+ var iterable = arguments[0], serialize = arguments[1], self;
+ if (!(this instanceof PrimitiveSet)) throw new TypeError('Constructor requires \'new\'');
+ if (isNative && setPrototypeOf) self = setPrototypeOf(new Set(), getPrototypeOf(this));
+ else self = this;
+ if (iterable != null) iterator(iterable);
+ if (serialize !== undefined) {
+ callable(serialize);
+ defineProperty(self, '_serialize', d('', serialize));
+ }
+ defineProperties(self, {
+ __setData__: d('c', create(null)),
+ __size__: d('w', 0)
+ });
+ if (!iterable) return self;
+ forOf(iterable, function (value) {
+ var key = self._serialize(value);
+ if (key == null) throw new TypeError(value + " cannot be serialized");
+ if (hasOwnProperty.call(self.__setData__, key)) return;
+ self.__setData__[key] = value;
+ ++self.__size__;
+ });
+ return self;
+};
+if (setPrototypeOf) setPrototypeOf(PrimitiveSet, Set);
+
+PrimitiveSet.prototype = create(Set.prototype, {
+ constructor: d(PrimitiveSet),
+ _serialize: d(function (value) {
+ if (value && (typeof value.toString !== 'function')) return null;
+ return String(value);
+ }),
+ add: d(function (value) {
+ var key = this._serialize(value);
+ if (key == null) throw new TypeError(value + " cannot be serialized");
+ if (hasOwnProperty.call(this.__setData__, key)) return this;
+ this.__setData__[key] = value;
+ ++this.__size__;
+ this.emit('_add', key);
+ return this;
+ }),
+ clear: d(function () {
+ if (!this.__size__) return;
+ clear(this.__setData__);
+ this.__size__ = 0;
+ this.emit('_clear');
+ }),
+ delete: d(function (value) {
+ var key = this._serialize(value);
+ if (key == null) return false;
+ if (!hasOwnProperty.call(this.__setData__, key)) return false;
+ delete this.__setData__[key];
+ --this.__size__;
+ this.emit('_delete', key);
+ return true;
+ }),
+ entries: d(function () { return new Iterator(this, 'key+value'); }),
+ get: d(function (key) {
+ key = this._serialize(key);
+ if (key == null) return;
+ return this.__setData__[key];
+ }),
+ has: d(function (value) {
+ var key = this._serialize(value);
+ if (key == null) return false;
+ return hasOwnProperty.call(this.__setData__, key);
+ }),
+ size: d.gs(function () { return this.__size__; }),
+ values: d(function () { return new Iterator(this); })
+});
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/test/ext/copy.js b/kbase-extension/static/ext_packages/igv/es6-set/test/ext/copy.js
new file mode 100644
index 0000000000..84fe912a36
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/test/ext/copy.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var toArray = require('es5-ext/array/to-array')
+ , Set = require('../../');
+
+module.exports = function (t, a) {
+ var content = ['raz', 2, true], set = new Set(content), copy;
+
+ copy = t.call(set);
+ a.not(copy, set, "Copy");
+ a.deep(toArray(copy), content, "Content");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/test/ext/every.js b/kbase-extension/static/ext_packages/igv/es6-set/test/ext/every.js
new file mode 100644
index 0000000000..f56ca385fa
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/test/ext/every.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var Set = require('../../');
+
+module.exports = function (t, a) {
+ a(t.call(new Set(), Boolean), true, "Empty set");
+ a(t.call(new Set([2, 3, 4]), Boolean), true, "Truthy");
+ a(t.call(new Set([2, 0, 4]), Boolean), false, "Falsy");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/test/ext/filter.js b/kbase-extension/static/ext_packages/igv/es6-set/test/ext/filter.js
new file mode 100644
index 0000000000..46981859b6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/test/ext/filter.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var aFrom = require('es5-ext/array/from')
+
+ , Set = require('../../');
+
+module.exports = function (t, a) {
+ a.deep(aFrom(t.call(new Set(), Boolean)), [], "Empty set");
+ a.deep(aFrom(t.call(new Set([2, 3, 4]), Boolean)), [2, 3, 4], "All true");
+ a.deep(aFrom(t.call(new Set([0, false, 4]), Boolean)), [4], "Some false");
+ a.deep(aFrom(t.call(new Set([0, false, null]), Boolean)), [], "All false");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/test/ext/get-first.js b/kbase-extension/static/ext_packages/igv/es6-set/test/ext/get-first.js
new file mode 100644
index 0000000000..f99829e5af
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/test/ext/get-first.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var Set = require('../../');
+
+module.exports = function (t, a) {
+ var content = ['raz', 2, true], set = new Set(content);
+
+ a(t.call(set), 'raz');
+
+ set = new Set();
+ a(t.call(set), undefined);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/test/ext/get-last.js b/kbase-extension/static/ext_packages/igv/es6-set/test/ext/get-last.js
new file mode 100644
index 0000000000..1dcc993ed0
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/test/ext/get-last.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var Set = require('../../');
+
+module.exports = function (t, a) {
+ var content = ['raz', 2, true], set = new Set(content);
+
+ a(t.call(set), true);
+
+ set = new Set();
+ a(t.call(set), undefined);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/test/ext/some.js b/kbase-extension/static/ext_packages/igv/es6-set/test/ext/some.js
new file mode 100644
index 0000000000..84ce11916a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/test/ext/some.js
@@ -0,0 +1,10 @@
+'use strict';
+
+var Set = require('../../');
+
+module.exports = function (t, a) {
+ a(t.call(new Set(), Boolean), false, "Empty set");
+ a(t.call(new Set([2, 3, 4]), Boolean), true, "All true");
+ a(t.call(new Set([0, false, 4]), Boolean), true, "Some false");
+ a(t.call(new Set([0, false, null]), Boolean), false, "All false");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/test/implement.js b/kbase-extension/static/ext_packages/igv/es6-set/test/implement.js
new file mode 100644
index 0000000000..4882d3786a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/test/implement.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof Set, 'function'); };
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/test/index.js b/kbase-extension/static/ext_packages/igv/es6-set/test/index.js
new file mode 100644
index 0000000000..19c6486509
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/test/index.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (T, a) { a((new T(['raz', 'dwa'])).size, 2); };
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/test/is-implemented.js b/kbase-extension/static/ext_packages/igv/es6-set/test/is-implemented.js
new file mode 100644
index 0000000000..124793e737
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/test/is-implemented.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var global = require('es5-ext/global')
+ , polyfill = require('../polyfill');
+
+module.exports = function (t, a) {
+ var cache;
+ a(typeof t(), 'boolean');
+ cache = global.Set;
+ global.Set = polyfill;
+ a(t(), true);
+ if (cache === undefined) delete global.Set;
+ else global.Set = cache;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/test/is-native-implemented.js b/kbase-extension/static/ext_packages/igv/es6-set/test/is-native-implemented.js
new file mode 100644
index 0000000000..df8ba0323f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/test/is-native-implemented.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t, 'boolean'); };
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/test/is-set.js b/kbase-extension/static/ext_packages/igv/es6-set/test/is-set.js
new file mode 100644
index 0000000000..c969cce232
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/test/is-set.js
@@ -0,0 +1,16 @@
+'use strict';
+
+var SetPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+ a(t(undefined), false, "Undefined");
+ a(t(null), false, "Null");
+ a(t(true), false, "Primitive");
+ a(t('raz'), false, "String");
+ a(t({}), false, "Object");
+ a(t([]), false, "Array");
+ if (typeof Set !== 'undefined') {
+ a(t(new Set()), true, "Native");
+ }
+ a(t(new SetPoly()), true, "Polyfill");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/test/polyfill.js b/kbase-extension/static/ext_packages/igv/es6-set/test/polyfill.js
new file mode 100644
index 0000000000..94ae3e6e63
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/test/polyfill.js
@@ -0,0 +1,50 @@
+'use strict';
+
+var aFrom = require('es5-ext/array/from')
+ , toArray = require('es5-ext/array/to-array');
+
+module.exports = function (T, a) {
+ var arr = ['raz', 'dwa', 'trzy'], set = new T(arr), x = {}, y = {}, i = 0;
+
+ a(set instanceof T, true, "Set");
+ a(set.size, 3, "Size");
+ a(set.has('raz'), true, "Has: true");
+ a(set.has(x), false, "Has: false");
+ a(set.add(x), set, "Add: return");
+ a(set.has(x), true, "Add");
+ a(set.size, 4, "Add: Size");
+ a(set.delete({}), false, "Delete: false");
+
+ arr.push(x);
+ set.forEach(function () {
+ a.deep(aFrom(arguments), [arr[i], arr[i], set],
+ "ForEach: Arguments: #" + i);
+ a(this, y, "ForEach: Context: #" + i);
+ if (i === 0) {
+ a(set.delete('raz'), true, "Delete: true");
+ a(set.has('raz'), false, "Delete");
+ a(set.size, 3, "Delete: size");
+ set.add('cztery');
+ arr.push('cztery');
+ }
+ i++;
+ }, y);
+ arr.splice(0, 1);
+
+ a.deep(toArray(set.entries()), [['dwa', 'dwa'], ['trzy', 'trzy'], [x, x],
+ ['cztery', 'cztery']], "Entries");
+ a.deep(toArray(set.keys()), ['dwa', 'trzy', x, 'cztery'], "Keys");
+ a.deep(toArray(set.values()), ['dwa', 'trzy', x, 'cztery'], "Values");
+ a.deep(toArray(set), ['dwa', 'trzy', x, 'cztery'], "Iterator");
+
+ set.clear();
+ a(set.size, 0, "Clear: size");
+ a(set.has('trzy'), false, "Clear: has");
+ a.deep(toArray(set), [], "Clear: Values");
+
+ a.h1("Empty initialization");
+ set = new T();
+ set.add('foo');
+ a(set.size, 1);
+ a(set.has('foo'), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/test/primitive/index.js b/kbase-extension/static/ext_packages/igv/es6-set/test/primitive/index.js
new file mode 100644
index 0000000000..88f9502fd9
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/test/primitive/index.js
@@ -0,0 +1,50 @@
+'use strict';
+
+var aFrom = require('es5-ext/array/from')
+ , getIterator = require('es6-iterator/get')
+ , toArray = require('es5-ext/array/to-array');
+
+module.exports = function (T, a) {
+ var arr = ['raz', 'dwa', 'trzy'], set = new T(arr), x = 'other', y = 'other2'
+ , i = 0, result = [];
+
+ a(set instanceof T, true, "Set");
+ a(set.size, 3, "Size");
+ a(set.has('raz'), true, "Has: true");
+ a(set.has(x), false, "Has: false");
+ a(set.add(x), set, "Add: return");
+ a(set.has(x), true, "Add");
+ a(set.size, 4, "Add: Size");
+ a(set.delete('else'), false, "Delete: false");
+ a(set.get('raz'), 'raz', "Get");
+
+ arr.push(x);
+ set.forEach(function () {
+ result.push(aFrom(arguments));
+ a(this, y, "ForEach: Context: #" + i);
+ }, y);
+
+ a.deep(result.sort(function (a, b) {
+ return a[0].localeCompare(b[0]);
+ }), arr.sort().map(function (val) { return [val, val, set]; }));
+
+ a.deep(toArray(set.entries()).sort(), [['dwa', 'dwa'], ['trzy', 'trzy'],
+ [x, x], ['raz', 'raz']].sort(), "Entries");
+ a.deep(toArray(set.keys()).sort(), ['dwa', 'trzy', x, 'raz'].sort(),
+ "Keys");
+ a.deep(toArray(set.values()).sort(), ['dwa', 'trzy', x, 'raz'].sort(),
+ "Values");
+ a.deep(toArray(getIterator(set)).sort(), ['dwa', 'trzy', x, 'raz'].sort(),
+ "Iterator");
+
+ set.clear();
+ a(set.size, 0, "Clear: size");
+ a(set.has('trzy'), false, "Clear: has");
+ a.deep(toArray(set.values()), [], "Clear: Values");
+
+ a.h1("Empty initialization");
+ set = new T();
+ set.add('foo');
+ a(set.size, 1);
+ a(set.has('foo'), true);
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/test/valid-set.js b/kbase-extension/static/ext_packages/igv/es6-set/test/valid-set.js
new file mode 100644
index 0000000000..8c71f5f8c7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/test/valid-set.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var SetPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+ var set;
+ a.throws(function () { t(undefined); }, TypeError, "Undefined");
+ a.throws(function () { t(null); }, TypeError, "Null");
+ a.throws(function () { t(true); }, TypeError, "Primitive");
+ a.throws(function () { t('raz'); }, TypeError, "String");
+ a.throws(function () { t({}); }, TypeError, "Object");
+ a.throws(function () { t([]); }, TypeError, "Array");
+ if (typeof Set !== 'undefined') {
+ set = new Set();
+ a(t(set), set, "Native");
+ }
+ set = new SetPoly();
+ a(t(set), set, "Polyfill");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-set/valid-set.js b/kbase-extension/static/ext_packages/igv/es6-set/valid-set.js
new file mode 100644
index 0000000000..9336fd355a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-set/valid-set.js
@@ -0,0 +1,8 @@
+'use strict';
+
+var isSet = require('./is-set');
+
+module.exports = function (x) {
+ if (!isSet(x)) throw new TypeError(x + " is not a Set");
+ return x;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/.lint b/kbase-extension/static/ext_packages/igv/es6-symbol/.lint
new file mode 100644
index 0000000000..df1e53cd5f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/.lint
@@ -0,0 +1,15 @@
+@root
+
+module
+
+tabs
+indent 2
+maxlen 100
+
+ass
+nomen
+plusplus
+newcap
+vars
+
+predef+ Symbol
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/.npmignore b/kbase-extension/static/ext_packages/igv/es6-symbol/.npmignore
new file mode 100644
index 0000000000..155e41f691
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/.npmignore
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/npm-debug.log
+/.lintcache
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/.travis.yml b/kbase-extension/static/ext_packages/igv/es6-symbol/.travis.yml
new file mode 100644
index 0000000000..0b1f5e4ae3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/.travis.yml
@@ -0,0 +1,11 @@
+sudo: false # http://docs.travis-ci.com/user/workers/container-based-infrastructure/
+language: node_js
+node_js:
+ - 0.12
+ - v4
+ - v5
+ - v6
+
+notifications:
+ email:
+ - medikoo+es6-symbol@medikoo.com
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/CHANGES b/kbase-extension/static/ext_packages/igv/es6-symbol/CHANGES
new file mode 100644
index 0000000000..017d40915f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/CHANGES
@@ -0,0 +1,57 @@
+v3.1.1 -- 2017.03.15
+* Improve documentation
+* Improve error messages
+* Update dependencies
+
+v3.1.0 -- 2016.06.03
+* Fix internals of symbol detection
+* Ensure Symbol.prototype[Symbol.toPrimitive] in all cases returns primitive value
+ (fixes Node v6 support)
+* Create native symbols whenver possible
+
+v3.0.2 -- 2015.12.12
+* Fix definition flow, so uneven state of Symbol implementation doesn't crash initialization of
+ polyfill. See #13
+
+v3.0.1 -- 2015.10.22
+* Workaround for IE11 bug (reported in #12)
+
+v3.0.0 -- 2015.10.02
+* Reuse native symbols (e.g. iterator, toStringTag etc.) in a polyfill if they're available
+ Otherwise polyfill symbols may not be recognized by other functions
+* Improve documentation
+
+v2.0.1 -- 2015.01.28
+* Fix Symbol.prototype[Symbol.isPrimitive] implementation
+* Improve validation within Symbol.prototype.toString and
+ Symbol.prototype.valueOf
+
+v2.0.0 -- 2015.01.28
+* Update up to changes in specification:
+ * Implement `for` and `keyFor`
+ * Remove `Symbol.create` and `Symbol.isRegExp`
+ * Add `Symbol.match`, `Symbol.replace`, `Symbol.search`, `Symbol.species` and
+ `Symbol.split`
+* Rename `validSymbol` to `validateSymbol`
+* Improve documentation
+* Remove dead test modules
+
+v1.0.0 -- 2015.01.26
+* Fix enumerability for symbol properties set normally (e.g. obj[symbol] = value)
+* Introduce initialization via hidden constructor
+* Fix isSymbol handling of polyfill values when native Symbol is present
+* Fix spelling of LICENSE
+* Configure lint scripts
+
+v0.1.1 -- 2014.10.07
+* Fix isImplemented, so it returns true in case of polyfill
+* Improve documentations
+
+v0.1.0 -- 2014.04.28
+* Assure strictly npm dependencies
+* Update to use latest versions of dependencies
+* Fix implementation detection so it doesn't crash on `String(symbol)`
+* throw on `new Symbol()` (as decided by TC39)
+
+v0.0.0 -- 2013.11.15
+* Initial (dev) version
\ No newline at end of file
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/LICENSE b/kbase-extension/static/ext_packages/igv/es6-symbol/LICENSE
new file mode 100644
index 0000000000..04724a3ab1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/LICENSE
@@ -0,0 +1,19 @@
+Copyright (C) 2013-2015 Mariusz Nowak (www.medikoo.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/README.md b/kbase-extension/static/ext_packages/igv/es6-symbol/README.md
new file mode 100644
index 0000000000..fea99062ec
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/README.md
@@ -0,0 +1,71 @@
+# es6-symbol
+## ECMAScript 6 Symbol polyfill
+
+For more information about symbols see following links
+- [Symbols in ECMAScript 6 by Axel Rauschmayer](http://www.2ality.com/2014/12/es6-symbols.html)
+- [MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol)
+- [Specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-constructor)
+
+### Limitations
+
+Underneath it uses real string property names which can easily be retrieved, however accidental collision with other property names is unlikely.
+
+### Usage
+
+If you'd like to use native version when it exists and fallback to [ponyfill](https://ponyfill.com) if it doesn't, use *es6-symbol* as following:
+
+```javascript
+var Symbol = require('es6-symbol');
+```
+
+If you want to make sure your environment implements `Symbol` globally, do:
+
+```javascript
+require('es6-symbol/implement');
+```
+
+If you strictly want to use polyfill even if native `Symbol` exists (hard to find a good reason for that), do:
+
+```javascript
+var Symbol = require('es6-symbol/polyfill');
+```
+
+#### API
+
+Best is to refer to [specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-objects). Still if you want quick look, follow examples:
+
+```javascript
+var Symbol = require('es6-symbol');
+
+var symbol = Symbol('My custom symbol');
+var x = {};
+
+x[symbol] = 'foo';
+console.log(x[symbol]); 'foo'
+
+// Detect iterable:
+var iterator, result;
+if (possiblyIterable[Symbol.iterator]) {
+ iterator = possiblyIterable[Symbol.iterator]();
+ result = iterator.next();
+ while(!result.done) {
+ console.log(result.value);
+ result = iterator.next();
+ }
+}
+```
+
+### Installation
+#### NPM
+
+In your project path:
+
+ $ npm install es6-symbol
+
+##### Browser
+
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+## Tests [![Build Status](https://travis-ci.org/medikoo/es6-symbol.png)](https://travis-ci.org/medikoo/es6-symbol)
+
+ $ npm test
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/implement.js b/kbase-extension/static/ext_packages/igv/es6-symbol/implement.js
new file mode 100644
index 0000000000..153edacdbe
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/implement.js
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+ Object.defineProperty(require('es5-ext/global'), 'Symbol',
+ { value: require('./polyfill'), configurable: true, enumerable: false,
+ writable: true });
+}
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/index.js b/kbase-extension/static/ext_packages/igv/es6-symbol/index.js
new file mode 100644
index 0000000000..609f1faf55
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/index.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ? Symbol : require('./polyfill');
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/is-implemented.js b/kbase-extension/static/ext_packages/igv/es6-symbol/is-implemented.js
new file mode 100644
index 0000000000..93629d2f84
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/is-implemented.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var validTypes = { object: true, symbol: true };
+
+module.exports = function () {
+ var symbol;
+ if (typeof Symbol !== 'function') return false;
+ symbol = Symbol('test symbol');
+ try { String(symbol); } catch (e) { return false; }
+
+ // Return 'true' also for polyfills
+ if (!validTypes[typeof Symbol.iterator]) return false;
+ if (!validTypes[typeof Symbol.toPrimitive]) return false;
+ if (!validTypes[typeof Symbol.toStringTag]) return false;
+
+ return true;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/is-native-implemented.js b/kbase-extension/static/ext_packages/igv/es6-symbol/is-native-implemented.js
new file mode 100644
index 0000000000..8676d0e8df
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/is-native-implemented.js
@@ -0,0 +1,5 @@
+// Exports true if environment provides native `Symbol` implementation
+
+'use strict';
+
+module.exports = typeof Symbol === 'function' && typeof Symbol() === 'symbol';
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/is-symbol.js b/kbase-extension/static/ext_packages/igv/es6-symbol/is-symbol.js
new file mode 100644
index 0000000000..074cb07fb5
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/is-symbol.js
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (x) {
+ if (!x) return false;
+ if (typeof x === 'symbol') return true;
+ if (!x.constructor) return false;
+ if (x.constructor.name !== 'Symbol') return false;
+ return (x[x.constructor.toStringTag] === 'Symbol');
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/package.json b/kbase-extension/static/ext_packages/igv/es6-symbol/package.json
new file mode 100644
index 0000000000..13124d8240
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/package.json
@@ -0,0 +1,73 @@
+{
+ "_args": [
+ [
+ "es6-symbol@3.1.1",
+ "/Users/jim/DMZ/narrative-mar-2018/kbase-extension/static/ext_components"
+ ]
+ ],
+ "_from": "es6-symbol@3.1.1",
+ "_id": "es6-symbol@3.1.1",
+ "_inBundle": false,
+ "_integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
+ "_location": "/es6-symbol",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "version",
+ "registry": true,
+ "raw": "es6-symbol@3.1.1",
+ "name": "es6-symbol",
+ "escapedName": "es6-symbol",
+ "rawSpec": "3.1.1",
+ "saveSpec": null,
+ "fetchSpec": "3.1.1"
+ },
+ "_requiredBy": [
+ "/es5-ext",
+ "/es6-iterator",
+ "/es6-set"
+ ],
+ "_resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
+ "_spec": "3.1.1",
+ "_where": "/Users/jim/DMZ/narrative-mar-2018/kbase-extension/static/ext_components",
+ "author": {
+ "name": "Mariusz Nowak",
+ "email": "medyk@medikoo.com",
+ "url": "http://www.medikoo.com/"
+ },
+ "bugs": {
+ "url": "https://github.com/medikoo/es6-symbol/issues"
+ },
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ },
+ "description": "ECMAScript 6 Symbol polyfill",
+ "devDependencies": {
+ "tad": "~0.2.7",
+ "xlint": "~0.2.2",
+ "xlint-jslint-medikoo": "~0.1.4"
+ },
+ "homepage": "https://github.com/medikoo/es6-symbol#readme",
+ "keywords": [
+ "symbol",
+ "private",
+ "property",
+ "es6",
+ "ecmascript",
+ "harmony",
+ "ponyfill",
+ "polyfill"
+ ],
+ "license": "MIT",
+ "name": "es6-symbol",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/medikoo/es6-symbol.git"
+ },
+ "scripts": {
+ "lint": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream",
+ "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
+ "test": "node ./node_modules/tad/bin/tad"
+ },
+ "version": "3.1.1"
+}
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/polyfill.js b/kbase-extension/static/ext_packages/igv/es6-symbol/polyfill.js
new file mode 100644
index 0000000000..dca879a3e2
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/polyfill.js
@@ -0,0 +1,118 @@
+// ES2015 Symbol polyfill for environments that do not (or partially) support it
+
+'use strict';
+
+var d = require('d')
+ , validateSymbol = require('./validate-symbol')
+
+ , create = Object.create, defineProperties = Object.defineProperties
+ , defineProperty = Object.defineProperty, objPrototype = Object.prototype
+ , NativeSymbol, SymbolPolyfill, HiddenSymbol, globalSymbols = create(null)
+ , isNativeSafe;
+
+if (typeof Symbol === 'function') {
+ NativeSymbol = Symbol;
+ try {
+ String(NativeSymbol());
+ isNativeSafe = true;
+ } catch (ignore) {}
+}
+
+var generateName = (function () {
+ var created = create(null);
+ return function (desc) {
+ var postfix = 0, name, ie11BugWorkaround;
+ while (created[desc + (postfix || '')]) ++postfix;
+ desc += (postfix || '');
+ created[desc] = true;
+ name = '@@' + desc;
+ defineProperty(objPrototype, name, d.gs(null, function (value) {
+ // For IE11 issue see:
+ // https://connect.microsoft.com/IE/feedbackdetail/view/1928508/
+ // ie11-broken-getters-on-dom-objects
+ // https://github.com/medikoo/es6-symbol/issues/12
+ if (ie11BugWorkaround) return;
+ ie11BugWorkaround = true;
+ defineProperty(this, name, d(value));
+ ie11BugWorkaround = false;
+ }));
+ return name;
+ };
+}());
+
+// Internal constructor (not one exposed) for creating Symbol instances.
+// This one is used to ensure that `someSymbol instanceof Symbol` always return false
+HiddenSymbol = function Symbol(description) {
+ if (this instanceof HiddenSymbol) throw new TypeError('Symbol is not a constructor');
+ return SymbolPolyfill(description);
+};
+
+// Exposed `Symbol` constructor
+// (returns instances of HiddenSymbol)
+module.exports = SymbolPolyfill = function Symbol(description) {
+ var symbol;
+ if (this instanceof Symbol) throw new TypeError('Symbol is not a constructor');
+ if (isNativeSafe) return NativeSymbol(description);
+ symbol = create(HiddenSymbol.prototype);
+ description = (description === undefined ? '' : String(description));
+ return defineProperties(symbol, {
+ __description__: d('', description),
+ __name__: d('', generateName(description))
+ });
+};
+defineProperties(SymbolPolyfill, {
+ for: d(function (key) {
+ if (globalSymbols[key]) return globalSymbols[key];
+ return (globalSymbols[key] = SymbolPolyfill(String(key)));
+ }),
+ keyFor: d(function (s) {
+ var key;
+ validateSymbol(s);
+ for (key in globalSymbols) if (globalSymbols[key] === s) return key;
+ }),
+
+ // To ensure proper interoperability with other native functions (e.g. Array.from)
+ // fallback to eventual native implementation of given symbol
+ hasInstance: d('', (NativeSymbol && NativeSymbol.hasInstance) || SymbolPolyfill('hasInstance')),
+ isConcatSpreadable: d('', (NativeSymbol && NativeSymbol.isConcatSpreadable) ||
+ SymbolPolyfill('isConcatSpreadable')),
+ iterator: d('', (NativeSymbol && NativeSymbol.iterator) || SymbolPolyfill('iterator')),
+ match: d('', (NativeSymbol && NativeSymbol.match) || SymbolPolyfill('match')),
+ replace: d('', (NativeSymbol && NativeSymbol.replace) || SymbolPolyfill('replace')),
+ search: d('', (NativeSymbol && NativeSymbol.search) || SymbolPolyfill('search')),
+ species: d('', (NativeSymbol && NativeSymbol.species) || SymbolPolyfill('species')),
+ split: d('', (NativeSymbol && NativeSymbol.split) || SymbolPolyfill('split')),
+ toPrimitive: d('', (NativeSymbol && NativeSymbol.toPrimitive) || SymbolPolyfill('toPrimitive')),
+ toStringTag: d('', (NativeSymbol && NativeSymbol.toStringTag) || SymbolPolyfill('toStringTag')),
+ unscopables: d('', (NativeSymbol && NativeSymbol.unscopables) || SymbolPolyfill('unscopables'))
+});
+
+// Internal tweaks for real symbol producer
+defineProperties(HiddenSymbol.prototype, {
+ constructor: d(SymbolPolyfill),
+ toString: d('', function () { return this.__name__; })
+});
+
+// Proper implementation of methods exposed on Symbol.prototype
+// They won't be accessible on produced symbol instances as they derive from HiddenSymbol.prototype
+defineProperties(SymbolPolyfill.prototype, {
+ toString: d(function () { return 'Symbol (' + validateSymbol(this).__description__ + ')'; }),
+ valueOf: d(function () { return validateSymbol(this); })
+});
+defineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toPrimitive, d('', function () {
+ var symbol = validateSymbol(this);
+ if (typeof symbol === 'symbol') return symbol;
+ return symbol.toString();
+}));
+defineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toStringTag, d('c', 'Symbol'));
+
+// Proper implementaton of toPrimitive and toStringTag for returned symbol instances
+defineProperty(HiddenSymbol.prototype, SymbolPolyfill.toStringTag,
+ d('c', SymbolPolyfill.prototype[SymbolPolyfill.toStringTag]));
+
+// Note: It's important to define `toPrimitive` as last one, as some implementations
+// implement `toPrimitive` natively without implementing `toStringTag` (or other specified symbols)
+// And that may invoke error in definition flow:
+// See: https://github.com/medikoo/es6-symbol/issues/13#issuecomment-164146149
+defineProperty(HiddenSymbol.prototype, SymbolPolyfill.toPrimitive,
+ d('c', SymbolPolyfill.prototype[SymbolPolyfill.toPrimitive]));
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/test/implement.js b/kbase-extension/static/ext_packages/igv/es6-symbol/test/implement.js
new file mode 100644
index 0000000000..eb35c30188
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/test/implement.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof Symbol, 'function'); };
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/test/index.js b/kbase-extension/static/ext_packages/igv/es6-symbol/test/index.js
new file mode 100644
index 0000000000..62b3296df6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/test/index.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var d = require('d')
+
+ , defineProperty = Object.defineProperty;
+
+module.exports = function (T, a) {
+ var symbol = T('test'), x = {};
+ defineProperty(x, symbol, d('foo'));
+ a(x.test, undefined, "Name");
+ a(x[symbol], 'foo', "Get");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/test/is-implemented.js b/kbase-extension/static/ext_packages/igv/es6-symbol/test/is-implemented.js
new file mode 100644
index 0000000000..bb0d64536e
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/test/is-implemented.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var global = require('es5-ext/global')
+ , polyfill = require('../polyfill');
+
+module.exports = function (t, a) {
+ var cache;
+ a(typeof t(), 'boolean');
+ cache = global.Symbol;
+ global.Symbol = polyfill;
+ a(t(), true);
+ if (cache === undefined) delete global.Symbol;
+ else global.Symbol = cache;
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/test/is-native-implemented.js b/kbase-extension/static/ext_packages/igv/es6-symbol/test/is-native-implemented.js
new file mode 100644
index 0000000000..df8ba0323f
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/test/is-native-implemented.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t, 'boolean'); };
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/test/is-symbol.js b/kbase-extension/static/ext_packages/igv/es6-symbol/test/is-symbol.js
new file mode 100644
index 0000000000..ac24b9abbf
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/test/is-symbol.js
@@ -0,0 +1,16 @@
+'use strict';
+
+var SymbolPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+ a(t(undefined), false, "Undefined");
+ a(t(null), false, "Null");
+ a(t(true), false, "Primitive");
+ a(t('raz'), false, "String");
+ a(t({}), false, "Object");
+ a(t([]), false, "Array");
+ if (typeof Symbol !== 'undefined') {
+ a(t(Symbol()), true, "Native");
+ }
+ a(t(SymbolPoly()), true, "Polyfill");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/test/polyfill.js b/kbase-extension/static/ext_packages/igv/es6-symbol/test/polyfill.js
new file mode 100644
index 0000000000..8b657905de
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/test/polyfill.js
@@ -0,0 +1,29 @@
+'use strict';
+
+var d = require('d')
+ , isSymbol = require('../is-symbol')
+
+ , defineProperty = Object.defineProperty;
+
+module.exports = function (T, a) {
+ var symbol = T('test'), x = {};
+ defineProperty(x, symbol, d('foo'));
+ a(x.test, undefined, "Name");
+ a(x[symbol], 'foo', "Get");
+ a(x instanceof T, false);
+
+ a(isSymbol(symbol), true, "Symbol");
+ a(isSymbol(T.iterator), true, "iterator");
+ a(isSymbol(T.toStringTag), true, "toStringTag");
+
+ x = {};
+ x[symbol] = 'foo';
+ if (typeof symbol !== 'symbol') {
+ a.deep(Object.getOwnPropertyDescriptor(x, symbol), { configurable: true, enumerable: false,
+ value: 'foo', writable: true });
+ }
+ symbol = T.for('marko');
+ a(isSymbol(symbol), true);
+ a(T.for('marko'), symbol);
+ a(T.keyFor(symbol), 'marko');
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/test/validate-symbol.js b/kbase-extension/static/ext_packages/igv/es6-symbol/test/validate-symbol.js
new file mode 100644
index 0000000000..2c8f84c823
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/test/validate-symbol.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var SymbolPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+ var symbol;
+ a.throws(function () { t(undefined); }, TypeError, "Undefined");
+ a.throws(function () { t(null); }, TypeError, "Null");
+ a.throws(function () { t(true); }, TypeError, "Primitive");
+ a.throws(function () { t('raz'); }, TypeError, "String");
+ a.throws(function () { t({}); }, TypeError, "Object");
+ a.throws(function () { t([]); }, TypeError, "Array");
+ if (typeof Symbol !== 'undefined') {
+ symbol = Symbol();
+ a(t(symbol), symbol, "Native");
+ }
+ symbol = SymbolPoly();
+ a(t(symbol), symbol, "Polyfill");
+};
diff --git a/kbase-extension/static/ext_packages/igv/es6-symbol/validate-symbol.js b/kbase-extension/static/ext_packages/igv/es6-symbol/validate-symbol.js
new file mode 100644
index 0000000000..42750043d4
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/es6-symbol/validate-symbol.js
@@ -0,0 +1,8 @@
+'use strict';
+
+var isSymbol = require('./is-symbol');
+
+module.exports = function (value) {
+ if (!isSymbol(value)) throw new TypeError(value + " is not a symbol");
+ return value;
+};
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/.lint b/kbase-extension/static/ext_packages/igv/event-emitter/.lint
new file mode 100644
index 0000000000..f76e528ef6
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/.lint
@@ -0,0 +1,15 @@
+@root
+
+module
+es5
+
+indent 2
+maxlen 80
+tabs
+
+ass
+plusplus
+nomen
+
+./benchmark
+predef+ console
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/.npmignore b/kbase-extension/static/ext_packages/igv/event-emitter/.npmignore
new file mode 100644
index 0000000000..68ebfddd24
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/.npmignore
@@ -0,0 +1,3 @@
+.DS_Store
+/.lintcache
+/node_modules
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/.testignore b/kbase-extension/static/ext_packages/igv/event-emitter/.testignore
new file mode 100644
index 0000000000..f9c8c381d1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/.testignore
@@ -0,0 +1 @@
+/benchmark
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/.travis.yml b/kbase-extension/static/ext_packages/igv/event-emitter/.travis.yml
new file mode 100644
index 0000000000..5f29034c65
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/.travis.yml
@@ -0,0 +1,16 @@
+sudo: false # http://docs.travis-ci.com/user/workers/container-based-infrastructure/
+language: node_js
+node_js:
+ - 0.12
+ - 4
+ - 6
+ - 7
+
+before_install:
+ - mkdir node_modules; ln -s ../ node_modules/event-emitter
+
+notifications:
+ email:
+ - medikoo+event-emitter@medikoo.com
+
+script: "npm test && npm run lint"
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/CHANGES b/kbase-extension/static/ext_packages/igv/event-emitter/CHANGES
new file mode 100644
index 0000000000..3ac46ce831
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/CHANGES
@@ -0,0 +1,73 @@
+v0.3.5 -- 2017.03.15
+* Improve documentation
+* Update dependencies
+
+v0.3.4 -- 2015.10.02
+* Add `emitError` extension
+
+v0.3.3 -- 2015.01.30
+* Fix reference to module in benchmarks
+
+v0.3.2 -- 2015.01.20
+* Improve documentation
+* Configure lint scripts
+* Fix spelling of LICENSE
+
+v0.3.1 -- 2014.04.25
+* Fix redefinition of emit method in `pipe`
+* Allow custom emit method name in `pipe`
+
+v0.3.0 -- 2014.04.24
+* Move out from lib folder
+* Do not expose all utilities on main module
+* Support objects which do not inherit from Object.prototype
+* Improve arguments validation
+* Improve internals
+* Remove Makefile
+* Improve documentation
+
+v0.2.2 -- 2013.06.05
+* `unify` functionality
+
+v0.2.1 -- 2012.09.21
+* hasListeners module
+* Simplified internal id (improves performance a little), now it starts with
+ underscore (hint it's private). Abstracted it to external module to have it
+ one place
+* Documentation cleanup
+
+v0.2.0 -- 2012.09.19
+* Trashed poor implementation of v0.1 and came up with something solid
+
+Changes:
+* Improved performance
+* Fixed bugs event-emitter is now cross-prototype safe and not affected by
+ unexpected methods attached to Object.prototype
+* Removed support for optional "emitter" argument in `emit` method, it was
+ cumbersome to use, and should be solved just with event objects
+
+v0.1.5 -- 2012.08.06
+* (maintanance) Do not use descriptors for internal objects, it exposes V8 bugs
+ (only Node v0.6 branch)
+
+v0.1.4 -- 2012.06.13
+* Fix detachment of listeners added with 'once'
+
+v0.1.3 -- 2012.05.28
+* Updated es5-ext to latest version (v0.8)
+* Cleared package.json so it's in npm friendly format
+
+v0.1.2 -- 2012.01.22
+* Support for emitter argument in emit function, this allows some listeners not
+ to be notified about event
+* allOff - removes all listeners from object
+* All methods returns self object
+* Internal fixes
+* Travis CI integration
+
+v0.1.1 -- 2011.08.08
+* Added TAD test suite to devDependencies, configured test commands.
+ Tests can be run with 'make test' or 'npm test'
+
+v0.1.0 -- 2011.08.08
+Initial version
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/LICENSE b/kbase-extension/static/ext_packages/igv/event-emitter/LICENSE
new file mode 100644
index 0000000000..ccb76f6e9a
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/LICENSE
@@ -0,0 +1,19 @@
+Copyright (C) 2012-2015 Mariusz Nowak (www.medikoo.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/README.md b/kbase-extension/static/ext_packages/igv/event-emitter/README.md
new file mode 100644
index 0000000000..0499054296
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/README.md
@@ -0,0 +1,98 @@
+# event-emitter
+## Environment agnostic event emitter
+
+### Installation
+
+ $ npm install event-emitter
+
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+### Usage
+
+```javascript
+var ee = require('event-emitter');
+
+var MyClass = function () { /* .. */ };
+ee(MyClass.prototype); // All instances of MyClass will expose event-emitter interface
+
+var emitter = new MyClass(), listener;
+
+emitter.on('test', listener = function (args) {
+ // … react to 'test' event
+});
+
+emitter.once('test', function (args) {
+ // … react to first 'test' event (invoked only once!)
+});
+
+emitter.emit('test', arg1, arg2/*…args*/); // Two above listeners invoked
+emitter.emit('test', arg1, arg2/*…args*/); // Only first listener invoked
+
+emitter.off('test', listener); // Removed first listener
+emitter.emit('test', arg1, arg2/*…args*/); // No listeners invoked
+```
+### Additional utilities
+
+#### allOff(obj) _(event-emitter/all-off)_
+
+Removes all listeners from given event emitter object
+
+#### hasListeners(obj[, name]) _(event-emitter/has-listeners)_
+
+Whether object has some listeners attached to the object.
+When `name` is provided, it checks listeners for specific event name
+
+```javascript
+var emitter = ee();
+var hasListeners = require('event-emitter/has-listeners');
+var listener = function () {};
+
+hasListeners(emitter); // false
+
+emitter.on('foo', listener);
+hasListeners(emitter); // true
+hasListeners(emitter, 'foo'); // true
+hasListeners(emitter, 'bar'); // false
+
+emitter.off('foo', listener);
+hasListeners(emitter, 'foo'); // false
+```
+
+#### pipe(source, target[, emitMethodName]) _(event-emitter/pipe)_
+
+Pipes all events from _source_ emitter onto _target_ emitter (all events from _source_ emitter will be emitted also on _target_ emitter, but not other way).
+Returns _pipe_ object which exposes `pipe.close` function. Invoke it to close configured _pipe_.
+It works internally by redefinition of `emit` method, if in your interface this method is referenced differently, provide its name (or symbol) with third argument.
+
+#### unify(emitter1, emitter2) _(event-emitter/unify)_
+
+Unifies event handling for two objects. Events emitted on _emitter1_ would be also emitted on _emitter2_, and other way back.
+Non reversible.
+
+```javascript
+var eeUnify = require('event-emitter/unify');
+
+var emitter1 = ee(), listener1, listener3;
+var emitter2 = ee(), listener2, listener4;
+
+emitter1.on('test', listener1 = function () { });
+emitter2.on('test', listener2 = function () { });
+
+emitter1.emit('test'); // Invoked listener1
+emitter2.emit('test'); // Invoked listener2
+
+var unify = eeUnify(emitter1, emitter2);
+
+emitter1.emit('test'); // Invoked listener1 and listener2
+emitter2.emit('test'); // Invoked listener1 and listener2
+
+emitter1.on('test', listener3 = function () { });
+emitter2.on('test', listener4 = function () { });
+
+emitter1.emit('test'); // Invoked listener1, listener2, listener3 and listener4
+emitter2.emit('test'); // Invoked listener1, listener2, listener3 and listener4
+```
+
+### Tests [![Build Status](https://travis-ci.org/medikoo/event-emitter.png)](https://travis-ci.org/medikoo/event-emitter)
+
+ $ npm test
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/all-off.js b/kbase-extension/static/ext_packages/igv/event-emitter/all-off.js
new file mode 100644
index 0000000000..829be65c22
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/all-off.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var value = require('es5-ext/object/valid-object')
+
+ , hasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function (emitter/*, type*/) {
+ var type = arguments[1], data;
+
+ value(emitter);
+
+ if (type !== undefined) {
+ data = hasOwnProperty.call(emitter, '__ee__') && emitter.__ee__;
+ if (!data) return;
+ if (data[type]) delete data[type];
+ return;
+ }
+ if (hasOwnProperty.call(emitter, '__ee__')) delete emitter.__ee__;
+};
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/benchmark/many-on.js b/kbase-extension/static/ext_packages/igv/event-emitter/benchmark/many-on.js
new file mode 100644
index 0000000000..e09bfde848
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/benchmark/many-on.js
@@ -0,0 +1,83 @@
+'use strict';
+
+// Benchmark comparing performance of event emit for many listeners
+// To run it, do following in memoizee package path:
+//
+// $ npm install eventemitter2 signals
+// $ node benchmark/many-on.js
+
+var forEach = require('es5-ext/object/for-each')
+ , pad = require('es5-ext/string/#/pad')
+
+ , now = Date.now
+
+ , time, count = 1000000, i, data = {}
+ , ee, native, ee2, signals, a = {}, b = {};
+
+ee = (function () {
+ var ee = require('../')();
+ ee.on('test', function () { return arguments; });
+ ee.on('test', function () { return arguments; });
+ return ee.on('test', function () { return arguments; });
+}());
+
+native = (function () {
+ var ee = require('events');
+ ee = new ee.EventEmitter();
+ ee.on('test', function () { return arguments; });
+ ee.on('test', function () { return arguments; });
+ return ee.on('test', function () { return arguments; });
+}());
+
+ee2 = (function () {
+ var ee = require('eventemitter2');
+ ee = new ee.EventEmitter2();
+ ee.on('test', function () { return arguments; });
+ ee.on('test', function () { return arguments; });
+ return ee.on('test', function () { return arguments; });
+}());
+
+signals = (function () {
+ var Signal = require('signals')
+ , ee = { test: new Signal() };
+ ee.test.add(function () { return arguments; });
+ ee.test.add(function () { return arguments; });
+ ee.test.add(function () { return arguments; });
+ return ee;
+}());
+
+console.log("Emit for 3 listeners", "x" + count + ":\n");
+
+i = count;
+time = now();
+while (i--) {
+ ee.emit('test', a, b);
+}
+data["event-emitter (this implementation)"] = now() - time;
+
+i = count;
+time = now();
+while (i--) {
+ native.emit('test', a, b);
+}
+data["EventEmitter (Node.js native)"] = now() - time;
+
+i = count;
+time = now();
+while (i--) {
+ ee2.emit('test', a, b);
+}
+data.EventEmitter2 = now() - time;
+
+i = count;
+time = now();
+while (i--) {
+ signals.test.dispatch(a, b);
+}
+data.Signals = now() - time;
+
+forEach(data, function (value, name, obj, index) {
+ console.log(index + 1 + ":", pad.call(value, " ", 5), name);
+}, null, function (a, b) {
+ return this[a] - this[b];
+});
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/benchmark/single-on.js b/kbase-extension/static/ext_packages/igv/event-emitter/benchmark/single-on.js
new file mode 100644
index 0000000000..99decbdae7
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/benchmark/single-on.js
@@ -0,0 +1,73 @@
+'use strict';
+
+// Benchmark comparing performance of event emit for single listener
+// To run it, do following in memoizee package path:
+//
+// $ npm install eventemitter2 signals
+// $ node benchmark/single-on.js
+
+var forEach = require('es5-ext/object/for-each')
+ , pad = require('es5-ext/string/#/pad')
+
+ , now = Date.now
+
+ , time, count = 1000000, i, data = {}
+ , ee, native, ee2, signals, a = {}, b = {};
+
+ee = (function () {
+ var ee = require('../');
+ return ee().on('test', function () { return arguments; });
+}());
+
+native = (function () {
+ var ee = require('events');
+ return (new ee.EventEmitter()).on('test', function () { return arguments; });
+}());
+
+ee2 = (function () {
+ var ee = require('eventemitter2');
+ return (new ee.EventEmitter2()).on('test', function () { return arguments; });
+}());
+
+signals = (function () {
+ var Signal = require('signals')
+ , ee = { test: new Signal() };
+ ee.test.add(function () { return arguments; });
+ return ee;
+}());
+
+console.log("Emit for single listener", "x" + count + ":\n");
+
+i = count;
+time = now();
+while (i--) {
+ ee.emit('test', a, b);
+}
+data["event-emitter (this implementation)"] = now() - time;
+
+i = count;
+time = now();
+while (i--) {
+ native.emit('test', a, b);
+}
+data["EventEmitter (Node.js native)"] = now() - time;
+
+i = count;
+time = now();
+while (i--) {
+ ee2.emit('test', a, b);
+}
+data.EventEmitter2 = now() - time;
+
+i = count;
+time = now();
+while (i--) {
+ signals.test.dispatch(a, b);
+}
+data.Signals = now() - time;
+
+forEach(data, function (value, name, obj, index) {
+ console.log(index + 1 + ":", pad.call(value, " ", 5), name);
+}, null, function (a, b) {
+ return this[a] - this[b];
+});
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/emit-error.js b/kbase-extension/static/ext_packages/igv/event-emitter/emit-error.js
new file mode 100644
index 0000000000..769b4c53e1
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/emit-error.js
@@ -0,0 +1,13 @@
+'use strict';
+
+var ensureError = require('es5-ext/error/valid-error')
+ , ensureObject = require('es5-ext/object/valid-object')
+
+ , hasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function (err) {
+ (ensureObject(this) && ensureError(err));
+ if (!hasOwnProperty.call(ensureObject(this), '__ee__')) throw err;
+ if (!this.__ee__.error) throw err;
+ this.emit('error', err);
+};
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/has-listeners.js b/kbase-extension/static/ext_packages/igv/event-emitter/has-listeners.js
new file mode 100644
index 0000000000..8744522e28
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/has-listeners.js
@@ -0,0 +1,16 @@
+'use strict';
+
+var isEmpty = require('es5-ext/object/is-empty')
+ , value = require('es5-ext/object/valid-value')
+
+ , hasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function (obj/*, type*/) {
+ var type;
+ value(obj);
+ type = arguments[1];
+ if (arguments.length > 1) {
+ return hasOwnProperty.call(obj, '__ee__') && Boolean(obj.__ee__[type]);
+ }
+ return obj.hasOwnProperty('__ee__') && !isEmpty(obj.__ee__);
+};
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/index.js b/kbase-extension/static/ext_packages/igv/event-emitter/index.js
new file mode 100644
index 0000000000..c36d3e49a2
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/index.js
@@ -0,0 +1,132 @@
+'use strict';
+
+var d = require('d')
+ , callable = require('es5-ext/object/valid-callable')
+
+ , apply = Function.prototype.apply, call = Function.prototype.call
+ , create = Object.create, defineProperty = Object.defineProperty
+ , defineProperties = Object.defineProperties
+ , hasOwnProperty = Object.prototype.hasOwnProperty
+ , descriptor = { configurable: true, enumerable: false, writable: true }
+
+ , on, once, off, emit, methods, descriptors, base;
+
+on = function (type, listener) {
+ var data;
+
+ callable(listener);
+
+ if (!hasOwnProperty.call(this, '__ee__')) {
+ data = descriptor.value = create(null);
+ defineProperty(this, '__ee__', descriptor);
+ descriptor.value = null;
+ } else {
+ data = this.__ee__;
+ }
+ if (!data[type]) data[type] = listener;
+ else if (typeof data[type] === 'object') data[type].push(listener);
+ else data[type] = [data[type], listener];
+
+ return this;
+};
+
+once = function (type, listener) {
+ var once, self;
+
+ callable(listener);
+ self = this;
+ on.call(this, type, once = function () {
+ off.call(self, type, once);
+ apply.call(listener, this, arguments);
+ });
+
+ once.__eeOnceListener__ = listener;
+ return this;
+};
+
+off = function (type, listener) {
+ var data, listeners, candidate, i;
+
+ callable(listener);
+
+ if (!hasOwnProperty.call(this, '__ee__')) return this;
+ data = this.__ee__;
+ if (!data[type]) return this;
+ listeners = data[type];
+
+ if (typeof listeners === 'object') {
+ for (i = 0; (candidate = listeners[i]); ++i) {
+ if ((candidate === listener) ||
+ (candidate.__eeOnceListener__ === listener)) {
+ if (listeners.length === 2) data[type] = listeners[i ? 0 : 1];
+ else listeners.splice(i, 1);
+ }
+ }
+ } else {
+ if ((listeners === listener) ||
+ (listeners.__eeOnceListener__ === listener)) {
+ delete data[type];
+ }
+ }
+
+ return this;
+};
+
+emit = function (type) {
+ var i, l, listener, listeners, args;
+
+ if (!hasOwnProperty.call(this, '__ee__')) return;
+ listeners = this.__ee__[type];
+ if (!listeners) return;
+
+ if (typeof listeners === 'object') {
+ l = arguments.length;
+ args = new Array(l - 1);
+ for (i = 1; i < l; ++i) args[i - 1] = arguments[i];
+
+ listeners = listeners.slice();
+ for (i = 0; (listener = listeners[i]); ++i) {
+ apply.call(listener, this, args);
+ }
+ } else {
+ switch (arguments.length) {
+ case 1:
+ call.call(listeners, this);
+ break;
+ case 2:
+ call.call(listeners, this, arguments[1]);
+ break;
+ case 3:
+ call.call(listeners, this, arguments[1], arguments[2]);
+ break;
+ default:
+ l = arguments.length;
+ args = new Array(l - 1);
+ for (i = 1; i < l; ++i) {
+ args[i - 1] = arguments[i];
+ }
+ apply.call(listeners, this, args);
+ }
+ }
+};
+
+methods = {
+ on: on,
+ once: once,
+ off: off,
+ emit: emit
+};
+
+descriptors = {
+ on: d(on),
+ once: d(once),
+ off: d(off),
+ emit: d(emit)
+};
+
+base = defineProperties({}, descriptors);
+
+module.exports = exports = function (o) {
+ return (o == null) ? create(base) : defineProperties(Object(o), descriptors);
+};
+exports.methods = methods;
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/package.json b/kbase-extension/static/ext_packages/igv/event-emitter/package.json
new file mode 100644
index 0000000000..3cb25d5a10
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/package.json
@@ -0,0 +1,70 @@
+{
+ "_args": [
+ [
+ "event-emitter@0.3.5",
+ "/Users/jim/DMZ/narrative-mar-2018/kbase-extension/static/ext_components"
+ ]
+ ],
+ "_from": "event-emitter@0.3.5",
+ "_id": "event-emitter@0.3.5",
+ "_inBundle": false,
+ "_integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
+ "_location": "/event-emitter",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "version",
+ "registry": true,
+ "raw": "event-emitter@0.3.5",
+ "name": "event-emitter",
+ "escapedName": "event-emitter",
+ "rawSpec": "0.3.5",
+ "saveSpec": null,
+ "fetchSpec": "0.3.5"
+ },
+ "_requiredBy": [
+ "/es6-set"
+ ],
+ "_resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "_spec": "0.3.5",
+ "_where": "/Users/jim/DMZ/narrative-mar-2018/kbase-extension/static/ext_components",
+ "author": {
+ "name": "Mariusz Nowak",
+ "email": "medyk@medikoo.com",
+ "url": "http://www.medikoo.com/"
+ },
+ "bugs": {
+ "url": "https://github.com/medikoo/event-emitter/issues"
+ },
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ },
+ "description": "Environment agnostic event emitter",
+ "devDependencies": {
+ "tad": "~0.2.7",
+ "xlint": "~0.2.2",
+ "xlint-jslint-medikoo": "~0.1.4"
+ },
+ "homepage": "https://github.com/medikoo/event-emitter#readme",
+ "keywords": [
+ "event",
+ "events",
+ "trigger",
+ "observer",
+ "listener",
+ "emitter",
+ "pubsub"
+ ],
+ "license": "MIT",
+ "name": "event-emitter",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/medikoo/event-emitter.git"
+ },
+ "scripts": {
+ "lint": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream",
+ "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
+ "test": "node ./node_modules/tad/bin/tad"
+ },
+ "version": "0.3.5"
+}
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/pipe.js b/kbase-extension/static/ext_packages/igv/event-emitter/pipe.js
new file mode 100644
index 0000000000..0088efefa2
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/pipe.js
@@ -0,0 +1,42 @@
+'use strict';
+
+var aFrom = require('es5-ext/array/from')
+ , remove = require('es5-ext/array/#/remove')
+ , value = require('es5-ext/object/valid-object')
+ , d = require('d')
+ , emit = require('./').methods.emit
+
+ , defineProperty = Object.defineProperty
+ , hasOwnProperty = Object.prototype.hasOwnProperty
+ , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+
+module.exports = function (e1, e2/*, name*/) {
+ var pipes, pipe, desc, name;
+
+ (value(e1) && value(e2));
+ name = arguments[2];
+ if (name === undefined) name = 'emit';
+
+ pipe = {
+ close: function () { remove.call(pipes, e2); }
+ };
+ if (hasOwnProperty.call(e1, '__eePipes__')) {
+ (pipes = e1.__eePipes__).push(e2);
+ return pipe;
+ }
+ defineProperty(e1, '__eePipes__', d('c', pipes = [e2]));
+ desc = getOwnPropertyDescriptor(e1, name);
+ if (!desc) {
+ desc = d('c', undefined);
+ } else {
+ delete desc.get;
+ delete desc.set;
+ }
+ desc.value = function () {
+ var i, emitter, data = aFrom(pipes);
+ emit.apply(this, arguments);
+ for (i = 0; (emitter = data[i]); ++i) emit.apply(emitter, arguments);
+ };
+ defineProperty(e1, name, desc);
+ return pipe;
+};
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/test/all-off.js b/kbase-extension/static/ext_packages/igv/event-emitter/test/all-off.js
new file mode 100644
index 0000000000..8aa872e9c9
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/test/all-off.js
@@ -0,0 +1,48 @@
+'use strict';
+
+var ee = require('../');
+
+module.exports = function (t, a) {
+ var x, count, count2;
+
+ x = ee();
+ count = 0;
+ count2 = 0;
+ x.on('foo', function () {
+ ++count;
+ });
+ x.on('foo', function () {
+ ++count;
+ });
+ x.on('bar', function () {
+ ++count2;
+ });
+ x.on('bar', function () {
+ ++count2;
+ });
+ t(x, 'foo');
+ x.emit('foo');
+ x.emit('bar');
+ a(count, 0, "All off: type");
+ a(count2, 2, "All off: ohter type");
+
+ count = 0;
+ count2 = 0;
+ x.on('foo', function () {
+ ++count;
+ });
+ x.on('foo', function () {
+ ++count;
+ });
+ x.on('bar', function () {
+ ++count2;
+ });
+ x.on('bar', function () {
+ ++count2;
+ });
+ t(x);
+ x.emit('foo');
+ x.emit('bar');
+ a(count, 0, "All off: type");
+ a(count2, 0, "All off: other type");
+};
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/test/emit-error.js b/kbase-extension/static/ext_packages/igv/event-emitter/test/emit-error.js
new file mode 100644
index 0000000000..edac350afb
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/test/emit-error.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var customError = require('es5-ext/error/custom')
+ , ee = require('../');
+
+module.exports = function (t, a) {
+ var x, error = customError('Some error', 'ERROR_TEST'), emitted;
+
+ x = ee();
+ a.throws(function () { t.call(x, error); }, 'ERROR_TEST');
+ x.on('error', function (err) { emitted = err; });
+ t.call(x, error);
+ a(emitted, error);
+};
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/test/has-listeners.js b/kbase-extension/static/ext_packages/igv/event-emitter/test/has-listeners.js
new file mode 100644
index 0000000000..875b048a41
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/test/has-listeners.js
@@ -0,0 +1,42 @@
+'use strict';
+
+var ee = require('../');
+
+module.exports = function (t) {
+ var x, y;
+ return {
+ Any: function (a) {
+ a(t(true), false, "Primitive");
+ a(t({ events: [] }), false, "Other object");
+ a(t(x = ee()), false, "Emitter: empty");
+
+ x.on('test', y = function () {});
+ a(t(x), true, "Emitter: full");
+ x.off('test', y);
+ a(t(x), false, "Emitter: empty but touched");
+ x.once('test', y = function () {});
+ a(t(x), true, "Emitter: full: Once");
+ x.off('test', y);
+ a(t(x), false, "Emitter: empty but touched by once");
+ },
+ Specific: function (a) {
+ a(t(true, 'test'), false, "Primitive");
+ a(t({ events: [] }, 'test'), false, "Other object");
+ a(t(x = ee(), 'test'), false, "Emitter: empty");
+
+ x.on('test', y = function () {});
+ a(t(x, 'test'), true, "Emitter: full");
+ a(t(x, 'foo'), false, "Emitter: full, other event");
+ x.off('test', y);
+ a(t(x, 'test'), false, "Emitter: empty but touched");
+ a(t(x, 'foo'), false, "Emitter: empty but touched, other event");
+
+ x.once('test', y = function () {});
+ a(t(x, 'test'), true, "Emitter: full: Once");
+ a(t(x, 'foo'), false, "Emitter: full: Once, other event");
+ x.off('test', y);
+ a(t(x, 'test'), false, "Emitter: empty but touched by once");
+ a(t(x, 'foo'), false, "Emitter: empty but touched by once, other event");
+ }
+ };
+};
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/test/index.js b/kbase-extension/static/ext_packages/igv/event-emitter/test/index.js
new file mode 100644
index 0000000000..c7c3f24c47
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/test/index.js
@@ -0,0 +1,107 @@
+'use strict';
+
+module.exports = function (t, a) {
+ var x = t(), y, count, count2, count3, count4, test, listener1, listener2;
+
+ x.emit('none');
+
+ test = "Once: ";
+ count = 0;
+ x.once('foo', function (a1, a2, a3) {
+ a(this, x, test + "Context");
+ a.deep([a1, a2, a3], ['foo', x, 15], test + "Arguments");
+ ++count;
+ });
+
+ x.emit('foobar');
+ a(count, 0, test + "Not invoked on other event");
+ x.emit('foo', 'foo', x, 15);
+ a(count, 1, test + "Emitted");
+ x.emit('foo');
+ a(count, 1, test + "Emitted once");
+
+ test = "On & Once: ";
+ count = 0;
+ x.on('foo', listener1 = function (a1, a2, a3) {
+ a(this, x, test + "Context");
+ a.deep([a1, a2, a3], ['foo', x, 15], test + "Arguments");
+ ++count;
+ });
+ count2 = 0;
+ x.once('foo', listener2 = function (a1, a2, a3) {
+ a(this, x, test + "Context");
+ a.deep([a1, a2, a3], ['foo', x, 15], test + "Arguments");
+ ++count2;
+ });
+
+ x.emit('foobar');
+ a(count, 0, test + "Not invoked on other event");
+ x.emit('foo', 'foo', x, 15);
+ a(count, 1, test + "Emitted");
+ x.emit('foo', 'foo', x, 15);
+ a(count, 2, test + "Emitted twice");
+ a(count2, 1, test + "Emitted once");
+ x.off('foo', listener1);
+ x.emit('foo');
+ a(count, 2, test + "Not emitter after off");
+
+ count = 0;
+ x.once('foo', listener1 = function () { ++count; });
+
+ x.off('foo', listener1);
+ x.emit('foo');
+ a(count, 0, "Once Off: Not emitted");
+
+ count = 0;
+ x.on('foo', listener2 = function () {});
+ x.once('foo', listener1 = function () { ++count; });
+
+ x.off('foo', listener1);
+ x.emit('foo');
+ a(count, 0, "Once Off (multi): Not emitted");
+ x.off('foo', listener2);
+
+ test = "Prototype Share: ";
+
+ y = Object.create(x);
+
+ count = 0;
+ count2 = 0;
+ count3 = 0;
+ count4 = 0;
+ x.on('foo', function () {
+ ++count;
+ });
+ y.on('foo', function () {
+ ++count2;
+ });
+ x.once('foo', function () {
+ ++count3;
+ });
+ y.once('foo', function () {
+ ++count4;
+ });
+ x.emit('foo');
+ a(count, 1, test + "x on count");
+ a(count2, 0, test + "y on count");
+ a(count3, 1, test + "x once count");
+ a(count4, 0, test + "y once count");
+
+ y.emit('foo');
+ a(count, 1, test + "x on count");
+ a(count2, 1, test + "y on count");
+ a(count3, 1, test + "x once count");
+ a(count4, 1, test + "y once count");
+
+ x.emit('foo');
+ a(count, 2, test + "x on count");
+ a(count2, 1, test + "y on count");
+ a(count3, 1, test + "x once count");
+ a(count4, 1, test + "y once count");
+
+ y.emit('foo');
+ a(count, 2, test + "x on count");
+ a(count2, 2, test + "y on count");
+ a(count3, 1, test + "x once count");
+ a(count4, 1, test + "y once count");
+};
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/test/pipe.js b/kbase-extension/static/ext_packages/igv/event-emitter/test/pipe.js
new file mode 100644
index 0000000000..9d15d6dae3
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/test/pipe.js
@@ -0,0 +1,53 @@
+'use strict';
+
+var ee = require('../');
+
+module.exports = function (t, a) {
+ var x = {}, y = {}, z = {}, count, count2, count3, pipe;
+
+ ee(x);
+ x = Object.create(x);
+ ee(y);
+ ee(z);
+
+ count = 0;
+ count2 = 0;
+ count3 = 0;
+ x.on('foo', function () {
+ ++count;
+ });
+ y.on('foo', function () {
+ ++count2;
+ });
+ z.on('foo', function () {
+ ++count3;
+ });
+
+ x.emit('foo');
+ a(count, 1, "Pre pipe, x");
+ a(count2, 0, "Pre pipe, y");
+ a(count3, 0, "Pre pipe, z");
+
+ pipe = t(x, y);
+ x.emit('foo');
+ a(count, 2, "Post pipe, x");
+ a(count2, 1, "Post pipe, y");
+ a(count3, 0, "Post pipe, z");
+
+ y.emit('foo');
+ a(count, 2, "Post pipe, on y, x");
+ a(count2, 2, "Post pipe, on y, y");
+ a(count3, 0, "Post pipe, on y, z");
+
+ t(x, z);
+ x.emit('foo');
+ a(count, 3, "Post pipe z, x");
+ a(count2, 3, "Post pipe z, y");
+ a(count3, 1, "Post pipe z, z");
+
+ pipe.close();
+ x.emit('foo');
+ a(count, 4, "Close pipe y, x");
+ a(count2, 3, "Close pipe y, y");
+ a(count3, 2, "Close pipe y, z");
+};
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/test/unify.js b/kbase-extension/static/ext_packages/igv/event-emitter/test/unify.js
new file mode 100644
index 0000000000..69295e0657
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/test/unify.js
@@ -0,0 +1,123 @@
+'use strict';
+
+var ee = require('../');
+
+module.exports = function (t) {
+
+ return {
+ "": function (a) {
+ var x = {}, y = {}, z = {}, count, count2, count3;
+
+ ee(x);
+ ee(y);
+ ee(z);
+
+ count = 0;
+ count2 = 0;
+ count3 = 0;
+ x.on('foo', function () { ++count; });
+ y.on('foo', function () { ++count2; });
+ z.on('foo', function () { ++count3; });
+
+ x.emit('foo');
+ a(count, 1, "Pre unify, x");
+ a(count2, 0, "Pre unify, y");
+ a(count3, 0, "Pre unify, z");
+
+ t(x, y);
+ a(x.__ee__, y.__ee__, "Post unify y");
+ x.emit('foo');
+ a(count, 2, "Post unify, x");
+ a(count2, 1, "Post unify, y");
+ a(count3, 0, "Post unify, z");
+
+ y.emit('foo');
+ a(count, 3, "Post unify, on y, x");
+ a(count2, 2, "Post unify, on y, y");
+ a(count3, 0, "Post unify, on y, z");
+
+ t(x, z);
+ a(x.__ee__, x.__ee__, "Post unify z");
+ x.emit('foo');
+ a(count, 4, "Post unify z, x");
+ a(count2, 3, "Post unify z, y");
+ a(count3, 1, "Post unify z, z");
+ },
+ "On empty": function (a) {
+ var x = {}, y = {}, z = {}, count, count2, count3;
+
+ ee(x);
+ ee(y);
+ ee(z);
+
+ count = 0;
+ count2 = 0;
+ count3 = 0;
+ y.on('foo', function () { ++count2; });
+ x.emit('foo');
+ a(count, 0, "Pre unify, x");
+ a(count2, 0, "Pre unify, y");
+ a(count3, 0, "Pre unify, z");
+
+ t(x, y);
+ a(x.__ee__, y.__ee__, "Post unify y");
+ x.on('foo', function () { ++count; });
+ x.emit('foo');
+ a(count, 1, "Post unify, x");
+ a(count2, 1, "Post unify, y");
+ a(count3, 0, "Post unify, z");
+
+ y.emit('foo');
+ a(count, 2, "Post unify, on y, x");
+ a(count2, 2, "Post unify, on y, y");
+ a(count3, 0, "Post unify, on y, z");
+
+ t(x, z);
+ a(x.__ee__, z.__ee__, "Post unify z");
+ z.on('foo', function () { ++count3; });
+ x.emit('foo');
+ a(count, 3, "Post unify z, x");
+ a(count2, 3, "Post unify z, y");
+ a(count3, 1, "Post unify z, z");
+ },
+ Many: function (a) {
+ var x = {}, y = {}, z = {}, count, count2, count3;
+
+ ee(x);
+ ee(y);
+ ee(z);
+
+ count = 0;
+ count2 = 0;
+ count3 = 0;
+ x.on('foo', function () { ++count; });
+ y.on('foo', function () { ++count2; });
+ y.on('foo', function () { ++count2; });
+ z.on('foo', function () { ++count3; });
+
+ x.emit('foo');
+ a(count, 1, "Pre unify, x");
+ a(count2, 0, "Pre unify, y");
+ a(count3, 0, "Pre unify, z");
+
+ t(x, y);
+ a(x.__ee__, y.__ee__, "Post unify y");
+ x.emit('foo');
+ a(count, 2, "Post unify, x");
+ a(count2, 2, "Post unify, y");
+ a(count3, 0, "Post unify, z");
+
+ y.emit('foo');
+ a(count, 3, "Post unify, on y, x");
+ a(count2, 4, "Post unify, on y, y");
+ a(count3, 0, "Post unify, on y, z");
+
+ t(x, z);
+ a(x.__ee__, x.__ee__, "Post unify z");
+ x.emit('foo');
+ a(count, 4, "Post unify z, x");
+ a(count2, 6, "Post unify z, y");
+ a(count3, 1, "Post unify z, z");
+ }
+ };
+};
diff --git a/kbase-extension/static/ext_packages/igv/event-emitter/unify.js b/kbase-extension/static/ext_packages/igv/event-emitter/unify.js
new file mode 100644
index 0000000000..c6a858a0be
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/event-emitter/unify.js
@@ -0,0 +1,50 @@
+'use strict';
+
+var forEach = require('es5-ext/object/for-each')
+ , validValue = require('es5-ext/object/valid-object')
+
+ , push = Array.prototype.apply, defineProperty = Object.defineProperty
+ , create = Object.create, hasOwnProperty = Object.prototype.hasOwnProperty
+ , d = { configurable: true, enumerable: false, writable: true };
+
+module.exports = function (e1, e2) {
+ var data;
+ (validValue(e1) && validValue(e2));
+ if (!hasOwnProperty.call(e1, '__ee__')) {
+ if (!hasOwnProperty.call(e2, '__ee__')) {
+ d.value = create(null);
+ defineProperty(e1, '__ee__', d);
+ defineProperty(e2, '__ee__', d);
+ d.value = null;
+ return;
+ }
+ d.value = e2.__ee__;
+ defineProperty(e1, '__ee__', d);
+ d.value = null;
+ return;
+ }
+ data = d.value = e1.__ee__;
+ if (!hasOwnProperty.call(e2, '__ee__')) {
+ defineProperty(e2, '__ee__', d);
+ d.value = null;
+ return;
+ }
+ if (data === e2.__ee__) return;
+ forEach(e2.__ee__, function (listener, name) {
+ if (!data[name]) {
+ data[name] = listener;
+ return;
+ }
+ if (typeof data[name] === 'object') {
+ if (typeof listener === 'object') push.apply(data[name], listener);
+ else data[name].push(listener);
+ } else if (typeof listener === 'object') {
+ listener.unshift(data[name]);
+ data[name] = listener;
+ } else {
+ data[name] = [data[name], listener];
+ }
+ });
+ defineProperty(e2, '__ee__', d);
+ d.value = null;
+};
diff --git a/kbase-extension/static/ext_packages/igv/igv.js/.npmignore b/kbase-extension/static/ext_packages/igv/igv.js/.npmignore
new file mode 100644
index 0000000000..2ec421548b
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/igv.js/.npmignore
@@ -0,0 +1,63 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# Typescript v1 declaration files
+typings/
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
+
+# idea
+.idea/
+
+*.js-npm.iml
diff --git a/kbase-extension/static/ext_packages/igv/igv.js/LICENSE b/kbase-extension/static/ext_packages/igv/igv.js/LICENSE
new file mode 100644
index 0000000000..8864d4a396
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/igv.js/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/kbase-extension/static/ext_packages/igv/igv.js/README.md b/kbase-extension/static/ext_packages/igv/igv.js/README.md
new file mode 100644
index 0000000000..0d8d0d9ecc
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/igv.js/README.md
@@ -0,0 +1 @@
+# igv.js-npm
\ No newline at end of file
diff --git a/kbase-extension/static/ext_packages/igv/igv.js/igv.css b/kbase-extension/static/ext_packages/igv/igv.js/igv.css
new file mode 100644
index 0000000000..1ef174e548
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/igv.js/igv.css
@@ -0,0 +1,1394 @@
+.igv-color-swatch {
+ display: flex;
+ flex-flow: row;
+ flex-wrap: wrap;
+ justify-content: center;
+ align-items: center;
+ width: 24px;
+ height: 24px;
+ border-style: solid;
+ border-width: 1px;
+ border-color: transparent; }
+ .igv-color-swatch i.fa {
+ display: block; }
+ .igv-color-swatch i.fa:hover,
+ .igv-color-swatch i.fa:focus,
+ .igv-color-swatch i.fa:active {
+ cursor: pointer;
+ color: #0f0f0f; }
+
+.igv-color-swatch:hover,
+.igv-color-swatch:focus,
+.igv-color-swatch:active {
+ border-color: #dddddd; }
+
+.igv-colorpicker-menu-close-button {
+ display: flex;
+ flex-flow: row;
+ flex-wrap: nowrap;
+ justify-content: flex-end;
+ align-items: center;
+ width: 100%;
+ height: 32px;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ padding-right: 8px; }
+ .igv-colorpicker-menu-close-button i.fa {
+ display: block;
+ margin-left: 4px;
+ margin-right: 4px;
+ color: #5f5f5f; }
+ .igv-colorpicker-menu-close-button i.fa:hover,
+ .igv-colorpicker-menu-close-button i.fa:focus,
+ .igv-colorpicker-menu-close-button i.fa:active {
+ cursor: pointer;
+ color: #0f0f0f; }
+
+.igv-position-absolute {
+ position: absolute;
+ top: 0;
+ left: 0; }
+
+.igv-generic-container {
+ width: 256px;
+ z-index: 5000;
+ background-color: white;
+ border-style: solid;
+ border-width: thin;
+ border-color: #dddddd;
+ cursor: pointer;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+ align-items: center; }
+ .igv-generic-container div:first-child {
+ display: flex;
+ flex-flow: row;
+ flex-wrap: nowrap;
+ justify-content: flex-end;
+ align-items: center;
+ height: 24px;
+ width: 100%;
+ background-color: #dddddd; }
+ .igv-generic-container div:first-child i.fa {
+ margin-right: 4px;
+ display: block;
+ color: #5f5f5f; }
+ .igv-generic-container div:first-child i.fa:hover,
+ .igv-generic-container div:first-child i.fa:focus,
+ .igv-generic-container div:first-child i.fa:active {
+ cursor: pointer;
+ color: #0f0f0f; }
+
+.igv-navbar {
+ position: relative;
+ top: 0;
+ left: 0;
+ height: 30px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-left: 4px;
+ padding-right: 4px;
+ border-style: solid;
+ border-radius: 3px;
+ border-width: thin;
+ border-color: #bfbfbf;
+ background-color: #f3f3f3; }
+ .igv-navbar i {
+ cursor: pointer;
+ color: #666666; }
+ .igv-navbar i:hover,
+ .igv-navbar i:focus,
+ .igv-navbar i:active {
+ color: #434343; }
+
+.igv-logo {
+ float: left;
+ margin-left: 4px;
+ margin-right: 8px;
+ position: relative;
+ top: 4px;
+ left: 0;
+ width: 34px;
+ height: 16px;
+ background: url(img/igv-logo.svg);
+ background-size: 34px 16px;
+ background-repeat: no-repeat;
+ background-position: 0 0; }
+
+.igv-logo-nonav {
+ margin-left: 4px;
+ margin-top: 12px;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 34px;
+ height: 16px;
+ background: url(img/igv-logo.svg);
+ background-size: 34px 16px;
+ background-repeat: no-repeat;
+ background-position: 0 0; }
+
+.igv-chromosome-select-widget-container {
+ position: relative;
+ float: left;
+ height: 90%;
+ width: 96px;
+ margin-right: 4px; }
+ .igv-chromosome-select-widget-container select {
+ position: relative;
+ width: 100%;
+ height: 100%; }
+
+.igv-search-container {
+ position: relative;
+ top: 0;
+ width: 260px;
+ float: left; }
+ .igv-search-container input {
+ position: relative;
+ height: 20px;
+ width: 80%;
+ padding-left: 8px;
+ outline: none;
+ border-style: solid;
+ border-radius: 3px;
+ border-width: thin;
+ border-color: #bfbfbf;
+ font-family: "Open Sans", sans-serif;
+ font-size: small;
+ font-weight: 400;
+ color: #444;
+ background-color: white; }
+ .igv-search-container i {
+ font-size: 18px;
+ padding-left: 6px; }
+
+.igv-search-results {
+ position: absolute;
+ top: 32px;
+ left: 2px;
+ height: 320px;
+ width: 213px;
+ background-color: white;
+ border-color: #7F7F7F;
+ border-style: solid;
+ border-width: thin;
+ overflow-x: hidden;
+ overflow-y: auto;
+ z-index: 9999; }
+ .igv-search-results tr {
+ font-family: "Open Sans", sans-serif;
+ font-size: small;
+ font-weight: 400;
+ color: #444; }
+ .igv-search-results tr:hover,
+ .igv-search-results tr:focus,
+ .igv-search-results tr:active {
+ cursor: pointer;
+ font-weight: 700;
+ color: #141414; }
+
+.igv-nav-bar-toggle-button {
+ cursor: pointer;
+ position: relative;
+ height: 20px;
+ min-width: 110px;
+ text-transform: capitalize;
+ float: right;
+ margin-top: 2px;
+ margin-right: 5px;
+ padding-left: 8px;
+ padding-right: 8px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ font-family: "Open Sans", sans-serif;
+ font-size: 12px;
+ font-weight: 200;
+ text-align: center;
+ vertical-align: middle;
+ border-style: solid;
+ border-width: thin;
+ border-radius: 10px; }
+
+.igv-nav-bar-toggle-button-on {
+ color: #737373;
+ border-color: #737373;
+ background-color: #f3f3f3; }
+
+.igv-nav-bar-toggle-button-off {
+ color: white;
+ border-color: #737373;
+ background-color: #737373; }
+
+.igv-zoom-widget {
+ position: relative;
+ float: right;
+ margin-left: 40px; }
+ .igv-zoom-widget i {
+ font-size: 24px; }
+ .igv-zoom-widget i:first-child {
+ padding-right: 4px; }
+
+.igv-karyo-div {
+ position: relative;
+ left: 0;
+ top: 0;
+ height: 200px; }
+
+.igv-karyo-hide {
+ height: 0;
+ overflow: hidden; }
+
+.igv-karyo-content-div {
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%; }
+
+.igv-karyo-canvas {
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%; }
+
+.igv-ideogram-left-shim {
+ position: relative;
+ float: left;
+ height: 14px;
+ margin-top: 2px;
+ margin-bottom: 2px;
+ width: 50px; }
+
+.igv-ideogram-content-div {
+ position: relative;
+ float: left;
+ height: 14px;
+ margin-top: 2px;
+ margin-bottom: 2px;
+ background-color: white; }
+ .igv-ideogram-content-div canvas {
+ width: 100%;
+ height: 100%; }
+
+.igv-ideogram-content-div-border-right {
+ border-right-color: white;
+ border-right-style: solid;
+ border-right-width: 4px; }
+
+.igv-ideogram-content-div-border-left {
+ border-left-color: white;
+ border-left-style: solid;
+ border-left-width: thin; }
+
+.igv-root-div {
+ position: relative;
+ left: 0;
+ right: 0;
+ height: auto;
+ margin-left: 10px;
+ margin-right: 10px;
+ padding-top: 4px; }
+
+.igv-content-div {
+ position: relative;
+ width: 100%;
+ height: 100%; }
+
+.igv-track-container-div {
+ position: relative;
+ clear: both; }
+
+.igv-track-div {
+ position: relative;
+ width: 100%; }
+
+.igv-viewport-container {
+ position: absolute;
+ left: 0;
+ right: 50px;
+ height: 100%;
+ /*overflow: hidden;*/
+ overflow-x: hidden;
+ overflow-y: hidden; }
+
+.igv-viewport-container-shim {
+ left: 50px; }
+
+.igv-viewport-div {
+ float: left;
+ position: relative;
+ /*width: 100%;*/
+ height: 100%;
+ overflow-x: hidden;
+ overflow-y: hidden; }
+
+.igv-viewport-content-div {
+ position: absolute;
+ width: 100%;
+ height: 100%; }
+ .igv-viewport-content-div .igv-whole-genome-container {
+ display: flex;
+ flex-flow: row;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+ width: 100%;
+ height: 100%;
+ background-color: white; }
+ .igv-viewport-content-div .igv-whole-genome-container div {
+ font-family: "Open Sans", sans-serif;
+ font-size: 10px;
+ font-weight: 400;
+ color: #444;
+ height: 100%;
+ text-align: center;
+ border-right-color: #bfbfbf;
+ border-right-style: solid;
+ border-right-width: thin; }
+ .igv-viewport-content-div .igv-whole-genome-container div span {
+ display: block;
+ padding-top: 6px;
+ text-overflow: ellipsis; }
+ .igv-viewport-content-div .igv-whole-genome-container div:last-child {
+ border-right-color: transparent; }
+ .igv-viewport-content-div .igv-whole-genome-container div:hover,
+ .igv-viewport-content-div .igv-whole-genome-container div:focus,
+ .igv-viewport-content-div .igv-whole-genome-container div:active {
+ cursor: pointer;
+ background-color: #efefef; }
+ .igv-viewport-content-div canvas {
+ width: 100%;
+ height: 100%; }
+
+.igv-viewport-div-border-right {
+ border-right-color: white;
+ border-right-style: solid;
+ border-right-width: 4px; }
+
+.igv-viewport-div-border-left {
+ border-left-color: rgba(0, 0, 0, 0.25);
+ border-left-style: solid;
+ border-left-width: thin; }
+
+.igv-viewport-fa-close {
+ position: absolute;
+ top: 4px;
+ right: 4px;
+ z-index: 1000; }
+
+.igv-viewport-content-ruler-div {
+ position: absolute;
+ left: 50%;
+ top: 25%;
+ transform: translate(-50%, -25%);
+ font-family: "Open Sans", sans-serif;
+ font-size: 12px;
+ font-weight: 200;
+ text-align: center;
+ min-width: 16px;
+ z-index: 64;
+ color: #0066ff;
+ background-color: white;
+ padding: 1px; }
+
+.igv-viewport-content-ruler-div:hover,
+.igv-viewport-content-ruler-div:focus,
+.igv-viewport-content-ruler-div:active {
+ cursor: pointer;
+ color: white;
+ background-color: #0066ff; }
+
+.igv-viewport-ruler {
+ font-family: "Open Sans", sans-serif;
+ font-size: 10px;
+ font-weight: 200;
+ text-align: center; }
+
+.igv-viewport-sequence {
+ font-family: "Open Sans", sans-serif;
+ font-size: 8px;
+ font-weight: 200;
+ text-align: center; }
+
+.igv-viewport-spinner {
+ pointer-events: none;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ z-index: 1024;
+ color: #737373; }
+
+.igv-ruler-sweeper-div {
+ display: none;
+ pointer-events: none;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 0;
+ height: 100%;
+ z-index: 99999;
+ background-color: rgba(68, 134, 247, 0.25); }
+
+.igv-right-hand-gutter {
+ position: absolute;
+ right: 0;
+ width: 36px;
+ height: 100%;
+ background: white;
+ text-align: center; }
+ .igv-right-hand-gutter i {
+ position: absolute;
+ top: 0;
+ right: 0;
+ padding-right: 6px;
+ font-size: 20px;
+ cursor: pointer;
+ color: grey; }
+ .igv-right-hand-gutter i:hover,
+ .igv-right-hand-gutter i:focus,
+ .igv-right-hand-gutter i:active {
+ color: #333333; }
+
+.igv-left-hand-gutter {
+ position: absolute;
+ left: 0;
+ width: 50px;
+ height: 100%; }
+ .igv-left-hand-gutter canvas {
+ position: absolute; }
+
+.igv-windowsizepanel-content-div {
+ position: relative;
+ height: 100%;
+ float: left;
+ padding-top: 6px;
+ text-align: center;
+ vertical-align: middle;
+ line-height: 100%;
+ font-family: "Open Sans", sans-serif;
+ font-size: 14px;
+ font-weight: 400;
+ color: #444; }
+
+.igv-track-menu-container {
+ background-color: white;
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px; }
+ .igv-track-menu-container div {
+ padding-left: 4px;
+ padding-right: 4px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ background-color: white; }
+ .igv-track-menu-container div i {
+ padding-right: 2px; }
+ .igv-track-menu-container div:hover,
+ .igv-track-menu-container div:focus,
+ .igv-track-menu-container div:active {
+ cursor: pointer;
+ background-color: #efefef; }
+ .igv-track-menu-container a {
+ color: inherit;
+ text-decoration: none; }
+
+.igv-track-menu-border-top {
+ border-top-color: #a2a2a2;
+ border-top-style: solid;
+ border-top-width: thin; }
+
+.igv-track-menu-category {
+ padding-left: 4px;
+ font-weight: 400; }
+
+.igv-track-drag-scrim {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 256;
+ background-color: rgba(68, 134, 247, 0.25); }
+
+.igv-track-manipulation-handle {
+ cursor: pointer;
+ position: absolute;
+ right: 36px;
+ width: 12px;
+ margin-left: 2px;
+ margin-top: 1px;
+ margin-bottom: 1px;
+ height: 100%;
+ box-sizing: border-box;
+ font-size: medium;
+ border-color: #c4c4c4;
+ border-style: solid;
+ border-width: thin;
+ border-top-right-radius: 6px;
+ border-bottom-right-radius: 6px;
+ z-index: 512;
+ background-color: #c4c4c4; }
+
+.igv-track-manipulation-handle:hover,
+.igv-track-manipulation-handle:focus,
+.igv-track-manipulation-handle:active {
+ border-color: #7e7e7e;
+ background-color: #7e7e7e; }
+
+.igv-track-label {
+ position: absolute;
+ left: 8px;
+ top: 4px;
+ width: auto;
+ height: auto;
+ max-width: 200px;
+ padding-left: 4px;
+ padding-right: 4px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ font-family: "Open Sans", sans-serif;
+ font-size: small;
+ font-weight: 400;
+ text-align: center;
+ user-select: none;
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ border-color: #444;
+ border-radius: 2px;
+ border-style: solid;
+ border-width: thin;
+ background-color: white;
+ z-index: 128; }
+
+.igv-track-label:hover,
+.igv-track-label:focus,
+.igv-track-label:active {
+ cursor: pointer;
+ font-weight: bold; }
+
+.igv-scrollbar-outer-div {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 14px;
+ height: 100%;
+ background-color: white; }
+ .igv-scrollbar-outer-div div {
+ position: absolute;
+ top: 0;
+ left: 3px;
+ width: 8px;
+ border-style: solid;
+ border-width: thin;
+ border-color: #c4c4c4;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ background-color: white; }
+ .igv-scrollbar-outer-div div:hover,
+ .igv-scrollbar-outer-div div:focus,
+ .igv-scrollbar-outer-div div:active {
+ cursor: pointer;
+ background-color: #c4c4c4; }
+
+.zoom-in-notice-container {
+ position: absolute;
+ top: 25%;
+ left: 50%; }
+ .zoom-in-notice-container div {
+ position: relative;
+ left: -50%;
+ font-family: "Open Sans", sans-serif;
+ font-size: medium;
+ font-weight: 400;
+ color: #3f3f3f;
+ background-color: rgba(255, 255, 255, 0.51);
+ z-index: 64; }
+
+.igv-center-guide {
+ pointer-events: none;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 50%;
+ width: 8px;
+ z-index: 8;
+ display: none;
+ user-select: none;
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ border-left-style: dashed;
+ border-left-width: thin;
+ border-right-style: dashed;
+ border-right-width: thin; }
+
+.igv-center-guide-wide {
+ background-color: transparent;
+ border-left-color: rgba(127, 127, 127, 0.51);
+ border-right-color: rgba(127, 127, 127, 0.51); }
+
+.igv-center-guide-thin {
+ left: 50%;
+ width: 1px;
+ background-color: transparent;
+ border-left-color: rgba(127, 127, 127, 0.51);
+ border-right-color: transparent;
+ /*background-color: rgba(127, 127, 127, 0.51);*/
+ /*border-left-color: rgba(0,0,0,0);*/
+ /*border-right-color: rgba(0,0,0,0);*/ }
+
+.igv-cursor-tracking-guide {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 50%;
+ width: 1px;
+ z-index: 1;
+ border-left-style: dotted;
+ border-left-width: thin;
+ border-left-color: rgba(127, 127, 127, 0.76);
+ display: none;
+ user-select: none;
+ -moz-user-select: none;
+ -webkit-user-select: none; }
+
+.igv-clickable {
+ cursor: pointer;
+ background-color: white; }
+
+#color-by-tag {
+ color: #444; }
+
+#color-by-tag:hover,
+#color-by-tag:focus,
+#color-by-tag:active {
+ cursor: pointer;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: white;
+ border-color: #444;
+ border-radius: 2px;
+ border-style: solid;
+ border-width: thin;
+ background-color: #7f7f7f; }
+
+.igv-user-feedback {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ width: 36em;
+ height: 27em;
+ margin-top: -9em;
+ /*set to a negative number 1/2 of your height*/
+ margin-left: -15em;
+ /*set to a negative number 1/2 of your width*/
+ background-color: white;
+ border-color: #a2a2a2;
+ border-style: solid;
+ border-width: thin;
+ font-family: "Open Sans", sans-serif;
+ font-size: medium;
+ font-weight: 400;
+ color: #444; }
+ .igv-user-feedback div:first-child {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ width: 100%;
+ height: 32px;
+ border-bottom-color: #a2a2a2;
+ border-bottom-style: solid;
+ border-bottom-width: thin;
+ background-color: white; }
+ .igv-user-feedback div:first-child i {
+ font-size: 20px; }
+ .igv-user-feedback div:first-child i:first-child {
+ position: absolute;
+ top: 0;
+ left: 0;
+ padding: 8px;
+ color: red; }
+ .igv-user-feedback div:first-child i:last-child {
+ position: absolute;
+ top: 0;
+ right: 0;
+ padding: 8px;
+ cursor: pointer;
+ color: grey; }
+ .igv-user-feedback div:first-child i:last-child:hover,
+ .igv-user-feedback div:first-child i:last-child:focus,
+ .igv-user-feedback div:first-child i:last-child:active {
+ color: #333333; }
+ .igv-user-feedback div:last-child {
+ padding-left: 48px;
+ padding-top: 8px;
+ padding-right: 48px;
+ padding-bottom: 8px;
+ position: absolute;
+ top: 33px;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: white; }
+
+.igv-dialog-label-centered {
+ text-align: center; }
+
+.igv-grid-container-dialog {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 300px;
+ border-color: #7F7F7F;
+ border-radius: 4px;
+ border-style: solid;
+ border-width: thin;
+ z-index: 1999;
+ background-color: white; }
+
+.igv-grid-container-alert-dialog {
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 45%;
+ margin-left: auto;
+ margin-right: auto;
+ /*max-width: 740px;*/
+ max-width: 300px;
+ border-color: #7F7F7F;
+ border-radius: 4px;
+ border-style: solid;
+ border-width: thin;
+ z-index: 1999;
+ background-color: white; }
+
+.igv-grid-header {
+ position: relative;
+ top: 0;
+ left: 0;
+ height: 24px;
+ cursor: move;
+ border-color: #c4c4c4;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-style: solid;
+ border-width: thin;
+ background-color: #c4c4c4; }
+ .igv-grid-header div {
+ position: relative;
+ padding-left: 4px; }
+ .igv-grid-header div i {
+ cursor: pointer; }
+
+.igv-grid-header-blurb {
+ margin-top: 4px;
+ text-align: center;
+ vertical-align: middle;
+ font-family: "Open Sans", sans-serif;
+ font-size: medium;
+ font-weight: 200; }
+
+.igv-grid-dividing-line {
+ display: block;
+ height: 1px;
+ border: 0;
+ border-top: 1px solid #c4c4c4;
+ margin: 8px; }
+
+.igv-grid-rect {
+ border-radius: 4px;
+ border-style: solid;
+ border-width: thin;
+ border-color: white;
+ padding-left: 4px;
+ padding-right: 4px;
+ background-color: white; }
+
+.igv-grid-rect-hidden {
+ display: none; }
+
+.igv-grid-colorpicker {
+ height: 32px; }
+
+.igv-grid-colorpicker:after {
+ content: "";
+ display: table;
+ clear: both; }
+
+.igv-grid-colorpicker-user-error {
+ height: 16px;
+ color: #55aeff;
+ font-family: "Open Sans", sans-serif;
+ font-size: small;
+ font-weight: 400;
+ background-color: white; }
+
+.igv-grid-dialog {
+ height: 40px; }
+
+.igv-col {
+ height: 100%;
+ padding: 2px; }
+
+.igv-data-range-input-label {
+ /*padding-top: 8px;*/
+ padding-left: 8px;
+ text-align: right;
+ font-family: "Open Sans", sans-serif;
+ font-size: medium;
+ font-weight: 200;
+ color: #575757; }
+
+.igv-data-range-input {
+ outline: none;
+ border-style: solid;
+ border-radius: 4px;
+ border-width: thin;
+ border-color: #7F7F7F;
+ width: 100%;
+ padding-left: 8px;
+ vertical-align: middle;
+ text-align: left;
+ font-family: "Open Sans", sans-serif;
+ font-size: medium;
+ font-weight: 200;
+ color: #575757; }
+
+.igv-user-input-colorpicker {
+ outline: none;
+ border-style: solid;
+ border-radius: 4px;
+ border-width: thin;
+ border-color: #7F7F7F;
+ width: 100%;
+ margin-top: 2px;
+ font-family: "Open Sans", sans-serif;
+ font-size: medium;
+ font-weight: 200;
+ color: #575757; }
+
+.igv-user-input-dialog {
+ outline: none;
+ border-style: solid;
+ border-radius: 4px;
+ border-width: thin;
+ border-color: #7F7F7F;
+ width: 100%;
+ padding-left: 8px;
+ vertical-align: middle;
+ text-align: left;
+ font-family: "Open Sans", sans-serif;
+ font-size: medium;
+ font-weight: 200;
+ color: #575757; }
+
+.igv-alert-dialog-text {
+ padding-top: 8px;
+ padding-left: 8px;
+ word-wrap: break-word;
+ text-align: center;
+ font-family: "Open Sans", sans-serif;
+ font-size: 14px;
+ font-weight: 200;
+ color: #575757; }
+
+.igv-user-input-label {
+ padding-top: 8px;
+ padding-left: 8px;
+ text-align: left;
+ font-family: "Open Sans", sans-serif;
+ font-size: medium;
+ font-weight: 200;
+ color: #575757; }
+
+.igv-col-label {
+ padding-left: 8px;
+ padding-top: 6px;
+ font-family: "Open Sans", sans-serif;
+ font-size: medium;
+ font-weight: 200;
+ color: #575757; }
+
+.igv-col-filler {
+ width: 100%;
+ height: 100%;
+ border-color: white;
+ border-style: solid;
+ border-width: thin;
+ border-radius: 4px; }
+
+.igv-col-filler:hover,
+.igv-col-filler:focus,
+.igv-col-filler:active {
+ border-width: medium;
+ border-color: #474747; }
+
+.igv-col-filler-no-color {
+ width: 100%;
+ height: 100%;
+ border-color: white;
+ border-style: solid;
+ border-width: thin;
+ border-radius: 4px; }
+
+.igv-col-filler-user-color {
+ width: 100%;
+ height: 100%;
+ border-color: white;
+ border-style: solid;
+ border-width: thin;
+ border-radius: 4px; }
+
+/* ok button */
+.igv-col-filler-ok-button {
+ margin-left: 8px;
+ padding-left: 1px;
+ padding-top: 5px;
+ width: 90%;
+ height: 90%;
+ border-color: white;
+ border-style: solid;
+ border-width: thin;
+ border-radius: 4px;
+ color: white;
+ text-align: center;
+ vertical-align: middle;
+ font-family: "Open Sans", sans-serif;
+ font-size: medium;
+ font-weight: 200;
+ background-color: #5ea4e0; }
+
+.igv-col-filler-ok-button:hover,
+.igv-col-filler-ok-button:focus,
+.igv-col-filler-ok-button:active {
+ background-color: #5079a8; }
+
+/* cancel button */
+.igv-col-filler-cancel-button {
+ margin-left: 8px;
+ padding-left: 1px;
+ padding-top: 5px;
+ width: 90%;
+ height: 90%;
+ border-color: white;
+ border-style: solid;
+ border-width: thin;
+ border-radius: 4px;
+ color: white;
+ text-align: center;
+ vertical-align: middle;
+ font-family: "Open Sans", sans-serif;
+ font-size: medium;
+ font-weight: 200;
+ background-color: #c4c4c4; }
+
+.igv-col-filler-cancel-button:hover,
+.igv-col-filler-cancel-button:focus,
+.igv-col-filler-cancel-button:active {
+ background-color: #7e7e7e; }
+
+/* 3 columns */
+.igv-col-1-3 {
+ width: 33.33333%; }
+
+.igv-col-2-3 {
+ width: 66.66667%; }
+
+/* 4 columns */
+.igv-col-1-4 {
+ width: 25%; }
+
+.igv-col-2-4 {
+ width: 50%; }
+
+.igv-col-3-4 {
+ width: 75%; }
+
+.igv-col-4-4 {
+ width: 100%; }
+
+/* 8 columns */
+.igv-col-1-8 {
+ width: 12.5%; }
+
+.igv-col-2-8 {
+ width: 25%; }
+
+.igv-col-3-8 {
+ width: 37.5%; }
+
+.igv-col-4-8 {
+ width: 50%; }
+
+.igv-col-5-8 {
+ width: 62.5%; }
+
+.igv-col-6-8 {
+ width: 75%; }
+
+.igv-col-7-8 {
+ width: 87.5%; }
+
+.igv-col-8-8 {
+ width: 100%; }
+
+/* end grid.css */
+.fa-check-hidden {
+ color: rgba(255, 255, 255, 0); }
+
+.validateTips {
+ border: 1px solid transparent;
+ padding: 0.3em; }
+ .validateTips fieldset {
+ border: 0; }
+
+/* pop up menu */
+.igv-popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ min-width: 128px;
+ z-index: 4096;
+ font-family: "Open Sans", sans-serif;
+ font-size: small;
+ font-weight: 400;
+ color: #444;
+ background: white;
+ border-radius: 4px;
+ border-color: #7F7F7F;
+ border-style: solid;
+ border-width: thin;
+ display: none; }
+
+.igv-popover-header {
+ position: relative;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 20px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom-color: #7F7F7F;
+ border-bottom-style: solid;
+ border-bottom-width: thin;
+ background-color: #eee; }
+ .igv-popover-header div {
+ position: absolute;
+ top: 3px;
+ right: 3px;
+ height: 100%;
+ width: 16px;
+ text-align: center;
+ line-height: 100%; }
+ .igv-popover-header div i {
+ cursor: pointer;
+ color: #444;
+ font-size: small; }
+ .igv-popover-header div:hover {
+ color: white; }
+
+.igv-popover-track-popup-content {
+ position: relative;
+ top: 0;
+ left: 0;
+ max-height: 384px;
+ overflow-x: hidden;
+ overflow-y: auto; }
+
+.igv-popover-name-value {
+ cursor: default;
+ text-wrap: none;
+ white-space: nowrap;
+ max-width: 384px; }
+
+.igv-popover-name {
+ font-weight: bold;
+ padding-right: 4px;
+ float: left; }
+
+.igv-popover-value {
+ padding-left: 4px;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ max-width: 256px;
+ display: inline-block; }
+
+.igv-spinner-container {
+ color: #3f3f3f;
+ width: 100%;
+ height: 100%;
+ text-align: center;
+ padding-top: 8px;
+ font-size: 24px;
+ z-index: 512; }
+
+.spacer10 {
+ height: 10px;
+ width: 100%;
+ font-size: 0;
+ margin: 0;
+ padding: 0;
+ border: 0;
+ display: block; }
+
+[class*='igv-col-'] {
+ float: left; }
+
+[class*='igv-'], [class*='igv-']:after, [class*='igv-']:before {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box; }
+
+.igv-cursor-ui-header {
+ margin-top: 4px;
+ width: 100%;
+ height: auto;
+ background-size: 100px 32px;
+ background-repeat: no-repeat;
+ background-position: 21px 9px; }
+
+.igv-cursor-ui-holder {
+ width: 640px;
+ margin: auto; }
+
+.igv-cursor-ui {
+ margin: auto;
+ width: 100%;
+ display: inline-block;
+ border: solid 1px grey;
+ background-color: #fff;
+ border-top: none;
+ border-bottom-left-radius: 5px;
+ border-bottom-right-radius: 5px;
+ padding: 5px 5px 5px 5px; }
+
+.igv-cursor-ui-item {
+ float: left;
+ color: grey;
+ font-weight: 400;
+ padding: 5px 8px 5px 8px; }
+
+.igv-drag-and-drop-presentation-button {
+ position: relative;
+ height: 20px;
+ min-width: 110px;
+ text-transform: capitalize;
+ float: left;
+ margin-top: 2px;
+ margin-right: 5px;
+ padding-left: 8px;
+ padding-right: 8px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ font-family: "Open Sans", sans-serif;
+ font-size: 12px;
+ font-weight: 200;
+ text-align: center;
+ vertical-align: middle;
+ color: #737373;
+ border-color: #737373;
+ background-color: #f3f3f3;
+ border-style: solid;
+ border-width: thin;
+ border-radius: 10px; }
+
+.igv-drag-and-drop-presentation-button:hover,
+.igv-drag-and-drop-presentation-button:focus,
+.igv-drag-and-drop-presentation-button:active {
+ cursor: pointer;
+ color: white;
+ border-color: #737373;
+ background-color: #737373; }
+
+.igv-drag-drop-container {
+ position: absolute;
+ top: 100px;
+ left: 25%;
+ width: 50%;
+ text-align: center;
+ margin: 0 auto;
+ padding-top: 64px;
+ padding-bottom: 8px;
+ padding-left: 16px;
+ padding-right: 16px;
+ z-index: 2000;
+ background-color: #c8dadf;
+ display: flex;
+ flex-flow: column;
+ flex-wrap: nowrap;
+ justify-content: space-around; }
+
+.igv-drag-drop-container.is-dragover {
+ background-color: rgba(200, 218, 223, 0.51); }
+
+.igv-drag-and-drop-close-container {
+ position: absolute;
+ top: 16px;
+ right: 18px;
+ text-align: center;
+ line-height: 100%;
+ cursor: pointer; }
+ .igv-drag-and-drop-close-container i.fa-times {
+ color: #92b0b3; }
+ .igv-drag-and-drop-close-container i.fa-times-circle {
+ color: #36464b; }
+
+.igv-drag-drop-surface {
+ position: relative;
+ color: #36464b;
+ font-family: 'Open Sans', sans-serif;
+ font-size: 18px;
+ font-weight: 200; }
+
+.igv-drag-drop-surface .igv-drag-drop-surface-blurb {
+ display: inline; }
+
+.igv-drag-and-drop-url-input-container {
+ position: relative;
+ width: 96%;
+ margin: 8px auto; }
+
+.igv-drag-and-drop-url-input-container > div {
+ margin-top: 14px;
+ margin-bottom: 14px; }
+
+.igv-drag-drop-ok {
+ width: 90%;
+ margin: 4px auto;
+ padding: 4px;
+ color: #36464b;
+ font-family: 'Open Sans', sans-serif;
+ font-size: 18px;
+ font-weight: 200;
+ text-align: center;
+ border-style: solid;
+ border-radius: 3px;
+ border-width: thin;
+ border-color: #36464b;
+ background-color: #c8dadf; }
+
+.igv-drag-drop-ok:hover,
+.igv-drag-drop-ok:focus,
+.igv-drag-drop-ok:active {
+ cursor: pointer;
+ color: white;
+ background-color: #36464b; }
+
+.igv-drag-drop-cancel {
+ width: 90%;
+ margin: 4px auto;
+ padding: 4px;
+ color: white;
+ font-family: 'Open Sans', sans-serif;
+ font-size: 18px;
+ font-weight: 200;
+ text-align: center;
+ border-style: solid;
+ border-radius: 3px;
+ border-width: thin;
+ border-color: #36464b;
+ background-color: #36464b; }
+
+.igv-drag-drop-cancel:hover,
+.igv-drag-drop-cancel:focus,
+.igv-drag-drop-cancel:active {
+ cursor: pointer; }
+
+.igv-drag-drop-warning {
+ position: relative;
+ width: 90%;
+ margin: 4px auto;
+ color: #373737;
+ font-family: 'Open Sans', sans-serif;
+ font-size: 18px;
+ font-weight: 400;
+ text-align: left;
+ border-style: solid;
+ border-radius: 3px;
+ border-width: thin;
+ border-color: #373737;
+ background-color: white;
+ overflow: auto; }
+ .igv-drag-drop-warning #warning-message {
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-left: 8px;
+ float: left;
+ width: 90%;
+ background-color: transparent;
+ overflow: auto; }
+ .igv-drag-drop-warning #warning-dismiss {
+ float: right;
+ color: #bfbfbf;
+ padding-top: 2px;
+ padding-right: 4px; }
+ .igv-drag-drop-warning #warning-dismiss:hover,
+ .igv-drag-drop-warning #warning-dismiss:focus,
+ .igv-drag-drop-warning #warning-dismiss:active {
+ cursor: pointer;
+ color: #373737; }
+
+.igv-drag-and-drop-url-input-feedback {
+ width: 100%;
+ color: #36464b;
+ font-family: 'Open Sans', sans-serif;
+ font-size: 18px;
+ font-weight: 200;
+ text-align: center;
+ padding-left: 4px; }
+
+.igv-drag-and-drop-url-input {
+ display: block;
+ width: 100%;
+ color: #36464b;
+ background-color: transparent;
+ font-family: 'Open Sans', sans-serif;
+ font-size: 18px;
+ font-weight: 200;
+ text-align: center;
+ padding: 4px;
+ margin: 8px;
+ border: 0;
+ border-bottom: 2px solid #36464b; }
+
+.igv-drag-and-drop-url-input:focus,
+.igv-drag-and-drop-url-input:active {
+ background: white;
+ border-bottom: transparent; }
+
+.igv-track-file-input-css {
+ width: 0.1px;
+ height: 0.1px;
+ opacity: 0;
+ overflow: hidden;
+ position: absolute;
+ z-index: -1; }
+
+.igv-track-file-input-css:hover + label strong {
+ color: #39bfd3; }
+
+.igv-drag-drop-file-input {
+ position: relative; }
+
+.igv-drag-drop-file-input label {
+ max-width: 80%;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ cursor: pointer;
+ display: inline-block;
+ overflow: hidden; }
+
+.igv-drag-drop-shim {
+ position: relative;
+ width: 100%;
+ height: 8px;
+ margin: 0 auto;
+ color: transparent;
+ background-color: transparent; }
+
+/*# sourceMappingURL=igv.css.map */
diff --git a/kbase-extension/static/ext_packages/igv/igv.js/igv.min.js b/kbase-extension/static/ext_packages/igv/igv.js/igv.min.js
new file mode 100644
index 0000000000..c5230a0a39
--- /dev/null
+++ b/kbase-extension/static/ext_packages/igv/igv.js/igv.min.js
@@ -0,0 +1,25 @@
+!function(root,factory){"function"==typeof define&&define.amd?define([],factory):"object"==typeof module&&module.exports?module.exports=factory():root.igv=factory()}(this,function(){function ZStream(){}function Inflate(){this.was=[0]}function InfBlocks(z,checkfn,w){this.hufts=new Int32Array(3*MANY),this.window=new Uint8Array(w),this.end=w,this.checkfn=checkfn,this.mode=IB_TYPE,this.reset(z,null),this.left=0,this.table=0,this.index=0,this.blens=null,this.bb=new Int32Array(1),this.tb=new Int32Array(1),this.codes=new InfCodes,this.last=0,this.bitk=0,this.bitb=0,this.read=0,this.write=0,this.check=0,this.inftree=new InfTree}function InfCodes(){}function InfTree(){}function inflate_trees_fixed(bl,bd,tl,td,z){return bl[0]=fixed_bl,bd[0]=fixed_bd,tl[0]=fixed_tl,td[0]=fixed_td,Z_OK}function arrayCopy(src,srcOffset,dest,destOffset,count){if(0!=count){if(!src)throw"Undef src";if(!dest)throw"Undef dest";0==srcOffset&&count==src.length?arrayCopy_fast(src,dest,destOffset):hasSubarray?arrayCopy_fast(src.subarray(srcOffset,srcOffset+count),dest,destOffset):1==src.BYTES_PER_ELEMENT&&count>100?arrayCopy_fast(new Uint8Array(src.buffer,src.byteOffset+srcOffset,count),dest,destOffset):arrayCopy_slow(src,srcOffset,dest,destOffset,count)}}function arrayCopy_slow(src,srcOffset,dest,destOffset,count){for(var i=0;i0&&length-1 in obj)}function winnow(elements,qualifier,not){if(jQuery.isFunction(qualifier))return jQuery.grep(elements,function(elem,i){return!!qualifier.call(elem,i,elem)!==not});if(qualifier.nodeType)return jQuery.grep(elements,function(elem){return elem===qualifier!==not});if("string"==typeof qualifier){if(risSimple.test(qualifier))return jQuery.filter(qualifier,elements,not);qualifier=jQuery.filter(qualifier,elements)}return jQuery.grep(elements,function(elem){return jQuery.inArray(elem,qualifier)>-1!==not})}function sibling(cur,dir){do cur=cur[dir];while(cur&&1!==cur.nodeType);return cur}function createOptions(options){var object={};return jQuery.each(options.match(rnotwhite)||[],function(_,flag){object[flag]=!0}),object}function detach(){document.addEventListener?(document.removeEventListener("DOMContentLoaded",completed),window.removeEventListener("load",completed)):(document.detachEvent("onreadystatechange",completed),window.detachEvent("onload",completed))}function completed(){(document.addEventListener||"load"===window.event.type||"complete"===document.readyState)&&(detach(),jQuery.ready())}function dataAttr(elem,key,data){if(void 0===data&&1===elem.nodeType){var name="data-"+key.replace(rmultiDash,"-$1").toLowerCase();if(data=elem.getAttribute(name),"string"==typeof data){try{data="true"===data||"false"!==data&&("null"===data?null:+data+""===data?+data:rbrace.test(data)?jQuery.parseJSON(data):data)}catch(e){}jQuery.data(elem,key,data)}else data=void 0}return data}function isEmptyDataObject(obj){var name;for(name in obj)if(("data"!==name||!jQuery.isEmptyObject(obj[name]))&&"toJSON"!==name)return!1;return!0}function internalData(elem,name,data,pvt){if(acceptData(elem)){var ret,thisCache,internalKey=jQuery.expando,isNode=elem.nodeType,cache=isNode?jQuery.cache:elem,id=isNode?elem[internalKey]:elem[internalKey]&&internalKey;if(id&&cache[id]&&(pvt||cache[id].data)||void 0!==data||"string"!=typeof name)return id||(id=isNode?elem[internalKey]=deletedIds.pop()||jQuery.guid++:internalKey),cache[id]||(cache[id]=isNode?{}:{toJSON:jQuery.noop}),"object"!=typeof name&&"function"!=typeof name||(pvt?cache[id]=jQuery.extend(cache[id],name):cache[id].data=jQuery.extend(cache[id].data,name)),thisCache=cache[id],pvt||(thisCache.data||(thisCache.data={}),thisCache=thisCache.data),void 0!==data&&(thisCache[jQuery.camelCase(name)]=data),"string"==typeof name?(ret=thisCache[name],null==ret&&(ret=thisCache[jQuery.camelCase(name)])):ret=thisCache,ret}}function internalRemoveData(elem,name,pvt){if(acceptData(elem)){var thisCache,i,isNode=elem.nodeType,cache=isNode?jQuery.cache:elem,id=isNode?elem[jQuery.expando]:jQuery.expando;if(cache[id]){if(name&&(thisCache=pvt?cache[id]:cache[id].data)){jQuery.isArray(name)?name=name.concat(jQuery.map(name,jQuery.camelCase)):name in thisCache?name=[name]:(name=jQuery.camelCase(name),name=name in thisCache?[name]:name.split(" ")),i=name.length;for(;i--;)delete thisCache[name[i]];if(pvt?!isEmptyDataObject(thisCache):!jQuery.isEmptyObject(thisCache))return}(pvt||(delete cache[id].data,isEmptyDataObject(cache[id])))&&(isNode?jQuery.cleanData([elem],!0):support.deleteExpando||cache!=cache.window?delete cache[id]:cache[id]=void 0)}}}function adjustCSS(elem,prop,valueParts,tween){var adjusted,scale=1,maxIterations=20,currentValue=tween?function(){return tween.cur()}:function(){return jQuery.css(elem,prop,"")},initial=currentValue(),unit=valueParts&&valueParts[3]||(jQuery.cssNumber[prop]?"":"px"),initialInUnit=(jQuery.cssNumber[prop]||"px"!==unit&&+initial)&&rcssNum.exec(jQuery.css(elem,prop));if(initialInUnit&&initialInUnit[3]!==unit){unit=unit||initialInUnit[3],valueParts=valueParts||[],initialInUnit=+initial||1;do scale=scale||".5",initialInUnit/=scale,jQuery.style(elem,prop,initialInUnit+unit);while(scale!==(scale=currentValue()/initial)&&1!==scale&&--maxIterations)}return valueParts&&(initialInUnit=+initialInUnit||+initial||0,adjusted=valueParts[1]?initialInUnit+(valueParts[1]+1)*valueParts[2]:+valueParts[2],tween&&(tween.unit=unit,tween.start=initialInUnit,tween.end=adjusted)),adjusted}function createSafeFragment(document){var list=nodeNames.split("|"),safeFrag=document.createDocumentFragment();if(safeFrag.createElement)for(;list.length;)safeFrag.createElement(list.pop());return safeFrag}function getAll(context,tag){var elems,elem,i=0,found="undefined"!=typeof context.getElementsByTagName?context.getElementsByTagName(tag||"*"):"undefined"!=typeof context.querySelectorAll?context.querySelectorAll(tag||"*"):void 0;if(!found)for(found=[],elems=context.childNodes||context;null!=(elem=elems[i]);i++)!tag||jQuery.nodeName(elem,tag)?found.push(elem):jQuery.merge(found,getAll(elem,tag));return void 0===tag||tag&&jQuery.nodeName(context,tag)?jQuery.merge([context],found):found}function setGlobalEval(elems,refElements){for(var elem,i=0;null!=(elem=elems[i]);i++)jQuery._data(elem,"globalEval",!refElements||jQuery._data(refElements[i],"globalEval"))}function fixDefaultChecked(elem){rcheckableType.test(elem.type)&&(elem.defaultChecked=elem.checked)}function buildFragment(elems,context,scripts,selection,ignored){for(var j,elem,contains,tmp,tag,tbody,wrap,l=elems.length,safe=createSafeFragment(context),nodes=[],i=0;i"!==wrap[1]||rtbody.test(elem)?0:tmp:tmp.firstChild,j=elem&&elem.childNodes.length;j--;)jQuery.nodeName(tbody=elem.childNodes[j],"tbody")&&!tbody.childNodes.length&&elem.removeChild(tbody);for(jQuery.merge(nodes,tmp.childNodes),tmp.textContent="";tmp.firstChild;)tmp.removeChild(tmp.firstChild);tmp=safe.lastChild}else nodes.push(context.createTextNode(elem));for(tmp&&safe.removeChild(tmp),support.appendChecked||jQuery.grep(getAll(nodes,"input"),fixDefaultChecked),i=0;elem=nodes[i++];)if(selection&&jQuery.inArray(elem,selection)>-1)ignored&&ignored.push(elem);else if(contains=jQuery.contains(elem.ownerDocument,elem),tmp=getAll(safe.appendChild(elem),"script"),contains&&setGlobalEval(tmp),scripts)for(j=0;elem=tmp[j++];)rscriptType.test(elem.type||"")&&scripts.push(elem);return tmp=null,safe}function returnTrue(){return!0}function returnFalse(){return!1}function safeActiveElement(){try{return document.activeElement}catch(err){}}function on(elem,types,selector,data,fn,one){var origFn,type;if("object"==typeof types){"string"!=typeof selector&&(data=data||selector,selector=void 0);for(type in types)on(elem,type,selector,data,types[type],one);return elem}if(null==data&&null==fn?(fn=selector,data=selector=void 0):null==fn&&("string"==typeof selector?(fn=data,data=void 0):(fn=data,data=selector,selector=void 0)),fn===!1)fn=returnFalse;else if(!fn)return elem;return 1===one&&(origFn=fn,fn=function(event){return jQuery().off(event),origFn.apply(this,arguments)},fn.guid=origFn.guid||(origFn.guid=jQuery.guid++)),elem.each(function(){jQuery.event.add(this,types,fn,data,selector)})}function manipulationTarget(elem,content){return jQuery.nodeName(elem,"table")&&jQuery.nodeName(11!==content.nodeType?content:content.firstChild,"tr")?elem.getElementsByTagName("tbody")[0]||elem.appendChild(elem.ownerDocument.createElement("tbody")):elem}function disableScript(elem){return elem.type=(null!==jQuery.find.attr(elem,"type"))+"/"+elem.type,elem}function restoreScript(elem){var match=rscriptTypeMasked.exec(elem.type);return match?elem.type=match[1]:elem.removeAttribute("type"),elem}function cloneCopyEvent(src,dest){if(1===dest.nodeType&&jQuery.hasData(src)){var type,i,l,oldData=jQuery._data(src),curData=jQuery._data(dest,oldData),events=oldData.events;if(events){delete curData.handle,curData.events={};for(type in events)for(i=0,l=events[type].length;i1&&"string"==typeof value&&!support.checkClone&&rchecked.test(value))return collection.each(function(index){var self=collection.eq(index);isFunction&&(args[0]=value.call(this,index,self.html())),domManip(self,args,callback,ignored)});if(l&&(fragment=buildFragment(args,collection[0].ownerDocument,!1,collection,ignored),first=fragment.firstChild,1===fragment.childNodes.length&&(fragment=first),first||ignored)){for(scripts=jQuery.map(getAll(fragment,"script"),disableScript),hasScripts=scripts.length;i")).appendTo(doc.documentElement),doc=(iframe[0].contentWindow||iframe[0].contentDocument).document,doc.write(),doc.close(),display=actualDisplay(nodeName,doc),iframe.detach()),elemdisplay[nodeName]=display),display}function addGetHookIf(conditionFn,hookFn){return{get:function(){return conditionFn()?void delete this.get:(this.get=hookFn).apply(this,arguments)}}}function vendorPropName(name){if(name in emptyStyle)return name;for(var capName=name.charAt(0).toUpperCase()+name.slice(1),i=cssPrefixes.length;i--;)if(name=cssPrefixes[i]+capName,name in emptyStyle)return name}function showHide(elements,show){for(var display,elem,hidden,values=[],index=0,length=elements.length;index=0&&j=0},isEmptyObject:function(obj){var name;for(name in obj)return!1;return!0},isPlainObject:function(obj){var key;if(!obj||"object"!==jQuery.type(obj)||obj.nodeType||jQuery.isWindow(obj))return!1;try{if(obj.constructor&&!hasOwn.call(obj,"constructor")&&!hasOwn.call(obj.constructor.prototype,"isPrototypeOf"))return!1}catch(e){return!1}if(!support.ownFirst)for(key in obj)return hasOwn.call(obj,key);for(key in obj);return void 0===key||hasOwn.call(obj,key)},type:function(obj){return null==obj?obj+"":"object"==typeof obj||"function"==typeof obj?class2type[toString.call(obj)]||"object":typeof obj},globalEval:function(data){data&&jQuery.trim(data)&&(window.execScript||function(data){window.eval.call(window,data)})(data)},camelCase:function(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase)},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase()},each:function(obj,callback){var length,i=0;if(isArrayLike(obj))for(length=obj.length;iExpr.cacheLength&&delete cache[keys.shift()],cache[key+" "]=value}var keys=[];return cache}function markFunction(fn){return fn[expando]=!0,fn}function assert(fn){var div=document.createElement("div");try{return!!fn(div)}catch(e){return!1}finally{div.parentNode&&div.parentNode.removeChild(div),div=null}}function addHandle(attrs,handler){for(var arr=attrs.split("|"),i=arr.length;i--;)Expr.attrHandle[arr[i]]=handler}function siblingCheck(a,b){var cur=b&&a,diff=cur&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||MAX_NEGATIVE)-(~a.sourceIndex||MAX_NEGATIVE);if(diff)return diff;if(cur)for(;cur=cur.nextSibling;)if(cur===b)return-1;return a?1:-1}function createInputPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return"input"===name&&elem.type===type}}function createButtonPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return("input"===name||"button"===name)&&elem.type===type}}function createPositionalPseudo(fn){return markFunction(function(argument){return argument=+argument,markFunction(function(seed,matches){for(var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;i--;)seed[j=matchIndexes[i]]&&(seed[j]=!(matches[j]=seed[j]))})})}function testContext(context){return context&&"undefined"!=typeof context.getElementsByTagName&&context}function setFilters(){}function toSelector(tokens){for(var i=0,len=tokens.length,selector="";i1?function(elem,context,xml){for(var i=matchers.length;i--;)if(!matchers[i](elem,context,xml))return!1;return!0}:matchers[0]}function multipleContexts(selector,contexts,results){for(var i=0,len=contexts.length;i-1&&(seed[temp]=!(results[temp]=elem))}}else matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut),postFinder?postFinder(null,results,matcherOut,xml):push.apply(results,matcherOut)})}function matcherFromTokens(tokens){for(var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type],implicitRelative=leadingRelative||Expr.relative[" "],i=leadingRelative?1:0,matchContext=addCombinator(function(elem){return elem===checkContext},implicitRelative,!0),matchAnyContext=addCombinator(function(elem){return indexOf(checkContext,elem)>-1},implicitRelative,!0),matchers=[function(elem,context,xml){var ret=!leadingRelative&&(xml||context!==outermostContext)||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));return checkContext=null,ret}];i1&&elementMatcher(matchers),i>1&&toSelector(tokens.slice(0,i-1).concat({value:" "===tokens[i-2].type?"*":""})).replace(rtrim,"$1"),matcher,i0,byElement=elementMatchers.length>0,superMatcher=function(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i="0",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,elems=seed||byElement&&Expr.find.TAG("*",outermost),dirrunsUnique=dirruns+=null==contextBackup?1:Math.random()||.1,len=elems.length;for(outermost&&(outermostContext=context===document||context||outermost);i!==len&&null!=(elem=elems[i]);i++){if(byElement&&elem){for(j=0,context||elem.ownerDocument===document||(setDocument(elem),xml=!documentIsHTML);matcher=elementMatchers[j++];)if(matcher(elem,context||document,xml)){results.push(elem);break}outermost&&(dirruns=dirrunsUnique)}bySet&&((elem=!matcher&&elem)&&matchedCount--,seed&&unmatched.push(elem))}if(matchedCount+=i,bySet&&i!==matchedCount){for(j=0;matcher=setMatchers[j++];)matcher(unmatched,setMatched,context,xml);if(seed){if(matchedCount>0)for(;i--;)unmatched[i]||setMatched[i]||(setMatched[i]=pop.call(results));setMatched=condense(setMatched)}push.apply(results,setMatched),outermost&&!seed&&setMatched.length>0&&matchedCount+setMatchers.length>1&&Sizzle.uniqueSort(results)}return outermost&&(dirruns=dirrunsUnique,outermostContext=contextBackup),unmatched};return bySet?markFunction(superMatcher):superMatcher}var i,support,Expr,getText,isXML,tokenize,compile,select,outermostContext,sortInput,hasDuplicate,setDocument,document,docElem,documentIsHTML,rbuggyQSA,rbuggyMatches,matches,contains,expando="sizzle"+1*new Date,preferredDoc=window.document,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),sortOrder=function(a,b){return a===b&&(hasDuplicate=!0),0},MAX_NEGATIVE=1<<31,hasOwn={}.hasOwnProperty,arr=[],pop=arr.pop,push_native=arr.push,push=arr.push,slice=arr.slice,indexOf=function(list,elem){for(var i=0,len=list.length;i+~]|"+whitespace+")"+whitespace+"*"),rattributeQuotes=new RegExp("="+whitespace+"*([^\\]'\"]*?)"+whitespace+"*\\]","g"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp("^"+identifier+"$"),matchExpr={ID:new RegExp("^#("+identifier+")"),CLASS:new RegExp("^\\.("+identifier+")"),TAG:new RegExp("^("+identifier+"|[*])"),ATTR:new RegExp("^"+attributes),PSEUDO:new RegExp("^"+pseudos),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+whitespace+"*(even|odd|(([+-]|)(\\d*)n|)"+whitespace+"*(?:([+-]|)"+whitespace+"*(\\d+)|))"+whitespace+"*\\)|)","i"),bool:new RegExp("^(?:"+booleans+")$","i"),needsContext:new RegExp("^"+whitespace+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+whitespace+"*((?:-\\d)?\\d*)"+whitespace+"*\\)|)(?=[^-]|$)","i")},rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\d$/i,rnative=/^[^{]+\{\s*\[native \w/,rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,rsibling=/[+~]/,rescape=/'|\\/g,runescape=new RegExp("\\\\([\\da-f]{1,6}"+whitespace+"?|("+whitespace+")|.)","ig"),funescape=function(_,escaped,escapedWhitespace){var high="0x"+escaped-65536;return high!==high||escapedWhitespace?escaped:high<0?String.fromCharCode(high+65536):String.fromCharCode(high>>10|55296,1023&high|56320)},unloadHandler=function(){setDocument()};try{push.apply(arr=slice.call(preferredDoc.childNodes),preferredDoc.childNodes),arr[preferredDoc.childNodes.length].nodeType}catch(e){push={apply:arr.length?function(target,els){push_native.apply(target,slice.call(els))}:function(target,els){for(var j=target.length,i=0;target[j++]=els[i++];);target.length=j-1}}}support=Sizzle.support={},isXML=Sizzle.isXML=function(elem){var documentElement=elem&&(elem.ownerDocument||elem).documentElement;return!!documentElement&&"HTML"!==documentElement.nodeName},setDocument=Sizzle.setDocument=function(node){var hasCompare,parent,doc=node?node.ownerDocument||node:preferredDoc;return doc!==document&&9===doc.nodeType&&doc.documentElement?(document=doc,docElem=document.documentElement,documentIsHTML=!isXML(document),(parent=document.defaultView)&&parent.top!==parent&&(parent.addEventListener?parent.addEventListener("unload",unloadHandler,!1):parent.attachEvent&&parent.attachEvent("onunload",unloadHandler)),support.attributes=assert(function(div){return div.className="i",!div.getAttribute("className")}),support.getElementsByTagName=assert(function(div){return div.appendChild(document.createComment("")),!div.getElementsByTagName("*").length}),support.getElementsByClassName=rnative.test(document.getElementsByClassName),support.getById=assert(function(div){return docElem.appendChild(div).id=expando,!document.getElementsByName||!document.getElementsByName(expando).length}),support.getById?(Expr.find.ID=function(id,context){if("undefined"!=typeof context.getElementById&&documentIsHTML){var m=context.getElementById(id);return m?[m]:[]}},Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute("id")===attrId}}):(delete Expr.find.ID,Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node="undefined"!=typeof elem.getAttributeNode&&elem.getAttributeNode("id");return node&&node.value===attrId}}),Expr.find.TAG=support.getElementsByTagName?function(tag,context){return"undefined"!=typeof context.getElementsByTagName?context.getElementsByTagName(tag):support.qsa?context.querySelectorAll(tag):void 0}:function(tag,context){var elem,tmp=[],i=0,results=context.getElementsByTagName(tag);if("*"===tag){for(;elem=results[i++];)1===elem.nodeType&&tmp.push(elem);return tmp}return results},Expr.find.CLASS=support.getElementsByClassName&&function(className,context){if("undefined"!=typeof context.getElementsByClassName&&documentIsHTML)return context.getElementsByClassName(className)},rbuggyMatches=[],rbuggyQSA=[],(support.qsa=rnative.test(document.querySelectorAll))&&(assert(function(div){docElem.appendChild(div).innerHTML="",div.querySelectorAll("[msallowcapture^='']").length&&rbuggyQSA.push("[*^$]="+whitespace+"*(?:''|\"\")"),div.querySelectorAll("[selected]").length||rbuggyQSA.push("\\["+whitespace+"*(?:value|"+booleans+")"),div.querySelectorAll("[id~="+expando+"-]").length||rbuggyQSA.push("~="),div.querySelectorAll(":checked").length||rbuggyQSA.push(":checked"),div.querySelectorAll("a#"+expando+"+*").length||rbuggyQSA.push(".#.+[+~]")}),assert(function(div){var input=document.createElement("input");input.setAttribute("type","hidden"),div.appendChild(input).setAttribute("name","D"),div.querySelectorAll("[name=d]").length&&rbuggyQSA.push("name"+whitespace+"*[*^$|!~]?="),div.querySelectorAll(":enabled").length||rbuggyQSA.push(":enabled",":disabled"),div.querySelectorAll("*,:x"),rbuggyQSA.push(",.*:")})),(support.matchesSelector=rnative.test(matches=docElem.matches||docElem.webkitMatchesSelector||docElem.mozMatchesSelector||docElem.oMatchesSelector||docElem.msMatchesSelector))&&assert(function(div){support.disconnectedMatch=matches.call(div,"div"),matches.call(div,"[s!='']:x"),rbuggyMatches.push("!=",pseudos)}),rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|")),rbuggyMatches=rbuggyMatches.length&&new RegExp(rbuggyMatches.join("|")),hasCompare=rnative.test(docElem.compareDocumentPosition),contains=hasCompare||rnative.test(docElem.contains)?function(a,b){var adown=9===a.nodeType?a.documentElement:a,bup=b&&b.parentNode;return a===bup||!(!bup||1!==bup.nodeType||!(adown.contains?adown.contains(bup):a.compareDocumentPosition&&16&a.compareDocumentPosition(bup)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1},sortOrder=hasCompare?function(a,b){if(a===b)return hasDuplicate=!0,0;var compare=!a.compareDocumentPosition-!b.compareDocumentPosition;return compare?compare:(compare=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&compare||!support.sortDetached&&b.compareDocumentPosition(a)===compare?a===document||a.ownerDocument===preferredDoc&&contains(preferredDoc,a)?-1:b===document||b.ownerDocument===preferredDoc&&contains(preferredDoc,b)?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0:4&compare?-1:1)}:function(a,b){if(a===b)return hasDuplicate=!0,0;var cur,i=0,aup=a.parentNode,bup=b.parentNode,ap=[a],bp=[b];if(!aup||!bup)return a===document?-1:b===document?1:aup?-1:bup?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0;if(aup===bup)return siblingCheck(a,b);for(cur=a;cur=cur.parentNode;)ap.unshift(cur);for(cur=b;cur=cur.parentNode;)bp.unshift(cur);for(;ap[i]===bp[i];)i++;return i?siblingCheck(ap[i],bp[i]):ap[i]===preferredDoc?-1:bp[i]===preferredDoc?1:0},document):document},Sizzle.matches=function(expr,elements){return Sizzle(expr,null,null,elements)},Sizzle.matchesSelector=function(elem,expr){if((elem.ownerDocument||elem)!==document&&setDocument(elem),expr=expr.replace(rattributeQuotes,"='$1']"),support.matchesSelector&&documentIsHTML&&!compilerCache[expr+" "]&&(!rbuggyMatches||!rbuggyMatches.test(expr))&&(!rbuggyQSA||!rbuggyQSA.test(expr)))try{var ret=matches.call(elem,expr);if(ret||support.disconnectedMatch||elem.document&&11!==elem.document.nodeType)return ret}catch(e){}return Sizzle(expr,document,null,[elem]).length>0},Sizzle.contains=function(context,elem){return(context.ownerDocument||context)!==document&&setDocument(context),contains(context,elem)},Sizzle.attr=function(elem,name){(elem.ownerDocument||elem)!==document&&setDocument(elem);var fn=Expr.attrHandle[name.toLowerCase()],val=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):void 0;return void 0!==val?val:support.attributes||!documentIsHTML?elem.getAttribute(name):(val=elem.getAttributeNode(name))&&val.specified?val.value:null},Sizzle.error=function(msg){throw new Error("Syntax error, unrecognized expression: "+msg)},Sizzle.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;if(hasDuplicate=!support.detectDuplicates,sortInput=!support.sortStable&&results.slice(0),results.sort(sortOrder),hasDuplicate){for(;elem=results[i++];)elem===results[i]&&(j=duplicates.push(i));for(;j--;)results.splice(duplicates[j],1)}return sortInput=null,results},getText=Sizzle.getText=function(elem){var node,ret="",i=0,nodeType=elem.nodeType;if(nodeType){if(1===nodeType||9===nodeType||11===nodeType){if("string"==typeof elem.textContent)return elem.textContent;for(elem=elem.firstChild;elem;elem=elem.nextSibling)ret+=getText(elem)}else if(3===nodeType||4===nodeType)return elem.nodeValue}else for(;node=elem[i++];)ret+=getText(node);return ret},Expr=Sizzle.selectors={cacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(match){return match[1]=match[1].replace(runescape,funescape),match[3]=(match[3]||match[4]||match[5]||"").replace(runescape,funescape),"~="===match[2]&&(match[3]=" "+match[3]+" "),match.slice(0,4)},CHILD:function(match){return match[1]=match[1].toLowerCase(),"nth"===match[1].slice(0,3)?(match[3]||Sizzle.error(match[0]),match[4]=+(match[4]?match[5]+(match[6]||1):2*("even"===match[3]||"odd"===match[3])),match[5]=+(match[7]+match[8]||"odd"===match[3])):match[3]&&Sizzle.error(match[0]),match},PSEUDO:function(match){var excess,unquoted=!match[6]&&match[2];return matchExpr.CHILD.test(match[0])?null:(match[3]?match[2]=match[4]||match[5]||"":unquoted&&rpseudo.test(unquoted)&&(excess=tokenize(unquoted,!0))&&(excess=unquoted.indexOf(")",unquoted.length-excess)-unquoted.length)&&(match[0]=match[0].slice(0,excess),match[2]=unquoted.slice(0,excess)),match.slice(0,3))}},filter:{TAG:function(nodeNameSelector){var nodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return"*"===nodeNameSelector?function(){return!0}:function(elem){return elem.nodeName&&elem.nodeName.toLowerCase()===nodeName}},CLASS:function(className){var pattern=classCache[className+" "];return pattern||(pattern=new RegExp("(^|"+whitespace+")"+className+"("+whitespace+"|$)"))&&classCache(className,function(elem){return pattern.test("string"==typeof elem.className&&elem.className||"undefined"!=typeof elem.getAttribute&&elem.getAttribute("class")||"")})},ATTR:function(name,operator,check){return function(elem){var result=Sizzle.attr(elem,name);return null==result?"!="===operator:!operator||(result+="","="===operator?result===check:"!="===operator?result!==check:"^="===operator?check&&0===result.indexOf(check):"*="===operator?check&&result.indexOf(check)>-1:"$="===operator?check&&result.slice(-check.length)===check:"~="===operator?(" "+result.replace(rwhitespace," ")+" ").indexOf(check)>-1:"|="===operator&&(result===check||result.slice(0,check.length+1)===check+"-"))}},CHILD:function(type,what,argument,first,last){var simple="nth"!==type.slice(0,3),forward="last"!==type.slice(-4),ofType="of-type"===what;return 1===first&&0===last?function(elem){return!!elem.parentNode}:function(elem,context,xml){var cache,uniqueCache,outerCache,node,nodeIndex,start,dir=simple!==forward?"nextSibling":"previousSibling",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType,diff=!1;if(parent){if(simple){for(;dir;){for(node=elem;node=node[dir];)if(ofType?node.nodeName.toLowerCase()===name:1===node.nodeType)return!1;start=dir="only"===type&&!start&&"nextSibling"}return!0}if(start=[forward?parent.firstChild:parent.lastChild],forward&&useCache){for(node=parent,outerCache=node[expando]||(node[expando]={}),uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={}),cache=uniqueCache[type]||[],nodeIndex=cache[0]===dirruns&&cache[1],diff=nodeIndex&&cache[2],node=nodeIndex&&parent.childNodes[nodeIndex];node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop();)if(1===node.nodeType&&++diff&&node===elem){uniqueCache[type]=[dirruns,nodeIndex,diff];break}}else if(useCache&&(node=elem,outerCache=node[expando]||(node[expando]={}),uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={}),cache=uniqueCache[type]||[],nodeIndex=cache[0]===dirruns&&cache[1],diff=nodeIndex),diff===!1)for(;(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop())&&((ofType?node.nodeName.toLowerCase()!==name:1!==node.nodeType)||!++diff||(useCache&&(outerCache=node[expando]||(node[expando]={}),uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={}),uniqueCache[type]=[dirruns,diff]),node!==elem)););return diff-=last,diff===first||diff%first===0&&diff/first>=0}}},PSEUDO:function(pseudo,argument){var args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||Sizzle.error("unsupported pseudo: "+pseudo);return fn[expando]?fn(argument):fn.length>1?(args=[pseudo,pseudo,"",argument],Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())?markFunction(function(seed,matches){for(var idx,matched=fn(seed,argument),i=matched.length;i--;)idx=indexOf(seed,matched[i]),seed[idx]=!(matches[idx]=matched[i])}):function(elem){return fn(elem,0,args)}):fn}},pseudos:{not:markFunction(function(selector){var input=[],results=[],matcher=compile(selector.replace(rtrim,"$1"));return matcher[expando]?markFunction(function(seed,matches,context,xml){for(var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;i--;)(elem=unmatched[i])&&(seed[i]=!(matches[i]=elem))}):function(elem,context,xml){return input[0]=elem,matcher(input,null,xml,results),input[0]=null,!results.pop()}}),has:markFunction(function(selector){return function(elem){return Sizzle(selector,elem).length>0}}),contains:markFunction(function(text){return text=text.replace(runescape,funescape),function(elem){return(elem.textContent||elem.innerText||getText(elem)).indexOf(text)>-1}}),lang:markFunction(function(lang){return ridentifier.test(lang||"")||Sizzle.error("unsupported lang: "+lang),lang=lang.replace(runescape,funescape).toLowerCase(),function(elem){var elemLang;do if(elemLang=documentIsHTML?elem.lang:elem.getAttribute("xml:lang")||elem.getAttribute("lang"))return elemLang=elemLang.toLowerCase(),elemLang===lang||0===elemLang.indexOf(lang+"-");while((elem=elem.parentNode)&&1===elem.nodeType);return!1}}),target:function(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id},root:function(elem){return elem===docElem},focus:function(elem){return elem===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(elem.type||elem.href||~elem.tabIndex)},enabled:function(elem){return elem.disabled===!1},disabled:function(elem){return elem.disabled===!0},checked:function(elem){var nodeName=elem.nodeName.toLowerCase();return"input"===nodeName&&!!elem.checked||"option"===nodeName&&!!elem.selected},selected:function(elem){return elem.parentNode&&elem.parentNode.selectedIndex,elem.selected===!0},empty:function(elem){for(elem=elem.firstChild;elem;elem=elem.nextSibling)if(elem.nodeType<6)return!1;return!0},parent:function(elem){return!Expr.pseudos.empty(elem)},header:function(elem){return rheader.test(elem.nodeName)},input:function(elem){return rinputs.test(elem.nodeName)},button:function(elem){var name=elem.nodeName.toLowerCase();return"input"===name&&"button"===elem.type||"button"===name},text:function(elem){var attr;return"input"===elem.nodeName.toLowerCase()&&"text"===elem.type&&(null==(attr=elem.getAttribute("type"))||"text"===attr.toLowerCase())},first:createPositionalPseudo(function(){return[0]}),last:createPositionalPseudo(function(matchIndexes,length){return[length-1]}),eq:createPositionalPseudo(function(matchIndexes,length,argument){return[argument<0?argument+length:argument]}),even:createPositionalPseudo(function(matchIndexes,length){for(var i=0;i=0;)matchIndexes.push(i);return matchIndexes}),gt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;++i2&&"ID"===(token=tokens[0]).type&&support.getById&&9===context.nodeType&&documentIsHTML&&Expr.relative[tokens[1].type]){if(context=(Expr.find.ID(token.matches[0].replace(runescape,funescape),context)||[])[0],!context)return results;compiled&&(context=context.parentNode),selector=selector.slice(tokens.shift().value.length)}for(i=matchExpr.needsContext.test(selector)?0:tokens.length;i--&&(token=tokens[i],!Expr.relative[type=token.type]);)if((find=Expr.find[type])&&(seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context))){if(tokens.splice(i,1),selector=seed.length&&toSelector(tokens),!selector)return push.apply(results,seed),results;break}}return(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,!context||rsibling.test(selector)&&testContext(context.parentNode)||context),results},support.sortStable=expando.split("").sort(sortOrder).join("")===expando,support.detectDuplicates=!!hasDuplicate,setDocument(),support.sortDetached=assert(function(div1){return 1&div1.compareDocumentPosition(document.createElement("div"))}),assert(function(div){return div.innerHTML="","#"===div.firstChild.getAttribute("href")})||addHandle("type|href|height|width",function(elem,name,isXML){if(!isXML)return elem.getAttribute(name,"type"===name.toLowerCase()?1:2)}),support.attributes&&assert(function(div){return div.innerHTML="",div.firstChild.setAttribute("value",""),""===div.firstChild.getAttribute("value")})||addHandle("value",function(elem,name,isXML){if(!isXML&&"input"===elem.nodeName.toLowerCase())return elem.defaultValue}),assert(function(div){return null==div.getAttribute("disabled")})||addHandle(booleans,function(elem,name,isXML){var val;if(!isXML)return elem[name]===!0?name.toLowerCase():(val=elem.getAttributeNode(name))&&val.specified?val.value:null}),Sizzle}(window);jQuery.find=Sizzle,jQuery.expr=Sizzle.selectors,jQuery.expr[":"]=jQuery.expr.pseudos,jQuery.uniqueSort=jQuery.unique=Sizzle.uniqueSort,jQuery.text=Sizzle.getText,jQuery.isXMLDoc=Sizzle.isXML,jQuery.contains=Sizzle.contains;var dir=function(elem,dir,until){for(var matched=[],truncate=void 0!==until;(elem=elem[dir])&&9!==elem.nodeType;)if(1===elem.nodeType){if(truncate&&jQuery(elem).is(until))break;matched.push(elem)}return matched},siblings=function(n,elem){for(var matched=[];n;n=n.nextSibling)1===n.nodeType&&n!==elem&&matched.push(n);return matched},rneedsContext=jQuery.expr.match.needsContext,rsingleTag=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,risSimple=/^.[^:#\[\.,]*$/;jQuery.filter=function(expr,elems,not){var elem=elems[0];return not&&(expr=":not("+expr+")"),1===elems.length&&1===elem.nodeType?jQuery.find.matchesSelector(elem,expr)?[elem]:[]:jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return 1===elem.nodeType}))},jQuery.fn.extend({find:function(selector){var i,ret=[],self=this,len=self.length;if("string"!=typeof selector)return this.pushStack(jQuery(selector).filter(function(){for(i=0;i1?jQuery.unique(ret):ret),ret.selector=this.selector?this.selector+" "+selector:selector,ret},filter:function(selector){return this.pushStack(winnow(this,selector||[],!1))},not:function(selector){return this.pushStack(winnow(this,selector||[],!0))},is:function(selector){return!!winnow(this,"string"==typeof selector&&rneedsContext.test(selector)?jQuery(selector):selector||[],!1).length}});var rootjQuery,rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,init=jQuery.fn.init=function(selector,context,root){var match,elem;if(!selector)return this;if(root=root||rootjQuery,"string"==typeof selector){if(match="<"===selector.charAt(0)&&">"===selector.charAt(selector.length-1)&&selector.length>=3?[null,selector,null]:rquickExpr.exec(selector),!match||!match[1]&&context)return!context||context.jquery?(context||root).find(selector):this.constructor(context).find(selector);if(match[1]){if(context=context instanceof jQuery?context[0]:context,jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,!0)),rsingleTag.test(match[1])&&jQuery.isPlainObject(context))for(match in context)jQuery.isFunction(this[match])?this[match](context[match]):this.attr(match,context[match]);return this}if(elem=document.getElementById(match[2]),elem&&elem.parentNode){if(elem.id!==match[2])return rootjQuery.find(selector);
+this.length=1,this[0]=elem}return this.context=document,this.selector=selector,this}return selector.nodeType?(this.context=this[0]=selector,this.length=1,this):jQuery.isFunction(selector)?"undefined"!=typeof root.ready?root.ready(selector):selector(jQuery):(void 0!==selector.selector&&(this.selector=selector.selector,this.context=selector.context),jQuery.makeArray(selector,this))};init.prototype=jQuery.fn,rootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,guaranteedUnique={children:!0,contents:!0,next:!0,prev:!0};jQuery.fn.extend({has:function(target){var i,targets=jQuery(target,this),len=targets.length;return this.filter(function(){for(i=0;i-1:1===cur.nodeType&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break}return this.pushStack(matched.length>1?jQuery.uniqueSort(matched):matched)},index:function(elem){return elem?"string"==typeof elem?jQuery.inArray(this[0],jQuery(elem)):jQuery.inArray(elem.jquery?elem[0]:elem,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(selector,context){return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(),jQuery(selector,context))))},addBack:function(selector){return this.add(null==selector?this.prevObject:this.prevObject.filter(selector))}}),jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&11!==parent.nodeType?parent:null},parents:function(elem){return dir(elem,"parentNode")},parentsUntil:function(elem,i,until){return dir(elem,"parentNode",until)},next:function(elem){return sibling(elem,"nextSibling")},prev:function(elem){return sibling(elem,"previousSibling")},nextAll:function(elem){return dir(elem,"nextSibling")},prevAll:function(elem){return dir(elem,"previousSibling")},nextUntil:function(elem,i,until){return dir(elem,"nextSibling",until)},prevUntil:function(elem,i,until){return dir(elem,"previousSibling",until)},siblings:function(elem){return siblings((elem.parentNode||{}).firstChild,elem)},children:function(elem){return siblings(elem.firstChild)},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.merge([],elem.childNodes)}},function(name,fn){jQuery.fn[name]=function(until,selector){var ret=jQuery.map(this,fn,until);return"Until"!==name.slice(-5)&&(selector=until),selector&&"string"==typeof selector&&(ret=jQuery.filter(selector,ret)),this.length>1&&(guaranteedUnique[name]||(ret=jQuery.uniqueSort(ret)),rparentsprev.test(name)&&(ret=ret.reverse())),this.pushStack(ret)}});var rnotwhite=/\S+/g;jQuery.Callbacks=function(options){options="string"==typeof options?createOptions(options):jQuery.extend({},options);var firing,memory,fired,locked,list=[],queue=[],firingIndex=-1,fire=function(){for(locked=options.once,fired=firing=!0;queue.length;firingIndex=-1)for(memory=queue.shift();++firingIndex-1;)list.splice(index,1),index<=firingIndex&&firingIndex--}),this},has:function(fn){return fn?jQuery.inArray(fn,list)>-1:list.length>0},empty:function(){return list&&(list=[]),this},disable:function(){return locked=queue=[],list=memory="",this},disabled:function(){return!list},lock:function(){return locked=!0,memory||self.disable(),this},locked:function(){return!!locked},fireWith:function(context,args){return locked||(args=args||[],args=[context,args.slice?args.slice():args],queue.push(args),firing||fire()),this},fire:function(){return self.fireWith(this,arguments),this},fired:function(){return!!fired}};return self},jQuery.extend({Deferred:function(func){var tuples=[["resolve","done",jQuery.Callbacks("once memory"),"resolved"],["reject","fail",jQuery.Callbacks("once memory"),"rejected"],["notify","progress",jQuery.Callbacks("memory")]],state="pending",promise={state:function(){return state},always:function(){return deferred.done(arguments).fail(arguments),this},then:function(){var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(i,tuple){var fn=jQuery.isFunction(fns[i])&&fns[i];deferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);returned&&jQuery.isFunction(returned.promise)?returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject):newDefer[tuple[0]+"With"](this===promise?newDefer.promise():this,fn?[returned]:arguments)})}),fns=null}).promise()},promise:function(obj){return null!=obj?jQuery.extend(obj,promise):promise}},deferred={};return promise.pipe=promise.then,jQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[3];promise[tuple[1]]=list.add,stateString&&list.add(function(){state=stateString},tuples[1^i][2].disable,tuples[2][2].lock),deferred[tuple[0]]=function(){return deferred[tuple[0]+"With"](this===deferred?promise:this,arguments),this},deferred[tuple[0]+"With"]=list.fireWith}),promise.promise(deferred),func&&func.call(deferred,deferred),deferred},when:function(subordinate){var progressValues,progressContexts,resolveContexts,i=0,resolveValues=slice.call(arguments),length=resolveValues.length,remaining=1!==length||subordinate&&jQuery.isFunction(subordinate.promise)?length:0,deferred=1===remaining?subordinate:jQuery.Deferred(),updateFunc=function(i,contexts,values){return function(value){contexts[i]=this,values[i]=arguments.length>1?slice.call(arguments):value,values===progressValues?deferred.notifyWith(contexts,values):--remaining||deferred.resolveWith(contexts,values)}};if(length>1)for(progressValues=new Array(length),progressContexts=new Array(length),resolveContexts=new Array(length);i0||(readyList.resolveWith(document,[jQuery]),jQuery.fn.triggerHandler&&(jQuery(document).triggerHandler("ready"),jQuery(document).off("ready"))))}}),jQuery.ready.promise=function(obj){if(!readyList)if(readyList=jQuery.Deferred(),"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll)window.setTimeout(jQuery.ready);else if(document.addEventListener)document.addEventListener("DOMContentLoaded",completed),window.addEventListener("load",completed);else{document.attachEvent("onreadystatechange",completed),window.attachEvent("onload",completed);var top=!1;try{top=null==window.frameElement&&document.documentElement}catch(e){}top&&top.doScroll&&!function doScrollCheck(){if(!jQuery.isReady){try{top.doScroll("left")}catch(e){return window.setTimeout(doScrollCheck,50)}detach(),jQuery.ready()}}()}return readyList.promise(obj)},jQuery.ready.promise();var i;for(i in jQuery(support))break;support.ownFirst="0"===i,support.inlineBlockNeedsLayout=!1,jQuery(function(){var val,div,body,container;body=document.getElementsByTagName("body")[0],body&&body.style&&(div=document.createElement("div"),container=document.createElement("div"),container.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",body.appendChild(container).appendChild(div),"undefined"!=typeof div.style.zoom&&(div.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",support.inlineBlockNeedsLayout=val=3===div.offsetWidth,val&&(body.style.zoom=1)),body.removeChild(container))}),function(){var div=document.createElement("div");support.deleteExpando=!0;try{delete div.test}catch(e){support.deleteExpando=!1}div=null}();var acceptData=function(elem){var noData=jQuery.noData[(elem.nodeName+" ").toLowerCase()],nodeType=+elem.nodeType||1;return(1===nodeType||9===nodeType)&&(!noData||noData!==!0&&elem.getAttribute("classid")===noData)},rbrace=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,rmultiDash=/([A-Z])/g;jQuery.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(elem){return elem=elem.nodeType?jQuery.cache[elem[jQuery.expando]]:elem[jQuery.expando],!!elem&&!isEmptyDataObject(elem)},data:function(elem,name,data){return internalData(elem,name,data)},removeData:function(elem,name){return internalRemoveData(elem,name)},_data:function(elem,name,data){return internalData(elem,name,data,!0)},_removeData:function(elem,name){return internalRemoveData(elem,name,!0)}}),jQuery.fn.extend({data:function(key,value){var i,name,data,elem=this[0],attrs=elem&&elem.attributes;if(void 0===key){if(this.length&&(data=jQuery.data(elem),1===elem.nodeType&&!jQuery._data(elem,"parsedAttrs"))){for(i=attrs.length;i--;)attrs[i]&&(name=attrs[i].name,0===name.indexOf("data-")&&(name=jQuery.camelCase(name.slice(5)),dataAttr(elem,name,data[name])));jQuery._data(elem,"parsedAttrs",!0)}return data}return"object"==typeof key?this.each(function(){jQuery.data(this,key)}):arguments.length>1?this.each(function(){jQuery.data(this,key,value)}):elem?dataAttr(elem,key,jQuery.data(elem,key)):void 0},removeData:function(key){return this.each(function(){jQuery.removeData(this,key)})}}),jQuery.extend({queue:function(elem,type,data){var queue;if(elem)return type=(type||"fx")+"queue",queue=jQuery._data(elem,type),data&&(!queue||jQuery.isArray(data)?queue=jQuery._data(elem,type,jQuery.makeArray(data)):queue.push(data)),queue||[]},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type),next=function(){jQuery.dequeue(elem,type)};"inprogress"===fn&&(fn=queue.shift(),startLength--),fn&&("fx"===type&&queue.unshift("inprogress"),delete hooks.stop,fn.call(elem,next,hooks)),!startLength&&hooks&&hooks.empty.fire()},_queueHooks:function(elem,type){var key=type+"queueHooks";return jQuery._data(elem,key)||jQuery._data(elem,key,{empty:jQuery.Callbacks("once memory").add(function(){jQuery._removeData(elem,type+"queue"),jQuery._removeData(elem,key)})})}}),jQuery.fn.extend({queue:function(type,data){var setter=2;return"string"!=typeof type&&(data=type,type="fx",setter--),arguments.lengtha",support.leadingWhitespace=3===div.firstChild.nodeType,support.tbody=!div.getElementsByTagName("tbody").length,support.htmlSerialize=!!div.getElementsByTagName("link").length,support.html5Clone="<:nav>"!==document.createElement("nav").cloneNode(!0).outerHTML,input.type="checkbox",input.checked=!0,fragment.appendChild(input),support.appendChecked=input.checked,div.innerHTML="",support.noCloneChecked=!!div.cloneNode(!0).lastChild.defaultValue,fragment.appendChild(div),input=document.createElement("input"),input.setAttribute("type","radio"),input.setAttribute("checked","checked"),input.setAttribute("name","t"),div.appendChild(input),support.checkClone=div.cloneNode(!0).cloneNode(!0).lastChild.checked,support.noCloneEvent=!!div.addEventListener,div[jQuery.expando]=1,support.attributes=!div.getAttribute(jQuery.expando)}();var wrapMap={option:[1,""],legend:[1,""],area:[1,""],param:[1,""],thead:[1,""],tr:[2,""],col:[2,""],td:[3,""],_default:support.htmlSerialize?[0,"",""]:[1,"X","
"]};wrapMap.optgroup=wrapMap.option,wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead,wrapMap.th=wrapMap.td;var rhtml=/<|?\w+;/,rtbody=/-1&&(namespaces=type.split("."),type=namespaces.shift(),namespaces.sort()),ontype=type.indexOf(":")<0&&"on"+type,event=event[jQuery.expando]?event:new jQuery.Event(type,"object"==typeof event&&event),event.isTrigger=onlyHandlers?2:3,event.namespace=namespaces.join("."),event.rnamespace=event.namespace?new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,event.result=void 0,event.target||(event.target=elem),data=null==data?[event]:jQuery.makeArray(data,[event]),special=jQuery.event.special[type]||{},onlyHandlers||!special.trigger||special.trigger.apply(elem,data)!==!1)){if(!onlyHandlers&&!special.noBubble&&!jQuery.isWindow(elem)){for(bubbleType=special.delegateType||type,rfocusMorph.test(bubbleType+type)||(cur=cur.parentNode);cur;cur=cur.parentNode)eventPath.push(cur),tmp=cur;tmp===(elem.ownerDocument||document)&&eventPath.push(tmp.defaultView||tmp.parentWindow||window)}for(i=0;(cur=eventPath[i++])&&!event.isPropagationStopped();)event.type=i>1?bubbleType:special.bindType||type,handle=(jQuery._data(cur,"events")||{})[event.type]&&jQuery._data(cur,"handle"),handle&&handle.apply(cur,data),handle=ontype&&cur[ontype],handle&&handle.apply&&acceptData(cur)&&(event.result=handle.apply(cur,data),event.result===!1&&event.preventDefault());if(event.type=type,!onlyHandlers&&!event.isDefaultPrevented()&&(!special._default||special._default.apply(eventPath.pop(),data)===!1)&&acceptData(elem)&&ontype&&elem[type]&&!jQuery.isWindow(elem)){tmp=elem[ontype],tmp&&(elem[ontype]=null),jQuery.event.triggered=type;try{elem[type]()}catch(e){}jQuery.event.triggered=void 0,tmp&&(elem[ontype]=tmp)}return event.result}},dispatch:function(event){event=jQuery.event.fix(event);var i,j,ret,matched,handleObj,handlerQueue=[],args=slice.call(arguments),handlers=(jQuery._data(this,"events")||{})[event.type]||[],special=jQuery.event.special[event.type]||{};if(args[0]=event,event.delegateTarget=this,!special.preDispatch||special.preDispatch.call(this,event)!==!1){for(handlerQueue=jQuery.event.handlers.call(this,event,handlers),i=0;(matched=handlerQueue[i++])&&!event.isPropagationStopped();)for(event.currentTarget=matched.elem,j=0;(handleObj=matched.handlers[j++])&&!event.isImmediatePropagationStopped();)event.rnamespace&&!event.rnamespace.test(handleObj.namespace)||(event.handleObj=handleObj,event.data=handleObj.data,ret=((jQuery.event.special[handleObj.origType]||{}).handle||handleObj.handler).apply(matched.elem,args),void 0!==ret&&(event.result=ret)===!1&&(event.preventDefault(),event.stopPropagation()));return special.postDispatch&&special.postDispatch.call(this,event),event.result}},handlers:function(event,handlers){var i,matches,sel,handleObj,handlerQueue=[],delegateCount=handlers.delegateCount,cur=event.target;if(delegateCount&&cur.nodeType&&("click"!==event.type||isNaN(event.button)||event.button<1))for(;cur!=this;cur=cur.parentNode||this)if(1===cur.nodeType&&(cur.disabled!==!0||"click"!==event.type)){for(matches=[],i=0;i-1:jQuery.find(sel,this,null,[cur]).length),matches[sel]&&matches.push(handleObj);matches.length&&handlerQueue.push({elem:cur,handlers:matches})}return delegateCount]","i"),rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,rnoInnerhtml=/