hesamation commited on
Commit
72a6559
·
1 Parent(s): 4d72731

finished the benner

Browse files
dist/assets/images/256px-PDF.png ADDED

Git LFS Details

  • SHA256: 48b7ab9362d78d22ca0d66b2943406759e85cffb86b585176990035d12ac2c7d
  • Pointer size: 129 Bytes
  • Size of remote file: 5.46 kB
dist/assets/images/placeholder.png ADDED

Git LFS Details

  • SHA256: c121166b2de694f4bb71dca004c8f413899016751eed5daa1570ba0d5ad9faec
  • Pointer size: 130 Bytes
  • Size of remote file: 53.1 kB
dist/bibliography.bib ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @article{example2023,
2
+ title={Example Paper Title},
3
+ author={Example, Author and Another, Author},
4
+ journal={Journal of Examples},
5
+ volume={1},
6
+ number={1},
7
+ pages={1--10},
8
+ year={2023},
9
+ publisher={Example Publisher}
10
+ }
11
+
12
+ @online{distill,
13
+ title={Distill},
14
+ url={https://distill.pub},
15
+ year={2016},
16
+ publisher={Distill Working Group}
17
+ }
18
+
19
+ @book{textbook2022,
20
+ title={An Example Textbook},
21
+ author={Author, Example},
22
+ year={2022},
23
+ publisher={Example Academic Press}
24
+ }
dist/distill.bundle.js ADDED
The diff for this file is too large to render. See raw diff
 
dist/fragments/banner.html ADDED
The diff for this file is too large to render. See raw diff
 
dist/index.html ADDED
The diff for this file is too large to render. See raw diff
 
dist/main.bundle.js ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * ATTENTION: An "eval-source-map" devtool has been used.
3
+ * This devtool is neither made for production nor for readable output files.
4
+ * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
5
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6
+ * or disable the default devtool with "devtool: false".
7
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8
+ */
9
+ /******/ (() => { // webpackBootstrap
10
+ /******/ "use strict";
11
+ /******/ var __webpack_modules__ = ({
12
+
13
+ /***/ "./src/fragmentLoader.js":
14
+ /*!*******************************!*\
15
+ !*** ./src/fragmentLoader.js ***!
16
+ \*******************************/
17
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
18
+
19
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadFragments: () => (/* binding */ loadFragments)\n/* harmony export */ });\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction loadFragments() {\n return _loadFragments.apply(this, arguments);\n}\nfunction _loadFragments() {\n _loadFragments = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n var fragmentElements, FetchQueue, fetchQueue, currentIndex, elements;\n return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n // Find all elements with ids starting with 'fragment-'\n fragmentElements = Array.from(document.querySelectorAll('[id^=\"fragment-\"]'));\n FetchQueue = /*#__PURE__*/function () {\n function FetchQueue() {\n var maxConcurrent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 3;\n _classCallCheck(this, FetchQueue);\n this.queue = [];\n this.maxConcurrent = maxConcurrent;\n this.activeFetches = 0;\n this.maxRetries = 3; // Maximum number of retry attempts\n this.baseDelay = 1000; // Base delay in milliseconds (1 second)\n }\n return _createClass(FetchQueue, [{\n key: \"sleep\",\n value: function () {\n var _sleep = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(ms) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\", new Promise(function (resolve) {\n return setTimeout(resolve, ms);\n }));\n case 1:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n function sleep(_x) {\n return _sleep.apply(this, arguments);\n }\n return sleep;\n }()\n }, {\n key: \"fetchWithRetry\",\n value: function () {\n var _fetchWithRetry = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(fragmentPath) {\n var retryCount,\n response,\n delay,\n _args2 = arguments;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n retryCount = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : 0;\n _context2.prev = 1;\n _context2.next = 4;\n return fetch(fragmentPath);\n case 4:\n response = _context2.sent;\n if (response.ok) {\n _context2.next = 7;\n break;\n }\n throw new Error(\"HTTP error! status: \".concat(response.status));\n case 7:\n _context2.next = 9;\n return response.text();\n case 9:\n return _context2.abrupt(\"return\", _context2.sent);\n case 12:\n _context2.prev = 12;\n _context2.t0 = _context2[\"catch\"](1);\n if (!(retryCount < this.maxRetries)) {\n _context2.next = 20;\n break;\n }\n // Exponential backoff: 1s, 2s, 4s\n delay = this.baseDelay * Math.pow(2, retryCount);\n console.warn(\"Retry \".concat(retryCount + 1, \"/\").concat(this.maxRetries, \" for \").concat(fragmentPath, \" after \").concat(delay, \"ms\"));\n _context2.next = 19;\n return this.sleep(delay);\n case 19:\n return _context2.abrupt(\"return\", this.fetchWithRetry(fragmentPath, retryCount + 1));\n case 20:\n throw _context2.t0;\n case 21:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this, [[1, 12]]);\n }));\n function fetchWithRetry(_x2) {\n return _fetchWithRetry.apply(this, arguments);\n }\n return fetchWithRetry;\n }()\n }, {\n key: \"addFetch\",\n value: function () {\n var _addFetch = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(element) {\n var _this = this;\n var fragmentName, fragmentPath;\n return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n fragmentName = element.id.replace('fragment-', '');\n fragmentPath = \"fragments/\".concat(fragmentName, \".html\");\n return _context5.abrupt(\"return\", new Promise(/*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(resolve, reject) {\n var fetchPromise;\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n try {\n fetchPromise = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n var html, temp, scripts;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n _context3.next = 3;\n return _this.fetchWithRetry(fragmentPath);\n case 3:\n html = _context3.sent;\n // Process the fragment\n temp = document.createElement('div');\n temp.innerHTML = html;\n element.innerHTML = temp.innerHTML;\n\n // Handle scripts\n scripts = temp.getElementsByTagName('script');\n Array.from(scripts).forEach(function (oldScript) {\n var newScript = document.createElement('script');\n Array.from(oldScript.attributes).forEach(function (attr) {\n newScript.setAttribute(attr.name, attr.value);\n });\n newScript.textContent = oldScript.textContent;\n oldScript.parentNode.removeChild(oldScript);\n document.body.appendChild(newScript);\n });\n _this.activeFetches--;\n resolve();\n _context3.next = 18;\n break;\n case 13:\n _context3.prev = 13;\n _context3.t0 = _context3[\"catch\"](0);\n console.error(\"Failed to load fragment \".concat(fragmentPath, \" after \").concat(_this.maxRetries, \" retries:\"), _context3.t0);\n _this.activeFetches--;\n reject(_context3.t0);\n case 18:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, null, [[0, 13]]);\n }))();\n _this.queue.push(fetchPromise);\n _this.activeFetches++;\n } catch (error) {\n reject(error);\n }\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return function (_x4, _x5) {\n return _ref.apply(this, arguments);\n };\n }()));\n case 3:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n function addFetch(_x3) {\n return _addFetch.apply(this, arguments);\n }\n return addFetch;\n }()\n }, {\n key: \"processNext\",\n value: function () {\n var _processNext = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(element) {\n return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n if (!(this.activeFetches < this.maxConcurrent && element)) {\n _context6.next = 3;\n break;\n }\n _context6.next = 3;\n return this.addFetch(element);\n case 3:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6, this);\n }));\n function processNext(_x6) {\n return _processNext.apply(this, arguments);\n }\n return processNext;\n }()\n }]);\n }(); // Initialize queue\n fetchQueue = new FetchQueue(3);\n currentIndex = 0;\n elements = fragmentElements; // Assuming this is defined elsewhere\n // Initial loading of first 3 elements\n case 5:\n if (!(currentIndex < elements.length && currentIndex < 3)) {\n _context7.next = 11;\n break;\n }\n _context7.next = 8;\n return fetchQueue.processNext(elements[currentIndex]);\n case 8:\n currentIndex++;\n _context7.next = 5;\n break;\n case 11:\n if (!(currentIndex < elements.length)) {\n _context7.next = 20;\n break;\n }\n _context7.next = 14;\n return Promise.race(fetchQueue.queue);\n case 14:\n // Remove completed fetch from queue\n fetchQueue.queue = fetchQueue.queue.filter(function (p) {\n return p.status === 'pending';\n });\n // Add next element to queue\n _context7.next = 17;\n return fetchQueue.processNext(elements[currentIndex]);\n case 17:\n currentIndex++;\n _context7.next = 11;\n break;\n case 20:\n _context7.next = 22;\n return Promise.all(fetchQueue.queue);\n case 22:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7);\n }));\n return _loadFragments.apply(this, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O1VBQ3ZFO1VBQUEvQixTQUFBLENBQUE3RCxJQUFBO1VBQUEsT0FDTXlELFVBQVUsQ0FBQ3VGLFdBQVcsQ0FBQ3JGLFFBQVEsQ0FBQ0QsWUFBWSxDQUFDLENBQUM7UUFBQTtVQUNwREEsWUFBWSxFQUFFO1VBQUNHLFNBQUEsQ0FBQTdELElBQUE7VUFBQTtRQUFBO1VBQUE2RCxTQUFBLENBQUE3RCxJQUFBO1VBQUEsT0FJYnVCLE9BQU8sQ0FBQzZILEdBQUcsQ0FBQzNGLFVBQVUsQ0FBQ1csS0FBSyxDQUFDO1FBQUE7UUFBQTtVQUFBLE9BQUFQLFNBQUEsQ0FBQS9CLElBQUE7TUFBQTtJQUFBLEdBQUF3QixRQUFBO0VBQUEsQ0FDdEM7RUFBQSxPQUFBRCxjQUFBLENBQUFKLEtBQUEsT0FBQUQsU0FBQTtBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYmxvZ3Bvc3QvLi9zcmMvZnJhZ21lbnRMb2FkZXIuanM/YWMzMyJdLCJzb3VyY2VzQ29udGVudCI6WyJhc3luYyBmdW5jdGlvbiBsb2FkRnJhZ21lbnRzKCkge1xyXG4gICAgLy8gRmluZCBhbGwgZWxlbWVudHMgd2l0aCBpZHMgc3RhcnRpbmcgd2l0aCAnZnJhZ21lbnQtJ1xyXG4gICAgY29uc3QgZnJhZ21lbnRFbGVtZW50cyA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2lkXj1cImZyYWdtZW50LVwiXScpKTtcclxuICAgIFxyXG4gICAgY2xhc3MgRmV0Y2hRdWV1ZSB7XHJcbiAgICAgICAgY29uc3RydWN0b3IobWF4Q29uY3VycmVudCA9IDMpIHtcclxuICAgICAgICAgICAgdGhpcy5xdWV1ZSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLm1heENvbmN1cnJlbnQgPSBtYXhDb25jdXJyZW50O1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUZldGNoZXMgPSAwO1xyXG4gICAgICAgICAgICB0aGlzLm1heFJldHJpZXMgPSAzOyAvLyBNYXhpbXVtIG51bWJlciBvZiByZXRyeSBhdHRlbXB0c1xyXG4gICAgICAgICAgICB0aGlzLmJhc2VEZWxheSA9IDEwMDA7IC8vIEJhc2UgZGVsYXkgaW4gbWlsbGlzZWNvbmRzICgxIHNlY29uZClcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFzeW5jIHNsZWVwKG1zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFzeW5jIGZldGNoV2l0aFJldHJ5KGZyYWdtZW50UGF0aCwgcmV0cnlDb3VudCA9IDApIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goZnJhZ21lbnRQYXRoKTtcclxuICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEhUVFAgZXJyb3IhIHN0YXR1czogJHtyZXNwb25zZS5zdGF0dXN9YCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJldHJ5Q291bnQgPCB0aGlzLm1heFJldHJpZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBFeHBvbmVudGlhbCBiYWNrb2ZmOiAxcywgMnMsIDRzXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsYXkgPSB0aGlzLmJhc2VEZWxheSAqIE1hdGgucG93KDIsIHJldHJ5Q291bnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgUmV0cnkgJHtyZXRyeUNvdW50ICsgMX0vJHt0aGlzLm1heFJldHJpZXN9IGZvciAke2ZyYWdtZW50UGF0aH0gYWZ0ZXIgJHtkZWxheX1tc2ApO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2xlZXAoZGVsYXkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoV2l0aFJldHJ5KGZyYWdtZW50UGF0aCwgcmV0cnlDb3VudCArIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFzeW5jIGFkZEZldGNoKGVsZW1lbnQpIHtcclxuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnROYW1lID0gZWxlbWVudC5pZC5yZXBsYWNlKCdmcmFnbWVudC0nLCAnJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50UGF0aCA9IGBmcmFnbWVudHMvJHtmcmFnbWVudE5hbWV9Lmh0bWxgO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmV0Y2hQcm9taXNlID0gKGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGh0bWwgPSBhd2FpdCB0aGlzLmZldGNoV2l0aFJldHJ5KGZyYWdtZW50UGF0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgdGhlIGZyYWdtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZW1wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLmlubmVySFRNTCA9IGh0bWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IHRlbXAuaW5uZXJIVE1MO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgc2NyaXB0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2NyaXB0cyA9IHRlbXAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuZnJvbShzY3JpcHRzKS5mb3JFYWNoKG9sZFNjcmlwdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3U2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuZnJvbShvbGRTY3JpcHQuYXR0cmlidXRlcykuZm9yRWFjaChhdHRyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2NyaXB0LnNldEF0dHJpYnV0ZShhdHRyLm5hbWUsIGF0dHIudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NjcmlwdC50ZXh0Q29udGVudCA9IG9sZFNjcmlwdC50ZXh0Q29udGVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRTY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvbGRTY3JpcHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobmV3U2NyaXB0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUZldGNoZXMtLTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBsb2FkIGZyYWdtZW50ICR7ZnJhZ21lbnRQYXRofSBhZnRlciAke3RoaXMubWF4UmV0cmllc30gcmV0cmllczpgLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUZldGNoZXMtLTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KSgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXVlLnB1c2goZmV0Y2hQcm9taXNlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUZldGNoZXMrKztcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhc3luYyBwcm9jZXNzTmV4dChlbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUZldGNoZXMgPCB0aGlzLm1heENvbmN1cnJlbnQgJiYgZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hZGRGZXRjaChlbGVtZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBJbml0aWFsaXplIHF1ZXVlXHJcbiAgICBjb25zdCBmZXRjaFF1ZXVlID0gbmV3IEZldGNoUXVldWUoMyk7XHJcbiAgICBsZXQgY3VycmVudEluZGV4ID0gMDtcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gZnJhZ21lbnRFbGVtZW50czsgLy8gQXNzdW1pbmcgdGhpcyBpcyBkZWZpbmVkIGVsc2V3aGVyZVxyXG5cclxuICAgIC8vIEluaXRpYWwgbG9hZGluZyBvZiBmaXJzdCAzIGVsZW1lbnRzXHJcbiAgICB3aGlsZSAoY3VycmVudEluZGV4IDwgZWxlbWVudHMubGVuZ3RoICYmIGN1cnJlbnRJbmRleCA8IDMpIHtcclxuICAgICAgICBhd2FpdCBmZXRjaFF1ZXVlLnByb2Nlc3NOZXh0KGVsZW1lbnRzW2N1cnJlbnRJbmRleF0pO1xyXG4gICAgICAgIGN1cnJlbnRJbmRleCsrO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFByb2Nlc3MgcmVtYWluaW5nIGVsZW1lbnRzIGFzIGZldGNoZXMgY29tcGxldGVcclxuICAgIHdoaWxlIChjdXJyZW50SW5kZXggPCBlbGVtZW50cy5sZW5ndGgpIHtcclxuICAgICAgICAvLyBXYWl0IGZvciBhbnkgZmV0Y2ggdG8gY29tcGxldGVcclxuICAgICAgICBhd2FpdCBQcm9taXNlLnJhY2UoZmV0Y2hRdWV1ZS5xdWV1ZSk7XHJcbiAgICAgICAgLy8gUmVtb3ZlIGNvbXBsZXRlZCBmZXRjaCBmcm9tIHF1ZXVlXHJcbiAgICAgICAgZmV0Y2hRdWV1ZS5xdWV1ZSA9IGZldGNoUXVldWUucXVldWUuZmlsdGVyKHAgPT4gcC5zdGF0dXMgPT09ICdwZW5kaW5nJyk7XHJcbiAgICAgICAgLy8gQWRkIG5leHQgZWxlbWVudCB0byBxdWV1ZVxyXG4gICAgICAgIGF3YWl0IGZldGNoUXVldWUucHJvY2Vzc05leHQoZWxlbWVudHNbY3VycmVudEluZGV4XSk7XHJcbiAgICAgICAgY3VycmVudEluZGV4Kys7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gV2FpdCBmb3IgcmVtYWluaW5nIGZldGNoZXMgdG8gY29tcGxldGVcclxuICAgIGF3YWl0IFByb21pc2UuYWxsKGZldGNoUXVldWUucXVldWUpO1xyXG59XHJcblxyXG5leHBvcnQgeyBsb2FkRnJhZ21lbnRzIH0iXSwibmFtZXMiOlsiX3JlZ2VuZXJhdG9yUnVudGltZSIsImUiLCJ0IiwiciIsIk9iamVjdCIsInByb3RvdHlwZSIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiaSIsIlN5bWJvbCIsImEiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsIl90eXBlb2YiLCJyZXNvbHZlIiwiX19hd2FpdCIsInRoZW4iLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsIkVycm9yIiwiZG9uZSIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsIl9jbGFzc0NhbGxDaGVjayIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfbmV4dCIsIl90aHJvdyIsImxvYWRGcmFnbWVudHMiLCJfbG9hZEZyYWdtZW50cyIsIl9jYWxsZWU3IiwiZnJhZ21lbnRFbGVtZW50cyIsIkZldGNoUXVldWUiLCJmZXRjaFF1ZXVlIiwiY3VycmVudEluZGV4IiwiZWxlbWVudHMiLCJfY2FsbGVlNyQiLCJfY29udGV4dDciLCJBcnJheSIsImZyb20iLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJtYXhDb25jdXJyZW50IiwidW5kZWZpbmVkIiwicXVldWUiLCJhY3RpdmVGZXRjaGVzIiwibWF4UmV0cmllcyIsImJhc2VEZWxheSIsIl9zbGVlcCIsIl9jYWxsZWUiLCJtcyIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJzZXRUaW1lb3V0Iiwic2xlZXAiLCJfeCIsIl9mZXRjaFdpdGhSZXRyeSIsIl9jYWxsZWUyIiwiZnJhZ21lbnRQYXRoIiwicmV0cnlDb3VudCIsInJlc3BvbnNlIiwiZGVsYXkiLCJfYXJnczIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJmZXRjaCIsIm9rIiwiY29uY2F0Iiwic3RhdHVzIiwidGV4dCIsInQwIiwiTWF0aCIsInBvdyIsImNvbnNvbGUiLCJ3YXJuIiwiZmV0Y2hXaXRoUmV0cnkiLCJfeDIiLCJfYWRkRmV0Y2giLCJfY2FsbGVlNSIsImVsZW1lbnQiLCJfdGhpcyIsImZyYWdtZW50TmFtZSIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsImlkIiwicmVwbGFjZSIsIl9yZWYiLCJfY2FsbGVlNCIsInJlamVjdCIsImZldGNoUHJvbWlzZSIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsIl9jYWxsZWUzIiwiaHRtbCIsInRlbXAiLCJzY3JpcHRzIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwib2xkU2NyaXB0IiwibmV3U2NyaXB0IiwiYXR0cmlidXRlcyIsImF0dHIiLCJzZXRBdHRyaWJ1dGUiLCJ0ZXh0Q29udGVudCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImVycm9yIiwiX3g0IiwiX3g1IiwiYWRkRmV0Y2giLCJfeDMiLCJfcHJvY2Vzc05leHQiLCJfY2FsbGVlNiIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsInByb2Nlc3NOZXh0IiwiX3g2IiwicmFjZSIsImZpbHRlciIsImFsbCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/fragmentLoader.js\n");
20
+
21
+ /***/ }),
22
+
23
+ /***/ "./src/index.js":
24
+ /*!**********************!*\
25
+ !*** ./src/index.js ***!
26
+ \**********************/
27
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
28
+
29
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _fragmentLoader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./fragmentLoader */ \"./src/fragmentLoader.js\");\n/* harmony import */ var _syncHFSpacesURLHash__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./syncHFSpacesURLHash */ \"./src/syncHFSpacesURLHash.js\");\n// import { plotClusters } from './clusters'\n\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n console.log(\"DOMContentLoaded\");\n (0,_fragmentLoader__WEBPACK_IMPORTED_MODULE_0__.loadFragments)();\n // init_memory_plot();\n (0,_syncHFSpacesURLHash__WEBPACK_IMPORTED_MODULE_1__.syncHFSpacesURLHash)();\n}, {\n once: true\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDZ0Q7QUFDVztBQUUzREUsUUFBUSxDQUFDQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxZQUFNO0VBQ2hEQyxPQUFPLENBQUNDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztFQUMvQkwsOERBQWEsQ0FBQyxDQUFDO0VBQ2Y7RUFDQUMseUVBQW1CLENBQUMsQ0FBQztBQUN6QixDQUFDLEVBQUU7RUFBRUssSUFBSSxFQUFFO0FBQUssQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYmxvZ3Bvc3QvLi9zcmMvaW5kZXguanM/YjYzNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBwbG90Q2x1c3RlcnMgfSBmcm9tICcuL2NsdXN0ZXJzJ1xyXG5pbXBvcnQgeyBsb2FkRnJhZ21lbnRzIH0gZnJvbSAnLi9mcmFnbWVudExvYWRlcidcclxuaW1wb3J0IHsgc3luY0hGU3BhY2VzVVJMSGFzaCB9IGZyb20gJy4vc3luY0hGU3BhY2VzVVJMSGFzaCdcclxuXHJcbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsICgpID0+IHtcclxuICAgIGNvbnNvbGUubG9nKFwiRE9NQ29udGVudExvYWRlZFwiKTtcclxuICAgIGxvYWRGcmFnbWVudHMoKTtcclxuICAgIC8vIGluaXRfbWVtb3J5X3Bsb3QoKTtcclxuICAgIHN5bmNIRlNwYWNlc1VSTEhhc2goKTtcclxufSwgeyBvbmNlOiB0cnVlIH0pO1xyXG4iXSwibmFtZXMiOlsibG9hZEZyYWdtZW50cyIsInN5bmNIRlNwYWNlc1VSTEhhc2giLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJjb25zb2xlIiwibG9nIiwib25jZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/index.js\n");
30
+
31
+ /***/ }),
32
+
33
+ /***/ "./src/syncHFSpacesURLHash.js":
34
+ /*!************************************!*\
35
+ !*** ./src/syncHFSpacesURLHash.js ***!
36
+ \************************************/
37
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
38
+
39
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ syncHFSpacesURLHash: () => (/* binding */ syncHFSpacesURLHash)\n/* harmony export */ });\nvar queryArg = \"section\";\nfunction syncHFSpacesURLHash() {\n // Handle explicit section requests (don't update hash automatically on load)\n var hasExplicitRequest = handleExplicitSectionRequest();\n\n // Set up hash change monitoring\n updateHashBasedOnHashChange();\n\n // Always set up scroll monitoring to update hash during scrolling\n setupScrollMonitoring();\n\n // If no explicit request, we don't update the hash on initial load\n // The hash will only start updating when the user scrolls\n}\nfunction handleExplicitSectionRequest() {\n // Check for section parameter in URL\n var urlParams = new URLSearchParams(window.location.search);\n var sectionId = urlParams.get(queryArg);\n\n // If we have an explicit section request\n if (sectionId) {\n var targetElement = document.getElementById(sectionId);\n if (targetElement) {\n // Slight delay to ensure the browser doesn't try to do its own scrolling first\n setTimeout(function () {\n targetElement.scrollIntoView();\n history.replaceState(null, null, \"#\".concat(sectionId));\n }, 100);\n }\n return true;\n }\n\n // No explicit section parameter found\n return false;\n}\nfunction setupScrollMonitoring() {\n // Variables to manage throttling\n var isScrolling = false;\n var lastKnownScrollPosition = 0;\n var initialScroll = true;\n\n // Add the scroll event listener\n window.addEventListener('scroll', function () {\n lastKnownScrollPosition = window.scrollY;\n if (!isScrolling) {\n window.requestAnimationFrame(function () {\n // Skip the first scroll event which might be browser's automatic scroll\n // to a hash on page load\n if (initialScroll) {\n initialScroll = false;\n } else {\n updateHashBasedOnScroll(lastKnownScrollPosition);\n }\n isScrolling = false;\n });\n }\n isScrolling = true;\n });\n}\n\n// Function to update the URL hash based on scroll position\nfunction updateHashBasedOnScroll(scrollPosition) {\n var closestHeading = findClosestHeading(scrollPosition);\n\n // Update the URL hash if we found a closest element\n if (closestHeading && closestHeading.id) {\n // Only update if the hash is different to avoid unnecessary operations\n if (window.location.hash !== \"#\".concat(closestHeading.id)) {\n silentlyUpdateHash(closestHeading.id);\n postMessageToHFSpaces(closestHeading.id);\n }\n }\n}\n\n// Find the closest heading to the current scroll position\nfunction findClosestHeading(scrollPosition) {\n // Get only heading elements with IDs that we want to track\n var headingsWithIds = Array.from(document.querySelectorAll('h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]'));\n\n // Skip if there are no headings with IDs\n if (headingsWithIds.length === 0) return null;\n\n // Find the element closest to the middle of the viewport\n var closestHeading = null;\n var closestDistance = Infinity;\n var viewportMiddle = scrollPosition + window.innerHeight / 2;\n\n // Iterate through all headings to find the closest one\n headingsWithIds.forEach(function (heading) {\n var headingTop = heading.getBoundingClientRect().top + scrollPosition;\n var distance = Math.abs(headingTop - viewportMiddle);\n if (distance < closestDistance) {\n closestDistance = distance;\n closestHeading = heading;\n }\n });\n return closestHeading;\n}\n\n// Update hash without triggering scroll or other side effects\nfunction silentlyUpdateHash(id) {\n history.replaceState(null, null, \"#\".concat(id));\n}\nfunction updateHashBasedOnHashChange() {\n window.addEventListener('hashchange', function () {\n var elementId = window.location.hash.slice(1);\n postMessageToHFSpaces(elementId);\n });\n}\nfunction postMessageToHFSpaces(elementId) {\n var parentOrigin = \"https://huggingface.co\";\n window.parent.postMessage({\n queryString: \"\".concat(queryArg, \"=\").concat(elementId)\n }, parentOrigin);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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L3NyYy9zeW5jSEZTcGFjZXNVUkxIYXNoLmpzPzY3MjciXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcXVlcnlBcmcgPSBcInNlY3Rpb25cIjtcclxuXHJcbmZ1bmN0aW9uIHN5bmNIRlNwYWNlc1VSTEhhc2goKSB7XHJcbiAgLy8gSGFuZGxlIGV4cGxpY2l0IHNlY3Rpb24gcmVxdWVzdHMgKGRvbid0IHVwZGF0ZSBoYXNoIGF1dG9tYXRpY2FsbHkgb24gbG9hZClcclxuICBjb25zdCBoYXNFeHBsaWNpdFJlcXVlc3QgPSBoYW5kbGVFeHBsaWNpdFNlY3Rpb25SZXF1ZXN0KCk7XHJcbiAgXHJcbiAgLy8gU2V0IHVwIGhhc2ggY2hhbmdlIG1vbml0b3JpbmdcclxuICB1cGRhdGVIYXNoQmFzZWRPbkhhc2hDaGFuZ2UoKTtcclxuICBcclxuICAvLyBBbHdheXMgc2V0IHVwIHNjcm9sbCBtb25pdG9yaW5nIHRvIHVwZGF0ZSBoYXNoIGR1cmluZyBzY3JvbGxpbmdcclxuICBzZXR1cFNjcm9sbE1vbml0b3JpbmcoKTtcclxuICBcclxuICAvLyBJZiBubyBleHBsaWNpdCByZXF1ZXN0LCB3ZSBkb24ndCB1cGRhdGUgdGhlIGhhc2ggb24gaW5pdGlhbCBsb2FkXHJcbiAgLy8gVGhlIGhhc2ggd2lsbCBvbmx5IHN0YXJ0IHVwZGF0aW5nIHdoZW4gdGhlIHVzZXIgc2Nyb2xsc1xyXG59XHJcblxyXG5mdW5jdGlvbiBoYW5kbGVFeHBsaWNpdFNlY3Rpb25SZXF1ZXN0KCkge1xyXG4gIC8vIENoZWNrIGZvciBzZWN0aW9uIHBhcmFtZXRlciBpbiBVUkxcclxuICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xyXG4gIGNvbnN0IHNlY3Rpb25JZCA9IHVybFBhcmFtcy5nZXQocXVlcnlBcmcpO1xyXG4gIFxyXG4gIC8vIElmIHdlIGhhdmUgYW4gZXhwbGljaXQgc2VjdGlvbiByZXF1ZXN0XHJcbiAgaWYgKHNlY3Rpb25JZCkge1xyXG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlY3Rpb25JZCk7XHJcbiAgICBpZiAodGFyZ2V0RWxlbWVudCkge1xyXG4gICAgICAvLyBTbGlnaHQgZGVsYXkgdG8gZW5zdXJlIHRoZSBicm93c2VyIGRvZXNuJ3QgdHJ5IHRvIGRvIGl0cyBvd24gc2Nyb2xsaW5nIGZpcnN0XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRhcmdldEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTtcclxuICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCBudWxsLCBgIyR7c2VjdGlvbklkfWApO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIFxyXG4gIC8vIE5vIGV4cGxpY2l0IHNlY3Rpb24gcGFyYW1ldGVyIGZvdW5kXHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzZXR1cFNjcm9sbE1vbml0b3JpbmcoKSB7XHJcbiAgLy8gVmFyaWFibGVzIHRvIG1hbmFnZSB0aHJvdHRsaW5nXHJcbiAgbGV0IGlzU2Nyb2xsaW5nID0gZmFsc2U7XHJcbiAgbGV0IGxhc3RLbm93blNjcm9sbFBvc2l0aW9uID0gMDtcclxuICBsZXQgaW5pdGlhbFNjcm9sbCA9IHRydWU7XHJcbiAgXHJcbiAgLy8gQWRkIHRoZSBzY3JvbGwgZXZlbnQgbGlzdGVuZXJcclxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24oKSB7XHJcbiAgICBsYXN0S25vd25TY3JvbGxQb3NpdGlvbiA9IHdpbmRvdy5zY3JvbGxZO1xyXG4gICAgXHJcbiAgICBpZiAoIWlzU2Nyb2xsaW5nKSB7XHJcbiAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgLy8gU2tpcCB0aGUgZmlyc3Qgc2Nyb2xsIGV2ZW50IHdoaWNoIG1pZ2h0IGJlIGJyb3dzZXIncyBhdXRvbWF0aWMgc2Nyb2xsXHJcbiAgICAgICAgLy8gdG8gYSBoYXNoIG9uIHBhZ2UgbG9hZFxyXG4gICAgICAgIGlmIChpbml0aWFsU2Nyb2xsKSB7XHJcbiAgICAgICAgICBpbml0aWFsU2Nyb2xsID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHVwZGF0ZUhhc2hCYXNlZE9uU2Nyb2xsKGxhc3RLbm93blNjcm9sbFBvc2l0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaXNTY3JvbGxpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlzU2Nyb2xsaW5nID0gdHJ1ZTtcclxuICB9KTtcclxufVxyXG5cclxuLy8gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBVUkwgaGFzaCBiYXNlZCBvbiBzY3JvbGwgcG9zaXRpb25cclxuZnVuY3Rpb24gdXBkYXRlSGFzaEJhc2VkT25TY3JvbGwoc2Nyb2xsUG9zaXRpb24pIHtcclxuICBjb25zdCBjbG9zZXN0SGVhZGluZyA9IGZpbmRDbG9zZXN0SGVhZGluZyhzY3JvbGxQb3NpdGlvbik7XHJcbiAgXHJcbiAgLy8gVXBkYXRlIHRoZSBVUkwgaGFzaCBpZiB3ZSBmb3VuZCBhIGNsb3Nlc3QgZWxlbWVudFxyXG4gIGlmIChjbG9zZXN0SGVhZGluZyAmJiBjbG9zZXN0SGVhZGluZy5pZCkge1xyXG4gICAgLy8gT25seSB1cGRhdGUgaWYgdGhlIGhhc2ggaXMgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVjZXNzYXJ5IG9wZXJhdGlvbnNcclxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaGFzaCAhPT0gYCMke2Nsb3Nlc3RIZWFkaW5nLmlkfWApIHtcclxuICAgICAgc2lsZW50bHlVcGRhdGVIYXNoKGNsb3Nlc3RIZWFkaW5nLmlkKTtcclxuICAgICAgcG9zdE1lc3NhZ2VUb0hGU3BhY2VzKGNsb3Nlc3RIZWFkaW5nLmlkKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIEZpbmQgdGhlIGNsb3Nlc3QgaGVhZGluZyB0byB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb25cclxuZnVuY3Rpb24gZmluZENsb3Nlc3RIZWFkaW5nKHNjcm9sbFBvc2l0aW9uKSB7XHJcbiAgLy8gR2V0IG9ubHkgaGVhZGluZyBlbGVtZW50cyB3aXRoIElEcyB0aGF0IHdlIHdhbnQgdG8gdHJhY2tcclxuICBjb25zdCBoZWFkaW5nc1dpdGhJZHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2gxW2lkXSwgaDJbaWRdLCBoM1tpZF0sIGg0W2lkXSwgaDVbaWRdLCBoNltpZF0nKSk7XHJcblxyXG4gIC8vIFNraXAgaWYgdGhlcmUgYXJlIG5vIGhlYWRpbmdzIHdpdGggSURzXHJcbiAgaWYgKGhlYWRpbmdzV2l0aElkcy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xyXG5cclxuICAvLyBGaW5kIHRoZSBlbGVtZW50IGNsb3Nlc3QgdG8gdGhlIG1pZGRsZSBvZiB0aGUgdmlld3BvcnRcclxuICBsZXQgY2xvc2VzdEhlYWRpbmcgPSBudWxsO1xyXG4gIGxldCBjbG9zZXN0RGlzdGFuY2UgPSBJbmZpbml0eTtcclxuICBjb25zdCB2aWV3cG9ydE1pZGRsZSA9IHNjcm9sbFBvc2l0aW9uICsgd2luZG93LmlubmVySGVpZ2h0IC8gMjtcclxuICBcclxuICAvLyBJdGVyYXRlIHRocm91Z2ggYWxsIGhlYWRpbmdzIHRvIGZpbmQgdGhlIGNsb3Nlc3Qgb25lXHJcbiAgaGVhZGluZ3NXaXRoSWRzLmZvckVhY2goaGVhZGluZyA9PiB7XHJcbiAgICBjb25zdCBoZWFkaW5nVG9wID0gaGVhZGluZy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyBzY3JvbGxQb3NpdGlvbjtcclxuICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5hYnMoaGVhZGluZ1RvcCAtIHZpZXdwb3J0TWlkZGxlKTtcclxuICAgIFxyXG4gICAgaWYgKGRpc3RhbmNlIDwgY2xvc2VzdERpc3RhbmNlKSB7XHJcbiAgICAgIGNsb3Nlc3REaXN0YW5jZSA9IGRpc3RhbmNlO1xyXG4gICAgICBjbG9zZXN0SGVhZGluZyA9IGhlYWRpbmc7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgXHJcbiAgcmV0dXJuIGNsb3Nlc3RIZWFkaW5nO1xyXG59XHJcblxyXG4vLyBVcGRhdGUgaGFzaCB3aXRob3V0IHRyaWdnZXJpbmcgc2Nyb2xsIG9yIG90aGVyIHNpZGUgZWZmZWN0c1xyXG5mdW5jdGlvbiBzaWxlbnRseVVwZGF0ZUhhc2goaWQpIHtcclxuICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCBudWxsLCBgIyR7aWR9YCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHVwZGF0ZUhhc2hCYXNlZE9uSGFzaENoYW5nZSgpIHtcclxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignaGFzaGNoYW5nZScsICgpID0+IHtcclxuICAgIGNvbnN0IGVsZW1lbnRJZCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO1xyXG4gICAgcG9zdE1lc3NhZ2VUb0hGU3BhY2VzKGVsZW1lbnRJZCk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBvc3RNZXNzYWdlVG9IRlNwYWNlcyhlbGVtZW50SWQpIHtcclxuICBjb25zdCBwYXJlbnRPcmlnaW4gPSBcImh0dHBzOi8vaHVnZ2luZ2ZhY2UuY29cIjtcclxuICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKHsgcXVlcnlTdHJpbmc6IGAke3F1ZXJ5QXJnfT0ke2VsZW1lbnRJZH1gIH0sIHBhcmVudE9yaWdpbik7XHJcbn1cclxuXHJcbmV4cG9ydCB7IHN5bmNIRlNwYWNlc1VSTEhhc2ggfTtcclxuIl0sIm5hbWVzIjpbInF1ZXJ5QXJnIiwic3luY0hGU3BhY2VzVVJMSGFzaCIsImhhc0V4cGxpY2l0UmVxdWVzdCIsImhhbmRsZUV4cGxpY2l0U2VjdGlvblJlcXVlc3QiLCJ1cGRhdGVIYXNoQmFzZWRPbkhhc2hDaGFuZ2UiLCJzZXR1cFNjcm9sbE1vbml0b3JpbmciLCJ1cmxQYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInNlYXJjaCIsInNlY3Rpb25JZCIsImdldCIsInRhcmdldEVsZW1lbnQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwic2V0VGltZW91dCIsInNjcm9sbEludG9WaWV3IiwiaGlzdG9yeSIsInJlcGxhY2VTdGF0ZSIsImNvbmNhdCIsImlzU2Nyb2xsaW5nIiwibGFzdEtub3duU2Nyb2xsUG9zaXRpb24iLCJpbml0aWFsU2Nyb2xsIiwiYWRkRXZlbnRMaXN0ZW5lciIsInNjcm9sbFkiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJ1cGRhdGVIYXNoQmFzZWRPblNjcm9sbCIsInNjcm9sbFBvc2l0aW9uIiwiY2xvc2VzdEhlYWRpbmciLCJmaW5kQ2xvc2VzdEhlYWRpbmciLCJpZCIsImhhc2giLCJzaWxlbnRseVVwZGF0ZUhhc2giLCJwb3N0TWVzc2FnZVRvSEZTcGFjZXMiLCJoZWFkaW5nc1dpdGhJZHMiLCJBcnJheSIsImZyb20iLCJxdWVyeVNlbGVjdG9yQWxsIiwibGVuZ3RoIiwiY2xvc2VzdERpc3RhbmNlIiwiSW5maW5pdHkiLCJ2aWV3cG9ydE1pZGRsZSIsImlubmVySGVpZ2h0IiwiZm9yRWFjaCIsImhlYWRpbmciLCJoZWFkaW5nVG9wIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidG9wIiwiZGlzdGFuY2UiLCJNYXRoIiwiYWJzIiwiZWxlbWVudElkIiwic2xpY2UiLCJwYXJlbnRPcmlnaW4iLCJwYXJlbnQiLCJwb3N0TWVzc2FnZSIsInF1ZXJ5U3RyaW5nIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/syncHFSpacesURLHash.js\n");
40
+
41
+ /***/ })
42
+
43
+ /******/ });
44
+ /************************************************************************/
45
+ /******/ // The module cache
46
+ /******/ var __webpack_module_cache__ = {};
47
+ /******/
48
+ /******/ // The require function
49
+ /******/ function __webpack_require__(moduleId) {
50
+ /******/ // Check if module is in cache
51
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
52
+ /******/ if (cachedModule !== undefined) {
53
+ /******/ return cachedModule.exports;
54
+ /******/ }
55
+ /******/ // Create a new module (and put it into the cache)
56
+ /******/ var module = __webpack_module_cache__[moduleId] = {
57
+ /******/ // no module.id needed
58
+ /******/ // no module.loaded needed
59
+ /******/ exports: {}
60
+ /******/ };
61
+ /******/
62
+ /******/ // Execute the module function
63
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
64
+ /******/
65
+ /******/ // Return the exports of the module
66
+ /******/ return module.exports;
67
+ /******/ }
68
+ /******/
69
+ /************************************************************************/
70
+ /******/ /* webpack/runtime/define property getters */
71
+ /******/ (() => {
72
+ /******/ // define getter functions for harmony exports
73
+ /******/ __webpack_require__.d = (exports, definition) => {
74
+ /******/ for(var key in definition) {
75
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
76
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
77
+ /******/ }
78
+ /******/ }
79
+ /******/ };
80
+ /******/ })();
81
+ /******/
82
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
83
+ /******/ (() => {
84
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
85
+ /******/ })();
86
+ /******/
87
+ /******/ /* webpack/runtime/make namespace object */
88
+ /******/ (() => {
89
+ /******/ // define __esModule on exports
90
+ /******/ __webpack_require__.r = (exports) => {
91
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
92
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
93
+ /******/ }
94
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
95
+ /******/ };
96
+ /******/ })();
97
+ /******/
98
+ /************************************************************************/
99
+ /******/
100
+ /******/ // startup
101
+ /******/ // Load entry module and return exports
102
+ /******/ // This entry module can't be inlined because the eval-source-map devtool is used.
103
+ /******/ var __webpack_exports__ = __webpack_require__("./src/index.js");
104
+ /******/
105
+ /******/ })()
106
+ ;
dist/style.css ADDED
@@ -0,0 +1,599 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* style.css */
2
+ /* Define colors */
3
+ :root {
4
+ --distill-gray: rgb(107, 114, 128);
5
+ --distill-gray-light: rgb(185, 185, 185);
6
+ --distill-gray-lighter: rgb(228, 228, 228);
7
+ --distill-gray-lightest: rgb(245, 245, 245);
8
+ --distill-blue: #007BFF;
9
+ }
10
+
11
+ /* Container for the controls */
12
+ [id^="plot-"] {
13
+ display: flex;
14
+ flex-direction: column;
15
+ align-items: center;
16
+ gap: 15px; /* Adjust the gap between controls as needed */
17
+ }
18
+ [id^="plot-"] figure {
19
+ margin-bottom: 0px;
20
+ margin-top: 0px;
21
+ padding: 0px;
22
+ }
23
+ .plotly_caption {
24
+ font-style: italic;
25
+ margin-top: 10px;
26
+ }
27
+
28
+ .plotly_controls {
29
+ display: flex;
30
+ flex-wrap: wrap;
31
+ flex-direction: row;
32
+ justify-content: center;
33
+ align-items: flex-start;
34
+ gap: 30px;
35
+ }
36
+
37
+
38
+ .plotly_input_container {
39
+ display: flex;
40
+ align-items: center;
41
+ flex-direction: column;
42
+ gap: 10px;
43
+ }
44
+
45
+ /* Style for the select dropdown */
46
+ .plotly_input_container > select {
47
+ padding: 2px 4px;
48
+ /* border: 1px solid #ccc; */
49
+ line-height: 1.5em;
50
+ text-align: center;
51
+ border-radius: 4px;
52
+ font-size: 12px;
53
+ background-color: var(--distill-gray-lightest);
54
+ outline: none;
55
+ }
56
+
57
+ /* Style for the range input */
58
+
59
+ .plotly_slider {
60
+ display: flex;
61
+ align-items: center;
62
+ gap: 10px;
63
+ }
64
+
65
+ .plotly_slider > input[type="range"] {
66
+ -webkit-appearance: none;
67
+ height: 2px;
68
+ background: var(--distill-gray-light);
69
+ border-radius: 5px;
70
+ outline: none;
71
+ }
72
+
73
+ .plotly_slider > span {
74
+ font-size: 14px;
75
+ line-height: 1.6em;
76
+ min-width: 16px;
77
+ }
78
+
79
+ .plotly_slider > input[type="range"]::-webkit-slider-thumb {
80
+ -webkit-appearance: none;
81
+ appearance: none;
82
+ width: 18px;
83
+ height: 18px;
84
+ border-radius: 50%;
85
+ background: var(--distill-blue);
86
+ cursor: pointer;
87
+ }
88
+
89
+ .plotly_slider > input[type="range"]::-moz-range-thumb {
90
+ width: 18px;
91
+ height: 18px;
92
+ border-radius: 50%;
93
+ background: var(--distill-blue);
94
+ cursor: pointer;
95
+ }
96
+
97
+ /* Style for the labels */
98
+ .plotly_input_container > label {
99
+ font-size: 14px;
100
+ font-weight: bold;
101
+ }
102
+
103
+ .main-plot-container {
104
+ margin-top: 21px;
105
+ margin-bottom: 35px;
106
+ }
107
+
108
+ .main-plot-container > figure {
109
+ display: block !important;
110
+ /* Let this be handled by graph-container */
111
+ margin-bottom: 0px;
112
+ margin-top: 0px;
113
+ }
114
+ .main-plot-container > div {
115
+ display: none !important;
116
+ }
117
+
118
+
119
+ @media (min-width: 768px) {
120
+ .main-plot-container > figure {
121
+ display: none !important;
122
+ }
123
+ .main-plot-container > div {
124
+ display: flex !important;
125
+ }
126
+ }
127
+
128
+ d-byline .byline {
129
+ grid-template-columns: 1fr;
130
+ grid-column: text;
131
+ font-size: 0.9rem;
132
+ line-height: 1.8em;
133
+ }
134
+
135
+ @media (min-width: 768px) {
136
+ d-byline .byline {
137
+ grid-template-columns: 5fr 1fr 1fr;
138
+ }
139
+ }
140
+
141
+ #title-plot {
142
+ margin-top: 0px;
143
+ margin-bottom: 0px;
144
+ }
145
+
146
+ d-contents > nav a.active {
147
+ text-decoration: underline;
148
+ }
149
+
150
+ @media (max-width: 1199px) {
151
+ d-contents {
152
+ display: none;
153
+ background: white;
154
+ justify-self: start;
155
+ align-self: start;
156
+ padding-bottom: 0.5em;
157
+ margin-bottom: 1em;
158
+ padding-left: 0.25em;
159
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
160
+ border-bottom-width: 1px;
161
+ border-bottom-style: solid;
162
+ border-bottom-color: rgba(0, 0, 0, 0.1);
163
+ overflow-y: scroll;
164
+ height: calc(100vh - 40px);
165
+ scrollbar-width: none;
166
+ z-index: -100;
167
+ }
168
+ }
169
+
170
+ d-contents a:hover {
171
+ border-bottom: none;
172
+ }
173
+
174
+ toc-title {
175
+ font-weight: bold;
176
+ font-size: 1.2em;
177
+ color: #333;
178
+ }
179
+
180
+ toggle-icon {
181
+ transition: transform 0.3s;
182
+ }
183
+
184
+ toggle-icon.collapsed {
185
+ transform: rotate(90deg);
186
+ }
187
+
188
+ .toc-content {
189
+ margin-top: 15px;
190
+ overflow: hidden;
191
+ /* max-height: 1000px; */
192
+ transition: max-height 0.3s ease-out;
193
+ }
194
+
195
+ .toc-content.collapsed {
196
+ max-height: 0;
197
+ margin-top: 0;
198
+ }
199
+
200
+ @media (min-width: 1200px) {
201
+ d-article {
202
+ /* Ensure d-article does not prevent sticky positioning */
203
+ overflow: visible;
204
+ }
205
+
206
+ d-contents {
207
+ align-self: start;
208
+ background: white;
209
+ grid-column-start: 1 !important;
210
+ grid-column-end: 4 !important;
211
+ grid-row: auto / span 6;
212
+ justify-self: end;
213
+ margin-top: 0em;
214
+ padding-right: 3em;
215
+ padding-left: 2em;
216
+ /* border-right: 1px solid rgba(0, 0, 0, 0.1);
217
+ border-right-width: 1px;
218
+ border-right-style: solid;
219
+ border-right-color: rgba(0, 0, 0, 0.1); */
220
+ position: -webkit-sticky; /* For Safari */
221
+ position: sticky;
222
+ top: 10px; /* Adjust this value if needed */
223
+ overflow-y: auto;
224
+ height: calc(100vh - 40px);
225
+ scrollbar-width: none;
226
+ transition: max-height 0.3s ease-out;
227
+ z-index: -100;
228
+ }
229
+ }
230
+
231
+ d-contents nav h3 {
232
+ margin-top: 0;
233
+ margin-bottom: 1em;
234
+ }
235
+
236
+ d-contents nav div div {
237
+ color: rgba(0, 0, 0, 0.8);
238
+ font-weight: bold;
239
+ }
240
+
241
+ d-contents nav a {
242
+ color: rgba(0, 0, 0, 0.8);
243
+ border-bottom: none;
244
+ text-decoration: none;
245
+ }
246
+
247
+ d-contents li {
248
+ list-style-type: none;
249
+ }
250
+
251
+ d-contents ul, d-article d-contents ul {
252
+ padding-left: 1em;
253
+ }
254
+
255
+ d-contents nav ul li {
256
+ margin-bottom: .25em;
257
+ }
258
+
259
+ d-contents nav a:hover {
260
+ text-decoration: underline solid rgba(0, 0, 0, 0.6);
261
+ }
262
+
263
+ d-contents nav ul {
264
+ margin-top: 0;
265
+ margin-bottom: 6px;
266
+ }
267
+
268
+
269
+ d-contents nav > div {
270
+ display: block;
271
+ outline: none;
272
+ margin-bottom: 0.5em;
273
+ }
274
+
275
+ d-contents nav > div > a {
276
+ font-size: 13px;
277
+ font-weight: 600;
278
+ }
279
+
280
+ d-article aside {
281
+ margin-bottom: 1em;
282
+ }
283
+
284
+ d-article img {
285
+ max-width: 100%;
286
+ }
287
+
288
+ @media (min-width: 768px) {
289
+ d-article aside {
290
+ margin-bottom: 0;
291
+ }
292
+ }
293
+
294
+ d-contents nav > div > a:hover,
295
+ d-contents nav > ul > li > a:hover {
296
+ text-decoration: none;
297
+ }
298
+
299
+ .note-box {
300
+ background-color: #f6f8fa;
301
+ border-left: 4px solid #444444;
302
+ padding: 1rem;
303
+ margin: 1rem 0; /* Keep this modest margin */
304
+ border-radius: 6px;
305
+ /* Add this to ensure the box only takes up needed space */
306
+ display: inline-block;
307
+ width: 100%;
308
+ }
309
+
310
+ .note-box-title {
311
+ margin: 0;
312
+ color: #444444;
313
+ font-weight: 600;
314
+ font-size: 1em;
315
+ }
316
+
317
+ .note-box-content {
318
+ margin-top: 0.5rem;
319
+ margin-bottom: 0; /* Ensure no bottom margin */
320
+ color: #24292f;
321
+ font-size: 0.9em;
322
+ line-height: 1.5em;
323
+ }
324
+
325
+ /* For dark mode support */
326
+ @media (prefers-color-scheme: dark) {
327
+ .note-box {
328
+ background-color: #1c1c1c;
329
+ border-left-color: #888888;
330
+ }
331
+ .note-box-title {
332
+ color: #888888;
333
+ }
334
+ .note-box-content {
335
+ color: #d4d4d4;
336
+ }
337
+ }
338
+
339
+ d-article {
340
+ font-size: 1.0em;
341
+ }
342
+
343
+ .figure-legend {
344
+ font-size: 0.9em;
345
+ font-style: italic;
346
+ color: var(--distill-gray);
347
+ line-height: 1.5em;
348
+ }
349
+
350
+ d-code {
351
+ font-size: 12px;
352
+ }
353
+
354
+ .large-image-background {
355
+ width: 100vw;
356
+ padding-top: 10px;
357
+ padding-bottom: 10px;
358
+ margin-left: calc(-50vw + 50%);
359
+ margin-right: calc(-50vw + 50%);
360
+ background: white;
361
+ height: fit-content; /* This will make it match the image height */
362
+ display: flex;
363
+ justify-content: center; /* This will center your image */
364
+ }
365
+
366
+ .large-image-background-transparent {
367
+ /* width: 100vw; */
368
+ padding-top: 10px;
369
+ padding-bottom: 10px;
370
+ /* margin-left: calc(-50vw + 50%); */
371
+ margin-left:-100px;
372
+ margin-right: -100px;
373
+ /* margin-right: calc(-50vw + 50%); */
374
+ /* background: white; */
375
+ height: fit-content; /* This will make it match the image height */
376
+ display: flex;
377
+ justify-content: center; /* This will center your image */
378
+ }
379
+
380
+ .boxed-image {
381
+ padding: 0.5rem;
382
+ background: white;
383
+ border-radius: 12px;
384
+ border: 1px solid #e5e7eb;
385
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
386
+ }
387
+
388
+ d-article li {
389
+ margin-bottom: 0.0em;
390
+ }
391
+
392
+ d-article ul ul {
393
+ margin-bottom: 0.0em;
394
+ }
395
+
396
+ d-article ol ol {
397
+ margin-bottom: 0.0em;
398
+ }
399
+
400
+ d-article hr {
401
+ grid-column: text;
402
+ }
403
+
404
+ /* Memory visualization */
405
+ #graph-all {
406
+ min-width: 500px;
407
+ margin-right: 10px;
408
+ margin-bottom: 2rem;
409
+ padding: 0.5rem;
410
+ background: #f9fafb;
411
+ border-radius: 12px;
412
+ border: 1px solid #e5e7eb;
413
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
414
+ }
415
+
416
+
417
+ /* Main container styles */
418
+ #controls {
419
+ max-width: 1200px;
420
+ /* margin: 2rem auto; */
421
+ margin-bottom: 2rem;
422
+ margin-left: 10px;
423
+ padding: 0.6rem;
424
+ background: #f9fafb;
425
+ border-radius: 12px;
426
+ border: 1px solid #e5e7eb;
427
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
428
+ }
429
+
430
+ /* Grid layout */
431
+ #controls {
432
+ display: grid;
433
+ grid-template-columns: 1fr 1fr;
434
+ /* gap: 2rem; */
435
+ }
436
+
437
+ /* Cell styles */
438
+ .cell {
439
+ margin-bottom: 0.2rem;
440
+ }
441
+
442
+ /* Label styles */
443
+ label {
444
+ display: block;
445
+ /* margin-bottom: 0.5rem; */
446
+ font-size: 0.8rem;
447
+ font-weight: 500;
448
+ color: #374151;
449
+ }
450
+
451
+ /* Input container for range + number combination */
452
+ .input-container {
453
+ display: flex;
454
+ gap: 1rem;
455
+ align-items: center;
456
+ }
457
+
458
+ /* Range input styling */
459
+ input[type="range"] {
460
+ flex: 1;
461
+ height: 6px;
462
+ background: #e5e7eb;
463
+ border-radius: 3px;
464
+ appearance: none;
465
+ outline: none;
466
+ }
467
+
468
+ input[type="range"]::-webkit-slider-thumb {
469
+ appearance: none;
470
+ width: 16px;
471
+ height: 16px;
472
+ background: #3b82f6;
473
+ border-radius: 50%;
474
+ cursor: pointer;
475
+ transition: background 0.15s ease;
476
+ }
477
+
478
+ input[type="range"]::-webkit-slider-thumb:hover {
479
+ background: #2563eb;
480
+ }
481
+
482
+ /* Number input styling */
483
+ input[type="number"] {
484
+ width: 80px;
485
+ padding: 0.5rem;
486
+ border: 1px solid #e5e7eb;
487
+ border-radius: 6px;
488
+ font-size: 0.9rem;
489
+ color: #374151;
490
+ }
491
+
492
+ /* Select styling */
493
+ select {
494
+ width: 100%;
495
+ padding: 0.5rem;
496
+ border: 1px solid #e5e7eb;
497
+ border-radius: 6px;
498
+ background: white;
499
+ font-size: 0.9rem;
500
+ color: #374151;
501
+ cursor: pointer;
502
+ }
503
+
504
+ /* Checkbox styling */
505
+ input[type="checkbox"] {
506
+ width: 1.2rem;
507
+ height: 1.2rem;
508
+ margin-right: 0.5rem;
509
+ border: 2px solid #e5e7eb;
510
+ border-radius: 4px;
511
+ cursor: pointer;
512
+ }
513
+
514
+ /* Column specific styles */
515
+ .column-1 {
516
+ padding-right: 0.5rem;
517
+ }
518
+
519
+ .column-2 {
520
+ padding-left: 0.5rem;
521
+ }
522
+
523
+ /* Checkbox container */
524
+ .checkbox-container {
525
+ display: flex;
526
+ align-items: center;
527
+ margin-bottom: 1rem;
528
+ }
529
+
530
+ /* Memory visualization styles */
531
+ .memory-block {
532
+ background: #fff;
533
+ border-radius: 8px;
534
+ padding: 1rem;
535
+ margin-bottom: 1rem;
536
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
537
+ }
538
+
539
+ .memory-title {
540
+ font-size: 1.1rem;
541
+ font-weight: 500;
542
+ color: #374151;
543
+ margin-bottom: 0.5rem;
544
+ }
545
+
546
+ .memory-value {
547
+ font-size: 1.5rem;
548
+ font-weight: 600;
549
+ color: #3b82f6;
550
+ }
551
+
552
+ /* Responsive adjustments */
553
+ @media (max-width: 768px) {
554
+ #controls {
555
+ grid-template-columns: 1fr;
556
+ padding: 1rem;
557
+ }
558
+
559
+ .column-1, .column-2 {
560
+ padding: 0;
561
+ }
562
+ }
563
+
564
+ /* Hover states and transitions */
565
+ input:hover, select:hover {
566
+ border-color: #3b82f6;
567
+ }
568
+
569
+ input:focus, select:focus {
570
+ border-color: #2563eb;
571
+ outline: none;
572
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);
573
+ }
574
+
575
+ /* Add smooth transitions */
576
+ input, select, button {
577
+ transition: all 0.15s ease;
578
+ }
579
+
580
+ /* Preset dropdown special styling */
581
+ select[name="presets"] {
582
+ background-color: #f3f4f6;
583
+ font-weight: 500;
584
+ }
585
+
586
+ /* Memory graph enhancements */
587
+ .activation-memory {
588
+ background: #dbeafe;
589
+ padding: 1rem;
590
+ border-radius: 8px;
591
+ margin-bottom: 1rem;
592
+ }
593
+
594
+ .gradient-memory {
595
+ background: #ede9fe;
596
+ padding: 1rem;
597
+ border-radius: 8px;
598
+ }
599
+
python/code/qwen_per_token_visualization.py CHANGED
@@ -3,6 +3,7 @@ import torch
3
  from transformers import AutoTokenizer
