{"version":3,"file":"vega-embed.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/selection/select.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-selection/src/constant.js","../node_modules/d3-selection/src/selection/data.js","../node_modules/d3-selection/src/selection/exit.js","../node_modules/d3-selection/src/selection/merge.js","../node_modules/d3-selection/src/selection/order.js","../node_modules/d3-selection/src/selection/sort.js","../node_modules/d3-selection/src/selection/call.js","../node_modules/d3-selection/src/selection/nodes.js","../node_modules/d3-selection/src/selection/node.js","../node_modules/d3-selection/src/selection/size.js","../node_modules/d3-selection/src/selection/empty.js","../node_modules/d3-selection/src/selection/each.js","../node_modules/d3-selection/src/selection/attr.js","../node_modules/d3-selection/src/window.js","../node_modules/d3-selection/src/selection/style.js","../node_modules/d3-selection/src/selection/property.js","../node_modules/d3-selection/src/selection/classed.js","../node_modules/d3-selection/src/selection/text.js","../node_modules/d3-selection/src/selection/html.js","../node_modules/d3-selection/src/selection/raise.js","../node_modules/d3-selection/src/selection/lower.js","../node_modules/d3-selection/src/selection/append.js","../node_modules/d3-selection/src/selection/insert.js","../node_modules/d3-selection/src/selection/remove.js","../node_modules/d3-selection/src/selection/clone.js","../node_modules/d3-selection/src/selection/datum.js","../node_modules/d3-selection/src/selection/on.js","../node_modules/d3-selection/src/selection/dispatch.js","../node_modules/d3-selection/src/selection/index.js","../node_modules/d3-selection/src/select.js","../node_modules/json-stringify-pretty-compact/index.js","../node_modules/semver/semver.js","../node_modules/vega-schema-url-parser/index.js","post.js","embed.js","index.js"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","var matcher = function(selector) {\n return function() {\n return this.matches(selector);\n };\n};\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!element.matches) {\n var vendorMatches = element.webkitMatchesSelector\n || element.msMatchesSelector\n || element.mozMatchesSelector\n || element.oMatchesSelector;\n matcher = function(selector) {\n return function() {\n return vendorMatches.call(this, selector);\n };\n };\n }\n}\n\nexport default matcher;\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","function stringify (obj, options) {\n options = options || {}\n var indent = JSON.stringify([1], null, get(options, 'indent', 2)).slice(2, -3)\n var addMargin = get(options, 'margins', false)\n var maxLength = (indent === '' ? Infinity : get(options, 'maxLength', 80))\n\n return (function _stringify (obj, currentIndent, reserved) {\n if (obj && typeof obj.toJSON === 'function') {\n obj = obj.toJSON()\n }\n\n var string = JSON.stringify(obj)\n\n if (string === undefined) {\n return string\n }\n\n var length = maxLength - currentIndent.length - reserved\n\n if (string.length <= length) {\n var prettified = prettify(string, addMargin)\n if (prettified.length <= length) {\n return prettified\n }\n }\n\n if (typeof obj === 'object' && obj !== null) {\n var nextIndent = currentIndent + indent\n var items = []\n var delimiters\n var comma = function (array, index) {\n return (index === array.length - 1 ? 0 : 1)\n }\n\n if (Array.isArray(obj)) {\n for (var index = 0; index < obj.length; index++) {\n items.push(\n _stringify(obj[index], nextIndent, comma(obj, index)) || 'null'\n )\n }\n delimiters = '[]'\n } else {\n Object.keys(obj).forEach(function (key, index, array) {\n var keyPart = JSON.stringify(key) + ': '\n var value = _stringify(obj[key], nextIndent,\n keyPart.length + comma(array, index))\n if (value !== undefined) {\n items.push(keyPart + value)\n }\n })\n delimiters = '{}'\n }\n\n if (items.length > 0) {\n return [\n delimiters[0],\n indent + items.join(',\\n' + nextIndent),\n delimiters[1]\n ].join('\\n' + currentIndent)\n }\n }\n\n return string\n }(obj, '', 0))\n}\n\n// Note: This regex matches even invalid JSON strings, but since we’re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don’t care since the output would be invalid anyway).\nvar stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,\\][}{]/g\n\nfunction prettify (string, addMargin) {\n var m = addMargin ? ' ' : ''\n var tokens = {\n '{': '{' + m,\n '[': '[' + m,\n '}': m + '}',\n ']': m + ']',\n ',': ', ',\n ':': ': '\n }\n return string.replace(stringOrChar, function (match, string) {\n return string ? match : tokens[match]\n })\n}\n\nfunction get (options, name, defaultValue) {\n return (name in options ? options[name] : defaultValue)\n}\n\nmodule.exports = stringify\n","exports = module.exports = SemVer;\n\n// The debug function is excluded entirely from the minified version.\n/* nomin */ var debug;\n/* nomin */ if (typeof process === 'object' &&\n /* nomin */ process.env &&\n /* nomin */ process.env.NODE_DEBUG &&\n /* nomin */ /\\bsemver\\b/i.test(process.env.NODE_DEBUG))\n /* nomin */ debug = function() {\n /* nomin */ var args = Array.prototype.slice.call(arguments, 0);\n /* nomin */ args.unshift('SEMVER');\n /* nomin */ console.log.apply(console, args);\n /* nomin */ };\n/* nomin */ else\n /* nomin */ debug = function() {};\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0';\n\nvar MAX_LENGTH = 256;\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16;\n\n// The actual regexps go on exports.re\nvar re = exports.re = [];\nvar src = exports.src = [];\nvar R = 0;\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\nvar NUMERICIDENTIFIER = R++;\nsrc[NUMERICIDENTIFIER] = '0|[1-9]\\\\d*';\nvar NUMERICIDENTIFIERLOOSE = R++;\nsrc[NUMERICIDENTIFIERLOOSE] = '[0-9]+';\n\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\nvar NONNUMERICIDENTIFIER = R++;\nsrc[NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*';\n\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\nvar MAINVERSION = R++;\nsrc[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')';\n\nvar MAINVERSIONLOOSE = R++;\nsrc[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')';\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\nvar PRERELEASEIDENTIFIER = R++;\nsrc[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +\n '|' + src[NONNUMERICIDENTIFIER] + ')';\n\nvar PRERELEASEIDENTIFIERLOOSE = R++;\nsrc[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +\n '|' + src[NONNUMERICIDENTIFIER] + ')';\n\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\nvar PRERELEASE = R++;\nsrc[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIER] + ')*))';\n\nvar PRERELEASELOOSE = R++;\nsrc[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))';\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\nvar BUILDIDENTIFIER = R++;\nsrc[BUILDIDENTIFIER] = '[0-9A-Za-z-]+';\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\nvar BUILD = R++;\nsrc[BUILD] = '(?:\\\\+(' + src[BUILDIDENTIFIER] +\n '(?:\\\\.' + src[BUILDIDENTIFIER] + ')*))';\n\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\nvar FULL = R++;\nvar FULLPLAIN = 'v?' + src[MAINVERSION] +\n src[PRERELEASE] + '?' +\n src[BUILD] + '?';\n\nsrc[FULL] = '^' + FULLPLAIN + '$';\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\nvar LOOSEPLAIN = '[v=\\\\s]*' + src[MAINVERSIONLOOSE] +\n src[PRERELEASELOOSE] + '?' +\n src[BUILD] + '?';\n\nvar LOOSE = R++;\nsrc[LOOSE] = '^' + LOOSEPLAIN + '$';\n\nvar GTLT = R++;\nsrc[GTLT] = '((?:<|>)?=?)';\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\nvar XRANGEIDENTIFIERLOOSE = R++;\nsrc[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*';\nvar XRANGEIDENTIFIER = R++;\nsrc[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\\\*';\n\nvar XRANGEPLAIN = R++;\nsrc[XRANGEPLAIN] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:' + src[PRERELEASE] + ')?' +\n src[BUILD] + '?' +\n ')?)?';\n\nvar XRANGEPLAINLOOSE = R++;\nsrc[XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:' + src[PRERELEASELOOSE] + ')?' +\n src[BUILD] + '?' +\n ')?)?';\n\nvar XRANGE = R++;\nsrc[XRANGE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAIN] + '$';\nvar XRANGELOOSE = R++;\nsrc[XRANGELOOSE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAINLOOSE] + '$';\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\nvar COERCE = R++;\nsrc[COERCE] = '(?:^|[^\\\\d])' +\n '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:$|[^\\\\d])';\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\nvar LONETILDE = R++;\nsrc[LONETILDE] = '(?:~>?)';\n\nvar TILDETRIM = R++;\nsrc[TILDETRIM] = '(\\\\s*)' + src[LONETILDE] + '\\\\s+';\nre[TILDETRIM] = new RegExp(src[TILDETRIM], 'g');\nvar tildeTrimReplace = '$1~';\n\nvar TILDE = R++;\nsrc[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$';\nvar TILDELOOSE = R++;\nsrc[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$';\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\nvar LONECARET = R++;\nsrc[LONECARET] = '(?:\\\\^)';\n\nvar CARETTRIM = R++;\nsrc[CARETTRIM] = '(\\\\s*)' + src[LONECARET] + '\\\\s+';\nre[CARETTRIM] = new RegExp(src[CARETTRIM], 'g');\nvar caretTrimReplace = '$1^';\n\nvar CARET = R++;\nsrc[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$';\nvar CARETLOOSE = R++;\nsrc[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$';\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\nvar COMPARATORLOOSE = R++;\nsrc[COMPARATORLOOSE] = '^' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + ')$|^$';\nvar COMPARATOR = R++;\nsrc[COMPARATOR] = '^' + src[GTLT] + '\\\\s*(' + FULLPLAIN + ')$|^$';\n\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\nvar COMPARATORTRIM = R++;\nsrc[COMPARATORTRIM] = '(\\\\s*)' + src[GTLT] +\n '\\\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')';\n\n// this one has to use the /g flag\nre[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g');\nvar comparatorTrimReplace = '$1$2$3';\n\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\nvar HYPHENRANGE = R++;\nsrc[HYPHENRANGE] = '^\\\\s*(' + src[XRANGEPLAIN] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAIN] + ')' +\n '\\\\s*$';\n\nvar HYPHENRANGELOOSE = R++;\nsrc[HYPHENRANGELOOSE] = '^\\\\s*(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s*$';\n\n// Star ranges basically just allow anything at all.\nvar STAR = R++;\nsrc[STAR] = '(<|>)?=?\\\\s*\\\\*';\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n debug(i, src[i]);\n if (!re[i])\n re[i] = new RegExp(src[i]);\n}\n\nexports.parse = parse;\nfunction parse(version, loose) {\n if (version instanceof SemVer)\n return version;\n\n if (typeof version !== 'string')\n return null;\n\n if (version.length > MAX_LENGTH)\n return null;\n\n var r = loose ? re[LOOSE] : re[FULL];\n if (!r.test(version))\n return null;\n\n try {\n return new SemVer(version, loose);\n } catch (er) {\n return null;\n }\n}\n\nexports.valid = valid;\nfunction valid(version, loose) {\n var v = parse(version, loose);\n return v ? v.version : null;\n}\n\n\nexports.clean = clean;\nfunction clean(version, loose) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), loose);\n return s ? s.version : null;\n}\n\nexports.SemVer = SemVer;\n\nfunction SemVer(version, loose) {\n if (version instanceof SemVer) {\n if (version.loose === loose)\n return version;\n else\n version = version.version;\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version);\n }\n\n if (version.length > MAX_LENGTH)\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')\n\n if (!(this instanceof SemVer))\n return new SemVer(version, loose);\n\n debug('SemVer', version, loose);\n this.loose = loose;\n var m = version.trim().match(loose ? re[LOOSE] : re[FULL]);\n\n if (!m)\n throw new TypeError('Invalid Version: ' + version);\n\n this.raw = version;\n\n // these are actually numbers\n this.major = +m[1];\n this.minor = +m[2];\n this.patch = +m[3];\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0)\n throw new TypeError('Invalid major version')\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0)\n throw new TypeError('Invalid minor version')\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0)\n throw new TypeError('Invalid patch version')\n\n // numberify any prerelease numeric ids\n if (!m[4])\n this.prerelease = [];\n else\n this.prerelease = m[4].split('.').map(function(id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER)\n return num;\n }\n return id;\n });\n\n this.build = m[5] ? m[5].split('.') : [];\n this.format();\n}\n\nSemVer.prototype.format = function() {\n this.version = this.major + '.' + this.minor + '.' + this.patch;\n if (this.prerelease.length)\n this.version += '-' + this.prerelease.join('.');\n return this.version;\n};\n\nSemVer.prototype.toString = function() {\n return this.version;\n};\n\nSemVer.prototype.compare = function(other) {\n debug('SemVer.compare', this.version, this.loose, other);\n if (!(other instanceof SemVer))\n other = new SemVer(other, this.loose);\n\n return this.compareMain(other) || this.comparePre(other);\n};\n\nSemVer.prototype.compareMain = function(other) {\n if (!(other instanceof SemVer))\n other = new SemVer(other, this.loose);\n\n return compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch);\n};\n\nSemVer.prototype.comparePre = function(other) {\n if (!(other instanceof SemVer))\n other = new SemVer(other, this.loose);\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length)\n return -1;\n else if (!this.prerelease.length && other.prerelease.length)\n return 1;\n else if (!this.prerelease.length && !other.prerelease.length)\n return 0;\n\n var i = 0;\n do {\n var a = this.prerelease[i];\n var b = other.prerelease[i];\n debug('prerelease compare', i, a, b);\n if (a === undefined && b === undefined)\n return 0;\n else if (b === undefined)\n return 1;\n else if (a === undefined)\n return -1;\n else if (a === b)\n continue;\n else\n return compareIdentifiers(a, b);\n } while (++i);\n};\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function(release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc('pre', identifier);\n break;\n case 'preminor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc('pre', identifier);\n break;\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0;\n this.inc('patch', identifier);\n this.inc('pre', identifier);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0)\n this.inc('patch', identifier);\n this.inc('pre', identifier);\n break;\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0)\n this.major++;\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0)\n this.minor++;\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0)\n this.patch++;\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0)\n this.prerelease = [0];\n else {\n var i = this.prerelease.length;\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++;\n i = -2;\n }\n }\n if (i === -1) // didn't increment anything\n this.prerelease.push(0);\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1]))\n this.prerelease = [identifier, 0];\n } else\n this.prerelease = [identifier, 0];\n }\n break;\n\n default:\n throw new Error('invalid increment argument: ' + release);\n }\n this.format();\n this.raw = this.version;\n return this;\n};\n\nexports.inc = inc;\nfunction inc(version, release, loose, identifier) {\n if (typeof(loose) === 'string') {\n identifier = loose;\n loose = undefined;\n }\n\n try {\n return new SemVer(version, loose).inc(release, identifier).version;\n } catch (er) {\n return null;\n }\n}\n\nexports.diff = diff;\nfunction diff(version1, version2) {\n if (eq(version1, version2)) {\n return null;\n } else {\n var v1 = parse(version1);\n var v2 = parse(version2);\n if (v1.prerelease.length || v2.prerelease.length) {\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return 'pre'+key;\n }\n }\n }\n return 'prerelease';\n }\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return key;\n }\n }\n }\n }\n}\n\nexports.compareIdentifiers = compareIdentifiers;\n\nvar numeric = /^[0-9]+$/;\nfunction compareIdentifiers(a, b) {\n var anum = numeric.test(a);\n var bnum = numeric.test(b);\n\n if (anum && bnum) {\n a = +a;\n b = +b;\n }\n\n return (anum && !bnum) ? -1 :\n (bnum && !anum) ? 1 :\n a < b ? -1 :\n a > b ? 1 :\n 0;\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers;\nfunction rcompareIdentifiers(a, b) {\n return compareIdentifiers(b, a);\n}\n\nexports.major = major;\nfunction major(a, loose) {\n return new SemVer(a, loose).major;\n}\n\nexports.minor = minor;\nfunction minor(a, loose) {\n return new SemVer(a, loose).minor;\n}\n\nexports.patch = patch;\nfunction patch(a, loose) {\n return new SemVer(a, loose).patch;\n}\n\nexports.compare = compare;\nfunction compare(a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose));\n}\n\nexports.compareLoose = compareLoose;\nfunction compareLoose(a, b) {\n return compare(a, b, true);\n}\n\nexports.rcompare = rcompare;\nfunction rcompare(a, b, loose) {\n return compare(b, a, loose);\n}\n\nexports.sort = sort;\nfunction sort(list, loose) {\n return list.sort(function(a, b) {\n return exports.compare(a, b, loose);\n });\n}\n\nexports.rsort = rsort;\nfunction rsort(list, loose) {\n return list.sort(function(a, b) {\n return exports.rcompare(a, b, loose);\n });\n}\n\nexports.gt = gt;\nfunction gt(a, b, loose) {\n return compare(a, b, loose) > 0;\n}\n\nexports.lt = lt;\nfunction lt(a, b, loose) {\n return compare(a, b, loose) < 0;\n}\n\nexports.eq = eq;\nfunction eq(a, b, loose) {\n return compare(a, b, loose) === 0;\n}\n\nexports.neq = neq;\nfunction neq(a, b, loose) {\n return compare(a, b, loose) !== 0;\n}\n\nexports.gte = gte;\nfunction gte(a, b, loose) {\n return compare(a, b, loose) >= 0;\n}\n\nexports.lte = lte;\nfunction lte(a, b, loose) {\n return compare(a, b, loose) <= 0;\n}\n\nexports.cmp = cmp;\nfunction cmp(a, op, b, loose) {\n var ret;\n switch (op) {\n case '===':\n if (typeof a === 'object') a = a.version;\n if (typeof b === 'object') b = b.version;\n ret = a === b;\n break;\n case '!==':\n if (typeof a === 'object') a = a.version;\n if (typeof b === 'object') b = b.version;\n ret = a !== b;\n break;\n case '': case '=': case '==': ret = eq(a, b, loose); break;\n case '!=': ret = neq(a, b, loose); break;\n case '>': ret = gt(a, b, loose); break;\n case '>=': ret = gte(a, b, loose); break;\n case '<': ret = lt(a, b, loose); break;\n case '<=': ret = lte(a, b, loose); break;\n default: throw new TypeError('Invalid operator: ' + op);\n }\n return ret;\n}\n\nexports.Comparator = Comparator;\nfunction Comparator(comp, loose) {\n if (comp instanceof Comparator) {\n if (comp.loose === loose)\n return comp;\n else\n comp = comp.value;\n }\n\n if (!(this instanceof Comparator))\n return new Comparator(comp, loose);\n\n debug('comparator', comp, loose);\n this.loose = loose;\n this.parse(comp);\n\n if (this.semver === ANY)\n this.value = '';\n else\n this.value = this.operator + this.semver.version;\n\n debug('comp', this);\n}\n\nvar ANY = {};\nComparator.prototype.parse = function(comp) {\n var r = this.loose ? re[COMPARATORLOOSE] : re[COMPARATOR];\n var m = comp.match(r);\n\n if (!m)\n throw new TypeError('Invalid comparator: ' + comp);\n\n this.operator = m[1];\n if (this.operator === '=')\n this.operator = '';\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2])\n this.semver = ANY;\n else\n this.semver = new SemVer(m[2], this.loose);\n};\n\nComparator.prototype.toString = function() {\n return this.value;\n};\n\nComparator.prototype.test = function(version) {\n debug('Comparator.test', version, this.loose);\n\n if (this.semver === ANY)\n return true;\n\n if (typeof version === 'string')\n version = new SemVer(version, this.loose);\n\n return cmp(version, this.operator, this.semver, this.loose);\n};\n\nComparator.prototype.intersects = function(comp, loose) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required');\n }\n\n var rangeTmp;\n\n if (this.operator === '') {\n rangeTmp = new Range(comp.value, loose);\n return satisfies(this.value, rangeTmp, loose);\n } else if (comp.operator === '') {\n rangeTmp = new Range(this.value, loose);\n return satisfies(comp.semver, rangeTmp, loose);\n }\n\n var sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>');\n var sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<');\n var sameSemVer = this.semver.version === comp.semver.version;\n var differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=');\n var oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, loose) &&\n ((this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<'));\n var oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, loose) &&\n ((this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>'));\n\n return sameDirectionIncreasing || sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;\n};\n\n\nexports.Range = Range;\nfunction Range(range, loose) {\n if (range instanceof Range) {\n if (range.loose === loose) {\n return range;\n } else {\n return new Range(range.raw, loose);\n }\n }\n\n if (range instanceof Comparator) {\n return new Range(range.value, loose);\n }\n\n if (!(this instanceof Range))\n return new Range(range, loose);\n\n this.loose = loose;\n\n // First, split based on boolean or ||\n this.raw = range;\n this.set = range.split(/\\s*\\|\\|\\s*/).map(function(range) {\n return this.parseRange(range.trim());\n }, this).filter(function(c) {\n // throw out any that are not relevant for whatever reason\n return c.length;\n });\n\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + range);\n }\n\n this.format();\n}\n\nRange.prototype.format = function() {\n this.range = this.set.map(function(comps) {\n return comps.join(' ').trim();\n }).join('||').trim();\n return this.range;\n};\n\nRange.prototype.toString = function() {\n return this.range;\n};\n\nRange.prototype.parseRange = function(range) {\n var loose = this.loose;\n range = range.trim();\n debug('range', range, loose);\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE];\n range = range.replace(hr, hyphenReplace);\n debug('hyphen replace', range);\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace);\n debug('comparator trim', range, re[COMPARATORTRIM]);\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[TILDETRIM], tildeTrimReplace);\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[CARETTRIM], caretTrimReplace);\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ');\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR];\n var set = range.split(' ').map(function(comp) {\n return parseComparator(comp, loose);\n }).join(' ').split(/\\s+/);\n if (this.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function(comp) {\n return !!comp.match(compRe);\n });\n }\n set = set.map(function(comp) {\n return new Comparator(comp, loose);\n });\n\n return set;\n};\n\nRange.prototype.intersects = function(range, loose) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required');\n }\n\n return this.set.some(function(thisComparators) {\n return thisComparators.every(function(thisComparator) {\n return range.set.some(function(rangeComparators) {\n return rangeComparators.every(function(rangeComparator) {\n return thisComparator.intersects(rangeComparator, loose);\n });\n });\n });\n });\n};\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators;\nfunction toComparators(range, loose) {\n return new Range(range, loose).set.map(function(comp) {\n return comp.map(function(c) {\n return c.value;\n }).join(' ').trim().split(' ');\n });\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator(comp, loose) {\n debug('comp', comp);\n comp = replaceCarets(comp, loose);\n debug('caret', comp);\n comp = replaceTildes(comp, loose);\n debug('tildes', comp);\n comp = replaceXRanges(comp, loose);\n debug('xrange', comp);\n comp = replaceStars(comp, loose);\n debug('stars', comp);\n return comp;\n}\n\nfunction isX(id) {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes(comp, loose) {\n return comp.trim().split(/\\s+/).map(function(comp) {\n return replaceTilde(comp, loose);\n }).join(' ');\n}\n\nfunction replaceTilde(comp, loose) {\n var r = loose ? re[TILDELOOSE] : re[TILDE];\n return comp.replace(r, function(_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr);\n var ret;\n\n if (isX(M))\n ret = '';\n else if (isX(m))\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n else if (isX(p))\n // ~1.2 == >=1.2.0 <1.3.0\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n else if (pr) {\n debug('replaceTilde pr', pr);\n if (pr.charAt(0) !== '-')\n pr = '-' + pr;\n ret = '>=' + M + '.' + m + '.' + p + pr +\n ' <' + M + '.' + (+m + 1) + '.0';\n } else\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0';\n\n debug('tilde return', ret);\n return ret;\n });\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets(comp, loose) {\n return comp.trim().split(/\\s+/).map(function(comp) {\n return replaceCaret(comp, loose);\n }).join(' ');\n}\n\nfunction replaceCaret(comp, loose) {\n debug('caret', comp, loose);\n var r = loose ? re[CARETLOOSE] : re[CARET];\n return comp.replace(r, function(_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr);\n var ret;\n\n if (isX(M))\n ret = '';\n else if (isX(m))\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n else if (isX(p)) {\n if (M === '0')\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n else\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';\n } else if (pr) {\n debug('replaceCaret pr', pr);\n if (pr.charAt(0) !== '-')\n pr = '-' + pr;\n if (M === '0') {\n if (m === '0')\n ret = '>=' + M + '.' + m + '.' + p + pr +\n ' <' + M + '.' + m + '.' + (+p + 1);\n else\n ret = '>=' + M + '.' + m + '.' + p + pr +\n ' <' + M + '.' + (+m + 1) + '.0';\n } else\n ret = '>=' + M + '.' + m + '.' + p + pr +\n ' <' + (+M + 1) + '.0.0';\n } else {\n debug('no pr');\n if (M === '0') {\n if (m === '0')\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + m + '.' + (+p + 1);\n else\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0';\n } else\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + (+M + 1) + '.0.0';\n }\n\n debug('caret return', ret);\n return ret;\n });\n}\n\nfunction replaceXRanges(comp, loose) {\n debug('replaceXRanges', comp, loose);\n return comp.split(/\\s+/).map(function(comp) {\n return replaceXRange(comp, loose);\n }).join(' ');\n}\n\nfunction replaceXRange(comp, loose) {\n comp = comp.trim();\n var r = loose ? re[XRANGELOOSE] : re[XRANGE];\n return comp.replace(r, function(ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr);\n var xM = isX(M);\n var xm = xM || isX(m);\n var xp = xm || isX(p);\n var anyX = xp;\n\n if (gtlt === '=' && anyX)\n gtlt = '';\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0';\n } else {\n // nothing is forbidden\n ret = '*';\n }\n } else if (gtlt && anyX) {\n // replace X with 0\n if (xm)\n m = 0;\n if (xp)\n p = 0;\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n } else if (xp) {\n m = +m + 1;\n p = 0;\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (xm)\n M = +M + 1;\n else\n m = +m + 1;\n }\n\n ret = gtlt + M + '.' + m + '.' + p;\n } else if (xm) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n }\n\n debug('xRange return', ret);\n\n return ret;\n });\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars(comp, loose) {\n debug('replaceStars', comp, loose);\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[STAR], '');\n}\n\n// This function is passed to string.replace(re[HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) {\n\n if (isX(fM))\n from = '';\n else if (isX(fm))\n from = '>=' + fM + '.0.0';\n else if (isX(fp))\n from = '>=' + fM + '.' + fm + '.0';\n else\n from = '>=' + from;\n\n if (isX(tM))\n to = '';\n else if (isX(tm))\n to = '<' + (+tM + 1) + '.0.0';\n else if (isX(tp))\n to = '<' + tM + '.' + (+tm + 1) + '.0';\n else if (tpr)\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;\n else\n to = '<=' + to;\n\n return (from + ' ' + to).trim();\n}\n\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function(version) {\n if (!version)\n return false;\n\n if (typeof version === 'string')\n version = new SemVer(version, this.loose);\n\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version))\n return true;\n }\n return false;\n};\n\nfunction testSet(set, version) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version))\n return false;\n }\n\n if (version.prerelease.length) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (var i = 0; i < set.length; i++) {\n debug(set[i].semver);\n if (set[i].semver === ANY)\n continue;\n\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver;\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch)\n return true;\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false;\n }\n\n return true;\n}\n\nexports.satisfies = satisfies;\nfunction satisfies(version, range, loose) {\n try {\n range = new Range(range, loose);\n } catch (er) {\n return false;\n }\n return range.test(version);\n}\n\nexports.maxSatisfying = maxSatisfying;\nfunction maxSatisfying(versions, range, loose) {\n var max = null;\n var maxSV = null;\n try {\n var rangeObj = new Range(range, loose);\n } catch (er) {\n return null;\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) { // satisfies(v, range, loose)\n if (!max || maxSV.compare(v) === -1) { // compare(max, v, true)\n max = v;\n maxSV = new SemVer(max, loose);\n }\n }\n })\n return max;\n}\n\nexports.minSatisfying = minSatisfying;\nfunction minSatisfying(versions, range, loose) {\n var min = null;\n var minSV = null;\n try {\n var rangeObj = new Range(range, loose);\n } catch (er) {\n return null;\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) { // satisfies(v, range, loose)\n if (!min || minSV.compare(v) === 1) { // compare(min, v, true)\n min = v;\n minSV = new SemVer(min, loose);\n }\n }\n })\n return min;\n}\n\nexports.validRange = validRange;\nfunction validRange(range, loose) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, loose).range || '*';\n } catch (er) {\n return null;\n }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr;\nfunction ltr(version, range, loose) {\n return outside(version, range, '<', loose);\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr;\nfunction gtr(version, range, loose) {\n return outside(version, range, '>', loose);\n}\n\nexports.outside = outside;\nfunction outside(version, range, hilo, loose) {\n version = new SemVer(version, loose);\n range = new Range(range, loose);\n\n var gtfn, ltefn, ltfn, comp, ecomp;\n switch (hilo) {\n case '>':\n gtfn = gt;\n ltefn = lte;\n ltfn = lt;\n comp = '>';\n ecomp = '>=';\n break;\n case '<':\n gtfn = lt;\n ltefn = gte;\n ltfn = gt;\n comp = '<';\n ecomp = '<=';\n break;\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"');\n }\n\n // If it satisifes the range it is not outside\n if (satisfies(version, range, loose)) {\n return false;\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i];\n\n var high = null;\n var low = null;\n\n comparators.forEach(function(comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator;\n low = low || comparator;\n if (gtfn(comparator.semver, high.semver, loose)) {\n high = comparator;\n } else if (ltfn(comparator.semver, low.semver, loose)) {\n low = comparator;\n }\n });\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false;\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false;\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false;\n }\n }\n return true;\n}\n\nexports.prerelease = prerelease;\nfunction prerelease(version, loose) {\n var parsed = parse(version, loose);\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null;\n}\n\nexports.intersects = intersects;\nfunction intersects(r1, r2, loose) {\n r1 = new Range(r1, loose)\n r2 = new Range(r2, loose)\n return r1.intersects(r2)\n}\n\nexports.coerce = coerce;\nfunction coerce(version) {\n if (version instanceof SemVer)\n return version;\n\n if (typeof version !== 'string')\n return null;\n\n var match = version.match(re[COERCE]);\n\n if (match == null)\n return null;\n\n return parse((match[1] || '0') + '.' + (match[2] || '0') + '.' + (match[3] || '0')); \n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Parse a vega schema url into library and version.\n */\nfunction default_1(url) {\n var regex = /\\/schema\\/([\\w-]+)\\/([\\w\\.\\-]+)\\.json$/g;\n var _a = regex.exec(url).slice(1, 3), library = _a[0], version = _a[1];\n return { library: library, version: version };\n}\nexports.default = default_1;\n//# sourceMappingURL=index.js.map","/**\n * Open editor url in a new window, and pass a message.\n */\nexport function post(window, url, data) {\n var editor = window.open(url);\n var wait = 10000;\n var step = 250;\n var count = ~~(wait / step);\n function listen(evt) {\n if (evt.source === editor) {\n count = 0;\n window.removeEventListener('message', listen, false);\n }\n }\n window.addEventListener('message', listen, false);\n // send message\n // periodically resend until ack received or timeout\n function send() {\n if (count <= 0) {\n return;\n }\n editor.postMessage(data, '*');\n setTimeout(send, step);\n count -= 1;\n }\n setTimeout(send, step);\n}\n//# sourceMappingURL=post.js.map","import * as tslib_1 from \"tslib\";\nimport * as d3 from 'd3-selection';\nimport * as stringify_ from 'json-stringify-pretty-compact';\nimport { satisfies } from 'semver';\nimport * as vegaImport from 'vega-lib';\nimport * as vlImport from 'vega-lite';\nimport schemaParser from 'vega-schema-url-parser';\nimport { post } from './post';\n// https://github.com/rollup/rollup/issues/670\nvar stringify = stringify_.default || stringify_;\nexport var vega = vegaImport;\nexport var vl = vlImport;\nvar NAMES = {\n vega: 'Vega',\n 'vega-lite': 'Vega-Lite',\n};\nvar VERSION = {\n vega: vega.version,\n 'vega-lite': vl ? vl.version : 'not available',\n};\nvar PREPROCESSOR = {\n vega: function (vgjson, _) { return vgjson; },\n 'vega-lite': function (vljson, config) { return vl.compile(vljson, { config: config }).spec; },\n};\nfunction viewSource(source, sourceHeader, sourceFooter) {\n var header = \"
\" + sourceHeader + \"\";\n var footer = \"
\" + sourceFooter + \"\";\n var win = window.open('');\n win.document.write(header + source + footer);\n win.document.title = 'Vega JSON Source';\n}\n/**\n * Embed a Vega visualization component in a web page. This function returns a promise.\n *\n * @param el DOM element in which to place component (DOM node or CSS selector).\n * @param spec String : A URL string from which to load the Vega specification.\n * Object : The Vega/Vega-Lite specification as a parsed JSON object.\n * @param opt A JavaScript object containing options for embedding.\n */\nexport default function embed(el, spec, opt) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var actions, loader, renderer, logLevel, data, config, data, parsed, mode, vgSpec, div, runtime, view, ctrl, ext_1, editorUrl_1;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n opt = opt || {};\n actions = opt.actions !== undefined ? opt.actions : true;\n loader = opt.loader || vega.loader();\n renderer = opt.renderer || 'canvas';\n logLevel = opt.logLevel || vega.Warn;\n if (!vega.isString(spec)) return [3 /*break*/, 2];\n return [4 /*yield*/, loader.load(spec)];\n case 1:\n data = _a.sent();\n return [2 /*return*/, embed(el, JSON.parse(data), opt)];\n case 2:\n config = opt.config;\n if (!vega.isString(config)) return [3 /*break*/, 4];\n return [4 /*yield*/, loader.load(config)];\n case 3:\n data = _a.sent();\n return [2 /*return*/, embed(el, spec, tslib_1.__assign({}, opt, { config: JSON.parse(data) }))];\n case 4:\n if (spec.$schema) {\n parsed = schemaParser(spec.$schema);\n if (opt.mode && opt.mode !== parsed.library) {\n console.warn(\"The given visualization spec is written in \" + NAMES[parsed.library] + \", but mode argument sets \" + NAMES[opt.mode] + \".\");\n }\n mode = parsed.library;\n if (!satisfies(VERSION[mode], \"^\" + parsed.version.slice(1))) {\n console.warn(\"The input spec uses \" + mode + \" \" + parsed.version + \", but the current version of \" + NAMES[mode] + \" is \" + VERSION[mode] + \".\");\n }\n }\n else {\n mode = opt.mode || 'vega';\n }\n vgSpec = PREPROCESSOR[mode](spec, config);\n if (mode === 'vega-lite') {\n if (vgSpec.$schema) {\n parsed = schemaParser(vgSpec.$schema);\n if (!satisfies(VERSION.vega, \"^\" + parsed.version.slice(1))) {\n console.warn(\"The compiled spec uses Vega \" + parsed.version + \", but current version is \" + VERSION.vega + \".\");\n }\n }\n }\n div = d3\n .select(el) // d3.select supports elements and strings\n .classed('vega-embed', true)\n .html('');\n if (opt.onBeforeParse) {\n // Allow Vega spec to be modified before being used\n vgSpec = opt.onBeforeParse(vgSpec);\n }\n runtime = vega.parse(vgSpec, mode === 'vega-lite' ? {} : config);\n view = new vega.View(runtime, {\n loader: loader,\n logLevel: logLevel,\n renderer: renderer,\n })\n .initialize(el)\n .hover();\n if (opt) {\n if (opt.width) {\n view.width(opt.width);\n }\n if (opt.height) {\n view.height(opt.height);\n }\n if (opt.padding) {\n view.padding(opt.padding);\n }\n }\n if (!opt.runAsync) return [3 /*break*/, 6];\n return [4 /*yield*/, view.runAsync()];\n case 5:\n _a.sent();\n return [3 /*break*/, 7];\n case 6:\n view.run();\n _a.label = 7;\n case 7:\n if (actions !== false) {\n ctrl = div.append('div').attr('class', 'vega-actions');\n // add 'Export' action\n if (actions === true || actions.export !== false) {\n ext_1 = renderer === 'canvas' ? 'png' : 'svg';\n ctrl\n .append('a')\n .text(\"Export as \" + ext_1.toUpperCase())\n .attr('href', '#')\n .attr('target', '_blank')\n .attr('download', \"visualization.\" + ext_1)\n .on('mousedown', function () {\n var _this = this;\n view\n .toImageURL(ext_1)\n .then(function (url) {\n _this.href = url;\n })\n .catch(function (error) {\n throw error;\n });\n d3.event.preventDefault();\n });\n }\n // add 'View Source' action\n if (actions === true || actions.source !== false) {\n ctrl\n .append('a')\n .text('View Source')\n .attr('href', '#')\n .on('click', function () {\n viewSource(stringify(spec), opt.sourceHeader || '', opt.sourceFooter || '');\n d3.event.preventDefault();\n });\n }\n // add 'Open in Vega Editor' action\n if (actions === true || actions.editor !== false) {\n editorUrl_1 = opt.editorUrl || 'https://vega.github.io/editor/';\n ctrl\n .append('a')\n .text('Open in Vega Editor')\n .attr('href', '#')\n .on('click', function () {\n post(window, editorUrl_1, {\n config: config || null,\n mode: mode,\n renderer: renderer,\n spec: stringify(spec),\n });\n d3.event.preventDefault();\n });\n }\n }\n return [2 /*return*/, { view: view, spec: spec }];\n }\n });\n });\n}\n//# sourceMappingURL=embed.js.map","import embed, { vega, vl } from './embed';\nembed.vl = vl;\nembed.vega = vega;\nembed.default = embed;\nexport default embed;\n//# sourceMappingURL=index.js.map"],"names":["matcher","selection","element","stringify","stringify_.default","tslib_1.__awaiter","tslib_1.__generator","tslib_1.__assign","satisfies","d3\n .select","d3.event"],"mappings":"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"}