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.length
a",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=/\s*$/g,safeFragment=createSafeFragment(document),fragmentDiv=safeFragment.appendChild(document.createElement("div"));jQuery.extend({htmlPrefilter:function(html){return html.replace(rxhtmlTag,"<$1>")},clone:function(elem,dataAndEvents,deepDataAndEvents){var destElements,node,clone,i,srcElements,inPage=jQuery.contains(elem.ownerDocument,elem);if(support.html5Clone||jQuery.isXMLDoc(elem)||!rnoshimcache.test("<"+elem.nodeName+">")?clone=elem.cloneNode(!0):(fragmentDiv.innerHTML=elem.outerHTML,fragmentDiv.removeChild(clone=fragmentDiv.firstChild)),!(support.noCloneEvent&&support.noCloneChecked||1!==elem.nodeType&&11!==elem.nodeType||jQuery.isXMLDoc(elem)))for(destElements=getAll(clone),srcElements=getAll(elem),i=0;null!=(node=srcElements[i]);++i)destElements[i]&&fixCloneNodeIssues(node,destElements[i]);if(dataAndEvents)if(deepDataAndEvents)for(srcElements=srcElements||getAll(elem),destElements=destElements||getAll(clone),i=0;null!=(node=srcElements[i]);i++)cloneCopyEvent(node,destElements[i]);else cloneCopyEvent(elem,clone); +return destElements=getAll(clone,"script"),destElements.length>0&&setGlobalEval(destElements,!inPage&&getAll(elem,"script")),destElements=srcElements=node=null,clone},cleanData:function(elems,forceAcceptData){for(var elem,type,id,data,i=0,internalKey=jQuery.expando,cache=jQuery.cache,attributes=support.attributes,special=jQuery.event.special;null!=(elem=elems[i]);i++)if((forceAcceptData||acceptData(elem))&&(id=elem[internalKey],data=id&&cache[id])){if(data.events)for(type in data.events)special[type]?jQuery.event.remove(elem,type):jQuery.removeEvent(elem,type,data.handle);cache[id]&&(delete cache[id],attributes||"undefined"==typeof elem.removeAttribute?elem[internalKey]=void 0:elem.removeAttribute(internalKey),deletedIds.push(id))}}}),jQuery.fn.extend({domManip:domManip,detach:function(selector){return remove(this,selector,!0)},remove:function(selector){return remove(this,selector)},text:function(value){return access(this,function(value){return void 0===value?jQuery.text(this):this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(value))},null,value,arguments.length)},append:function(){return domManip(this,arguments,function(elem){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var target=manipulationTarget(this,elem);target.appendChild(elem)}})},prepend:function(){return domManip(this,arguments,function(elem){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild)}})},before:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this)})},after:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this.nextSibling)})},empty:function(){for(var elem,i=0;null!=(elem=this[i]);i++){for(1===elem.nodeType&&jQuery.cleanData(getAll(elem,!1));elem.firstChild;)elem.removeChild(elem.firstChild);elem.options&&jQuery.nodeName(elem,"select")&&(elem.options.length=0)}return this},clone:function(dataAndEvents,deepDataAndEvents){return dataAndEvents=null!=dataAndEvents&&dataAndEvents,deepDataAndEvents=null==deepDataAndEvents?dataAndEvents:deepDataAndEvents,this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents)})},html:function(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(void 0===value)return 1===elem.nodeType?elem.innerHTML.replace(rinlinejQuery,""):void 0;if("string"==typeof value&&!rnoInnerhtml.test(value)&&(support.htmlSerialize||!rnoshimcache.test(value))&&(support.leadingWhitespace||!rleadingWhitespace.test(value))&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=jQuery.htmlPrefilter(value);try{for(;it",div.childNodes[0].style.borderCollapse="separate",contents=div.getElementsByTagName("td"),contents[0].style.cssText="margin:0;border:0;padding:0;display:none",reliableHiddenOffsetsVal=0===contents[0].offsetHeight,reliableHiddenOffsetsVal&&(contents[0].style.display="",contents[1].style.display="none",reliableHiddenOffsetsVal=0===contents[0].offsetHeight)),documentElement.removeChild(container)}var pixelPositionVal,pixelMarginRightVal,boxSizingReliableVal,reliableHiddenOffsetsVal,reliableMarginRightVal,reliableMarginLeftVal,container=document.createElement("div"),div=document.createElement("div");div.style&&(div.style.cssText="float:left;opacity:.5",support.opacity="0.5"===div.style.opacity,support.cssFloat=!!div.style.cssFloat,div.style.backgroundClip="content-box",div.cloneNode(!0).style.backgroundClip="",support.clearCloneStyle="content-box"===div.style.backgroundClip,container=document.createElement("div"),container.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",div.innerHTML="",container.appendChild(div),support.boxSizing=""===div.style.boxSizing||""===div.style.MozBoxSizing||""===div.style.WebkitBoxSizing,jQuery.extend(support,{reliableHiddenOffsets:function(){return null==pixelPositionVal&&computeStyleTests(),reliableHiddenOffsetsVal},boxSizingReliable:function(){return null==pixelPositionVal&&computeStyleTests(),boxSizingReliableVal},pixelMarginRight:function(){return null==pixelPositionVal&&computeStyleTests(),pixelMarginRightVal},pixelPosition:function(){return null==pixelPositionVal&&computeStyleTests(),pixelPositionVal},reliableMarginRight:function(){return null==pixelPositionVal&&computeStyleTests(),reliableMarginRightVal},reliableMarginLeft:function(){return null==pixelPositionVal&&computeStyleTests(),reliableMarginLeftVal}}))}();var getStyles,curCSS,rposition=/^(top|right|bottom|left)$/;window.getComputedStyle?(getStyles=function(elem){var view=elem.ownerDocument.defaultView;return view&&view.opener||(view=window),view.getComputedStyle(elem)},curCSS=function(elem,name,computed){var width,minWidth,maxWidth,ret,style=elem.style;return computed=computed||getStyles(elem),ret=computed?computed.getPropertyValue(name)||computed[name]:void 0,""!==ret&&void 0!==ret||jQuery.contains(elem.ownerDocument,elem)||(ret=jQuery.style(elem,name)),computed&&!support.pixelMarginRight()&&rnumnonpx.test(ret)&&rmargin.test(name)&&(width=style.width,minWidth=style.minWidth,maxWidth=style.maxWidth,style.minWidth=style.maxWidth=style.width=ret,ret=computed.width,style.width=width,style.minWidth=minWidth,style.maxWidth=maxWidth),void 0===ret?ret:ret+""}):documentElement.currentStyle&&(getStyles=function(elem){return elem.currentStyle},curCSS=function(elem,name,computed){var left,rs,rsLeft,ret,style=elem.style;return computed=computed||getStyles(elem),ret=computed?computed[name]:void 0,null==ret&&style&&style[name]&&(ret=style[name]),rnumnonpx.test(ret)&&!rposition.test(name)&&(left=style.left,rs=elem.runtimeStyle,rsLeft=rs&&rs.left,rsLeft&&(rs.left=elem.currentStyle.left),style.left="fontSize"===name?"1em":ret,ret=style.pixelLeft+"px",style.left=left,rsLeft&&(rs.left=rsLeft)),void 0===ret?ret:ret+""||"auto"});var ralpha=/alpha\([^)]*\)/i,ropacity=/opacity\s*=\s*([^)]*)/i,rdisplayswap=/^(none|table(?!-c[ea]).+)/,rnumsplit=new RegExp("^("+pnum+")(.*)$","i"),cssShow={position:"absolute",visibility:"hidden",display:"block"},cssNormalTransform={letterSpacing:"0",fontWeight:"400"},cssPrefixes=["Webkit","O","Moz","ms"],emptyStyle=document.createElement("div").style;jQuery.extend({cssHooks:{opacity:{get:function(elem,computed){if(computed){var ret=curCSS(elem,"opacity");return""===ret?"1":ret}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:support.cssFloat?"cssFloat":"styleFloat"},style:function(elem,name,value,extra){if(elem&&3!==elem.nodeType&&8!==elem.nodeType&&elem.style){var ret,type,hooks,origName=jQuery.camelCase(name),style=elem.style;if(name=jQuery.cssProps[origName]||(jQuery.cssProps[origName]=vendorPropName(origName)||origName),hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName],void 0===value)return hooks&&"get"in hooks&&void 0!==(ret=hooks.get(elem,!1,extra))?ret:style[name];if(type=typeof value,"string"===type&&(ret=rcssNum.exec(value))&&ret[1]&&(value=adjustCSS(elem,name,ret),type="number"),null!=value&&value===value&&("number"===type&&(value+=ret&&ret[3]||(jQuery.cssNumber[origName]?"":"px")),support.clearCloneStyle||""!==value||0!==name.indexOf("background")||(style[name]="inherit"),!(hooks&&"set"in hooks&&void 0===(value=hooks.set(elem,value,extra)))))try{style[name]=value}catch(e){}}},css:function(elem,name,extra,styles){var num,val,hooks,origName=jQuery.camelCase(name);return name=jQuery.cssProps[origName]||(jQuery.cssProps[origName]=vendorPropName(origName)||origName),hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName],hooks&&"get"in hooks&&(val=hooks.get(elem,!0,extra)),void 0===val&&(val=curCSS(elem,name,styles)),"normal"===val&&name in cssNormalTransform&&(val=cssNormalTransform[name]),""===extra||extra?(num=parseFloat(val),extra===!0||isFinite(num)?num||0:val):val}}),jQuery.each(["height","width"],function(i,name){jQuery.cssHooks[name]={get:function(elem,computed,extra){if(computed)return rdisplayswap.test(jQuery.css(elem,"display"))&&0===elem.offsetWidth?swap(elem,cssShow,function(){return getWidthOrHeight(elem,name,extra)}):getWidthOrHeight(elem,name,extra)},set:function(elem,value,extra){var styles=extra&&getStyles(elem);return setPositiveNumber(elem,value,extra?augmentWidthOrHeight(elem,name,extra,support.boxSizing&&"border-box"===jQuery.css(elem,"boxSizing",!1,styles),styles):0)}}}),support.opacity||(jQuery.cssHooks.opacity={get:function(elem,computed){return ropacity.test((computed&&elem.currentStyle?elem.currentStyle.filter:elem.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":computed?"1":""},set:function(elem,value){var style=elem.style,currentStyle=elem.currentStyle,opacity=jQuery.isNumeric(value)?"alpha(opacity="+100*value+")":"",filter=currentStyle&¤tStyle.filter||style.filter||"";style.zoom=1,(value>=1||""===value)&&""===jQuery.trim(filter.replace(ralpha,""))&&style.removeAttribute&&(style.removeAttribute("filter"),""===value||currentStyle&&!currentStyle.filter)||(style.filter=ralpha.test(filter)?filter.replace(ralpha,opacity):filter+" "+opacity)}}),jQuery.cssHooks.marginRight=addGetHookIf(support.reliableMarginRight,function(elem,computed){if(computed)return swap(elem,{display:"inline-block"},curCSS,[elem,"marginRight"])}),jQuery.cssHooks.marginLeft=addGetHookIf(support.reliableMarginLeft,function(elem,computed){if(computed)return(parseFloat(curCSS(elem,"marginLeft"))||(jQuery.contains(elem.ownerDocument,elem)?elem.getBoundingClientRect().left-swap(elem,{marginLeft:0},function(){return elem.getBoundingClientRect().left}):0))+"px"}),jQuery.each({margin:"",padding:"",border:"Width"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function(value){for(var i=0,expanded={},parts="string"==typeof value?value.split(" "):[value];i<4;i++)expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0];return expanded}},rmargin.test(prefix)||(jQuery.cssHooks[prefix+suffix].set=setPositiveNumber)}),jQuery.fn.extend({css:function(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(jQuery.isArray(name)){for(styles=getStyles(elem),len=name.length;i1)},show:function(){return showHide(this,!0)},hide:function(){return showHide(this)},toggle:function(state){return"boolean"==typeof state?state?this.show():this.hide():this.each(function(){isHidden(this)?jQuery(this).show():jQuery(this).hide()})}}),jQuery.Tween=Tween,Tween.prototype={constructor:Tween,init:function(elem,options,prop,end,easing,unit){this.elem=elem,this.prop=prop,this.easing=easing||jQuery.easing._default,this.options=options,this.start=this.now=this.cur(),this.end=end,this.unit=unit||(jQuery.cssNumber[prop]?"":"px")},cur:function(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this)},run:function(percent){var eased,hooks=Tween.propHooks[this.prop];return this.options.duration?this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration):this.pos=eased=percent,this.now=(this.end-this.start)*eased+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),hooks&&hooks.set?hooks.set(this):Tween.propHooks._default.set(this),this}},Tween.prototype.init.prototype=Tween.prototype,Tween.propHooks={_default:{get:function(tween){var result;return 1!==tween.elem.nodeType||null!=tween.elem[tween.prop]&&null==tween.elem.style[tween.prop]?tween.elem[tween.prop]:(result=jQuery.css(tween.elem,tween.prop,""),result&&"auto"!==result?result:0)},set:function(tween){jQuery.fx.step[tween.prop]?jQuery.fx.step[tween.prop](tween):1!==tween.elem.nodeType||null==tween.elem.style[jQuery.cssProps[tween.prop]]&&!jQuery.cssHooks[tween.prop]?tween.elem[tween.prop]=tween.now:jQuery.style(tween.elem,tween.prop,tween.now+tween.unit)}}},Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function(tween){tween.elem.nodeType&&tween.elem.parentNode&&(tween.elem[tween.prop]=tween.now)}},jQuery.easing={linear:function(p){return p},swing:function(p){return.5-Math.cos(p*Math.PI)/2},_default:"swing"},jQuery.fx=Tween.prototype.init,jQuery.fx.step={};var fxNow,timerId,rfxtypes=/^(?:toggle|show|hide)$/,rrun=/queueHooks$/;jQuery.Animation=jQuery.extend(Animation,{tweeners:{"*":[function(prop,value){var tween=this.createTween(prop,value);return adjustCSS(tween.elem,prop,rcssNum.exec(value),tween),tween}]},tweener:function(props,callback){jQuery.isFunction(props)?(callback=props,props=["*"]):props=props.match(rnotwhite);for(var prop,index=0,length=props.length;index
a",a=div.getElementsByTagName("a")[0],input.setAttribute("type","checkbox"),div.appendChild(input),a=div.getElementsByTagName("a")[0],a.style.cssText="top:1px",support.getSetAttribute="t"!==div.className,support.style=/top/.test(a.getAttribute("style")),support.hrefNormalized="/a"===a.getAttribute("href"),support.checkOn=!!input.value,support.optSelected=opt.selected,support.enctype=!!document.createElement("form").enctype,select.disabled=!0,support.optDisabled=!opt.disabled,input=document.createElement("input"),input.setAttribute("value",""),support.input=""===input.getAttribute("value"),input.value="t",input.setAttribute("type","radio"),support.radioValue="t"===input.value}();var rreturn=/\r/g,rspaces=/[\x20\t\r\n\f]+/g;jQuery.fn.extend({val:function(value){var hooks,ret,isFunction,elem=this[0];{if(arguments.length)return isFunction=jQuery.isFunction(value),this.each(function(i){var val;1===this.nodeType&&(val=isFunction?value.call(this,i,jQuery(this).val()):value,null==val?val="":"number"==typeof val?val+="":jQuery.isArray(val)&&(val=jQuery.map(val,function(value){return null==value?"":value+""})),hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()],hooks&&"set"in hooks&&void 0!==hooks.set(this,val,"value")||(this.value=val))});if(elem)return hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()],hooks&&"get"in hooks&&void 0!==(ret=hooks.get(elem,"value"))?ret:(ret=elem.value,"string"==typeof ret?ret.replace(rreturn,""):null==ret?"":ret)}}}),jQuery.extend({valHooks:{option:{get:function(elem){var val=jQuery.find.attr(elem,"value");return null!=val?val:jQuery.trim(jQuery.text(elem)).replace(rspaces," ")}},select:{get:function(elem){for(var value,option,options=elem.options,index=elem.selectedIndex,one="select-one"===elem.type||index<0,values=one?null:[],max=one?index+1:options.length,i=index<0?max:one?index:0;i-1)try{option.selected=optionSet=!0}catch(_){option.scrollHeight}else option.selected=!1;return optionSet||(elem.selectedIndex=-1),options}}}}),jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function(elem,value){if(jQuery.isArray(value))return elem.checked=jQuery.inArray(jQuery(elem).val(),value)>-1}},support.checkOn||(jQuery.valHooks[this].get=function(elem){return null===elem.getAttribute("value")?"on":elem.value})});var nodeHook,boolHook,attrHandle=jQuery.expr.attrHandle,ruseDefault=/^(?:checked|selected)$/i,getSetAttribute=support.getSetAttribute,getSetInput=support.input;jQuery.fn.extend({attr:function(name,value){return access(this,jQuery.attr,name,value,arguments.length>1)},removeAttr:function(name){return this.each(function(){jQuery.removeAttr(this,name)})}}),jQuery.extend({attr:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return"undefined"==typeof elem.getAttribute?jQuery.prop(elem,name,value):(1===nType&&jQuery.isXMLDoc(elem)||(name=name.toLowerCase(),hooks=jQuery.attrHooks[name]||(jQuery.expr.match.bool.test(name)?boolHook:nodeHook)),void 0!==value?null===value?void jQuery.removeAttr(elem,name):hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:(elem.setAttribute(name,value+""),value):hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:(ret=jQuery.find.attr(elem,name),null==ret?void 0:ret))},attrHooks:{type:{set:function(elem,value){if(!support.radioValue&&"radio"===value&&jQuery.nodeName(elem,"input")){var val=elem.value;return elem.setAttribute("type",value),val&&(elem.value=val),value}}}},removeAttr:function(elem,value){var name,propName,i=0,attrNames=value&&value.match(rnotwhite);if(attrNames&&1===elem.nodeType)for(;name=attrNames[i++];)propName=jQuery.propFix[name]||name,jQuery.expr.match.bool.test(name)?getSetInput&&getSetAttribute||!ruseDefault.test(name)?elem[propName]=!1:elem[jQuery.camelCase("default-"+name)]=elem[propName]=!1:jQuery.attr(elem,name,""),elem.removeAttribute(getSetAttribute?name:propName)}}),boolHook={set:function(elem,value,name){return value===!1?jQuery.removeAttr(elem,name):getSetInput&&getSetAttribute||!ruseDefault.test(name)?elem.setAttribute(!getSetAttribute&&jQuery.propFix[name]||name,name):elem[jQuery.camelCase("default-"+name)]=elem[name]=!0,name}},jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),function(i,name){var getter=attrHandle[name]||jQuery.find.attr;getSetInput&&getSetAttribute||!ruseDefault.test(name)?attrHandle[name]=function(elem,name,isXML){var ret,handle;return isXML||(handle=attrHandle[name],attrHandle[name]=ret,ret=null!=getter(elem,name,isXML)?name.toLowerCase():null,attrHandle[name]=handle),ret}:attrHandle[name]=function(elem,name,isXML){if(!isXML)return elem[jQuery.camelCase("default-"+name)]?name.toLowerCase():null}}),getSetInput&&getSetAttribute||(jQuery.attrHooks.value={set:function(elem,value,name){return jQuery.nodeName(elem,"input")?void(elem.defaultValue=value):nodeHook&&nodeHook.set(elem,value,name)}}),getSetAttribute||(nodeHook={set:function(elem,value,name){var ret=elem.getAttributeNode(name);if(ret||elem.setAttributeNode(ret=elem.ownerDocument.createAttribute(name)),ret.value=value+="","value"===name||value===elem.getAttribute(name))return value}},attrHandle.id=attrHandle.name=attrHandle.coords=function(elem,name,isXML){var ret;if(!isXML)return(ret=elem.getAttributeNode(name))&&""!==ret.value?ret.value:null},jQuery.valHooks.button={get:function(elem,name){var ret=elem.getAttributeNode(name);if(ret&&ret.specified)return ret.value},set:nodeHook.set},jQuery.attrHooks.contenteditable={set:function(elem,value,name){nodeHook.set(elem,""!==value&&value,name)}},jQuery.each(["width","height"],function(i,name){jQuery.attrHooks[name]={set:function(elem,value){if(""===value)return elem.setAttribute(name,"auto"),value}}})),support.style||(jQuery.attrHooks.style={get:function(elem){return elem.style.cssText||void 0},set:function(elem,value){return elem.style.cssText=value+""}});var rfocusable=/^(?:input|select|textarea|button|object)$/i,rclickable=/^(?:a|area)$/i;jQuery.fn.extend({prop:function(name,value){return access(this,jQuery.prop,name,value,arguments.length>1)},removeProp:function(name){return name=jQuery.propFix[name]||name,this.each(function(){try{this[name]=void 0,delete this[name]}catch(e){}})}}),jQuery.extend({prop:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return 1===nType&&jQuery.isXMLDoc(elem)||(name=jQuery.propFix[name]||name,hooks=jQuery.propHooks[name]),void 0!==value?hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:elem[name]=value:hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:elem[name]},propHooks:{tabIndex:{get:function(elem){var tabindex=jQuery.find.attr(elem,"tabindex");return tabindex?parseInt(tabindex,10):rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),support.hrefNormalized||jQuery.each(["href","src"],function(i,name){jQuery.propHooks[name]={get:function(elem){return elem.getAttribute(name,4)}}}),support.optSelected||(jQuery.propHooks.selected={get:function(elem){var parent=elem.parentNode;return parent&&(parent.selectedIndex,parent.parentNode&&parent.parentNode.selectedIndex),null},set:function(elem){var parent=elem.parentNode;parent&&(parent.selectedIndex,parent.parentNode&&parent.parentNode.selectedIndex)}}),jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this}),support.enctype||(jQuery.propFix.enctype="encoding");var rclass=/[\t\r\n\f]/g;jQuery.fn.extend({addClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(jQuery.isFunction(value))return this.each(function(j){jQuery(this).addClass(value.call(this,j,getClass(this)))});if("string"==typeof value&&value)for(classes=value.match(rnotwhite)||[];elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&(" "+curValue+" ").replace(rclass," ")){for(j=0;clazz=classes[j++];)cur.indexOf(" "+clazz+" ")<0&&(cur+=clazz+" ");finalValue=jQuery.trim(cur),curValue!==finalValue&&jQuery.attr(elem,"class",finalValue)}return this},removeClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(jQuery.isFunction(value))return this.each(function(j){jQuery(this).removeClass(value.call(this,j,getClass(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof value&&value)for(classes=value.match(rnotwhite)||[];elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&(" "+curValue+" ").replace(rclass," ")){for(j=0;clazz=classes[j++];)for(;cur.indexOf(" "+clazz+" ")>-1;)cur=cur.replace(" "+clazz+" "," ");finalValue=jQuery.trim(cur),curValue!==finalValue&&jQuery.attr(elem,"class",finalValue)}return this},toggleClass:function(value,stateVal){var type=typeof value;return"boolean"==typeof stateVal&&"string"===type?stateVal?this.addClass(value):this.removeClass(value):jQuery.isFunction(value)?this.each(function(i){jQuery(this).toggleClass(value.call(this,i,getClass(this),stateVal),stateVal)}):this.each(function(){var className,i,self,classNames;if("string"===type)for(i=0,self=jQuery(this),classNames=value.match(rnotwhite)||[];className=classNames[i++];)self.hasClass(className)?self.removeClass(className):self.addClass(className);else void 0!==value&&"boolean"!==type||(className=getClass(this),className&&jQuery._data(this,"__className__",className),jQuery.attr(this,"class",className||value===!1?"":jQuery._data(this,"__className__")||""))})},hasClass:function(selector){var className,elem,i=0;for(className=" "+selector+" ";elem=this[i++];)if(1===elem.nodeType&&(" "+getClass(elem)+" ").replace(rclass," ").indexOf(className)>-1)return!0;return!1}}),jQuery.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(i,name){jQuery.fn[name]=function(data,fn){return arguments.length>0?this.on(name,null,data,fn):this.trigger(name)}}),jQuery.fn.extend({hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver)}});var location=window.location,nonce=jQuery.now(),rquery=/\?/,rvalidtokens=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;jQuery.parseJSON=function(data){if(window.JSON&&window.JSON.parse)return window.JSON.parse(data+"");var requireNonComma,depth=null,str=jQuery.trim(data+"");return str&&!jQuery.trim(str.replace(rvalidtokens,function(token,comma,open,close){return requireNonComma&&comma&&(depth=0),0===depth?token:(requireNonComma=open||comma,depth+=!close-!open,"")}))?Function("return "+str)():jQuery.error("Invalid JSON: "+data)},jQuery.parseXML=function(data){var xml,tmp;if(!data||"string"!=typeof data)return null;try{window.DOMParser?(tmp=new window.DOMParser,xml=tmp.parseFromString(data,"text/xml")):(xml=new window.ActiveXObject("Microsoft.XMLDOM"),xml.async="false",xml.loadXML(data))}catch(e){xml=void 0}return xml&&xml.documentElement&&!xml.getElementsByTagName("parsererror").length||jQuery.error("Invalid XML: "+data),xml};var rhash=/#.*$/,rts=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,rlocalProtocol=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,rurl=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,prefilters={},transports={},allTypes="*/".concat("*"),ajaxLocation=location.href,ajaxLocParts=rurl.exec(ajaxLocation.toLowerCase())||[];jQuery.extend({ +active:0,lastModified:{},etag:{},ajaxSettings:{url:ajaxLocation,type:"GET",isLocal:rlocalProtocol.test(ajaxLocParts[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":allTypes,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":jQuery.parseJSON,"text xml":jQuery.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(target,settings){return settings?ajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):ajaxExtend(jQuery.ajaxSettings,target)},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(url,options){function done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;2!==state&&(state=2,timeoutTimer&&window.clearTimeout(timeoutTimer),transport=void 0,responseHeadersString=headers||"",jqXHR.readyState=status>0?4:0,isSuccess=status>=200&&status<300||304===status,responses&&(response=ajaxHandleResponses(s,jqXHR,responses)),response=ajaxConvert(s,response,jqXHR,isSuccess),isSuccess?(s.ifModified&&(modified=jqXHR.getResponseHeader("Last-Modified"),modified&&(jQuery.lastModified[cacheURL]=modified),modified=jqXHR.getResponseHeader("etag"),modified&&(jQuery.etag[cacheURL]=modified)),204===status||"HEAD"===s.type?statusText="nocontent":304===status?statusText="notmodified":(statusText=response.state,success=response.data,error=response.error,isSuccess=!error)):(error=statusText,!status&&statusText||(statusText="error",status<0&&(status=0))),jqXHR.status=status,jqXHR.statusText=(nativeStatusText||statusText)+"",isSuccess?deferred.resolveWith(callbackContext,[success,statusText,jqXHR]):deferred.rejectWith(callbackContext,[jqXHR,statusText,error]),jqXHR.statusCode(statusCode),statusCode=void 0,fireGlobals&&globalEventContext.trigger(isSuccess?"ajaxSuccess":"ajaxError",[jqXHR,s,isSuccess?success:error]),completeDeferred.fireWith(callbackContext,[jqXHR,statusText]),fireGlobals&&(globalEventContext.trigger("ajaxComplete",[jqXHR,s]),--jQuery.active||jQuery.event.trigger("ajaxStop")))}"object"==typeof url&&(options=url,url=void 0),options=options||{};var parts,i,cacheURL,responseHeadersString,timeoutTimer,fireGlobals,transport,responseHeaders,s=jQuery.ajaxSetup({},options),callbackContext=s.context||s,globalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,deferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks("once memory"),statusCode=s.statusCode||{},requestHeaders={},requestHeadersNames={},state=0,strAbort="canceled",jqXHR={readyState:0,getResponseHeader:function(key){var match;if(2===state){if(!responseHeaders)for(responseHeaders={};match=rheaders.exec(responseHeadersString);)responseHeaders[match[1].toLowerCase()]=match[2];match=responseHeaders[key.toLowerCase()]}return null==match?null:match},getAllResponseHeaders:function(){return 2===state?responseHeadersString:null},setRequestHeader:function(name,value){var lname=name.toLowerCase();return state||(name=requestHeadersNames[lname]=requestHeadersNames[lname]||name,requestHeaders[name]=value),this},overrideMimeType:function(type){return state||(s.mimeType=type),this},statusCode:function(map){var code;if(map)if(state<2)for(code in map)statusCode[code]=[statusCode[code],map[code]];else jqXHR.always(map[jqXHR.status]);return this},abort:function(statusText){var finalText=statusText||strAbort;return transport&&transport.abort(finalText),done(0,finalText),this}};if(deferred.promise(jqXHR).complete=completeDeferred.add,jqXHR.success=jqXHR.done,jqXHR.error=jqXHR.fail,s.url=((url||s.url||ajaxLocation)+"").replace(rhash,"").replace(rprotocol,ajaxLocParts[1]+"//"),s.type=options.method||options.type||s.method||s.type,s.dataTypes=jQuery.trim(s.dataType||"*").toLowerCase().match(rnotwhite)||[""],null==s.crossDomain&&(parts=rurl.exec(s.url.toLowerCase()),s.crossDomain=!(!parts||parts[1]===ajaxLocParts[1]&&parts[2]===ajaxLocParts[2]&&(parts[3]||("http:"===parts[1]?"80":"443"))===(ajaxLocParts[3]||("http:"===ajaxLocParts[1]?"80":"443")))),s.data&&s.processData&&"string"!=typeof s.data&&(s.data=jQuery.param(s.data,s.traditional)),inspectPrefiltersOrTransports(prefilters,s,options,jqXHR),2===state)return jqXHR;fireGlobals=jQuery.event&&s.global,fireGlobals&&0===jQuery.active++&&jQuery.event.trigger("ajaxStart"),s.type=s.type.toUpperCase(),s.hasContent=!rnoContent.test(s.type),cacheURL=s.url,s.hasContent||(s.data&&(cacheURL=s.url+=(rquery.test(cacheURL)?"&":"?")+s.data,delete s.data),s.cache===!1&&(s.url=rts.test(cacheURL)?cacheURL.replace(rts,"$1_="+nonce++):cacheURL+(rquery.test(cacheURL)?"&":"?")+"_="+nonce++)),s.ifModified&&(jQuery.lastModified[cacheURL]&&jqXHR.setRequestHeader("If-Modified-Since",jQuery.lastModified[cacheURL]),jQuery.etag[cacheURL]&&jqXHR.setRequestHeader("If-None-Match",jQuery.etag[cacheURL])),(s.data&&s.hasContent&&s.contentType!==!1||options.contentType)&&jqXHR.setRequestHeader("Content-Type",s.contentType),jqXHR.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+("*"!==s.dataTypes[0]?", "+allTypes+"; q=0.01":""):s.accepts["*"]);for(i in s.headers)jqXHR.setRequestHeader(i,s.headers[i]);if(s.beforeSend&&(s.beforeSend.call(callbackContext,jqXHR,s)===!1||2===state))return jqXHR.abort();strAbort="abort";for(i in{success:1,error:1,complete:1})jqXHR[i](s[i]);if(transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR)){if(jqXHR.readyState=1,fireGlobals&&globalEventContext.trigger("ajaxSend",[jqXHR,s]),2===state)return jqXHR;s.async&&s.timeout>0&&(timeoutTimer=window.setTimeout(function(){jqXHR.abort("timeout")},s.timeout));try{state=1,transport.send(requestHeaders,done)}catch(e){if(!(state<2))throw e;done(-1,e)}}else done(-1,"No Transport");return jqXHR},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json")},getScript:function(url,callback){return jQuery.get(url,void 0,callback,"script")}}),jQuery.each(["get","post"],function(i,method){jQuery[method]=function(url,data,callback,type){return jQuery.isFunction(data)&&(type=type||callback,callback=data,data=void 0),jQuery.ajax(jQuery.extend({url:url,type:method,dataType:type,data:data,success:callback},jQuery.isPlainObject(url)&&url))}}),jQuery._evalUrl=function(url){return jQuery.ajax({url:url,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},jQuery.fn.extend({wrapAll:function(html){if(jQuery.isFunction(html))return this.each(function(i){jQuery(this).wrapAll(html.call(this,i))});if(this[0]){var wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&wrap.insertBefore(this[0]),wrap.map(function(){for(var elem=this;elem.firstChild&&1===elem.firstChild.nodeType;)elem=elem.firstChild;return elem}).append(this)}return this},wrapInner:function(html){return jQuery.isFunction(html)?this.each(function(i){jQuery(this).wrapInner(html.call(this,i))}):this.each(function(){var self=jQuery(this),contents=self.contents();contents.length?contents.wrapAll(html):self.append(html)})},wrap:function(html){var isFunction=jQuery.isFunction(html);return this.each(function(i){jQuery(this).wrapAll(isFunction?html.call(this,i):html)})},unwrap:function(){return this.parent().each(function(){jQuery.nodeName(this,"body")||jQuery(this).replaceWith(this.childNodes)}).end()}}),jQuery.expr.filters.hidden=function(elem){return support.reliableHiddenOffsets()?elem.offsetWidth<=0&&elem.offsetHeight<=0&&!elem.getClientRects().length:filterHidden(elem)},jQuery.expr.filters.visible=function(elem){return!jQuery.expr.filters.hidden(elem)};var r20=/%20/g,rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;jQuery.param=function(a,traditional){var prefix,s=[],add=function(key,value){value=jQuery.isFunction(value)?value():null==value?"":value,s[s.length]=encodeURIComponent(key)+"="+encodeURIComponent(value)};if(void 0===traditional&&(traditional=jQuery.ajaxSettings&&jQuery.ajaxSettings.traditional),jQuery.isArray(a)||a.jquery&&!jQuery.isPlainObject(a))jQuery.each(a,function(){add(this.name,this.value)});else for(prefix in a)buildParams(prefix,a[prefix],traditional,add);return s.join("&").replace(r20,"+")},jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var elements=jQuery.prop(this,"elements");return elements?jQuery.makeArray(elements):this}).filter(function(){var type=this.type;return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type))}).map(function(i,elem){var val=jQuery(this).val();return null==val?null:jQuery.isArray(val)?jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,"\r\n")}}):{name:elem.name,value:val.replace(rCRLF,"\r\n")}}).get()}}),jQuery.ajaxSettings.xhr=void 0!==window.ActiveXObject?function(){return this.isLocal?createActiveXHR():document.documentMode>8?createStandardXHR():/^(get|post|head|put|delete|options)$/i.test(this.type)&&createStandardXHR()||createActiveXHR()}:createStandardXHR;var xhrId=0,xhrCallbacks={},xhrSupported=jQuery.ajaxSettings.xhr();window.attachEvent&&window.attachEvent("onunload",function(){for(var key in xhrCallbacks)xhrCallbacks[key](void 0,!0)}),support.cors=!!xhrSupported&&"withCredentials"in xhrSupported,xhrSupported=support.ajax=!!xhrSupported,xhrSupported&&jQuery.ajaxTransport(function(options){if(!options.crossDomain||support.cors){var callback;return{send:function(headers,complete){var i,xhr=options.xhr(),id=++xhrId;if(xhr.open(options.type,options.url,options.async,options.username,options.password),options.xhrFields)for(i in options.xhrFields)xhr[i]=options.xhrFields[i];options.mimeType&&xhr.overrideMimeType&&xhr.overrideMimeType(options.mimeType),options.crossDomain||headers["X-Requested-With"]||(headers["X-Requested-With"]="XMLHttpRequest");for(i in headers)void 0!==headers[i]&&xhr.setRequestHeader(i,headers[i]+"");xhr.send(options.hasContent&&options.data||null),callback=function(_,isAbort){var status,statusText,responses;if(callback&&(isAbort||4===xhr.readyState))if(delete xhrCallbacks[id],callback=void 0,xhr.onreadystatechange=jQuery.noop,isAbort)4!==xhr.readyState&&xhr.abort();else{responses={},status=xhr.status,"string"==typeof xhr.responseText&&(responses.text=xhr.responseText);try{statusText=xhr.statusText}catch(e){statusText=""}status||!options.isLocal||options.crossDomain?1223===status&&(status=204):status=responses.text?200:404}responses&&complete(status,statusText,responses,xhr.getAllResponseHeaders())},options.async?4===xhr.readyState?window.setTimeout(callback):xhr.onreadystatechange=xhrCallbacks[id]=callback:callback()},abort:function(){callback&&callback(void 0,!0)}}}}),jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(text){return jQuery.globalEval(text),text}}}),jQuery.ajaxPrefilter("script",function(s){void 0===s.cache&&(s.cache=!1),s.crossDomain&&(s.type="GET",s.global=!1)}),jQuery.ajaxTransport("script",function(s){if(s.crossDomain){var script,head=document.head||jQuery("head")[0]||document.documentElement;return{send:function(_,callback){script=document.createElement("script"),script.async=!0,s.scriptCharset&&(script.charset=s.scriptCharset),script.src=s.url,script.onload=script.onreadystatechange=function(_,isAbort){(isAbort||!script.readyState||/loaded|complete/.test(script.readyState))&&(script.onload=script.onreadystatechange=null,script.parentNode&&script.parentNode.removeChild(script),script=null,isAbort||callback(200,"success"))},head.insertBefore(script,head.firstChild)},abort:function(){script&&script.onload(void 0,!0)}}}});var oldCallbacks=[],rjsonp=/(=)\?(?=&|$)|\?\?/;jQuery.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var callback=oldCallbacks.pop()||jQuery.expando+"_"+nonce++;return this[callback]=!0,callback}}),jQuery.ajaxPrefilter("json jsonp",function(s,originalSettings,jqXHR){var callbackName,overwritten,responseContainer,jsonProp=s.jsonp!==!1&&(rjsonp.test(s.url)?"url":"string"==typeof s.data&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&rjsonp.test(s.data)&&"data");if(jsonProp||"jsonp"===s.dataTypes[0])return callbackName=s.jsonpCallback=jQuery.isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback,jsonProp?s[jsonProp]=s[jsonProp].replace(rjsonp,"$1"+callbackName):s.jsonp!==!1&&(s.url+=(rquery.test(s.url)?"&":"?")+s.jsonp+"="+callbackName),s.converters["script json"]=function(){return responseContainer||jQuery.error(callbackName+" was not called"),responseContainer[0]},s.dataTypes[0]="json",overwritten=window[callbackName],window[callbackName]=function(){responseContainer=arguments},jqXHR.always(function(){void 0===overwritten?jQuery(window).removeProp(callbackName):window[callbackName]=overwritten,s[callbackName]&&(s.jsonpCallback=originalSettings.jsonpCallback,oldCallbacks.push(callbackName)),responseContainer&&jQuery.isFunction(overwritten)&&overwritten(responseContainer[0]),responseContainer=overwritten=void 0}),"script"}),jQuery.parseHTML=function(data,context,keepScripts){if(!data||"string"!=typeof data)return null;"boolean"==typeof context&&(keepScripts=context,context=!1),context=context||document;var parsed=rsingleTag.exec(data),scripts=!keepScripts&&[];return parsed?[context.createElement(parsed[1])]:(parsed=buildFragment([data],context,scripts),scripts&&scripts.length&&jQuery(scripts).remove(),jQuery.merge([],parsed.childNodes))};var _load=jQuery.fn.load;return jQuery.fn.load=function(url,params,callback){if("string"!=typeof url&&_load)return _load.apply(this,arguments);var selector,type,response,self=this,off=url.indexOf(" ");return off>-1&&(selector=jQuery.trim(url.slice(off,url.length)),url=url.slice(0,off)),jQuery.isFunction(params)?(callback=params,params=void 0):params&&"object"==typeof params&&(type="POST"),self.length>0&&jQuery.ajax({url:url,type:type||"GET",dataType:"html",data:params}).done(function(responseText){response=arguments,self.html(selector?jQuery("
").append(jQuery.parseHTML(responseText)).find(selector):responseText)}).always(callback&&function(jqXHR,status){self.each(function(){callback.apply(this,response||[jqXHR.responseText,status,jqXHR])})}),this},jQuery.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(i,type){jQuery.fn[type]=function(fn){return this.on(type,fn)}}),jQuery.expr.filters.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem}).length},jQuery.offset={setOffset:function(elem,options,i){var curPosition,curLeft,curCSSTop,curTop,curOffset,curCSSLeft,calculatePosition,position=jQuery.css(elem,"position"),curElem=jQuery(elem),props={};"static"===position&&(elem.style.position="relative"),curOffset=curElem.offset(),curCSSTop=jQuery.css(elem,"top"),curCSSLeft=jQuery.css(elem,"left"),calculatePosition=("absolute"===position||"fixed"===position)&&jQuery.inArray("auto",[curCSSTop,curCSSLeft])>-1,calculatePosition?(curPosition=curElem.position(),curTop=curPosition.top,curLeft=curPosition.left):(curTop=parseFloat(curCSSTop)||0,curLeft=parseFloat(curCSSLeft)||0),jQuery.isFunction(options)&&(options=options.call(elem,i,jQuery.extend({},curOffset))),null!=options.top&&(props.top=options.top-curOffset.top+curTop),null!=options.left&&(props.left=options.left-curOffset.left+curLeft),"using"in options?options.using.call(elem,props):curElem.css(props)}},jQuery.fn.extend({offset:function(options){if(arguments.length)return void 0===options?this:this.each(function(i){jQuery.offset.setOffset(this,options,i)});var docElem,win,box={top:0,left:0},elem=this[0],doc=elem&&elem.ownerDocument;if(doc)return docElem=doc.documentElement,jQuery.contains(docElem,elem)?("undefined"!=typeof elem.getBoundingClientRect&&(box=elem.getBoundingClientRect()),win=getWindow(doc),{top:box.top+(win.pageYOffset||docElem.scrollTop)-(docElem.clientTop||0),left:box.left+(win.pageXOffset||docElem.scrollLeft)-(docElem.clientLeft||0)}):box},position:function(){if(this[0]){var offsetParent,offset,parentOffset={top:0,left:0},elem=this[0];return"fixed"===jQuery.css(elem,"position")?offset=elem.getBoundingClientRect():(offsetParent=this.offsetParent(),offset=this.offset(),jQuery.nodeName(offsetParent[0],"html")||(parentOffset=offsetParent.offset()),parentOffset.top+=jQuery.css(offsetParent[0],"borderTopWidth",!0),parentOffset.left+=jQuery.css(offsetParent[0],"borderLeftWidth",!0)),{top:offset.top-parentOffset.top-jQuery.css(elem,"marginTop",!0),left:offset.left-parentOffset.left-jQuery.css(elem,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var offsetParent=this.offsetParent;offsetParent&&!jQuery.nodeName(offsetParent,"html")&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.offsetParent;return offsetParent||documentElement})}}),jQuery.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(method,prop){var top=/Y/.test(prop);jQuery.fn[method]=function(val){return access(this,function(elem,method,val){var win=getWindow(elem);return void 0===val?win?prop in win?win[prop]:win.document.documentElement[method]:elem[method]:void(win?win.scrollTo(top?jQuery(win).scrollLeft():val,top?val:jQuery(win).scrollTop()):elem[method]=val)},method,val,arguments.length,null)}}),jQuery.each(["top","left"],function(i,prop){jQuery.cssHooks[prop]=addGetHookIf(support.pixelPosition,function(elem,computed){if(computed)return computed=curCSS(elem,prop),rnumnonpx.test(computed)?jQuery(elem).position()[prop]+"px":computed})}),jQuery.each({Height:"height",Width:"width"},function(name,type){jQuery.each({padding:"inner"+name,content:type,"":"outer"+name},function(defaultExtra,funcName){jQuery.fn[funcName]=function(margin,value){var chainable=arguments.length&&(defaultExtra||"boolean"!=typeof margin),extra=defaultExtra||(margin===!0||value===!0?"margin":"border");return access(this,function(elem,type,value){var doc;return jQuery.isWindow(elem)?elem.document.documentElement["client"+name]:9===elem.nodeType?(doc=elem.documentElement,Math.max(elem.body["scroll"+name],doc["scroll"+name],elem.body["offset"+name],doc["offset"+name],doc["client"+name])):void 0===value?jQuery.css(elem,type,extra):jQuery.style(elem,type,value,extra)},type,chainable?margin:void 0,chainable,null)}})}),jQuery.fn.extend({bind:function(types,data,fn){return this.on(types,null,data,fn)},unbind:function(types,fn){return this.off(types,null,fn)},delegate:function(selector,types,data,fn){return this.on(types,selector,data,fn)},undelegate:function(selector,types,fn){return 1===arguments.length?this.off(selector,"**"):this.off(types,selector||"**",fn)}}),jQuery.fn.size=function(){return this.length},jQuery.fn.andSelf=jQuery.fn.addBack,jQuery}),function(factory){factory(jQuery)}(function($){$.ui=$.ui||{};var widgetUuid=($.ui.version="1.12.1",0),widgetSlice=Array.prototype.slice;$.cleanData=function(orig){return function(elems){var events,elem,i;for(i=0;null!=(elem=elems[i]);i++)try{events=$._data(elem,"events"),events&&events.remove&&$(elem).triggerHandler("remove")}catch(e){}orig(elems)}}($.cleanData),$.widget=function(name,base,prototype){var existingConstructor,constructor,basePrototype,proxiedPrototype={},namespace=name.split(".")[0];name=name.split(".")[1];var fullName=namespace+"-"+name;return prototype||(prototype=base,base=$.Widget),$.isArray(prototype)&&(prototype=$.extend.apply(null,[{}].concat(prototype))),$.expr[":"][fullName.toLowerCase()]=function(elem){return!!$.data(elem,fullName)},$[namespace]=$[namespace]||{},existingConstructor=$[namespace][name],constructor=$[namespace][name]=function(options,element){return this._createWidget?void(arguments.length&&this._createWidget(options,element)):new constructor(options,element)},$.extend(constructor,existingConstructor,{version:prototype.version,_proto:$.extend({},prototype),_childConstructors:[]}),basePrototype=new base,basePrototype.options=$.widget.extend({},basePrototype.options),$.each(prototype,function(prop,value){return $.isFunction(value)?void(proxiedPrototype[prop]=function(){function _super(){return base.prototype[prop].apply(this,arguments)}function _superApply(args){return base.prototype[prop].apply(this,args)}return function(){var returnValue,__super=this._super,__superApply=this._superApply;return this._super=_super,this._superApply=_superApply,returnValue=value.apply(this,arguments),this._super=__super,this._superApply=__superApply,returnValue}}()):void(proxiedPrototype[prop]=value)}),constructor.prototype=$.widget.extend(basePrototype,{widgetEventPrefix:existingConstructor?basePrototype.widgetEventPrefix||name:name},proxiedPrototype,{constructor:constructor,namespace:namespace,widgetName:name,widgetFullName:fullName}),existingConstructor?($.each(existingConstructor._childConstructors,function(i,child){var childPrototype=child.prototype;$.widget(childPrototype.namespace+"."+childPrototype.widgetName,constructor,child._proto)}),delete existingConstructor._childConstructors):base._childConstructors.push(constructor),$.widget.bridge(name,constructor),constructor},$.widget.extend=function(target){for(var key,value,input=widgetSlice.call(arguments,1),inputIndex=0,inputLength=input.length;inputIndex",options:{classes:{},disabled:!1,create:null},_createWidget:function(options,element){element=$(element||this.defaultElement||this)[0],this.element=$(element),this.uuid=widgetUuid++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=$(),this.hoverable=$(),this.focusable=$(),this.classesElementLookup={},element!==this&&($.data(element,this.widgetFullName,this),this._on(!0,this.element,{remove:function(event){event.target===element&&this.destroy()}}),this.document=$(element.style?element.ownerDocument:element.document||element),this.window=$(this.document[0].defaultView||this.document[0].parentWindow)),this.options=$.widget.extend({},this.options,this._getCreateOptions(),options),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:$.noop,_create:$.noop,_init:$.noop,destroy:function(){var that=this;this._destroy(),$.each(this.classesElementLookup,function(key,value){that._removeClass(value,key)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:$.noop,widget:function(){return this.element},option:function(key,value){var parts,curOption,i,options=key;if(0===arguments.length)return $.widget.extend({},this.options);if("string"==typeof key)if(options={},parts=key.split("."),key=parts.shift(),parts.length){for(curOption=options[key]=$.widget.extend({},this.options[key]),i=0;i=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),$.ui.plugin={add:function(module,option,set){var i,proto=$.ui[module].prototype;for(i in set)proto.plugins[i]=proto.plugins[i]||[],proto.plugins[i].push([option,set[i]])},call:function(instance,name,args,allowDisconnected){var i,set=instance.plugins[name];if(set&&(allowDisconnected||instance.element[0].parentNode&&11!==instance.element[0].parentNode.nodeType))for(i=0;i0)&&(this.handle=this._getHandle(event),!!this.handle&&(this._blurActiveElement(event),this._blockFrames(o.iframeFix===!0?"iframe":o.iframeFix),!0))},_blockFrames:function(selector){this.iframeBlocks=this.document.find(selector).map(function(){var iframe=$(this);return $("
").css("position","absolute").appendTo(iframe.parent()).outerWidth(iframe.outerWidth()).outerHeight(iframe.outerHeight()).offset(iframe.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(event){var activeElement=$.ui.safeActiveElement(this.document[0]),target=$(event.target);target.closest(activeElement).length||$.ui.safeBlur(activeElement)},_mouseStart:function(event){var o=this.options;return this.helper=this._createHelper(event),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),$.ui.ddmanager&&($.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===$(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(event),this.originalPosition=this.position=this._generatePosition(event,!1),this.originalPageX=event.pageX,this.originalPageY=event.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this._setContainment(),this._trigger("start",event)===!1?(this._clear(),!1):(this._cacheHelperProportions(),$.ui.ddmanager&&!o.dropBehaviour&&$.ui.ddmanager.prepareOffsets(this,event),this._mouseDrag(event,!0),$.ui.ddmanager&&$.ui.ddmanager.dragStart(this,event),!0)},_refreshOffsets:function(event){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:event.pageX-this.offset.left,top:event.pageY-this.offset.top}},_mouseDrag:function(event,noPropagation){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(event,!0),this.positionAbs=this._convertPositionTo("absolute"),!noPropagation){var ui=this._uiHash();if(this._trigger("drag",event,ui)===!1)return this._mouseUp(new $.Event("mouseup",event)),!1;this.position=ui.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",$.ui.ddmanager&&$.ui.ddmanager.drag(this,event),!1},_mouseStop:function(event){var that=this,dropped=!1;return $.ui.ddmanager&&!this.options.dropBehaviour&&(dropped=$.ui.ddmanager.drop(this,event)),this.dropped&&(dropped=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!dropped||"valid"===this.options.revert&&dropped||this.options.revert===!0||$.isFunction(this.options.revert)&&this.options.revert.call(this.element,dropped)?$(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){that._trigger("stop",event)!==!1&&that._clear()}):this._trigger("stop",event)!==!1&&this._clear(),!1},_mouseUp:function(event){return this._unblockFrames(),$.ui.ddmanager&&$.ui.ddmanager.dragStop(this,event),this.handleElement.is(event.target)&&this.element.trigger("focus"),$.ui.mouse.prototype._mouseUp.call(this,event)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new $.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(event){return!this.options.handle||!!$(event.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(event){var o=this.options,helperIsFunction=$.isFunction(o.helper),helper=helperIsFunction?$(o.helper.apply(this.element[0],[event])):"clone"===o.helper?this.element.clone().removeAttr("id"):this.element;return helper.parents("body").length||helper.appendTo("parent"===o.appendTo?this.element[0].parentNode:o.appendTo),helperIsFunction&&helper[0]===this.element[0]&&this._setPositionRelative(),helper[0]===this.element[0]||/(fixed|absolute)/.test(helper.css("position"))||helper.css("position","absolute"),helper},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(obj){"string"==typeof obj&&(obj=obj.split(" ")),$.isArray(obj)&&(obj={left:+obj[0],top:+obj[1]||0}),"left"in obj&&(this.offset.click.left=obj.left+this.margins.left),"right"in obj&&(this.offset.click.left=this.helperProportions.width-obj.right+this.margins.left),"top"in obj&&(this.offset.click.top=obj.top+this.margins.top),"bottom"in obj&&(this.offset.click.top=this.helperProportions.height-obj.bottom+this.margins.top)},_isRootNode:function(element){return/(html|body)/i.test(element.tagName)||element===this.document[0]},_getParentOffset:function(){var po=this.offsetParent.offset(),document=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&$.contains(this.scrollParent[0],this.offsetParent[0])&&(po.left+=this.scrollParent.scrollLeft(),po.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(po={top:0,left:0}),{top:po.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:po.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var p=this.element.position(),scrollIsRootNode=this._isRootNode(this.scrollParent[0]);return{top:p.top-(parseInt(this.helper.css("top"),10)||0)+(scrollIsRootNode?0:this.scrollParent.scrollTop()),left:p.left-(parseInt(this.helper.css("left"),10)||0)+(scrollIsRootNode?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var isUserScrollable,c,ce,o=this.options,document=this.document[0];return this.relativeContainer=null,o.containment?"window"===o.containment?void(this.containment=[$(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,$(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,$(window).scrollLeft()+$(window).width()-this.helperProportions.width-this.margins.left,$(window).scrollTop()+($(window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]):"document"===o.containment?void(this.containment=[0,0,$(document).width()-this.helperProportions.width-this.margins.left,($(document).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]):o.containment.constructor===Array?void(this.containment=o.containment):("parent"===o.containment&&(o.containment=this.helper[0].parentNode),c=$(o.containment),ce=c[0],void(ce&&(isUserScrollable=/(scroll|auto)/.test(c.css("overflow")),this.containment=[(parseInt(c.css("borderLeftWidth"),10)||0)+(parseInt(c.css("paddingLeft"),10)||0),(parseInt(c.css("borderTopWidth"),10)||0)+(parseInt(c.css("paddingTop"),10)||0),(isUserScrollable?Math.max(ce.scrollWidth,ce.offsetWidth):ce.offsetWidth)-(parseInt(c.css("borderRightWidth"),10)||0)-(parseInt(c.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(isUserScrollable?Math.max(ce.scrollHeight,ce.offsetHeight):ce.offsetHeight)-(parseInt(c.css("borderBottomWidth"),10)||0)-(parseInt(c.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=c))):void(this.containment=null)},_convertPositionTo:function(d,pos){pos||(pos=this.position);var mod="absolute"===d?1:-1,scrollIsRootNode=this._isRootNode(this.scrollParent[0]);return{top:pos.top+this.offset.relative.top*mod+this.offset.parent.top*mod-("fixed"===this.cssPosition?-this.offset.scroll.top:scrollIsRootNode?0:this.offset.scroll.top)*mod,left:pos.left+this.offset.relative.left*mod+this.offset.parent.left*mod-("fixed"===this.cssPosition?-this.offset.scroll.left:scrollIsRootNode?0:this.offset.scroll.left)*mod}},_generatePosition:function(event,constrainPosition){var containment,co,top,left,o=this.options,scrollIsRootNode=this._isRootNode(this.scrollParent[0]),pageX=event.pageX,pageY=event.pageY;return scrollIsRootNode&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),constrainPosition&&(this.containment&&(this.relativeContainer?(co=this.relativeContainer.offset(),containment=[this.containment[0]+co.left,this.containment[1]+co.top,this.containment[2]+co.left,this.containment[3]+co.top]):containment=this.containment,event.pageX-this.offset.click.leftcontainment[2]&&(pageX=containment[2]+this.offset.click.left),event.pageY-this.offset.click.top>containment[3]&&(pageY=containment[3]+this.offset.click.top)),o.grid&&(top=o.grid[1]?this.originalPageY+Math.round((pageY-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,pageY=containment?top-this.offset.click.top>=containment[1]||top-this.offset.click.top>containment[3]?top:top-this.offset.click.top>=containment[1]?top-o.grid[1]:top+o.grid[1]:top,left=o.grid[0]?this.originalPageX+Math.round((pageX-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,pageX=containment?left-this.offset.click.left>=containment[0]||left-this.offset.click.left>containment[2]?left:left-this.offset.click.left>=containment[0]?left-o.grid[0]:left+o.grid[0]:left),"y"===o.axis&&(pageX=this.originalPageX),"x"===o.axis&&(pageY=this.originalPageY)),{top:pageY-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:scrollIsRootNode?0:this.offset.scroll.top),left:pageX-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:scrollIsRootNode?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(type,event,ui){return ui=ui||this._uiHash(),$.ui.plugin.call(this,type,[event,ui,this],!0),/^(drag|start|stop)/.test(type)&&(this.positionAbs=this._convertPositionTo("absolute"),ui.offset=this.positionAbs),$.Widget.prototype._trigger.call(this,type,event,ui)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),$.ui.plugin.add("draggable","connectToSortable",{start:function(event,ui,draggable){var uiSortable=$.extend({},ui,{item:draggable.element});draggable.sortables=[],$(draggable.options.connectToSortable).each(function(){var sortable=$(this).sortable("instance");sortable&&!sortable.options.disabled&&(draggable.sortables.push(sortable),sortable.refreshPositions(),sortable._trigger("activate",event,uiSortable))})},stop:function(event,ui,draggable){var uiSortable=$.extend({},ui,{item:draggable.element});draggable.cancelHelperRemoval=!1,$.each(draggable.sortables,function(){var sortable=this;sortable.isOver?(sortable.isOver=0,draggable.cancelHelperRemoval=!0,sortable.cancelHelperRemoval=!1,sortable._storedCSS={position:sortable.placeholder.css("position"),top:sortable.placeholder.css("top"),left:sortable.placeholder.css("left")},sortable._mouseStop(event),sortable.options.helper=sortable.options._helper):(sortable.cancelHelperRemoval=!0,sortable._trigger("deactivate",event,uiSortable))})},drag:function(event,ui,draggable){$.each(draggable.sortables,function(){var innermostIntersecting=!1,sortable=this;sortable.positionAbs=draggable.positionAbs,sortable.helperProportions=draggable.helperProportions,sortable.offset.click=draggable.offset.click,sortable._intersectsWith(sortable.containerCache)&&(innermostIntersecting=!0,$.each(draggable.sortables,function(){return this.positionAbs=draggable.positionAbs,this.helperProportions=draggable.helperProportions,this.offset.click=draggable.offset.click,this!==sortable&&this._intersectsWith(this.containerCache)&&$.contains(sortable.element[0],this.element[0])&&(innermostIntersecting=!1),innermostIntersecting})),innermostIntersecting?(sortable.isOver||(sortable.isOver=1,draggable._parent=ui.helper.parent(),sortable.currentItem=ui.helper.appendTo(sortable.element).data("ui-sortable-item",!0),sortable.options._helper=sortable.options.helper,sortable.options.helper=function(){return ui.helper[0]},event.target=sortable.currentItem[0],sortable._mouseCapture(event,!0),sortable._mouseStart(event,!0,!0),sortable.offset.click.top=draggable.offset.click.top,sortable.offset.click.left=draggable.offset.click.left,sortable.offset.parent.left-=draggable.offset.parent.left-sortable.offset.parent.left,sortable.offset.parent.top-=draggable.offset.parent.top-sortable.offset.parent.top,draggable._trigger("toSortable",event),draggable.dropped=sortable.element,$.each(draggable.sortables,function(){this.refreshPositions()}),draggable.currentItem=draggable.element,sortable.fromOutside=draggable),sortable.currentItem&&(sortable._mouseDrag(event),ui.position=sortable.position)):sortable.isOver&&(sortable.isOver=0,sortable.cancelHelperRemoval=!0,sortable.options._revert=sortable.options.revert,sortable.options.revert=!1,sortable._trigger("out",event,sortable._uiHash(sortable)),sortable._mouseStop(event,!0),sortable.options.revert=sortable.options._revert,sortable.options.helper=sortable.options._helper,sortable.placeholder&&sortable.placeholder.remove(),ui.helper.appendTo(draggable._parent),draggable._refreshOffsets(event),ui.position=draggable._generatePosition(event,!0),draggable._trigger("fromSortable",event),draggable.dropped=!1,$.each(draggable.sortables,function(){this.refreshPositions()}))})}}),$.ui.plugin.add("draggable","cursor",{start:function(event,ui,instance){var t=$("body"),o=instance.options;t.css("cursor")&&(o._cursor=t.css("cursor")),t.css("cursor",o.cursor)},stop:function(event,ui,instance){var o=instance.options;o._cursor&&$("body").css("cursor",o._cursor)}}),$.ui.plugin.add("draggable","opacity",{start:function(event,ui,instance){var t=$(ui.helper),o=instance.options;t.css("opacity")&&(o._opacity=t.css("opacity")),t.css("opacity",o.opacity)},stop:function(event,ui,instance){var o=instance.options;o._opacity&&$(ui.helper).css("opacity",o._opacity)}}),$.ui.plugin.add("draggable","scroll",{start:function(event,ui,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(event,ui,i){var o=i.options,scrolled=!1,scrollParent=i.scrollParentNotHidden[0],document=i.document[0];scrollParent!==document&&"HTML"!==scrollParent.tagName?(o.axis&&"x"===o.axis||(i.overflowOffset.top+scrollParent.offsetHeight-event.pageY=0;i--)l=inst.snapElements[i].left-inst.margins.left,r=l+inst.snapElements[i].width,t=inst.snapElements[i].top-inst.margins.top,b=t+inst.snapElements[i].height,x2r+d||y2b+d||!$.contains(inst.snapElements[i].item.ownerDocument,inst.snapElements[i].item)?(inst.snapElements[i].snapping&&inst.options.snap.release&&inst.options.snap.release.call(inst.element,event,$.extend(inst._uiHash(),{snapItem:inst.snapElements[i].item})),inst.snapElements[i].snapping=!1):("inner"!==o.snapMode&&(ts=Math.abs(t-y2)<=d,bs=Math.abs(b-y1)<=d,ls=Math.abs(l-x2)<=d,rs=Math.abs(r-x1)<=d,ts&&(ui.position.top=inst._convertPositionTo("relative",{top:t-inst.helperProportions.height,left:0}).top),bs&&(ui.position.top=inst._convertPositionTo("relative",{top:b,left:0}).top),ls&&(ui.position.left=inst._convertPositionTo("relative",{top:0,left:l-inst.helperProportions.width}).left),rs&&(ui.position.left=inst._convertPositionTo("relative",{top:0,left:r}).left)),first=ts||bs||ls||rs,"outer"!==o.snapMode&&(ts=Math.abs(t-y1)<=d,bs=Math.abs(b-y2)<=d,ls=Math.abs(l-x1)<=d,rs=Math.abs(r-x2)<=d,ts&&(ui.position.top=inst._convertPositionTo("relative",{top:t,left:0}).top),bs&&(ui.position.top=inst._convertPositionTo("relative",{top:b-inst.helperProportions.height,left:0}).top),ls&&(ui.position.left=inst._convertPositionTo("relative",{top:0,left:l}).left),rs&&(ui.position.left=inst._convertPositionTo("relative",{top:0,left:r-inst.helperProportions.width}).left)),!inst.snapElements[i].snapping&&(ts||bs||ls||rs||first)&&inst.options.snap.snap&&inst.options.snap.snap.call(inst.element,event,$.extend(inst._uiHash(),{snapItem:inst.snapElements[i].item})),inst.snapElements[i].snapping=ts||bs||ls||rs||first)}}),$.ui.plugin.add("draggable","stack",{start:function(event,ui,instance){var min,o=instance.options,group=$.makeArray($(o.stack)).sort(function(a,b){return(parseInt($(a).css("zIndex"),10)||0)-(parseInt($(b).css("zIndex"),10)||0)});group.length&&(min=parseInt($(group[0]).css("zIndex"),10)||0,$(group).each(function(i){$(this).css("zIndex",min+i)}),this.css("zIndex",min+group.length))}}),$.ui.plugin.add("draggable","zIndex",{start:function(event,ui,instance){var t=$(ui.helper),o=instance.options;t.css("zIndex")&&(o._zIndex=t.css("zIndex")),t.css("zIndex",o.zIndex)},stop:function(event,ui,instance){var o=instance.options;o._zIndex&&$(ui.helper).css("zIndex",o._zIndex)}});$.ui.draggable});var _=function(obj){return obj instanceof _?obj:this instanceof _?void(this._wrapped=obj):new _(obj)};!function(){function createReduce(dir){function iterator(obj,iteratee,memo,keys,index,length){for(;index>=0&&index0?0:length-1;return arguments.length<3&&(memo=obj[keys?keys[index]:index],index+=dir),iterator(obj,iteratee,memo,keys,index,length)}}function createPredicateIndexFinder(dir){return function(array,predicate,context){predicate=cb(predicate,context);for(var length=getLength(array),index=dir>0?0:length-1;index>=0&&index0?i=idx>=0?idx:Math.max(idx+length,i):length=idx>=0?Math.min(idx+1,length):idx+length+1;else if(sortedIndex&&idx&&length)return idx=sortedIndex(array,item),array[idx]===item?idx:-1;if(item!==item)return idx=predicateFind(slice.call(array,i,length),_.isNaN),idx>=0?idx+i:-1;for(idx=dir>0?i:length-1;idx>=0&&idx=0&&length<=MAX_ARRAY_INDEX};_.each=_.forEach=function(obj,iteratee,context){iteratee=optimizeCb(iteratee,context);var i,length;if(isArrayLike(obj))for(i=0,length=obj.length;i=0},_.invoke=function(obj,method){var args=slice.call(arguments,2),isFunc=_.isFunction(method);return _.map(obj,function(value){var func=isFunc?method:value[method];return null==func?func:func.apply(value,args)})},_.pluck=function(obj,key){return _.map(obj,_.property(key))},_.where=function(obj,attrs){return _.filter(obj,_.matcher(attrs))},_.findWhere=function(obj,attrs){return _.find(obj,_.matcher(attrs))},_.max=function(obj,iteratee,context){var value,computed,result=-(1/0),lastComputed=-(1/0);if(null==iteratee&&null!=obj){obj=isArrayLike(obj)?obj:_.values(obj);for(var i=0,length=obj.length;iresult&&(result=value)}else iteratee=cb(iteratee,context),_.each(obj,function(value,index,list){computed=iteratee(value,index,list),(computed>lastComputed||computed===-(1/0)&&result===-(1/0))&&(result=value,lastComputed=computed)});return result},_.min=function(obj,iteratee,context){var value,computed,result=1/0,lastComputed=1/0;if(null==iteratee&&null!=obj){obj=isArrayLike(obj)?obj:_.values(obj);for(var i=0,length=obj.length;ib||void 0===a)return 1;if(await?(timeout&&(clearTimeout(timeout),timeout=null),previous=now,result=func.apply(context,args),timeout||(context=args=null)):timeout||options.trailing===!1||(timeout=setTimeout(later,remaining)),result}},_.debounce=function(func,wait,immediate){var timeout,args,context,timestamp,result,later=function(){var last=_.now()-timestamp;last=0?timeout=setTimeout(later,wait-last):(timeout=null,immediate||(result=func.apply(context,args),timeout||(context=args=null)))};return function(){context=this,args=arguments,timestamp=_.now();var callNow=immediate&&!timeout;return timeout||(timeout=setTimeout(later,wait)),callNow&&(result=func.apply(context,args),context=args=null),result}},_.wrap=function(func,wrapper){return _.partial(wrapper,func)},_.negate=function(predicate){return function(){return!predicate.apply(this,arguments)}},_.compose=function(){var args=arguments,start=args.length-1;return function(){for(var i=start,result=args[start].apply(this,arguments);i--;)result=args[i].call(this,result);return result}},_.after=function(times,func){return function(){if(--times<1)return func.apply(this,arguments)}},_.before=function(times,func){var memo;return function(){return--times>0&&(memo=func.apply(this,arguments)),times<=1&&(func=null),memo}},_.once=_.partial(_.before,2);var hasEnumBug=!{toString:null}.propertyIsEnumerable("toString"),nonEnumerableProps=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];_.keys=function(obj){if(!_.isObject(obj))return[];if(nativeKeys)return nativeKeys(obj);var keys=[];for(var key in obj)_.has(obj,key)&&keys.push(key);return hasEnumBug&&collectNonEnumProps(obj,keys),keys},_.allKeys=function(obj){if(!_.isObject(obj))return[];var keys=[];for(var key in obj)keys.push(key);return hasEnumBug&&collectNonEnumProps(obj,keys),keys},_.values=function(obj){for(var keys=_.keys(obj),length=keys.length,values=Array(length),i=0;i":">",'"':""","'":"'","`":"`"},unescapeMap=_.invert(escapeMap),createEscaper=function(map){var escaper=function(match){return map[match]},source="(?:"+_.keys(map).join("|")+")",testRegexp=RegExp(source),replaceRegexp=RegExp(source,"g");return function(string){return string=null==string?"":""+string,testRegexp.test(string)?string.replace(replaceRegexp,escaper):string}};_.escape=createEscaper(escapeMap),_.unescape=createEscaper(unescapeMap),_.result=function(object,property,fallback){var value=null==object?void 0:object[property];return void 0===value&&(value=fallback),_.isFunction(value)?value.call(object):value};var idCounter=0;_.uniqueId=function(prefix){var id=++idCounter+"";return prefix?prefix+id:id},_.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var noMatch=/(.)^/,escapes={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},escaper=/\\|'|\r|\n|\u2028|\u2029/g,escapeChar=function(match){return"\\"+escapes[match]};_.template=function(text,settings,oldSettings){!settings&&oldSettings&&(settings=oldSettings),settings=_.defaults({},settings,_.templateSettings);var matcher=RegExp([(settings.escape||noMatch).source,(settings.interpolate||noMatch).source,(settings.evaluate||noMatch).source].join("|")+"|$","g"),index=0,source="__p+='";text.replace(matcher,function(match,escape,interpolate,evaluate,offset){return source+=text.slice(index,offset).replace(escaper,escapeChar),index=offset+match.length,escape?source+="'+\n((__t=("+escape+"))==null?'':_.escape(__t))+\n'":interpolate?source+="'+\n((__t=("+interpolate+"))==null?'':__t)+\n'":evaluate&&(source+="';\n"+evaluate+"\n__p+='"),match}),source+="';\n",settings.variable||(source="with(obj||{}){\n"+source+"}\n"),source="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+source+"return __p;\n";try{var render=new Function(settings.variable||"obj","_",source)}catch(e){throw e.source=source,e}var template=function(data){return render.call(this,data,_)},argument=settings.variable||"obj";return template.source="function("+argument+"){\n"+source+"}",template},_.chain=function(obj){var instance=_(obj);return instance._chain=!0,instance};var result=function(instance,obj){return instance._chain?_(obj).chain():obj};_.mixin=function(obj){_.each(_.functions(obj),function(name){var func=_[name]=obj[name];_.prototype[name]=function(){var args=[this._wrapped];return push.apply(args,arguments),result(this,func.apply(_,args))}})},_.mixin(_),_.each(["pop","push","reverse","shift","sort","splice","unshift"],function(name){var method=ArrayProto[name];_.prototype[name]=function(){var obj=this._wrapped;return method.apply(obj,arguments),"shift"!==name&&"splice"!==name||0!==obj.length||delete obj[0],result(this,obj)}}),_.each(["concat","join","slice"],function(name){var method=ArrayProto[name];_.prototype[name]=function(){return result(this,method.apply(this._wrapped,arguments))}}),_.prototype.value=function(){return this._wrapped},_.prototype.valueOf=_.prototype.toJSON=_.prototype.value,_.prototype.toString=function(){return""+this._wrapped}}();var USE_TYPEDARRAY=!0,Zlib={Huffman:{},Util:{},CRC32:{}};Zlib.CompressionMethod={DEFLATE:8,RESERVED:15},Zlib.Zip=function(opt_params){opt_params=opt_params||{},this.files=[],this.comment=opt_params.comment,this.password},Zlib.Zip.CompressionMethod={STORE:0,DEFLATE:8},Zlib.Zip.OperatingSystem={MSDOS:0,UNIX:3,MACINTOSH:7},Zlib.Zip.Flags={ENCRYPT:1,DESCRIPTOR:8,UTF8:2048},Zlib.Zip.FileHeaderSignature=[80,75,1,2],Zlib.Zip.LocalFileHeaderSignature=[80,75,3,4],Zlib.Zip.CentralDirectorySignature=[80,75,5,6],Zlib.Zip.prototype.addFile=function(input,opt_params){opt_params=opt_params||{};var compressed,size=(opt_params.filename,input.length),crc32=0;if(USE_TYPEDARRAY&&input instanceof Array&&(input=new Uint8Array(input)),"number"!=typeof opt_params.compressionMethod&&(opt_params.compressionMethod=Zlib.Zip.CompressionMethod.DEFLATE),opt_params.compress)switch(opt_params.compressionMethod){case Zlib.Zip.CompressionMethod.STORE:break;case Zlib.Zip.CompressionMethod.DEFLATE:crc32=Zlib.CRC32.calc(input),input=this.deflateWithOption(input,opt_params),compressed=!0;break;default:throw new Error("unknown compression method:"+opt_params.compressionMethod)}this.files.push({buffer:input,option:opt_params,compressed:compressed,encrypted:!1,size:size,crc32:crc32})},Zlib.Zip.prototype.setPassword=function(password){this.password=password},Zlib.Zip.prototype.compress=function(){var file,output,op1,op2,op3,endOfCentralDirectorySize,offset,needVersion,flags,compressionMethod,date,crc32,size,plainSize,filenameLength,extraFieldLength,commentLength,filename,extraField,comment,buffer,tmp,key,i,il,j,jl,files=this.files,localFileSize=0,centralDirectorySize=0;for(i=0,il=files.length;i>8&255,flags=0,(file.option.password||this.password)&&(flags|=Zlib.Zip.Flags.ENCRYPT),output[op1++]=output[op2++]=255&flags,output[op1++]=output[op2++]=flags>>8&255,compressionMethod=file.option.compressionMethod,output[op1++]=output[op2++]=255&compressionMethod,output[op1++]=output[op2++]=compressionMethod>>8&255,date=file.option.date||new Date,output[op1++]=output[op2++]=(7&date.getMinutes())<<5|(date.getSeconds()/2|0),output[op1++]=output[op2++]=date.getHours()<<3|date.getMinutes()>>3,output[op1++]=output[op2++]=(date.getMonth()+1&7)<<5|date.getDate(),output[op1++]=output[op2++]=(date.getFullYear()-1980&127)<<1|date.getMonth()+1>>3,crc32=file.crc32,output[op1++]=output[op2++]=255&crc32,output[op1++]=output[op2++]=crc32>>8&255,output[op1++]=output[op2++]=crc32>>16&255,output[op1++]=output[op2++]=crc32>>24&255,size=file.buffer.length,output[op1++]=output[op2++]=255&size,output[op1++]=output[op2++]=size>>8&255,output[op1++]=output[op2++]=size>>16&255,output[op1++]=output[op2++]=size>>24&255,plainSize=file.size,output[op1++]=output[op2++]=255&plainSize,output[op1++]=output[op2++]=plainSize>>8&255,output[op1++]=output[op2++]=plainSize>>16&255,output[op1++]=output[op2++]=plainSize>>24&255,output[op1++]=output[op2++]=255&filenameLength,output[op1++]=output[op2++]=filenameLength>>8&255,output[op1++]=output[op2++]=255&extraFieldLength,output[op1++]=output[op2++]=extraFieldLength>>8&255,output[op2++]=255&commentLength,output[op2++]=commentLength>>8&255,output[op2++]=0,output[op2++]=0,output[op2++]=0,output[op2++]=0,output[op2++]=0,output[op2++]=0,output[op2++]=0,output[op2++]=0,output[op2++]=255&offset,output[op2++]=offset>>8&255,output[op2++]=offset>>16&255,output[op2++]=offset>>24&255,filename=file.option.filename)if(USE_TYPEDARRAY)output.set(filename,op1),output.set(filename,op2),op1+=filenameLength,op2+=filenameLength;else for(j=0;j>8&255,output[op3++]=255&il,output[op3++]=il>>8&255,output[op3++]=255¢ralDirectorySize,output[op3++]=centralDirectorySize>>8&255,output[op3++]=centralDirectorySize>>16&255,output[op3++]=centralDirectorySize>>24&255,output[op3++]=255&localFileSize,output[op3++]=localFileSize>>8&255,output[op3++]=localFileSize>>16&255,output[op3++]=localFileSize>>24&255,commentLength=this.comment?this.comment.length:0,output[op3++]=255&commentLength,output[op3++]=commentLength>>8&255,this.comment)if(USE_TYPEDARRAY)output.set(this.comment,op3),op3+=commentLength;else for(j=0,jl=commentLength;j>8&255},Zlib.Zip.prototype.encode=function(key,n){var tmp=this.getByte(key);return this.updateKeys(key,n),tmp^n},Zlib.Zip.prototype.updateKeys=function(key,n){key[0]=Zlib.CRC32.single(key[0],n),key[1]=(6681*(20173*(key[1]+(255&key[0]))>>>0)>>>0)+1>>>0,key[2]=Zlib.CRC32.single(key[2],key[1]>>>24)},Zlib.Zip.prototype.createEncryptionKey=function(password){var i,il,key=[305419896,591751049,878082192];for(USE_TYPEDARRAY&&(key=new Uint32Array(key)),i=0,il=password.length;imaxCodeLength&&(maxCodeLength=lengths[i]),lengths[i]>=1;for(value=bitLength<<16|i,j=reversed;j>>=1){case 0:this.parseUncompressedBlock();break;case 1:this.parseFixedHuffmanBlock();break;case 2:this.parseDynamicHuffmanBlock();break;default:throw new Error("unknown BTYPE: "+hdr)}},Zlib.RawInflate.prototype.readBits=function(length){var octet,bitsbuf=this.bitsbuf,bitsbuflen=this.bitsbuflen,input=this.input,ip=this.ip,inputLength=input.length;if(ip+(length-bitsbuflen+7>>3)>=inputLength)throw new Error("input buffer is broken");for(;bitsbuflen>>=length,bitsbuflen-=length,this.bitsbuf=bitsbuf,this.bitsbuflen=bitsbuflen,this.ip=ip,octet},Zlib.RawInflate.prototype.readCodeByTable=function(table){for(var codeWithLength,codeLength,bitsbuf=this.bitsbuf,bitsbuflen=this.bitsbuflen,input=this.input,ip=this.ip,inputLength=input.length,codeTable=table[0],maxCodeLength=table[1];bitsbuflen=inputLength);)bitsbuf|=input[ip++]<>>16,codeLength>bitsbuflen)throw new Error("invalid code length: "+codeLength);return this.bitsbuf=bitsbuf>>codeLength,this.bitsbuflen=bitsbuflen-codeLength,this.ip=ip,65535&codeWithLength},Zlib.RawInflate.prototype.parseUncompressedBlock=function(){var len,nlen,preCopy,input=this.input,ip=this.ip,output=this.output,op=this.op,inputLength=input.length,olength=output.length;if(this.bitsbuf=0,this.bitsbuflen=0,ip+1>=inputLength)throw new Error("invalid uncompressed block header: LEN");if(len=input[ip++]|input[ip++]<<8,ip+1>=inputLength)throw new Error("invalid uncompressed block header: NLEN");if(nlen=input[ip++]|input[ip++]<<8,len===~nlen)throw new Error("invalid uncompressed block header: length verify");if(ip+len>input.length)throw new Error("input buffer is broken");switch(this.bufferType){case Zlib.RawInflate.BufferType.BLOCK:for(;op+len>output.length;){if(preCopy=olength-op,len-=preCopy,USE_TYPEDARRAY)output.set(input.subarray(ip,ip+preCopy),op),op+=preCopy,ip+=preCopy;else for(;preCopy--;)output[op++]=input[ip++];this.op=op,output=this.expandBufferBlock(),op=this.op}break;case Zlib.RawInflate.BufferType.ADAPTIVE:for(;op+len>output.length;)output=this.expandBufferAdaptive({fixRatio:2});break;default:throw new Error("invalid inflate mode")}if(USE_TYPEDARRAY)output.set(input.subarray(ip,ip+len),op),op+=len,ip+=len;else for(;len--;)output[op++]=input[ip++];this.ip=ip,this.op=op,this.output=output},Zlib.RawInflate.prototype.parseFixedHuffmanBlock=function(){switch(this.bufferType){case Zlib.RawInflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(Zlib.RawInflate.FixedLiteralLengthTable,Zlib.RawInflate.FixedDistanceTable);break;case Zlib.RawInflate.BufferType.BLOCK:this.decodeHuffmanBlock(Zlib.RawInflate.FixedLiteralLengthTable,Zlib.RawInflate.FixedDistanceTable);break;default:throw new Error("invalid inflate mode")}},Zlib.RawInflate.prototype.parseDynamicHuffmanBlock=function(){var codeLengthsTable,litlenTable,distTable,lengthTable,code,prev,repeat,i,il,hlit=this.readBits(5)+257,hdist=this.readBits(5)+1,hclen=this.readBits(4)+4,codeLengths=new(USE_TYPEDARRAY?Uint8Array:Array)(Zlib.RawInflate.Order.length);for(i=0;i=olength&&(this.op=op,output=this.expandBufferBlock(),op=this.op),output[op++]=code;else for(ti=code-257,codeLength=lengthCodeTable[ti],lengthExtraTable[ti]>0&&(codeLength+=this.readBits(lengthExtraTable[ti])),code=this.readCodeByTable(dist),codeDist=distCodeTable[code],distExtraTable[code]>0&&(codeDist+=this.readBits(distExtraTable[code])),op>=olength&&(this.op=op,output=this.expandBufferBlock(),op=this.op);codeLength--;)output[op]=output[op++-codeDist];for(;this.bitsbuflen>=8;)this.bitsbuflen-=8,this.ip--;this.op=op},Zlib.RawInflate.prototype.decodeHuffmanAdaptive=function(litlen,dist){var output=this.output,op=this.op;this.currentLitlenTable=litlen;for(var code,ti,codeDist,codeLength,olength=output.length,lengthCodeTable=Zlib.RawInflate.LengthCodeTable,lengthExtraTable=Zlib.RawInflate.LengthExtraTable,distCodeTable=Zlib.RawInflate.DistCodeTable,distExtraTable=Zlib.RawInflate.DistExtraTable;256!==(code=this.readCodeByTable(litlen));)if(code<256)op>=olength&&(output=this.expandBufferAdaptive(),olength=output.length),output[op++]=code;else for(ti=code-257,codeLength=lengthCodeTable[ti],lengthExtraTable[ti]>0&&(codeLength+=this.readBits(lengthExtraTable[ti])),code=this.readCodeByTable(dist),codeDist=distCodeTable[code],distExtraTable[code]>0&&(codeDist+=this.readBits(distExtraTable[code])),op+codeLength>olength&&(output=this.expandBufferAdaptive(),olength=output.length);codeLength--;)output[op]=output[op++-codeDist];for(;this.bitsbuflen>=8;)this.bitsbuflen-=8,this.ip--;this.op=op},Zlib.RawInflate.prototype.expandBufferBlock=function(opt_param){var i,il,buffer=new(USE_TYPEDARRAY?Uint8Array:Array)(this.op-Zlib.RawInflate.MaxBackwardLength),backward=this.op-Zlib.RawInflate.MaxBackwardLength,output=this.output;if(USE_TYPEDARRAY)buffer.set(output.subarray(Zlib.RawInflate.MaxBackwardLength,buffer.length));else for(i=0,il=buffer.length;iop&&(this.output.length=op),buffer=this.output),this.buffer=buffer,this.buffer};var buildHuffmanTable=Zlib.Huffman.buildHuffmanTable;Zlib.RawInflateStream=function(input,ip,opt_buffersize){this.blocks=[],this.bufferSize=opt_buffersize?opt_buffersize:ZLIB_STREAM_RAW_INFLATE_BUFFER_SIZE,this.totalpos=0,this.ip=void 0===ip?0:ip,this.bitsbuf=0,this.bitsbuflen=0,this.input=USE_TYPEDARRAY?new Uint8Array(input):input,this.output=new(USE_TYPEDARRAY?Uint8Array:Array)(this.bufferSize),this.op=0,this.bfinal=!1,this.blockLength,this.resize=!1,this.litlenTable,this.distTable,this.sp=0,this.status=Zlib.RawInflateStream.Status.INITIALIZED,this.ip_,this.bitsbuflen_,this.bitsbuf_},Zlib.RawInflateStream.BlockType={UNCOMPRESSED:0,FIXED:1,DYNAMIC:2},Zlib.RawInflateStream.Status={INITIALIZED:0,BLOCK_HEADER_START:1,BLOCK_HEADER_END:2,BLOCK_BODY_START:3,BLOCK_BODY_END:4,DECODE_BLOCK_START:5,DECODE_BLOCK_END:6},Zlib.RawInflateStream.prototype.decompress=function(newInput,ip){var stop=!1;for(void 0!==newInput&&(this.input=newInput),void 0!==ip&&(this.ip=ip);!stop;)switch(this.status){case Zlib.RawInflateStream.Status.INITIALIZED:case Zlib.RawInflateStream.Status.BLOCK_HEADER_START:this.readBlockHeader()<0&&(stop=!0);break;case Zlib.RawInflateStream.Status.BLOCK_HEADER_END:case Zlib.RawInflateStream.Status.BLOCK_BODY_START:switch(this.currentBlockType){case Zlib.RawInflateStream.BlockType.UNCOMPRESSED:this.readUncompressedBlockHeader()<0&&(stop=!0);break;case Zlib.RawInflateStream.BlockType.FIXED:this.parseFixedHuffmanBlock()<0&&(stop=!0);break;case Zlib.RawInflateStream.BlockType.DYNAMIC:this.parseDynamicHuffmanBlock()<0&&(stop=!0)}break;case Zlib.RawInflateStream.Status.BLOCK_BODY_END:case Zlib.RawInflateStream.Status.DECODE_BLOCK_START:switch(this.currentBlockType){case Zlib.RawInflateStream.BlockType.UNCOMPRESSED:this.parseUncompressedBlock()<0&&(stop=!0);break;case Zlib.RawInflateStream.BlockType.FIXED:case Zlib.RawInflateStream.BlockType.DYNAMIC:this.decodeHuffman()<0&&(stop=!0)}break;case Zlib.RawInflateStream.Status.DECODE_BLOCK_END:this.bfinal?stop=!0:this.status=Zlib.RawInflateStream.Status.INITIALIZED}return this.concatBuffer()},Zlib.RawInflateStream.MaxBackwardLength=32768,Zlib.RawInflateStream.MaxCopyLength=258,Zlib.RawInflateStream.Order=function(table){return USE_TYPEDARRAY?new Uint16Array(table):table}([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Zlib.RawInflateStream.LengthCodeTable=function(table){return USE_TYPEDARRAY?new Uint16Array(table):table}([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258]),Zlib.RawInflateStream.LengthExtraTable=function(table){return USE_TYPEDARRAY?new Uint8Array(table):table}([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0]),Zlib.RawInflateStream.DistCodeTable=function(table){return USE_TYPEDARRAY?new Uint16Array(table):table}([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577]),Zlib.RawInflateStream.DistExtraTable=function(table){return USE_TYPEDARRAY?new Uint8Array(table):table}([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),Zlib.RawInflateStream.FixedLiteralLengthTable=function(table){return table}(function(){var i,il,lengths=new(USE_TYPEDARRAY?Uint8Array:Array)(288);for(i=0,il=lengths.length;i>>=1){case 0:this.currentBlockType=Zlib.RawInflateStream.BlockType.UNCOMPRESSED;break;case 1:this.currentBlockType=Zlib.RawInflateStream.BlockType.FIXED;break;case 2:this.currentBlockType=Zlib.RawInflateStream.BlockType.DYNAMIC;break;default:throw new Error("unknown BTYPE: "+hdr)}this.status=Zlib.RawInflateStream.Status.BLOCK_HEADER_END},Zlib.RawInflateStream.prototype.readBits=function(length){for(var octet,bitsbuf=this.bitsbuf,bitsbuflen=this.bitsbuflen,input=this.input,ip=this.ip;bitsbuflen>>=length,bitsbuflen-=length,this.bitsbuf=bitsbuf,this.bitsbuflen=bitsbuflen,this.ip=ip,octet},Zlib.RawInflateStream.prototype.readCodeByTable=function(table){for(var octet,codeWithLength,codeLength,bitsbuf=this.bitsbuf,bitsbuflen=this.bitsbuflen,input=this.input,ip=this.ip,codeTable=table[0],maxCodeLength=table[1];bitsbuflen>>16,codeLength>bitsbuflen)throw new Error("invalid code length: "+codeLength);return this.bitsbuf=bitsbuf>>codeLength,this.bitsbuflen=bitsbuflen-codeLength,this.ip=ip,65535&codeWithLength},Zlib.RawInflateStream.prototype.readUncompressedBlockHeader=function(){var len,nlen,input=this.input,ip=this.ip;if(this.status=Zlib.RawInflateStream.Status.BLOCK_BODY_START,ip+4>=input.length)return-1;if(len=input[ip++]|input[ip++]<<8,nlen=input[ip++]|input[ip++]<<8,len===~nlen)throw new Error("invalid uncompressed block header: length verify");this.bitsbuf=0,this.bitsbuflen=0,this.ip=ip,this.blockLength=len,this.status=Zlib.RawInflateStream.Status.BLOCK_BODY_END},Zlib.RawInflateStream.prototype.parseUncompressedBlock=function(){var input=this.input,ip=this.ip,output=this.output,op=this.op,len=this.blockLength;for(this.status=Zlib.RawInflateStream.Status.DECODE_BLOCK_START;len--;){if(op===output.length&&(output=this.expandBuffer({fixRatio:2})),ip>=input.length)return this.ip=ip,this.op=op,this.blockLength=len+1,-1;output[op++]=input[ip++]}return len<0&&(this.status=Zlib.RawInflateStream.Status.DECODE_BLOCK_END),this.ip=ip,this.op=op,0},Zlib.RawInflateStream.prototype.parseFixedHuffmanBlock=function(){return this.status=Zlib.RawInflateStream.Status.BLOCK_BODY_START,this.litlenTable=Zlib.RawInflateStream.FixedLiteralLengthTable,this.distTable=Zlib.RawInflateStream.FixedDistanceTable,this.status=Zlib.RawInflateStream.Status.BLOCK_BODY_END,0},Zlib.RawInflateStream.prototype.save_=function(){this.ip_=this.ip,this.bitsbuflen_=this.bitsbuflen,this.bitsbuf_=this.bitsbuf},Zlib.RawInflateStream.prototype.restore_=function(){this.ip=this.ip_,this.bitsbuflen=this.bitsbuflen_,this.bitsbuf=this.bitsbuf_},Zlib.RawInflateStream.prototype.parseDynamicHuffmanBlock=function(){function parseDynamicHuffmanBlockImpl(){var bits,code,repeat,lengthTable,i,il,prev=0;for(i=0;i0){if(bits=this.readBits(Zlib.RawInflateStream.LengthExtraTable[ti]),bits<0)return this.op=op,this.restore_(),-1;codeLength+=bits}if(code=this.readCodeByTable(dist),code<0)return this.op=op,this.restore_(),-1;if(codeDist=Zlib.RawInflateStream.DistCodeTable[code],Zlib.RawInflateStream.DistExtraTable[code]>0){if(bits=this.readBits(Zlib.RawInflateStream.DistExtraTable[code]),bits<0)return this.op=op,this.restore_(),-1;codeDist+=bits}for(op+codeLength>=olength&&(output=this.expandBuffer(),olength=output.length);codeLength--;)output[op]=output[op++-codeDist];if(this.ip===this.input.length)return this.op=op,-1}}for(;this.bitsbuflen>=8;)this.bitsbuflen-=8,this.ip--;this.op=op,this.status=Zlib.RawInflateStream.Status.DECODE_BLOCK_END},Zlib.RawInflateStream.prototype.expandBuffer=function(opt_param){var buffer,maxHuffCode,newSize,maxInflateSize,ratio=this.input.length/this.ip+1|0,input=this.input,output=this.output;return opt_param&&("number"==typeof opt_param.fixRatio&&(ratio=opt_param.fixRatio),"number"==typeof opt_param.addRatio&&(ratio+=opt_param.addRatio)),ratio<2?(maxHuffCode=(input.length-this.ip)/this.litlenTable[2],maxInflateSize=maxHuffCode/2*258|0,newSize=maxInflateSizeZlib.RawInflateStream.MaxBackwardLength+this.bufferSize&&(this.op=this.sp=Zlib.RawInflateStream.MaxBackwardLength,USE_TYPEDARRAY?(tmp=this.output,this.output=new Uint8Array(this.bufferSize+Zlib.RawInflateStream.MaxBackwardLength),this.output.set(tmp.subarray(op-Zlib.RawInflateStream.MaxBackwardLength,op))):this.output=this.output.slice(op-Zlib.RawInflateStream.MaxBackwardLength)),buffer},Zlib.Inflate=function(input,opt_params){var cmf,flg;switch(this.input=input,this.ip=0,this.rawinflate,this.verify,!opt_params&&(opt_params={})||(opt_params.index&&(this.ip=opt_params.index),opt_params.verify&&(this.verify=opt_params.verify)),cmf=input[this.ip++],flg=input[this.ip++],15&cmf){case Zlib.CompressionMethod.DEFLATE:this.method=Zlib.CompressionMethod.DEFLATE;break;default:throw new Error("unsupported compression method")}if(((cmf<<8)+flg)%31!==0)throw new Error("invalid fcheck flag:"+((cmf<<8)+flg)%31);if(32&flg)throw new Error("fdict flag is not supported");this.rawinflate=new Zlib.RawInflate(input,{index:this.ip,bufferSize:opt_params.bufferSize,bufferType:opt_params.bufferType,resize:opt_params.resize})},Zlib.Inflate.BufferType=Zlib.RawInflate.BufferType,Zlib.Inflate.prototype.decompress=function(){var buffer,adler32,input=this.input;if(buffer=this.rawinflate.decompress(),this.ip=this.rawinflate.ip,this.verify&&(adler32=(input[this.ip++]<<24|input[this.ip++]<<16|input[this.ip++]<<8|input[this.ip++])>>>0,adler32!==Zlib.Adler32(buffer)))throw new Error("invalid adler-32 checksum");return buffer},Zlib.InflateStream=function(input){this.input=void 0===input?new(USE_TYPEDARRAY?Uint8Array:Array):input,this.ip=0,this.rawinflate=new Zlib.RawInflateStream(this.input,this.ip),this.method,this.output=this.rawinflate.output},Zlib.InflateStream.prototype.decompress=function(input){var buffer;if(void 0!==input)if(USE_TYPEDARRAY){var tmp=new Uint8Array(this.input.length+input.length);tmp.set(this.input,0),tmp.set(input,this.input.length),this.input=tmp}else this.input=this.input.concat(input);return void 0===this.method&&this.readHeader()<0?new(USE_TYPEDARRAY?Uint8Array:Array):(buffer=this.rawinflate.decompress(this.input,this.ip),0!==this.rawinflate.ip&&(this.input=USE_TYPEDARRAY?this.input.subarray(this.rawinflate.ip):this.input.slice(this.rawinflate.ip),this.ip=0),buffer)},Zlib.InflateStream.prototype.readHeader=function(){var ip=this.ip,input=this.input,cmf=input[ip++],flg=input[ip++];if(void 0===cmf||void 0===flg)return-1;switch(15&cmf){case Zlib.CompressionMethod.DEFLATE:this.method=Zlib.CompressionMethod.DEFLATE;break;default:throw new Error("unsupported compression method")}if(((cmf<<8)+flg)%31!==0)throw new Error("invalid fcheck flag:"+((cmf<<8)+flg)%31);if(32&flg)throw new Error("fdict flag is not supported");this.ip=ip},Zlib.Gunzip=function(input,opt_params){this.input=input,this.ip=0,this.member=[],this.decompressed=!1},Zlib.Gunzip.prototype.getMembers=function(){return this.decompressed||this.decompress(),this.member.slice()},Zlib.Gunzip.prototype.decompress=function(){for(var il=this.input.length;this.ip0&&(member.xlen=input[ip++]|input[ip++]<<8,ip=this.decodeSubField(ip,member.xlen)),(member.flg&Zlib.Gzip.FlagsMask.FNAME)>0){for(str=[],ci=0;(c=input[ip++])>0;)str[ci++]=String.fromCharCode(c);member.name=str.join("")}if((member.flg&Zlib.Gzip.FlagsMask.FCOMMENT)>0){for(str=[],ci=0;(c=input[ip++])>0;)str[ci++]=String.fromCharCode(c);member.comment=str.join("")}if((member.flg&Zlib.Gzip.FlagsMask.FHCRC)>0&&(member.crc16=65535&Zlib.CRC32.calc(input,0,ip),member.crc16!==(input[ip++]|input[ip++]<<8)))throw new Error("invalid header crc16");if(isize=input[input.length-4]|input[input.length-3]<<8|input[input.length-2]<<16|input[input.length-1]<<24,input.length-ip-4-4<512*isize&&(inflen=isize),rawinflate=new Zlib.RawInflate(input,{index:ip,bufferSize:inflen}),member.data=inflated=rawinflate.decompress(),ip=rawinflate.ip,member.crc32=crc32=(input[ip++]|input[ip++]<<8|input[ip++]<<16|input[ip++]<<24)>>>0,Zlib.CRC32.calc(inflated)!==crc32)throw new Error("invalid CRC-32 checksum: 0x"+Zlib.CRC32.calc(inflated).toString(16)+" / 0x"+crc32.toString(16));if(member.isize=isize=(input[ip++]|input[ip++]<<8|input[ip++]<<16|input[ip++]<<24)>>>0,(4294967295&inflated.length)!==isize)throw new Error("invalid input size: "+(4294967295&inflated.length)+" / "+isize);this.member.push(member),this.ip=ip},Zlib.Gunzip.prototype.decodeSubField=function(ip,length){return ip+length},Zlib.Gunzip.prototype.concatMember=function(){var i,il,buffer,member=this.member,p=0,size=0;for(i=0,il=member.length;i>>8&255,output[op++]=mtime>>>16&255,output[op++]=mtime>>>24&255,output[op++]=0,output[op++]=Zlib.Gzip.OperatingSystem.UNKNOWN,void 0!==this.flags.fname){for(i=0,il=filename.length;i255&&(output[op++]=c>>>8&255),output[op++]=255&c;output[op++]=0}if(this.flags.comment){for(i=0,il=comment.length;i255&&(output[op++]=c>>>8&255),output[op++]=255&c;output[op++]=0}return this.flags.fhcrc&&(crc16=65535&Zlib.CRC32.calc(output,0,op),output[op++]=255&crc16,output[op++]=crc16>>>8&255),this.deflateOptions.outputBuffer=output,this.deflateOptions.outputIndex=op,rawdeflate=new Zlib.RawDeflate(input,this.deflateOptions),output=rawdeflate.compress(),op=rawdeflate.op,USE_TYPEDARRAY&&(op+8>output.buffer.byteLength?(this.output=new Uint8Array(op+8),this.output.set(new Uint8Array(output.buffer)),output=this.output):output=new Uint8Array(output.buffer)),crc32=Zlib.CRC32.calc(input),output[op++]=255&crc32,output[op++]=crc32>>>8&255,output[op++]=crc32>>>16&255,output[op++]=crc32>>>24&255,il=input.length,output[op++]=255&il,output[op++]=il>>>8&255,output[op++]=il>>>16&255,output[op++]=il>>>24&255,this.ip=ip,USE_TYPEDARRAY&&op0&&(parent=this.getParent(current),heap[current]>heap[parent]);)swap=heap[current],heap[current]=heap[parent],heap[parent]=swap,swap=heap[current+1],heap[current+1]=heap[parent+1],heap[parent+1]=swap,current=parent;return this.length},Zlib.Heap.prototype.pop=function(){var index,value,swap,current,parent,heap=this.buffer;for(value=heap[0],index=heap[1],this.length-=2,heap[0]=heap[this.length],heap[1]=heap[this.length+1],parent=0;;){if(current=this.getChild(parent),current>=this.length)break;if(current+2heap[current]&&(current+=2),!(heap[current]>heap[parent]))break;swap=heap[parent],heap[parent]=heap[current],heap[current]=swap,swap=heap[parent+1],heap[parent+1]=heap[current+1],heap[current+1]=swap,parent=current}return{index:index,value:value,length:this.length}},Zlib.RawDeflate=function(input,opt_params){this.compressionType=Zlib.RawDeflate.CompressionType.DYNAMIC,this.lazy=0,this.freqsLitLen,this.freqsDist,this.input=USE_TYPEDARRAY&&input instanceof Array?new Uint8Array(input):input,this.output,this.op=0,opt_params&&(opt_params.lazy&&(this.lazy=opt_params.lazy),"number"==typeof opt_params.compressionType&&(this.compressionType=opt_params.compressionType),opt_params.outputBuffer&&(this.output=USE_TYPEDARRAY&&opt_params.outputBuffer instanceof Array?new Uint8Array(opt_params.outputBuffer):opt_params.outputBuffer),"number"==typeof opt_params.outputIndex&&(this.op=opt_params.outputIndex)),this.output||(this.output=new(USE_TYPEDARRAY?Uint8Array:Array)(32768))},Zlib.RawDeflate.CompressionType={NONE:0,FIXED:1,DYNAMIC:2,RESERVED:3},Zlib.RawDeflate.Lz77MinLength=3,Zlib.RawDeflate.Lz77MaxLength=258,Zlib.RawDeflate.WindowSize=32768,Zlib.RawDeflate.MaxCodeLength=16,Zlib.RawDeflate.HUFMAX=286,Zlib.RawDeflate.FixedHuffmanTable=function(){var i,table=[];for(i=0;i<288;i++)switch(!0){case i<=143:table.push([i+48,8]);break;case i<=255:table.push([i-144+400,9]);break;case i<=279:table.push([i-256+0,7]);break;case i<=287:table.push([i-280+192,8]);break;default:throw"invalid literal: "+i}return table}(),Zlib.RawDeflate.prototype.compress=function(){var blockArray,position,length,input=this.input;switch(this.compressionType){case Zlib.RawDeflate.CompressionType.NONE:for(position=0,length=input.length;position>>8&255,output[op++]=255&nlen,output[op++]=nlen>>>8&255,USE_TYPEDARRAY)output.set(blockArray,op),op+=blockArray.length,output=output.subarray(0,op);else{for(i=0,il=blockArray.length;i257&&0===litLenLengths[hlit-1];hlit--);for(hdist=30;hdist>1&&0===distLengths[hdist-1];hdist--);for(treeSymbols=this.getTreeSymbols_(hlit,litLenLengths,hdist,distLengths),treeLengths=this.getLengths_(treeSymbols.freqs,7),i=0;i<19;i++)transLengths[i]=treeLengths[hclenOrder[i]];for(hclen=19;hclen>4&&0===transLengths[hclen-1];hclen--);for(treeCodes=this.getCodesFromLengths_(treeLengths),stream.writeBits(hlit-257,5,!0),stream.writeBits(hdist-1,5,!0),stream.writeBits(hclen-4,4,!0),i=0;i=16){switch(i++,code){case 16:bitlen=2;break;case 17:bitlen=3;break;case 18:bitlen=7;break;default:throw"invalid code: "+code}stream.writeBits(treeSymbols.codes[i],bitlen,!0)}return this.dynamicHuffman(data,[litLenCodes,litLenLengths],[distCodes,distLengths],stream),stream.finish()},Zlib.RawDeflate.prototype.dynamicHuffman=function(dataArray,litLen,dist,stream){var index,length,literal,code,litLenCodes,litLenLengths,distCodes,distLengths;for(litLenCodes=litLen[0],litLenLengths=litLen[1],distCodes=dist[0],distLengths=dist[1],index=0,length=dataArray.length;index256)stream.writeBits(dataArray[++index],dataArray[++index],!0),code=dataArray[++index],stream.writeBits(distCodes[code],distLengths[code],!0),stream.writeBits(dataArray[++index],dataArray[++index],!0);else if(256===literal)break;return stream},Zlib.RawDeflate.prototype.fixedHuffman=function(dataArray,stream){var index,length,literal;for(index=0,length=dataArray.length;index256)stream.writeBits(dataArray[++index],dataArray[++index],!0),stream.writeBits(dataArray[++index],5),stream.writeBits(dataArray[++index],dataArray[++index],!0);else if(256===literal)break;return stream},Zlib.RawDeflate.Lz77Match=function(length,backwardDistance){this.length=length,this.backwardDistance=backwardDistance},Zlib.RawDeflate.Lz77Match.LengthCodeTable=function(table){return USE_TYPEDARRAY?new Uint32Array(table):table}(function(){function code(length){switch(!0){case 3===length:return[257,length-3,0];case 4===length:return[258,length-4,0];case 5===length:return[259,length-5,0];case 6===length:return[260,length-6,0];case 7===length:return[261,length-7,0]; +case 8===length:return[262,length-8,0];case 9===length:return[263,length-9,0];case 10===length:return[264,length-10,0];case length<=12:return[265,length-11,1];case length<=14:return[266,length-13,1];case length<=16:return[267,length-15,1];case length<=18:return[268,length-17,1];case length<=22:return[269,length-19,2];case length<=26:return[270,length-23,2];case length<=30:return[271,length-27,2];case length<=34:return[272,length-31,2];case length<=42:return[273,length-35,3];case length<=50:return[274,length-43,3];case length<=58:return[275,length-51,3];case length<=66:return[276,length-59,3];case length<=82:return[277,length-67,4];case length<=98:return[278,length-83,4];case length<=114:return[279,length-99,4];case length<=130:return[280,length-115,4];case length<=162:return[281,length-131,5];case length<=194:return[282,length-163,5];case length<=226:return[283,length-195,5];case length<=257:return[284,length-227,5];case 258===length:return[285,length-258,0];default:throw"invalid length: "+length}}var i,c,table=[];for(i=3;i<=258;i++)c=code(i),table[i]=c[2]<<24|c[1]<<16|c[0];return table}()),Zlib.RawDeflate.Lz77Match.prototype.getDistanceCode_=function(dist){var r;switch(!0){case 1===dist:r=[0,dist-1,0];break;case 2===dist:r=[1,dist-2,0];break;case 3===dist:r=[2,dist-3,0];break;case 4===dist:r=[3,dist-4,0];break;case dist<=6:r=[4,dist-5,1];break;case dist<=8:r=[5,dist-7,1];break;case dist<=12:r=[6,dist-9,2];break;case dist<=16:r=[7,dist-13,2];break;case dist<=24:r=[8,dist-17,3];break;case dist<=32:r=[9,dist-25,3];break;case dist<=48:r=[10,dist-33,4];break;case dist<=64:r=[11,dist-49,4];break;case dist<=96:r=[12,dist-65,5];break;case dist<=128:r=[13,dist-97,5];break;case dist<=192:r=[14,dist-129,6];break;case dist<=256:r=[15,dist-193,6];break;case dist<=384:r=[16,dist-257,7];break;case dist<=512:r=[17,dist-385,7];break;case dist<=768:r=[18,dist-513,8];break;case dist<=1024:r=[19,dist-769,8];break;case dist<=1536:r=[20,dist-1025,9];break;case dist<=2048:r=[21,dist-1537,9];break;case dist<=3072:r=[22,dist-2049,10];break;case dist<=4096:r=[23,dist-3073,10];break;case dist<=6144:r=[24,dist-4097,11];break;case dist<=8192:r=[25,dist-6145,11];break;case dist<=12288:r=[26,dist-8193,12];break;case dist<=16384:r=[27,dist-12289,12];break;case dist<=24576:r=[28,dist-16385,13];break;case dist<=32768:r=[29,dist-24577,13];break;default:throw"invalid distance"}return r},Zlib.RawDeflate.Lz77Match.prototype.toLz77Array=function(){var code,length=this.length,dist=this.backwardDistance,codeArray=[],pos=0;return code=Zlib.RawDeflate.Lz77Match.LengthCodeTable[length],codeArray[pos++]=65535&code,codeArray[pos++]=code>>16&255,codeArray[pos++]=code>>24,code=this.getDistanceCode_(dist),codeArray[pos++]=code[0],codeArray[pos++]=code[1],codeArray[pos++]=code[2],codeArray},Zlib.RawDeflate.prototype.lz77=function(dataArray){function writeMatch(match,offset){var i,il,lz77Array=match.toLz77Array();for(i=0,il=lz77Array.length;i0)matchList.push(position);else{for(;matchList.length>0&&position-matchList[0]>windowSize;)matchList.shift();if(position+Zlib.RawDeflate.Lz77MinLength>=length){for(prevMatch&&writeMatch(prevMatch,-1),i=0,il=length-position;i0?(longestMatch=this.searchLongestMatch_(dataArray,position,matchList),prevMatch?prevMatch.lengthZlib.RawDeflate.Lz77MinLength){for(j=matchMax;j>Zlib.RawDeflate.Lz77MinLength;j--)if(data[match+j-1]!==data[position+j-1])continue permatch;matchLength=matchMax}for(;matchLengthmatchMax&&(currentMatch=match,matchMax=matchLength),matchLength===Zlib.RawDeflate.Lz77MaxLength)break}return new Zlib.RawDeflate.Lz77Match(matchMax,position-currentMatch)},Zlib.RawDeflate.prototype.getTreeSymbols_=function(hlit,litlenLengths,hdist,distLengths){var i,j,runLength,l,nResult,rpt,src=new(USE_TYPEDARRAY?Uint32Array:Array)(hlit+hdist),result=new(USE_TYPEDARRAY?Uint32Array:Array)(316),freqs=new(USE_TYPEDARRAY?Uint8Array:Array)(19);for(j=0,i=0;i0;)result[nResult++]=0,freqs[0]++;else for(;runLength>0;)rpt=runLength<138?runLength:138,rpt>runLength-3&&rpt0;)result[nResult++]=src[i],freqs[src[i]]++;else for(;runLength>0;)rpt=runLength<6?runLength:6,rpt>runLength-3&&rpt0&&heap.push(i,freqs[i]);if(nodes=new Array(heap.length/2),values=new(USE_TYPEDARRAY?Uint32Array:Array)(heap.length/2),1===nodes.length)return length[heap.pop().index]=1,length;for(i=0,il=heap.length/2;i2*minimumCost[j-1]+flag[j]&&(minimumCost[j]=2*minimumCost[j-1]+flag[j]),value[j]=new Array(minimumCost[j]),type[j]=new Array(minimumCost[j]);for(i=0;i=0;--j){for(i=0,weight=0,next=currentPosition[j+1],t=0;tfreqs[i]?(value[j][t]=weight,type[j][t]=symbols,next+=2):(value[j][t]=freqs[i],type[j][t]=i,++i);currentPosition[j]=0,1===flag[j]&&takePackage(j)}return codeLength},Zlib.RawDeflate.prototype.getCodesFromLengths_=function(lengths){var i,il,j,m,codes=new(USE_TYPEDARRAY?Uint16Array:Array)(lengths.length),count=[],startCode=[],code=0;for(i=0,il=lengths.length;i>>=1;return codes},Zlib.Unzip=function(input,opt_params){opt_params=opt_params||{},this.input=USE_TYPEDARRAY&&input instanceof Array?new Uint8Array(input):input,this.ip=0,this.eocdrOffset,this.numberOfThisDisk,this.startDisk,this.totalEntriesThisDisk,this.totalEntries,this.centralDirectorySize,this.centralDirectoryOffset,this.commentLength,this.comment,this.fileHeaderList,this.filenameToIndex,this.verify=opt_params.verify||!1,this.password=opt_params.password},Zlib.Unzip.CompressionMethod=Zlib.Zip.CompressionMethod,Zlib.Unzip.FileHeaderSignature=Zlib.Zip.FileHeaderSignature,Zlib.Unzip.LocalFileHeaderSignature=Zlib.Zip.LocalFileHeaderSignature,Zlib.Unzip.CentralDirectorySignature=Zlib.Zip.CentralDirectorySignature,Zlib.Unzip.FileHeader=function(input,ip){this.input=input,this.offset=ip,this.length,this.version,this.os,this.needVersion,this.flags,this.compression,this.time,this.date,this.crc32,this.compressedSize,this.plainSize,this.fileNameLength,this.extraFieldLength,this.fileCommentLength,this.diskNumberStart,this.internalFileAttributes,this.externalFileAttributes,this.relativeOffset,this.filename,this.extraField,this.comment},Zlib.Unzip.FileHeader.prototype.parse=function(){var input=this.input,ip=this.offset;if(input[ip++]!==Zlib.Unzip.FileHeaderSignature[0]||input[ip++]!==Zlib.Unzip.FileHeaderSignature[1]||input[ip++]!==Zlib.Unzip.FileHeaderSignature[2]||input[ip++]!==Zlib.Unzip.FileHeaderSignature[3])throw new Error("invalid file header signature");this.version=input[ip++],this.os=input[ip++],this.needVersion=input[ip++]|input[ip++]<<8,this.flags=input[ip++]|input[ip++]<<8,this.compression=input[ip++]|input[ip++]<<8,this.time=input[ip++]|input[ip++]<<8,this.date=input[ip++]|input[ip++]<<8,this.crc32=(input[ip++]|input[ip++]<<8|input[ip++]<<16|input[ip++]<<24)>>>0,this.compressedSize=(input[ip++]|input[ip++]<<8|input[ip++]<<16|input[ip++]<<24)>>>0,this.plainSize=(input[ip++]|input[ip++]<<8|input[ip++]<<16|input[ip++]<<24)>>>0,this.fileNameLength=input[ip++]|input[ip++]<<8,this.extraFieldLength=input[ip++]|input[ip++]<<8,this.fileCommentLength=input[ip++]|input[ip++]<<8,this.diskNumberStart=input[ip++]|input[ip++]<<8,this.internalFileAttributes=input[ip++]|input[ip++]<<8,this.externalFileAttributes=input[ip++]|input[ip++]<<8|input[ip++]<<16|input[ip++]<<24,this.relativeOffset=(input[ip++]|input[ip++]<<8|input[ip++]<<16|input[ip++]<<24)>>>0,this.filename=String.fromCharCode.apply(null,USE_TYPEDARRAY?input.subarray(ip,ip+=this.fileNameLength):input.slice(ip,ip+=this.fileNameLength)),this.extraField=USE_TYPEDARRAY?input.subarray(ip,ip+=this.extraFieldLength):input.slice(ip,ip+=this.extraFieldLength),this.comment=USE_TYPEDARRAY?input.subarray(ip,ip+this.fileCommentLength):input.slice(ip,ip+this.fileCommentLength),this.length=ip-this.offset},Zlib.Unzip.LocalFileHeader=function(input,ip){this.input=input,this.offset=ip,this.length,this.needVersion,this.flags,this.compression,this.time,this.date,this.crc32,this.compressedSize,this.plainSize,this.fileNameLength,this.extraFieldLength,this.filename,this.extraField},Zlib.Unzip.LocalFileHeader.Flags=Zlib.Zip.Flags,Zlib.Unzip.LocalFileHeader.prototype.parse=function(){var input=this.input,ip=this.offset;if(input[ip++]!==Zlib.Unzip.LocalFileHeaderSignature[0]||input[ip++]!==Zlib.Unzip.LocalFileHeaderSignature[1]||input[ip++]!==Zlib.Unzip.LocalFileHeaderSignature[2]||input[ip++]!==Zlib.Unzip.LocalFileHeaderSignature[3])throw new Error("invalid local file header signature");this.needVersion=input[ip++]|input[ip++]<<8,this.flags=input[ip++]|input[ip++]<<8,this.compression=input[ip++]|input[ip++]<<8,this.time=input[ip++]|input[ip++]<<8,this.date=input[ip++]|input[ip++]<<8,this.crc32=(input[ip++]|input[ip++]<<8|input[ip++]<<16|input[ip++]<<24)>>>0,this.compressedSize=(input[ip++]|input[ip++]<<8|input[ip++]<<16|input[ip++]<<24)>>>0,this.plainSize=(input[ip++]|input[ip++]<<8|input[ip++]<<16|input[ip++]<<24)>>>0,this.fileNameLength=input[ip++]|input[ip++]<<8,this.extraFieldLength=input[ip++]|input[ip++]<<8,this.filename=String.fromCharCode.apply(null,USE_TYPEDARRAY?input.subarray(ip,ip+=this.fileNameLength):input.slice(ip,ip+=this.fileNameLength)),this.extraField=USE_TYPEDARRAY?input.subarray(ip,ip+=this.extraFieldLength):input.slice(ip,ip+=this.extraFieldLength),this.length=ip-this.offset},Zlib.Unzip.prototype.searchEndOfCentralDirectoryRecord=function(){var ip,input=this.input;for(ip=input.length-12;ip>0;--ip)if(input[ip]===Zlib.Unzip.CentralDirectorySignature[0]&&input[ip+1]===Zlib.Unzip.CentralDirectorySignature[1]&&input[ip+2]===Zlib.Unzip.CentralDirectorySignature[2]&&input[ip+3]===Zlib.Unzip.CentralDirectorySignature[3])return void(this.eocdrOffset=ip);throw new Error("End of Central Directory Record not found")},Zlib.Unzip.prototype.parseEndOfCentralDirectoryRecord=function(){var ip,input=this.input;if(this.eocdrOffset||this.searchEndOfCentralDirectoryRecord(),ip=this.eocdrOffset,input[ip++]!==Zlib.Unzip.CentralDirectorySignature[0]||input[ip++]!==Zlib.Unzip.CentralDirectorySignature[1]||input[ip++]!==Zlib.Unzip.CentralDirectorySignature[2]||input[ip++]!==Zlib.Unzip.CentralDirectorySignature[3])throw new Error("invalid signature");this.numberOfThisDisk=input[ip++]|input[ip++]<<8,this.startDisk=input[ip++]|input[ip++]<<8,this.totalEntriesThisDisk=input[ip++]|input[ip++]<<8,this.totalEntries=input[ip++]|input[ip++]<<8,this.centralDirectorySize=(input[ip++]|input[ip++]<<8|input[ip++]<<16|input[ip++]<<24)>>>0,this.centralDirectoryOffset=(input[ip++]|input[ip++]<<8|input[ip++]<<16|input[ip++]<<24)>>>0,this.commentLength=input[ip++]|input[ip++]<<8,this.comment=USE_TYPEDARRAY?input.subarray(ip,ip+this.commentLength):input.slice(ip,ip+this.commentLength)},Zlib.Unzip.prototype.parseFileHeader=function(){var ip,fileHeader,i,il,filelist=[],filetable={};if(!this.fileHeaderList){for(void 0===this.centralDirectoryOffset&&this.parseEndOfCentralDirectoryRecord(),ip=this.centralDirectoryOffset,i=0,il=this.totalEntries;i>>0;return tmp},Zlib.Adler32=function(array){return"string"==typeof array&&(array=Zlib.Util.stringToByteArray(array)),Zlib.Adler32.update(1,array)},Zlib.Adler32.update=function(adler,array){for(var tlen,s1=65535&adler,s2=adler>>>16&65535,len=array.length,i=0;len>0;){tlen=len>Zlib.Adler32.OptimizationParameter?Zlib.Adler32.OptimizationParameter:len,len-=tlen;do s1+=array[i++],s2+=s1;while(--tlen);s1%=65521,s2%=65521}return(s2<<16|s1)>>>0},Zlib.Adler32.OptimizationParameter=1024,Zlib.BitStream=function(buffer,bufferPosition){if(this.index="number"==typeof bufferPosition?bufferPosition:0,this.bitindex=0,this.buffer=buffer instanceof(USE_TYPEDARRAY?Uint8Array:Array)?buffer:new(USE_TYPEDARRAY?Uint8Array:Array)(Zlib.BitStream.DefaultBlockSize),2*this.buffer.length<=this.index)throw new Error("invalid index");this.buffer.length<=this.index&&this.expandBuffer()},Zlib.BitStream.DefaultBlockSize=32768,Zlib.BitStream.prototype.expandBuffer=function(){var i,oldbuf=this.buffer,il=oldbuf.length,buffer=new(USE_TYPEDARRAY?Uint8Array:Array)(il<<1);if(USE_TYPEDARRAY)buffer.set(oldbuf);else for(i=0;i>>8&255]<<16|Zlib.BitStream.ReverseTable[n>>>16&255]<<8|Zlib.BitStream.ReverseTable[n>>>24&255]}var i,buffer=this.buffer,index=this.index,bitindex=this.bitindex,current=buffer[index];if(reverse&&n>1&&(number=n>8?rev32_(number)>>32-n:Zlib.BitStream.ReverseTable[number]>>8-n),n+bitindex<8)current=current<>n-i-1&1,8===++bitindex&&(bitindex=0,buffer[index++]=Zlib.BitStream.ReverseTable[current],current=0,index===buffer.length&&(buffer=this.expandBuffer()));buffer[index]=current,this.buffer=buffer,this.bitindex=bitindex,this.index=index},Zlib.BitStream.prototype.finish=function(){var output,buffer=this.buffer,index=this.index;return this.bitindex>0&&(buffer[index]<<=8-this.bitindex,buffer[index]=Zlib.BitStream.ReverseTable[buffer[index]],index++),USE_TYPEDARRAY?output=buffer.subarray(0,index):(buffer.length=index,output=buffer),output},Zlib.BitStream.ReverseTable=function(table){return table}(function(){var i,table=new(USE_TYPEDARRAY?Uint8Array:Array)(256);for(i=0;i<256;++i)table[i]=function(n){var r=n,s=7;for(n>>>=1;n;n>>>=1)r<<=1,r|=1&n,--s;return(r<>>0}(i);return table}());var ZLIB_CRC32_COMPACT=!1;Zlib.CRC32.calc=function(data,pos,length){return Zlib.CRC32.update(data,0,pos,length)},Zlib.CRC32.update=function(data,crc,pos,length){var table=Zlib.CRC32.Table,i="number"==typeof pos?pos:pos=0,il="number"==typeof length?length:data.length;for(crc^=4294967295,i=7&il;i--;++pos)crc=crc>>>8^table[255&(crc^data[pos])];for(i=il>>3;i--;pos+=8)crc=crc>>>8^table[255&(crc^data[pos])],crc=crc>>>8^table[255&(crc^data[pos+1])],crc=crc>>>8^table[255&(crc^data[pos+2])],crc=crc>>>8^table[255&(crc^data[pos+3])],crc=crc>>>8^table[255&(crc^data[pos+4])],crc=crc>>>8^table[255&(crc^data[pos+5])],crc=crc>>>8^table[255&(crc^data[pos+6])],crc=crc>>>8^table[255&(crc^data[pos+7])];return(4294967295^crc)>>>0},Zlib.CRC32.single=function(num,crc){return(Zlib.CRC32.Table[255&(num^crc)]^num>>>8)>>>0},Zlib.CRC32.Table_=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],Zlib.CRC32.Table=ZLIB_CRC32_COMPACT?function(){var c,i,j,table=new(USE_TYPEDARRAY?Uint32Array:Array)(256);for(i=0;i<256;++i){for(c=i,j=0;j<8;++j)c=1&c?3988292384^c>>>1:c>>>1;table[i]=c>>>0}return table}():USE_TYPEDARRAY?new Uint32Array(Zlib.CRC32.Table_):Zlib.CRC32.Table_,Zlib.Deflate=function(input,opt_params){this.input=input,this.output=new(USE_TYPEDARRAY?Uint8Array:Array)(Zlib.Deflate.DefaultBufferSize),this.compressionType=Zlib.Deflate.CompressionType.DYNAMIC,this.rawDeflate;var prop,rawDeflateOption={};!opt_params&&(opt_params={})||"number"==typeof opt_params.compressionType&&(this.compressionType=opt_params.compressionType);for(prop in opt_params)rawDeflateOption[prop]=opt_params[prop];rawDeflateOption.outputBuffer=this.output,this.rawDeflate=new Zlib.RawDeflate(this.input,rawDeflateOption)},Zlib.Deflate.DefaultBufferSize=32768,Zlib.Deflate.CompressionType=Zlib.RawDeflate.CompressionType,Zlib.Deflate.compress=function(input,opt_params){return new Zlib.Deflate(input,opt_params).compress()},Zlib.Deflate.prototype.compress=function(){var cm,cinfo,cmf,flg,fcheck,fdict,flevel,adler,output,pos=0;switch(output=this.output,cm=Zlib.CompressionMethod.DEFLATE){case Zlib.CompressionMethod.DEFLATE:cinfo=Math.LOG2E*Math.log(Zlib.RawDeflate.WindowSize)-8;break;default:throw new Error("invalid compression method")}switch(cmf=cinfo<<4|cm,output[pos++]=cmf,fdict=0,cm){case Zlib.CompressionMethod.DEFLATE:switch(this.compressionType){case Zlib.Deflate.CompressionType.NONE:flevel=0;break;case Zlib.Deflate.CompressionType.FIXED:flevel=1;break;case Zlib.Deflate.CompressionType.DYNAMIC:flevel=2;break;default:throw new Error("unsupported compression type")}break;default:throw new Error("invalid compression method")}return flg=flevel<<6|fdict<<5,fcheck=31-(256*cmf+flg)%31,flg|=fcheck,output[pos++]=flg,adler=Zlib.Adler32(this.input),this.rawDeflate.op=pos,output=this.rawDeflate.compress(),pos=output.length,USE_TYPEDARRAY&&(output=new Uint8Array(output.buffer),output.length<=pos+4&&(this.output=new Uint8Array(output.length+4),this.output.set(output),output=this.output),output=output.subarray(0,pos+4)),output[pos++]=adler>>24&255,output[pos++]=adler>>16&255,output[pos++]=adler>>8&255,output[pos++]=255&adler,output};var MAX_WBITS=15,DEF_WBITS=MAX_WBITS,MANY=1440,BMAX=15,PRESET_DICT=32,Z_NO_FLUSH=0,Z_FINISH=4,Z_DEFLATED=8,Z_OK=0,Z_STREAM_END=1,Z_NEED_DICT=2,Z_STREAM_ERROR=-2,Z_DATA_ERROR=-3,Z_MEM_ERROR=-4,Z_BUF_ERROR=-5,METHOD=0,FLAG=1,DICT4=2,DICT3=3,DICT2=4,DICT1=5,DICT0=6,BLOCKS=7,CHECK4=8,CHECK3=9,CHECK2=10,CHECK1=11,DONE=12,BAD=13,inflate_mask=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],IB_TYPE=0,IB_LENS=1,IB_STORED=2,IB_TABLE=3,IB_BTREE=4,IB_DTREE=5,IB_CODES=6,IB_DRY=7,IB_DONE=8,IB_BAD=9,fixed_bl=9,fixed_bd=5,fixed_tl=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],fixed_td=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],cplens=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],cplext=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],cpdist=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],cpdext=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];ZStream.prototype.inflateInit=function(w,nowrap){return w||(w=DEF_WBITS),nowrap&&(nowrap=!1),this.istate=new Inflate,this.istate.inflateInit(this,nowrap?-w:w)},ZStream.prototype.inflate=function(f){return null==this.istate?Z_STREAM_ERROR:this.istate.inflate(this,f)},ZStream.prototype.inflateEnd=function(){if(null==this.istate)return Z_STREAM_ERROR;var ret=istate.inflateEnd(this);return this.istate=null,ret},ZStream.prototype.inflateSync=function(){return istate.inflateSync(this); +},ZStream.prototype.inflateSetDictionary=function(dictionary,dictLength){return istate.inflateSetDictionary(this,dictionary,dictLength)},Inflate.prototype.inflateReset=function(z){return null==z||null==z.istate?Z_STREAM_ERROR:(z.total_in=z.total_out=0,z.msg=null,z.istate.mode=0!=z.istate.nowrap?BLOCKS:METHOD,z.istate.blocks.reset(z,null),Z_OK)},Inflate.prototype.inflateEnd=function(z){return null!=this.blocks&&this.blocks.free(z),this.blocks=null,Z_OK},Inflate.prototype.inflateInit=function(z,w){return z.msg=null,this.blocks=null,nowrap=0,w<0&&(w=-w,nowrap=1),w<8||w>15?(this.inflateEnd(z),Z_STREAM_ERROR):(this.wbits=w,z.istate.blocks=new InfBlocks(z,0!=z.istate.nowrap?null:this,1<>4)+8>z.istate.wbits){z.istate.mode=BAD,z.msg="invalid window size",z.istate.marker=5;break}z.istate.mode=FLAG;case FLAG:if(0==z.avail_in)return r;if(r=f,z.avail_in--,z.total_in++,b=255&z.next_in[z.next_in_index++],((z.istate.method<<8)+b)%31!=0){z.istate.mode=BAD,z.msg="incorrect header check",z.istate.marker=5;break}if(0==(b&PRESET_DICT)){z.istate.mode=BLOCKS;break}z.istate.mode=DICT4;case DICT4:if(0==z.avail_in)return r;r=f,z.avail_in--,z.total_in++,z.istate.need=(255&z.next_in[z.next_in_index++])<<24&4278190080,z.istate.mode=DICT3;case DICT3:if(0==z.avail_in)return r;r=f,z.avail_in--,z.total_in++,z.istate.need+=(255&z.next_in[z.next_in_index++])<<16&16711680,z.istate.mode=DICT2;case DICT2:if(0==z.avail_in)return r;r=f,z.avail_in--,z.total_in++,z.istate.need+=(255&z.next_in[z.next_in_index++])<<8&65280,z.istate.mode=DICT1;case DICT1:return 0==z.avail_in?r:(r=f,z.avail_in--,z.total_in++,z.istate.need+=255&z.next_in[z.next_in_index++],z.adler=z.istate.need,z.istate.mode=DICT0,Z_NEED_DICT);case DICT0:return z.istate.mode=BAD,z.msg="need dictionary",z.istate.marker=0,Z_STREAM_ERROR;case BLOCKS:if(r=z.istate.blocks.proc(z,r),r==Z_DATA_ERROR){z.istate.mode=BAD,z.istate.marker=0;break}if(r==Z_OK&&(r=f),r!=Z_STREAM_END)return r;if(r=f,z.istate.blocks.reset(z,z.istate.was),0!=z.istate.nowrap){z.istate.mode=DONE;break}z.istate.mode=CHECK4;case CHECK4:if(0==z.avail_in)return r;r=f,z.avail_in--,z.total_in++,z.istate.need=(255&z.next_in[z.next_in_index++])<<24&4278190080,z.istate.mode=CHECK3;case CHECK3:if(0==z.avail_in)return r;r=f,z.avail_in--,z.total_in++,z.istate.need+=(255&z.next_in[z.next_in_index++])<<16&16711680,z.istate.mode=CHECK2;case CHECK2:if(0==z.avail_in)return r;r=f,z.avail_in--,z.total_in++,z.istate.need+=(255&z.next_in[z.next_in_index++])<<8&65280,z.istate.mode=CHECK1;case CHECK1:if(0==z.avail_in)return r;if(r=f,z.avail_in--,z.total_in++,z.istate.need+=255&z.next_in[z.next_in_index++],z.istate.was[0]!=z.istate.need){z.istate.mode=BAD,z.msg="incorrect data check",z.istate.marker=5;break}z.istate.mode=DONE;case DONE:return Z_STREAM_END;case BAD:return Z_DATA_ERROR;default:return Z_STREAM_ERROR}},Inflate.prototype.inflateSetDictionary=function(z,dictionary,dictLength){var index=0,length=dictLength;return null==z||null==z.istate||z.istate.mode!=DICT0?Z_STREAM_ERROR:z._adler.adler32(1,dictionary,0,dictLength)!=z.adler?Z_DATA_ERROR:(z.adler=z._adler.adler32(0,null,0,0),length>=1<>>1){case 0:b>>>=3,k-=3,t=7&k,b>>>=t,k-=t,this.mode=IB_LENS;break;case 1:var bl=new Int32Array(1),bd=new Int32Array(1),tl=[],td=[];inflate_trees_fixed(bl,bd,tl,td,z),this.codes.init(bl[0],bd[0],tl[0],0,td[0],0,z),b>>>=3,k-=3,this.mode=IB_CODES;break;case 2:b>>>=3,k-=3,this.mode=IB_TABLE;break;case 3:return b>>>=3,k-=3,this.mode=BAD,z.msg="invalid block type",r=Z_DATA_ERROR,this.bitb=b,this.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,this.write=q,this.inflate_flush(z,r)}break;case IB_LENS:for(;k<32;){if(0==n)return this.bitb=b,this.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,this.write=q,this.inflate_flush(z,r);r=Z_OK,n--,b|=(255&z.next_in[p++])<>>16&65535)!=(65535&b))return this.mode=BAD,z.msg="invalid stored block lengths",r=Z_DATA_ERROR,this.bitb=b,this.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,this.write=q,this.inflate_flush(z,r);this.left=65535&b,b=k=0,this.mode=0!=left?IB_STORED:0!=this.last?IB_DRY:IB_TYPE;break;case IB_STORED:if(0==n)return this.bitb=b,this.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,write=q,this.inflate_flush(z,r);if(0==m&&(q==end&&0!=read&&(q=0,m=qn&&(t=n),t>m&&(t=m),arrayCopy(z.next_in,p,window,q,t),p+=t,n-=t,q+=t,m-=t,0!=(this.left-=t))break;this.mode=0!=this.last?IB_DRY:IB_TYPE;break;case IB_TABLE:for(;k<14;){if(0==n)return this.bitb=b,this.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,this.write=q,this.inflate_flush(z,r);r=Z_OK,n--,b|=(255&z.next_in[p++])<29||(t>>5&31)>29)return this.mode=IB_BAD,z.msg="too many length or distance symbols",r=Z_DATA_ERROR,this.bitb=b,this.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,this.write=q,this.inflate_flush(z,r);if(t=258+(31&t)+(t>>5&31),null==this.blens||this.blens.length>>=14,k-=14,this.index=0,mode=IB_BTREE;case IB_BTREE:for(;this.index<4+(this.table>>>10);){for(;k<3;){if(0==n)return this.bitb=b,this.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,this.write=q,this.inflate_flush(z,r);r=Z_OK,n--,b|=(255&z.next_in[p++])<>>=3,k-=3}for(;this.index<19;)this.blens[INFBLOCKS_BORDER[this.index++]]=0;if(this.bb[0]=7,t=this.inftree.inflate_trees_bits(this.blens,this.bb,this.tb,this.hufts,z),t!=Z_OK)return r=t,r==Z_DATA_ERROR&&(this.blens=null,this.mode=IB_BAD),this.bitb=b,this.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,write=q,this.inflate_flush(z,r);this.index=0,this.mode=IB_DTREE;case IB_DTREE:for(;;){if(t=this.table,!(this.index<258+(31&t)+(t>>5&31)))break;var i,j,c;for(t=this.bb[0];k>>=t,k-=t,this.blens[this.index++]=c;else{for(i=18==c?7:c-14,j=18==c?11:3;k>>=t,k-=t,j+=b&inflate_mask[i],b>>>=i,k-=i,i=this.index,t=this.table,i+j>258+(31&t)+(t>>5&31)||16==c&&i<1)return this.blens=null,this.mode=IB_BAD,z.msg="invalid bit length repeat",r=Z_DATA_ERROR,this.bitb=b,this.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,this.write=q,this.inflate_flush(z,r);c=16==c?this.blens[i-1]:0;do this.blens[i++]=c;while(0!=--j);this.index=i}}this.tb[0]=-1;var bl=new Int32Array(1),bd=new Int32Array(1),tl=new Int32Array(1),td=new Int32Array(1);if(bl[0]=9,bd[0]=6,t=this.table,t=this.inftree.inflate_trees_dynamic(257+(31&t),1+(t>>5&31),this.blens,bl,bd,tl,td,this.hufts,z),t!=Z_OK)return t==Z_DATA_ERROR&&(this.blens=null,this.mode=BAD),r=t,this.bitb=b,this.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,this.write=q,this.inflate_flush(z,r);this.codes.init(bl[0],bd[0],this.hufts,tl[0],this.hufts,td[0],z),this.mode=IB_CODES;case IB_CODES:if(this.bitb=b,this.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,this.write=q,(r=this.codes.proc(this,z,r))!=Z_STREAM_END)return this.inflate_flush(z,r);if(r=Z_OK,this.codes.free(z),p=z.next_in_index,n=z.avail_in,b=this.bitb,k=this.bitk,q=this.write,m=qz.avail_out&&(n=z.avail_out),0!=n&&r==Z_BUF_ERROR&&(r=Z_OK),z.avail_out-=n,z.total_out+=n,null!=this.checkfn&&(z.adler=this.check=z._adler.adler32(this.check,this.window,q,n)),arrayCopy(this.window,q,z.next_out,p,n),p+=n,q+=n,q==this.end&&(q=0,this.write==this.end&&(this.write=0),n=this.write-q,n>z.avail_out&&(n=z.avail_out),0!=n&&r==Z_BUF_ERROR&&(r=Z_OK),z.avail_out-=n,z.total_out+=n,null!=this.checkfn&&(z.adler=this.check=z._adler.adler32(this.check,this.window,q,n)),arrayCopy(this.window,q,z.next_out,p,n),p+=n,q+=n),z.next_out_index=p,this.read=q,r};var IC_START=0,IC_LEN=1,IC_LENEXT=2,IC_DIST=3,IC_DISTEXT=4,IC_COPY=5,IC_LIT=6,IC_WASH=7,IC_END=8,IC_BADCODE=9;InfCodes.prototype.init=function(bl,bd,tl,tl_index,td,td_index,z){this.mode=IC_START,this.lbits=bl,this.dbits=bd,this.ltree=tl,this.ltree_index=tl_index,this.dtree=td,this.dtree_index=td_index,this.tree=null},InfCodes.prototype.proc=function(s,z,r){var j,tindex,e,n,q,m,f,b=0,k=0,p=0;for(p=z.next_in_index,n=z.avail_in,b=s.bitb,k=s.bitk,q=s.write,m=q=258&&n>=10&&(s.bitb=b,s.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,s.write=q,r=this.inflate_fast(this.lbits,this.dbits,this.ltree,this.ltree_index,this.dtree,this.dtree_index,s,z),p=z.next_in_index,n=z.avail_in,b=s.bitb,k=s.bitk,q=s.write,m=q>>=this.tree[tindex+1],k-=this.tree[tindex+1],e=this.tree[tindex],0==e){this.lit=this.tree[tindex+2],this.mode=IC_LIT;break}if(0!=(16&e)){this.get=15&e,this.len=this.tree[tindex+2],this.mode=IC_LENEXT;break}if(0==(64&e)){this.need=e,this.tree_index=tindex/3+this.tree[tindex+2];break}if(0!=(32&e)){this.mode=IC_WASH;break}return this.mode=IC_BADCODE,z.msg="invalid literal/length code",r=Z_DATA_ERROR,s.bitb=b,s.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,s.write=q,s.inflate_flush(z,r);case IC_LENEXT:for(j=this.get;k>=j,k-=j,this.need=this.dbits,this.tree=this.dtree,this.tree_index=this.dtree_index,this.mode=IC_DIST;case IC_DIST:for(j=this.need;k>=this.tree[tindex+1],k-=this.tree[tindex+1],e=this.tree[tindex],0!=(16&e)){this.get=15&e,this.dist=this.tree[tindex+2],this.mode=IC_DISTEXT;break}if(0==(64&e)){this.need=e,this.tree_index=tindex/3+this.tree[tindex+2];break}return this.mode=IC_BADCODE,z.msg="invalid distance code",r=Z_DATA_ERROR,s.bitb=b,s.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,s.write=q,s.inflate_flush(z,r);case IC_DISTEXT:for(j=this.get;k>=j,k-=j,this.mode=IC_COPY;case IC_COPY:for(f=q-this.dist;f<0;)f+=s.end;for(;0!=this.len;){if(0==m&&(q==s.end&&0!=s.read&&(q=0,m=q7&&(k-=8,n++,p--),s.write=q,r=s.inflate_flush(z,r),q=s.write,m=q>=tp[tp_index_t_3+1],k-=tp[tp_index_t_3+1],0!=(16&e)){for(e&=15,c=tp[tp_index_t_3+2]+(b&inflate_mask[e]),b>>=e,k-=e;k<15;)n--,b|=(255&z.next_in[p++])<>=tp[tp_index_t_3+1],k-=tp[tp_index_t_3+1],0!=(16&e)){for(e&=15;k>=e,k-=e,m-=c,q>=d)r=q-d,q-r>0&&2>q-r?(s.window[q++]=s.window[r++],s.window[q++]=s.window[r++],c-=2):(s.window[q++]=s.window[r++],s.window[q++]=s.window[r++],c-=2);else{r=q-d;do r+=s.end;while(r<0);if(e=s.end-r,c>e){if(c-=e,q-r>0&&e>q-r){do s.window[q++]=s.window[r++];while(0!=--e)}else arrayCopy(s.window,r,s.window,q,e),q+=e,r+=e,e=0;r=0}}do s.window[q++]=s.window[r++];while(0!=--c);break}if(0!=(64&e))return z.msg="invalid distance code",c=z.avail_in-n,c=k>>3>3:c,n+=c,p-=c,k-=c<<3,s.bitb=b,s.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,s.write=q,Z_DATA_ERROR;t+=tp[tp_index_t_3+2],t+=b&inflate_mask[e],tp_index_t_3=3*(tp_index+t),e=tp[tp_index_t_3]}break}if(0!=(64&e))return 0!=(32&e)?(c=z.avail_in-n,c=k>>3>3:c,n+=c,p-=c,k-=c<<3,s.bitb=b,s.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,s.write=q,Z_STREAM_END):(z.msg="invalid literal/length code",c=z.avail_in-n,c=k>>3>3:c,n+=c,p-=c,k-=c<<3,s.bitb=b,s.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,s.write=q,Z_DATA_ERROR);if(t+=tp[tp_index_t_3+2],t+=b&inflate_mask[e],tp_index_t_3=3*(tp_index+t),0==(e=tp[tp_index_t_3])){b>>=tp[tp_index_t_3+1],k-=tp[tp_index_t_3+1],s.window[q++]=tp[tp_index_t_3+2],m--;break}}else b>>=tp[tp_index_t_3+1],k-=tp[tp_index_t_3+1],s.window[q++]=tp[tp_index_t_3+2],m--}while(m>=258&&n>=10);return c=z.avail_in-n,c=k>>3>3:c,n+=c,p-=c,k-=c<<3,s.bitb=b,s.bitk=k,z.avail_in=n,z.total_in+=p-z.next_in_index,z.next_in_index=p,s.write=q,Z_OK},InfTree.prototype.huft_build=function(b,bindex,n,s,d,e,t,m,hp,hn,v){var a,f,g,h,i,j,k,l,mask,p,q,w,xp,y,z;p=0,i=n;do this.c[b[bindex+p]]++,p++,i--;while(0!=i);if(this.c[0]==n)return t[0]=-1,m[0]=0,Z_OK;for(l=m[0],j=1;j<=BMAX&&0==this.c[j];j++);for(k=j,li&&(l=i),m[0]=l,y=1<w+l;){if(h++,w+=l,z=g-w,z=z>l?l:z,(f=1<<(j=k-w))>a+1&&(f-=a+1,xp=k,jMANY)return Z_DATA_ERROR;this.u[h]=q=this.hn[0],this.hn[0]+=z,0!=h?(this.x[h]=i,this.r[0]=j,this.r[1]=l,j=i>>>w-l,this.r[2]=q-this.u[h-1]-j,arrayCopy(this.r,0,hp,3*(this.u[h-1]+j),3)):t[0]=q}for(this.r[1]=k-w,p>=n?this.r[0]=192:v[p]>>w;j>>=1)i^=j;for(i^=j,mask=(1<257?(result==Z_DATA_ERROR?z.msg="oversubscribed distance tree":result==Z_BUF_ERROR?(z.msg="incomplete distance tree",result=Z_DATA_ERROR):result!=Z_MEM_ERROR&&(z.msg="empty distance tree with lengths",result=Z_DATA_ERROR),result):Z_OK)},InfTree.prototype.initWorkArea=function(vsize){null==this.hn&&(this.hn=new Int32Array(1),this.v=new Int32Array(vsize),this.c=new Int32Array(BMAX+1),this.r=new Int32Array(3),this.u=new Int32Array(BMAX),this.x=new Int32Array(BMAX+1)),this.v.length=1?"floor":"ceil"](delta/lowestDelta),deltaX=Math[deltaX>=1?"floor":"ceil"](deltaX/lowestDelta),deltaY=Math[deltaY>=1?"floor":"ceil"](deltaY/lowestDelta),special.settings.normalizeOffset&&this.getBoundingClientRect){var boundingRect=this.getBoundingClientRect();offsetX=event.clientX-boundingRect.left,offsetY=event.clientY-boundingRect.top}return event.deltaX=deltaX,event.deltaY=deltaY,event.deltaFactor=lowestDelta,event.offsetX=offsetX,event.offsetY=offsetY,event.deltaMode=0,args.unshift(event,delta,deltaX,deltaY),nullLowestDeltaTimeout&&clearTimeout(nullLowestDeltaTimeout),nullLowestDeltaTimeout=setTimeout(nullLowestDelta,200),($.event.dispatch||$.event.handle).apply(this,args)}}function nullLowestDelta(){lowestDelta=null}function shouldAdjustOldDeltas(orgEvent,absDelta){return special.settings.adjustOldDeltas&&"mousewheel"===orgEvent.type&&absDelta%120===0}var nullLowestDeltaTimeout,lowestDelta,toFix=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],toBind="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],slice=Array.prototype.slice;if($.event.fixHooks)for(var i=toFix.length;i;)$.event.fixHooks[toFix[--i]]=$.event.mouseHooks;var special=$.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var i=toBind.length;i;)this.addEventListener(toBind[--i],handler,!1);else this.onmousewheel=handler;$.data(this,"mousewheel-line-height",special.getLineHeight(this)),$.data(this,"mousewheel-page-height",special.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var i=toBind.length;i;)this.removeEventListener(toBind[--i],handler,!1);else this.onmousewheel=null;$.removeData(this,"mousewheel-line-height"),$.removeData(this,"mousewheel-page-height")},getLineHeight:function(elem){var $elem=$(elem),$parent=$elem["offsetParent"in $.fn?"offsetParent":"parent"]();return $parent.length||($parent=$("body")),parseInt($parent.css("fontSize"),10)||parseInt($elem.css("fontSize"),10)||16},getPageHeight:function(elem){return $(elem).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};$.fn.extend({mousewheel:function(fn){return fn?this.bind("mousewheel",fn):this.trigger("mousewheel")},unmousewheel:function(fn){return this.unbind("mousewheel",fn)}})}),function(global){function isArray(value){return"[object Array]"===Object.prototype.toString.call(value)}function asyncFlush(){for(var i=0;i0&&this.downsampledIntervals.push(new DownsampledInterval(this.currentBucket.start,this.currentBucket.end,this.currentBucket.downsampledCount)),this.paired=this.paired||this.currentBucket.paired}function DownsampleBucket(start,end,alignmentContainer){this.start=start,this.end=end,this.alignments=[],this.downsampledCount=0,this.samplingDepth=alignmentContainer.samplingDepth,this.pairsSupported=alignmentContainer.pairsSupported,this.downsampledReads=alignmentContainer.downsampledReads,this.pairsCache=alignmentContainer.pairsCache}function CoverageMap(chr,start,end){this.chr=chr,this.bpStart=start,this.length=end-start,this.coverage=new Array(this.length),this.maximum=0,this.threshold=.2,this.qualityWeight=!0}function Coverage(){this.posA=0,this.negA=0,this.posT=0,this.negT=0,this.posC=0,this.negC=0,this.posG=0,this.negG=0,this.posN=0,this.negN=0,this.pos=0,this.neg=0,this.qualA=0,this.qualT=0,this.qualC=0,this.qualG=0,this.qualN=0,this.qual=0,this.total=0}return igv.AlignmentContainer=function(chr,start,end,samplingWindowSize,samplingDepth,pairsSupported){this.chr=chr,this.start=Math.floor(start),this.end=Math.ceil(end),this.length=end-start,this.coverageMap=new CoverageMap(chr,start,end),this.alignments=[],this.downsampledIntervals=[],this.samplingWindowSize=void 0===samplingWindowSize?100:samplingWindowSize,this.samplingDepth=void 0===samplingDepth?50:samplingDepth,this.pairsSupported=void 0===pairsSupported||pairsSupported,this.paired=!1,this.pairsCache={},this.downsampledReads=new Set,this.currentBucket=new DownsampleBucket(this.start,this.start+this.samplingWindowSize,this),this.filter=function(alignment){ +return alignment.isMapped()&&!alignment.isFailsVendorQualityCheck()}},igv.AlignmentContainer.prototype.push=function(alignment){this.filter(alignment)!==!1&&(this.coverageMap.incCounts(alignment),this.pairsSupported&&this.downsampledReads.has(alignment.readName)||(alignment.start>=this.currentBucket.end&&(finishBucket.call(this),this.currentBucket=new DownsampleBucket(alignment.start,alignment.start+this.samplingWindowSize,this)),this.currentBucket.addAlignment(alignment)))},igv.AlignmentContainer.prototype.forEach=function(callback){this.alignments.forEach(callback)},igv.AlignmentContainer.prototype.finish=function(){if(void 0!==this.currentBucket&&finishBucket.call(this),this.pairsSupported){var tmp=[],ds=this.downsampledReads;this.alignments.forEach(function(a){ds.has(a.readName)||tmp.push(a)}),this.alignments=tmp}this.alignments.sort(function(a,b){return a.start-b.start}),this.pairsCache=void 0,this.downsampledReads=void 0},igv.AlignmentContainer.prototype.contains=function(chr,start,end){return this.chr==chr&&this.start<=start&&this.end>=end},igv.AlignmentContainer.prototype.hasDownsampledIntervals=function(){return this.downsampledIntervals&&this.downsampledIntervals.length>0},DownsampleBucket.prototype.addAlignment=function(alignment){var samplingProb,idx,replacedAlignment,pairedAlignment;this.alignments.length=threshold},DownsampledInterval=function(start,end,counts){this.start=start,this.end=end,this.counts=counts},DownsampledInterval.prototype.popupData=function(genomicLocation){return[{name:"start",value:this.start+1},{name:"end",value:this.end},{name:"# downsampled:",value:this.counts}]},igv}(igv||{}),igv=function(igv){function readInt(ba,offset){return ba[offset+3]<<24|ba[offset+2]<<16|ba[offset+1]<<8|ba[offset]}function readShort(ba,offset){return ba[offset+1]<<8|ba[offset]}function readFloat(ba,offset){var dataView=new DataView(ba.buffer),littleEndian=!0;return dataView.getFloat32(offset,littleEndian)}var READ_PAIRED_FLAG=1,PROPER_PAIR_FLAG=2,READ_UNMAPPED_FLAG=4,MATE_UNMAPPED_FLAG=8,READ_STRAND_FLAG=16,MATE_STRAND_FLAG=32,FIRST_OF_PAIR_FLAG=64,SECOND_OF_PAIR_FLAG=128,SECONDARY_ALIGNMNET_FLAG=256,READ_FAILS_VENDOR_QUALITY_CHECK_FLAG=512,DUPLICATE_READ_FLAG=1024,SUPPLEMENTARY_ALIGNMENT_FLAG=2048;return igv.BamAlignment=function(){this.hidden=!1},igv.BamAlignment.prototype.isMapped=function(){return 0==(this.flags&READ_UNMAPPED_FLAG)},igv.BamAlignment.prototype.isPaired=function(){return 0!=(this.flags&READ_PAIRED_FLAG)},igv.BamAlignment.prototype.isProperPair=function(){return 0!=(this.flags&PROPER_PAIR_FLAG)},igv.BamAlignment.prototype.isFirstOfPair=function(){return 0!=(this.flags&FIRST_OF_PAIR_FLAG)},igv.BamAlignment.prototype.isSecondOfPair=function(){return 0!=(this.flags&SECOND_OF_PAIR_FLAG)},igv.BamAlignment.prototype.isSecondary=function(){return 0!=(this.flags&SECONDARY_ALIGNMNET_FLAG)},igv.BamAlignment.prototype.isSupplementary=function(){return 0!=(this.flags&SUPPLEMENTARY_ALIGNMENT_FLAG)},igv.BamAlignment.prototype.isFailsVendorQualityCheck=function(){return 0!=(this.flags&READ_FAILS_VENDOR_QUALITY_CHECK_FLAG)},igv.BamAlignment.prototype.isDuplicate=function(){return 0!=(this.flags&DUPLICATE_READ_FLAG)},igv.BamAlignment.prototype.isMateMapped=function(){return 0==(this.flags&MATE_UNMAPPED_FLAG)},igv.BamAlignment.prototype.isNegativeStrand=function(){return 0!=(this.flags&READ_STRAND_FLAG)},igv.BamAlignment.prototype.isMateNegativeStrand=function(){return 0!=(this.flags&MATE_STRAND_FLAG)},igv.BamAlignment.prototype.tags=function(){function decodeTags(ba){for(var p=0,len=ba.length,tags={};p"),nameValues.push({name:"Alignment Start",value:igv.numberFormatter(1+this.start),borderTop:!0}),nameValues.push({name:"Read Strand",value:!0===this.strand?"(+)":"(-)",borderTop:!0}),nameValues.push({name:"Cigar",value:this.cigar}),nameValues.push({name:"Mapped",value:yesNo(this.isMapped())}),nameValues.push({name:"Mapping Quality",value:this.mq}),nameValues.push({name:"Secondary",value:yesNo(this.isSecondary())}),nameValues.push({name:"Supplementary",value:yesNo(this.isSupplementary())}),nameValues.push({name:"Duplicate",value:yesNo(this.isDuplicate())}),nameValues.push({name:"Failed QC",value:yesNo(this.isFailsVendorQualityCheck())}),this.isPaired()&&(nameValues.push("
"),nameValues.push({name:"First in Pair",value:!this.isSecondOfPair(),borderTop:!0}),nameValues.push({name:"Mate is Mapped",value:yesNo(this.isMateMapped())}),this.isMateMapped()&&(nameValues.push({name:"Mate Chromosome",value:this.mate.chr}),nameValues.push({name:"Mate Start",value:this.mate.position+1}),nameValues.push({name:"Mate Strand",value:!0===this.mate.strand?"(+)":"(-)"}),nameValues.push({name:"Insert Size",value:this.fragmentLength}))),nameValues.push("
"),tagDict=this.tags(),isFirst=!0;for(var key in tagDict)tagDict.hasOwnProperty(key)&&(isFirst?(nameValues.push({name:key,value:tagDict[key],borderTop:!0}),isFirst=!1):nameValues.push({name:key,value:tagDict[key]}));return nameValues},igv.BamFilter=function(options){options||(options={}),this.vendorFailed=void 0===options.vendorFailed||options.vendorFailed,this.duplicates=void 0===options.duplicates||options.duplicates,this.secondary=options.secondary||!1,this.supplementary=options.supplementary||!1,this.mqThreshold=void 0===options.mqThreshold?0:options.mqThreshold},igv.BamFilter.prototype.pass=function(alignment){return(!this.vendorFailed||!alignment.isFailsVendorQualityCheck())&&((!this.duplicates||!alignment.isDuplicate())&&((!this.secondary||!alignment.isSecondary())&&((!this.supplementary||!alignment.isSupplementary())&&!(alignment.mqbpEnd||(centerAlignment=a))}),centerAlignment},igv.BamAlignmentRow.prototype.updateScore=function(genomicLocation,genomicInterval,sortOption){this.score=this.calculateScore(genomicLocation,1+genomicLocation,genomicInterval,sortOption)},igv.BamAlignmentRow.prototype.calculateScore=function(bpStart,bpEnd,interval,sortOption){function blockAtGenomicLocation(blocks,genomicLocation,genomicIntervalStart){var result=void 0;return blocks.forEach(function(block){for(var i=0,genomicOffset=block.start-genomicIntervalStart,blockLocation=block.start,blockSequenceLength=block.seq.length;i0&&(blockFirst=blockAtGenomicLocation(alignment.blocks,bpStart,interval.start),blockFirst&&(baseScoreFirst=blockScoreWithObject(blockFirst,interval))),alignment.firstAlignment&&alignment.firstAlignment.blocks&&alignment.firstAlignment.blocks.length>0&&(blockFirst=blockAtGenomicLocation(alignment.firstAlignment.blocks,bpStart,interval.start),blockFirst&&(baseScoreFirst=blockScoreWithObject(blockFirst,interval))),alignment.secondAlignment&&alignment.secondAlignment.blocks&&alignment.secondAlignment.blocks.length>0&&(blockSecond=blockAtGenomicLocation(alignment.secondAlignment.blocks,bpStart,interval.start),blockSecond&&(baseScoreSecond=blockScoreWithObject(blockSecond,interval))),baseScore=void 0===baseScoreFirst?baseScoreSecond:baseScoreFirst,void 0===baseScore?Number.MAX_VALUE:baseScore):"STRAND"===sortOption.sort?alignment.strand?1:-1:"START"===sortOption.sort?alignment.start:Number.MAX_VALUE)},igv}(igv||{}),igv=function(igv){function optimizeChunks(chunks,lowest){var mergedChunks=[],lastChunk=null;return 0===chunks.length?chunks:(chunks.sort(function(c0,c1){var dif=c0.minv.block-c1.minv.block;return 0!=dif?dif:c0.minv.offset-c1.minv.offset}),chunks.forEach(function(chunk){chunk.maxv.isGreaterThan(lowest)&&(null===lastChunk?(mergedChunks.push(chunk),lastChunk=chunk):chunk.minv.block-lastChunk.maxv.block<65e3?chunk.maxv.isGreaterThan(lastChunk.maxv)&&(lastChunk.maxv=chunk.maxv):(mergedChunks.push(chunk),lastChunk=chunk))}),mergedChunks)}function reg2bins(beg,end){var k,list=[];for(end>=1<<29&&(end=1<<29),--end,list.push(0),k=1+(beg>>26);k<=1+(end>>26);++k)list.push(k);for(k=9+(beg>>23);k<=9+(end>>23);++k)list.push(k);for(k=73+(beg>>20);k<=73+(end>>20);++k)list.push(k);for(k=585+(beg>>17);k<=585+(end>>17);++k)list.push(k);for(k=4681+(beg>>14);k<=4681+(end>>14);++k)list.push(k);return list}const BAI_MAGIC=21578050,TABIX_MAGIC=21578324;return igv.loadBamIndex=function(indexURL,config,tabix){return new Promise(function(fullfill,reject){var genome=igv.browser?igv.browser.genome:null;igv.xhr.loadArrayBuffer(indexURL,igv.buildOptions(config)).then(function(arrayBuffer){var magic,nbin,nintv,nref,parser,binIndex,linearIndex,binNumber,cs,ce,b,i,ref,sequenceIndexMap,indices=[],blockMin=Number.MAX_VALUE,blockMax=0;if(!arrayBuffer)return void fullfill(null);if(tabix){var inflate=new Zlib.Gunzip(new Uint8Array(arrayBuffer));arrayBuffer=inflate.decompress().buffer}if(parser=new igv.BinaryParser(new DataView(arrayBuffer)),magic=parser.getInt(),!(magic===BAI_MAGIC||tabix&&magic===TABIX_MAGIC))throw new Error(indexURL+" is not a "+(tabix?"tabix":"bai")+" file");if(nref=parser.getInt(),tabix){parser.getInt(),parser.getInt(),parser.getInt(),parser.getInt(),parser.getInt(),parser.getInt(),parser.getInt();for(sequenceIndexMap={},i=0;iblockMax&&(blockMax=ce.block),binIndex[binNumber].push([cs,ce]))}for(nintv=parser.getInt(),i=0;i0&&(indices[ref]={binIndex:binIndex,linearIndex:linearIndex})}fullfill(new igv.BamIndex(indices,blockMin,blockMax,sequenceIndexMap,tabix))}).catch(reject)})},igv.BamIndex=function(indices,blockMin,blockMax,sequenceIndexMap,tabix){this.firstAlignmentBlock=blockMin,this.lastAlignmentBlock=blockMax,this.indices=indices,this.sequenceIndexMap=sequenceIndexMap,this.tabix=tabix},igv.BamIndex.prototype.blocksForRange=function(refId,min,max){var overlappingBins,chunks,nintv,lowest,minLin,maxLin,vp,i,bam=this,ba=bam.indices[refId];if(ba){for(overlappingBins=reg2bins(min,max),chunks=[],overlappingBins.forEach(function(bin){if(ba.binIndex[bin])for(var binChunks=ba.binIndex[bin],nchnk=binChunks.length,c=0;c>14,nintv-1),maxLin=Math.min(max>>14,nintv-1),i=minLin;i<=maxLin;++i)vp=ba.linearIndex[i],vp&&(lowest&&!vp.isLessThan(lowest)||(lowest=vp));return optimizeChunks(chunks,lowest)}return[]},igv}(igv||{}),igv=function(igv){function getIndex(bam){return bam.index?Promise.resolve(bam.index):igv.loadBamIndex(bam.baiPath,bam.config).then(function(index){return bam.index=index,bam.index})}function getChrIndex(bam){return bam.chrToIndex?Promise.resolve(bam.chrToIndex):bam.readHeader().then(function(header){return bam.chrToIndex=header.chrToIndex,bam.indexToChr=header.chrNames,bam.chrAliasTable=header.chrAliasTable,bam.chrToIndex})}const MAX_GZIP_BLOCK_SIZE=65536,DEFAULT_SAMPLING_WINDOW_SIZE=100,DEFAULT_SAMPLING_DEPTH=50,MAXIMUM_SAMPLING_DEPTH=2500;return igv.BamReader=function(config){this.config=config,this.filter=config.filter||new igv.BamFilter,this.bamPath=config.url,this.baiPath=config.indexURL||igv.inferIndexPath(this.bamPath,"bai"),this.headPath=config.headURL||this.bamPath,this.samplingWindowSize=void 0===config.samplingWindowSize?DEFAULT_SAMPLING_WINDOW_SIZE:config.samplingWindowSize,this.samplingDepth=void 0===config.samplingDepth?DEFAULT_SAMPLING_DEPTH:config.samplingDepth,this.samplingDepth>MAXIMUM_SAMPLING_DEPTH&&(igv.log("Warning: attempt to set sampling depth > maximum value of 2500"),this.samplingDepth=MAXIMUM_SAMPLING_DEPTH),config.viewAsPairs?this.pairsSupported=!0:this.pairsSupported=void 0===config.pairsSupported||config.pairsSupported},igv.BamReader.prototype.readAlignments=function(chr,bpStart,bpEnd){var self=this;return getChrIndex(self).then(function(chrToIndex){var chrId,queryChr,alignmentContainer;return queryChr=self.chrAliasTable.hasOwnProperty(chr)?self.chrAliasTable[chr]:chr,chrId=chrToIndex[queryChr],alignmentContainer=new igv.AlignmentContainer(chr,bpStart,bpEnd,self.samplingWindowSize,self.samplingDepth,self.pairsSupported),void 0===chrId?Promise.resolve(alignmentContainer):getIndex(self).then(function(bamIndex){var chunks=bamIndex.blocksForRange(chrId,bpStart,bpEnd),promises=[];return chunks?0===chunks.length?Promise.resolve(alignmentContainer):(chunks.forEach(function(c){promises.push(new Promise(function(fulfill,reject){var fetchMin=c.minv.block,fetchMax=c.maxv.block+65e3,range={start:fetchMin,size:fetchMax-fetchMin+1};igv.xhr.loadArrayBuffer(self.bamPath,igv.buildOptions(self.config,{range:range})).then(function(compressed){var ba=new Uint8Array(igv.unbgzf(compressed));igv.BamUtils.decodeBamRecords(ba,c.minv.offset,alignmentContainer,bpStart,bpEnd,chrId,self.indexToChr,self.filter),fulfill(alignmentContainer)}).catch(reject)}))}),Promise.all(promises)):Promise.resolve(null)}).then(function(ignored){return alignmentContainer.finish(),alignmentContainer})})},igv.BamReader.prototype.readHeader=function(){var self=this;return getIndex(self).then(function(index){var len=index.firstAlignmentBlock+MAX_GZIP_BLOCK_SIZE,options=igv.buildOptions(self.config,{range:{start:0,size:len}}),genome=igv.browser?igv.browser.genome:null;return igv.BamUtils.readHeader(self.bamPath,options,genome)}).then(function(header){return header})},igv}(igv||{}),igv=function(igv){function pairAlignments(rows){var pairCache={},result=[];return rows.forEach(function(row){row.alignments.forEach(function(alignment){var pairedAlignment;canBePaired(alignment)?(pairedAlignment=pairCache[alignment.readName],pairedAlignment?(pairedAlignment.setSecondAlignment(alignment),pairCache[alignment.readName]=void 0):(pairedAlignment=new igv.PairedAlignment(alignment),pairCache[alignment.readName]=pairedAlignment,result.push(pairedAlignment))):result.push(alignment)})}),result}function unpairAlignments(rows){var result=[];return rows.forEach(function(row){row.alignments.forEach(function(alignment){alignment instanceof igv.PairedAlignment?(alignment.firstAlignment&&result.push(alignment.firstAlignment),alignment.secondAlignment&&result.push(alignment.secondAlignment)):result.push(alignment)})}),result}function canBePaired(alignment){return alignment.isPaired()&&alignment.isMateMapped()&&alignment.chr===alignment.mate.chr&&(alignment.isFirstOfPair()||alignment.isSecondOfPair())&&!(alignment.isSecondary()||alignment.isSupplementary())}function packAlignmentRows(alignments,start,end,maxRows){if(alignments){if(alignments.sort(function(a,b){return a.start-b.start}),0===alignments.length)return[];var nextStart,alignmentRow,index,bucket,alignment,bucketStart,bucketList=[],allocatedCount=0,lastAllocatedCount=0,alignmentSpace=8,packedAlignmentRows=[];for(bucketStart=Math.max(start,alignments[0].start),nextStart=bucketStart,alignments.forEach(function(alignment){var buckListIndex=Math.max(0,alignment.start-bucketStart);void 0===bucketList[buckListIndex]&&(bucketList[buckListIndex]=[]),bucketList[buckListIndex].push(alignment)});allocatedCount0&&packedAlignmentRows.push(alignmentRow),nextStart=bucketStart,allocatedCount===lastAllocatedCount)break;lastAllocatedCount=allocatedCount}return packedAlignmentRows}}return igv.BamSource=function(config){this.config=config,this.alignmentContainer=void 0,this.maxRows=config.maxRows||1e3,"ga4gh"===config.sourceType?this.bamReader=new igv.Ga4ghAlignmentReader(config):"pysam"===config.sourceType?this.bamReader=new igv.BamWebserviceReader(config):"htsget"===config.sourceType?this.bamReader=new igv.HtsgetReader(config):this.bamReader=new igv.BamReader(config),this.viewAsPairs=config.viewAsPairs},igv.BamSource.prototype.setViewAsPairs=function(bool){var self=this;if(this.viewAsPairs!==bool&&(this.viewAsPairs=bool,this.alignmentContainer)){var alignments,alignmentContainer=this.alignmentContainer;alignments=bool?pairAlignments(alignmentContainer.packedAlignmentRows):unpairAlignments(alignmentContainer.packedAlignmentRows),alignmentContainer.packedAlignmentRows=packAlignmentRows(alignments,alignmentContainer.start,alignmentContainer.end,self.maxRows)}},igv.BamSource.prototype.getAlignments=function(chr,bpStart,bpEnd){var self=this;return self.alignmentContainer&&self.alignmentContainer.contains(chr,bpStart,bpEnd)?Promise.resolve(self.alignmentContainer):new Promise(function(fulfill,reject){self.bamReader.readAlignments(chr,bpStart,bpEnd).then(function(alignmentContainer){var maxRows=self.config.maxRows||500,alignments=alignmentContainer.alignments;self.viewAsPairs||(alignments=unpairAlignments([{alignments:alignments}])),alignmentContainer.packedAlignmentRows=packAlignmentRows(alignments,alignmentContainer.start,alignmentContainer.end,maxRows),alignmentContainer.alignments=void 0,self.alignmentContainer=alignmentContainer,igv.browser.genome.sequence.getSequence(alignmentContainer.chr,alignmentContainer.start,alignmentContainer.end).then(function(sequence){sequence&&(alignmentContainer.coverageMap.refSeq=sequence,alignmentContainer.sequence=sequence,fulfill(alignmentContainer))}).catch(reject)}).catch(reject)})},igv}(igv||{}),igv=function(igv){function shadedBaseColor(qual,nucleotide,genomicLocation){var color,alpha,minQ=5,maxQ=20,foregroundColor=igv.nucleotideColorComponents[nucleotide];if(foregroundColor)return alpha=qual=1?igv.nucleotideColors[nucleotide]:"rgba("+foregroundColor[0]+","+foregroundColor[1]+","+foregroundColor[2]+","+alpha+")"}function getAlignmentColor(alignment){var tagValue,color,alignmentTrack=this,option=alignmentTrack.colorBy;switch(color=alignmentTrack.parent.color,option){case"strand":color=alignment.strand?alignmentTrack.posStrandColor:alignmentTrack.negStrandColor;break;case"firstOfPairStrand":alignment instanceof igv.PairedAlignment?color=alignment.firstOfPairStrand()?alignmentTrack.posStrandColor:alignmentTrack.negStrandColor:alignment.isPaired()&&(alignment.isFirstOfPair()?color=alignment.strand?alignmentTrack.posStrandColor:alignmentTrack.negStrandColor:alignment.isSecondOfPair()?color=alignment.strand?alignmentTrack.negStrandColor:alignmentTrack.posStrandColor:console.log("ERROR. Paired alignments are either first or second."));break;case"tag":tagValue=alignment.tags()[alignmentTrack.colorByTag],void 0!==tagValue&&(color=alignmentTrack.bamColorTag===alignmentTrack.colorByTag?"rgb("+tagValue+")":alignmentTrack.tagColors.getColor(tagValue));break;default:color=alignmentTrack.parent.color}return color}var alignmentStartGap=5,downsampleRowHeight=5;const DEFAULT_COVERAGE_TRACK_HEIGHT=50,DEFAULT_TRACK_HEIGHT=300;return igv.BAMTrack=function(config){this.featureSource=new igv.BamSource(config),void 0===config.height&&(config.height=DEFAULT_TRACK_HEIGHT),igv.configTrack(this,config),void 0===config.coverageTrackHeight&&(config.coverageTrackHeight=DEFAULT_COVERAGE_TRACK_HEIGHT),this.coverageTrack=new CoverageTrack(config,this),this.alignmentTrack=new AlignmentTrack(config,this),this.visibilityWindow=config.visibilityWindow||3e4,this.viewAsPairs=config.viewAsPairs,this.pairsSupported=void 0===config.pairsSupported,this.color=config.color||"rgb(185, 185, 185)",this.sortOption=config.sortOption||{sort:"NUCLEOTIDE"},this.sortDirection=!0,this.filterOption=config.filterOption||{name:"mappingQuality",params:[30,void 0]}},igv.BAMTrack.prototype.getFeatures=function(chr,bpStart,bpEnd){return this.featureSource.getAlignments(chr,bpStart,bpEnd)},igv.BAMTrack.filters={noop:function(){return function(alignment){return!1}},strand:function(strand){return function(alignment){return alignment.strand===strand}},mappingQuality:function(lower,upper){return function(alignment){return!!(lower&&alignment.mqupper)}}},igv.BAMTrack.prototype.altClick=function(genomicLocation,referenceFrame,event){this.alignmentTrack.sortAlignmentRows(genomicLocation,this.sortOption),this.trackView.viewports[0].redrawTile(this.featureSource.alignmentContainer),this.trackView.viewports[0].$viewport.scrollTop(0),this.sortDirection=!this.sortDirection},igv.BAMTrack.prototype.computePixelHeight=function(alignmentContainer){return this.coverageTrack.computePixelHeight(alignmentContainer)+this.alignmentTrack.computePixelHeight(alignmentContainer)},igv.BAMTrack.prototype.draw=function(options){this.coverageTrack.height>0&&this.coverageTrack.draw(options),this.alignmentTrack.draw(options)},igv.BAMTrack.prototype.paintAxis=function(ctx,pixelWidth,pixelHeight){this.coverageTrack.paintAxis(ctx,pixelWidth,this.coverageTrackHeight)},igv.BAMTrack.prototype.popupMenuItemList=function(config){var $e,clickHandler,self=this,list=[];return $e=$("
"),$e.text("Sort by base"),clickHandler=function(){self.alignmentTrack.sortAlignmentRows(config.genomicLocation,self.sortOption),config.viewport.redrawTile(self.featureSource.alignmentContainer),config.viewport.$viewport.scrollTop(0),self.sortDirection=!self.sortDirection,config.popover.hide()},list.push({name:void 0,object:$e,click:clickHandler,init:void 0}),!1===self.viewAsPairs&&($e=$("
"),$e.text("View mate in split screen"),clickHandler=function(){self.alignmentTrack.popupMenuItemList(config)},list.push({name:void 0,object:$e,click:clickHandler,init:void 0})),list},igv.BAMTrack.prototype.popupDataWithConfiguration=function(config){return config.y>=this.coverageTrack.top&&config.y"),parts.push(showCheck?'':''),"tag"===menuItem.key?parts.push(''):parts.push(""),parts.push(menuItem.label),parts.push(""),parts.push("
"),$e=$(parts.join("")),clickHandler=function(){igv.popover.hide(),"tag"===menuItem.key?(igv.dialog.configure(function(){return"Tag Name"},self.alignmentTrack.colorByTag?self.alignmentTrack.colorByTag:"",function(){var tag=igv.dialog.$dialogInput.val().trim();self.alignmentTrack.colorBy="tag",tag!==self.alignmentTrack.colorByTag&&(self.alignmentTrack.colorByTag=igv.dialog.$dialogInput.val().trim(),self.alignmentTrack.tagColors=new igv.PaletteColorTable("Set1"),$("#color-by-tag").text(self.alignmentTrack.colorByTag)),self.trackView.update()},void 0,void 0),igv.dialog.show($(self.trackView.trackDiv))):(self.alignmentTrack.colorBy=menuItem.key,self.trackView.update())},{name:void 0,object:$e,click:clickHandler,init:void 0}}function sortMenuItem(popover){var $e,clickHandler;return $e=$("
"),$e.text("Sort by base"),clickHandler=function(){var genomicLocation,viewportHalfWidth,genomicState=_.first(igv.browser.genomicStateList),referenceFrame=genomicState.referenceFrame;popover.hide(),viewportHalfWidth=Math.floor(.5*(igv.browser.viewportContainerWidth()/genomicState.locusCount)),genomicLocation=Math.floor(referenceFrame.start+referenceFrame.toBP(viewportHalfWidth)),self.altClick(genomicLocation,void 0,void 0),"show center guide"===igv.browser.centerGuide.$centerGuideToggle.text()&&igv.browser.centerGuide.$centerGuideToggle.trigger("click")},{name:void 0,object:$e,click:clickHandler,init:void 0}}var $e,html,tagLabel,selected,self=this,menuItems=[],colorByMenuItems=[];return menuItems.push(sortMenuItem(popover)),colorByMenuItems.push({key:"none",label:"track color"}),self.viewAsPairs||colorByMenuItems.push({key:"strand",label:"read strand"}),self.pairsSupported&&self.alignmentTrack.hasPairs&&colorByMenuItems.push({key:"firstOfPairStrand",label:"first-of-pair strand"}),tagLabel="tag"+(self.alignmentTrack.colorByTag?" ("+self.alignmentTrack.colorByTag+")":""),colorByMenuItems.push({key:"tag",label:tagLabel}),$e=$('
'),$e.text("Color by"),menuItems.push({name:void 0,object:$e,click:void 0,init:void 0}),colorByMenuItems.forEach(function(item){selected=self.alignmentTrack.colorBy===item.key,menuItems.push(colorByMarkup(item,selected))}),html=[],self.pairsSupported&&self.alignmentTrack.hasPairs&&(html.push('
'),html.push(!0===self.viewAsPairs?'':''),html.push(""),html.push("View as pairs"),html.push("
"),menuItems.push({object:$(html.join("")),click:function(){var $fa=$(this).find("i");popover.hide(),self.viewAsPairs=!self.viewAsPairs,!0===self.viewAsPairs?$fa.removeClass("fa-check-hidden"):$fa.addClass("fa-check-hidden"),self.featureSource.setViewAsPairs(self.viewAsPairs),self.trackView.update()}})),menuItems},CoverageTrack=function(config,parent){this.parent=parent,this.featureSource=parent.featureSource,this.top=0,this.height=config.coverageTrackHeight,this.dataRange={min:0},this.paintAxis=igv.paintAxis},CoverageTrack.prototype.computePixelHeight=function(alignmentContainer){return this.height},CoverageTrack.prototype.draw=function(options){var bp,x,y,w,h,refBase,i,len,item,accumulatedHeight,sequence,self=this,alignmentContainer=options.features,ctx=options.context,bpPerPixel=options.bpPerPixel,bpStart=options.bpStart,pixelWidth=options.pixelWidth,bpEnd=bpStart+pixelWidth*bpPerPixel+1,coverageMap=alignmentContainer.coverageMap;for(this.top&&ctx.translate(0,top),coverageMap.refSeq&&(sequence=coverageMap.refSeq.toUpperCase()),this.dataRange.max=coverageMap.maximum,w=Math.max(1,Math.ceil(1/bpPerPixel)),i=0,len=coverageMap.coverage.length;ibpEnd)break;item=coverageMap.coverage[i],item&&(h=Math.round(item.total/this.dataRange.max*this.height),y=this.height-h,x=Math.floor((bp-bpStart)/bpPerPixel),igv.graphics.setProperties(ctx,{fillStyle:this.parent.color,strokeStyle:this.color}),igv.graphics.fillRect(ctx,x,y,w,h))}if(sequence)for(i=0,len=coverageMap.coverage.length;ibpEnd)break;item=coverageMap.coverage[i],item&&(h=item.total/this.dataRange.max*this.height,y=this.height-h,x=Math.floor((bp-bpStart)/bpPerPixel),refBase=sequence[i],item.isMismatch(refBase)&&(igv.graphics.setProperties(ctx,{fillStyle:igv.nucleotideColors[refBase]}),igv.graphics.fillRect(ctx,x,y,w,h),accumulatedHeight=0,["A","C","T","G"].forEach(function(nucleotide){var count,hh;count=item["pos"+nucleotide]+item["neg"+nucleotide],hh=count/self.dataRange.max*self.height,y=self.height-hh-accumulatedHeight,accumulatedHeight+=hh,igv.graphics.setProperties(ctx,{fillStyle:igv.nucleotideColors[nucleotide]}), +igv.graphics.fillRect(ctx,x,y,w,hh)})))}},CoverageTrack.prototype.popupDataWithConfiguration=function(config){return this.popupData(config.genomicLocation,config.x,this.top,config.viewport.genomicState.referenceFrame)},CoverageTrack.prototype.popupData=function(genomicLocation,xOffset,yOffset,referenceFrame){var coverageMapIndex,coverage,tmp,coverageMap=this.featureSource.alignmentContainer.coverageMap,nameValues=[];return coverageMapIndex=genomicLocation-coverageMap.bpStart,coverage=coverageMap.coverage[coverageMapIndex],coverage&&(nameValues.push(referenceFrame.chrName+":"+igv.numberFormatter(1+genomicLocation)),nameValues.push({name:"Total Count",value:coverage.total}),tmp=coverage.posA+coverage.negA,tmp>0&&(tmp=tmp.toString()+" ("+Math.floor((coverage.posA+coverage.negA)/coverage.total*100)+"%)"),nameValues.push({name:"A",value:tmp}),tmp=coverage.posC+coverage.negC,tmp>0&&(tmp=tmp.toString()+" ("+Math.floor(tmp/coverage.total*100)+"%)"),nameValues.push({name:"C",value:tmp}),tmp=coverage.posG+coverage.negG,tmp>0&&(tmp=tmp.toString()+" ("+Math.floor(tmp/coverage.total*100)+"%)"),nameValues.push({name:"G",value:tmp}),tmp=coverage.posT+coverage.negT,tmp>0&&(tmp=tmp.toString()+" ("+Math.floor(tmp/coverage.total*100)+"%)"),nameValues.push({name:"T",value:tmp}),tmp=coverage.posN+coverage.negN,tmp>0&&(tmp=tmp.toString()+" ("+Math.floor(tmp/coverage.total*100)+"%)"),nameValues.push({name:"N",value:tmp})),nameValues},AlignmentTrack=function(config,parent){this.parent=parent,this.featureSource=parent.featureSource,this.top=0==config.coverageTrackHeight?0:config.coverageTrackHeight+5,this.alignmentRowHeight=config.alignmentRowHeight||14,this.negStrandColor=config.negStrandColor||"rgba(150, 150, 230, 0.75)",this.posStrandColor=config.posStrandColor||"rgba(230, 150, 150, 0.75)",this.insertionColor=config.insertionColor||"rgb(138, 94, 161)",this.deletionColor=config.deletionColor||"black",this.skippedColor=config.skippedColor||"rgb(150, 170, 170)",this.colorBy=config.colorBy||"none",this.colorByTag=config.colorByTag,this.bamColorTag=void 0===config.bamColorTag?"YC":config.bamColorTag,this.sortOption=config.sortOption||{sort:"NUCLEOTIDE"},this.sortDirection=!0,this.hasPairs=!1},AlignmentTrack.prototype.computePixelHeight=function(alignmentContainer){if(alignmentContainer.packedAlignmentRows){var h=0;return alignmentContainer.hasDownsampledIntervals()&&(h+=downsampleRowHeight+alignmentStartGap),h+this.alignmentRowHeight*alignmentContainer.packedAlignmentRows.length+5}return this.height},AlignmentTrack.prototype.draw=function(options){function drawPairConnector(alignment,yRect,alignmentHeight){var alignmentColor=getAlignmentColor.call(self,alignment.firstAlignment),xBlockStart=(alignment.connectingStart-bpStart)/bpPerPixel,xBlockEnd=(alignment.connectingEnd-bpStart)/bpPerPixel,yStrokedLine=yRect+alignmentHeight/2;alignment.connectingEndbpEnd||(alignment.mq<=0&&(alignmentColor=igv.Color.addAlpha(alignmentColor,"0.15")),igv.graphics.setProperties(ctx,{fillStyle:alignmentColor,strokeStyle:alignmentColor}),igv.graphics.strokeLine(ctx,xBlockStart,yStrokedLine,xBlockEnd,yStrokedLine))}function drawSingleAlignment(alignment,yRect,alignmentHeight){function drawBlock(block){var refChar,readChar,readQual,xBase,widthBase,colorBase,x,y,i,len,seqOffset=block.start-alignmentContainer.start,xBlockStart=(block.start-bpStart)/bpPerPixel,xBlockEnd=(block.start+block.len-bpStart)/bpPerPixel,widthBlock=Math.max(1,xBlockEnd-xBlockStart),widthArrowHead=self.alignmentRowHeight/2,blockSeq=block.seq.toUpperCase(),skippedColor=self.skippedColor,deletionColor=self.deletionColor,yStrokedLine=yRect+alignmentHeight/2;if(void 0!==block.gapType&&void 0!==xBlockEnd&&void 0!==lastBlockEnd&&("D"===block.gapType?igv.graphics.strokeLine(ctx,lastBlockEnd,yStrokedLine,xBlockStart,yStrokedLine,{strokeStyle:deletionColor}):igv.graphics.strokeLine(ctx,lastBlockEnd,yStrokedLine,xBlockStart,yStrokedLine,{strokeStyle:skippedColor})),lastBlockEnd=xBlockEnd,!0===alignment.strand&&b===blocks.length-1?(x=[xBlockStart,xBlockEnd,xBlockEnd+widthArrowHead,xBlockEnd,xBlockStart,xBlockStart],y=[yRect,yRect,yRect+alignmentHeight/2,yRect+alignmentHeight,yRect+alignmentHeight,yRect],igv.graphics.fillPolygon(ctx,x,y,{fillStyle:alignmentColor}),self.highlightedAlignmentReadNamed===alignment.readName&&igv.graphics.strokePolygon(ctx,x,y,{strokeStyle:"red"}),alignment.mq<=0&&igv.graphics.strokePolygon(ctx,x,y,{strokeStyle:outlineColor})):!1===alignment.strand&&0===b?(x=[xBlockEnd,xBlockStart,xBlockStart-widthArrowHead,xBlockStart,xBlockEnd,xBlockEnd],y=[yRect,yRect,yRect+alignmentHeight/2,yRect+alignmentHeight,yRect+alignmentHeight,yRect],igv.graphics.fillPolygon(ctx,x,y,{fillStyle:alignmentColor}),self.highlightedAlignmentReadNamed===alignment.readName&&igv.graphics.strokePolygon(ctx,x,y,{strokeStyle:"red"}),alignment.mq<=0&&igv.graphics.strokePolygon(ctx,x,y,{strokeStyle:outlineColor})):(igv.graphics.fillRect(ctx,xBlockStart,yRect,widthBlock,alignmentHeight,{fillStyle:alignmentColor}),alignment.mq<=0&&(ctx.save(),ctx.strokeStyle=outlineColor,ctx.strokeRect(xBlockStart,yRect,widthBlock,alignmentHeight),ctx.restore())),sequence&&"*"!==blockSeq)for(i=0,len=blockSeq.length;ii?(readQual=block.qual[i],colorBase=shadedBaseColor(readQual,readChar,i+block.start)):colorBase=igv.nucleotideColors[readChar],colorBase&&(xBase=(block.start+i-bpStart)/bpPerPixel,widthBase=Math.max(1,1/bpPerPixel),igv.graphics.fillRect(ctx,xBase,yRect,widthBase,alignmentHeight,{fillStyle:colorBase}))))}var lastBlockEnd,block,b,alignmentColor=getAlignmentColor.call(self,alignment),outlineColor="alignmentColor",blocks=alignment.blocks;if(!(alignment.start+alignment.lengthOnRefbpEnd))for(alignment.mq<=0&&(alignmentColor=igv.Color.addAlpha(alignmentColor,"0.15")),igv.graphics.setProperties(ctx,{fillStyle:alignmentColor,strokeStyle:outlineColor}),b=0;bbpEnd)break;alignment.insertions&&alignment.insertions.forEach(function(block){var refOffset=block.start-bpStart,xBlockStart=refOffset/bpPerPixel-1,widthBlock=3;igv.graphics.fillRect(ctx,xBlockStart,yRect-1,widthBlock,alignmentHeight+2,{fillStyle:self.insertionColor})})}}var self=this,alignmentContainer=options.features,ctx=options.context,bpPerPixel=options.bpPerPixel,bpStart=options.bpStart,pixelWidth=options.pixelWidth,bpEnd=bpStart+pixelWidth*bpPerPixel+1,packedAlignmentRows=alignmentContainer.packedAlignmentRows,sequence=alignmentContainer.sequence,alignmentRowYInset=0;this.top&&ctx.translate(0,this.top),sequence&&(sequence=sequence.toUpperCase()),alignmentContainer.hasDownsampledIntervals()?(alignmentRowYInset=downsampleRowHeight+alignmentStartGap,alignmentContainer.downsampledIntervals.forEach(function(interval){var xBlockStart=(interval.start-bpStart)/bpPerPixel,xBlockEnd=(interval.end-bpStart)/bpPerPixel;xBlockEnd-xBlockStart>5&&(xBlockStart+=1,xBlockEnd-=1),igv.graphics.fillRect(ctx,xBlockStart,2,xBlockEnd-xBlockStart,downsampleRowHeight-2,{fillStyle:"black"})})):alignmentRowYInset=0,this.alignmentsYOffset=alignmentRowYInset,packedAlignmentRows&&packedAlignmentRows.forEach(function(alignmentRow,i){var i,alignment,yRect=alignmentRowYInset+self.alignmentRowHeight*i,alignmentHeight=self.alignmentRowHeight-2;for(i=0;ibpEnd)break;!0!==alignment.hidden&&(alignment instanceof igv.PairedAlignment?(drawPairConnector(alignment,yRect,alignmentHeight),drawSingleAlignment(alignment.firstAlignment,yRect,alignmentHeight),alignment.secondAlignment&&drawSingleAlignment(alignment.secondAlignment,yRect,alignmentHeight)):drawSingleAlignment(alignment,yRect,alignmentHeight))}})},AlignmentTrack.prototype.sortAlignmentRows=function(genomicLocation,sortOption){var self=this;this.featureSource.alignmentContainer.packedAlignmentRows.forEach(function(row){row.updateScore(genomicLocation,self.featureSource.alignmentContainer,sortOption)}),this.featureSource.alignmentContainer.packedAlignmentRows.sort(function(rowA,rowB){return!0===self.sortDirection?rowA.score-rowB.score:rowB.score-rowA.score})},AlignmentTrack.prototype.popupDataWithConfiguration=function(config){var clickedObject;return clickedObject=this.getClickedObject(config.viewport,config.y,config.genomicLocation),clickedObject?clickedObject.popupData(config.genomicLocation):void 0},AlignmentTrack.prototype.popupMenuItemList=function(config){function locusPairWithAlignmentAndViewport(alignment,viewport){var left,right,centroid,widthBP;return widthBP=viewport.$viewport.width()*viewport.genomicState.referenceFrame.bpPerPixel,centroid=(alignment.start+(alignment.start+alignment.lengthOnRef))/2,left=alignment.chr+":"+Math.round(centroid-widthBP/2).toString()+"-"+Math.round(centroid+widthBP/2).toString(),centroid=(alignment.mate.position+(alignment.mate.position+alignment.lengthOnRef))/2,right=alignment.chr+":"+Math.round(centroid-widthBP/2).toString()+"-"+Math.round(centroid+widthBP/2).toString(),[left,right]}var alignment,loci,mateLoci,index,head,tail;this.highlightedAlignmentReadNamed=void 0,config.popover.hide(),alignment=this.getClickedObject(config.viewport,config.y,config.genomicLocation),alignment&&(this.highlightedAlignmentReadNamed=alignment.readName,loci=_.map(igv.browser.genomicStateList,function(gs){return gs.locusSearchString}),index=config.viewport.genomicState.locusIndex,head=_.first(loci,1+index),tail=1===_.size(loci)?void 0:_.last(loci,_.size(loci)-(1+index)),mateLoci=locusPairWithAlignmentAndViewport(alignment,config.viewport),head.splice(-1,1),Array.prototype.push.apply(head,mateLoci),tail&&Array.prototype.push.apply(head,tail),igv.browser.parseSearchInput(head.join(" ")))},AlignmentTrack.prototype.getClickedObject=function(viewport,y,genomicLocation){var packedAlignmentRows,downsampledIntervals,packedAlignmentsIndex,alignmentRow,clicked,i;if(packedAlignmentRows=viewport.drawConfiguration.features.packedAlignmentRows,downsampledIntervals=viewport.drawConfiguration.features.downsampledIntervals,packedAlignmentsIndex=Math.floor((y-this.top-this.alignmentsYOffset)/this.alignmentRowHeight),packedAlignmentsIndex<0){for(i=0;i=genomicLocation)return downsampledIntervals[i]}else if(packedAlignmentsIndex=alignment.start&&genomicLocation<=alignment.start+alignment.lengthOnRef}),clicked.length>0))return clicked[0]},igv}(igv||{}),igv=function(igv){function makeBlocks(record,cigarArray){for(var insertions,blockSeq,blockQuals,gapType,blocks=[],seqOffset=0,pos=record.start,len=cigarArray.length,i=0;i=48&&charCode<=57}function decodeSamTags(tags){var tagDict={};return tags.forEach(function(tag){var tokens=tag.split(":");tagDict[tokens[0]]=tokens[2]}),tagDict}var SEQ_DECODER=["=","A","C","x","G","x","x","x","T","x","x","x","x","x","x","N"],CIGAR_DECODER=["M","I","D","N","S","H","P","=","X","?","?","?","?","?","?","?"],READ_STRAND_FLAG=16,MATE_STRAND_FLAG=32,BAM1_MAGIC_BYTES=new Uint8Array([66,65,77,1]),BAM1_MAGIC_NUMBER=readInt(BAM1_MAGIC_BYTES,0);return igv.BamUtils={readHeader:function(url,options,genome){return new Promise(function(fulfill,reject){igv.xhr.loadArrayBuffer(url,options).then(function(compressedBuffer){var header,unc,uncba;unc=igv.unbgzf(compressedBuffer),uncba=new Uint8Array(unc),header=igv.BamUtils.decodeBamHeader(uncba,genome),fulfill(header)}).catch(function(error){reject(error)})})},decodeBamHeader:function(ba,genome){var magic,samHeaderLen,samHeader,chrToIndex,chrNames,chrAliasTable,alias;if(magic=readInt(ba,0),magic!==BAM1_MAGIC_NUMBER)throw new Error("BAM header contains an invalid BAM magic");samHeaderLen=readInt(ba,4),samHeader="";for(var i=0;i>1)+lseq;p+4=block_end)return!1;if("B"!=String.fromCharCode(ba[p+2])||"I"!=String.fromCharCode(ba[p+3]))return!1;var cigar_len=readInt(ba,p+4),cigar_offset=p+8;if(cigar_offset+4*cigar_len>block_end)return!1;var cigar="",lengthOnRef=0;cigarArray.length=0,p=cigar_offset;for(var k=0;k>4,opLtr=CIGAR_DECODER[15&cigop];"M"!=opLtr&&"EQ"!=opLtr&&"X"!=opLtr&&"D"!=opLtr&&"N"!=opLtr&&"="!=opLtr||(lengthOnRef+=opLen),cigar=cigar+opLen+opLtr,cigarArray.push({len:opLen,ltr:opLtr})}return al.cigar=cigar,al.lengthOnRef=lengthOnRef,!0},decodeBamRecords:function(ba,offset,alignmentContainer,min,max,chrIdx,chrNames,filter){for(var blockSize,blockEnd,alignment,blocks,refID,pos,bin_mq_nl,bin,mq,nl,flag_nc,flag,nc,lseq,tlen,mateChrIdx,matePos,readName,j,p,lengthOnRef,cigar,c,cigarArray,seq,seqBytes,qualArray;offsetba.length)return;if(alignment=new igv.BamAlignment,refID=readInt(ba,offset+4),pos=readInt(ba,offset+8),!(refID<0)){if(refID>chrIdx||pos>max)return;if(!(refID>16,mq=(65280&bin_mq_nl)>>8,nl=255&bin_mq_nl,flag_nc=readInt(ba,offset+16),flag=(4294901760&flag_nc)>>16,nc=65535&flag_nc,lseq=readInt(ba,offset+20),mateChrIdx=readInt(ba,offset+24),matePos=readInt(ba,offset+28),tlen=readInt(ba,offset+32),readName=[],j=0;j>4,opLtr=CIGAR_DECODER[15&cigop];"M"!=opLtr&&"EQ"!=opLtr&&"X"!=opLtr&&"D"!=opLtr&&"N"!=opLtr&&"="!=opLtr||(lengthOnRef+=opLen),cigar=cigar+opLen+opLtr,p+=4,cigarArray.push({len:opLen,ltr:opLtr})}if(alignment.chr=chrNames[refID],alignment.start=pos,alignment.flags=flag,alignment.strand=!(flag&READ_STRAND_FLAG),alignment.readName=readName,alignment.cigar=cigar,alignment.lengthOnRef=lengthOnRef,alignment.fragmentLength=tlen,alignment.mq=mq,igv.BamUtils.bam_tag2cigar(ba,blockEnd,p,lseq,alignment,cigarArray),alignment.start+alignment.lengthOnRef>1,j=0;j>4]),seq.push(SEQ_DECODER[15&sb])}if(seq=seq.slice(0,lseq).join(""),p+=seqBytes,1===lseq&&"*"===String.fromCharCode(ba[p+j]+33));else for(qualArray=[],j=0;j=0&&(alignment.mate={chr:chrNames[mateChrIdx],position:matePos,strand:!(flag&MATE_STRAND_FLAG)}),alignment.seq=seq,alignment.qual=qualArray,alignment.tagBA=new Uint8Array(ba.buffer.slice(p,blockEnd)),(!min||alignment.start<=max&&alignment.start+alignment.lengthOnRef>=min&&(void 0===filter||filter.pass(alignment)))&&(void 0!==chrIdx&&refID!=chrIdx||(blocks=makeBlocks(alignment,cigarArray),alignment.blocks=blocks.blocks,alignment.insertions=blocks.insertions,alignmentContainer.push(alignment))),offset=blockEnd}}}}},decodeSamRecords:function(sam,alignmentContainer,chr,min,max,filter){var lines,i,j,len,tokens,blocks,qualString,rnext,lengthOnRef,alignment,cigarArray,started;for(lines=sam.splitLines(),len=lines.length,started=!1,i=0;imax)break;if(lengthOnRef=0,cigarArray=buildOperators(alignment.cigar),cigarArray.forEach(function(op){var opLen=op.len,opLtr=op.ltr;"M"!=opLtr&&"EQ"!=opLtr&&"X"!=opLtr&&"D"!=opLtr&&"N"!=opLtr&&"="!=opLtr||(lengthOnRef+=opLen)}),alignment.lengthOnRef=lengthOnRef,!(alignment.start+lengthOnRefMAXIMUM_SAMPLING_DEPTH&&(igv.log("Warning: attempt to set sampling depth > maximum value of 2500"),this.samplingDepth=MAXIMUM_SAMPLING_DEPTH),config.viewAsPairs?this.pairsSupported=!0:this.pairsSupported=void 0===config.pairsSupported||config.pairsSupported},igv.BamWebserviceReader.prototype.readAlignments=function(chr,bpStart,bpEnd){var self=this;return new Promise(function(fulfill,reject){getHeader.call(self).then(function(header){var queryChr,url;queryChr=header.chrAliasTable.hasOwnProperty(chr)?header.chrAliasTable[chr]:chr,url=self.config.url+"?reference="+self.config.referenceFile+"&file="+self.config.alignmentFile+"®ion="+queryChr+":"+bpStart+"-"+bpEnd,igv.xhr.loadString(url,igv.buildOptions(self.config)).then(function(sam){var alignmentContainer,chrId;chrId=header.chrToIndex[queryChr],alignmentContainer=new igv.AlignmentContainer(chr,bpStart,bpEnd,self.samplingWindowSize,self.samplingDepth,self.pairsSupported),igv.BamUtils.decodeSamRecords(sam,alignmentContainer,queryChr,bpStart,bpEnd,self.filter),fulfill(alignmentContainer)}).catch(function(obj){reject(obj)})}).catch(reject)})},igv}(igv||{}),igv=function(igv){var BLOCK_HEADER_LENGTH=18;return igv.unbgzf=function(data,lim){var oBlockList=[],ptr=[0],totalSize=0;for(lim=lim||data.byteLength-18;ptr[0]=threshold},igv}(igv||{}),igv=function(igv){function loadUrls(urls){var promiseArray=[];return urls.forEach(function(urlData){if(urlData.url.startsWith("data:"))promiseArray.push(Promise.resolve(dataUriToBlob(urlData.url)));else{var options={};urlData.headers&&(options.headers=urlData.headers,options.headers.hasOwnProperty("referer")&&delete options.headers.referer),promiseArray.push(new Promise(function(fulfill,reject){igv.xhr.loadArrayBuffer(urlData.url,options).then(function(buffer){fulfill(new Uint8Array(buffer))})}))}}),Promise.all(promiseArray)}function concatArrays(arrays){var len,newArray,offset;return len=0,arrays.forEach(function(a){len+=a.length}),offset=0,newArray=new Uint8Array(len),arrays.forEach(function(a){newArray.set(a,offset),offset+=a.length}),newArray}function dataUriToBlob(dataUri){var bytes,split=dataUri.split(","),info=split[0].split(":")[1],dataString=split[1];dataString=info.indexOf("base64")>=0?atob(dataString):decodeURI(dataString),bytes=new Uint8Array(dataString.length);for(var i=0;ithis.firstAlignment.start?(this.end=alignment.start+alignment.lengthOnRef,this.connectingEnd=alignment.start):(this.start=alignment.start,this.connectingStart=alignment.start+alignment.lengthOnRef),this.lengthOnRef=this.end-this.start},igv.PairedAlignment.prototype.popupData=function(genomicLocation){var nameValues=[];return nameValues=nameValues.concat(this.firstAlignment.popupData(genomicLocation)),this.secondAlignment&&(nameValues.push("-------------------------------"),nameValues=nameValues.concat(this.secondAlignment.popupData(genomicLocation))),nameValues},igv.PairedAlignment.prototype.isPaired=function(){return!0},igv.PairedAlignment.prototype.firstOfPairStrand=function(){return this.firstAlignment.isFirstOfPair()?this.firstAlignment.strand:this.secondAlignment&&this.secondAlignment.isFirstOfPair()?this.secondAlignment.strand:this.firstAlignment.mate.strand},igv}(igv||{}),igv=function(igv){return igv.isb={querySegByStudy:function(study,limit){var q='SELECT * FROM [isb-cgc:tcga_201510_alpha.Copy_Number_segments] WHERE ParticipantBarcode IN (SELECT ParticipantBarcode FROM [isb-cgc:tcga_201510_alpha.Clinical_data] WHERE Study = "'+study+'")';return limit&&(q+=" limit "+limit),q},decodeSeg:function(row){var seg={};return seg.ParticipantBarcode=row.f[0].v,seg.Study=row.f[4].v,seg.Chromosome=row.f[6].v,seg.Start=row.f[7].v,seg.End=row.f[8].v,seg.Num_Probes=row.f[9].v,seg.Segment_mean=row.f[10].v,seg}},igv}(igv||{}),igv=function(igv){return igv.BufferedReader=function(config,contentLength,bufferSize){this.path=config.url,this.contentLength=contentLength,this.bufferSize=bufferSize?bufferSize:512e3,this.range={start:-1,size:-1},this.config=config},igv.BufferedReader.prototype.dataViewForRange=function(requestedRange,asUint8){function subbuffer(bufferedReader,requestedRange,asUint8){var len=bufferedReader.data.byteLength,bufferStart=requestedRange.start-bufferedReader.range.start,result=asUint8?new Uint8Array(bufferedReader.data,bufferStart,len-bufferStart):new DataView(bufferedReader.data,bufferStart,len-bufferStart);return result}var bufferSize,loadRange,self=this,hasData=self.data&&self.range.start<=requestedRange.start&&self.range.start+self.range.size>=requestedRange.start+requestedRange.size;return hasData?Promise.resolve(subbuffer(self,requestedRange,asUint8)):(bufferSize=Math.max(self.bufferSize,requestedRange.size),loadRange=self.contentLength>0&&requestedRange.start+bufferSize>self.contentLength?{start:requestedRange.start}:{start:requestedRange.start,size:bufferSize},igv.xhr.loadArrayBuffer(self.path,igv.buildOptions(self.config,{range:loadRange})).then(function(arrayBuffer){return self.data=arrayBuffer,self.range=loadRange,subbuffer(self,requestedRange,asUint8)}))},igv}(igv||{}),igv=function(igv){function ZoomLevelHeader(index,byteBuffer){this.index=index,this.reductionLevel=byteBuffer.getInt(),this.reserved=byteBuffer.getInt(),this.dataOffset=byteBuffer.getLong(),this.indexOffset=byteBuffer.getLong()}function RPTree(fileOffset,contentLength,config,littleEndian){this.config=config,this.filesize=contentLength,this.fileOffset=fileOffset,this.path=config.url,this.littleEndian=littleEndian}function RPTreeNode(items){this.items=items;var i,item,minChromId=Number.MAX_VALUE,maxChromId=0,minStartBase=Number.MAX_VALUE,maxEndBase=0;for(i=0;i=0&&(byteBuffer.position=offset);var i,key,chromId,chromSize,childOffset,bufferOffset,currOffset,type=byteBuffer.getByte(),count=(byteBuffer.getByte(),byteBuffer.getUShort());if(1==type)for(i=0;iitem.startChrom||chrIdx2==item.startChrom&&endBase>=item.startBase)&&(chrIdx10){this.mean=this.sumData/n,this.stddev=Math.sqrt(this.sumSquares/(n-1));this.minVal<0?this.mean-2*this.stddev:0,this.maxVal>0?this.mean+2*this.stddev:0;this.defaultRange={min:0,max:this.mean+3*this.stddev}}}function zoomLevelForScale(bpPerPixel,zoomLevelHeaders){var i,zl,level=null;for(i=0;i=chrIdx1&&chromId<=chrIdx2)for(;itemCount-- >0;){switch(type){case 1:chromStart=binaryParser.getInt(),chromEnd=binaryParser.getInt(),value=binaryParser.getFloat();break;case 2:chromStart=binaryParser.getInt(),value=binaryParser.getFloat(),chromEnd=chromStart+itemSpan;break;case 3:value=binaryParser.getFloat(),chromEnd=chromStart+itemSpan,chromStart+=itemStep}if(!(chromIdchrIdx2||chromId===chrIdx2&&chromStart>=bpEnd)break;Number.isFinite(value)&&(chr=chrDict[chromId],featureArray.push({chr:chr,start:chromStart,end:chromEnd,value:value}))}}}function decodeBedData(data,chrIdx1,bpStart,chrIdx2,bpEnd,featureArray,chrDict){for(var chromId,chromStart,chromEnd,rest,tokens,feature,exonCount,exonSizes,exonStarts,exons,eStart,eEnd,chr,binaryParser=new igv.BinaryParser(data),minSize=13;binaryParser.remLength()>=minSize;)if(chromId=binaryParser.getInt(),chr=chrDict[chromId],chromStart=binaryParser.getInt(),chromEnd=binaryParser.getInt(),rest=binaryParser.getString(),!(chromIdchrIdx2||chromId===chrIdx2&&chromStart>=bpEnd)break;if(feature={chr:chr,start:chromStart,end:chromEnd},featureArray.push(feature),tokens=rest.split("\t"),tokens.length>0&&(feature.name=tokens[0]),tokens.length>1&&(feature.score=parseFloat(tokens[1])),tokens.length>2&&(feature.strand=tokens[2]),tokens.length>3&&(feature.cdStart=parseInt(tokens[3])),tokens.length>4&&(feature.cdEnd=parseInt(tokens[4])),tokens.length>5&&"."!==tokens[5]&&"0"!==tokens[5]&&(feature.color=igv.Color.createColorString(tokens[5])),tokens.length>8){exonCount=parseInt(tokens[6]),exonSizes=tokens[7].split(","),exonStarts=tokens[8].split(","),exons=[];for(var i=0;i=minSize;)if(chromId=binaryParser.getInt(),chr=chrDict[chromId],chromStart=binaryParser.getInt(),chromEnd=binaryParser.getInt(),!(chromIdchrIdx2||chromId===chrIdx2&&chromStart>=bpEnd)break;switch(validCount=binaryParser.getInt(),minVal=binaryParser.getFloat(),maxVal=binaryParser.getFloat(),sumData=binaryParser.getFloat(),sumSquares=binaryParser.getFloat(),windowFunction){case"min":value=minVal;break;case"max":value=maxVal;break;default:value=0==validCount?0:sumData/validCount}Number.isFinite(value)&&featureArray.push({chr:chr,start:chromStart,end:chromEnd,value:value})}}var BIGWIG_MAGIC_LTH=2291137574,BIGWIG_MAGIC_HTL=654085990,BIGBED_MAGIC_LTH=2273964779,BIGBED_MAGIC_HTL=3958540679,BBFILE_HEADER_SIZE=64,RPTREE_HEADER_SIZE=48,RPTREE_NODE_LEAF_ITEM_SIZE=32,RPTREE_NODE_CHILD_ITEM_SIZE=24,BUFFER_SIZE=512e3;return igv.BWReader=function(config){this.path=config.url,this.headPath=config.headURL||this.path,this.rpTreeCache={},this.config=config},igv.BWReader.prototype.readWGFeatures=function(genome,bpPerPixel,windowFunction){var self=this;return self.getZoomHeaders().then(function(zoomLevelHeaders){var chrIdx1,chrIdx2,chr1,chr2;return chrIdx1=0,chrIdx2=self.chromTree.idToChrom.length-1,chr1=self.chromTree.idToChrom[chrIdx1],chr2=self.chromTree.idToChrom[chrIdx2],self.readFeatures(chr1,0,chr2,Number.MAX_VALUE,bpPerPixel,windowFunction)})},igv.BWReader.prototype.readFeatures=function(chr1,bpStart,chr2,bpEnd,bpPerPixel,windowFunction){var decodeFunction,chrIdx1,chrIdx2,self=this,bufferedReader=new igv.BufferedReader(self.config);return self.getZoomHeaders().then(function(zoomLevelHeaders){var treeOffset,zoomLevelHeader=zoomLevelForScale(bpPerPixel,zoomLevelHeaders);return zoomLevelHeader?(treeOffset=zoomLevelHeader.indexOffset,decodeFunction=decodeZoomData):(treeOffset=self.header.fullIndexOffset,decodeFunction="BigWig"===self.type?decodeWigData:decodeBedData),self.loadRPTree(treeOffset)}).then(function(rpTree){return chrIdx1=self.chromTree.chromToID[chr1],chrIdx2=self.chromTree.chromToID[chr2],void 0===chrIdx1||void 0===chrIdx2?void 0:rpTree.findLeafItemsOverlapping(chrIdx1,bpStart,chrIdx2,bpEnd)}).then(function(leafItems){var promises=[];return leafItems&&0!=leafItems.length?(leafItems.forEach(function(item){promises.push(bufferedReader.dataViewForRange({start:item.dataOffset,size:item.dataSize},!0).then(function(uint8Array){var features=[],inflate=new Zlib.Inflate(uint8Array),plain=inflate.decompress();return decodeFunction(new DataView(plain.buffer),chrIdx1,bpStart,chrIdx2,bpEnd,features,self.chromTree.idToChrom,windowFunction),features}))}),Promise.all(promises)):[]}).then(function(featureArrays){var allFeatures=[];return allFeatures=allFeatures.concat.apply(allFeatures,featureArrays),allFeatures.sort(function(a,b){return a.start-b.start}),allFeatures})},igv.BWReader.prototype.getZoomHeaders=function(){var self=this;return self.zoomLevelHeaders?Promise.resolve(self.zoomLevelHeaders):self.loadHeader().then(function(){return self.zoomLevelHeaders})},igv.BWReader.prototype.loadHeader=function(){function loadZoomHeadersAndChrTree(){var startOffset=BBFILE_HEADER_SIZE,self=this,range={start:startOffset,size:self.header.fullDataOffset-startOffset+5};return igv.xhr.loadArrayBuffer(self.path,igv.buildOptions(self.config,{range:range})).then(function(data){var i,zoomNumber,zlh,nZooms=self.header.nZoomLevels,binaryParser=new igv.BinaryParser(new DataView(data));for(self.zoomLevelHeaders=[],self.firstZoomDataOffset=Number.MAX_VALUE,i=1;i<=nZooms;i++)zoomNumber=nZooms-i,zlh=new ZoomLevelHeader(zoomNumber,binaryParser),self.firstZoomDataOffset=Math.min(zlh.dataOffset,self.firstZoomDataOffset),self.zoomLevelHeaders[zoomNumber]=zlh;return self.header.autoSqlOffset>0&&(binaryParser.position=self.header.autoSqlOffset-startOffset,self.autoSql=binaryParser.getString()),self.header.totalSummaryOffset>0&&(binaryParser.position=self.header.totalSummaryOffset-startOffset,self.totalSummary=new BWTotalSummary(binaryParser)),self.header.chromTreeOffset>0&&(binaryParser.position=self.header.chromTreeOffset-startOffset,self.chromTree=new BPTree(binaryParser,startOffset)),binaryParser.position=self.header.fullDataOffset-startOffset,self.dataCount=binaryParser.getInt(),self.header})}var self=this;return igv.xhr.loadArrayBuffer(self.path,igv.buildOptions(self.config,{range:{start:0,size:BBFILE_HEADER_SIZE}})).then(function(data){var header;self.littleEndian=!0;var binaryParser=new igv.BinaryParser(new DataView(data)),magic=binaryParser.getUInt();if(magic===BIGWIG_MAGIC_LTH)self.type="BigWig";else if(magic==BIGBED_MAGIC_LTH)self.type="BigBed";else{self.littleEndian=!1,binaryParser.littleEndian=!1,binaryParser.position=0;var magic=binaryParser.getUInt();magic===BIGWIG_MAGIC_HTL?self.type="BigWig":magic==BIGBED_MAGIC_HTL&&(self.type="BigBed")}return header={},header.bwVersion=binaryParser.getUShort(),header.nZoomLevels=binaryParser.getUShort(),header.chromTreeOffset=binaryParser.getLong(),header.fullDataOffset=binaryParser.getLong(),header.fullIndexOffset=binaryParser.getLong(),header.fieldCount=binaryParser.getUShort(),header.definedFieldCount=binaryParser.getUShort(),header.autoSqlOffset=binaryParser.getLong(),header.totalSummaryOffset=binaryParser.getLong(),header.uncompressBuffSize=binaryParser.getInt(),header.reserved=binaryParser.getLong(),header}).then(function(header){return self.header=header,loadZoomHeadersAndChrTree.call(self)})},igv.BWReader.prototype.loadRPTree=function(offset){var self=this,rpTree=self.rpTreeCache[offset];return rpTree?Promise.resolve(rpTree):(rpTree=new RPTree(offset,self.contentLength,self.config,self.littleEndian),self.rpTreeCache[offset]=rpTree,rpTree.load())},RPTree.prototype.load=function(){var self=this,rootNodeOffset=self.fileOffset+RPTREE_HEADER_SIZE,bufferedReader=new igv.BufferedReader(self.config,self.filesize,BUFFER_SIZE);return self.readNode(rootNodeOffset,bufferedReader).then(function(node){return self.rootNode=node,self})},RPTree.prototype.readNode=function(filePosition,bufferedReader){var count,isLeaf,self=this;return bufferedReader.dataViewForRange({start:filePosition,size:4},!1).then(function(dataView){var binaryParser,type,reserved;binaryParser=new igv.BinaryParser(dataView,self.littleEndian),type=binaryParser.getByte(),isLeaf=1===type,reserved=binaryParser.getByte(),count=binaryParser.getUShort(),filePosition+=4;var bytesRequired=count*(isLeaf?RPTREE_NODE_LEAF_ITEM_SIZE:RPTREE_NODE_CHILD_ITEM_SIZE),range2={start:filePosition,size:bytesRequired};return bufferedReader.dataViewForRange(range2,!1)}).then(function(dataView){var i,items=new Array(count),binaryParser=new igv.BinaryParser(dataView);if(isLeaf){for(i=0;i=0;i--)value=256*value+b[i];else for(var i=0;i0&&(s+=String.fromCharCode(c));return s},igv.BinaryParser.prototype.getFixedLengthTrimmedString=function(len){var i,c,s="";for(i=0;i32&&(s+=String.fromCharCode(c));return s},igv.BinaryParser.prototype.getFloat=function(){var retValue=this.view.getFloat32(this.position,this.littleEndian);return this.position+=4,retValue},igv.BinaryParser.prototype.getDouble=function(){var retValue=this.view.getFloat64(this.position,this.littleEndian);return this.position+=8,retValue},igv.BinaryParser.prototype.skip=function(n){return this.position+=n,this.position},igv.BinaryParser.prototype.getVPointer=function(){var position=this.position,offset=this.view.getUint8(position+1)<<8|this.view.getUint8(position),byte6=4294967296*(255&this.view.getUint8(position+6)),byte5=16777216*(255&this.view.getUint8(position+5)),byte4=65536*(255&this.view.getUint8(position+4)),byte3=256*(255&this.view.getUint8(position+3)),byte2=255&this.view.getUint8(position+2),block=byte6+byte5+byte4+byte3+byte2;return this.position+=8,new VPointer(block,offset)},VPointer.prototype.isLessThan=function(vp){return this.blockvp.block||this.block===vp.block&&this.offset>vp.offset},VPointer.prototype.print=function(){return""+this.block+":"+this.offset},igv}(igv||{}),igv=function(igv){function initialize(options){var genomeId;this.flanking=options.flanking,this.type=options.type||"IGV",this.crossDomainProxy=options.crossDomainProxy,this.formats=options.formats,this.trackDefaults=options.trackDefaults,options.search?this.searchConfig={type:"json",url:options.search.url,coords:void 0===options.search.coords?1:options.search.coords,chromosomeField:options.search.chromosomeField||"chromosome",startField:options.search.startField||"start",endField:options.search.endField||"end",resultsField:options.search.resultsField}:(genomeId=options.reference&&options.reference.id?options.reference.id:options.genome?options.genome:"hg19",this.searchConfig={type:"plain",url:"https://portals.broadinstitute.org/webservices/igv/locus?genome=$GENOME$&name=$FEATURE$",coords:0,chromosomeField:"chromosome",startField:"start",endField:"end"})}function parseSearchResults(data){var lines=data.splitLines(),linesTrimmed=[],results=[];return lines.forEach(function(item){""===item||linesTrimmed.push(item)}),linesTrimmed.forEach(function(line){var source,locusTokens,rangeTokens,tokens=line.split("\t");tokens.length>=3&&(locusTokens=tokens[1].split(":"),rangeTokens=locusTokens[1].split("-"),source=tokens[2].trim(),results.push({gene:tokens[0],chromosome:igv.browser.genome.getChromosomeName(locusTokens[0].trim()),start:parseInt(rangeTokens[0].replace(/,/g,"")),end:parseInt(rangeTokens[1].replace(/,/g,"")),type:"gtex"===source?"snp":"gene"}))}),results}function attachTrackContainerMouseHandlers(trackContainerDiv){function mouseUpOrOut(e){isRulerTrack||igv.browser.$cursorTrackingGuide&&e.toElement===igv.browser.$cursorTrackingGuide.get(0)&&"mouseleave"===e.type||(isDragging&&(igv.browser.fireEvent("trackdragend"),isDragging=!1),isMouseDown=!1,mouseDownX=lastMouseX=void 0,$viewport=viewport=void 0,referenceFrame=void 0)}var $viewport,viewport,viewports,referenceFrame,isRulerTrack=!1,isMouseDown=!1,isDragging=!1,lastMouseX=void 0,mouseDownX=void 0;$(trackContainerDiv).mousedown(function(e){var coords,$target;return e.preventDefault(),igv.popover&&igv.popover.hide(),$target=$(e.target),$viewport=$target.parents(".igv-viewport-div"),0===_.size($viewport)?void($viewport=void 0):(isRulerTrack=!!$target.parents("div[data-ruler-track='rulerTrack']").get(0),void(isRulerTrack||(isMouseDown=!0,coords=igv.translateMouseCoordinates(e,$viewport.get(0)),mouseDownX=lastMouseX=coords.x,viewport=igv.Viewport.viewportWithID($viewport.data("viewport")),referenceFrame=viewport.genomicState.referenceFrame,viewports=igv.Viewport.viewportsWithLocusIndex($viewport.data("locusindex")))))}),$(trackContainerDiv).mousemove(function(e){var xy,_left,$element=igv.browser.$cursorTrackingGuide;e.preventDefault(),xy=igv.translateMouseCoordinates(e,trackContainerDiv),_left=Math.max(50,xy.x-5),_left=Math.min(igv.browser.trackContainerDiv.clientWidth-65,_left),$element.css({left:_left+"px"})}),$(trackContainerDiv).mousemove(igv.throttle(function(e){var coords,maxEnd,maxStart;if(e.preventDefault(),!0!==isRulerTrack&&void 0!==$viewport&&($viewport&&(coords=igv.translateMouseCoordinates(e,$viewport.get(0))),referenceFrame&&isMouseDown)){if(mouseDownX&&Math.abs(coords.x-mouseDownX)>igv.browser.constants.dragThreshold){if(igv.browser.loadInProgress())return;isDragging=!0,referenceFrame.shiftPixels(lastMouseX-coords.x),referenceFrame.start=Math.max(0,referenceFrame.start);var chromosome=igv.browser.genome.getChromosome(referenceFrame.chrName);maxEnd=chromosome.bpLength,maxStart=maxEnd-viewport.$viewport.width()*referenceFrame.bpPerPixel,referenceFrame.start>maxStart&&(referenceFrame.start=maxStart),igv.browser.updateLocusSearchWithGenomicState(_.first(igv.browser.genomicStateList)),igv.browser.repaintWithLocusIndex(viewport.genomicState.locusIndex),igv.browser.fireEvent("trackdrag")}lastMouseX=coords.x}},10)),$(trackContainerDiv).mouseup(mouseUpOrOut),$(trackContainerDiv).mouseleave(mouseUpOrOut)}function presentSearchResults(loci,config,feature){igv.browser.$searchResultsTable.empty(),igv.browser.$searchResults.show(),loci.forEach(function(locus){var row=$("");row.text(locus.locusString),row.click(function(){igv.browser.$searchResults.hide(),handleSearchResult(feature,locus[config.chromosomeField],locus[config.startField]-config.coords,locus[config.endField],locus.featureType||locus.type)}),igv.browser.$searchResultsTable.append(row)})}function handleSearchResult(name,chr,start,end,type){igv.browser.selection=new igv.GtexSelection("gtex"===type||"snp"===type?{snp:name}:{gene:name}),void 0===end&&(end=start+1),igv.browser.flanking&&(start=Math.max(0,start-igv.browser.flanking),end+=igv.browser.flanking),igv.browser.goto(chr,start,end),fireOnsearch.call(igv.browser,name,type)}function fireOnsearch(feature,type){this.trackViews.forEach(function(tp){var track=tp.track;track.onsearch&&track.onsearch(feature,type)})}return igv.Browser=function(options,trackContainerDiv){this.config=options,igv.browser=this,igv.browser.$root=$('
'),initialize.call(this,options),$("input[id='trackHeightInput']").val(this.trackHeight),this.trackContainerDiv=trackContainerDiv,attachTrackContainerMouseHandlers(this.trackContainerDiv),this.trackViews=[],this.trackLabelsVisible=!0,this.featureDB={},this.constants={dragThreshold:3,defaultColor:"rgb(0,0,150)",doubleClickDelay:options.doubleClickDelay||500},this.eventHandlers={},window.onresize=igv.throttle(function(){igv.browser.resize()},10),$(document).mousedown(function(e){igv.browser.isMouseDown=!0}),$(document).mouseup(function(e){igv.browser.isMouseDown=void 0,igv.browser.dragTrackView&&igv.browser.dragTrackView.$trackDragScrim.hide(),igv.browser.dragTrackView=void 0}),$(document).click(function(e){var target=e.target;igv.browser.$root.get(0).contains(target)||igv.popover.hide()})},igv.Browser.hasKnownFileExtension=function(config){var extension=igv.getExtension(config);return void 0!==extension&&igv.Browser.knownFileExtensions.has(extension)},igv.Browser.prototype.disableZoomWidget=function(){this.$zoomContainer.hide()},igv.Browser.prototype.enableZoomWidget=function(){this.$zoomContainer.show()},igv.Browser.prototype.toggleCursorGuide=function(genomicStateList){_.size(genomicStateList)>1||"all"===_.first(genomicStateList).locusSearchString.toLowerCase()?(this.$cursorTrackingGuide.is(":visible")&&this.$cursorTrackingGuideToggle.click(),this.$cursorTrackingGuideToggle.hide()):this.$cursorTrackingGuideToggle.show()},igv.Browser.prototype.toggleCenterGuide=function(genomicStateList){_.size(genomicStateList)>1||"all"===_.first(genomicStateList).locusSearchString.toLowerCase()?(this.centerGuide.$container.is(":visible")&&this.centerGuide.$centerGuideToggle.click(),this.centerGuide.$centerGuideToggle.hide()):this.centerGuide.$centerGuideToggle.show()},igv.Browser.prototype.loadTracksWithConfigList=function(configList){var self=this,loadedTracks=[];return _.each(configList,function(config){var track=self.loadTrack(config);track&&loadedTracks.push(track)}),_.each(this.trackViews,function(trackView){trackView.resize()}),loadedTracks},igv.Browser.prototype.loadTrack=function(config){var settings,property,newTrack,self=this;if(igv.inferTrackTypes(config),this.trackDefaults&&config.type&&(settings=this.trackDefaults[config.type]))for(property in settings)settings.hasOwnProperty(property)&&void 0===config[property]&&(config[property]=settings[property]);return newTrack=igv.createTrack(config),void 0===newTrack?(igv.presentAlert("Unknown file type: "+config.url),newTrack):(void 0===newTrack.order&&(newTrack.order=this.trackViews.length),"function"==typeof newTrack.getFileHeader?newTrack.getFileHeader().then(function(header){self.addTrack(newTrack)}).catch(function(error){igv.presentAlert(error)}):self.addTrack(newTrack),newTrack)},igv.Browser.prototype.addTrack=function(track){var trackView;"undefined"!=typeof igv.popover&&igv.popover.hide(),trackView=new igv.TrackView(this,$(this.trackContainerDiv),track),this.trackViews.push(trackView),this.reorderTracks(),trackView.update()},igv.Browser.prototype.reorderTracks=function(){var myself=this;this.trackViews.sort(function(a,b){var aOrder=a.track.order||0,bOrder=b.track.order||0;return aOrder-bOrder}),$(this.trackContainerDiv).children("igv-track-div").detach(),this.trackViews.forEach(function(trackView){myself.trackContainerDiv.appendChild(trackView.trackDiv)})},igv.Browser.prototype.removeTrackByName=function(name){var remove;remove=_.first(_.filter(this.trackViews,function(trackView){return name===trackView.track.name})),this.removeTrack(remove.track)},igv.Browser.prototype.removeTrack=function(track){for(var trackPanelRemoved,i=0;i0?(trackView=_.first(trackViews),_.size(trackView.viewports)>0?(viewport=_.first(trackView.viewports),pixel=viewport.$viewport.width(),bpp=viewport.genomicState.referenceFrame.bpPerPixel,bp=pixel*bpp,result=bp>viewport.genomicState.chromosome.bpLength):result=!1):result=!1,result}var viewport;!0===resizeWillExceedChromosomeLength(this.trackViews)?(viewport=_.first(_.first(this.trackViews).viewports),this.parseSearchInput(viewport.genomicState.chromosome.name)):_.each(_.union([this.ideoPanel,this.karyoPanel,this.centerGuide],this.trackViews),function(renderable){renderable&&renderable.resize()})},igv.Browser.prototype.repaint=function(){_.each(_.union([this.ideoPanel,this.karyoPanel,this.centerGuide],this.trackViews),function(renderable){renderable&&renderable.repaint()})},igv.Browser.prototype.repaintWithLocusIndex=function(locusIndex){this.karyoPanel&&this.karyoPanel.repaint(),this.ideoPanel&&igv.IdeoPanel.repaintPanel(this.ideoPanel.panelWithLocusIndex(locusIndex)),_.each(igv.Viewport.viewportsWithLocusIndex(locusIndex),function(viewport){viewport.repaint()})},igv.Browser.prototype.update=function(){this.updateLocusSearchWithGenomicState(_.first(this.genomicStateList)),this.windowSizePanel.updateWithGenomicState(_.first(this.genomicStateList)),_.each([this.ideoPanel,this.karyoPanel,this.centerGuide],function(renderable){renderable&&renderable.repaint()}),_.each(this.trackViews,function(trackView){trackView.update()})},igv.Browser.prototype.updateWithLocusIndex=function(locusIndex){igv.browser.updateLocusSearchWithGenomicState(_.first(this.genomicStateList)),0===locusIndex&&this.windowSizePanel.updateWithGenomicState(this.genomicStateList[locusIndex]),this.ideoPanel&&igv.IdeoPanel.repaintPanel(this.ideoPanel.panelWithLocusIndex(locusIndex)),this.karyoPanel&&this.karyoPanel.repaint(),_.each(igv.Viewport.viewportsWithLocusIndex(locusIndex),function(viewport){viewport.update()}),this.centerGuide&&this.centerGuide.repaint()},igv.Browser.prototype.loadInProgress=function(){var anyTrackViewIsLoading;return anyTrackViewIsLoading=!1,_.each(this.trackViews,function(t){!1===anyTrackViewIsLoading&&(anyTrackViewIsLoading=t.isLoading())}),anyTrackViewIsLoading},igv.Browser.prototype.updateLocusSearchWithGenomicState=function(genomicState){var referenceFrame,ss,ee,str,end,chromosome,self=this;0===genomicState.locusIndex&&1===genomicState.locusCount?"all"===genomicState.locusSearchString.toLowerCase()?(this.$searchInput.val(genomicState.locusSearchString),this.chromosomeSelectWidget.$select.val("all")):(referenceFrame=genomicState.referenceFrame,this.chromosomeSelectWidget.$select.val(referenceFrame.chrName),this.$searchInput&&(end=referenceFrame.start+referenceFrame.bpPerPixel*(self.viewportContainerWidth()/genomicState.locusCount),this.genome&&(chromosome=this.genome.getChromosome(referenceFrame.chrName),chromosome&&(end=Math.min(end,chromosome.bpLength))),ss=igv.numberFormatter(Math.floor(referenceFrame.start+1)),ee=igv.numberFormatter(Math.floor(end)),str=referenceFrame.chrName+":"+ss+"-"+ee,this.$searchInput.val(str)),this.fireEvent("locuschange",[referenceFrame,str])):this.$searchInput.val("")},igv.Browser.prototype.syntheticViewportContainerBBox=function(){var $trackContainer=$(this.trackContainerDiv),$track=$('
'),$viewportContainer=$('
'),rect={};return $trackContainer.append($track),$track.append($viewportContainer),rect={position:$viewportContainer.position(),width:$viewportContainer.width(),height:$viewportContainer.height()},$track.remove(),rect},igv.Browser.prototype.syntheticViewportContainerWidth=function(){return this.syntheticViewportContainerBBox().width},igv.Browser.prototype.viewportContainerWidth=function(){return this.trackViews&&this.trackViews.length>0?this.trackViews[0].$viewportContainer.width():this.syntheticViewportContainerWidth()},igv.Browser.prototype.minimumBasesExtent=function(){return this.config.minimumBases},igv.Browser.prototype.goto=function(chrName,start,end){var genomicState,viewportWidth,referenceFrame,width,maxBpPerPixel; +return igv.popover&&igv.popover.hide(),void 0===this.genome?void console.log("Missing genome - bailing ..."):(genomicState=_.first(this.genomicStateList),genomicState.chromosome=this.genome.getChromosome(chrName),viewportWidth=igv.browser.viewportContainerWidth()/genomicState.locusCount,referenceFrame=genomicState.referenceFrame,referenceFrame.chrName=genomicState.chromosome.name,void 0===end?(width=Math.round(viewportWidth*referenceFrame.bpPerPixel/2),start=Math.max(0,start-width)):referenceFrame.bpPerPixel=(end-start)/viewportWidth,genomicState.chromosome?(genomicState.chromosome.bpLength||(genomicState.chromosome.bpLength=1),maxBpPerPixel=genomicState.chromosome.bpLength/viewportWidth,referenceFrame.bpPerPixel>maxBpPerPixel&&(referenceFrame.bpPerPixel=maxBpPerPixel),void 0===end&&(end=start+viewportWidth*referenceFrame.bpPerPixel),genomicState.chromosome&&end>genomicState.chromosome.bpLength&&(start-=end-genomicState.chromosome.bpLength)):console&&console.log&&console.log("Could not find chromsome "+referenceFrame.chrName),referenceFrame.start=start,void this.update())},igv.Browser.prototype.zoomIn=function(){function zoomInWithLocusIndex(browser,locusIndex){function basesExtent(width,bpp){return Math.floor(width*bpp)}var centerBP,mbe,be,genomicState=browser.genomicStateList[locusIndex],referenceFrame=genomicState.referenceFrame,viewportWidth=Math.floor(browser.viewportContainerWidth()/genomicState.locusCount);mbe=browser.minimumBasesExtent(),be=basesExtent(viewportWidth,referenceFrame.bpPerPixel/2),mbe>be||(centerBP=referenceFrame.start+referenceFrame.bpPerPixel*(viewportWidth/2),referenceFrame.start=centerBP-viewportWidth/2*(referenceFrame.bpPerPixel/2),referenceFrame.bpPerPixel/=2,browser.updateWithLocusIndex(locusIndex))}var self=this;this.loadInProgress()||_.each(_.range(_.size(this.genomicStateList)),function(locusIndex){zoomInWithLocusIndex(self,locusIndex)})},igv.Browser.prototype.zoomOut=function(){function zoomOutWithLocusIndex(browser,locusIndex){var chromosome,newScale,maxScale,centerBP,chromosomeLengthBP,widthBP,genomicState=igv.browser.genomicStateList[locusIndex],referenceFrame=genomicState.referenceFrame,viewportWidth=Math.floor(browser.viewportContainerWidth()/genomicState.locusCount);newScale=2*referenceFrame.bpPerPixel,chromosomeLengthBP=25e7,browser.genome&&(chromosome=browser.genome.getChromosome(referenceFrame.chrName),chromosome&&(chromosomeLengthBP=chromosome.bpLength)),maxScale=chromosomeLengthBP/viewportWidth,newScale>maxScale&&(newScale=maxScale),centerBP=referenceFrame.start+referenceFrame.bpPerPixel*viewportWidth/2,widthBP=newScale*viewportWidth,referenceFrame.start=Math.round(centerBP-widthBP/2),referenceFrame.start<0?referenceFrame.start=0:referenceFrame.start>chromosomeLengthBP-widthBP&&(referenceFrame.start=chromosomeLengthBP-widthBP),referenceFrame.bpPerPixel=newScale,browser.updateWithLocusIndex(locusIndex)}var self=this;this.loadInProgress()||_.each(_.range(_.size(this.genomicStateList)),function(locusIndex){zoomOutWithLocusIndex(self,locusIndex)})},igv.Browser.prototype.selectMultiLocusPanelWithGenomicState=function(genomicState){this.multiLocusPanelLayoutWithTruthFunction(function(candidate){return _.isEqual(candidate,genomicState)})},igv.Browser.prototype.closeMultiLocusPanelWithGenomicState=function(genomicState){this.multiLocusPanelLayoutWithTruthFunction(function(candidate){return!_.isEqual(candidate,genomicState)})},igv.Browser.prototype.multiLocusPanelLayoutWithTruthFunction=function(filterFunction){var filtered,self=this,$content_header=$("#igv-content-header");!0===this.config.showIdeogram&&igv.IdeoPanel.$empty($content_header),this.emptyViewportContainers(),filtered=_.filter(_.clone(this.genomicStateList),function(gs){return filterFunction(gs)}),this.genomicStateList=_.map(filtered,function(f,i,list){return f.locusIndex=i,f.locusCount=_.size(list),f.referenceFrame.bpPerPixel=(f.end-f.start)/(self.viewportContainerWidth()/f.locusCount),f}),!0===this.config.showIdeogram&&this.ideoPanel.buildPanels($content_header),this.buildViewportsWithGenomicStateList(this.genomicStateList),this.zoomWidgetLayout(),this.toggleCenterGuide(this.genomicStateList),this.toggleCursorGuide(this.genomicStateList),this.resize()},igv.Browser.prototype.emptyViewportContainers=function(){$(".igv-scrollbar-outer-div").remove(),$(".igv-viewport-div").remove(),$(".igv-ruler-sweeper-div").remove(),_.each(this.trackViews,function(trackView){trackView.viewports=[],trackView.scrollbar=void 0,_.each(_.keys(trackView.track.rulerSweepers),function(key){trackView.track.rulerSweepers[key]=void 0}),trackView.track.rulerSweepers=void 0})},igv.Browser.prototype.buildViewportsWithGenomicStateList=function(genomicStateList){_.each(this.trackViews,function(trackView){_.each(genomicStateList,function(genomicState,i){trackView.viewports.push(new igv.Viewport(trackView,trackView.$viewportContainer,i)),trackView.track instanceof igv.RulerTrack&&trackView.track.createRulerSweeper(trackView.viewports[i],trackView.viewports[i].$viewport,$(trackView.viewports[i].contentDiv),genomicState)}),trackView.configureViewportContainer(trackView.$viewportContainer,trackView.viewports)})},igv.Browser.prototype.parseSearchInput=function(string){var self=this,loci=string.split(" ");this.getGenomicStateList(loci,this.viewportContainerWidth()).then(function(genomicStateList){var errorString,$content_header=$("#igv-content-header");_.size(genomicStateList)>0?(_.each(genomicStateList,function(genomicState,index){genomicState.locusIndex=index,genomicState.locusCount=_.size(genomicStateList),genomicState.referenceFrame=new igv.ReferenceFrame(genomicState.chromosome.name,genomicState.start,(genomicState.end-genomicState.start)/(self.viewportContainerWidth()/genomicState.locusCount)),genomicState.initialReferenceFrame=JSON.parse(JSON.stringify(genomicState.referenceFrame))}),self.genomicStateList=genomicStateList,self.emptyViewportContainers(),self.updateLocusSearchWithGenomicState(_.first(self.genomicStateList)),self.zoomWidgetLayout(),self.toggleCenterGuide(self.genomicStateList),self.toggleCursorGuide(self.genomicStateList),!0===self.config.showIdeogram&&(igv.IdeoPanel.$empty($content_header),self.ideoPanel.buildPanels($content_header)),self.buildViewportsWithGenomicStateList(genomicStateList),self.update()):(errorString="Unrecognized locus "+string,igv.presentAlert(errorString))})},igv.Browser.prototype.zoomWidgetLayout=function(){var found;found=_.filter(this.genomicStateList,function(g){return"all"===g.locusSearchString.toLowerCase()}),_.size(found)>0?this.disableZoomWidget():this.enableZoomWidget()},igv.Browser.prototype.getGenomicStateList=function(loci,viewportContainerWidth,continuation){function createFeatureDBGenomicState(featureDBLookupResult){var start,end,locusString,geneNameLocusObject;return end=void 0===featureDBLookupResult.end?1+featureDBLookupResult.start:featureDBLookupResult.end,igv.browser.flanking&&(start=Math.max(0,featureDBLookupResult.start-igv.browser.flanking),end+=igv.browser.flanking),locusString=featureDBLookupResult.chr+":"+start.toString()+"-"+end.toString(),geneNameLocusObject={},igv.Browser.isLocusChrNameStartEnd(locusString,self.genome,geneNameLocusObject)?(geneNameLocusObject.selection=new igv.GtexSelection({gene:featureDBLookupResult.name}),geneNameLocusObject):void 0}function createGeneNameGenomicState(geneNameLookupResponse){var results,result,chr,start,end,type,string,geneNameLocusObject;return results="plain"===searchConfig.type?parseSearchResults(geneNameLookupResponse):JSON.parse(geneNameLookupResponse),searchConfig.resultsField&&(results=results[searchConfig.resultsField]),0===_.size(results)?void 0:1===_.size(results)?(result=_.first(results),chr=result[searchConfig.chromosomeField],start=result[searchConfig.startField]-searchConfig.coords,end=result[searchConfig.endField],void 0===end&&(end=start+1),igv.browser.flanking&&(start=Math.max(0,start-igv.browser.flanking),end+=igv.browser.flanking),string=chr+":"+start.toString()+"-"+end.toString(),geneNameLocusObject={},igv.Browser.isLocusChrNameStartEnd(string,self.genome,geneNameLocusObject)?(type=result.featureType||result.type,geneNameLocusObject.locusSearchString=_.first(geneNameLookupResponse.split("\t")),geneNameLocusObject.selection=new igv.GtexSelection("gtex"===type||"snp"===type?{snp:result.gene}:{gene:result.gene}),geneNameLocusObject):void 0):void 0}var chrStartEndLoci,geneNameLoci,locusGenomicState,featureDBGenomicStates,survivors,promises,self=this,searchConfig=igv.browser.searchConfig,locusGenomicStates=[];return chrStartEndLoci=[],loci.forEach(function(locus){locusGenomicState={},igv.Browser.isLocusChrNameStartEnd(locus,self.genome,locusGenomicState)&&(locusGenomicState.selection=void 0,locusGenomicState.locusSearchString=locus,locusGenomicStates.push(locusGenomicState),chrStartEndLoci.push(locus))}),geneNameLoci=_.difference(loci,chrStartEndLoci),geneNameLoci.length>0?(survivors=[],featureDBGenomicStates=[],geneNameLoci.forEach(function(locus){var result,genomicState;result=self.featureDB[locus.toUpperCase()],result?(genomicState=createFeatureDBGenomicState(result),genomicState?(genomicState.locusSearchString=locus,featureDBGenomicStates.push(genomicState)):survivors.push(locus)):survivors.push(locus)}),survivors.length>0?(promises=survivors.map(function(locus){var path=searchConfig.url.replace("$FEATURE$",locus);return path.indexOf("$GENOME$")>-1&&(path=path.replace("$GENOME$",self.genome.id?self.genome.id:"hg19")),igv.xhr.loadString(path)}),Promise.all(promises).then(function(response){var filtered,geneNameGenomicStates;return filtered=_.filter(response,function(geneNameLookupResult){return""!==geneNameLookupResult}),geneNameGenomicStates=_.filter(_.map(filtered,createGeneNameGenomicState),function(genomicState){return void 0!==genomicState}),_.union(locusGenomicStates,featureDBGenomicStates,geneNameGenomicStates)})):Promise.resolve(_.union(locusGenomicStates,featureDBGenomicStates))):Promise.resolve(locusGenomicStates)},igv.Browser.prototype.on=function(eventName,fn){this.eventHandlers[eventName]||(this.eventHandlers[eventName]=[]),this.eventHandlers[eventName].push(fn)},igv.Browser.prototype.un=function(eventName,fn){if(this.eventHandlers[eventName]){var callbackIndex=this.eventHandlers[eventName].indexOf(fn);callbackIndex!==-1&&this.eventHandlers[eventName].splice(callbackIndex,1)}},igv.Browser.prototype.fireEvent=function(eventName,args,thisObj){var scope,results;if(void 0!==this.eventHandlers[eventName])return scope=thisObj||window,results=_.map(this.eventHandlers[eventName],function(event){return event.apply(scope,args)}),_.first(results)},igv.Browser.prototype.loadSampleInformation=function(url){var name=url;url instanceof File&&(name=url.name);var ext=name.substr(name.lastIndexOf(".")+1);"fam"===ext&&igv.sampleInformation.loadPlinkFile(url)},igv.Browser.isLocusChrNameStartEnd=function(locus,genome,locusObject){var a,b,numeric,success,chr;return a=locus.split(":"),chr=a[0],"all"===chr.toLowerCase()&&(chr="all"),void 0!==genome.getChromosome(chr)&&(locusObject&&(locusObject.chromosome=genome.getChromosome(chr),locusObject.start=0,locusObject.end=locusObject.chromosome.bpLength),1===a.length||(b=_.last(a).split("-"),!(_.size(b)>2)&&(1===_.size(b)?(numeric=_.first(b).replace(/\,/g,""),success=!isNaN(numeric),!0===success&&locusObject&&(locusObject.start=parseInt(numeric,10),locusObject.start-=1,locusObject.end=void 0)):2===_.size(b)&&(success=!0,_.each(b,function(bb,index){!0===success&&(numeric=bb.replace(/\,/g,""),success=!isNaN(numeric),!0===success&&locusObject&&(0===index?locusObject.start=parseInt(numeric,10)-1:locusObject.end=parseInt(numeric,10)))})),!0===success&&locusObject&&igv.Browser.validateLocusExtent(locusObject.chromosome,locusObject),success)))},igv.Browser.validateLocusExtent=function(chromosome,extent){var center,ss=extent.start,ee=extent.end;void 0===ee?(ss-=igv.browser.minimumBasesExtent()/2,ee=ss+igv.browser.minimumBasesExtent(),ee>chromosome.bpLength?(ee=chromosome.bpLength,ss=ee-igv.browser.minimumBasesExtent()):ss<0&&(ss=0,ee=igv.browser.minimumBasesExtent())):ee-sschromosome.bpLength?(ee=chromosome.bpLength,ss=ee-igv.browser.minimumBasesExtent()):(ss=center-igv.browser.minimumBasesExtent()/2,ee=ss+igv.browser.minimumBasesExtent())),extent.start=Math.ceil(ss),extent.end=Math.floor(ee)},igv.Browser.prototype.search=function(feature,callback,force){var type,chr,start,end,searchConfig,url,result;if(void 0===igv.browser||void 0===igv.browser.genome)return igv.browser.initialLocus=feature,void(callback&&callback());if(igv.Browser.isLocusChrNameStartEnd(feature,this.genome,void 0)){var success=igv.gotoLocusFeature(feature,this.genome,this);(force||!0===success)&&callback&&callback()}else if(result=this.featureDB[feature.toUpperCase()])handleSearchResult(result.name,result.chrName,result.start,result.end,"");else if(this.searchConfig){if(url=this.searchConfig.url.replace("$FEATURE$",feature),searchConfig=this.searchConfig,url.indexOf("$GENOME$")>-1){var genomeId=this.genome.id?this.genome.id:"hg19";url.replace("$GENOME$",genomeId)}igv.xhr.loadString(url).then(function(data){var r,results="plain"===searchConfig.type?parseSearchResults(data):JSON.parse(data);searchConfig.resultsField&&(results=results[searchConfig.resultsField]),0==results.length?igv.presentAlert('No feature found with name "'+feature+'"'):1==results.length?(r=results[0],chr=r[searchConfig.chromosomeField],start=r[searchConfig.startField]-searchConfig.coords,end=r[searchConfig.endField],type=r.featureType||r.type,handleSearchResult(feature,chr,start,end,type)):presentSearchResults(results,searchConfig,feature),callback&&callback()})}},igv.gotoLocusFeature=function(locusFeature,genome,browser){var type,tokens,chr,start,end,chrName,startEnd,obj;return type="locus",tokens=locusFeature.split(":"),chrName=genome.getChromosomeName(tokens[0]),chrName&&(chr=genome.getChromosome(chrName)),chr&&(start=end=void 0,1===tokens.length?(start=0,end=chr.bpLength):(startEnd=tokens[1].split("-"),start=Math.max(0,parseInt(startEnd[0].replace(/,/g,""))-1),2===startEnd.length&&(end=Math.min(chr.bpLength,parseInt(startEnd[1].replace(/,/g,""))),end<0&&(end=chr.bpLength))),obj={start:start,end:end},igv.Browser.validateLocusExtent(chr,obj),start=obj.start,end=obj.end),void 0===chr||isNaN(start)||start>end?(igv.presentAlert("Unrecognized feature or locus: "+locusFeature),!1):(browser.goto(chrName,start,end),fireOnsearch.call(igv.browser,locusFeature,type),!0)},igv}(igv||{}),igv=function(igv){function urlString(assembly,fileFormat){var str;return str="https://www.encodeproject.org/search/?type=experiment&assembly="+assembly+"&files.file_format="+fileFormat+"&format=json&field=lab.title&field=biosample_term_name&field=assay_term_name&field=target.label&field=files.file_format&field=files.output_type&field=files.href&field=files.replicate.technical_replicate_number&field=files.replicate.biological_replicate_number&field=files.assembly&limit=all"}function parseJSONData(json,assembly,fileFormat){var rows;return rows=[],_.each(json["@graph"],function(record){var cellType,target,filtered,mapped;cellType=record.biosample_term_name||"",target=record.target?record.target.label:"",filtered=_.filter(record.files,function(file){return fileFormat===file.file_format&&assembly===file.assembly}),mapped=_.map(filtered,function(file){var bioRep=file.replicate?file.replicate.bioligcal_replicate_number:void 0,techRep=file.replicate?file.replicate.technical_replicate_number:void 0,name=cellType+" "+target;return bioRep&&(name+=" "+bioRep),techRep&&(name+=(bioRep?":":"0:")+techRep),{Assembly:file.assembly,ExperimentID:record["@id"],"Cell Type":cellType,"Assay Type":record.assay_term_name,Target:target,Lab:record.lab?record.lab.title:"",Format:file.file_format,"Output Type":file.output_type,url:"https://www.encodeproject.org"+file.href,"Bio Rep":bioRep,"Tech Rep":techRep,Name:name}}),Array.prototype.push.apply(rows,mapped)}),_.map(rows,function(row){return _.mapObject(row,function(val){return void 0===val||""===val?"-":val})})}function encodeSort(a,b){var aa1,aa2,cc1,cc2,tt1,tt2;return aa1=a.Assembly,aa2=b.Assembly,cc1=a["Cell Type"],cc2=b["Cell Type"],tt1=a.Target,tt2=b.Target,aa1===aa2?cc1===cc2?tt1===tt2?0:tt1end&&fulfill(seq.substring(start,end))})}var reservedProperties=new Set(["fastaURL","indexURL","cytobandURL","indexed"]);return igv.FastaSequence=function(reference){this.file=reference.fastaURL,this.indexed=reference.indexed!==!1,this.indexed&&(this.indexFile=reference.indexURL||reference.indexFile||this.file+".fai"),this.withCredentials=reference.withCredentials,this.config=buildConfig(reference)},igv.FastaSequence.prototype.init=function(){var self=this;return self.indexed?new Promise(function(fulfill,reject){self.getIndex().then(function(index){var order=0;self.chromosomes={},self.chromosomeNames.forEach(function(chrName){var bpLength=self.index[chrName].size;self.chromosomes[chrName]=new igv.Chromosome(chrName,order++,bpLength)}),fulfill()}).catch(reject)}):self.loadAll()},igv.FastaSequence.prototype.getSequence=function(chr,start,end){return this.indexed?getSequenceIndexed.call(this,chr,start,end):getSequenceNonIndexed.call(this,chr,start,end)},igv.FastaSequence.prototype.getIndex=function(){var self=this;return new Promise(function(fulfill,reject){self.index?fulfill(self.index):igv.xhr.load(self.indexFile,igv.buildOptions(self.config)).then(function(data){var lines=data.splitLines(),len=lines.length,lineNo=0;for(self.chromosomeNames=[],self.index={};lineNo")?(currentSeq&&(self.chromosomeNames.push(currentChr),self.sequences[currentChr]=currentSeq,self.chromosomes[currentChr]=new igv.Chromosome(currentChr,order++,currentSeq.length)),currentChr=nextLine.substr(1).split("\\s+")[0],currentSeq=""):currentSeq+=nextLine)}var self=this;return igv.xhr.load(self.file,igv.buildOptions(self.config)).then(parseFasta)},igv.FastaSequence.prototype.readSequence=function(chr,qstart,qend){var self=this;return new Promise(function(fulfill,reject){self.getIndex().then(function(){var idxEntry=self.index[chr];if(idxEntry){var start=Math.max(0,qstart),end=Math.min(idxEntry.size,qend),bytesPerLine=idxEntry.bytesPerLine,basesPerLine=idxEntry.basesPerLine,position=idxEntry.position,nEndBytes=bytesPerLine-basesPerLine,startLine=Math.floor(start/basesPerLine),endLine=Math.floor(end/basesPerLine),base0=startLine*basesPerLine,offset=start-base0,startByte=position+startLine*bytesPerLine+offset,base1=endLine*basesPerLine,offset1=end-base1,endByte=position+endLine*bytesPerLine+offset1-1,byteCount=endByte-startByte+1;byteCount<=0&&fulfill(null),igv.xhr.load(self.file,igv.buildOptions(self.config,{range:{start:startByte,size:byteCount}})).then(function(allBytes){var nBases,seqBytes="",srcPos=0,desPos=0,allBytesLength=allBytes.length;for(offset>0&&(nBases=Math.min(end-start,basesPerLine-offset),seqBytes+=allBytes.substr(srcPos,nBases),srcPos+=nBases+nEndBytes,desPos+=nBases);srcPos.5&&feature.end-feature.start>5e6&&summarydata.push(feature)}continuation(summarydata)},this.featureSourceRed?this.featureSourceRed.getFeatures(chr,bpStart,bpEnd,filtersummary):(log("Aneu track has no summary data yet"),continuation(null))},igv.AneuTrack.prototype.loadSummary=function(chr,bpStart,bpEnd,continuation){var afterload,self=this;if(!this.featureSourceRed){var afterJsonLoaded=function(json){json&&(json=JSON.parse(json),self.featureSourceRed=new igv.AneuFeatureSource(config,json.redline),self.getSummary(chr,bpStart,bpEnd,continuation))};return afterload=igv.buildOptions(self.config,{tokens:self.config.tokens,success:afterJsonLoaded}),igv.xhr.loadString(self.config.url,afterload),null}this.featureSourceRed.getFeatures(chr,bpStart,bpEnd,continuation)},igv.AneuTrack.prototype.getFeatures=function(chr,bpStart,bpEnd){var self=this;return new Promise(function(fulfill,reject){loadJson.call(self).then(function(){var loadsecondfile=function(redlinedata){self.redlinedata=redlinedata,self.featureSource.getFeatures(chr,bpStart,bpEnd,fulfill)};self.featureSourceRed.getFeatures(chr,bpStart,bpEnd,loadsecondfile)})})},igv.AneuTrack.prototype.getColor=function(value){var color,expected=2;return color=valueexpected?this.highColor:this.midColor},igv.AneuTrack.prototype.paintAxis=function(ctx,pixelWidth,pixelHeight){function computeH(min,max,value,maxpixels){return maxpixels-Math.round((value-min)/max*maxpixels)}var track=this,font=((track.maxLogP-track.minLogP)/pixelHeight,{font:"normal 10px Arial",textAlign:"right",strokeStyle:"black"});igv.graphics.fillRect(ctx,0,0,pixelWidth,pixelHeight,{fillStyle:"rgb(255, 255, 255)"});var max=track.max;max||(max=8);var min=0,x=49;igv.graphics.strokeLine(ctx,x,computeH(min,max,0,track.maxheight),x,computeH(min,max,max,track.maxheight),font),x-=5;for(var p=0;p<=max;p+=1){var h=computeH(min,max,p,track.maxheight);igv.graphics.strokeLine(ctx,x,h,x+5,h,font),p>0&&pmax&&(max=value),valuePLOIDYMAX&&(max=PLOIDYMAX),min=Math.max(min,0),track.max=max},drawFeatureList=function(ctx,featureList,debug){for(bpPerPixel=options.bpPerPixel,bpStart=options.bpStart,bpEnd=bpStart+pixelWidth*bpPerPixel+1,xScale=bpPerPixel,i=0,len=featureList.length;ibpEnd)break;if(segment.sample?(y=myself.samples[segment.sample]*myself.sampleHeight,log("Got sample y="+y)):y=0,value=segment.score,color=myself.midColor,myself.isLog?(value=Math.log2(value/2),valueexpected+.1&&(color=myself.posColorScale.getColor(value))):valueexpected+.2&&(color=myself.highColor),px=Math.round((segment.start-bpStart)/xScale),px1=Math.round((segment.end-bpStart)/xScale),pw=Math.max(2,px1-px),value<=max){var h=computeH(min,max,value,maxheight);1==debug&&log(" Got value "+value+", h="+h+", y+h="+(y+h)+", px="+px+", px1="+px1+", pw="+pw+", color="+color+", maxh="+maxheight),igv.graphics.fillRect(ctx,px,y+h,pw,2,{fillStyle:color})}}},maxheight=myself.height-4,font={font:"normal 10px Arial",textAlign:"right",strokeStyle:"rgb(150,150,150)",fillStyle:"rgb(150,150,150)"};if(options.features&&computeMinMax(options.features),this.redlinedata&&computeMinMax(this.redlinedata),min<2&&2bpEnd)break;min=Math.max(bpStart,segment.start),max=Math.min(bpEnd,segment.end),f=(max-min)/len,s=scores[segment.sample],s||(s=0),scores[segment.sample]=s+f*segment.value}for(sampleNames=Object.keys(self.samples),sampleNames.sort(function(a,b){var s1=scores[a],s2=scores[b];return s1||(s1=Number.MAX_VALUE),s2||(s2=Number.MAX_VALUE),s1==s2?0:s1>s2?direction:direction*-1}),i=0;if2.start?1:-1}),i=0;iend));i++)feature.end>=start&&featureList.push(feature)}),featureList)):[]},igv.FeatureCache.prototype.allFeatures=function(){var allFeatures=[],treeMap=this.treeMap;if(treeMap)for(var key in treeMap)if(treeMap.hasOwnProperty(key)){var tree=treeMap[key];tree.mapIntervals(function(interval){allFeatures=allFeatures.concat(interval.value)})}return allFeatures},igv}(igv||{}),igv=function(igv){const MAX_GZIP_BLOCK_SIZE=65536;return igv.FeatureFileReader=function(config){var uriParts;this.config=config||{},igv.isFilePath(this.config.url)?this.filename=this.config.url.name:(uriParts=igv.parseUri(this.config.url),this.filename=uriParts.file,this.path=uriParts.path),this.format=this.config.format,this.parser=this.getParser(this.format,this.config.decode),this.supportsWholeGenome="seg"===this.format},igv.FeatureFileReader.prototype.readFeatures=function(chr,start,end){return this.index?this.loadFeaturesWithIndex(chr,start,end):this.loadFeaturesNoIndex()},igv.FeatureFileReader.prototype.readHeader=function(){var self=this;return self.header?Promise.resolve(self.header):self.getIndex().then(function(index){var options;return index?(options=igv.buildOptions(self.config,{bgz:index.tabix,range:{start:0,size:65e3}}),igv.xhr.loadString(self.config.url,options).then(function(data){return self.header=self.parser.parseHeader(data),self.header})):self.loadFeaturesNoIndex().then(function(features){var header=self.header||{};return header.features=features,header})})},igv.FeatureFileReader.prototype.getParser=function(format,decode){switch(format){case"vcf":return new igv.VcfParser;case"seg":return new igv.SegParser;default:return new igv.FeatureParser(format,decode,this.config)}},igv.FeatureFileReader.prototype.isIndexable=function(){var hasIndexURL,isValidType,isIndexed;return hasIndexURL=void 0!==this.config.indexURL,isValidType="wig"!==this.format&&"seg"!==this.format,isIndexed=!1!==this.config.indexed,isIndexed&&(hasIndexURL||isValidType)},igv.FeatureFileReader.prototype.loadIndex=function(){var idxFile=this.config.indexURL;return this.filename.endsWith(".gz")?(idxFile||(idxFile=this.config.url+".tbi"),igv.loadBamIndex(idxFile,this.config,!0)):(idxFile||(idxFile=this.config.url+".idx"),igv.loadTribbleIndex(idxFile,this.config))},igv.FeatureFileReader.prototype.loadFeaturesNoIndex=function(){var self=this,options=igv.buildOptions(self.config);return igv.xhr.loadString(self.config.url,options).then(function(data){return self.header=self.parser.parseHeader(data),self.header instanceof String&&self.header.startsWith("##gff-version 3")&&(self.format="gff3"),self.parser.parseFeatures(data)})},igv.FeatureFileReader.prototype.loadFeaturesWithIndex=function(chr,start,end){var blocks,self=this,tabix=self.index&&self.index.tabix,refId=tabix?self.index.sequenceIndexMap[chr]:chr,promises=[];return blocks=self.index.blocksForRange(refId,start,end),blocks&&0!==blocks.length?(blocks.forEach(function(block){promises.push(new Promise(function(fullfill,reject){var endPos,options,success,startPos=block.minv.block,startOffset=block.minv.offset;endPos=endPos=block.maxv.block+MAX_GZIP_BLOCK_SIZE,options=igv.buildOptions(self.config,{range:{start:startPos,size:endPos-startPos+1}}),success=function(data){var inflated,slicedData,slicedFeatures,filteredFeatures,f,i;for(inflated=self.index.tabix?new Uint8Array(igv.unbgzf(data)):data,slicedData=startOffset?inflated.slice(startOffset):inflated,slicedFeatures=self.parser.parseFeatures(slicedData),filteredFeatures=[],i=0;iend));i++)f.end>=start&&f.start<=end&&filteredFeatures.push(f);fullfill(filteredFeatures)},self.index.tabix?igv.xhr.loadArrayBuffer(self.config.url,options).then(success).catch(reject):igv.xhr.loadString(self.config.url,options).then(success).catch(reject)}))}),Promise.all(promises).then(function(featureArrays){var i,allFeatures;if(1===featureArrays.length)allFeatures=featureArrays[0];else{for(allFeatures=featureArrays[0],i=1;i4?parseInt(tokens[4].split("=")[1],10):1;return{format:"fixedStep",chrom:cc,start:ss,step:step,span:span,index:0}}function parseVariableStep(line){var tokens=line.split(/\s+/),cc=tokens[1].split("=")[1],span=tokens.length>2?parseInt(tokens[2].split("=")[1],10):1;return{format:"variableStep",chrom:cc,span:span}}function parseTrackLine(line){var i,tk,curr,properties={},tokens=line.split(/(?:")([^"]+)(?:")|([^\s"]+)(?=\s+|$)/g),tmp=[];for(i=1;i0?curr=tk:curr?(tmp.push(curr+tk),curr=void 0):tmp.push(tk));return tmp.forEach(function(str){if(str){var kv=str.split("=",2);2==kv.length&&(properties[kv[0]]=kv[1])}}),properties}function decodeBed(tokens,ignore){var chr,start,end,id,name,tmp,idName,exonCount,exonSizes,exonStarts,exons,exon,feature,eStart,eEnd;if(!(tokens.length<3)){if(chr=tokens[0],start=parseInt(tokens[1]),end=tokens.length>2?parseInt(tokens[2]):start+1,feature={chr:chr,start:start,end:end,score:1e3},tokens.length>3){tmp=tokens[3].replace(/"/g,""),idName=tmp.split(";");for(var i=0;i4&&(feature.score=parseFloat(tokens[4])),tokens.length>5&&(feature.strand=tokens[5]),tokens.length>6&&(feature.cdStart=parseInt(tokens[6])),tokens.length>7&&(feature.cdEnd=parseInt(tokens[7])),tokens.length>8&&"."!==tokens[8]&&"0"!==tokens[8]&&(feature.color=igv.Color.createColorString(tokens[8])),tokens.length>11){exonCount=parseInt(tokens[9]),exonSizes=tokens[10].split(","),exonStarts=tokens[11].split(","),exons=[];for(var i=0;ieEnd||feature.cdEnd=eStart&&feature.cdStart<=eEnd&&(exon.cdStart=feature.cdStart),feature.cdEnd>=eStart&&feature.cdEnd<=eEnd&&(exon.cdEnd=feature.cdEnd),exons.push(exon)}feature.exons=exons}return feature.popupData=function(){var data=[];return feature.name&&data.push({name:"Name",value:feature.name}),"+"!==feature.strand&&"-"!==feature.strand||data.push({name:"Strand",value:feature.strand}),data},feature}}function decodeGenePred(tokens,ignore){var shift=void 0===this.shift?0:1;if(!(tokens.length<9+shift)){for(var feature={name:tokens[0+shift],chr:tokens[1+shift],strand:tokens[2+shift],start:parseInt(tokens[3+shift]),end:parseInt(tokens[4+shift]),cdStart:parseInt(tokens[5+shift]),cdEnd:parseInt(tokens[6+shift]),id:tokens[0+shift]},exonCount=parseInt(tokens[7+shift]),exonStarts=tokens[8+shift].split(","),exonEnds=tokens[9+shift].split(","),exons=[],i=0;i3?parseInt(tokens[3]):start+1,feature={chr:chr,start:start,end:end},tokens.length>4&&(feature.score=parseFloat(tokens[4]),feature.value=feature.score),feature.popupData=function(){return[{name:"Name",value:feature.name}]},feature)}function decodeFusionJuncSpan(tokens,ignore){var chr=tokens[0],fusion_name=tokens[1],junction_left=parseInt(tokens[2]),junction_right=parseInt(tokens[3]),num_junction_reads=parseInt(tokens[4]),num_spanning_frags=parseInt(tokens[5]),spanning_frag_coords_text=tokens[6],feature={chr:chr,name:fusion_name,junction_left:junction_left,junction_right:junction_right,num_junction_reads:num_junction_reads,num_spanning_frags:num_spanning_frags,spanning_frag_coords:[],start:-1,end:-1},min_coord=junction_left,max_coord=junction_right;if(num_spanning_frags>0)for(var coord_pairs=spanning_frag_coords_text.split(","),i=0;imax_coord&&(max_coord=span_right),feature.spanning_frag_coords.push({left:span_left,right:span_right})}return feature.start=min_coord,feature.end=max_coord,feature.popupData=function(){return[{name:"Name",value:feature.name}]},feature}function decodeGtexGWAS(tokens,ignore){var tokenCount,chr,start,end,pValue;return tokenCount=tokens.length,tokenCount<8?null:(chr=tokens[0],start=parseInt(tokens[1])-1,end=parseInt(tokens[3].split(":")[1]),pValue=parseFloat(tokens[5]),{chr:chr,start:start,end:end,pvalue:pValue})}function decodeGFF(tokens,ignore){var tokenCount,chr,start,end,strand,type,score,phase,attributeString,id,parent,color,name,i,format=this.format;if(tokenCount=tokens.length,tokenCount<9)return null;chr=tokens[0],type=tokens[2],start=parseInt(tokens[3])-1,end=parseInt(tokens[4]),score="."===tokens[5]?0:parseFloat(tokens[5]),strand=tokens[6],phase="."===tokens[7]?0:parseInt(tokens[7]),attributeString=tokens[8];var delim="gff3"===format?"=":/\s+/,attributes={};if(attributeString.split(";").forEach(function(kv){var key,value,t=kv.trim().split(delim,2);2==t.length&&(key=t[0].trim(),value=t[1].trim(),value.startsWith('"')&&value.endsWith('"')&&(value=value.substr(1,value.length-2)),"ID"===t[0]?id=t[1]:"Parent"===t[0]?parent=t[1]:"color"===t[0].toLowerCase()?color=igv.Color.createColorString(t[1]):"transcript_id"===t[0]&&(id=t[1]),attributes[key]=value)}),this.nameField)name=attributes[this.nameField];else for(i=0;i=this.length)){for(var i=this.ptr;i=rows[r])return feature.row=r,void(rows[r]=feature.end);feature.row=r,rows[r]=feature.end})}if(null!=features&&0!==features.length){var chrFeatureMap={},chrs=[];features.forEach(function(feature){var chr=feature.chr,flist=chrFeatureMap[chr];flist||(flist=[],chrFeatureMap[chr]=flist,chrs.push(chr)),flist.push(feature)}),chrs.forEach(function(chr){pack(chrFeatureMap[chr],maxRows)})}}function getWGFeatures(features){var wgFeatures,wgChromosomeNames,genome;return genome=igv.browser.genome,wgChromosomeNames=new Set(genome.wgChromosomeNames),wgFeatures=[],features.forEach(function(f){var wg,queryChr;queryChr=genome.getChromosomeName(f.chr),wgChromosomeNames.has(queryChr)&&(wg=Object.assign({},f),wg.start=igv.browser.genome.getGenomeCoordinate(f.chr,f.start),wg.end=igv.browser.genome.getGenomeCoordinate(f.chr,f.end),wgFeatures.push(wg))}),wgFeatures}return igv.FeatureSource=function(config){this.config=config||{},this.sourceType=void 0===config.sourceType?"file":config.sourceType,"ga4gh"===config.sourceType?this.reader=new igv.Ga4ghVariantReader(config):"immvar"===config.sourceType?this.reader=new igv.ImmVarReader(config):"eqtl"===config.type?"gtex-ws"===config.sourceType?this.reader=new igv.GtexReader(config):this.reader=new igv.GtexFileReader(config):"bigquery"===config.sourceType?this.reader=new igv.BigQueryFeatureReader(config):"ucscservice"===config.sourceType?this.reader=new igv.UCSCServiceReader(config.source):"custom"===config.sourceType||void 0!==config.source?this.reader=new igv.CustomServiceReader(config.source):this.reader=new igv.FeatureFileReader(config),this.visibilityWindow=config.visibilityWindow},igv.FeatureSource.prototype.getFileHeader=function(){var self=this,maxRows=this.config.maxRows||500;return self.header?Promise.resolve(self.header):"function"==typeof self.reader.readHeader?self.reader.readHeader().then(function(header){if(header){self.header=header;var features=header.features;features&&("gtf"!==self.config.format&&"gff3"!==self.config.format&&"gff"!==self.config.format||(features=new igv.GFFHelper(self.config.format).combineFeatures(features)),packFeatures(features,maxRows),self.featureCache=new igv.FeatureCache(features),self.config.searchable&&addFeaturesToDB(features))}return header&&header.format&&(self.config.format=header.format),header}):(self.header={},Promise.resolve(self.header))},igv.FeatureSource.prototype.getFeatures=function(chr,bpStart,bpEnd,bpPerPixel){var genomicInterval,featureCache,maxRows,str,self=this;if(genomicInterval=new igv.GenomicInterval(chr,bpStart,bpEnd),featureCache=self.featureCache,maxRows=self.config.maxRows||500,str=chr.toLowerCase(),"all"===str)return self.reader.supportsWholeGenome?featureCache&&void 0===featureCache.range?Promise.resolve(getWGFeatures(featureCache.allFeatures())):self.reader.readFeatures(chr).then(function(featureList){return featureList&&"function"==typeof featureList.forEach&&("gtf"!==self.config.format&&"gff3"!==self.config.format&&"gff"!==self.config.format||(featureList=new igv.GFFHelper(self.config.format).combineFeatures(featureList)),self.featureCache=new igv.FeatureCache(featureList),packFeatures(featureList,maxRows)),getWGFeatures(self.featureCache.allFeatures())}):Promise.resolve(null);if(featureCache&&(void 0===featureCache.range||featureCache.range.containsRange(genomicInterval)))return Promise.resolve(self.featureCache.queryFeatures(chr,bpStart,bpEnd));if("file"===self.sourceType&&(void 0===self.visibilityWindow||self.visibilityWindow<=0)){genomicInterval.start=0;var chromosome=igv.browser?igv.browser.genome.getChromosome(chr):void 0;genomicInterval.end=void 0===chromosome?Number.MAX_VALUE:chromosome.bpLength}return self.reader.readFeatures(chr,genomicInterval.start,genomicInterval.end).then(function(featureList){if(featureList&&"function"==typeof featureList.forEach){var isQueryable=self.reader.indexed||"file"!==self.config.sourceType;return"gtf"!==self.config.format&&"gff3"!==self.config.format&&"gff"!==self.config.format||(featureList=new igv.GFFHelper(self.config.format).combineFeatures(featureList)),self.featureCache=isQueryable?new igv.FeatureCache(featureList,genomicInterval):new igv.FeatureCache(featureList),packFeatures(featureList,maxRows),self.config.searchable&&addFeaturesToDB(featureList),self.featureCache.queryFeatures(chr,bpStart,bpEnd)}return null})},igv}(igv||{}),igv=function(igv){function extractPopupData(feature){var data=[];for(var property in feature)feature.hasOwnProperty(property)&&"chr"!==property&&"start"!==property&&"end"!==property&&"row"!==property&&igv.isStringOrNumber(feature[property])&&data.push({name:property,value:feature[property]});return data}function calculateFeatureCoordinates(feature,bpStart,xScale){var px=Math.round((feature.start-bpStart)/xScale),px1=Math.round((feature.end-bpStart)/xScale),pw=px1-px;return pw<3&&(pw=3,px-=1),{px:px,px1:px1,pw:pw}}function renderFeature(feature,bpStart,xScale,pixelHeight,ctx,options){var x,e,exonCount,cy,direction,exon,ePx,ePx1,ePxU,ePw,py2,h2,py,windowX,windowX1,coord=calculateFeatureCoordinates(feature,bpStart,xScale),h=this.featureHeight,step=this.arrowSpacing,color=this.color;if(this.config.colorBy){var colorByValue=feature[this.config.colorBy.field];colorByValue&&(color=this.config.colorBy.pallete[colorByValue])}else feature.color&&(color=feature.color);if(ctx.fillStyle=color,ctx.strokeStyle=color,"SQUISHED"===this.displayMode&&void 0!==feature.row?(h=this.featureHeight/2,py=this.expandedCallHeight*feature.row+2):py="EXPANDED"===this.displayMode&&void 0!==feature.row?this.squishedCallHeight*feature.row+5:5,cy=py+h/2,h2=h/2,py2=cy-h2/2,exonCount=feature.exons?feature.exons.length:0,0===exonCount)ctx.fillRect(coord.px,py,coord.pw,h);else{for(igv.graphics.strokeLine(ctx,coord.px+1,cy,coord.px1-1,cy),direction="+"===feature.strand?1:-1,x=coord.px+step/2;xstep+5){for(ctx.fillStyle="white",ctx.strokeStyle="white",x=ePx+step/2;xwindowX1?(boxX=featureX,boxX1=featureX1):(boxX=Math.max(featureX,windowX),boxX1=Math.min(featureX1,windowX1)),genomicState.selection&&"genes"===this.config.type&&void 0!==feature.name&&(geneColor=genomicState.selection.colorForGene(feature.name)),textFitsInBox=boxX1-boxX>ctx.measureText(feature.name).width,(void 0!==feature.name&&feature.name.toUpperCase()===selectedFeatureName||(textFitsInBox||geneColor)&&"SQUISHED"!==this.displayMode&&void 0!==feature.name)&&(geneFontStyle={font:"10px PT Sans",textAlign:"center",fillStyle:geneColor||feature.color||this.color,strokeStyle:geneColor||feature.color||this.color},"COLLAPSED"===this.displayMode&&"SLANT"===this.labelDisplayMode&&(transform={rotate:{angle:45}},delete geneFontStyle.textAlign),labelX=boxX+(boxX1-boxX)/2,labelY=getFeatureLabelY(featureY,transform),options.labelTransform?(ctx.save(),options.labelTransform(ctx,labelX),igv.graphics.fillText(ctx,feature.name,labelX,labelY,geneFontStyle,void 0),ctx.restore()):igv.graphics.fillText(ctx,feature.name,labelX,labelY,geneFontStyle,transform))}function getFeatureLabelY(featureY,transform){return transform?featureY+20:featureY+25}function monitorTrackDrag(track){var onDragEnd=function(){track.trackView&&track.trackView.tile&&"SQUISHED"!==track.displayMode&&track.trackView.update()},unSubscribe=function(removedTrack){igv.browser.un&&track===removedTrack&&(igv.browser.un("trackdrag",onDragEnd),igv.browser.un("trackremoved",unSubscribe))};igv.browser.on&&(igv.browser.on("trackdragend",onDragEnd),igv.browser.on("trackremoved",unSubscribe))}function renderVariant(variant,bpStart,xScale,pixelHeight,ctx){var style,coord=calculateFeatureCoordinates(variant,bpStart,xScale),py=20,h=10;switch(variant.genotype){case"HOMVAR":style=this.homvarColor;break;case"HETVAR":style=this.hetvarColor;break;default:style=this.color}ctx.fillStyle=style,ctx.fillRect(coord.px,py,coord.pw,h)}function renderFusionJuncSpan(feature,bpStart,xScale,pixelHeight,ctx){var py=(calculateFeatureCoordinates(feature,bpStart,xScale),5),rowHeight="EXPANDED"===this.displayMode?this.squishedCallHeight:this.expandedCallHeight;"SQUISHED"===this.displayMode&&void 0!=feature.row?py=rowHeight*feature.row:"EXPANDED"===this.displayMode&&void 0!=feature.row&&(py=rowHeight*feature.row);var cy=py+.5*rowHeight,top_y=cy-.5*rowHeight,bottom_y=cy+.5*rowHeight,junction_left_px=Math.round((feature.junction_left-bpStart)/xScale),junction_right_px=Math.round((feature.junction_right-bpStart)/xScale);ctx.beginPath(), +ctx.moveTo(junction_left_px,cy),ctx.bezierCurveTo(junction_left_px,top_y,junction_right_px,top_y,junction_right_px,cy),ctx.lineWidth=1+Math.log(feature.num_junction_reads)/Math.log(2),ctx.strokeStyle="blue",ctx.stroke();for(var spanning_coords=feature.spanning_frag_coords,i=0;imaxRow&&(maxRow=feature.row)}),height=Math.max(this.variantHeight,(maxRow+1)*("SQUISHED"===this.displayMode?this.squishedCallHeight:this.expandedCallHeight))},igv.FeatureTrack.prototype.draw=function(options){var selectedFeatureName,selectedFeature,c,track=this,featureList=options.features,ctx=options.context,bpPerPixel=options.bpPerPixel,bpStart=options.bpStart,pixelWidth=options.pixelWidth,pixelHeight=options.pixelHeight,bpEnd=bpStart+pixelWidth*bpPerPixel+1;if(igv.graphics.fillRect(ctx,0,0,pixelWidth,pixelHeight,{fillStyle:"rgb(255, 255, 255)"}),featureList){selectedFeatureName=igv.FeatureTrack.selectedGene?igv.FeatureTrack.selectedGene.toUpperCase():void 0;for(var gene,i=0,len=featureList.length;ibpEnd)break;!selectedFeature&&selectedFeatureName&&selectedFeatureName===gene.name.toUpperCase()?selectedFeature=gene:track.render.call(this,gene,bpStart,bpPerPixel,pixelHeight,ctx,options)}selectedFeature&&(c=selectedFeature.color,selectedFeature.color="rgb(255,0,0)",track.render.call(this,selectedFeature,bpStart,bpPerPixel,pixelHeight,ctx,options),selectedFeature.color=c)}else console.log("No feature list")},igv.FeatureTrack.prototype.popupDataWithConfiguration=function(config){return this.popupData(config.genomicLocation,config.x,config.y,config.viewport.genomicState.referenceFrame)},igv.FeatureTrack.prototype.popupData=function(genomicLocation,xOffset,yOffset,referenceFrame){if(this.featureSource.featureCache){var tolerance,featureList,row,popupData,ss,ee;if(tolerance=2*referenceFrame.bpPerPixel,ss=genomicLocation-tolerance,ee=genomicLocation+tolerance,featureList=this.featureSource.featureCache.queryFeatures(referenceFrame.chrName,ss,ee),"COLLAPSED"!==this.displayMode&&(row="SQUISHED"===this.displayMode?Math.floor((yOffset-2)/this.expandedCallHeight):Math.floor((yOffset-5)/this.squishedCallHeight)),featureList&&featureList.length>0)return popupData=[],featureList.forEach(function(feature){var featureData;feature.end>=ss&&feature.start<=ee&&(void 0!==row&&void 0!==feature.row&&row!==feature.row||(featureData=feature.popupData?feature.popupData(genomicLocation):extractPopupData(feature),featureData&&(popupData.length>0&&popupData.push("
"),Array.prototype.push.apply(popupData,featureData))))}),popupData}return null},igv.FeatureTrack.prototype.menuItemList=function(popover){function markupStringified(displayMode,index,selfDisplayMode){var lut,chosen;return lut={COLLAPSED:"Collapse",SQUISHED:"Squish",EXPANDED:"Expand"},chosen=0===index?'
':"
",displayMode===selfDisplayMode?chosen+''+lut[displayMode]+"
":chosen+''+lut[displayMode]+"
"}function colorSchemeMarkup(colorScheme,index,selfColorScheme){var chosen=0===index?'
':"
";return colorScheme===selfColorScheme?chosen+'Color by '+colorScheme+"
":chosen+'Color by '+colorScheme+"
"}var mapped,self=this,menuItems=[];if(this.render===renderSnp){var colorByItems=["function","class"].map(function(colorScheme,index){return{object:$(colorSchemeMarkup(colorScheme,index,self.colorBy)),click:function(){popover.hide(),self.colorBy=colorScheme,self.trackView.update()}}});menuItems=menuItems.concat(colorByItems)}return mapped=["COLLAPSED","SQUISHED","EXPANDED"].map(function(displayMode,index){return{object:$(markupStringified(displayMode,index,self.displayMode)),click:function(){popover.hide(),self.displayMode=displayMode,self.trackView.update()}}}),menuItems=menuItems.concat(mapped)},igv.FeatureTrack.prototype.popupMenuItemList=function(config){function setColorBy(value){self.colorBy=value,self.trackView.update(),config.popover.hide()}if(this.render===renderSnp){var menuItems=[],self=this;return menuItems.push({name:"Color by function",click:function(){setColorBy("function")}}),menuItems.push({name:"Color by class",click:function(){setColorBy("class")}}),menuItems}},igv.FeatureTrack.prototype.description=function(){var desc;return renderSnp===this.render?(desc=""+this.name+"
",desc+="Color By Function:
",desc+='Red: Coding-Non-Synonymous, Splice Site
',desc+='Green: Coding-Synonymous
',desc+='Blue: Untranslated
',desc+='Black: Intron, Locus, Unknown

',desc+="Color By Class:
",desc+='Red: Deletion
',desc+='Green: MNP
',desc+='Blue: Microsatellite, Named
',desc+='Black: Indel, Insertion, SNP',desc+=""):this.name},igv.FeatureTrack.prototype.popupMenuItemList=function(config){function setColorBy(value){self.colorBy=value,self.trackView.update(),config.popover.hide()}if(this.render===renderSnp){var menuItems=[],self=this;return menuItems.push({name:"Color by function",click:function(){setColorBy("function")}}),menuItems.push({name:"Color by class",click:function(){setColorBy("class")}}),menuItems}},igv}(igv||{}),igv=function(igv){return igv.FeatureUtils={packFeatures:function(features,maxRows,sorted){var start,end;if(features){if(maxRows=maxRows||1e4,sorted||features.sort(function(a,b){return a.start-b.start}),0===features.length)return[];var nextStart,row,index,bucket,feature,bucketStart,bucketList=[],allocatedCount=0,lastAllocatedCount=0,gap=2,packedRows=[];for(start=features[0].start,end=features[features.length-1].start,bucketStart=Math.max(start,features[0].start),nextStart=bucketStart,features.forEach(function(alignment){var buckListIndex=Math.max(0,alignment.start-bucketStart);void 0===bucketList[buckListIndex]&&(bucketList[buckListIndex]=[]),bucketList[buckListIndex].push(alignment)}),row=0;allocatedCount=cds.end){exon=exons[i];break}exon?(exon.cdStart=exon.cdStart?Math.min(cds.start,exon.cdStart):cds.start,exon.cdEnd=exon.cdEnd?Math.max(cds.end,exon.cdEnd):cds.end):exons.push({start:cds.start,end:cds.end,cdStart:cds.start,cdEnd:cds.end}),this.start=Math.min(this.start,cds.start),this.end=Math.max(this.end,cds.end),this.cdStart=this.cdStart?Math.min(cds.start,this.cdStart):cds.start,this.cdEnd=this.cdEnd?Math.max(cds.end,this.cdEnd):cds.end},GFFTranscript.prototype.addUTR=function(utr){var i,exon,exons=this.exons;for(i=0;i=utr.end){exon=exons[i];break}exon?utr.start===exon.start&&utr.end===exon.end&&(exon.utr=!0):exons.push({start:utr.start,end:utr.end,utr:!0}),this.start=Math.min(this.start,utr.start),this.end=Math.max(this.end,utr.end)},GFFTranscript.prototype.finish=function(){var cdStart=this.cdStart,cdEnd=this.cdEnd;this.exons.sort(function(a,b){return a.start-b.start}),cdStart&&this.exons.forEach(function(exon){(exon.endcdEnd)&&(exon.utr=!0)})},igv}(igv||{}),igv=function(igv){function autoscale(chr,featureArrays){var min=0,max=-Number.MAX_VALUE;return featureArrays.forEach(function(features){features.forEach(function(f){Number.isNaN(f.value)||(min=Math.min(min,f.value),max=Math.max(max,f.value))})}),{min:min,max:max}}return igv.MergedTrack=function(config){var self=this;return config.tracks?(void 0===config.height&&(config.height=50),igv.configTrack(this,config),this.tracks=[],void config.tracks.forEach(function(tconf){tconf.type||igv.inferTrackTypes(tconf);var t=igv.createTrack(tconf);t?(t.autoscale=!1,self.tracks.push(t)):console.log("Could not create track "+tconf)})):void console.log("Error: not tracks defined for merged track. "+config)},igv.MergedTrack.prototype.getFeatures=function(chr,bpStart,bpEnd,bpPerPixel){var promises=this.tracks.map(function(t){return t.getFeatures(chr,bpStart,bpEnd,bpPerPixel)});return Promise.all(promises)},igv.MergedTrack.prototype.draw=function(options){var i,len,mergedFeatures,trackOptions,dataRange;for(mergedFeatures=options.features,dataRange=autoscale(options.genomicState.chromosome.name,mergedFeatures),i=0,len=this.tracks.length;idataColumn&&allFeatures.push({sample:tokens[sampleColumn],chr:tokens[chrColumn],start:parseInt(tokens[startColumn]),end:parseInt(tokens[endColumn]),value:parseFloat(tokens[dataColumn])});return allFeatures},igv}(igv||{}),igv=function(igv){var sortDirection="DESC";return igv.SegTrack=function(config){igv.configTrack(this,config),this.isLog=void 0!==config.isLog&&config.isLog,this.displayMode=config.displayMode||"SQUISHED",this.maxHeight=config.maxHeight||500,this.sampleSquishHeight=config.sampleSquishHeight||2,this.sampleExpandHeight=config.sampleExpandHeight||12,this.posColorScale=config.posColorScale||new igv.GradientColorScale({low:.1,lowR:255,lowG:255,lowB:255,high:1.5,highR:255,highG:0,highB:0}),this.negColorScale=config.negColorScale||new igv.GradientColorScale({low:-1.5,lowR:0,lowG:0,lowB:255,high:-.1,highR:255,highG:255,highB:255}),this.sampleCount=0,this.samples={},this.sampleNames=[],this.featureSource=new igv.FeatureSource(this.config),this.supportsWholeGenome=!0},igv.SegTrack.prototype.menuItemList=function(popover){var self=this;return[{name:"SQUISHED"===this.displayMode?"Expand sample hgt":"Squish sample hgt",click:function(){popover.hide(),self.toggleSampleHeight()}}]},igv.SegTrack.prototype.toggleSampleHeight=function(){this.displayMode="SQUISHED"===this.displayMode?"EXPANDED":"SQUISHED",this.trackView.update()},igv.SegTrack.prototype.getFeatures=function(chr,bpStart,bpEnd){var self=this;return 0===self.sampleCount&&"function"==typeof self.featureSource.reader.allSamples?self.featureSource.reader.allSamples().then(function(samples){return samples.forEach(function(sample){self.samples[sample]=self.sampleCount,self.sampleNames.push(sample),self.sampleCount++}),self.featureSource.getFeatures(chr,bpStart,bpEnd)}):self.featureSource.getFeatures(chr,bpStart,bpEnd)},igv.SegTrack.prototype.draw=function(options){var featureList,ctx,bpPerPixel,bpStart,pixelWidth,pixelHeight,bpEnd,segment,len,sample,i,y,color,value,px,px1,pw,xScale,sampleHeight,border,myself=this;if(sampleHeight="SQUISHED"===this.displayMode?this.sampleSquishHeight:this.sampleExpandHeight,border="SQUISHED"===this.displayMode?0:1,ctx=options.context,pixelWidth=options.pixelWidth,pixelHeight=options.pixelHeight,igv.graphics.fillRect(ctx,0,0,pixelWidth,pixelHeight,{fillStyle:"rgb(255, 255, 255)"}),featureList=options.features){for(bpPerPixel=options.bpPerPixel,bpStart=options.bpStart,bpEnd=bpStart+pixelWidth*bpPerPixel+1,xScale=bpPerPixel,i=0,len=featureList.length;ibpEnd)break;y=myself.samples[segment.sample]*sampleHeight+border,value=segment.value,myself.isLog||(value=Math.log2(value/2)),color=value<-.1?myself.negColorScale.getColor(value):value>.1?myself.posColorScale.getColor(value):"white",px=Math.round((segment.start-bpStart)/xScale),px1=Math.round((segment.end-bpStart)/xScale),pw=Math.max(1,px1-px),igv.graphics.fillRect(ctx,px,y,pw,sampleHeight-2*border,{fillStyle:color})}}else console.log("No feature list")},igv.SegTrack.prototype.computePixelHeight=function(features){var i,len,sample,sampleHeight="SQUISHED"===this.displayMode?this.sampleSquishHeight:this.sampleExpandHeight;for(i=0,len=features.length;ibpEnd)break;min=Math.max(bpStart,segment.start),max=Math.min(bpEnd,segment.end),f=(max-min)/bpLength,s=scores[segment.sample],s||(s=0),scores[segment.sample]=s+f*segment.value}for(sampleNames=Object.keys(self.samples),sampleNames.sort(function(a,b){var s1=scores[a],s2=scores[b];return s1||(s1=Number.MAX_VALUE),s2||(s2=Number.MAX_VALUE),s1==s2?0:s1>s2?d2:d2*-1}),i=0;i"),$e.text("Sort by value"),clickHandler=function(){self.altClick(config.genomicLocation,config.viewport.genomicState.referenceFrame),config.popover.hide()},[{name:void 0,object:$e,click:clickHandler,init:void 0}]},igv}(igv||{}),igv=function(igv){return igv.loadTribbleIndex=function(indexFile,config){var genome=igv.browser?igv.browser.genome:null;return new Promise(function(fullfill){function readHeader(parser){var version=(parser.getInt(),parser.getInt(),parser.getInt()),flags=(parser.getString(),parser.getLong(),parser.getLong(),parser.getString(),parser.getInt());if(version<3&&(flags&SEQUENCE_DICTIONARY_FLAG)==SEQUENCE_DICTIONARY_FLAG,version>=3)for(var nProperties=parser.getInt();nProperties-- >0;){parser.getString(),parser.getString()}}function readLinear(parser){var chr=parser.getString(),blockMax=0;genome&&(chr=genome.getChromosomeName(chr));for(var nBins=(parser.getInt(),parser.getInt()),blocks=(parser.getInt(),parser.getInt()>0,parser.getInt(),new Array),pos=parser.getLong(),blocks=new Array,binNumber=0;binNumberblockMax&&(blockMax=nextPos)}return{chr:chr,blocks:blocks}}igv.xhr.loadArrayBuffer(indexFile,igv.buildOptions(config)).then(function(arrayBuffer){if(arrayBuffer){var index={},parser=new igv.BinaryParser(new DataView(arrayBuffer));readHeader(parser);for(var nChrs=parser.getInt();nChrs-- >0;){var chrIdx=readLinear(parser);index[chrIdx.chr]=chrIdx}fullfill(new igv.TribbleIndex(index))}else fullfill(null)}).catch(function(error){console.log(error),fullfill(null)})})},igv.TribbleIndex=function(chrIndexTable){this.chrIndex=chrIndexTable},igv.TribbleIndex.prototype.blocksForRange=function(queryChr,min,max){var chrIdx=this.chrIndex[queryChr];if(chrIdx){var blocks=chrIdx.blocks,lastBlock=blocks[blocks.length-1],mergedBlock={minv:{block:blocks[0].min,offset:0},maxv:{block:lastBlock.max,offset:0}};return[mergedBlock]}return null},igv}(igv||{}),igv=function(igv){function addExons(sample){var exonCount,exonStarts,exonEnds,exons,eStart,eEnd;exonCount=sample.exonCount,exonStarts=sample.exonStarts.split(","),exonEnds=sample.exonEnds.split(","),exons=[];for(var i=0;ieEnd||sample.cdsEnd=eStart&&sample.cdsStart<=eEnd&&(exon.cdStart=sample.cdsStart),sample.cdsEnd>=eStart&&sample.cdsEnd<=eEnd&&(exon.cdEnd=sample.cdsEnd),exons.push(exon)}sample.exons=exons}return igv.UCSCServiceReader=function(config){this.config=config},igv.UCSCServiceReader.prototype.readFeatures=function(chr,start,end){var self=this,url=this.config.url+"&table="+this.config.tableName+"&chr="+chr+"&start="+start+"&end="+end;return igv.xhr.loadJson(url,self.config).then(function(data){return data?(data.forEach(function(sample){sample.hasOwnProperty("exonStarts")&&sample.hasOwnProperty("exonEnds")&&sample.hasOwnProperty("exonCount")&&sample.hasOwnProperty("cdsStart")&&sample.hasOwnProperty("cdsEnd")&&addExons(sample)}),data):null})},igv}(igv||{}),igv=function(igv){function autoscale(features){var min=0,max=-Number.MAX_VALUE;return features.forEach(function(f){Number.isNaN(f.value)||(min=Math.min(min,f.value),max=Math.max(max,f.value))}),{min:min,max:max}}function signsDiffer(a,b){return a>0&&b<0||a<0&&b>0}return igv.WIGTrack=function(config){this.config=config,this.url=config.url,void 0===config.color&&(config.color="rgb(150,150,150)"),void 0===config.height&&(config.height=50),igv.configTrack(this,config),"bigwig"===config.format?this.featureSource=new igv.BWSource(config):"tdf"===config.format?this.featureSource=new igv.TDFSource(config):this.featureSource=new igv.FeatureSource(config),void 0!==config.max?this.dataRange={min:config.min||0,max:config.max}:this.autoscale=!0,this.windowFunction=config.windowFunction||"mean",this.paintAxis=igv.paintAxis},igv.WIGTrack.prototype.getFeatures=function(chr,bpStart,bpEnd,bpPerPixel){return this.featureSource.getFeatures(chr,bpStart,bpEnd,bpPerPixel,this.windowFunction)},igv.WIGTrack.prototype.menuItemList=function(popover){function htmlStringified(autoscale){var html=[];return html.push("
"),html.push(!0===autoscale?'':''),html.push(""),html.push("Autoscale"),html.push("
"),html.join("")}var self=this,menuItems=[];return menuItems.push(igv.dataRangeMenuItem(popover,this.trackView)),menuItems.push({object:$(htmlStringified(self.autoscale)),click:function(){var $fa=$(this).find("i");popover.hide(),self.autoscale=!self.autoscale,!0===self.autoscale?$fa.removeClass("fa-check-hidden"):$fa.addClass("fa-check-hidden"),self.trackView.update()}}),menuItems},igv.WIGTrack.prototype.getFileHeader=function(){var self=this;return"function"==typeof self.featureSource.getFileHeader?self.featureSource.getFileHeader().then(function(header){return header&&(header.name&&!self.config.name&&(self.name=header.name),header.color&&!self.config.color&&(self.color="rgb("+header.color+")")),header}):Promise.resolve(null)},igv.WIGTrack.prototype.draw=function(options){function renderFeature(feature,index,featureList){var yUnitless,heightUnitLess,x,width,rectEnd;feature.endbpEnd||(x=Math.floor((feature.start-bpStart)/bpPerPixel),rectEnd=Math.ceil((feature.end-bpStart)/bpPerPixel),width=Math.max(1,rectEnd-x),signsDiffer(featureValueMinimum,featureValueMaximum)?feature.value<0?(yUnitless=featureValueMaximum/featureValueRange,heightUnitLess=-feature.value/featureValueRange):(yUnitless=(featureValueMaximum-feature.value)/featureValueRange,heightUnitLess=feature.value/featureValueRange):featureValueMinimum<0?(yUnitless=0,heightUnitLess=-feature.value/featureValueRange):(yUnitless=1-feature.value/featureValueRange,heightUnitLess=feature.value/featureValueRange),igv.graphics.fillRect(ctx,x,yUnitless*pixelHeight,width,heightUnitLess*pixelHeight,{fillStyle:self.color}))}var featureValueMinimum,featureValueMaximum,featureValueRange,baselineColor,self=this,features=options.features,ctx=options.context,bpPerPixel=options.bpPerPixel,bpStart=options.bpStart,pixelWidth=options.pixelWidth,pixelHeight=options.pixelHeight,bpEnd=bpStart+pixelWidth*bpPerPixel+1;if(self.color&&self.color.startsWith("rgb(")&&(baselineColor=igv.Color.addAlpha(self.color,.1)),features&&features.length>0){if(self.autoscale||void 0===self.dataRange){var s=autoscale(features);featureValueMinimum=self.config.min||s.min,featureValueMaximum=s.max}else featureValueMinimum=void 0===self.dataRange.min?0:self.dataRange.min,featureValueMaximum=self.dataRange.max;if(void 0===self.dataRange&&(self.dataRange={}),self.dataRange.min=featureValueMinimum,self.dataRange.max=featureValueMaximum,featureValueMaximum>featureValueMinimum){if(featureValueRange=featureValueMaximum-featureValueMinimum,features.forEach(renderFeature),featureValueMinimum<0){var alpha=ctx.lineWidth;ctx.lineWidth=5;var basepx=featureValueMaximum/(featureValueMaximum-featureValueMinimum)*options.pixelHeight;ctx.lineWidth=alpha}igv.graphics.strokeLine(ctx,0,basepx,options.pixelWidth,basepx,{strokeStyle:baselineColor})}}},igv}(igv||{}),igv=function(igv){function translateCigar(cigar){var cigarUnit,opLen,opLtr,i,lengthOnRef=0,cigarArray=[];for(i=0;i1},igv.Ga4ghAlignment.prototype.isProperPair=function(){return void 0===this.properPlacement||this.properPlacement},igv.Ga4ghAlignment.prototype.isFirstOfPair=function(){return this.readNumber&&0===this.readNumber},igv.Ga4ghAlignment.prototype.isSecondOfPair=function(){return this.readNumber&&1===this.readNumber},igv.Ga4ghAlignment.prototype.isSecondary=function(){return this.secondaryAlignment},igv.Ga4ghAlignment.prototype.isSupplementary=function(){return this.supplementaryAlignment},igv.Ga4ghAlignment.prototype.isFailsVendorQualityCheck=function(){return this.failedVendorQualityChecks},igv.Ga4ghAlignment.prototype.isDuplicate=function(){return this.duplicateFragment},igv.Ga4ghAlignment.prototype.isMateMapped=function(){return this.mate},igv.Ga4ghAlignment.prototype.mateStrand=function(){return this.mate&&this.mate.strand},igv.Ga4ghAlignment.prototype.tags=function(){return this.info},igv.Ga4ghAlignment.prototype.popupData=function(genomicLocation){function yesNo(bool){return bool?"Yes":"No"}var isFirst,nameValues;nameValues=[],nameValues.push({name:"Read Name",value:this.readName}),nameValues.push("
"),nameValues.push({name:"Alignment Start",value:igv.numberFormatter(1+this.start),borderTop:!0}),nameValues.push({name:"Read Strand",value:!0===this.strand?"(+)":"(-)",borderTop:!0}),nameValues.push({name:"Cigar",value:this.cigar}),nameValues.push({name:"Mapped",value:yesNo(this.isMapped())}),nameValues.push({name:"Mapping Quality",value:this.mq}),nameValues.push({name:"Secondary",value:yesNo(this.isSecondary())}),nameValues.push({name:"Supplementary",value:yesNo(this.isSupplementary())}),nameValues.push({name:"Duplicate",value:yesNo(this.isDuplicate())}),nameValues.push({name:"Failed QC",value:yesNo(this.isFailsVendorQualityCheck())}),this.isPaired()&&(nameValues.push("
"),nameValues.push({name:"First in Pair",value:!this.isSecondOfPair(),borderTop:!0}),nameValues.push({name:"Mate is Mapped",value:yesNo(this.isMateMapped())}),this.isMapped()&&(nameValues.push({name:"Mate Start",value:this.matePos}),nameValues.push({name:"Mate Strand",value:this.mateStrand()?"(-)":"(+)"}),nameValues.push({name:"Insert Size",value:this.fragmentLength}))),nameValues.push("
"),this.tags(),isFirst=!0;for(var key in this.tagDict)this.tagDict.hasOwnProperty(key)&&(isFirst?(nameValues.push({name:key,value:this.tagDict[key],borderTop:!0}),isFirst=!1):nameValues.push({name:key,value:this.tagDict[key]}));return nameValues},igv}(igv||{}),igv=function(igv){function populateChrAliasTable(chrAliasTable,datasetId){var i;if("461916304629"===datasetId||"337315832689"===datasetId){for(i=1;i<23;i++)chrAliasTable["chr"+i]=i;chrAliasTable.chrX="X",chrAliasTable.chrY="Y",chrAliasTable.chrM="MT"}}var CigarOperationTable={ALIGNMENT_MATCH:"M",INSERT:"I",DELETE:"D",SKIP:"N",CLIP_SOFT:"S",CLIP_HARD:"H",PAD:"P",SEQUENCE_MATCH:"=",SEQUENCE_MISMATCH:"X"};return igv.Ga4ghAlignmentReader=function(config){this.config=config,this.url=config.url,this.filter=config.filter||new igv.BamFilter,this.readGroupSetIds=config.readGroupSetIds,this.authKey=config.authKey,this.samplingWindowSize=void 0===config.samplingWindowSize?100:config.samplingWindowSize,this.samplingDepth=void 0===config.samplingDepth?100:config.samplingDepth,config.viewAsPairs?this.pairsSupported=!0:this.pairsSupported=void 0===config.pairsSupported||config.pairsSupported},igv.Ga4ghAlignmentReader.prototype.readAlignments=function(chr,bpStart,bpEnd){var self=this;return new Promise(function(fulfill,reject){function getChrAliasTable(){return self.chrAliasTable?Promise.resolve(self.chrAliasTable):new Promise(function(fulfill,reject){self.readMetadata().then(function(json){if(self.chrAliasTable={},igv.browser&&json.readGroups&&json.readGroups.length>0){var referenceSetId=json.readGroups[0].referenceSetId;if(console.log("No reference set specified"),referenceSetId){var readURL=self.url+"/references/search";igv.ga4ghSearch({url:readURL,body:{referenceSetId:referenceSetId},decode:function(j){return j.references}}).then(function(references){references.forEach(function(ref){var refName=ref.name,alias=igv.browser.genome.getChromosomeName(refName);self.chrAliasTable[alias]=refName}),fulfill(self.chrAliasTable)}).catch(reject)}else populateChrAliasTable(self.chrAliasTable,self.config.datasetId),fulfill(self.chrAliasTable)}else fulfill(self.chrAliasTable)}).catch(reject)})}function decodeGa4ghReads(json){function encodeCigar(cigarArray){var cigarString="";return cigarArray.forEach(function(cigarUnit){var op=CigarOperationTable[cigarUnit.operation],len=cigarUnit.operationLength;cigarString+=len+op}),cigarString}function encodeFlags(json){return 0}function translateCigar(cigar){var cigarUnit,opLen,opLtr,i,lengthOnRef=0,cigarArray=[];for(i=0;i0&&(paramString=gsUrl.substring(qIdx)),"https://www.googleapis.com/storage/v1/b/"+bucket+"/o/"+object+(paramString?paramString+"&alt=media":"?alt=media"))},addGoogleHeaders:function(headers){headers["Cache-Control"]="no-cache";var acToken=oauth.google.access_token;return acToken&&!headers.hasOwnProperty("Authorization")&&(headers.Authorization="Bearer "+acToken),headers},addApiKey:function(url){var apiKey=oauth.google.apiKey,paramSeparator=url.includes("?")?"&":"?";return void 0===apiKey||url.includes("key=")||apiKey&&(url=url+paramSeparator+"key="+apiKey),url},driveDownloadURL:function(link){var i1,i2,id;return link.includes("/open?id=")?(i1=link.indexOf("/open?id=")+9,i2=link.indexOf("&"),i1>0&&i2>i1?id=link.substring(i1,i2):i1>0&&(id=link.substring(i1))):link.includes("/file/d/")&&(i1=link.indexOf("/file/d/")+8,i2=link.lastIndexOf("/"),id=link.substring(i1,i2)),id?"https://www.googleapis.com/drive/v3/files/"+id+"?alt=media":link}},igv}(igv||{}),igv=function(igv){function loadCytobands(cytobandUrl,config){return igv.xhr.loadString(cytobandUrl,igv.buildOptions(config)).then(function(data){for(var lastChr,bands=[],n=0,c=1,lines=data.splitLines(),len=lines.length,cytobands={},i=0;i0&&aliases.push(line.split("\t"))}),aliases})}function constructWG(genome){var l,lengths,mean,threshold;genome.wgChromosomeNames=[],genome.ideograms?genome.chromosomeNames.forEach(function(chrName){var ideo=genome.ideograms[chrName];ideo&&ideo.length>0&&genome.wgChromosomeNames.push(chrName)}):(lengths=Object.keys(genome.chromosomes).map(function(key){return genome.chromosomes[key].bpLength}),mean=igv.Math.mean(lengths),threshold=mean/50,genome.wgChromosomeNames=genome.chromosomeNames.filter(function(key){return genome.chromosomes[key].bpLength>threshold})),l=0,genome.wgChromosomeNames.forEach(function(key){l+=genome.chromosomes[key].bpLength}),genome.chromosomes.all={name:"all",bpLength:l}}return igv.loadGenome=function(reference){var cytobands,chrNames,sequence,cytobandUrl=reference.cytobandURL,aliasURL=reference.aliasURL,chromosomes={};return sequence=new igv.FastaSequence(reference),sequence.init().then(function(){chrNames=sequence.chromosomeNames,chromosomes=sequence.chromosomes}).then(function(ignore){return cytobandUrl?loadCytobands(cytobandUrl,sequence.config):void 0}).then(function(c){return cytobands=c,aliasURL?loadAliases(aliasURL,sequence.config):void 0}).then(function(aliases){return new igv.Genome(reference.id,sequence,cytobands,aliases)})},igv.Genome=function(id,sequence,ideograms,aliases){this.id=id,this.sequence=sequence,this.chromosomeNames=sequence.chromosomeNames,this.chromosomes=sequence.chromosomes,this.ideograms=ideograms,constructWG(this);var chrAliasTable={},self=this;this.chromosomeNames.forEach(function(name){var alias=name.startsWith("chr")?name.substring(3):"chr"+name;chrAliasTable[alias]=name,"chrM"===name&&(chrAliasTable.MT="chrM"),"MT"===name&&(chrAliasTable.chrM="MT")}),aliases&&aliases.forEach(function(array){var defName,i;for(i=0;ilongestChr.bpLength)&&(longestChr=chr)}return longestChr}},igv.Genome.prototype.getChromosomes=function(){return this.chromosomes},igv.Genome.prototype.getGenomeCoordinate=function(chr,bp){var offset=this.getCumulativeOffset(chr);if(void 0!==offset)return offset+bp},igv.Genome.prototype.getChromosomeCoordinate=function(genomeCoordinate){var lastChr,lastCoord,i,name,cumulativeOffset,self=this;for(void 0===this.cumulativeOffsets&&computeCumulativeOffsets.call(this),i=0;igenomeCoordinate){var position=genomeCoordinate-lastCoord;return{chr:lastChr,position:position}}lastChr=name,lastCoord=cumulativeOffset}return{chr:_.last(this.chromosomeNames),position:0}},igv.Genome.prototype.getCumulativeOffset=function(chr){function computeCumulativeOffsets(){var cumulativeOffsets={},offset=0;self.wgChromosomeNames.forEach(function(name){cumulativeOffsets[name]=Math.floor(offset);var chromosome=self.getChromosome(name);offset+=chromosome.bpLength}),self.cumulativeOffsets=cumulativeOffsets}var self=this,queryChr=this.getChromosomeName(chr);return void 0===this.cumulativeOffsets&&computeCumulativeOffsets.call(this),this.cumulativeOffsets[queryChr]},igv.Genome.prototype.getGenomeLength=function(){var lastChr;return lastChr=_.last(this.wgChromosomeNames),this.getCumulativeOffset(lastChr)+this.getChromosome(lastChr).bpLength},igv.Chromosome=function(name,order,bpLength){this.name=name,this.order=order,this.bpLength=bpLength},igv.Cytoband=function(start,end,name,typestain){this.start=start,this.end=end,this.name=name,this.stain=0,"acen"==typestain?this.type="c":(this.type=typestain.charAt(1),"p"==this.type&&(this.stain=parseInt(typestain.substring(4))))},igv.GenomicInterval=function(chr,start,end,features){this.chr=chr,this.start=start,this.end=end,this.features=features},igv.GenomicInterval.prototype.contains=function(chr,start,end){return this.chr==chr&&this.start<=start&&this.end>=end},igv.GenomicInterval.prototype.containsRange=function(range){return this.chr===range.chr&&this.start<=range.start&&this.end>=range.end},igv.Genome.KnownGenomes={hg18:{fastaURL:"https://s3.amazonaws.com/igv.broadinstitute.org/genomes/seq/hg18/hg18.fasta",cytobandURL:"https://s3.amazonaws.com/igv.broadinstitute.org/genomes/seq/hg18/cytoBand.txt.gz"},GRCh38:{fastaURL:"https://s3.amazonaws.com/igv.broadinstitute.org/genomes/seq/hg38/hg38.fa",cytobandURL:"https://s3.amazonaws.com/igv.broadinstitute.org/annotations/hg38/cytoBandIdeo.txt"},hg38:{fastaURL:"https://s3.amazonaws.com/igv.broadinstitute.org/genomes/seq/hg38/hg38.fa",cytobandURL:"https://s3.amazonaws.com/igv.broadinstitute.org/annotations/hg38/cytoBandIdeo.txt"},hg19:{fastaURL:"https://s3.amazonaws.com/igv.broadinstitute.org/genomes/seq/hg19/hg19.fasta",cytobandURL:"https://s3.amazonaws.com/igv.broadinstitute.org/genomes/seq/hg19/cytoBand.txt"},GRCh37:{fastaURL:"https://s3.amazonaws.com/igv.broadinstitute.org/genomes/seq/hg19/hg19.fasta",cytobandURL:"https://s3.amazonaws.com/igv.broadinstitute.org/genomes/seq/hg19/cytoBand.txt"},mm10:{fastaURL:"https://s3.amazonaws.com/igv.broadinstitute.org/genomes/seq/mm10/mm10.fa",indexURL:"https://s3.amazonaws.com/igv.broadinstitute.org/genomes/seq/mm10/mm10.fa.fai",cytobandURL:"https://s3.amazonaws.com/igv.broadinstitute.org/annotations/mm10/cytoBandIdeo.txt.gz"},GRCm38:{fastaURL:"https://s3.amazonaws.com/igv.broadinstitute.org/genomes/seq/mm10/mm10.fa",indexURL:"https://s3.amazonaws.com/igv.broadinstitute.org/genomes/seq/mm10/mm10.fa.fai",cytobandURL:"https://s3.amazonaws.com/igv.broadinstitute.org/annotations/mm10/cytoBandIdeo.txt.gz"}},igv}(igv||{}),igv=function(igv){function selectedFeature(feature,source){console.log(feature+" "+source);var type="gtex"===source?"snp":"gene";this.selection=new GtexSelection("gene"==type?{gene:feature}:{snp:feature}),igv.browser.update()}igv.EqtlTrack=function(config){var url=config.url,label=config.name;this.config=config,this.url=url,this.name=label,this.pValueField=config.pValueField||"pValue",this.geneField=config.geneField||"geneName",this.minLogP=config.minLogP||3.5,this.maxLogP=config.maxLogP||25,this.background=config.background,this.divider=config.divider||"rgb(225,225,225)",this.dotSize=config.dotSize||2,this.height=config.height||100,this.autoHeight=!1,this.disableButtons=config.disableButtons,this.visibilityWindow=config.visibilityWindow,this.featureSource=new igv.FeatureSource(config),this.onsearch=function(feature,source){selectedFeature.call(this,feature,source)}},igv.EqtlTrack.prototype.paintAxis=function(ctx,pixelWidth,pixelHeight){var track=this,yScale=(track.maxLogP-track.minLogP)/pixelHeight,font={font:"normal 10px Arial",textAlign:"right",strokeStyle:"black"};igv.graphics.fillRect(ctx,0,0,pixelWidth,pixelHeight,{fillStyle:"rgb(255, 255, 255)"});for(var p=4;p<=track.maxLogP;p+=2){var x1,x2,y1,y2,ref;ref=.85*pixelWidth,x1=ref-5,x2=ref,y1=y2=pixelHeight-Math.round((p-track.minLogP)/yScale),igv.graphics.strokeLine(ctx,x1,y1,x2,y2,font),igv.graphics.fillText(ctx,p,x1-1,y1+2,font)}font.textAlign="center",igv.graphics.fillText(ctx,"-log10(pvalue)",pixelWidth/4,pixelHeight/2,font,{rotate:{angle:-90}})},igv.EqtlTrack.prototype.getFeatures=function(chr,bpStart,bpEnd){return this.featureSource.getFeatures(chr,bpStart,bpEnd)},igv.EqtlTrack.prototype.draw=function(options){function drawEqtls(drawSelected){var eqtl,i,px,py,color,isSelected,snp,geneName,selection,radius=drawSelected?2*track.dotSize:track.dotSize;for(igv.graphics.setProperties(ctx,{fillStyle:"rgb(180, 180, 180)",strokeStyle:"rgb(180, 180, 180)"}),i=0;ipixelWidth)break;var mLogP=-Math.log(eqtl[track.pValueField])/Math.LN10;mLogP0){var popupData=[];return featureList.forEach(function(feature){feature.end>=genomicLocation-tolerance&&feature.start<=genomicLocation+tolerance&&feature.py-yOffset<2*dotSize&&(popupData.length>0&&popupData.push("
"),popupData.push({name:"snp id",value:feature.snp},{name:"gene id",value:feature.geneId},{name:"gene name",value:feature.geneName},{name:"p value",value:feature.pValue},{name:"tissue",value:tissue}))}),popupData}}},GtexSelection=function(selection){this.geneColors={},this.gene=null,this.snp=null,this.genesCount=0,selection.gene&&(this.gene=selection.gene.toUpperCase(),this.geneColors[this.gene]=brewer[this.genesCount++]),selection.snp&&(this.snp=selection.snp.toUpperCase())},GtexSelection.prototype.addGene=function(geneName){this.geneColors[geneName.toUpperCase()]||(this.geneColors[geneName.toUpperCase()]=brewer[this.genesCount++])},GtexSelection.prototype.colorForGene=function(geneName){return this.geneColors[geneName.toUpperCase()]};var brewer=new Array;return brewer.push("rgb(228,26,28)"),brewer.push("rgb(55,126,184)"),brewer.push("rgb(77,175,74)"),brewer.push("rgb(166,86,40)"),brewer.push("rgb(152,78,163)"),brewer.push("rgb(255,127,0)"),brewer.push("rgb(247,129,191)"),brewer.push("rgb(153,153,153)"),brewer.push("rgb(255,255,51)"),brewer.push("rgb(102, 194, 165"),brewer.push("rgb(252, 141, 98"),brewer.push("rgb(141, 160, 203"),brewer.push("rgb(231, 138, 195"),brewer.push("rgb(166, 216, 84"),brewer.push("rgb(255, 217, 47"),brewer.push("rgb(229, 196, 148"),brewer.push("rgb(179, 179, 179"),brewer.push("rgb( 141, 211, 199"),brewer.push("rgb(255, 255, 179"),brewer.push("rgb(190, 186, 218"),brewer.push("rgb(251, 128, 114"),brewer.push("rgb(128, 177, 211"),brewer.push("rgb(253, 180, 98"),brewer.push("rgb(179, 222, 105"),brewer.push("rgb(252, 205, 229"),brewer.push("rgb(217, 217, 217"),brewer.push("rgb(188, 128, 189"),brewer.push("rgb(204, 235, 197"),brewer.push("rgb(255, 237, 111"),igv}(igv||{}),igv=function(igv){igv.GtexSelection=function(selection){this.geneColors={},this.gene=null,this.snp=null,this.genesCount=0,selection.gene&&(this.gene=selection.gene.toUpperCase(),this.geneColors[this.gene]=brewer[this.genesCount++]),selection.snp&&(this.snp=selection.snp.toUpperCase())},igv.GtexSelection.prototype.addGene=function(geneName){this.geneColors[geneName.toUpperCase()]||(this.geneColors[geneName.toUpperCase()]=brewer[this.genesCount++])},igv.GtexSelection.prototype.colorForGene=function(geneName){return this.geneColors[geneName.toUpperCase()]};var brewer=new Array;return brewer.push("rgb(228,26,28)"),brewer.push("rgb(55,126,184)"),brewer.push("rgb(77,175,74)"),brewer.push("rgb(166,86,40)"),brewer.push("rgb(152,78,163)"),brewer.push("rgb(255,127,0)"),brewer.push("rgb(247,129,191)"),brewer.push("rgb(153,153,153)"),brewer.push("rgb(255,255,51)"),brewer.push("rgb(102, 194, 165"),brewer.push("rgb(252, 141, 98"),brewer.push("rgb(141, 160, 203"),brewer.push("rgb(231, 138, 195"),brewer.push("rgb(166, 216, 84"),brewer.push("rgb(255, 217, 47"),brewer.push("rgb(229, 196, 148"),brewer.push("rgb(179, 179, 179"),brewer.push("rgb( 141, 211, 199"),brewer.push("rgb(255, 255, 179"),brewer.push("rgb(190, 186, 218"),brewer.push("rgb(251, 128, 114"),brewer.push("rgb(128, 177, 211"),brewer.push("rgb(253, 180, 98"),brewer.push("rgb(179, 222, 105"),brewer.push("rgb(252, 205, 229"),brewer.push("rgb(217, 217, 217"),brewer.push("rgb(188, 128, 189"),brewer.push("rgb(204, 235, 197"),brewer.push("rgb(255, 237, 111"),igv}(igv||{}),igv=function(igv){igv.GtexFileReader=function(config){this.config=config,this.file=config.url,this.codec=this.file.endsWith(".bin")?createEqtlBinary:createEQTL,this.cache={},this.binary=this.file.endsWith(".bin"),this.compressed=this.file.endsWith(".compressed.bin")},igv.GtexFileReader.prototype.readFeatures=function(chr,bpStart,bpEnd){var self=this;return new Promise(function(fulfill,reject){function loadWithIndex(index,chr,fulfill){var chrIdx=index[chr];if(chrIdx){var blocks=chrIdx.blocks,lastBlock=blocks[blocks.length-1],endPos=lastBlock.startPos+lastBlock.size,len=endPos-blocks[0].startPos,range={start:blocks[0].startPos,size:len};igv.xhr.loadArrayBuffer(file,{range:range,withCredentials:self.config.withCredentials}).then(function(arrayBuffer){if(arrayBuffer){var data=new DataView(arrayBuffer),parser=new igv.BinaryParser(data),featureList=[];for(parser.offset;parser.hasNext();){var feature=createEqtlBinary(parser);featureList.push(feature)}fulfill(featureList)}else fulfill(null); +}).catch(reject)}else fulfill([]);var createEqtlBinary=function(parser){var snp=parser.getString(),chr=parser.getString(),position=parser.getInt(),geneId=parser.getString(),geneName=parser.getString(),pValue=parser.getFloat();return new Eqtl(snp,chr,position,geneId,geneName,pValue)}}function loadIndex(url,fulfill){var genome=igv.browser?igv.browser.genome:null;igv.xhr.loadArrayBuffer(url,{range:{start:0,size:200},withCredentials:self.config.withCredentials}).then(function(arrayBuffer){var data=new DataView(arrayBuffer),parser=new igv.BinaryParser(data),indexPosition=(parser.getInt(),parser.getInt(),parser.getLong()),indexSize=parser.getInt();igv.xhr.loadArrayBuffer(url,{range:{start:indexPosition,size:indexSize},withCredentials:self.config.withCredentials}).then(function(arrayBuffer2){for(var data2=new DataView(arrayBuffer2),index=null,parser=new igv.BinaryParser(data2),index={},nChrs=parser.getInt();nChrs-- >0;){var chr=parser.getString();genome&&(chr=genome.getChromosomeName(chr));var position=parser.getLong(),size=parser.getInt(),blocks=new Array;blocks.push(new Block(position,size)),index[chr]=new ChrIdx(chr,blocks)}fulfill(index)})})}function Eqtl(snp,chr,position,geneId,geneName,pValue){this.snp=snp,this.chr=chr,this.position=position,this.start=position,this.end=position+1,this.geneId=geneId,this.geneName=geneName,this.pValue=pValue}var file=self.file,index=self.index;index?loadWithIndex(index,chr,fulfill):loadIndex(self.file,function(index){self.index=index,loadWithIndex(index,chr,fulfill)}),Eqtl.prototype.description=function(){return"snp: "+this.snp+"
location: "+this.chr+":"+formatNumber(this.position+1)+"
gene: "+this.geneName+"
pValue: "+this.pValue+"
mLogP: "+this.mLogP},Block=function(startPos,size){this.startPos=startPos,this.size=size},ChrIdx=function(chr,blocks){this.chr=chr,this.blocks=blocks}})};var createEQTL=function(tokens){var snp=tokens[0],chr=tokens[1],position=parseInt(tokens[2])-1,geneId=tokens[3],geneName=tokens[4],genePosition=tokens[5],fStat=parseFloat(tokens[6]),pValue=parseFloat(tokens[7]);return new Eqtl(snp,chr,position,geneId,geneName,genePosition,fStat,pValue)},createEqtlBinary=function(parser){var snp=parser.getString(),chr=parser.getString(),position=parser.getInt(),geneId=parser.getString(),geneName=parser.getString(),pValue=parser.getFloat();return new Eqtl(snp,chr,position,geneId,geneName,pValue)};return igv}(igv||{}),igv=function(igv){return igv.GtexReader=function(config){this.config=config,this.url=config.url,this.tissueName=config.tissueName,this.indexed=!0},igv.GtexReader.prototype.readFeatures=function(chr,bpStart,bpEnd){var self=this,queryChr=chr.startsWith("chr")?chr.substr(3):chr,queryStart=Math.floor(bpStart),queryEnd=Math.ceil(bpEnd),queryURL=this.url+"?chromosome="+queryChr+"&start="+queryStart+"&end="+queryEnd+"&tissueName="+this.tissueName;return new Promise(function(fulfill,reject){igv.xhr.loadJson(queryURL,{withCredentials:self.config.withCredentials}).then(function(json){json&&json.singleTissueEqtl?(json.singleTissueEqtl.forEach(function(eqtl){eqtl.chr="chr"+eqtl.chromosome,eqtl.position=eqtl.start,eqtl.start=eqtl.start-1,eqtl.snp=eqtl.snpId,eqtl.geneName=eqtl.geneSymbol,eqtl.geneId=eqtl.gencodeId,eqtl.end=eqtl.start}),fulfill(json.singleTissueEqtl)):fulfill(null)}).catch(reject)})},igv}(igv||{}),igv=function(igv){return igv.ImmVarReader=function(config){this.config=config,this.url=config.url,this.cellConditionId=config.cellConditionId,this.valueThreshold=config.valueThreshold?config.valueThreshold:.05},igv.ImmVarReader.prototype.readFeatures=function(queryChr,queryStart,queryEnd){var self=this,queryURL=this.url+"?chromosome="+queryChr+"&start="+queryStart+"&end="+queryEnd+"&cell_condition_id="+this.cellConditionId;return new Promise(function(fulfill,reject){igv.xhr.loadJson(queryURL,{withCredentials:self.config.withCredentials}).then(function(json){json?(json.eqtls.forEach(function(eqtl){eqtl.chr=eqtl.chromosome,eqtl.start=eqtl.position,eqtl.end=eqtl.position+1}),fulfill(json.eqtls)):fulfill(null)}).catch(function(error){reject(error)})})},igv}(igv||{}),igv=function(igv){const DEFAULT_POPOVER_WINDOW=1e8;return igv.GWASTrack=function(config){this.config=config,this.url=config.url,this.name=config.name,this.trait=config.trait,this.height=config.height||100,this.minLogP=config.minLogP||0,this.maxLogP=config.maxLogP||15,this.background=config.background,this.divider=config.divider||"rgb(225,225,225)",this.dotSize=config.dotSize||4,this.popoverWindow=void 0===config.popoverWindow?DEFAULT_POPOVER_WINDOW:config.popoverWindow,this.description=config.description,this.proxy=config.proxy,this.portalURL=config.portalURL?config.portalURL:window.location.origin,this.variantURL=config.variantURL||"http://www.type2diabetesgenetics.org/variant/variantInfo/",this.traitURL=config.traitURL||"http://www.type2diabetesgenetics.org/trait/traitInfo/";var cs=config.colorScale||{thresholds:[5e-8,5e-4,.5],colors:["rgb(255,50,50)","rgb(251,100,100)","rgb(251,170,170)","rgb(227,238,249)"]};this.pvalue=config.pvalue?config.pvalue:"PVALUE",this.colorScale=new igv.BinnedColorScale(cs),config.format&&"gtexGWAS"===config.format?this.featureSource=new igv.FeatureSource(config):this.featureSource=new igv.T2DVariantSource(config)},igv.GWASTrack.prototype.getFeatures=function(chr,bpStart,bpEnd){return this.featureSource.getFeatures(chr,bpStart,bpEnd)},igv.GWASTrack.prototype.draw=function(options){var track=this,featureList=options.features,ctx=options.context,bpPerPixel=options.bpPerPixel,bpStart=options.bpStart,pixelWidth=options.pixelWidth,pixelHeight=options.pixelHeight,bpEnd=bpStart+pixelWidth*bpPerPixel+1,yScale=(track.maxLogP-track.minLogP)/pixelHeight,enablePopover=bpEnd-bpStartbpEnd)break;pvalue=variant.pvalue||variant[track.pvalue],pvalue&&(color=track.colorScale.getColor(pvalue),val=-Math.log(pvalue)/2.302585092994046,xScale=bpPerPixel,px=Math.round((pos-bpStart)/xScale),py=Math.max(track.dotSize,pixelHeight-Math.round((val-track.minLogP)/yScale)),color&&igv.graphics.setProperties(ctx,{fillStyle:color,strokeStyle:"black"}),igv.graphics.fillCircle(ctx,px,py,track.dotSize),enablePopover&&track.po.push({x:px,y:py,feature:variant}))}}},igv.GWASTrack.prototype.paintAxis=function(ctx,pixelWidth,pixelHeight){var track=this,yScale=(track.maxLogP-track.minLogP)/pixelHeight,font={font:"normal 10px Arial",textAlign:"right",strokeStyle:"black"};igv.graphics.fillRect(ctx,0,0,pixelWidth,pixelHeight,{fillStyle:"rgb(255, 255, 255)"});for(var p=2;p"+dbSnp+"")),data.push(chr+":"+pos.toString()),data.push({name:"p-value",value:pvalue}),p.feature.ZSCORE&&data.push({name:"z-score",value:p.feature.ZSCORE}),dbSnp&&(url=this.traitURL.startsWith("http")?this.traitURL:this.portalURL+"/"+this.traitURL,data.push("see all available statistics for this variant")),i"));else data.push("Popover not available at this resolution.");return data},igv.GWASTrack.prototype.popupDataWithConfiguration=function(config){return this.popupData(config.genomicLocation,config.x,config.y,config.viewport.genomicState.referenceFrame)},igv}(igv||{}),igv=function(igv){function jsonToVariantsV2(json,config){var variants=[];return json.variants.forEach(function(record){var variant={};record.forEach(function(object){for(var property in object)object.hasOwnProperty(property)&&("POS"===property&&(variant.start=object[property]-1),variant[property]=object[property])}),variant.pvalue=variant[config.pvalue][config.dataset][config.trait],variant[config.pvalue]=void 0,variants.push(variant)}),variants}function queryJsonV2(queryChr,queryStart,queryEnd,config){var phenotype=config.trait,pvalue=config.pvalue,dataset=config.dataset,properties={cproperty:["VAR_ID","DBSNP_ID","CHROM","POS"],orderBy:["CHROM"],dproperty:{},pproperty:JSON.parse('{"'+pvalue+'": {"'+dataset+'": ["'+phenotype+'"]}}')},filters=[{dataset_id:"x",phenotype:"x",operand:"CHROM",operator:"EQ",value:queryChr,operand_type:"STRING"},{dataset_id:"x",phenotype:"x",operand:"POS",operator:"GTE",value:queryStart,operand_type:"INTEGER"},{dataset_id:"x",phenotype:"x",operand:"POS",operator:"LTE",value:queryEnd,operand_type:"INTEGER"},{dataset_id:dataset,phenotype:phenotype,operand:pvalue,operator:"LT",value:config.valueThreshold,operand_type:"FLOAT"}],data={passback:"x",entity:"variant",properties:properties,filters:filters};return JSON.stringify(data)}function queryJsonV1(queryChr,queryStart,queryEnd,config){var type=config.url.includes("variant")?VARIANT:TRAIT,pvalue=config.pvalue?config.pvalue:"PVALUE",filters=[{operand:"CHROM",operator:"EQ",value:queryChr,filter_type:"STRING"},{operand:"POS",operator:"GT",value:queryStart,filter_type:"FLOAT"},{operand:"POS",operator:"LT",value:queryEnd,filter_type:"FLOAT"},{operand:pvalue,operator:"LTE",value:config.valueThreshold,filter_type:"FLOAT"}],columns=type===TRAIT?["CHROM","POS","DBSNP_ID","PVALUE","ZSCORE"]:["CHROM","POS",pvalue,"DBSNP_ID"],data={user_group:"ui",filters:filters,columns:columns};return type===TRAIT&&(data.trait=config.trait),config.proxy?"url="+config.url+"&data="+JSON.stringify(data):JSON.stringify(data)}function jsonToVariantsV1(json,config){return json.variants.forEach(function(variant){variant.chr=variant.CHROM,variant.start=variant.POS-1}),json.variants}const VARIANT="VARIANT",TRAIT="TRAIT";igv.T2DVariantSource=function(config){this.config=config,this.url=config.url,this.trait=config.trait,this.dataset=config.dataset,this.pvalue=config.pvalue,void 0===config.valueThreshold&&(config.valueThreshold=.05),void 0===config.dataset?(this.queryJson=config.queryJson||queryJsonV1,this.jsonToVariants=config.jsonToVariants||jsonToVariantsV1):(this.queryJson=config.queryJson||queryJsonV2,this.jsonToVariants=config.jsonToVariants||jsonToVariantsV2)},igv.T2DVariantSource.prototype.getFeatures=function(chr,bpStart,bpEnd){var self=this;return new Promise(function(fulfill,reject){if(self.cache&&self.cache.chr===chr&&self.cache.end>bpEnd&&self.cache.startlastBin&&(this.binIndeces.push(i),lastBin=bin)};return FeatureCache.prototype.featuresBetween=function(start,end){var startBin=Math.max(0,Math.min(Math.floor((start-this.start)/this.binSize)-1,this.binIndeces.length-1)),endBin=Math.max(0,Math.min(Math.floor((end-this.start)/this.binSize),this.binIndeces.length-1));this.binIndeces[startBin],this.binIndeces[endBin];return this.features},igv}(igv||{}),igv=function(igv){function getSites(chrName){var self=this;return new Promise(function(fulfill,reject){var sites=self.fragmentSitesCache[chrName];if(sites)fulfill(sites);else if(self.fragmentSitesIndex){var entry=self.fragmentSitesIndex[chrName];void 0!==entry&&entry.nSites>0&&readSites(entry.position,entry.nSites).then(function(sites){self.fragmentSitesCache[chrName]=sites,fulfill(sites)}).catch(reject)}else fulfill(void 0)})}function parseMatixZoomData(chr1,chr2,chr1Sites,chr2Sites,dis){var unit=dis.getString();dis.getInt();for(var sumCounts=dis.getFloat(),binSize=(dis.getFloat(),dis.getFloat(),dis.getFloat(),dis.getInt()),zoom={unit:unit,binSize:binSize},blockBinCount=dis.getInt(),blockColumnCount=dis.getInt(),zd=new MatrixZoomData(chr1,chr2,zoom,blockBinCount,blockColumnCount,chr1Sites,chr2Sites),nBlocks=dis.getInt(),blockIndex={};nBlocks-- >0;){var blockNumber=dis.getInt(),filePosition=dis.getLong(),blockSizeInBytes=dis.getInt();blockIndex[blockNumber]={filePosition:filePosition,size:blockSizeInBytes}}zd.blockIndexMap=blockIndex;var nBins1=chr1.size/binSize,nBins2=chr2.size/binSize,avgCount=sumCounts/nBins1/nBins2;return zd.averageCount=avgCount,zd}function ExpectedValueFunction(normType,unit,binSize,values,normFactors){this.normType=normType,this.unit=unit,this.binSize=binSize,this.values=values,this.normFactors=normFactors}function NormalizationVector(type,chrIdx,unit,binSize,data){this.type=type,this.chrIdx=chrIdx,this.unit=unit,this.binSize=binSize,this.data=data}function MatrixZoomData(chr1,chr2,zoom,blockBinCount,blockColumnCount,chr1Sites,chr2Sites){this.chr1=chr1,this.chr2=chr2,this.zoom=zoom,this.blockBinCount=blockBinCount,this.blockColumnCount=blockColumnCount,this.chr1Sites=chr1Sites,this.chr2Sites=chr2Sites}function Matrix(chr1,chr2,zoomDataList){var self=this;this.chr1=chr1,this.chr2=chr2,this.bpZoomData=[],this.fragZoomData=[],_.each(zoomDataList,function(zd){"BP"===zd.zoom.unit?self.bpZoomData.push(zd):self.fragZoomData.push(zd)})}var Short_MIN_VALUE=-32768;return igv.HiCReader=function(config){this.path=config.url,this.headPath=config.headURL||this.path,this.config=config,this.fragmentSitesCache={}},igv.HiCReader.prototype.readHeader=function(){var self=this;return new Promise(function(fulfill,reject){igv.xhr.loadArrayBuffer(self.path,igv.buildOptions(self.config,{range:{start:0,size:64e3}})).then(function(data){if(!data)return void fulfill(null);var binaryParser=new igv.BinaryParser(new DataView(data));self.magic=binaryParser.getString(),self.version=binaryParser.getInt(),self.masterIndexPos=binaryParser.getLong(),self.genomeId=binaryParser.getString(),self.attributes={};for(var nAttributes=binaryParser.getInt();nAttributes-- >0;)self.attributes[binaryParser.getString()]=binaryParser.getString();self.chromosomes=[];for(var nChrs=binaryParser.getInt();nChrs-- >0;)self.chromosomes.push({name:binaryParser.getString(),size:binaryParser.getInt()});self.bpResolutions=[];for(var nBpResolutions=binaryParser.getInt();nBpResolutions-- >0;)self.bpResolutions.push(binaryParser.getInt());self.fragResolutions=[];for(var nFragResolutions=binaryParser.getInt();nFragResolutions-- >0;)self.fragResolutions.push(binaryParser.getInt());if(nFragResolutions>0){self.sites=[];for(var nSites=binaryParser.getInt();nSites-- >0;)self.sites.push(binaryParser.getInt())}fulfill(self)}).catch(function(error){reject(error)})})},igv.HiCReader.prototype.readFooter=function(key){var self=this,range={start:this.masterIndexPos,size:1e8};return new Promise(function(fulfill,reject){igv.xhr.loadArrayBuffer(self.path,igv.buildOptions(self.config,{range:range})).then(function(data){var key,pos,size;if(!data)return void fulfill(null);var binaryParser=new igv.BinaryParser(new DataView(data));binaryParser.getInt();self.masterIndex={};for(var nEntries=binaryParser.getInt();nEntries-- >0;)key=binaryParser.getString(),pos=binaryParser.getLong(),size=binaryParser.getInt(),self.masterIndex[key]={start:pos,size:size};for(self.expectedValueVectors={},nEntries=binaryParser.getInt();nEntries-- >0;){for(var type="NONE",unit=binaryParser.getString(),binSize=binaryParser.getInt(),nValues=binaryParser.getInt(),values=[];nValues-- >0;)values.push(binaryParser.getDouble());for(var nChrScaleFactors=binaryParser.getInt(),normFactors={};nChrScaleFactors-- >0;)normFactors[binaryParser.getInt()]=binaryParser.getDouble();var key=unit+"_"+binSize+"_"+type;self.expectedValueVectors[key]=new ExpectedValueFunction(type,unit,binSize,values,normFactors)}if(self.version>=6){for(self.normalizedExpectedValueVectors={},nEntries=binaryParser.getInt();nEntries-- >0;){for(var type=binaryParser.getString(),unit=binaryParser.getString(),binSize=binaryParser.getInt(),nValues=binaryParser.getInt(),values=[];nValues-- >0;)values.push(binaryParser.getDouble());for(var nChrScaleFactors=binaryParser.getInt(),normFactors={};nChrScaleFactors-- >0;)normFactors[binaryParser.getInt()]=binaryParser.getDouble();var key=unit+"_"+binSize+"_"+type;self.normalizedExpectedValueVectors[key]=new ExpectedValueFunction(type,unit,binSize,values,normFactors)}for(self.normVectorIndex={},self.normalizationTypes=[],nEntries=binaryParser.getInt();nEntries-- >0;){type=binaryParser.getString();var chrIdx=binaryParser.getInt();unit=binaryParser.getString(),binSize=binaryParser.getInt();var filePosition=binaryParser.getLong(),sizeInBytes=binaryParser.getInt();key=NormalizationVector.getKey(type,chrIdx,unit.binSize),_.contains(self.normalizationTypes,type)===!1&&self.normalizationTypes.push(type),self.normVectorIndex[key]={filePosition:filePosition,sizeInByes:sizeInBytes}}}fulfill(self)}).catch(function(error){reject(error)})})},igv.HiCReader.prototype.readMatrix=function(key){var self=this,idx=self.masterIndex[key];return null==idx&&fulfill(void 0),new Promise(function(fulfill,reject){igv.xhr.loadArrayBuffer(self.path,igv.buildOptions(self.config,{range:{start:idx.start,size:idx.size}})).then(function(data){if(!data)return void fulfill(null);var dis=new igv.BinaryParser(new DataView(data)),c1=dis.getInt(),c2=dis.getInt(),chr1=self.chromosomes[c1],chr2=self.chromosomes[c2],nResolutions=dis.getInt(),zdList=[],p1=getSites.call(self,chr1.name),p2=getSites.call(self,chr2.name);Promise.all([p1,p2]).then(function(results){for(var sites1=results[0],sites2=results[1];nResolutions-- >0;){var zd=parseMatixZoomData(chr1,chr2,sites1,sites2,dis);zdList.push(zd)}fulfill(new Matrix(c1,c2,zdList))}).catch(function(err){reject(err)})}).catch(reject)})},igv.HiCReader.prototype.readBlock=function(blockNumber,zd){var i,j,self=this,idx=null,blockIndex=zd.blockIndexMap;if(null!=blockIndex)var idx=blockIndex[blockNumber];return null==idx?Promise.resolve(new Block):new Promise(function(fulfill,reject){igv.xhr.loadArrayBuffer(self.path,igv.buildOptions(self.config,{range:{start:idx.filePosition,size:idx.size}})).then(function(data){if(!data)return void fulfill(null);var inflate=new Zlib.Inflate(new Uint8Array(data)),plain=inflate.decompress();data=plain.buffer;var parser=new igv.BinaryParser(new DataView(data)),nRecords=parser.getInt(),records=[];if(self.version<7)for(i=0;i
')),this.buildPanels($content_header)},igv.IdeoPanel.setWidth=function($ideogram,width){var percentage;$ideogram.width(width),percentage=$ideogram.width()/$ideogram.outerWidth(),$ideogram.width(Math.floor(percentage*width))},igv.IdeoPanel.prototype.buildPanels=function($content_header){this.panels=_.map(igv.browser.genomicStateList,function(genomicState){function addBorders($ideogram,locusIndex,lociCount){1!==lociCount&&locusIndex!==lociCount-1&&$ideogram.addClass("igv-ideogram-content-div-border-right")}var viewportContainerWidth=igv.browser.viewportContainerWidth(),panel={};return panel.genomicState=genomicState,panel.$ideogram=$('
'),addBorders(panel.$ideogram,genomicState.locusIndex,genomicState.locusCount),igv.IdeoPanel.setWidth(panel.$ideogram,viewportContainerWidth/genomicState.locusCount),$content_header.append(panel.$ideogram),panel.$canvas=$(""),panel.$ideogram.append(panel.$canvas),panel.$canvas.attr("width",panel.$ideogram.width()),panel.$canvas.attr("height",panel.$ideogram.height()),panel.ctx=panel.$canvas.get(0).getContext("2d"),panel.ideograms={},panel.$ideogram.on("click",function(e){igv.IdeoPanel.clickHandler(panel,e)}),panel})},igv.IdeoPanel.$empty=function($content_header){var $a=$content_header.find(".igv-ideogram-content-div");$a.remove()},igv.IdeoPanel.prototype.panelWithLocusIndex=function(locusIndex){var panels=_.filter(this.panels,function(panel){return locusIndex===panel.genomicState.locusIndex});return _.first(panels)},igv.IdeoPanel.prototype.resize=function(){var viewportContainerWidth=igv.browser.syntheticViewportContainerWidth();_.each(this.panels,function(panel,index){var genomicState=igv.browser.genomicStateList[index];panel.$ideogram.width(Math.floor(viewportContainerWidth/genomicState.locusCount)),panel.$canvas.attr("width",panel.$ideogram.width()),panel.ideograms={}}),this.repaint()},igv.IdeoPanel.prototype.repaint=function(){_.each(this.panels,function(panel){igv.IdeoPanel.repaintPanel(panel)})},igv.IdeoPanel.repaintPanel=function(panel){function drawIdeogram(bufferCtx,ideogramWidth,ideogramHeight){var shim=1,ideogramTop=0;if(igv.browser.genome){var cytobands=igv.browser.genome.getCytobands(referenceFrame.chrName);if(cytobands){var center=ideogramTop+ideogramHeight/2,xC=[],yC=[],len=cytobands.length;if(0==len)return;for(var chrLength=cytobands[len-1].end,scale=ideogramWidth/chrLength,lastPX=-1,i=0;ilastPX&&("c"==cytoband.type?("p"==cytoband.name.charAt(0)?(xC[0]=start,yC[0]=ideogramHeight+ideogramTop,xC[1]=start,yC[1]=ideogramTop,xC[2]=end,yC[2]=center):(xC[0]=end,yC[0]=ideogramHeight+ideogramTop,xC[1]=end,yC[1]=ideogramTop,xC[2]=start,yC[2]=center),bufferCtx.fillStyle="rgb(150, 0, 0)",bufferCtx.strokeStyle="rgb(150, 0, 0)",bufferCtx.polygon(xC,yC,1,0)):(bufferCtx.fillStyle=getCytobandColor(stainColors,cytoband),bufferCtx.fillRect(start,shim+ideogramTop,end-start,ideogramHeight-2*shim)))}}bufferCtx.strokeStyle="black",bufferCtx.roundRect(shim,shim+ideogramTop,ideogramWidth-2*shim,ideogramHeight-2*shim,(ideogramHeight-2*shim)/2,0,1),lastPX=end}}function getCytobandColor(colors,data){if("c"==data.type)return"rgb(150, 10, 10)";var stain=data.stain,shade=230;"p"==data.type&&(shade=Math.floor(230-stain/100*230));var c=colors[shade];return null==c&&(c="rgb("+shade+","+shade+","+shade+")",colors[shade]=c),c}try{var y,image,chromosome,widthPercentage,xPercentage,canvasWidth,canvasHeight,width,widthBP,x,xBP,referenceFrame,stainColors,xx,yy,ww,hh;if(referenceFrame=panel.genomicState.referenceFrame,!(igv.browser.genome&&referenceFrame&&igv.browser.genome.getChromosome(referenceFrame.chrName)))return;if(stainColors=[],canvasWidth=panel.$canvas.width(),canvasHeight=panel.$canvas.height(),panel.ctx.clearRect(0,0,canvasWidth,canvasHeight),"all"===referenceFrame.chrName.toLowerCase())return;image=panel.ideograms[referenceFrame.chrName],void 0===image&&(image=document.createElement("canvas"),image.width=canvasWidth,image.height=canvasHeight,drawIdeogram(image.getContext("2d"),image.width,image.height),panel.ideograms[referenceFrame.chrName]=image),y=0,panel.ctx.drawImage(image,0,0),chromosome=igv.browser.genome.getChromosome(referenceFrame.chrName),widthBP=Math.round(referenceFrame.bpPerPixel*panel.$ideogram.width()),xBP=referenceFrame.start,widthBP1&&(xPercentage=1-chrCoveragePercentage/2),ss=Math.round((xPercentage-chrCoveragePercentage/2)*chr.bpLength),ee=Math.round((xPercentage+chrCoveragePercentage/2)*chr.bpLength),referenceFrame.start=Math.round((xPercentage-chrCoveragePercentage/2)*chr.bpLength),referenceFrame.bpPerPixel=(ee-ss)/panel.$ideogram.width(),igv.browser.updateLocusSearchWithGenomicState(genomicState),igv.browser.repaintWithLocusIndex(panel.genomicState.locusIndex)},igv}(igv||{}),igv=function(igv){function doPath(ctx,x,y){var i,len=x.length;for(i=0;i=.5;v-=.1)for(var r,h=0;h<1;h+=1/28)r="rgb("+igv.Color.hsvToRgb(h,s,v).join(",")+")",rgbs.push(r);rgbs.forEach(function(rgb){var $swatch;$swatch=igv.colorSwatch(rgb),$genericContainer.append($swatch),$swatch.click(function(){colorHandler(rgb)})})},igv.colorSwatch=function(rgbString){var $swatch,$fa;return $swatch=$("
",{class:"igv-color-swatch"}),$fa=$("",{class:"fa fa-square fa-lg","aria-hidden":"true"}),$swatch.append($fa),$fa.css({color:rgbString}),$swatch},igv.Color={rgbToHex:function(rgb){return rgb=rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i),rgb&&4===rgb.length?"#"+("0"+parseInt(rgb[1],10).toString(16)).slice(-2)+("0"+parseInt(rgb[2],10).toString(16)).slice(-2)+("0"+parseInt(rgb[3],10).toString(16)).slice(-2):""; +},hexToRgb:function(hex){var cooked=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);if(null!==cooked)return"rgb("+parseInt(cooked[1],16)+","+parseInt(cooked[2],16)+","+parseInt(cooked[3],16)+")"},hsvToRgb:function(h,s,v){var r,g,b,i=Math.floor(6*h),f=6*h-i,p=v*(1-s),q=v*(1-f*s),t=v*(1-(1-f)*s);switch(i%6){case 0:r=v,g=t,b=p;break;case 1:r=q,g=v,b=p;break;case 2:r=p,g=v,b=t;break;case 3:r=p,g=q,b=v;break;case 4:r=t,g=p,b=v;break;case 5:r=v,g=p,b=q}return[Math.floor(255*r),Math.floor(255*g),Math.floor(255*b)]},hslToRgb:function(h,s,l){function hue2rgb(p,q,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?p+6*(q-p)*t:t<.5?q:t<2/3?p+(q-p)*(2/3-t)*6:p}var r,g,b;if(0===s)r=g=b=l;else{var q=l<.5?l*(1+s):l+s-l*s,p=2*l-q;r=hue2rgb(p,q,h+1/3),g=hue2rgb(p,q,h),b=hue2rgb(p,q,h-1/3)}return[255*r,255*g,255*b]},rgbaColor:function(r,g,b,a){return r=igv.Math.clamp(r,0,255),g=igv.Math.clamp(g,0,255),b=igv.Math.clamp(b,0,255),a=igv.Math.clamp(a,0,1),"rgba("+r+","+g+","+b+","+a+")"},rgbColor:function(r,g,b){return r=igv.Math.clamp(r,0,255),g=igv.Math.clamp(g,0,255),b=igv.Math.clamp(b,0,255),"rgb("+r+","+g+","+b+")"},greyScale:function(value){var grey=igv.Math.clamp(value,0,255);return"rgb("+grey+","+grey+","+grey+")"},randomGrey:function(min,max){min=igv.Math.clamp(min,0,255),max=igv.Math.clamp(max,0,255);var g=Math.round(igv.random(min,max)).toString(10);return"rgb("+g+","+g+","+g+")"},randomRGB:function(min,max){min=igv.Math.clamp(min,0,255),max=igv.Math.clamp(max,0,255);var r=Math.round(igv.random(min,max)).toString(10),g=Math.round(igv.random(min,max)).toString(10),b=Math.round(igv.random(min,max)).toString(10);return"rgb("+r+","+g+","+b+")"},randomRGBConstantAlpha:function(min,max,alpha){min=igv.Math.clamp(min,0,255),max=igv.Math.clamp(max,0,255);var r=Math.round(igv.random(min,max)).toString(10),g=Math.round(igv.random(min,max)).toString(10),b=Math.round(igv.random(min,max)).toString(10);return"rgba("+r+","+g+","+b+","+alpha+")"},addAlpha:function(color,alpha){var isHex=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(color);return color.startsWith("rgba")?color:(isHex&&(color=igv.Color.hexToRgb(color)),color.startsWith("rgb")?color.replace("rgb","rgba").replace(")",", "+alpha+")"):(console.log(color+" is not an rgb style string"),color))},getCompositeColor:function(dest,src,alpha){var r=Math.floor(alpha*src[0]+(1-alpha)*dest[0]),g=Math.floor(alpha*src[1]+(1-alpha)*dest[1]),b=Math.floor(alpha*src[2]+(1-alpha)*dest[2]);return"rgb("+r+","+g+","+b+")"},createColorString:function(token){return token.includes(",")?token.startsWith("rgb")?token:"rgb("+token+")":void 0}},igv.nucleotideColorComponents={A:[0,200,0],C:[0,0,200],T:[255,0,0],G:[209,113,5],a:[0,200,0],c:[0,0,200],t:[255,0,0],g:[209,113,5]},igv.nucleotideColors={A:"rgb( 0, 200, 0)",C:"rgb( 0, 0, 200)",T:"rgb(255, 0, 0)",G:"rgb(209, 113, 5)",a:"rgb( 0, 200, 0)",c:"rgb( 0, 0, 200)",t:"rgb(255, 0, 0)",g:"rgb(209, 113, 5)"},igv.BinnedColorScale=function(cs){this.thresholds=cs.thresholds,this.colors=cs.colors},igv.BinnedColorScale.prototype.getColor=function(value){var i,len=this.thresholds.length;for(i=0;i=scale.high?this.highColor:(frac=(value-scale.low)/this.diff,r=Math.floor(scale.lowR+frac*(scale.highR-scale.lowR)),g=Math.floor(scale.lowG+frac*(scale.highG-scale.lowG)),b=Math.floor(scale.lowB+frac*(scale.highB-scale.lowB)),"rgb("+r+","+g+","+b+")")};var colorPalettes={Set1:["rgb(228,26,28)","rgb(55,126,184)","rgb(77,175,74)","rgb(166,86,40)","rgb(152,78,163)","rgb(255,127,0)","rgb(247,129,191)","rgb(153,153,153)","rgb(255,255,51)"],Dark2:["rgb(27,158,119)","rgb(217,95,2)","rgb(117,112,179)","rgb(231,41,138)","rgb(102,166,30)","rgb(230,171,2)","rgb(166,118,29)","rgb(102,102,102)"],Set2:["rgb(102, 194,165)","rgb(252,141,98)","rgb(141,160,203)","rgb(231,138,195)","rgb(166,216,84)","rgb(255,217,47)","rgb(229,196,148)","rgb(179,179,179)"],Set3:["rgb(141,211,199)","rgb(255,255,179)","rgb(190,186,218)","rgb(251,128,114)","rgb(128,177,211)","rgb(253,180,98)","rgb(179,222,105)","rgb(252,205,229)","rgb(217,217,217)","rgb(188,128,189)","rgb(204,235,197)","rgb(255,237,111)"],Pastel1:["rgb(251,180,174)","rgb(179,205,227)","rgb(204,235,197)","rgb(222,203,228)","rgb(254,217,166)","rgb(255,255,204)","rgb(229,216,189)","rgb(253,218,236)"],Pastel2:["rgb(173,226,207)","rgb(253,205,172)","rgb(203,213,232)","rgb(244,202,228)","rgb(230,245,201)","rgb(255,242,174)","rgb(243,225,206)"],Accent:["rgb(127,201,127)","rgb(190,174,212)","rgb(253,192,134)","rgb(255,255,153)","rgb(56,108,176)","rgb(240,2,127)","rgb(191,91,23)"]};return igv.PaletteColorTable=function(palette){this.colors=colorPalettes[palette],Array.isArray(this.colors)||(this.colors=[]),this.colorTable={},this.nextIdx=0,this.colorGenerator=new RColor},igv.PaletteColorTable.prototype.getColor=function(key){return this.colorTable.hasOwnProperty(key)||(this.nextIdxthis.hexwidth?str:new Array(this.hexwidth-str.length+1).join("0")+str},RColor.prototype.get=function(saturation,value){this.hue+=this.goldenRatio,this.hue%=1,"number"!=typeof saturation&&(saturation=.5),"number"!=typeof value&&(value=.95);var rgb=this.hsvToRgb(this.hue,saturation,value);return"#"+this.padHex(rgb[0].toString(16))+this.padHex(rgb[1].toString(16))+this.padHex(rgb[2].toString(16))},igv}(igv||{}),igv=function(igv){function setTrackOrder(conf){var trackOrder=1;conf.tracks&&conf.tracks.forEach(function(track){void 0===track.order&&(track.order=trackOrder++)})}function setReferenceConfiguration(conf){function expandGenome(genomeId){var reference=igv.Genome.KnownGenomes[genomeId];return reference||igv.presentAlert("Uknown genome id: "+genomeId),reference}if(conf.genome?conf.reference=expandGenome(conf.genome):conf.fastaURL?conf.reference={fastaURL:conf.fastaURL,cytobandURL:conf.cytobandURL}:conf.reference&&void 0!==conf.reference.id&&void 0===conf.reference.fastaURL&&(conf.reference=expandGenome(conf.reference.id)),!conf.reference||!conf.reference.fastaURL)throw igv.presentAlert("Fatal error: reference must be defined"),new Error("Fatal error: reference must be defined")}function setControls(browser,conf){var controlDiv;conf.showCommandBar!==!1&&conf.showControls!==!1&&(controlDiv=conf.createControls?conf.createControls(browser,conf):createStandardControls(browser,conf),browser.$root.append($(controlDiv)))}function createStandardControls(browser,config){var $igvLogo,$controls,$karyo,$navigation,$searchContainer,$faSearch;return $controls=$('
'),config.showNavigation&&($navigation=$('
'),$controls.append($navigation),$igvLogo=$('