4
  import networkx as nx
5
  import plotly.graph_objects as go
 
6
 
7
  def find_similar_embeddings(target_embedding, n=10):
8
  """
@@ -97,7 +98,7 @@ token_id_list, prompt_embeddings, prompt_token_str = prompt_to_embeddings("""We
97
 
98
  tokens_and_neighbors = {}
99
  for i in range(1, len(prompt_embeddings[0])):
100
- token_results = find_similar_embeddings(prompt_embeddings[0][i], n=20)
101
  similar_embs = []
102
  for word, score in token_results:
103
  if word.strip().lower() != prompt_token_str[i].strip().lower():
@@ -126,15 +127,16 @@ for token, neighbors in tokens_and_neighbors.items():
126
  for neighbor in neighbors:
127
  G.add_edge(token, neighbor)
128
 
129
- # Generate positions using force-directed layout
130
- pos = nx.spring_layout(G, k=0.3, iterations=100)
 
 
 
 
131
 
132
- # pos = nx.circular_layout(G)
133
- # pos = nx.kamada_kawai_layout(G)
134
-
135
- # Define visualization dimensions
136
- viz_width = 300
137
- viz_height = 100
138
 
139
  # Extract edge coordinates and scale them
140
  edge_x, edge_y = [], []
@@ -142,40 +144,74 @@ for edge in G.edges():
142
  x0, y0 = pos[edge[0]]
143
  x1, y1 = pos[edge[1]]
144
  # Scale coordinates to fill the width/height
145
- x0, x1 = x0 * viz_width, x1 * viz_width # Scale x coordinates to width
146
- y0, y1 = y0 * viz_height, y1 * viz_height # Scale y coordinates to height
147
  edge_x.extend([x0, x1, None])
148
  edge_y.extend([y0, y1, None])
149
 
150
-
151
  # Node coordinates and data - scale the positions
152
- node_x = [pos[node][0] * viz_width for node in G.nodes()] # Scale x to width
153
- node_y = [pos[node][1] * viz_height for node in G.nodes()] # Scale y to height
154
  node_degrees = dict(G.degree())
155
- node_sizes = [(degree + 1) * 1 for degree in node_degrees.values()]
156
-
157
- # Node trace with custom colorscale
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  node_trace = go.Scatter(
159
  x=node_x, y=node_y,
160
  mode='markers+text',
161
- text=[node for node in G.nodes()],
162
  textposition="top center",
 
 
 
163
  marker=dict(
164
  size=node_sizes,
165
- color=list(node_degrees.values()),
166
- colorscale='Viridis',
167
- opacity=0.8,
168
  line_width=0.5
169
  ),
170
- customdata=[[f"Connections: {deg}"] for deg in node_degrees.values()],
171
- hovertemplate="<b>%{text}</b><br>%{customdata[0]}<extra></extra>",
172
  hoverlabel=dict(namelength=0)
173
  )
174
 
175
- # Edge trace (thin lines)
176
  edge_trace = go.Scatter(
177
  x=edge_x, y=edge_y,
178
- line=dict(width=0.3, color='rgba(150,150,150,0.6)'),
179
  hoverinfo='none',
180
  mode='lines'
181
  )
@@ -202,7 +238,6 @@ fig = go.Figure(data=[edge_trace, node_trace],
202
  scaleratio=1
203
  )
204
  ))
205
-
206
  fig.show()
207
 
208
  fig.write_html(r"src\fragments\token_visualization.html",
 
3
  from transformers import AutoTokenizer
4
  import networkx as nx
5
  import plotly.graph_objects as go
6
+ import random
7
 
8
  def find_similar_embeddings(target_embedding, n=10):
9
  """
 
98
 
99
  tokens_and_neighbors = {}
100
  for i in range(1, len(prompt_embeddings[0])):
101
+ token_results = find_similar_embeddings(prompt_embeddings[0][i], n=40)
102
  similar_embs = []
103
  for word, score in token_results:
104
  if word.strip().lower() != prompt_token_str[i].strip().lower():
 
127
  for neighbor in neighbors:
128
  G.add_edge(token, neighbor)
129
 
130
+ # Generate positions using spring layout with optimized parameters for atlas-like spread
131
+ k = 2
132
+ # iterations = 200
133
+ # pos = nx.spring_layout(G, k=k) # Increased k for more spread
134
+ # works on colab
135
+ pos = nx.forceatlas2_layout(G, max_iter=36)
136
 
137
+ # Define visualization dimensions
138
+ viz_width = 1500 # Increased for better spread
139
+ viz_height = 500 # Increased for better spread
 
 
 
140
 
141
  # Extract edge coordinates and scale them
142
  edge_x, edge_y = [], []
 
144
  x0, y0 = pos[edge[0]]
145
  x1, y1 = pos[edge[1]]
146
  # Scale coordinates to fill the width/height
147
+ x0, x1 = x0 * viz_width, x1 * viz_width # Scale x coordinates
148
+ y0, y1 = y0 * viz_height, y1 * viz_height # Scale y coordinates
149
  edge_x.extend([x0, x1, None])
150
  edge_y.extend([y0, y1, None])
151
 
 
152
  # Node coordinates and data - scale the positions
153
+ node_x = [pos[node][0] * viz_width for node in G.nodes()]
154
+ node_y = [pos[node][1] * viz_height for node in G.nodes()]
155
  node_degrees = dict(G.degree())
156
+ # Assign colors using viridis colorscale
157
+ colors = []
158
+ components = list(nx.connected_components(G))
159
+
160
+ # Create a mapping of nodes to their colors
161
+ node_to_color = {}
162
+ node_opacities = [] # List to store opacity values
163
+ node_labels = [] # List to store node labels
164
+ hover_labels = [] # List to store hover labels
165
+ text_opacities = [] # List to store text opacities
166
+
167
+ # Assign component index to each node for colorscale mapping
168
+ node_component_indices = []
169
+ for node in G.nodes():
170
+ # Find which component the node belongs to
171
+ for i, component in enumerate(components):
172
+ if node in component:
173
+ node_component_indices.append(i)
174
+ break
175
+
176
+ # Set opacity and label based on whether it's a main token or neighbor
177
+ if node in tokens_and_neighbors: # Main token
178
+ node_opacities.append(0.9)
179
+ text_opacities.append(1.0)
180
+ node_labels.append(node)
181
+ hover_labels.append(node)
182
+ else: # Neighbor token
183
+ node_opacities.append(0.6)
184
+ text_opacities.append(0.0) # Lower opacity for neighbor labels
185
+ node_labels.append(node) # Show label with lower opacity
186
+ hover_labels.append(node)
187
+
188
+ node_sizes = [(degree + 5) * 1 for degree in node_degrees.values()] # Increased node sizes
189
+
190
+ # Node trace with viridis colorscale
191
  node_trace = go.Scatter(
192
  x=node_x, y=node_y,
193
  mode='markers+text',
194
+ text=node_labels, # Show all labels
195
  textposition="top center",
196
+ textfont=dict(
197
+ color=[f'rgba(0,0,0,{opacity})' for opacity in text_opacities] # Set text opacity
198
+ ),
199
  marker=dict(
200
  size=node_sizes,
201
+ color=node_component_indices,
202
+ colorscale='plasma',
203
+ opacity=node_opacities, # Use the conditional opacities
204
  line_width=0.5
205
  ),
206
+ customdata=[[hover_labels[i], ' | '.join(G.neighbors(node))] for i, node in enumerate(G.nodes())],
207
+ hovertemplate="<b>%{customdata[0]}</b><br>Similar tokens: %{customdata[1]}<extra></extra>",
208
  hoverlabel=dict(namelength=0)
209
  )
210
 
211
+ # Edge trace with black edges
212
  edge_trace = go.Scatter(
213
  x=edge_x, y=edge_y,
214
+ line=dict(width=0.5, color='grey'), # Set edge color to grey
215
  hoverinfo='none',
216
  mode='lines'
217
  )
 
238
  scaleratio=1
239
  )
240
  ))
 
241
  fig.show()
242
 
243
  fig.write_html(r"src\fragments\token_visualization.html",
src/fragments/banner.html CHANGED
The diff for this file is too large to render. See raw diff
 
src/fragments/token_visualization.html DELETED
@@ -1 +0,0 @@
1
- <div> <div id="0306e1a2-24f7-41a0-a6ae-d2fb9bc09caa" class="plotly-graph-div" style="height:400px; width:1200px;"></div> <script type="text/javascript"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("0306e1a2-24f7-41a0-a6ae-d2fb9bc09caa")) { Plotly.newPlot( "0306e1a2-24f7-41a0-a6ae-d2fb9bc09caa", [{"hoverinfo":"none","line":{"color":"rgba(150,150,150,0.6)","width":0.3},"mode":"lines","x":[125.1556891320955,92.26875261407037,null,125.1556891320955,66.28425824009375,null,125.1556891320955,135.31861839286248,null,125.1556891320955,132.18034737830575,null,125.1556891320955,140.85847962009163,null,125.1556891320955,133.77959117827444,null,125.1556891320955,85.08753262512,null,125.1556891320955,174.79982812058267,null,125.1556891320955,124.54562327021928,null,125.1556891320955,163.00778358283344,null,125.1556891320955,163.92167975476795,null,125.1556891320955,151.13097949884764,null,125.1556891320955,79.23390500675039,null,125.1556891320955,158.66532330918687,null,125.1556891320955,150.3047480608513,null,-224.03505675214728,-262.79049804319794,null,-224.03505675214728,-242.49363723473581,null,-224.03505675214728,-201.54081305236625,null,-224.03505675214728,-212.24397348357581,null,-224.03505675214728,-246.8320463735859,null,-224.03505675214728,-261.764246662516,null,-224.03505675214728,-273.0892854263619,null,-224.03505675214728,-128.1765731941345,null,-224.03505675214728,-175.4787245715868,null,-224.03505675214728,-251.50716262137726,null,-224.03505675214728,-277.6381518998428,null,-224.03505675214728,-271.97850773680074,null,-224.03505675214728,-270.1410983849717,null,-224.03505675214728,-146.44256578708465,null,-224.03505675214728,-218.7869604608651,null,-224.03505675214728,-184.40445669754,null,-224.03505675214728,-211.25536701440174,null,-224.03505675214728,-264.90331225786326,null,-224.03505675214728,-266.3585143981663,null,-194.14685658921823,-184.14260069922744,null,-194.14685658921823,-235.24825360022146,null,-194.14685658921823,-218.25840146629773,null,-194.14685658921823,-207.05596484035203,null,-194.14685658921823,-187.18811591711398,null,-194.14685658921823,-194.11230264600653,null,-194.14685658921823,-188.6463819407847,null,-194.14685658921823,-159.5256727989586,null,-194.14685658921823,-211.33786011613114,null,-194.14685658921823,-234.01009448040583,null,-194.14685658921823,-199.9512203259958,null,-194.14685658921823,-153.37892733617193,null,-194.14685658921823,-201.7949075712353,null,-194.14685658921823,-130.98028412161025,null,-194.14685658921823,-233.20714373186595,null,-194.14685658921823,-202.63567479072918,null,-194.14685658921823,-152.9974575129512,null,-184.14260069922744,-235.24825360022146,null,-184.14260069922744,-234.01009448040583,null,-184.14260069922744,-218.25840146629773,null,-184.14260069922744,-130.98028412161025,null,-184.14260069922744,-152.51592382701713,null,-184.14260069922744,-211.33786011613114,null,-184.14260069922744,-207.05596484035203,null,-184.14260069922744,-194.11230264600653,null,-184.14260069922744,-187.18811591711398,null,-184.14260069922744,-125.72504371609651,null,-184.14260069922744,-226.12119649341142,null,-184.14260069922744,-99.11007447287038,null,-184.14260069922744,-162.67055562632245,null,-184.14260069922744,-213.72844190602726,null,-184.14260069922744,-217.9109144651047,null,-184.14260069922744,-250.72438537570048,null,-218.25840146629773,-187.18811591711398,null,-218.25840146629773,-201.7949075712353,null,-207.05596484035203,-187.18811591711398,null,-207.05596484035203,-189.95894291376231,null,-207.05596484035203,-201.7949075712353,null,-187.18811591711398,-188.6463819407847,null,-187.18811591711398,-202.63567479072918,null,-187.18811591711398,-201.7949075712353,null,-187.18811591711398,-194.11230264600653,null,-187.18811591711398,-250.423568402356,null,-187.18811591711398,-226.10713143947774,null,-187.18811591711398,-98.24428677030214,null,-187.18811591711398,-238.43311337916901,null,-187.18811591711398,-204.5976901147573,null,-187.18811591711398,-199.9512203259958,null,-187.18811591711398,-211.33786011613114,null,-187.18811591711398,-217.9109144651047,null,-187.18811591711398,-153.37892733617193,null,-187.18811591711398,-187.61871731755463,null,-187.18811591711398,-152.9974575129512,null,-187.18811591711398,-124.0366596513836,null,-187.18811591711398,-159.5256727989586,null,-187.18811591711398,-189.95894291376231,null,-187.18811591711398,-216.40304237798432,null,-194.11230264600653,-189.95894291376231,null,-194.11230264600653,-216.40304237798432,null,-194.11230264600653,-201.7949075712353,null,-188.6463819407847,-216.40304237798432,null,-188.6463819407847,-201.7949075712353,null,-211.33786011613114,-189.95894291376231,null,-211.33786011613114,-216.40304237798432,null,-211.33786011613114,-201.7949075712353,null,-199.9512203259958,-201.7949075712353,null,-201.7949075712353,-189.95894291376231,null,-201.7949075712353,-216.40304237798432,null,-201.7949075712353,-122.64188429978114,null,-201.7949075712353,-217.9109144651047,null,-201.7949075712353,-193.7088736548834,null,-201.7949075712353,-187.61871731755463,null,-201.7949075712353,-216.3323051817955,null,-201.7949075712353,-205.92829254122924,null,-201.7949075712353,-236.8920607282106,null,-201.7949075712353,-226.10713143947774,null,-201.7949075712353,-202.63567479072918,null,-201.7949075712353,-238.43311337916901,null,-167.45495193712543,-103.08119817753904,null,-167.45495193712543,-198.5452389512232,null,-167.45495193712543,-119.00111587958584,null,-167.45495193712543,-97.35169318455696,null,-167.45495193712543,-153.08854115582687,null,-167.45495193712543,-231.6824635946127,null,-167.45495193712543,-216.48679722141284,null,-167.45495193712543,-128.72641613886864,null,-167.45495193712543,-134.98736708115857,null,-167.45495193712543,-221.39215636819105,null,-167.45495193712543,-227.583661118982,null,-167.45495193712543,-110.5600189843548,null,-167.45495193712543,-209.80879166987654,null,183.99547524236237,178.8742840673908,null,183.99547524236237,188.04454604091237,null,183.99547524236237,199.44366588033097,null,183.99547524236237,121.7510763991939,null,183.99547524236237,244.53369688870333,null,183.99547524236237,94.5862744589219,null,183.99547524236237,100.72564592168995,null,183.99547524236237,236.46647164919722,null,183.99547524236237,229.65254322665285,null,183.99547524236237,209.51188551386937,null,183.99547524236237,151.71342692623918,null,183.99547524236237,171.249282914738,null,183.99547524236237,226.9439305428507,null,183.99547524236237,225.92296286363438,null,183.99547524236237,245.72287330090248,null,179.36842697989402,140.17011249754108,null,179.36842697989402,175.29963617275212,null,179.36842697989402,234.35542781128547,null,179.36842697989402,240.6471850631626,null,179.36842697989402,212.12426412204374,null,179.36842697989402,190.57765894500358,null,179.36842697989402,229.91821048826134,null,179.36842697989402,91.27598888979081,null,179.36842697989402,187.53439471706196,null,179.36842697989402,120.92833572717292,null,179.36842697989402,239.1005384750548,null,179.36842697989402,108.64902900999812,null,179.36842697989402,242.244137757388,null,179.36842697989402,141.07116898596536,null,84.15457541432407,120.90910641402816,null,84.15457541432407,111.61879553271211,null,84.15457541432407,45.38797256274924,null,84.15457541432407,119.59773518577852,null,84.15457541432407,91.67516742912214,null,84.15457541432407,40.22674556566457,null,84.15457541432407,45.40809829357947,null,84.15457541432407,72.90532709368402,null,84.15457541432407,51.517908921691706,null,84.15457541432407,96.4122069523295,null,84.15457541432407,62.67458517727821,null,84.15457541432407,117.60425442900964,null,84.15457541432407,83.58732886435043,null,84.15457541432407,105.89603839764882,null,84.15457541432407,108.33786646294423,null,84.15457541432407,101.82944719255717,null,-217.9109144651047,-189.95894291376231,null,-217.9109144651047,-216.40304237798432,null,217.9282681145019,167.27636496313121,null,217.9282681145019,166.61075259062002,null,217.9282681145019,278.05260526818023,null,217.9282681145019,266.09061117354025,null,217.9282681145019,211.28647683594716,null,217.9282681145019,259.356787174491,null,217.9282681145019,286.6822562306241,null,217.9282681145019,277.8652243015178,null,217.9282681145019,168.04033459960633,null,217.9282681145019,234.99800548810413,null,217.9282681145019,219.33589026921842,null,217.9282681145019,279.37714492987965,null,217.9282681145019,223.83393415272562,null,217.9282681145019,288.75788960693905,null,217.9282681145019,242.5754505101079,null,217.9282681145019,126.27403427212936,null,217.9282681145019,108.02060484962075,null,-144.12732582359504,-169.14924264745235,null,-144.12732582359504,-100.28239927517039,null,-144.12732582359504,-150.75192674840585,null,-144.12732582359504,-82.76867360083072,null,-144.12732582359504,-176.72929242691114,null,-144.12732582359504,-79.5192131159991,null,-144.12732582359504,-86.1673323190417,null,-144.12732582359504,-190.8262167773214,null,-144.12732582359504,-133.4339193261402,null,-144.12732582359504,-186.92000885436534,null,-144.12732582359504,-111.1731393755485,null,-144.12732582359504,-185.67720320028454,null,-144.12732582359504,-157.61384406446197,null,-144.12732582359504,-162.66350909585935,null,-144.12732582359504,-191.75104943475887,null,-144.12732582359504,-178.94595541567332,null,-76.36925922567954,-61.43105068065772,null,-76.36925922567954,-39.59899909974269,null,-76.36925922567954,-86.63074679546234,null,-76.36925922567954,-101.58652740877326,null,-76.36925922567954,-58.10123325825757,null,-76.36925922567954,-115.97342420043032,null,-76.36925922567954,-96.73065792164508,null,-76.36925922567954,-32.74833545664606,null,-76.36925922567954,-98.22364140560538,null,-76.36925922567954,-112.62585169274163,null,-76.36925922567954,-60.03109843555815,null,-76.36925922567954,-55.30838379313895,null,-76.36925922567954,-31.473534643395578,null,-76.36925922567954,-21.067864276883206,null,-76.36925922567954,-81.78963670472167,null,-76.36925922567954,-89.01485683278004,null,-76.36925922567954,-111.71843533022124,null,-76.36925922567954,-101.90834871293353,null,-76.36925922567954,-116.19277023457467,null,-61.43105068065772,-32.74833545664606,null,-39.59899909974269,-32.74833545664606,null,-32.74833545664606,-39.68685141792711,null,-32.74833545664606,-60.03109843555815,null,-32.74833545664606,5.881256399051858,null,-32.74833545664606,-6.03378829268237,null,-32.74833545664606,-3.1047945664593883,null,-32.74833545664606,-31.28470405979463,null,-32.74833545664606,-17.06052120781186,null,-32.74833545664606,-64.71973032830252,null,-32.74833545664606,-22.78881512198163,null,-32.74833545664606,-20.182801335778194,null,-32.74833545664606,-42.55963767303981,null,-32.74833545664606,-65.58993616093306,null,-32.74833545664606,-54.100242992880816,null,-32.74833545664606,-33.401567534970596,null,-32.74833545664606,2.180407190018988,null,-32.74833545664606,-24.9133366549721,null,-189.95894291376231,-178.61738265440133,null,-189.95894291376231,-216.40304237798432,null,-189.95894291376231,-174.15259749976906,null,-189.95894291376231,-216.3323051817955,null,-189.95894291376231,-251.2034255872714,null,-189.95894291376231,-120.30912807879027,null,-189.95894291376231,-134.96162550488802,null,-189.95894291376231,-236.8920607282106,null,-189.95894291376231,-235.22728071166367,null,-216.40304237798432,-152.71068689474956,null,-216.40304237798432,-278.62206300685745,null,-216.40304237798432,-216.3323051817955,null,-216.40304237798432,-236.8920607282106,null,-216.40304237798432,-251.2034255872714,null,-216.40304237798432,-235.22728071166367,null,-216.40304237798432,-233.60855446452467,null,192.78581834471382,205.0619304841038,null,192.78581834471382,263.2708763420845,null,192.78581834471382,246.5054717335194,null,192.78581834471382,157.34389904020696,null,192.78581834471382,106.64512851376362,null,192.78581834471382,251.4718748704143,null,192.78581834471382,259.35471880020674,null,192.78581834471382,137.34325587948652,null,192.78581834471382,151.319797991627,null,192.78581834471382,135.0857715433031,null,192.78581834471382,229.46215245547074,null,192.78581834471382,211.91636770136176,null,192.78581834471382,264.00931303473664,null,192.78581834471382,148.01066170154397,null,192.78581834471382,211.1036209135244,null,192.78581834471382,126.65044699155334,null,-50.76891037147472,-19.65975360711646,null,-50.76891037147472,-10.192299190170708,null,-50.76891037147472,-26.73525762813391,null,-50.76891037147472,-30.796288719777465,null,-50.76891037147472,-99.28813562889422,null,-50.76891037147472,-17.529487642523858,null,-50.76891037147472,-103.77014771925842,null,-50.76891037147472,-75.72587491259364,null,-50.76891037147472,-40.81737743680411,null,-50.76891037147472,-40.749513966684475,null,-50.76891037147472,-18.476756728519543,null,-50.76891037147472,-85.29498442597415,null,-50.76891037147472,-56.037123951977435,null,-50.76891037147472,-92.05801744455238,null,-50.76891037147472,-46.986751592050894,null,-50.76891037147472,-30.467443233189123,null,-50.76891037147472,-62.160623375696176,null,-50.76891037147472,-67.51125153742177,null,-50.76891037147472,-44.8933272393122,null,156.45157668554367,190.4513370284397,null,156.45157668554367,138.17913837732348,null,156.45157668554367,167.58816096870686,null,156.45157668554367,189.9345507338126,null,156.45157668554367,185.6934776676354,null,156.45157668554367,209.56406292454636,null,156.45157668554367,104.50622084316028,null,156.45157668554367,122.67174949299314,null,156.45157668554367,210.55559451267018,null,156.45157668554367,150.48268518901946,null,156.45157668554367,113.99172698426011,null,156.45157668554367,108.01846060720912,null,156.45157668554367,201.03617241275583,null,156.45157668554367,100.28011760991171,null,156.45157668554367,199.29442791782637,null,156.45157668554367,88.853007028315,null,156.45157668554367,178.76647233354888,null,155.24980805404826,181.106427452657,null,155.24980805404826,180.64097877067655,null,155.24980805404826,181.98423645390415,null,155.24980805404826,124.71000363494191,null,155.24980805404826,190.09193994616714,null,155.24980805404826,100.54359352764496,null,155.24980805404826,142.2772682751173,null,155.24980805404826,76.03224964615887,null,155.24980805404826,102.91327417676324,null,155.24980805404826,193.71740269891097,null,155.24980805404826,201.652198830446,null,155.24980805404826,186.18825911294124,null,155.24980805404826,202.4500976145186,null,155.24980805404826,168.66930540091013,null,155.24980805404826,171.0948472583693,null,155.24980805404826,117.95539258134107,null,155.24980805404826,198.1824187560957,null,-57.404967306190194,-50.48598520181256,null,-57.404967306190194,-71.06130529253875,null,-57.404967306190194,-24.019293208447788,null,-57.404967306190194,-60.741246859260755,null,-57.404967306190194,-50.35702133235434,null,-57.404967306190194,-15.552905156257973,null,-57.404967306190194,-105.7691379179644,null,-57.404967306190194,-69.53945388937782,null,-57.404967306190194,-79.08609434713605,null,-57.404967306190194,-47.27587908993192,null,-57.404967306190194,-37.44072506720669,null,-57.404967306190194,-95.3744740651581,null,-57.404967306190194,-36.61701825841733,null,-57.404967306190194,-82.90638898221677,null,-57.404967306190194,-25.313767511454653,null,-57.404967306190194,-59.70455317252107,null,-57.404967306190194,-93.31193391334274,null,-57.404967306190194,-37.76247528751222,null,-57.404967306190194,-83.48714069941356,null,224.43440838263356,268.0017792493319,null,224.43440838263356,289.5407259891745,null,224.43440838263356,237.37714637410576,null,224.43440838263356,160.59571757614808,null,224.43440838263356,228.51928259202384,null,224.43440838263356,299.99999999999994,null,224.43440838263356,173.93784258210422,null,224.43440838263356,282.9441020426367,null,224.43440838263356,189.62205516229494,null,224.43440838263356,116.12169478980604,null,224.43440838263356,152.87712650975323,null,224.43440838263356,255.67589373536288,null,224.43440838263356,270.3957952462987,null,224.43440838263356,248.25756116762412,null,224.43440838263356,209.2997057662631,null,224.43440838263356,282.0828610824185,null,-156.39121357983322,-198.08625408624445,null,-156.39121357983322,-188.2516003750717,null,-156.39121357983322,-202.7307544054527,null,-156.39121357983322,-176.94025710221962,null,-156.39121357983322,-175.99941665858464,null,-156.39121357983322,-69.87847679266372,null,-156.39121357983322,-197.08934228353897,null,-156.39121357983322,-83.92720435871914,null,-156.39121357983322,-107.53701747429817,null,-156.39121357983322,-186.40452656202052,null,-156.39121357983322,-128.43390186412825,null,-156.39121357983322,-189.73676261671534,null,-156.39121357983322,-217.09591980960076,null,-156.39121357983322,-212.93528035745533,null,-156.39121357983322,-93.45566773165335,null,-156.39121357983322,-204.1093655355255,null,-156.39121357983322,-153.19343604155537,null,-156.39121357983322,-140.48823934559593,null,-156.39121357983322,-120.1739042626735,null],"y":[-61.232658547428855,-30.40264898591468,null,-61.232658547428855,-39.106970195816245,null,-61.232658547428855,-47.12448760895525,null,-61.232658547428855,-39.36046557421158,null,-61.232658547428855,-84.31746719230168,null,-61.232658547428855,-82.33280957359172,null,-61.232658547428855,-33.018035261788484,null,-61.232658547428855,-65.32705180643676,null,-61.232658547428855,-83.97620571053963,null,-61.232658547428855,-63.08794125934236,null,-61.232658547428855,-70.3596729700629,null,-61.232658547428855,-72.13732496167245,null,-61.232658547428855,-60.02054862138198,null,-61.232658547428855,-81.84733869673275,null,-61.232658547428855,-83.60349447191676,null,29.763660115383534,20.15373953370119,null,29.763660115383534,45.48487838078656,null,29.763660115383534,44.0042624519017,null,29.763660115383534,45.86102570655222,null,29.763660115383534,48.12597097851306,null,29.763660115383534,15.008072677514889,null,29.763660115383534,40.141858247543475,null,29.763660115383534,9.966990233211108,null,29.763660115383534,17.17897118799902,null,29.763660115383534,43.18077155741835,null,29.763660115383534,23.83581491858669,null,29.763660115383534,28.320860757277334,null,29.763660115383534,17.27975039162004,null,29.763660115383534,24.84758771238746,null,29.763660115383534,10.336932898086909,null,29.763660115383534,42.5021193102585,null,29.763660115383534,48.8192029683655,null,29.763660115383534,32.149182920890176,null,29.763660115383534,23.781460720024267,null,-1.3329857414649573,10.319440399694665,null,-1.3329857414649573,3.4219400210992466,null,-1.3329857414649573,0.23573489064173456,null,-1.3329857414649573,4.684778338475355,null,-1.3329857414649573,0.6427986754694929,null,-1.3329857414649573,9.759705048164435,null,-1.3329857414649573,4.819090675046446,null,-1.3329857414649573,-10.12879077050442,null,-1.3329857414649573,4.548736232383017,null,-1.3329857414649573,0.5139027210215651,null,-1.3329857414649573,7.327264321607112,null,-1.3329857414649573,-2.3111677484027475,null,-1.3329857414649573,5.247107919886416,null,-1.3329857414649573,1.4448757752365522,null,-1.3329857414649573,-12.447163181875984,null,-1.3329857414649573,-7.379850519557318,null,-1.3329857414649573,-6.707216466174162,null,10.319440399694665,3.4219400210992466,null,10.319440399694665,0.5139027210215651,null,10.319440399694665,0.23573489064173456,null,10.319440399694665,1.4448757752365522,null,10.319440399694665,29.882517585656636,null,10.319440399694665,4.548736232383017,null,10.319440399694665,4.684778338475355,null,10.319440399694665,9.759705048164435,null,10.319440399694665,0.6427986754694929,null,10.319440399694665,24.609200724799162,null,10.319440399694665,25.138981548729976,null,10.319440399694665,14.825500445239737,null,10.319440399694665,-1.3749836218905356,null,10.319440399694665,-3.9211383116477427,null,10.319440399694665,11.188639217066944,null,10.319440399694665,13.736803040356532,null,0.23573489064173456,0.6427986754694929,null,0.23573489064173456,5.247107919886416,null,4.684778338475355,0.6427986754694929,null,4.684778338475355,8.467529034289099,null,4.684778338475355,5.247107919886416,null,0.6427986754694929,4.819090675046446,null,0.6427986754694929,-7.379850519557318,null,0.6427986754694929,5.247107919886416,null,0.6427986754694929,9.759705048164435,null,0.6427986754694929,-10.009874172061311,null,0.6427986754694929,-6.582476838410706,null,0.6427986754694929,-7.712872221420156,null,0.6427986754694929,-3.6815501852198516,null,0.6427986754694929,15.03024805737666,null,0.6427986754694929,7.327264321607112,null,0.6427986754694929,4.548736232383017,null,0.6427986754694929,11.188639217066944,null,0.6427986754694929,-2.3111677484027475,null,0.6427986754694929,14.42096398465747,null,0.6427986754694929,-6.707216466174162,null,0.6427986754694929,-1.1819405714814535,null,0.6427986754694929,-10.12879077050442,null,0.6427986754694929,8.467529034289099,null,0.6427986754694929,16.156740121616707,null,9.759705048164435,8.467529034289099,null,9.759705048164435,16.156740121616707,null,9.759705048164435,5.247107919886416,null,4.819090675046446,16.156740121616707,null,4.819090675046446,5.247107919886416,null,4.548736232383017,8.467529034289099,null,4.548736232383017,16.156740121616707,null,4.548736232383017,5.247107919886416,null,7.327264321607112,5.247107919886416,null,5.247107919886416,8.467529034289099,null,5.247107919886416,16.156740121616707,null,5.247107919886416,12.156806613472847,null,5.247107919886416,11.188639217066944,null,5.247107919886416,-12.878874437343523,null,5.247107919886416,14.42096398465747,null,5.247107919886416,18.004108687399114,null,5.247107919886416,22.68214914462767,null,5.247107919886416,9.71692987891438,null,5.247107919886416,-6.582476838410706,null,5.247107919886416,-7.379850519557318,null,5.247107919886416,-3.6815501852198516,null,-30.04658034171268,-4.3986799015084,null,-30.04658034171268,-23.574481732000624,null,-30.04658034171268,-34.783829297744035,null,-30.04658034171268,-16.176941521996564,null,-30.04658034171268,-16.215103789528747,null,-30.04658034171268,-39.318059551099466,null,-30.04658034171268,-45.6817867902169,null,-30.04658034171268,-38.04690849771598,null,-30.04658034171268,-34.71229359955223,null,-30.04658034171268,-41.26161956105385,null,-30.04658034171268,-43.94353947182005,null,-30.04658034171268,-30.19887646880485,null,-30.04658034171268,-22.92669585130348,null,19.106487752660044,1.299309811642368,null,19.106487752660044,32.755702230039056,null,19.106487752660044,3.636233634951714,null,19.106487752660044,0.9102378409767661,null,19.106487752660044,33.1704160169538,null,19.106487752660044,10.386536406387622,null,19.106487752660044,11.520549056288713,null,19.106487752660044,34.9563089366152,null,19.106487752660044,16.155421914715625,null,19.106487752660044,10.516059751689454,null,19.106487752660044,29.051171335588045,null,19.106487752660044,5.851598752226663,null,19.106487752660044,35.58416408164244,null,19.106487752660044,20.624340886875107,null,19.106487752660044,30.008611708752763,null,-19.080596875676225,-1.7521930710748097,null,-19.080596875676225,-2.027036363158284,null,-19.080596875676225,-21.144275533253193,null,-19.080596875676225,-27.52439483412977,null,-19.080596875676225,-31.174772634217344,null,-19.080596875676225,-2.643717989203855,null,-19.080596875676225,-32.789812166196775,null,-19.080596875676225,-12.255479736174374,null,-19.080596875676225,-31.341859136645272,null,-19.080596875676225,-27.548043392900425,null,-19.080596875676225,-30.75987082033247,null,-19.080596875676225,1.82291712014143,null,-19.080596875676225,-24.147767003126848,null,-19.080596875676225,-29.05880868132401,null,59.310562429705,62.979161841823924,null,59.310562429705,65.879872475115,null,59.310562429705,58.2356207292303,null,59.310562429705,79.54699938801397,null,59.310562429705,82.56846519180621,null,59.310562429705,30.549839347662967,null,59.310562429705,46.555846091999996,null,59.310562429705,34.014018307659185,null,59.310562429705,34.33801891669624,null,59.310562429705,79.67662352760638,null,59.310562429705,37.03159294721015,null,59.310562429705,74.96884626803248,null,59.310562429705,76.83156546945328,null,59.310562429705,77.2657211135448,null,59.310562429705,81.85764606088463,null,59.310562429705,40.505256572253536,null,11.188639217066944,8.467529034289099,null,11.188639217066944,16.156740121616707,null,-26.936903873509216,-12.544832592662658,null,-26.936903873509216,-37.16213496515316,null,-26.936903873509216,-41.39853912686181,null,-26.936903873509216,-21.3468706152252,null,-26.936903873509216,-41.38392723301097,null,-26.936903873509216,-40.33290541199983,null,-26.936903873509216,-32.71210342834757,null,-26.936903873509216,-29.070715268925262,null,-26.936903873509216,-8.160131557551335,null,-26.936903873509216,-42.02905575552137,null,-26.936903873509216,-14.743470023400922,null,-26.936903873509216,-37.79657411156956,null,-26.936903873509216,-11.16932670678858,null,-26.936903873509216,-36.384709395575626,null,-26.936903873509216,-12.285566842846048,null,-26.936903873509216,-25.381351461566627,null,-26.936903873509216,-14.46157247979307,null,-58.3306446709152,-44.591032385084475,null,-58.3306446709152,-40.10732559513825,null,-58.3306446709152,-74.94752213304983,null,-58.3306446709152,-56.0873189072749,null,-58.3306446709152,-78.39995221684788,null,-58.3306446709152,-50.252739844118096,null,-58.3306446709152,-46.639583822264605,null,-58.3306446709152,-69.50939861674023,null,-58.3306446709152,-72.93768855840119,null,-58.3306446709152,-60.47457676124773,null,-58.3306446709152,-32.88259897680281,null,-58.3306446709152,-74.20429890961734,null,-58.3306446709152,-40.22350783898313,null,-58.3306446709152,-72.67958066398825,null,-58.3306446709152,-76.73403999721755,null,-58.3306446709152,-50.2643315918098,null,60.597471261589355,73.91926114497525,null,60.597471261589355,52.129840539218584,null,60.597471261589355,83.79619176458735,null,60.597471261589355,40.582513102707836,null,60.597471261589355,44.12581442691714,null,60.597471261589355,48.12481852739783,null,60.597471261589355,44.328749751255884,null,60.597471261589355,66.48921898544128,null,60.597471261589355,83.8191665005585,null,60.597471261589355,66.98698219010804,null,60.597471261589355,77.79995641553352,null,60.597471261589355,76.51197816503438,null,60.597471261589355,31.588380875747447,null,60.597471261589355,43.49098525427896,null,60.597471261589355,39.13251538765774,null,60.597471261589355,77.4864342225817,null,60.597471261589355,80.993164199928,null,60.597471261589355,80.17409192982831,null,60.597471261589355,61.10312209554084,null,73.91926114497525,66.48921898544128,null,52.129840539218584,66.48921898544128,null,66.48921898544128,84.1542485638914,null,66.48921898544128,77.79995641553352,null,66.48921898544128,58.7145876880087,null,66.48921898544128,77.89193348928382,null,66.48921898544128,47.24126817839807,null,66.48921898544128,89.8163711442736,null,66.48921898544128,85.09985417877928,null,66.48921898544128,53.413520945520844,null,66.48921898544128,43.72181889139823,null,66.48921898544128,89.63209314512235,null,66.48921898544128,89.95832127172059,null,66.48921898544128,76.44084832990058,null,66.48921898544128,54.20495686644006,null,66.48921898544128,31.815315056441563,null,66.48921898544128,74.15977833650346,null,66.48921898544128,48.333437497516066,null,8.467529034289099,25.218785462837946,null,8.467529034289099,16.156740121616707,null,8.467529034289099,-8.343749933918499,null,8.467529034289099,18.004108687399114,null,8.467529034289099,9.465604923906847,null,8.467529034289099,9.388576288026794,null,8.467529034289099,-5.263364100798611,null,8.467529034289099,9.71692987891438,null,8.467529034289099,18.71075996400204,null,16.156740121616707,28.094017057056337,null,16.156740121616707,27.706056693801294,null,16.156740121616707,18.004108687399114,null,16.156740121616707,9.71692987891438,null,16.156740121616707,9.465604923906847,null,16.156740121616707,18.71075996400204,null,16.156740121616707,33.87931641028039,null,3.57870538594122,16.287318361992092,null,3.57870538594122,2.951378417295961,null,3.57870538594122,1.8357427260893173,null,3.57870538594122,17.488285698997352,null,3.57870538594122,5.824477654747566,null,3.57870538594122,7.421426899197983,null,3.57870538594122,11.01346837738043,null,3.57870538594122,-4.675697155275605,null,3.57870538594122,-11.52800197679394,null,3.57870538594122,-11.025627892783074,null,3.57870538594122,-5.578655380639568,null,3.57870538594122,-6.424239681370965,null,3.57870538594122,6.888822855983951,null,3.57870538594122,12.675170563901089,null,3.57870538594122,-10.442713016272922,null,3.57870538594122,14.161217160367634,null,-44.101128609899845,-22.257594187689666,null,-44.101128609899845,-33.115865509169765,null,-44.101128609899845,-60.41343614949483,null,-44.101128609899845,-64.11951250015876,null,-44.101128609899845,-55.47069396780824,null,-44.101128609899845,-31.463352249522732,null,-44.101128609899845,-52.241680809453385,null,-44.101128609899845,-59.55432514216085,null,-44.101128609899845,-19.000884063558875,null,-44.101128609899845,-62.0111290443424,null,-44.101128609899845,-37.453449822765776,null,-44.101128609899845,-56.328452794398366,null,-44.101128609899845,-63.48554020350215,null,-44.101128609899845,-58.02987819617219,null,-44.101128609899845,-65.76361852086683,null,-44.101128609899845,-20.103856726456883,null,-44.101128609899845,-19.783918169819152,null,-44.101128609899845,-64.68190860749368,null,-44.101128609899845,-14.97878050564714,null,47.94587502356901,67.03567341405798,null,47.94587502356901,26.235934864389687,null,47.94587502356901,34.117902097534184,null,47.94587502356901,47.27907420693458,null,47.94587502356901,62.769844835724165,null,47.94587502356901,64.16419999223163,null,47.94587502356901,49.45986503062008,null,47.94587502356901,22.322991125356438,null,47.94587502356901,59.43564211568116,null,47.94587502356901,31.564914857256444,null,47.94587502356901,24.707157537628678,null,47.94587502356901,45.040769336412524,null,47.94587502356901,67.09558051743677,null,47.94587502356901,40.83833297409045,null,47.94587502356901,61.28697590446323,null,47.94587502356901,41.53244323064918,null,47.94587502356901,67.06666289761493,null,-59.284237470899015,-76.2568400647437,null,-59.284237470899015,-50.54687273000161,null,-59.284237470899015,-56.51051013753939,null,-59.284237470899015,-70.29361628237612,null,-59.284237470899015,-48.635577667671356,null,-59.284237470899015,-54.744378054129186,null,-59.284237470899015,-74.14599337830444,null,-59.284237470899015,-42.43966545610227,null,-59.284237470899015,-61.17785473710132,null,-59.284237470899015,-54.310875717010056,null,-59.284237470899015,-52.23322026341803,null,-59.284237470899015,-71.1860814767057,null,-59.284237470899015,-70.41918543426927,null,-59.284237470899015,-51.72232591268296,null,-59.284237470899015,-44.524198876613184,null,-59.284237470899015,-39.3840035750892,null,-59.284237470899015,-78.92820865026476,null,-58.50520477507999,-31.178597888369797,null,-58.50520477507999,-82.38960017163352,null,-58.50520477507999,-70.32016701308069,null,-58.50520477507999,-83.01889580108474,null,-58.50520477507999,-82.35140426961884,null,-58.50520477507999,-54.424747160363864,null,-58.50520477507999,-64.23223220324785,null,-58.50520477507999,-78.41820954594131,null,-58.50520477507999,-40.67171100311256,null,-58.50520477507999,-75.24868873427731,null,-58.50520477507999,-26.8965195218095,null,-58.50520477507999,-50.865773267755166,null,-58.50520477507999,-32.558512132253824,null,-58.50520477507999,-81.68249810774549,null,-58.50520477507999,-30.26268282715402,null,-58.50520477507999,-32.38761609105376,null,-58.50520477507999,-72.22224363091205,null,-58.50520477507999,-77.63957570258546,null,-58.50520477507999,-76.3175671791781,null,4.548273003794654,-3.772230471013602,null,4.548273003794654,3.2608301446361865,null,4.548273003794654,19.62273985777471,null,4.548273003794654,-11.416392216575998,null,4.548273003794654,22.246473872637925,null,4.548273003794654,7.934806675142061,null,4.548273003794654,-11.76794554417753,null,4.548273003794654,14.856770728068472,null,4.548273003794654,-11.997828079587164,null,4.548273003794654,6.979373884311624,null,4.548273003794654,-6.744326802135979,null,4.548273003794654,19.31376810550477,null,4.548273003794654,-7.848945753595495,null,4.548273003794654,17.15011209275767,null,4.548273003794654,20.197216997004027,null,4.548273003794654,10.961325263590812,null,41.29393430359698,62.48841971161314,null,41.29393430359698,60.12972535146992,null,41.29393430359698,53.2233982085434,null,41.29393430359698,16.92153488322955,null,41.29393430359698,62.63131419251968,null,41.29393430359698,18.269580216015424,null,41.29393430359698,31.94884781768654,null,41.29393430359698,32.138978438401935,null,41.29393430359698,27.143934658370316,null,41.29393430359698,63.839705234603784,null,41.29393430359698,17.44237071896838,null,41.29393430359698,51.46890761247238,null,41.29393430359698,49.68209073163034,null,41.29393430359698,52.994724573750304,null,41.29393430359698,17.75374847289083,null,41.29393430359698,59.62696970326129,null,41.29393430359698,56.37928707420842,null,41.29393430359698,22.324267668697992,null,41.29393430359698,49.29293780283585,null],"type":"scatter"},{"customdata":[["Connections: 15"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 19"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 17"],["Connections: 17"],["Connections: 2"],["Connections: 4"],["Connections: 5"],["Connections: 23"],["Connections: 6"],["Connections: 4"],["Connections: 2"],["Connections: 6"],["Connections: 2"],["Connections: 3"],["Connections: 2"],["Connections: 20"],["Connections: 2"],["Connections: 1"],["Connections: 3"],["Connections: 2"],["Connections: 13"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 15"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 14"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 16"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 2"],["Connections: 1"],["Connections: 2"],["Connections: 1"],["Connections: 5"],["Connections: 2"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 17"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 16"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 19"],["Connections: 2"],["Connections: 2"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 19"],["Connections: 1"],["Connections: 1"],["Connections: 2"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 15"],["Connections: 1"],["Connections: 14"],["Connections: 1"],["Connections: 3"],["Connections: 2"],["Connections: 1"],["Connections: 1"],["Connections: 3"],["Connections: 2"],["Connections: 16"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 19"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 17"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 17"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 19"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 16"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 19"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"],["Connections: 1"]],"hoverlabel":{"namelength":0},"hovertemplate":"\u003cb\u003e%{text}\u003c\u002fb\u003e\u003cbr\u003e%{customdata[0]}\u003cextra\u003e\u003c\u002fextra\u003e","marker":{"color":[15,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,19,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,17,17,2,4,5,23,6,4,2,6,2,3,2,20,2,1,3,2,13,1,1,1,1,1,1,1,1,1,1,1,1,1,15,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,14,1,1,1,1,1,1,1,1,1,1,1,1,1,1,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,2,1,5,2,1,1,1,1,1,1,1,1,17,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,19,2,2,1,1,1,1,1,19,1,1,2,1,1,1,1,1,1,1,1,15,1,14,1,3,2,1,1,3,2,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,19,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,17,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,17,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,19,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,19,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"colorscale":[[0.0,"#440154"],[0.1111111111111111,"#482878"],[0.2222222222222222,"#3e4989"],[0.3333333333333333,"#31688e"],[0.4444444444444444,"#26828e"],[0.5555555555555556,"#1f9e89"],[0.6666666666666666,"#35b779"],[0.7777777777777778,"#6ece58"],[0.8888888888888888,"#b5de2b"],[1.0,"#fde725"]],"line":{"width":0.5},"opacity":0.8,"size":[16,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,20,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,18,18,3,5,6,24,7,5,3,7,3,4,3,21,3,2,4,3,14,2,2,2,2,2,2,2,2,2,2,2,2,2,16,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,15,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,3,2,6,3,2,2,2,2,2,2,2,2,18,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,20,3,3,2,2,2,2,2,20,2,2,3,2,2,2,2,2,2,2,2,16,2,15,2,4,3,2,2,4,3,17,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,20,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,18,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,18,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,20,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,20,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]},"mode":"markers+text","text":["We","\u6211\u4eec",".We","\u003eWe","_we","You","This","It","To","The","Let","Our","If",".we","\u6211\u5011","\u6211\u4eec\u5728"," propose"," proposes"," proposing"," proposed"," proposal"," Proposed"," proposals"," Proposal","proposal","Proposal","\u63d0\u51fa","\u63d0\u8bae","Prop","\u63d0\u6848"," suggest"," propos\u00e9","\u63d0\u51fa\u7684","\u63d0\u51fa\u4e86"," Prop","_prop"," a"," the"," an"," "," (",","," in","."," \\"," to"," this","1"," -"," and"," it"," x",":","2"," new","_new","\u65b0","(new","\u65b0\u7684"," newly","\u7684\u65b0",".new","-new","[new","=new"," novel",",new"," \u65b0"," simple","\u7b80\u5355","\u7b80\u5355\u7684","_simple"," simpler","-simple","\u7c21\u55ae"," simples"," simplest",".simple"," simplicity","imple"," straightforward","\u002fsimple"," simplistic","\u5f88\u7b80\u5355"," network"," networks","\u7f51\u7edc","_network"," Networks","-network","(network",".network"," networking","\u002fnetwork","\u7db2\u7d61","etwork"," \u0441\u0435\u0442\u0438","_NETWORK"," r\u00e9seau"," architecture"," architectures"," architectural"," Architect"," architect","\u67b6\u6784","_arch"," architects",".arch","Arch"," arch"," ARCH"," Architects","arch","_ARCH"," Arch","\u5efa\u7bc9",";","-","(","\u002f","\n"," for"," is","0"," that"," these"," its"," all"," each"," some"," their"," Transformer"," Transformers"," transformers","\u003cTransform","\tTransform","Transformation"," Transformation","\ttransform","\u05d4\u05e4\u05db\u05d5"," PureComponent"," onFailure"," returnUrl","\ud83d\udc5a",".sendRedirect","\ud0d3","\ud5f4","\u05d4\u05ea\u05e0\u05d2\u05d3","DrawerToggle"," based","-based","_based","\u6839\u636e","\u57fa\u4e8e","-Based"," according","\u4f9d\u636e"," BASE"," depending"," bas","\u6839\u64da"," inspired"," \u043e\u0441\u043d\u043e\u0432\u0430\u043d"," using"," \ufffd"," base"," solely"," exclusively"," purely"," primarily"," sole"," merely","\u4ec5\u4ec5"," mainly"," entirely","\u4ec5","sole"," wholly"," ONLY","_only","only"," predominantly"," chiefly"," wy\u0142\u0105cznie"," apenas","-only"," on","_on"," with"," \u043d\u0430"," of"," from"," at","-on"," as"," by"," attention","_attention","\u6ce8\u610f\u529b"," attent"," attn","\u5173\u6ce8"," aten\u00e7\u00e3o"," atenci\u00f3n"," \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435",".att","\u7684\u5173\u6ce8"," attentive","\u6ce8\u610f"," \u0432\u043d\u0438\u043c"," emphasis","\u7559\u610f","\u95dc\u6ce8"," mechanisms"," mechanism"," Mechan","\u673a\u5236","Mech"," \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c"," \u043c\u0435\u0445\u0430\u043d\u0438\u0437"," mech"," mechanics"," mec"," Mechanics"," Mech"," mechan","\u5de5\u4f5c\u673a\u5236","\u6a5f\u69cb","\tme"," methodologies"," mechanic","\u6a5f"," \u043c\u0435\u0445"," dispens"," dispenser"," Disp","_DISP","\u303c","UIAlertView","\u05d3\u05de\u05d5","\u8bb1","\u05de\u05e4\u05d9","\ud83c\udf9b","\ud83c\udd99","\u062a\u0631\u0627\u062b","\ufffd","\u05ea\u05e6\u05d5\u05d2"," ElementRef","\u30b9\u30dd\u30fc\ufffd",".ViewModel","\ud83d\udd33","ing","ed","ting","ming","ings","\u0629","inging","er","ingt","ging","ning","es","-ing","\u4e86","inge","izing","inged","\u0438\u043d\u0433","_with"," avec"," without"," recurrence"," Rec","Rec"," recurrent"," recursion","rec","-rec"," rec"," recursive","_rec","\trec","(rec"," recurs"," recur"," REC","\u9012","recur","\u002frec",".rec"," \u0440\u0435\u043a"," or","\u548c"," &"," conv"," convolution","(conv",".conv","_conv"," convex",".Conv","(Conv","\u51f8"," convo","\u5377"," CON","_CONV","CON"," adv"," \u0432\u044b\u043f"," \u05e7\u05d5\u05e0","olutions"," Solutions"," solutions","OLUTION","olution","solution"," SOLUTION","_solution","\u89e3\u51b3\u65b9\u6848","Solution"," Solution"," \u0440\u0435\u0448\u0435\u043d\u0438\u044f"," solution"," L\u00f6s"," solu\u00e7\u00e3o"," soluci\u00f3n","\u89e3","oluci\u00f3n"," \u0440\u0435\u0448\u0435\u043d\u0438\u0435","olving"," completely"," totally","\u5b8c\u5168"," altogether"," Completely"," completamente"," fully"," Entire","pletely"," Totally","\u5b8c\u5168\u662f"," totalmente"," entire"," \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e"," utterly"],"textposition":"top center","x":[125.1556891320955,92.26875261407037,66.28425824009375,135.31861839286248,132.18034737830575,140.85847962009163,133.77959117827444,85.08753262512,174.79982812058267,124.54562327021928,163.00778358283344,163.92167975476795,151.13097949884764,79.23390500675039,158.66532330918687,150.3047480608513,-224.03505675214728,-262.79049804319794,-242.49363723473581,-201.54081305236625,-212.24397348357581,-246.8320463735859,-261.764246662516,-273.0892854263619,-128.1765731941345,-175.4787245715868,-251.50716262137726,-277.6381518998428,-271.97850773680074,-270.1410983849717,-146.44256578708465,-218.7869604608651,-184.40445669754,-211.25536701440174,-264.90331225786326,-266.3585143981663,-194.14685658921823,-184.14260069922744,-235.24825360022146,-218.25840146629773,-207.05596484035203,-187.18811591711398,-194.11230264600653,-188.6463819407847,-159.5256727989586,-211.33786011613114,-234.01009448040583,-199.9512203259958,-153.37892733617193,-201.7949075712353,-130.98028412161025,-233.20714373186595,-202.63567479072918,-152.9974575129512,-167.45495193712543,-103.08119817753904,-198.5452389512232,-119.00111587958584,-97.35169318455696,-153.08854115582687,-231.6824635946127,-216.48679722141284,-128.72641613886864,-134.98736708115857,-221.39215636819105,-227.583661118982,-110.5600189843548,-209.80879166987654,183.99547524236237,178.8742840673908,188.04454604091237,199.44366588033097,121.7510763991939,244.53369688870333,94.5862744589219,100.72564592168995,236.46647164919722,229.65254322665285,209.51188551386937,151.71342692623918,171.249282914738,226.9439305428507,225.92296286363438,245.72287330090248,179.36842697989402,140.17011249754108,175.29963617275212,234.35542781128547,240.6471850631626,212.12426412204374,190.57765894500358,229.91821048826134,91.27598888979081,187.53439471706196,120.92833572717292,239.1005384750548,108.64902900999812,242.244137757388,141.07116898596536,84.15457541432407,120.90910641402816,111.61879553271211,45.38797256274924,119.59773518577852,91.67516742912214,40.22674556566457,45.40809829357947,72.90532709368402,51.517908921691706,96.4122069523295,62.67458517727821,117.60425442900964,83.58732886435043,105.89603839764882,108.33786646294423,101.82944719255717,-250.423568402356,-226.10713143947774,-98.24428677030214,-238.43311337916901,-204.5976901147573,-217.9109144651047,-187.61871731755463,-124.0366596513836,-152.51592382701713,-125.72504371609651,-226.12119649341142,-99.11007447287038,-162.67055562632245,-213.72844190602726,-250.72438537570048,217.9282681145019,167.27636496313121,166.61075259062002,278.05260526818023,266.09061117354025,211.28647683594716,259.356787174491,286.6822562306241,277.8652243015178,168.04033459960633,234.99800548810413,219.33589026921842,279.37714492987965,223.83393415272562,288.75788960693905,242.5754505101079,126.27403427212936,108.02060484962075,-144.12732582359504,-169.14924264745235,-100.28239927517039,-150.75192674840585,-82.76867360083072,-176.72929242691114,-79.5192131159991,-86.1673323190417,-190.8262167773214,-133.4339193261402,-186.92000885436534,-111.1731393755485,-185.67720320028454,-157.61384406446197,-162.66350909585935,-191.75104943475887,-178.94595541567332,-76.36925922567954,-61.43105068065772,-39.59899909974269,-86.63074679546234,-101.58652740877326,-58.10123325825757,-115.97342420043032,-96.73065792164508,-32.74833545664606,-98.22364140560538,-112.62585169274163,-60.03109843555815,-55.30838379313895,-31.473534643395578,-21.067864276883206,-81.78963670472167,-89.01485683278004,-111.71843533022124,-101.90834871293353,-116.19277023457467,-189.95894291376231,-178.61738265440133,-216.40304237798432,-174.15259749976906,-216.3323051817955,-251.2034255872714,-120.30912807879027,-134.96162550488802,-236.8920607282106,-235.22728071166367,192.78581834471382,205.0619304841038,263.2708763420845,246.5054717335194,157.34389904020696,106.64512851376362,251.4718748704143,259.35471880020674,137.34325587948652,151.319797991627,135.0857715433031,229.46215245547074,211.91636770136176,264.00931303473664,148.01066170154397,211.1036209135244,126.65044699155334,-50.76891037147472,-19.65975360711646,-10.192299190170708,-26.73525762813391,-30.796288719777465,-99.28813562889422,-17.529487642523858,-103.77014771925842,-75.72587491259364,-40.81737743680411,-40.749513966684475,-18.476756728519543,-85.29498442597415,-56.037123951977435,-92.05801744455238,-46.986751592050894,-30.467443233189123,-62.160623375696176,-67.51125153742177,-44.8933272393122,156.45157668554367,190.4513370284397,138.17913837732348,167.58816096870686,189.9345507338126,185.6934776676354,209.56406292454636,104.50622084316028,122.67174949299314,210.55559451267018,150.48268518901946,113.99172698426011,108.01846060720912,201.03617241275583,100.28011760991171,199.29442791782637,88.853007028315,178.76647233354888,155.24980805404826,181.106427452657,180.64097877067655,181.98423645390415,124.71000363494191,190.09193994616714,100.54359352764496,142.2772682751173,76.03224964615887,102.91327417676324,193.71740269891097,201.652198830446,186.18825911294124,202.4500976145186,168.66930540091013,171.0948472583693,117.95539258134107,198.1824187560957,-152.71068689474956,-278.62206300685745,-233.60855446452467,-57.404967306190194,-50.48598520181256,-71.06130529253875,-24.019293208447788,-60.741246859260755,-50.35702133235434,-15.552905156257973,-105.7691379179644,-69.53945388937782,-79.08609434713605,-47.27587908993192,-37.44072506720669,-95.3744740651581,-36.61701825841733,-82.90638898221677,-25.313767511454653,-59.70455317252107,-93.31193391334274,-37.76247528751222,-83.48714069941356,-122.64188429978114,-193.7088736548834,-205.92829254122924,224.43440838263356,268.0017792493319,289.5407259891745,237.37714637410576,160.59571757614808,228.51928259202384,299.99999999999994,173.93784258210422,282.9441020426367,189.62205516229494,116.12169478980604,152.87712650975323,255.67589373536288,270.3957952462987,248.25756116762412,209.2997057662631,282.0828610824185,-156.39121357983322,-198.08625408624445,-188.2516003750717,-202.7307544054527,-176.94025710221962,-175.99941665858464,-69.87847679266372,-197.08934228353897,-83.92720435871914,-107.53701747429817,-186.40452656202052,-128.43390186412825,-189.73676261671534,-217.09591980960076,-212.93528035745533,-93.45566773165335,-204.1093655355255,-153.19343604155537,-140.48823934559593,-120.1739042626735,-39.68685141792711,5.881256399051858,-6.03378829268237,-3.1047945664593883,-31.28470405979463,-17.06052120781186,-64.71973032830252,-22.78881512198163,-20.182801335778194,-42.55963767303981,-65.58993616093306,-54.100242992880816,-33.401567534970596,2.180407190018988,-24.9133366549721],"y":[-61.232658547428855,-30.40264898591468,-39.106970195816245,-47.12448760895525,-39.36046557421158,-84.31746719230168,-82.33280957359172,-33.018035261788484,-65.32705180643676,-83.97620571053963,-63.08794125934236,-70.3596729700629,-72.13732496167245,-60.02054862138198,-81.84733869673275,-83.60349447191676,29.763660115383534,20.15373953370119,45.48487838078656,44.0042624519017,45.86102570655222,48.12597097851306,15.008072677514889,40.141858247543475,9.966990233211108,17.17897118799902,43.18077155741835,23.83581491858669,28.320860757277334,17.27975039162004,24.84758771238746,10.336932898086909,42.5021193102585,48.8192029683655,32.149182920890176,23.781460720024267,-1.3329857414649573,10.319440399694665,3.4219400210992466,0.23573489064173456,4.684778338475355,0.6427986754694929,9.759705048164435,4.819090675046446,-10.12879077050442,4.548736232383017,0.5139027210215651,7.327264321607112,-2.3111677484027475,5.247107919886416,1.4448757752365522,-12.447163181875984,-7.379850519557318,-6.707216466174162,-30.04658034171268,-4.3986799015084,-23.574481732000624,-34.783829297744035,-16.176941521996564,-16.215103789528747,-39.318059551099466,-45.6817867902169,-38.04690849771598,-34.71229359955223,-41.26161956105385,-43.94353947182005,-30.19887646880485,-22.92669585130348,19.106487752660044,1.299309811642368,32.755702230039056,3.636233634951714,0.9102378409767661,33.1704160169538,10.386536406387622,11.520549056288713,34.9563089366152,16.155421914715625,10.516059751689454,29.051171335588045,5.851598752226663,35.58416408164244,20.624340886875107,30.008611708752763,-19.080596875676225,-1.7521930710748097,-2.027036363158284,-21.144275533253193,-27.52439483412977,-31.174772634217344,-2.643717989203855,-32.789812166196775,-12.255479736174374,-31.341859136645272,-27.548043392900425,-30.75987082033247,1.82291712014143,-24.147767003126848,-29.05880868132401,59.310562429705,62.979161841823924,65.879872475115,58.2356207292303,79.54699938801397,82.56846519180621,30.549839347662967,46.555846091999996,34.014018307659185,34.33801891669624,79.67662352760638,37.03159294721015,74.96884626803248,76.83156546945328,77.2657211135448,81.85764606088463,40.505256572253536,-10.009874172061311,-6.582476838410706,-7.712872221420156,-3.6815501852198516,15.03024805737666,11.188639217066944,14.42096398465747,-1.1819405714814535,29.882517585656636,24.609200724799162,25.138981548729976,14.825500445239737,-1.3749836218905356,-3.9211383116477427,13.736803040356532,-26.936903873509216,-12.544832592662658,-37.16213496515316,-41.39853912686181,-21.3468706152252,-41.38392723301097,-40.33290541199983,-32.71210342834757,-29.070715268925262,-8.160131557551335,-42.02905575552137,-14.743470023400922,-37.79657411156956,-11.16932670678858,-36.384709395575626,-12.285566842846048,-25.381351461566627,-14.46157247979307,-58.3306446709152,-44.591032385084475,-40.10732559513825,-74.94752213304983,-56.0873189072749,-78.39995221684788,-50.252739844118096,-46.639583822264605,-69.50939861674023,-72.93768855840119,-60.47457676124773,-32.88259897680281,-74.20429890961734,-40.22350783898313,-72.67958066398825,-76.73403999721755,-50.2643315918098,60.597471261589355,73.91926114497525,52.129840539218584,83.79619176458735,40.582513102707836,44.12581442691714,48.12481852739783,44.328749751255884,66.48921898544128,83.8191665005585,66.98698219010804,77.79995641553352,76.51197816503438,31.588380875747447,43.49098525427896,39.13251538765774,77.4864342225817,80.993164199928,80.17409192982831,61.10312209554084,8.467529034289099,25.218785462837946,16.156740121616707,-8.343749933918499,18.004108687399114,9.465604923906847,9.388576288026794,-5.263364100798611,9.71692987891438,18.71075996400204,3.57870538594122,16.287318361992092,2.951378417295961,1.8357427260893173,17.488285698997352,5.824477654747566,7.421426899197983,11.01346837738043,-4.675697155275605,-11.52800197679394,-11.025627892783074,-5.578655380639568,-6.424239681370965,6.888822855983951,12.675170563901089,-10.442713016272922,14.161217160367634,-44.101128609899845,-22.257594187689666,-33.115865509169765,-60.41343614949483,-64.11951250015876,-55.47069396780824,-31.463352249522732,-52.241680809453385,-59.55432514216085,-19.000884063558875,-62.0111290443424,-37.453449822765776,-56.328452794398366,-63.48554020350215,-58.02987819617219,-65.76361852086683,-20.103856726456883,-19.783918169819152,-64.68190860749368,-14.97878050564714,47.94587502356901,67.03567341405798,26.235934864389687,34.117902097534184,47.27907420693458,62.769844835724165,64.16419999223163,49.45986503062008,22.322991125356438,59.43564211568116,31.564914857256444,24.707157537628678,45.040769336412524,67.09558051743677,40.83833297409045,61.28697590446323,41.53244323064918,67.06666289761493,-59.284237470899015,-76.2568400647437,-50.54687273000161,-56.51051013753939,-70.29361628237612,-48.635577667671356,-54.744378054129186,-74.14599337830444,-42.43966545610227,-61.17785473710132,-54.310875717010056,-52.23322026341803,-71.1860814767057,-70.41918543426927,-51.72232591268296,-44.524198876613184,-39.3840035750892,-78.92820865026476,28.094017057056337,27.706056693801294,33.87931641028039,-58.50520477507999,-31.178597888369797,-82.38960017163352,-70.32016701308069,-83.01889580108474,-82.35140426961884,-54.424747160363864,-64.23223220324785,-78.41820954594131,-40.67171100311256,-75.24868873427731,-26.8965195218095,-50.865773267755166,-32.558512132253824,-81.68249810774549,-30.26268282715402,-32.38761609105376,-72.22224363091205,-77.63957570258546,-76.3175671791781,12.156806613472847,-12.878874437343523,22.68214914462767,4.548273003794654,-3.772230471013602,3.2608301446361865,19.62273985777471,-11.416392216575998,22.246473872637925,7.934806675142061,-11.76794554417753,14.856770728068472,-11.997828079587164,6.979373884311624,-6.744326802135979,19.31376810550477,-7.848945753595495,17.15011209275767,20.197216997004027,10.961325263590812,41.29393430359698,62.48841971161314,60.12972535146992,53.2233982085434,16.92153488322955,62.63131419251968,18.269580216015424,31.94884781768654,32.138978438401935,27.143934658370316,63.839705234603784,17.44237071896838,51.46890761247238,49.68209073163034,52.994724573750304,17.75374847289083,59.62696970326129,56.37928707420842,22.324267668697992,49.29293780283585,84.1542485638914,58.7145876880087,77.89193348928382,47.24126817839807,89.8163711442736,85.09985417877928,53.413520945520844,43.72181889139823,89.63209314512235,89.95832127172059,76.44084832990058,54.20495686644006,31.815315056441563,74.15977833650346,48.333437497516066],"type":"scatter"}], {"height":400,"margin":{"b":0,"l":0,"r":0,"t":0},"paper_bgcolor":"white","plot_bgcolor":"white","showlegend":false,"width":1200,"xaxis":{"showgrid":false,"showticklabels":false,"zeroline":false},"yaxis":{"scaleanchor":"x","scaleratio":1,"showgrid":false,"showticklabels":false,"zeroline":false},"template":{"data":{"histogram2dcontour":[{"type":"histogram2dcontour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"choropleth":[{"type":"choropleth","colorbar":{"outlinewidth":0,"ticks":""}}],"histogram2d":[{"type":"histogram2d","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmap":[{"type":"heatmap","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"contourcarpet":[{"type":"contourcarpet","colorbar":{"outlinewidth":0,"ticks":""}}],"contour":[{"type":"contour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"surface":[{"type":"surface","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"mesh3d":[{"type":"mesh3d","colorbar":{"outlinewidth":0,"ticks":""}}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"parcoords":[{"type":"parcoords","line":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolargl":[{"type":"scatterpolargl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"scattergeo":[{"type":"scattergeo","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolar":[{"type":"scatterpolar","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"scattergl":[{"type":"scattergl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatter3d":[{"type":"scatter3d","line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermap":[{"type":"scattermap","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermapbox":[{"type":"scattermapbox","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterternary":[{"type":"scatterternary","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattercarpet":[{"type":"scattercarpet","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}],"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"pie":[{"automargin":true,"type":"pie"}]},"layout":{"autotypenumbers":"strict","colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"hovermode":"closest","hoverlabel":{"align":"left"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"bgcolor":"#E5ECF6","angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"ternary":{"bgcolor":"#E5ECF6","aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]]},"xaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"yaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"geo":{"bgcolor":"white","landcolor":"#E5ECF6","subunitcolor":"white","showland":true,"showlakes":true,"lakecolor":"white"},"title":{"x":0.05},"mapbox":{"style":"light"}}}}, {"displayModeBar": false, "responsive": true, "scrollZoom": false} ) }; </script> </div>
 
 
src/index.html CHANGED
@@ -8,14 +8,14 @@
8
  <meta name="viewport" content="width=device-width, initial-scale=1">
9
  <meta charset="utf8">
10
  <base target="_blank">
11
- <title>A Primer on LLM Embeddings: Understanding the Semantic Backbone of AI</title>
12
  <link rel="stylesheet" href="style.css">
13
  </head>
14
 
15
  <body>
16
  <d-front-matter>
17
  <script id='distill-front-matter' type="text/json">{
18
- "title": "A Primer on LLM Embeddings: Understanding the Semantic Backbone of AI",
19
  "description": "The role of embeddings in traditional NLP, and their application to LLMs.",
20
  "published": "Mar 18, 2025",
21
  "affiliation": {
@@ -36,12 +36,14 @@
36
  </script>
37
  </d-front-matter>
38
  <d-title>
39
- <h1 class="l-page" style="text-align: center;">A Primer on LLM Embeddings:<br>Understanding the Semantic Backbone of AI</h1>
40
  <div id="title-plot" class="main-plot-container l-screen" style="overflow-x: hidden; width: 100%; text-align: center;">
41
  <div style="display: flex; justify-content: center; position: relative;">
42
  {{{fragment-banner}}}
43
  </div>
44
- <p style="text-align: cekter; font-style: italic; margin-top: 10px; max-width: 900px; margin-left: auto; margin-right: auto;">It's nice to have a cute interactive banner!</p>
 
 
45
 
46
  </div>
47
  </d-title>
 
8
  <meta name="viewport" content="width=device-width, initial-scale=1">
9
  <meta charset="utf8">
10
  <base target="_blank">
11
+ <title>A Primer on LLM Embeddings: The Semantic Backbone of AI</title>
12
  <link rel="stylesheet" href="style.css">
13
  </head>
14
 
15
  <body>
16
  <d-front-matter>
17
  <script id='distill-front-matter' type="text/json">{
18
+ "title": "A Primer on LLM Embeddings: The Semantic Backbone of AI",
19
  "description": "The role of embeddings in traditional NLP, and their application to LLMs.",
20
  "published": "Mar 18, 2025",
21
  "affiliation": {
 
36
  </script>
37
  </d-front-matter>
38
  <d-title>
39
+ <h1 class="l-page" style="text-align: center;">A Primer on LLM Embeddings:<br>The Semantic Backbone of AI</h1>
40
  <div id="title-plot" class="main-plot-container l-screen" style="overflow-x: hidden; width: 100%; text-align: center;">
41
  <div style="display: flex; justify-content: center; position: relative;">
42
  {{{fragment-banner}}}
43
  </div>
44
+ <p style="text-align: cekter; font-style: italic; margin-top: 10px; max-width: 900px; margin-left: auto; margin-right: auto;">
45
+ The embedding atlas of 50 random words and their closest tokens in the embedding space of `deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B`.
46
+ </p>
47
 
48
  </div>
49
  </d-title>
src/index.js CHANGED
@@ -5,6 +5,6 @@ import { syncHFSpacesURLHash } from './syncHFSpacesURLHash'
5
  document.addEventListener("DOMContentLoaded", () => {
6
  console.log("DOMContentLoaded");
7
  loadFragments();
8
- init_memory_plot();
9
  syncHFSpacesURLHash();
10
  }, { once: true });
 
5
  document.addEventListener("DOMContentLoaded", () => {
6
  console.log("DOMContentLoaded");
7
  loadFragments();
8
+ // init_memory_plot();
9
  syncHFSpacesURLHash();
10
  }, { once: true });