/*
 * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
 * This devtool is neither made for production nor for readable output files.
 * It uses "eval()" calls to create a separate source file in the browser devtools.
 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
 * or disable the default devtool with "devtool: false".
 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
 */
(self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] = self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] || []).push([["vendors-node_modules_jupyterlab_apputils_lib_index_js"],{

/***/ "../node_modules/@jupyterlab/apputils/lib/clipboard.js":
/*!*************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/clipboard.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Clipboard\": () => (/* binding */ Clipboard)\n/* harmony export */ });\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n/**\n * The clipboard interface.\n */\nvar Clipboard;\n(function (Clipboard) {\n    /**\n     * Get the application clipboard instance.\n     */\n    function getInstance() {\n        return Private.instance;\n    }\n    Clipboard.getInstance = getInstance;\n    /**\n     * Set the application clipboard instance.\n     */\n    function setInstance(value) {\n        Private.instance = value;\n    }\n    Clipboard.setInstance = setInstance;\n    /**\n     * Copy text to the system clipboard.\n     *\n     * #### Notes\n     * This can only be called in response to a user input event.\n     */\n    function copyToSystem(clipboardData) {\n        const node = document.body;\n        const handler = (event) => {\n            const data = event.clipboardData || window.clipboardData;\n            if (typeof clipboardData === 'string') {\n                data.setData('text', clipboardData);\n            }\n            else {\n                clipboardData.types().map((mimeType) => {\n                    data.setData(mimeType, clipboardData.getData(mimeType));\n                });\n            }\n            event.preventDefault();\n            node.removeEventListener('copy', handler);\n        };\n        node.addEventListener('copy', handler);\n        generateEvent(node);\n    }\n    Clipboard.copyToSystem = copyToSystem;\n    /**\n     * Generate a clipboard event on a node.\n     *\n     * @param node - The element on which to generate the event.\n     *\n     * @param type - The type of event to generate.\n     *   `'paste'` events cannot be programmatically generated.\n     *\n     * #### Notes\n     * This can only be called in response to a user input event.\n     */\n    function generateEvent(node, type = 'copy') {\n        // http://stackoverflow.com/a/5210367\n        // Identify selected text.\n        let sel = window.getSelection();\n        // Save the current selection.\n        const savedRanges = [];\n        for (let i = 0, len = (sel === null || sel === void 0 ? void 0 : sel.rangeCount) || 0; i < len; ++i) {\n            savedRanges[i] = sel.getRangeAt(i).cloneRange();\n        }\n        // Select the node content.\n        const range = document.createRange();\n        range.selectNodeContents(node);\n        if (sel) {\n            sel.removeAllRanges();\n            sel.addRange(range);\n        }\n        // Execute the command.\n        document.execCommand(type);\n        // Restore the previous selection.\n        sel = window.getSelection();\n        if (sel) {\n            sel.removeAllRanges();\n            for (let i = 0, len = savedRanges.length; i < len; ++i) {\n                sel.addRange(savedRanges[i]);\n            }\n        }\n    }\n    Clipboard.generateEvent = generateEvent;\n})(Clipboard || (Clipboard = {}));\n/**\n * The namespace for module private data.\n */\nvar Private;\n(function (Private) {\n    /**\n     * The application clipboard instance.\n     */\n    Private.instance = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.MimeData();\n})(Private || (Private = {}));\n//# sourceMappingURL=clipboard.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/clipboard.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/collapse.js":
/*!************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/collapse.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Collapse\": () => (/* binding */ Collapse)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/ui-components */ \"webpack/sharing/consume/default/@jupyterlab/ui-components/@jupyterlab/ui-components\");\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/signaling */ \"webpack/sharing/consume/default/@lumino/signaling/@lumino/signaling\");\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_signaling__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_2__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n/**\n * A panel that supports a collapsible header made from the widget's title.\n * Clicking on the title expands or contracts the widget.\n */\nclass Collapse extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__.Widget {\n    constructor(options) {\n        super(options);\n        this._collapseChanged = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__.Signal(this);\n        const { widget, collapsed = true } = options;\n        this.addClass('jp-Collapse');\n        this._header = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__.Widget();\n        this._header.addClass('jp-Collapse-header');\n        this._content = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__.Panel();\n        this._content.addClass('jp-Collapse-contents');\n        const layout = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__.PanelLayout();\n        this.layout = layout;\n        layout.addWidget(this._header);\n        layout.addWidget(this._content);\n        this.widget = widget;\n        this.collapsed = collapsed;\n    }\n    /**\n     * The widget inside the collapse panel.\n     */\n    get widget() {\n        return this._widget;\n    }\n    set widget(widget) {\n        const oldWidget = this._widget;\n        if (oldWidget) {\n            oldWidget.title.changed.disconnect(this._onTitleChanged, this);\n            oldWidget.parent = null;\n        }\n        this._widget = widget;\n        widget.title.changed.connect(this._onTitleChanged, this);\n        this._onTitleChanged(widget.title);\n        this._content.addWidget(widget);\n    }\n    /**\n     * The collapsed state of the panel.\n     */\n    get collapsed() {\n        return this._collapsed;\n    }\n    set collapsed(value) {\n        if (value === this._collapsed) {\n            return;\n        }\n        if (value) {\n            this._collapse();\n        }\n        else {\n            this._uncollapse();\n        }\n    }\n    /**\n     * A signal for when the widget collapse state changes.\n     */\n    get collapseChanged() {\n        return this._collapseChanged;\n    }\n    /**\n     * Toggle the collapse state of the panel.\n     */\n    toggle() {\n        this.collapsed = !this.collapsed;\n    }\n    /**\n     * Dispose the widget.\n     */\n    dispose() {\n        if (this.isDisposed) {\n            return;\n        }\n        // Delete references we explicitly hold to other widgets.\n        this._header = null;\n        this._widget = null;\n        this._content = null;\n        super.dispose();\n    }\n    /**\n     * Handle the DOM events for the Collapse widget.\n     *\n     * @param event - The DOM event sent to the panel.\n     *\n     * #### Notes\n     * This method implements the DOM `EventListener` interface and is\n     * called in response to events on the panel's DOM node. It should\n     * not be called directly by user code.\n     */\n    handleEvent(event) {\n        switch (event.type) {\n            case 'click':\n                this._evtClick(event);\n                break;\n            default:\n                break;\n        }\n    }\n    onAfterAttach(msg) {\n        this._header.node.addEventListener('click', this);\n    }\n    onBeforeDetach(msg) {\n        this._header.node.removeEventListener('click', this);\n    }\n    _collapse() {\n        this._collapsed = true;\n        if (this._content) {\n            this._content.hide();\n        }\n        this._setHeader();\n        this._collapseChanged.emit(void 0);\n    }\n    _uncollapse() {\n        this._collapsed = false;\n        if (this._content) {\n            this._content.show();\n        }\n        this._setHeader();\n        this._collapseChanged.emit(void 0);\n    }\n    _evtClick(event) {\n        this.toggle();\n    }\n    /**\n     * Handle the `changed` signal of a title object.\n     */\n    _onTitleChanged(sender) {\n        this._setHeader();\n    }\n    _setHeader() {\n        (this._collapsed ? _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_0__.caretUpIcon : _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_0__.caretDownIcon).element({\n            container: this._header.node,\n            label: this._widget.title.label,\n            elementPosition: 'right',\n            height: '28px'\n        });\n    }\n}\n//# sourceMappingURL=collapse.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/collapse.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/commandlinker.js":
/*!*****************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/commandlinker.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CommandLinker\": () => (/* binding */ CommandLinker)\n/* harmony export */ });\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__);\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n/**\n * The command data attribute added to nodes that are connected.\n */\nconst COMMAND_ATTR = 'commandlinker-command';\n/**\n * The args data attribute added to nodes that are connected.\n */\nconst ARGS_ATTR = 'commandlinker-args';\n/**\n * A static class that provides helper methods to generate clickable nodes that\n * execute registered commands with pre-populated arguments.\n */\nclass CommandLinker {\n    /**\n     * Instantiate a new command linker.\n     */\n    constructor(options) {\n        this._isDisposed = false;\n        this._commands = options.commands;\n        document.body.addEventListener('click', this);\n    }\n    /**\n     * Test whether the linker is disposed.\n     */\n    get isDisposed() {\n        return this._isDisposed;\n    }\n    /**\n     * Dispose of the resources held by the linker.\n     */\n    dispose() {\n        if (this.isDisposed) {\n            return;\n        }\n        this._isDisposed = true;\n        document.body.removeEventListener('click', this);\n    }\n    /**\n     * Connect a command/argument pair to a given node so that when it is clicked,\n     * the command will execute.\n     *\n     * @param node - The node being connected.\n     *\n     * @param command - The command ID to execute upon click.\n     *\n     * @param args - The arguments with which to invoke the command.\n     *\n     * @returns The same node that was passed in, after it has been connected.\n     *\n     * #### Notes\n     * Only `click` events will execute the command on a connected node. So, there\n     * are two considerations that are relevant:\n     * 1. If a node is connected, the default click action will be prevented.\n     * 2. The `HTMLElement` passed in should be clickable.\n     */\n    connectNode(node, command, args) {\n        node.setAttribute(`data-${COMMAND_ATTR}`, command);\n        if (args !== void 0) {\n            node.setAttribute(`data-${ARGS_ATTR}`, JSON.stringify(args));\n        }\n        return node;\n    }\n    /**\n     * Disconnect a node that has been connected to execute a command on click.\n     *\n     * @param node - The node being disconnected.\n     *\n     * @returns The same node that was passed in, after it has been disconnected.\n     *\n     * #### Notes\n     * This method is safe to call multiple times and is safe to call on nodes\n     * that were never connected.\n     *\n     * This method can be called on rendered virtual DOM nodes that were populated\n     * using the `populateVNodeDataset` method in order to disconnect them from\n     * executing their command/argument pair.\n     */\n    disconnectNode(node) {\n        node.removeAttribute(`data-${COMMAND_ATTR}`);\n        node.removeAttribute(`data-${ARGS_ATTR}`);\n        return node;\n    }\n    /**\n     * Handle the DOM events for the command linker helper class.\n     *\n     * @param event - The DOM event sent to the class.\n     *\n     * #### Notes\n     * This method implements the DOM `EventListener` interface and is\n     * called in response to events on the panel's DOM node. It should\n     * not be called directly by user code.\n     */\n    handleEvent(event) {\n        switch (event.type) {\n            case 'click':\n                this._evtClick(event);\n                break;\n            default:\n                return;\n        }\n    }\n    /**\n     * Populate the `dataset` attribute within the collection of attributes used\n     * to instantiate a virtual DOM node with the values necessary for its\n     * rendered DOM node to respond to clicks by executing a command/argument\n     * pair.\n     *\n     * @param command - The command ID to execute upon click.\n     *\n     * @param args - The arguments with which to invoke the command.\n     *\n     * @returns A `dataset` collection for use within virtual node attributes.\n     *\n     * #### Notes\n     * The return value can be used on its own as the value for the `dataset`\n     * attribute of a virtual element, or it can be added to an existing `dataset`\n     * as in the example below.\n     *\n     * #### Example\n     * ```typescript\n     * let command = 'some:command-id';\n     * let args = { alpha: 'beta' };\n     * let anchor = h.a({\n     *   className: 'some-class',\n     *   dataset: {\n     *     foo: '1',\n     *     bar: '2',\n     *     ../...linker.populateVNodeDataset(command, args)\n     *   }\n     * }, 'some text');\n     * ```\n     */\n    populateVNodeDataset(command, args) {\n        let dataset;\n        if (args !== void 0) {\n            dataset = { [ARGS_ATTR]: JSON.stringify(args), [COMMAND_ATTR]: command };\n        }\n        else {\n            dataset = { [COMMAND_ATTR]: command };\n        }\n        return dataset;\n    }\n    /**\n     * The global click handler that deploys commands/argument pairs that are\n     * attached to the node being clicked.\n     */\n    _evtClick(event) {\n        let target = event.target;\n        while (target && target.parentElement) {\n            if (target.hasAttribute(`data-${COMMAND_ATTR}`)) {\n                event.preventDefault();\n                const command = target.getAttribute(`data-${COMMAND_ATTR}`);\n                if (!command) {\n                    return;\n                }\n                const argsValue = target.getAttribute(`data-${ARGS_ATTR}`);\n                let args = _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.JSONExt.emptyObject;\n                if (argsValue) {\n                    args = JSON.parse(argsValue);\n                }\n                void this._commands.execute(command, args);\n                return;\n            }\n            target = target.parentElement;\n        }\n    }\n}\n//# sourceMappingURL=commandlinker.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/commandlinker.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/commandpalette.js":
/*!******************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/commandpalette.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ICommandPalette\": () => (/* binding */ ICommandPalette),\n/* harmony export */   \"ModalCommandPalette\": () => (/* binding */ ModalCommandPalette)\n/* harmony export */ });\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @jupyterlab/ui-components */ \"webpack/sharing/consume/default/@jupyterlab/ui-components/@jupyterlab/ui-components\");\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_2__);\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n\n\n/* tslint:disable */\n/**\n * The command palette token.\n */\nconst ICommandPalette = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.Token('@jupyterlab/apputils:ICommandPalette');\n/**\n * Class name identifying the input group with search icon.\n */\nconst SEARCH_ICON_GROUP_CLASS = 'jp-SearchIconGroup';\n/**\n * Wrap the command palette in a modal to make it more usable.\n */\nclass ModalCommandPalette extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_1__.Panel {\n    constructor(options) {\n        super();\n        this.addClass('jp-ModalCommandPalette');\n        this.id = 'modal-command-palette';\n        this.palette = options.commandPalette;\n        this._commandPalette.commands.commandExecuted.connect(() => {\n            if (this.isAttached && this.isVisible) {\n                this.hideAndReset();\n            }\n        });\n        // required to properly receive blur and focus events;\n        // selection of items with mouse may not work without this.\n        this.node.tabIndex = 0;\n    }\n    get palette() {\n        return this._commandPalette;\n    }\n    set palette(value) {\n        this._commandPalette = value;\n        if (!this.searchIconGroup) {\n            this._commandPalette.inputNode.insertAdjacentElement('afterend', this.createSearchIconGroup());\n        }\n        this.addWidget(value);\n        this.hideAndReset();\n    }\n    attach() {\n        _lumino_widgets__WEBPACK_IMPORTED_MODULE_1__.Widget.attach(this, document.body);\n    }\n    detach() {\n        _lumino_widgets__WEBPACK_IMPORTED_MODULE_1__.Widget.detach(this);\n    }\n    /**\n     * Hide the modal command palette and reset its search.\n     */\n    hideAndReset() {\n        this.hide();\n        this._commandPalette.inputNode.value = '';\n        this._commandPalette.refresh();\n    }\n    /**\n     * Handle incoming events.\n     */\n    handleEvent(event) {\n        switch (event.type) {\n            case 'keydown':\n                this._evtKeydown(event);\n                break;\n            case 'blur': {\n                // if the focus shifted outside of this DOM element, hide and reset.\n                if (\n                // focus went away from child element\n                this.node.contains(event.target) &&\n                    // and it did NOT go to another child element but someplace else\n                    !this.node.contains(event.relatedTarget)) {\n                    event.stopPropagation();\n                    this.hideAndReset();\n                }\n                break;\n            }\n            case 'contextmenu':\n                event.preventDefault();\n                event.stopPropagation();\n                break;\n            default:\n                break;\n        }\n    }\n    /**\n     * Find the element with search icon group.\n     */\n    get searchIconGroup() {\n        return this._commandPalette.node.getElementsByClassName(SEARCH_ICON_GROUP_CLASS)[0];\n    }\n    /**\n     * Create element with search icon group.\n     */\n    createSearchIconGroup() {\n        const inputGroup = document.createElement('div');\n        inputGroup.classList.add(SEARCH_ICON_GROUP_CLASS);\n        _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_2__.searchIcon.render(inputGroup);\n        return inputGroup;\n    }\n    /**\n     *  A message handler invoked on an `'after-attach'` message.\n     */\n    onAfterAttach(msg) {\n        this.node.addEventListener('keydown', this, true);\n        this.node.addEventListener('contextmenu', this, true);\n    }\n    /**\n     *  A message handler invoked on an `'after-detach'` message.\n     */\n    onAfterDetach(msg) {\n        this.node.removeEventListener('keydown', this, true);\n        this.node.removeEventListener('contextmenu', this, true);\n    }\n    onBeforeHide(msg) {\n        document.removeEventListener('blur', this, true);\n    }\n    onAfterShow(msg) {\n        document.addEventListener('blur', this, true);\n    }\n    /**\n     * A message handler invoked on an `'activate-request'` message.\n     */\n    onActivateRequest(msg) {\n        if (this.isAttached) {\n            this.show();\n            this._commandPalette.activate();\n        }\n    }\n    /**\n     * Handle the `'keydown'` event for the widget.\n     */\n    _evtKeydown(event) {\n        // Check for escape key\n        switch (event.keyCode) {\n            case 27: // Escape.\n                event.stopPropagation();\n                event.preventDefault();\n                this.hideAndReset();\n                break;\n            default:\n                break;\n        }\n    }\n}\n//# sourceMappingURL=commandpalette.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/commandpalette.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/dialog.js":
/*!**********************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/dialog.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"showDialog\": () => (/* binding */ showDialog),\n/* harmony export */   \"showErrorMessage\": () => (/* binding */ showErrorMessage),\n/* harmony export */   \"Dialog\": () => (/* binding */ Dialog)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/ui-components */ \"webpack/sharing/consume/default/@jupyterlab/ui-components/@jupyterlab/ui-components\");\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lumino_algorithm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/algorithm */ \"webpack/sharing/consume/default/@lumino/algorithm/@lumino/algorithm\");\n/* harmony import */ var _lumino_algorithm__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_algorithm__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _lumino_messaging__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @lumino/messaging */ \"webpack/sharing/consume/default/@lumino/messaging/@lumino/messaging\");\n/* harmony import */ var _lumino_messaging__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_lumino_messaging__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _styling__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./styling */ \"../node_modules/@jupyterlab/apputils/lib/styling.js\");\n/* harmony import */ var _vdom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./vdom */ \"../node_modules/@jupyterlab/apputils/lib/vdom.js\");\n/* harmony import */ var _widgettracker__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./widgettracker */ \"../node_modules/@jupyterlab/apputils/lib/widgettracker.js\");\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n\n\n\n\n\n\n/**\n * Create and show a dialog.\n *\n * @param options - The dialog setup options.\n *\n * @returns A promise that resolves with whether the dialog was accepted.\n */\nfunction showDialog(options = {}) {\n    const dialog = new Dialog(options);\n    return dialog.launch();\n}\n/**\n * Show an error message dialog.\n *\n * @param title - The title of the dialog box.\n *\n * @param error - the error to show in the dialog body (either a string\n *   or an object with a string `message` property).\n */\nfunction showErrorMessage(title, error, buttons = [\n    Dialog.okButton({ label: 'Dismiss' })\n]) {\n    console.warn('Showing error:', error);\n    // Cache promises to prevent multiple copies of identical dialogs showing\n    // to the user.\n    const body = typeof error === 'string' ? error : error.message;\n    const key = title + '----' + body;\n    const promise = Private.errorMessagePromiseCache.get(key);\n    if (promise) {\n        return promise;\n    }\n    else {\n        const dialogPromise = showDialog({\n            title: title,\n            body: body,\n            buttons: buttons\n        }).then(() => {\n            Private.errorMessagePromiseCache.delete(key);\n        }, error => {\n            // TODO: Use .finally() above when supported\n            Private.errorMessagePromiseCache.delete(key);\n            throw error;\n        });\n        Private.errorMessagePromiseCache.set(key, dialogPromise);\n        return dialogPromise;\n    }\n}\n/**\n * A modal dialog widget.\n */\nclass Dialog extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_4__.Widget {\n    /**\n     * Create a dialog panel instance.\n     *\n     * @param options - The dialog setup options.\n     */\n    constructor(options = {}) {\n        super();\n        this._focusNodeSelector = '';\n        this.addClass('jp-Dialog');\n        const normalized = Private.handleOptions(options);\n        const renderer = normalized.renderer;\n        this._host = normalized.host;\n        this._defaultButton = normalized.defaultButton;\n        this._buttons = normalized.buttons;\n        this._hasClose = normalized.hasClose;\n        this._buttonNodes = (0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_1__.toArray)((0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_1__.map)(this._buttons, button => {\n            return renderer.createButtonNode(button);\n        }));\n        const layout = (this.layout = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_4__.PanelLayout());\n        const content = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_4__.Panel();\n        content.addClass('jp-Dialog-content');\n        layout.addWidget(content);\n        this._body = normalized.body;\n        const header = renderer.createHeader(normalized.title, () => this.reject(), options);\n        const body = renderer.createBody(normalized.body);\n        const footer = renderer.createFooter(this._buttonNodes);\n        content.addWidget(header);\n        content.addWidget(body);\n        content.addWidget(footer);\n        this._primary = this._buttonNodes[this._defaultButton];\n        this._focusNodeSelector = options.focusNodeSelector;\n        // Add new dialogs to the tracker.\n        void Dialog.tracker.add(this);\n    }\n    /**\n     * Dispose of the resources used by the dialog.\n     */\n    dispose() {\n        const promise = this._promise;\n        if (promise) {\n            this._promise = null;\n            promise.reject(void 0);\n            _lumino_algorithm__WEBPACK_IMPORTED_MODULE_1__.ArrayExt.removeFirstOf(Private.launchQueue, promise.promise);\n        }\n        super.dispose();\n    }\n    /**\n     * Launch the dialog as a modal window.\n     *\n     * @returns a promise that resolves with the result of the dialog.\n     */\n    launch() {\n        // Return the existing dialog if already open.\n        if (this._promise) {\n            return this._promise.promise;\n        }\n        const promise = (this._promise = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_2__.PromiseDelegate());\n        const promises = Promise.all(Private.launchQueue);\n        Private.launchQueue.push(this._promise.promise);\n        return promises.then(() => {\n            // Do not show Dialog if it was disposed of before it was at the front of the launch queue\n            if (!this._promise) {\n                return Promise.resolve({ button: Dialog.cancelButton(), value: null });\n            }\n            _lumino_widgets__WEBPACK_IMPORTED_MODULE_4__.Widget.attach(this, this._host);\n            return promise.promise;\n        });\n    }\n    /**\n     * Resolve the current dialog.\n     *\n     * @param index - An optional index to the button to resolve.\n     *\n     * #### Notes\n     * Will default to the defaultIndex.\n     * Will resolve the current `show()` with the button value.\n     * Will be a no-op if the dialog is not shown.\n     */\n    resolve(index) {\n        if (!this._promise) {\n            return;\n        }\n        if (index === undefined) {\n            index = this._defaultButton;\n        }\n        this._resolve(this._buttons[index]);\n    }\n    /**\n     * Reject the current dialog with a default reject value.\n     *\n     * #### Notes\n     * Will be a no-op if the dialog is not shown.\n     */\n    reject() {\n        if (!this._promise) {\n            return;\n        }\n        this._resolve(Dialog.cancelButton());\n    }\n    /**\n     * Handle the DOM events for the directory listing.\n     *\n     * @param event - The DOM event sent to the widget.\n     *\n     * #### Notes\n     * This method implements the DOM `EventListener` interface and is\n     * called in response to events on the panel's DOM node. It should\n     * not be called directly by user code.\n     */\n    handleEvent(event) {\n        switch (event.type) {\n            case 'keydown':\n                this._evtKeydown(event);\n                break;\n            case 'click':\n                this._evtClick(event);\n                break;\n            case 'focus':\n                this._evtFocus(event);\n                break;\n            case 'contextmenu':\n                event.preventDefault();\n                event.stopPropagation();\n                break;\n            default:\n                break;\n        }\n    }\n    /**\n     *  A message handler invoked on an `'after-attach'` message.\n     */\n    onAfterAttach(msg) {\n        const node = this.node;\n        node.addEventListener('keydown', this, true);\n        node.addEventListener('contextmenu', this, true);\n        node.addEventListener('click', this, true);\n        document.addEventListener('focus', this, true);\n        this._first = Private.findFirstFocusable(this.node);\n        this._original = document.activeElement;\n        if (this._focusNodeSelector) {\n            const body = this.node.querySelector('.jp-Dialog-body');\n            const el = body === null || body === void 0 ? void 0 : body.querySelector(this._focusNodeSelector);\n            if (el) {\n                this._primary = el;\n            }\n        }\n        this._primary.focus();\n    }\n    /**\n     *  A message handler invoked on an `'after-detach'` message.\n     */\n    onAfterDetach(msg) {\n        const node = this.node;\n        node.removeEventListener('keydown', this, true);\n        node.removeEventListener('contextmenu', this, true);\n        node.removeEventListener('click', this, true);\n        document.removeEventListener('focus', this, true);\n        this._original.focus();\n    }\n    /**\n     * A message handler invoked on a `'close-request'` message.\n     */\n    onCloseRequest(msg) {\n        if (this._promise) {\n            this.reject();\n        }\n        super.onCloseRequest(msg);\n    }\n    /**\n     * Handle the `'click'` event for a dialog button.\n     *\n     * @param event - The DOM event sent to the widget\n     */\n    _evtClick(event) {\n        const content = this.node.getElementsByClassName('jp-Dialog-content')[0];\n        if (!content.contains(event.target)) {\n            event.stopPropagation();\n            event.preventDefault();\n            if (this._hasClose) {\n                this.reject();\n            }\n            return;\n        }\n        for (const buttonNode of this._buttonNodes) {\n            if (buttonNode.contains(event.target)) {\n                const index = this._buttonNodes.indexOf(buttonNode);\n                this.resolve(index);\n            }\n        }\n    }\n    /**\n     * Handle the `'keydown'` event for the widget.\n     *\n     * @param event - The DOM event sent to the widget\n     */\n    _evtKeydown(event) {\n        // Check for escape key\n        switch (event.keyCode) {\n            case 27: // Escape.\n                event.stopPropagation();\n                event.preventDefault();\n                if (this._hasClose) {\n                    this.reject();\n                }\n                break;\n            case 37: {\n                // Left arrow\n                const activeEl = document.activeElement;\n                if (activeEl instanceof HTMLButtonElement) {\n                    let idx = this._buttonNodes.indexOf(activeEl) - 1;\n                    // Handle a left arrows on the first button\n                    if (idx < 0) {\n                        idx = this._buttonNodes.length - 1;\n                    }\n                    const node = this._buttonNodes[idx];\n                    event.stopPropagation();\n                    event.preventDefault();\n                    node.focus();\n                }\n                break;\n            }\n            case 39: {\n                // Right arrow\n                const activeEl = document.activeElement;\n                if (activeEl instanceof HTMLButtonElement) {\n                    let idx = this._buttonNodes.indexOf(activeEl) + 1;\n                    // Handle a right arrows on the last button\n                    if (idx == this._buttons.length) {\n                        idx = 0;\n                    }\n                    const node = this._buttonNodes[idx];\n                    event.stopPropagation();\n                    event.preventDefault();\n                    node.focus();\n                }\n                break;\n            }\n            case 9: {\n                // Tab.\n                // Handle a tab on the last button.\n                const node = this._buttonNodes[this._buttons.length - 1];\n                if (document.activeElement === node && !event.shiftKey) {\n                    event.stopPropagation();\n                    event.preventDefault();\n                    this._first.focus();\n                }\n                break;\n            }\n            case 13: {\n                // Enter.\n                event.stopPropagation();\n                event.preventDefault();\n                const activeEl = document.activeElement;\n                let index;\n                if (activeEl instanceof HTMLButtonElement) {\n                    index = this._buttonNodes.indexOf(activeEl);\n                }\n                this.resolve(index);\n                break;\n            }\n            default:\n                break;\n        }\n    }\n    /**\n     * Handle the `'focus'` event for the widget.\n     *\n     * @param event - The DOM event sent to the widget\n     */\n    _evtFocus(event) {\n        const target = event.target;\n        if (!this.node.contains(target)) {\n            event.stopPropagation();\n            this._buttonNodes[this._defaultButton].focus();\n        }\n    }\n    /**\n     * Resolve a button item.\n     */\n    _resolve(button) {\n        // Prevent loopback.\n        const promise = this._promise;\n        if (!promise) {\n            this.dispose();\n            return;\n        }\n        this._promise = null;\n        _lumino_algorithm__WEBPACK_IMPORTED_MODULE_1__.ArrayExt.removeFirstOf(Private.launchQueue, promise.promise);\n        const body = this._body;\n        let value = null;\n        if (button.accept &&\n            body instanceof _lumino_widgets__WEBPACK_IMPORTED_MODULE_4__.Widget &&\n            typeof body.getValue === 'function') {\n            value = body.getValue();\n        }\n        this.dispose();\n        promise.resolve({ button, value });\n    }\n}\n/**\n * The namespace for Dialog class statics.\n */\n(function (Dialog) {\n    /**\n     * Create a button item.\n     */\n    function createButton(value) {\n        value.accept = value.accept !== false;\n        const defaultLabel = value.accept ? 'OK' : 'Cancel';\n        return {\n            label: value.label || defaultLabel,\n            iconClass: value.iconClass || '',\n            iconLabel: value.iconLabel || '',\n            caption: value.caption || '',\n            className: value.className || '',\n            accept: value.accept,\n            actions: value.actions || [],\n            displayType: value.displayType || 'default'\n        };\n    }\n    Dialog.createButton = createButton;\n    /**\n     * Create a reject button.\n     */\n    function cancelButton(options = {}) {\n        options.accept = false;\n        return createButton(options);\n    }\n    Dialog.cancelButton = cancelButton;\n    /**\n     * Create an accept button.\n     */\n    function okButton(options = {}) {\n        options.accept = true;\n        return createButton(options);\n    }\n    Dialog.okButton = okButton;\n    /**\n     * Create a warn button.\n     */\n    function warnButton(options = {}) {\n        options.displayType = 'warn';\n        return createButton(options);\n    }\n    Dialog.warnButton = warnButton;\n    /**\n     * Disposes all dialog instances.\n     *\n     * #### Notes\n     * This function should only be used in tests or cases where application state\n     * may be discarded.\n     */\n    function flush() {\n        Dialog.tracker.forEach(dialog => {\n            dialog.dispose();\n        });\n    }\n    Dialog.flush = flush;\n    /**\n     * The default implementation of a dialog renderer.\n     */\n    class Renderer {\n        /**\n         * Create the header of the dialog.\n         *\n         * @param title - The title of the dialog.\n         *\n         * @returns A widget for the dialog header.\n         */\n        createHeader(title, reject = () => {\n            /* empty */\n        }, options = {}) {\n            let header;\n            const handleMouseDown = (event) => {\n                // Fire action only when left button is pressed.\n                if (event.button === 0) {\n                    event.preventDefault();\n                    reject();\n                }\n            };\n            const handleKeyDown = (event) => {\n                const { key } = event;\n                if (key === 'Enter' || key === ' ') {\n                    reject();\n                }\n            };\n            if (typeof title === 'string') {\n                header = _vdom__WEBPACK_IMPORTED_MODULE_6__.ReactWidget.create(react__WEBPACK_IMPORTED_MODULE_5__.createElement(react__WEBPACK_IMPORTED_MODULE_5__.Fragment, null,\n                    title,\n                    options.hasClose && (react__WEBPACK_IMPORTED_MODULE_5__.createElement(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_0__.Button, { className: \"jp-Dialog-close-button\", onMouseDown: handleMouseDown, onKeyDown: handleKeyDown, title: \"Cancel\", minimal: true },\n                        react__WEBPACK_IMPORTED_MODULE_5__.createElement(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_0__.LabIcon.resolveReact, { icon: _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_0__.closeIcon, iconClass: \"jp-Icon\", className: \"jp-ToolbarButtonComponent-icon\", tag: \"span\" })))));\n            }\n            else {\n                header = _vdom__WEBPACK_IMPORTED_MODULE_6__.ReactWidget.create(title);\n            }\n            header.addClass('jp-Dialog-header');\n            _styling__WEBPACK_IMPORTED_MODULE_7__.Styling.styleNode(header.node);\n            return header;\n        }\n        /**\n         * Create the body of the dialog.\n         *\n         * @param value - The input value for the body.\n         *\n         * @returns A widget for the body.\n         */\n        createBody(value) {\n            let body;\n            if (typeof value === 'string') {\n                body = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_4__.Widget({ node: document.createElement('span') });\n                body.node.textContent = value;\n            }\n            else if (value instanceof _lumino_widgets__WEBPACK_IMPORTED_MODULE_4__.Widget) {\n                body = value;\n            }\n            else {\n                body = _vdom__WEBPACK_IMPORTED_MODULE_6__.ReactWidget.create(value);\n                // Immediately update the body even though it has not yet attached in\n                // order to trigger a render of the DOM nodes from the React element.\n                _lumino_messaging__WEBPACK_IMPORTED_MODULE_3__.MessageLoop.sendMessage(body, _lumino_widgets__WEBPACK_IMPORTED_MODULE_4__.Widget.Msg.UpdateRequest);\n            }\n            body.addClass('jp-Dialog-body');\n            _styling__WEBPACK_IMPORTED_MODULE_7__.Styling.styleNode(body.node);\n            return body;\n        }\n        /**\n         * Create the footer of the dialog.\n         *\n         * @param buttonNodes - The buttons nodes to add to the footer.\n         *\n         * @returns A widget for the footer.\n         */\n        createFooter(buttons) {\n            const footer = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_4__.Widget();\n            footer.addClass('jp-Dialog-footer');\n            (0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_1__.each)(buttons, button => {\n                footer.node.appendChild(button);\n            });\n            _styling__WEBPACK_IMPORTED_MODULE_7__.Styling.styleNode(footer.node);\n            return footer;\n        }\n        /**\n         * Create a button node for the dialog.\n         *\n         * @param button - The button data.\n         *\n         * @returns A node for the button.\n         */\n        createButtonNode(button) {\n            const e = document.createElement('button');\n            e.className = this.createItemClass(button);\n            e.appendChild(this.renderIcon(button));\n            e.appendChild(this.renderLabel(button));\n            return e;\n        }\n        /**\n         * Create the class name for the button.\n         *\n         * @param data - The data to use for the class name.\n         *\n         * @returns The full class name for the button.\n         */\n        createItemClass(data) {\n            // Setup the initial class name.\n            let name = 'jp-Dialog-button';\n            // Add the other state classes.\n            if (data.accept) {\n                name += ' jp-mod-accept';\n            }\n            else {\n                name += ' jp-mod-reject';\n            }\n            if (data.displayType === 'warn') {\n                name += ' jp-mod-warn';\n            }\n            // Add the extra class.\n            const extra = data.className;\n            if (extra) {\n                name += ` ${extra}`;\n            }\n            // Return the complete class name.\n            return name;\n        }\n        /**\n         * Render an icon element for a dialog item.\n         *\n         * @param data - The data to use for rendering the icon.\n         *\n         * @returns An HTML element representing the icon.\n         */\n        renderIcon(data) {\n            const e = document.createElement('div');\n            e.className = this.createIconClass(data);\n            e.appendChild(document.createTextNode(data.iconLabel));\n            return e;\n        }\n        /**\n         * Create the class name for the button icon.\n         *\n         * @param data - The data to use for the class name.\n         *\n         * @returns The full class name for the item icon.\n         */\n        createIconClass(data) {\n            const name = 'jp-Dialog-buttonIcon';\n            const extra = data.iconClass;\n            return extra ? `${name} ${extra}` : name;\n        }\n        /**\n         * Render the label element for a button.\n         *\n         * @param data - The data to use for rendering the label.\n         *\n         * @returns An HTML element representing the item label.\n         */\n        renderLabel(data) {\n            const e = document.createElement('div');\n            e.className = 'jp-Dialog-buttonLabel';\n            e.title = data.caption;\n            e.appendChild(document.createTextNode(data.label));\n            return e;\n        }\n    }\n    Dialog.Renderer = Renderer;\n    /**\n     * The default renderer instance.\n     */\n    Dialog.defaultRenderer = new Renderer();\n    /**\n     * The dialog widget tracker.\n     */\n    Dialog.tracker = new _widgettracker__WEBPACK_IMPORTED_MODULE_8__.WidgetTracker({\n        namespace: '@jupyterlab/apputils:Dialog'\n    });\n})(Dialog || (Dialog = {}));\n/**\n * The namespace for module private data.\n */\nvar Private;\n(function (Private) {\n    /**\n     * The queue for launching dialogs.\n     */\n    Private.launchQueue = [];\n    Private.errorMessagePromiseCache = new Map();\n    /**\n     * Handle the input options for a dialog.\n     *\n     * @param options - The input options.\n     *\n     * @returns A new options object with defaults applied.\n     */\n    function handleOptions(options = {}) {\n        var _a, _b, _c, _d, _e, _f, _g, _h;\n        const buttons = (_a = options.buttons) !== null && _a !== void 0 ? _a : [\n            Dialog.cancelButton(),\n            Dialog.okButton()\n        ];\n        return {\n            title: (_b = options.title) !== null && _b !== void 0 ? _b : '',\n            body: (_c = options.body) !== null && _c !== void 0 ? _c : '',\n            host: (_d = options.host) !== null && _d !== void 0 ? _d : document.body,\n            buttons,\n            defaultButton: (_e = options.defaultButton) !== null && _e !== void 0 ? _e : buttons.length - 1,\n            renderer: (_f = options.renderer) !== null && _f !== void 0 ? _f : Dialog.defaultRenderer,\n            focusNodeSelector: (_g = options.focusNodeSelector) !== null && _g !== void 0 ? _g : '',\n            hasClose: (_h = options.hasClose) !== null && _h !== void 0 ? _h : true\n        };\n    }\n    Private.handleOptions = handleOptions;\n    /**\n     *  Find the first focusable item in the dialog.\n     */\n    function findFirstFocusable(node) {\n        const candidateSelectors = [\n            'input',\n            'select',\n            'a[href]',\n            'textarea',\n            'button',\n            '[tabindex]'\n        ].join(',');\n        return node.querySelectorAll(candidateSelectors)[0];\n    }\n    Private.findFirstFocusable = findFirstFocusable;\n})(Private || (Private = {}));\n//# sourceMappingURL=dialog.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/dialog.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/domutils.js":
/*!************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/domutils.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DOMUtils\": () => (/* binding */ DOMUtils)\n/* harmony export */ });\n/* harmony import */ var _lumino_algorithm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/algorithm */ \"webpack/sharing/consume/default/@lumino/algorithm/@lumino/algorithm\");\n/* harmony import */ var _lumino_algorithm__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_algorithm__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lumino_domutils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @lumino/domutils */ \"webpack/sharing/consume/default/@lumino/domutils/@lumino/domutils\");\n/* harmony import */ var _lumino_domutils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_lumino_domutils__WEBPACK_IMPORTED_MODULE_2__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n/**\n * The namespace for DOM utilities.\n */\nvar DOMUtils;\n(function (DOMUtils) {\n    /**\n     * Get the index of the node at a client position, or `-1`.\n     */\n    function hitTestNodes(nodes, x, y) {\n        return _lumino_algorithm__WEBPACK_IMPORTED_MODULE_0__.ArrayExt.findFirstIndex(nodes, node => {\n            return _lumino_domutils__WEBPACK_IMPORTED_MODULE_2__.ElementExt.hitTest(node, x, y);\n        });\n    }\n    DOMUtils.hitTestNodes = hitTestNodes;\n    /**\n     * Find the first element matching a class name.\n     */\n    function findElement(parent, className) {\n        return parent.querySelector(`.${className}`);\n    }\n    DOMUtils.findElement = findElement;\n    /**\n     * Find the first element matching a class name.\n     */\n    function findElements(parent, className) {\n        return parent.getElementsByClassName(className);\n    }\n    DOMUtils.findElements = findElements;\n    /**\n     * Create a DOM id with prefix \"id-\" to solve bug for UUIDs beginning with numbers.\n     */\n    function createDomID() {\n        return `id-${_lumino_coreutils__WEBPACK_IMPORTED_MODULE_1__.UUID.uuid4()}`;\n    }\n    DOMUtils.createDomID = createDomID;\n})(DOMUtils || (DOMUtils = {}));\n//# sourceMappingURL=domutils.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/domutils.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/hoverbox.js":
/*!************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/hoverbox.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"HoverBox\": () => (/* binding */ HoverBox)\n/* harmony export */ });\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/**\n * The class name added to all hover boxes.\n */\nconst HOVERBOX_CLASS = 'jp-HoverBox';\n/**\n * The class name added to a hovering node that is scrolled out of view.\n */\nconst OUTOFVIEW_CLASS = 'jp-mod-outofview';\n/**\n * A namespace for `HoverBox` members.\n */\nvar HoverBox;\n(function (HoverBox) {\n    /**\n     * Set the visible dimensions of a hovering box anchored to an editor cursor.\n     *\n     * @param options - The hover box geometry calculation options.\n     */\n    function setGeometry(options) {\n        const { anchor, host, node, privilege } = options;\n        // Add hover box class if it does not exist.\n        node.classList.add(HOVERBOX_CLASS);\n        // Hide the hover box before querying the DOM for the anchor coordinates.\n        node.classList.add(OUTOFVIEW_CLASS);\n        // If the current coordinates are not visible, bail.\n        if (!host.contains(document.elementFromPoint(anchor.left, anchor.top))) {\n            return;\n        }\n        // Clear any previously set max-height.\n        node.style.maxHeight = '';\n        // Clear any programmatically set margin-top.\n        node.style.marginTop = '';\n        // Make sure the node is visible so that its dimensions can be queried.\n        node.classList.remove(OUTOFVIEW_CLASS);\n        const style = options.style || window.getComputedStyle(node);\n        const innerHeight = window.innerHeight;\n        const spaceAbove = anchor.top;\n        const spaceBelow = innerHeight - anchor.bottom;\n        const marginTop = parseInt(style.marginTop, 10) || 0;\n        const minHeight = parseInt(style.minHeight, 10) || options.minHeight;\n        let maxHeight = parseInt(style.maxHeight, 10) || options.maxHeight;\n        // Determine whether to render above or below; check privilege.\n        const renderBelow = privilege === 'forceAbove'\n            ? false\n            : privilege === 'forceBelow'\n                ? true\n                : privilege === 'above'\n                    ? spaceAbove < maxHeight && spaceAbove < spaceBelow\n                    : spaceBelow >= maxHeight || spaceBelow >= spaceAbove;\n        if (renderBelow) {\n            maxHeight = Math.min(spaceBelow - marginTop, maxHeight);\n        }\n        else {\n            maxHeight = Math.min(spaceAbove, maxHeight);\n            // If the box renders above the text, its top margin is irrelevant.\n            node.style.marginTop = '0px';\n        }\n        node.style.maxHeight = `${maxHeight}px`;\n        // Make sure the box ought to be visible.\n        const withinBounds = maxHeight > minHeight &&\n            (spaceBelow >= minHeight || spaceAbove >= minHeight);\n        if (!withinBounds) {\n            node.classList.add(OUTOFVIEW_CLASS);\n            return;\n        }\n        // Position the box vertically.\n        const offsetAbove = (options.offset &&\n            options.offset.vertical &&\n            options.offset.vertical.above) ||\n            0;\n        const offsetBelow = (options.offset &&\n            options.offset.vertical &&\n            options.offset.vertical.below) ||\n            0;\n        const top = renderBelow\n            ? innerHeight - spaceBelow + offsetBelow\n            : spaceAbove - node.getBoundingClientRect().height + offsetAbove;\n        node.style.top = `${Math.floor(top)}px`;\n        // Position the box horizontally.\n        const offsetHorizontal = (options.offset && options.offset.horizontal) || 0;\n        let left = anchor.left + offsetHorizontal;\n        node.style.left = `${Math.ceil(left)}px`;\n        node.style.width = 'auto';\n        // Expand the menu width by the scrollbar size, if present.\n        if (node.scrollHeight >= maxHeight) {\n            node.style.width = `${2 * node.offsetWidth - node.clientWidth}`;\n            node.scrollTop = 0;\n        }\n        // Move left to fit in the window.\n        const right = node.getBoundingClientRect().right;\n        if (right > window.innerWidth) {\n            left -= right - window.innerWidth;\n            node.style.left = `${Math.ceil(left)}px`;\n        }\n    }\n    HoverBox.setGeometry = setGeometry;\n})(HoverBox || (HoverBox = {}));\n//# sourceMappingURL=hoverbox.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/hoverbox.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/iframe.js":
/*!**********************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/iframe.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"IFrame\": () => (/* binding */ IFrame)\n/* harmony export */ });\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_0__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n/**\n * A phosphor widget which wraps an IFrame.\n */\nclass IFrame extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_0__.Widget {\n    /**\n     * Create a new IFrame widget.\n     */\n    constructor(options = {}) {\n        super({ node: Private.createNode() });\n        this._sandbox = [];\n        this.addClass('jp-IFrame');\n        this.sandbox = options.sandbox || [];\n        this.referrerPolicy = options.referrerPolicy || 'no-referrer';\n    }\n    /**\n     * Referrer policy for the iframe.\n     *\n     * #### Notes\n     * By default, `no-referrer` is chosen.\n     *\n     * For more information, see\n     * https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/referrerPolicy\n     */\n    get referrerPolicy() {\n        return this._referrerPolicy;\n    }\n    set referrerPolicy(value) {\n        if (this._referrerPolicy === value) {\n            return;\n        }\n        this._referrerPolicy = value;\n        const iframe = this.node.querySelector('iframe');\n        iframe.setAttribute('referrerpolicy', value);\n    }\n    /**\n     * Exceptions to the sandboxing.\n     *\n     * #### Notes\n     * By default, all sandboxing security policies are enabled.\n     * This setting allows the user to selectively disable these\n     * policies. This should be done with care, as it can\n     * introduce security risks, and possibly allow malicious\n     * sites to execute code in a JupyterLab session.\n     *\n     * For more information, see\n     * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe\n     */\n    get sandbox() {\n        return this._sandbox.slice();\n    }\n    set sandbox(values) {\n        this._sandbox = values.slice();\n        const iframe = this.node.querySelector('iframe');\n        const exceptions = values.length ? values.join(' ') : '';\n        iframe.setAttribute('sandbox', exceptions);\n    }\n    /**\n     * The url of the IFrame.\n     */\n    get url() {\n        return this.node.querySelector('iframe').getAttribute('src') || '';\n    }\n    set url(url) {\n        this.node.querySelector('iframe').setAttribute('src', url);\n    }\n}\n/**\n * A namespace for private data.\n */\nvar Private;\n(function (Private) {\n    /**\n     * Create the main content node of an iframe widget.\n     */\n    function createNode() {\n        const node = document.createElement('div');\n        const iframe = document.createElement('iframe');\n        iframe.setAttribute('sandbox', '');\n        iframe.style.height = '100%';\n        iframe.style.width = '100%';\n        node.appendChild(iframe);\n        return node;\n    }\n    Private.createNode = createNode;\n})(Private || (Private = {}));\n//# sourceMappingURL=iframe.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/iframe.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/index.js":
/*!*********************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/index.js ***!
  \*********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Clipboard\": () => (/* reexport safe */ _clipboard__WEBPACK_IMPORTED_MODULE_0__.Clipboard),\n/* harmony export */   \"Collapse\": () => (/* reexport safe */ _collapse__WEBPACK_IMPORTED_MODULE_1__.Collapse),\n/* harmony export */   \"CommandLinker\": () => (/* reexport safe */ _commandlinker__WEBPACK_IMPORTED_MODULE_2__.CommandLinker),\n/* harmony export */   \"ICommandPalette\": () => (/* reexport safe */ _commandpalette__WEBPACK_IMPORTED_MODULE_3__.ICommandPalette),\n/* harmony export */   \"ModalCommandPalette\": () => (/* reexport safe */ _commandpalette__WEBPACK_IMPORTED_MODULE_3__.ModalCommandPalette),\n/* harmony export */   \"Dialog\": () => (/* reexport safe */ _dialog__WEBPACK_IMPORTED_MODULE_4__.Dialog),\n/* harmony export */   \"showDialog\": () => (/* reexport safe */ _dialog__WEBPACK_IMPORTED_MODULE_4__.showDialog),\n/* harmony export */   \"showErrorMessage\": () => (/* reexport safe */ _dialog__WEBPACK_IMPORTED_MODULE_4__.showErrorMessage),\n/* harmony export */   \"DOMUtils\": () => (/* reexport safe */ _domutils__WEBPACK_IMPORTED_MODULE_5__.DOMUtils),\n/* harmony export */   \"HoverBox\": () => (/* reexport safe */ _hoverbox__WEBPACK_IMPORTED_MODULE_6__.HoverBox),\n/* harmony export */   \"IFrame\": () => (/* reexport safe */ _iframe__WEBPACK_IMPORTED_MODULE_7__.IFrame),\n/* harmony export */   \"InputDialog\": () => (/* reexport safe */ _inputdialog__WEBPACK_IMPORTED_MODULE_8__.InputDialog),\n/* harmony export */   \"MainAreaWidget\": () => (/* reexport safe */ _mainareawidget__WEBPACK_IMPORTED_MODULE_9__.MainAreaWidget),\n/* harmony export */   \"MenuFactory\": () => (/* reexport safe */ _menufactory__WEBPACK_IMPORTED_MODULE_10__.MenuFactory),\n/* harmony export */   \"Printing\": () => (/* reexport safe */ _printing__WEBPACK_IMPORTED_MODULE_11__.Printing),\n/* harmony export */   \"Sanitizer\": () => (/* reexport safe */ _sanitizer__WEBPACK_IMPORTED_MODULE_12__.Sanitizer),\n/* harmony export */   \"defaultSanitizer\": () => (/* reexport safe */ _sanitizer__WEBPACK_IMPORTED_MODULE_12__.defaultSanitizer),\n/* harmony export */   \"SessionContext\": () => (/* reexport safe */ _sessioncontext__WEBPACK_IMPORTED_MODULE_13__.SessionContext),\n/* harmony export */   \"sessionContextDialogs\": () => (/* reexport safe */ _sessioncontext__WEBPACK_IMPORTED_MODULE_13__.sessionContextDialogs),\n/* harmony export */   \"Spinner\": () => (/* reexport safe */ _spinner__WEBPACK_IMPORTED_MODULE_14__.Spinner),\n/* harmony export */   \"ISplashScreen\": () => (/* reexport safe */ _splash__WEBPACK_IMPORTED_MODULE_15__.ISplashScreen),\n/* harmony export */   \"Styling\": () => (/* reexport safe */ _styling__WEBPACK_IMPORTED_MODULE_16__.Styling),\n/* harmony export */   \"ThemeManager\": () => (/* reexport safe */ _thememanager__WEBPACK_IMPORTED_MODULE_17__.ThemeManager),\n/* harmony export */   \"ISanitizer\": () => (/* reexport safe */ _tokens__WEBPACK_IMPORTED_MODULE_18__.ISanitizer),\n/* harmony export */   \"ISessionContextDialogs\": () => (/* reexport safe */ _tokens__WEBPACK_IMPORTED_MODULE_18__.ISessionContextDialogs),\n/* harmony export */   \"IThemeManager\": () => (/* reexport safe */ _tokens__WEBPACK_IMPORTED_MODULE_18__.IThemeManager),\n/* harmony export */   \"CommandToolbarButton\": () => (/* reexport safe */ _toolbar__WEBPACK_IMPORTED_MODULE_19__.CommandToolbarButton),\n/* harmony export */   \"CommandToolbarButtonComponent\": () => (/* reexport safe */ _toolbar__WEBPACK_IMPORTED_MODULE_19__.CommandToolbarButtonComponent),\n/* harmony export */   \"Toolbar\": () => (/* reexport safe */ _toolbar__WEBPACK_IMPORTED_MODULE_19__.Toolbar),\n/* harmony export */   \"ToolbarButton\": () => (/* reexport safe */ _toolbar__WEBPACK_IMPORTED_MODULE_19__.ToolbarButton),\n/* harmony export */   \"ToolbarButtonComponent\": () => (/* reexport safe */ _toolbar__WEBPACK_IMPORTED_MODULE_19__.ToolbarButtonComponent),\n/* harmony export */   \"addCommandToolbarButtonClass\": () => (/* reexport safe */ _toolbar__WEBPACK_IMPORTED_MODULE_19__.addCommandToolbarButtonClass),\n/* harmony export */   \"addToolbarButtonClass\": () => (/* reexport safe */ _toolbar__WEBPACK_IMPORTED_MODULE_19__.addToolbarButtonClass),\n/* harmony export */   \"ReactWidget\": () => (/* reexport safe */ _vdom__WEBPACK_IMPORTED_MODULE_20__.ReactWidget),\n/* harmony export */   \"UseSignal\": () => (/* reexport safe */ _vdom__WEBPACK_IMPORTED_MODULE_20__.UseSignal),\n/* harmony export */   \"VDomModel\": () => (/* reexport safe */ _vdom__WEBPACK_IMPORTED_MODULE_20__.VDomModel),\n/* harmony export */   \"VDomRenderer\": () => (/* reexport safe */ _vdom__WEBPACK_IMPORTED_MODULE_20__.VDomRenderer),\n/* harmony export */   \"WidgetTracker\": () => (/* reexport safe */ _widgettracker__WEBPACK_IMPORTED_MODULE_21__.WidgetTracker),\n/* harmony export */   \"IWindowResolver\": () => (/* reexport safe */ _windowresolver__WEBPACK_IMPORTED_MODULE_22__.IWindowResolver),\n/* harmony export */   \"WindowResolver\": () => (/* reexport safe */ _windowresolver__WEBPACK_IMPORTED_MODULE_22__.WindowResolver)\n/* harmony export */ });\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./clipboard */ \"../node_modules/@jupyterlab/apputils/lib/clipboard.js\");\n/* harmony import */ var _collapse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./collapse */ \"../node_modules/@jupyterlab/apputils/lib/collapse.js\");\n/* harmony import */ var _commandlinker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./commandlinker */ \"../node_modules/@jupyterlab/apputils/lib/commandlinker.js\");\n/* harmony import */ var _commandpalette__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./commandpalette */ \"../node_modules/@jupyterlab/apputils/lib/commandpalette.js\");\n/* harmony import */ var _dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dialog */ \"../node_modules/@jupyterlab/apputils/lib/dialog.js\");\n/* harmony import */ var _domutils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./domutils */ \"../node_modules/@jupyterlab/apputils/lib/domutils.js\");\n/* harmony import */ var _hoverbox__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hoverbox */ \"../node_modules/@jupyterlab/apputils/lib/hoverbox.js\");\n/* harmony import */ var _iframe__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./iframe */ \"../node_modules/@jupyterlab/apputils/lib/iframe.js\");\n/* harmony import */ var _inputdialog__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./inputdialog */ \"../node_modules/@jupyterlab/apputils/lib/inputdialog.js\");\n/* harmony import */ var _mainareawidget__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./mainareawidget */ \"../node_modules/@jupyterlab/apputils/lib/mainareawidget.js\");\n/* harmony import */ var _menufactory__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./menufactory */ \"../node_modules/@jupyterlab/apputils/lib/menufactory.js\");\n/* harmony import */ var _printing__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./printing */ \"../node_modules/@jupyterlab/apputils/lib/printing.js\");\n/* harmony import */ var _sanitizer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./sanitizer */ \"../node_modules/@jupyterlab/apputils/lib/sanitizer.js\");\n/* harmony import */ var _sessioncontext__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./sessioncontext */ \"../node_modules/@jupyterlab/apputils/lib/sessioncontext.js\");\n/* harmony import */ var _spinner__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./spinner */ \"../node_modules/@jupyterlab/apputils/lib/spinner.js\");\n/* harmony import */ var _splash__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./splash */ \"../node_modules/@jupyterlab/apputils/lib/splash.js\");\n/* harmony import */ var _styling__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./styling */ \"../node_modules/@jupyterlab/apputils/lib/styling.js\");\n/* harmony import */ var _thememanager__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./thememanager */ \"../node_modules/@jupyterlab/apputils/lib/thememanager.js\");\n/* harmony import */ var _tokens__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./tokens */ \"../node_modules/@jupyterlab/apputils/lib/tokens.js\");\n/* harmony import */ var _toolbar__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./toolbar */ \"../node_modules/@jupyterlab/apputils/lib/toolbar.js\");\n/* harmony import */ var _vdom__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./vdom */ \"../node_modules/@jupyterlab/apputils/lib/vdom.js\");\n/* harmony import */ var _widgettracker__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./widgettracker */ \"../node_modules/@jupyterlab/apputils/lib/widgettracker.js\");\n/* harmony import */ var _windowresolver__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./windowresolver */ \"../node_modules/@jupyterlab/apputils/lib/windowresolver.js\");\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/**\n * @packageDocumentation\n * @module apputils\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/index.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/inputdialog.js":
/*!***************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/inputdialog.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"InputDialog\": () => (/* binding */ InputDialog)\n/* harmony export */ });\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _dialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dialog */ \"../node_modules/@jupyterlab/apputils/lib/dialog.js\");\n/* harmony import */ var _styling__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./styling */ \"../node_modules/@jupyterlab/apputils/lib/styling.js\");\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\nconst INPUT_DIALOG_CLASS = 'jp-Input-Dialog';\nconst INPUT_BOOLEAN_DIALOG_CLASS = 'jp-Input-Boolean-Dialog';\n/**\n * Namespace for input dialogs\n */\nvar InputDialog;\n(function (InputDialog) {\n    /**\n     * Create and show a input dialog for a boolean.\n     *\n     * @param options - The dialog setup options.\n     *\n     * @returns A promise that resolves with whether the dialog was accepted\n     */\n    function getBoolean(options) {\n        return (0,_dialog__WEBPACK_IMPORTED_MODULE_1__.showDialog)(Object.assign(Object.assign({}, options), { body: new InputBooleanDialog(options), buttons: [\n                _dialog__WEBPACK_IMPORTED_MODULE_1__.Dialog.cancelButton({ label: options.cancelLabel }),\n                _dialog__WEBPACK_IMPORTED_MODULE_1__.Dialog.okButton({ label: options.okLabel })\n            ], focusNodeSelector: 'input' }));\n    }\n    InputDialog.getBoolean = getBoolean;\n    /**\n     * Create and show a input dialog for a number.\n     *\n     * @param options - The dialog setup options.\n     *\n     * @returns A promise that resolves with whether the dialog was accepted\n     */\n    function getNumber(options) {\n        return (0,_dialog__WEBPACK_IMPORTED_MODULE_1__.showDialog)(Object.assign(Object.assign({}, options), { body: new InputNumberDialog(options), buttons: [\n                _dialog__WEBPACK_IMPORTED_MODULE_1__.Dialog.cancelButton({ label: options.cancelLabel }),\n                _dialog__WEBPACK_IMPORTED_MODULE_1__.Dialog.okButton({ label: options.okLabel })\n            ], focusNodeSelector: 'input' }));\n    }\n    InputDialog.getNumber = getNumber;\n    /**\n     * Create and show a input dialog for a choice.\n     *\n     * @param options - The dialog setup options.\n     *\n     * @returns A promise that resolves with whether the dialog was accepted\n     */\n    function getItem(options) {\n        return (0,_dialog__WEBPACK_IMPORTED_MODULE_1__.showDialog)(Object.assign(Object.assign({}, options), { body: new InputItemsDialog(options), buttons: [\n                _dialog__WEBPACK_IMPORTED_MODULE_1__.Dialog.cancelButton({ label: options.cancelLabel }),\n                _dialog__WEBPACK_IMPORTED_MODULE_1__.Dialog.okButton({ label: options.okLabel })\n            ], focusNodeSelector: options.editable ? 'input' : 'select' }));\n    }\n    InputDialog.getItem = getItem;\n    /**\n     * Create and show a input dialog for a text.\n     *\n     * @param options - The dialog setup options.\n     *\n     * @returns A promise that resolves with whether the dialog was accepted\n     */\n    function getText(options) {\n        return (0,_dialog__WEBPACK_IMPORTED_MODULE_1__.showDialog)(Object.assign(Object.assign({}, options), { body: new InputTextDialog(options), buttons: [\n                _dialog__WEBPACK_IMPORTED_MODULE_1__.Dialog.cancelButton({ label: options.cancelLabel }),\n                _dialog__WEBPACK_IMPORTED_MODULE_1__.Dialog.okButton({ label: options.okLabel })\n            ], focusNodeSelector: 'input' }));\n    }\n    InputDialog.getText = getText;\n    /**\n     * Create and show a input dialog for a password.\n     *\n     * @param options - The dialog setup options.\n     *\n     * @returns A promise that resolves with whether the dialog was accepted\n     */\n    function getPassword(options) {\n        return (0,_dialog__WEBPACK_IMPORTED_MODULE_1__.showDialog)(Object.assign(Object.assign({}, options), { body: new InputPasswordDialog(options), buttons: [\n                _dialog__WEBPACK_IMPORTED_MODULE_1__.Dialog.cancelButton({ label: options.cancelLabel }),\n                _dialog__WEBPACK_IMPORTED_MODULE_1__.Dialog.okButton({ label: options.okLabel })\n            ], focusNodeSelector: 'input' }));\n    }\n    InputDialog.getPassword = getPassword;\n})(InputDialog || (InputDialog = {}));\n/**\n * Base widget for input dialog body\n */\nclass InputDialogBase extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_0__.Widget {\n    /**\n     * InputDialog constructor\n     *\n     * @param label Input field label\n     */\n    constructor(label) {\n        super();\n        this.addClass(INPUT_DIALOG_CLASS);\n        this._input = document.createElement('input');\n        this._input.classList.add('jp-mod-styled');\n        this._input.id = 'jp-dialog-input-id';\n        if (label !== undefined) {\n            const labelElement = document.createElement('label');\n            labelElement.textContent = label;\n            labelElement.htmlFor = this._input.id;\n            // Initialize the node\n            this.node.appendChild(labelElement);\n        }\n        this.node.appendChild(this._input);\n    }\n}\n/**\n * Widget body for input boolean dialog\n */\nclass InputBooleanDialog extends InputDialogBase {\n    /**\n     * InputBooleanDialog constructor\n     *\n     * @param options Constructor options\n     */\n    constructor(options) {\n        super(options.label);\n        this.addClass(INPUT_BOOLEAN_DIALOG_CLASS);\n        this._input.type = 'checkbox';\n        this._input.checked = options.value ? true : false;\n    }\n    /**\n     * Get the text specified by the user\n     */\n    getValue() {\n        return this._input.checked;\n    }\n}\n/**\n * Widget body for input number dialog\n */\nclass InputNumberDialog extends InputDialogBase {\n    /**\n     * InputNumberDialog constructor\n     *\n     * @param options Constructor options\n     */\n    constructor(options) {\n        super(options.label);\n        this._input.type = 'number';\n        this._input.value = options.value ? options.value.toString() : '0';\n    }\n    /**\n     * Get the number specified by the user.\n     */\n    getValue() {\n        if (this._input.value) {\n            return Number(this._input.value);\n        }\n        else {\n            return Number.NaN;\n        }\n    }\n}\n/**\n * Widget body for input text dialog\n */\nclass InputTextDialog extends InputDialogBase {\n    /**\n     * InputTextDialog constructor\n     *\n     * @param options Constructor options\n     */\n    constructor(options) {\n        super(options.label);\n        this._input.type = 'text';\n        this._input.value = options.text ? options.text : '';\n        if (options.placeholder) {\n            this._input.placeholder = options.placeholder;\n        }\n    }\n    /**\n     * Get the text specified by the user\n     */\n    getValue() {\n        return this._input.value;\n    }\n}\n/**\n * Widget body for input password dialog\n */\nclass InputPasswordDialog extends InputDialogBase {\n    /**\n     * InputPasswordDialog constructor\n     *\n     * @param options Constructor options\n     */\n    constructor(options) {\n        super(options.label);\n        this._input.type = 'password';\n        this._input.value = options.text ? options.text : '';\n        if (options.placeholder) {\n            this._input.placeholder = options.placeholder;\n        }\n    }\n    /**\n     * Get the text specified by the user\n     */\n    getValue() {\n        return this._input.value;\n    }\n}\n/**\n * Widget body for input list dialog\n */\nclass InputItemsDialog extends InputDialogBase {\n    /**\n     * InputItemsDialog constructor\n     *\n     * @param options Constructor options\n     */\n    constructor(options) {\n        super(options.label);\n        this._editable = options.editable || false;\n        let current = options.current || 0;\n        let defaultIndex;\n        if (typeof current === 'number') {\n            defaultIndex = Math.max(0, Math.min(current, options.items.length - 1));\n            current = '';\n        }\n        this._list = document.createElement('select');\n        options.items.forEach((item, index) => {\n            const option = document.createElement('option');\n            if (index === defaultIndex) {\n                option.selected = true;\n                current = item;\n            }\n            option.value = item;\n            option.textContent = item;\n            this._list.appendChild(option);\n        });\n        if (options.editable) {\n            /* Use of list and datalist */\n            const data = document.createElement('datalist');\n            data.id = 'input-dialog-items';\n            data.appendChild(this._list);\n            this._input.type = 'list';\n            this._input.value = current;\n            this._input.setAttribute('list', data.id);\n            if (options.placeholder) {\n                this._input.placeholder = options.placeholder;\n            }\n            this.node.appendChild(data);\n        }\n        else {\n            /* Use select directly */\n            this._input.remove();\n            this.node.appendChild(_styling__WEBPACK_IMPORTED_MODULE_2__.Styling.wrapSelect(this._list));\n        }\n    }\n    /**\n     * Get the user choice\n     */\n    getValue() {\n        if (this._editable) {\n            return this._input.value;\n        }\n        else {\n            return this._list.value;\n        }\n    }\n}\n//# sourceMappingURL=inputdialog.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/inputdialog.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/mainareawidget.js":
/*!******************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/mainareawidget.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"MainAreaWidget\": () => (/* binding */ MainAreaWidget)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/translation */ \"webpack/sharing/consume/default/@jupyterlab/translation/@jupyterlab/translation\");\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lumino_messaging__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/messaging */ \"webpack/sharing/consume/default/@lumino/messaging/@lumino/messaging\");\n/* harmony import */ var _lumino_messaging__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_messaging__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _domutils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./domutils */ \"../node_modules/@jupyterlab/apputils/lib/domutils.js\");\n/* harmony import */ var _printing__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./printing */ \"../node_modules/@jupyterlab/apputils/lib/printing.js\");\n/* harmony import */ var _spinner__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./spinner */ \"../node_modules/@jupyterlab/apputils/lib/spinner.js\");\n/* harmony import */ var _toolbar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./toolbar */ \"../node_modules/@jupyterlab/apputils/lib/toolbar.js\");\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n\n\n\n\n/**\n * A widget meant to be contained in the JupyterLab main area.\n *\n * #### Notes\n * Mirrors all of the `title` attributes of the content.\n * This widget is `closable` by default.\n * This widget is automatically disposed when closed.\n * This widget ensures its own focus when activated.\n */\nclass MainAreaWidget extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__.Widget {\n    /**\n     * Construct a new main area widget.\n     *\n     * @param options - The options for initializing the widget.\n     */\n    constructor(options) {\n        super(options);\n        this._changeGuard = false;\n        this._spinner = new _spinner__WEBPACK_IMPORTED_MODULE_3__.Spinner();\n        this._isRevealed = false;\n        this.addClass('jp-MainAreaWidget');\n        // Set contain=strict to avoid many forced layout rendering while adding cells.\n        // Don't forget to remove the CSS class when your remove the spinner to allow\n        // the content to be rendered.\n        // @see https://github.com/jupyterlab/jupyterlab/issues/9381\n        this.addClass('jp-MainAreaWidget-ContainStrict');\n        this.id = _domutils__WEBPACK_IMPORTED_MODULE_4__.DOMUtils.createDomID();\n        const trans = (options.translator || _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_0__.nullTranslator).load('jupyterlab');\n        const content = (this._content = options.content);\n        content.node.setAttribute('role', 'region');\n        content.node.setAttribute('aria-label', trans.__('notebook content'));\n        const toolbar = (this._toolbar = options.toolbar || new _toolbar__WEBPACK_IMPORTED_MODULE_5__.Toolbar());\n        toolbar.node.setAttribute('role', 'navigation');\n        toolbar.node.setAttribute('aria-label', trans.__('notebook actions'));\n        const contentHeader = (this._contentHeader =\n            options.contentHeader ||\n                new _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__.BoxPanel({\n                    direction: 'top-to-bottom',\n                    spacing: 0\n                }));\n        const layout = (this.layout = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__.BoxLayout({ spacing: 0 }));\n        layout.direction = 'top-to-bottom';\n        _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__.BoxLayout.setStretch(toolbar, 0);\n        _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__.BoxLayout.setStretch(contentHeader, 0);\n        _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__.BoxLayout.setStretch(content, 1);\n        layout.addWidget(toolbar);\n        layout.addWidget(contentHeader);\n        layout.addWidget(content);\n        if (!content.id) {\n            content.id = _domutils__WEBPACK_IMPORTED_MODULE_4__.DOMUtils.createDomID();\n        }\n        content.node.tabIndex = 0;\n        this._updateTitle();\n        content.title.changed.connect(this._updateTitle, this);\n        this.title.closable = true;\n        this.title.changed.connect(this._updateContentTitle, this);\n        if (options.reveal) {\n            this.node.appendChild(this._spinner.node);\n            this._revealed = options.reveal\n                .then(() => {\n                if (content.isDisposed) {\n                    this.dispose();\n                    return;\n                }\n                content.disposed.connect(() => this.dispose());\n                const active = document.activeElement === this._spinner.node;\n                this._disposeSpinner();\n                this._isRevealed = true;\n                if (active) {\n                    this._focusContent();\n                }\n            })\n                .catch(e => {\n                // Show a revealed promise error.\n                const error = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__.Widget();\n                // Show the error to the user.\n                const pre = document.createElement('pre');\n                pre.textContent = String(e);\n                error.node.appendChild(pre);\n                _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__.BoxLayout.setStretch(error, 1);\n                this._disposeSpinner();\n                content.dispose();\n                this._content = null;\n                toolbar.dispose();\n                this._toolbar = null;\n                layout.addWidget(error);\n                this._isRevealed = true;\n                throw error;\n            });\n        }\n        else {\n            // Handle no reveal promise.\n            this._spinner.dispose();\n            this.removeClass('jp-MainAreaWidget-ContainStrict');\n            content.disposed.connect(() => this.dispose());\n            this._isRevealed = true;\n            this._revealed = Promise.resolve(undefined);\n        }\n    }\n    /**\n     * Print method. Deferred to content.\n     */\n    [_printing__WEBPACK_IMPORTED_MODULE_6__.Printing.symbol]() {\n        if (!this._content) {\n            return null;\n        }\n        return _printing__WEBPACK_IMPORTED_MODULE_6__.Printing.getPrintFunction(this._content);\n    }\n    /**\n     * The content hosted by the widget.\n     */\n    get content() {\n        return this._content;\n    }\n    /**\n     * The toolbar hosted by the widget.\n     */\n    get toolbar() {\n        return this._toolbar;\n    }\n    /**\n     * A panel for widgets that sit between the toolbar and the content.\n     * Imagine a formatting toolbar, notification headers, etc.\n     */\n    get contentHeader() {\n        return this._contentHeader;\n    }\n    /**\n     * Whether the content widget or an error is revealed.\n     */\n    get isRevealed() {\n        return this._isRevealed;\n    }\n    /**\n     * A promise that resolves when the widget is revealed.\n     */\n    get revealed() {\n        return this._revealed;\n    }\n    /**\n     * Handle `'activate-request'` messages.\n     */\n    onActivateRequest(msg) {\n        if (this._isRevealed) {\n            if (this._content) {\n                this._focusContent();\n            }\n        }\n        else {\n            this._spinner.node.focus();\n        }\n    }\n    /**\n     * Handle `'close-request'` messages.\n     */\n    onCloseRequest(msg) {\n        this.dispose();\n    }\n    /**\n     * Handle `'update-request'` messages by forwarding them to the content.\n     */\n    onUpdateRequest(msg) {\n        if (this._content) {\n            _lumino_messaging__WEBPACK_IMPORTED_MODULE_1__.MessageLoop.sendMessage(this._content, msg);\n        }\n    }\n    _disposeSpinner() {\n        this.node.removeChild(this._spinner.node);\n        this._spinner.dispose();\n        this.removeClass('jp-MainAreaWidget-ContainStrict');\n    }\n    /**\n     * Update the title based on the attributes of the child widget.\n     */\n    _updateTitle() {\n        if (this._changeGuard || !this.content) {\n            return;\n        }\n        this._changeGuard = true;\n        const content = this.content;\n        this.title.label = content.title.label;\n        this.title.mnemonic = content.title.mnemonic;\n        this.title.icon = content.title.icon;\n        this.title.iconClass = content.title.iconClass;\n        this.title.iconLabel = content.title.iconLabel;\n        this.title.caption = content.title.caption;\n        this.title.className = content.title.className;\n        this.title.dataset = content.title.dataset;\n        this._changeGuard = false;\n    }\n    /**\n     * Update the content title based on attributes of the main widget.\n     */\n    _updateContentTitle() {\n        if (this._changeGuard || !this.content) {\n            return;\n        }\n        this._changeGuard = true;\n        const content = this.content;\n        content.title.label = this.title.label;\n        content.title.mnemonic = this.title.mnemonic;\n        content.title.icon = this.title.icon;\n        content.title.iconClass = this.title.iconClass;\n        content.title.iconLabel = this.title.iconLabel;\n        content.title.caption = this.title.caption;\n        content.title.className = this.title.className;\n        content.title.dataset = this.title.dataset;\n        this._changeGuard = false;\n    }\n    /**\n     * Give focus to the content.\n     */\n    _focusContent() {\n        if (!this.content) {\n            return;\n        }\n        // Focus the content node if we aren't already focused on it or a\n        // descendent.\n        if (!this.content.node.contains(document.activeElement)) {\n            this.content.node.focus();\n        }\n        // Activate the content asynchronously (which may change the focus).\n        this.content.activate();\n    }\n}\n//# sourceMappingURL=mainareawidget.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/mainareawidget.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/menufactory.js":
/*!***************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/menufactory.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"MenuFactory\": () => (/* binding */ MenuFactory)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/coreutils */ \"webpack/sharing/consume/default/@jupyterlab/coreutils/@jupyterlab/coreutils\");\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/ui-components */ \"webpack/sharing/consume/default/@jupyterlab/ui-components/@jupyterlab/ui-components\");\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_2__);\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n/**\n * Helper functions to build a menu from the settings\n */\nvar MenuFactory;\n(function (MenuFactory) {\n    /**\n     * Create menus from their description\n     *\n     * @param data Menubar description\n     * @param menuFactory Factory for empty menu\n     */\n    function createMenus(data, menuFactory) {\n        return data\n            .filter(item => !item.disabled)\n            .sort((a, b) => { var _a, _b; return ((_a = a.rank) !== null && _a !== void 0 ? _a : Infinity) - ((_b = b.rank) !== null && _b !== void 0 ? _b : Infinity); })\n            .map(menuItem => {\n            return dataToMenu(menuItem, menuFactory);\n        });\n    }\n    MenuFactory.createMenus = createMenus;\n    /**\n     * Convert a menu description in a JupyterLabMenu object\n     *\n     * @param item Menu description\n     * @param menuFactory Empty menu factory\n     * @returns The menu widget\n     */\n    function dataToMenu(item, menuFactory) {\n        var _a, _b;\n        const menu = menuFactory(item);\n        menu.id = item.id;\n        // Set the label in case the menu factory did not.\n        if (!menu.title.label) {\n            menu.title.label = (_a = item.label) !== null && _a !== void 0 ? _a : _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.Text.titleCase(menu.id.trim());\n        }\n        if (item.icon) {\n            menu.title.icon = _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1__.LabIcon.resolve({ icon: item.icon });\n        }\n        if (item.mnemonic !== undefined) {\n            menu.title.mnemonic = item.mnemonic;\n        }\n        (_b = item.items) === null || _b === void 0 ? void 0 : _b.filter(item => !item.disabled).sort((a, b) => { var _a, _b; return ((_a = a.rank) !== null && _a !== void 0 ? _a : Infinity) - ((_b = b.rank) !== null && _b !== void 0 ? _b : Infinity); }).map(item => {\n            addItem(item, menu, menuFactory);\n        });\n        return menu;\n    }\n    /**\n     * Convert an item description in a context menu item object\n     *\n     * @param item Context menu item\n     * @param menu Context menu to populate\n     * @param menuFactory Empty menu factory\n     */\n    function addContextItem(item, menu, menuFactory) {\n        const { submenu } = item, newItem = __rest(item, [\"submenu\"]);\n        // Commands may not have been registered yet; so we don't force it to exist\n        menu.addItem(Object.assign(Object.assign({}, newItem), { submenu: submenu ? dataToMenu(submenu, menuFactory) : null }));\n    }\n    MenuFactory.addContextItem = addContextItem;\n    /**\n     * Convert an item description in a menu item object\n     *\n     * @param item Menu item\n     * @param menu Menu to populate\n     * @param menuFactory Empty menu factory\n     */\n    function addItem(item, menu, menuFactory) {\n        const { submenu } = item, newItem = __rest(item, [\"submenu\"]);\n        // Commands may not have been registered yet; so we don't force it to exist\n        menu.addItem(Object.assign(Object.assign({}, newItem), { submenu: submenu ? dataToMenu(submenu, menuFactory) : null }));\n    }\n    /**\n     * Update an existing list of menu and returns\n     * the new elements.\n     *\n     * #### Note\n     * New elements are added to the current menu list.\n     *\n     * @param menus Current menus\n     * @param data New description to take into account\n     * @param menuFactory Empty menu factory\n     * @returns Newly created menus\n     */\n    function updateMenus(menus, data, menuFactory) {\n        const newMenus = [];\n        data.forEach(item => {\n            const menu = menus.find(menu => menu.id === item.id);\n            if (menu) {\n                mergeMenus(item, menu, menuFactory);\n            }\n            else {\n                if (!item.disabled) {\n                    newMenus.push(dataToMenu(item, menuFactory));\n                }\n            }\n        });\n        menus.push(...newMenus);\n        return newMenus;\n    }\n    MenuFactory.updateMenus = updateMenus;\n    function mergeMenus(item, menu, menuFactory) {\n        var _a;\n        if (item.disabled) {\n            menu.dispose();\n        }\n        else {\n            (_a = item.items) === null || _a === void 0 ? void 0 : _a.forEach(entry => {\n                var _a, _b;\n                const existingItem = menu === null || menu === void 0 ? void 0 : menu.items.find((i, idx) => {\n                    var _a, _b;\n                    return i.type === entry.type &&\n                        i.command === entry.command &&\n                        ((_a = i.submenu) === null || _a === void 0 ? void 0 : _a.id) === ((_b = entry.submenu) === null || _b === void 0 ? void 0 : _b.id);\n                });\n                if (existingItem && entry.type !== 'separator') {\n                    if (entry.disabled) {\n                        menu.removeItem(existingItem);\n                    }\n                    else {\n                        switch ((_a = entry.type) !== null && _a !== void 0 ? _a : 'command') {\n                            case 'command':\n                                if (entry.command) {\n                                    if (!_lumino_coreutils__WEBPACK_IMPORTED_MODULE_2__.JSONExt.deepEqual(existingItem.args, (_b = entry.args) !== null && _b !== void 0 ? _b : {})) {\n                                        addItem(entry, menu, menuFactory);\n                                    }\n                                }\n                                break;\n                            case 'submenu':\n                                if (entry.submenu) {\n                                    mergeMenus(entry.submenu, existingItem.submenu, menuFactory);\n                                }\n                        }\n                    }\n                }\n                else {\n                    addItem(entry, menu, menuFactory);\n                }\n            });\n        }\n    }\n})(MenuFactory || (MenuFactory = {}));\n//# sourceMappingURL=menufactory.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/menufactory.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/printing.js":
/*!************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/printing.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Printing\": () => (/* binding */ Printing)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_services__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/services */ \"webpack/sharing/consume/default/@jupyterlab/services/@jupyterlab/services\");\n/* harmony import */ var _jupyterlab_services__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_services__WEBPACK_IMPORTED_MODULE_0__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n/**\n * Any object is \"printable\" if it implements the `IPrintable` interface.\n *\n * To do this it, it must have a method called `Printing.symbol` which returns either a function\n * to print the object or null if it cannot be printed.\n *\n * One way of printing is to use the `printWidget` function, which creates a hidden iframe\n * and copies the DOM nodes from your widget to that iframe and printing just that iframe.\n *\n * Another way to print is to use the `printURL` function, which takes a URL and prints that page.\n */\nvar Printing;\n(function (Printing) {\n    /**\n     * Symbol to use for a method that returns a function to print an object.\n     */\n    Printing.symbol = Symbol('printable');\n    /**\n     * Returns whether an object implements a print method.\n     */\n    function isPrintable(a) {\n        if (typeof a !== 'object' || !a) {\n            return false;\n        }\n        return Printing.symbol in a;\n    }\n    Printing.isPrintable = isPrintable;\n    /**\n     * Returns the print function for an object, or null if it does not provide a handler.\n     */\n    function getPrintFunction(val) {\n        if (isPrintable(val)) {\n            return val[Printing.symbol]();\n        }\n        return null;\n    }\n    Printing.getPrintFunction = getPrintFunction;\n    /**\n     * Prints a widget by copying it's DOM node\n     * to a hidden iframe and printing that iframe.\n     */\n    function printWidget(widget) {\n        return printContent(widget.node);\n    }\n    Printing.printWidget = printWidget;\n    const settings = _jupyterlab_services__WEBPACK_IMPORTED_MODULE_0__.ServerConnection.makeSettings();\n    /**\n     * Prints a URL by loading it into an iframe.\n     *\n     * @param url URL to load into an iframe.\n     */\n    async function printURL(url) {\n        const text = await (await _jupyterlab_services__WEBPACK_IMPORTED_MODULE_0__.ServerConnection.makeRequest(url, {}, settings)).text();\n        return printContent(text);\n    }\n    Printing.printURL = printURL;\n    /**\n     * Prints a URL or an element in an iframe and then removes the iframe after printing.\n     */\n    async function printContent(textOrEl) {\n        const isText = typeof textOrEl === 'string';\n        const iframe = createIFrame();\n        const parent = window.document.body;\n        parent.appendChild(iframe);\n        if (isText) {\n            iframe.srcdoc = textOrEl;\n            await resolveWhenLoaded(iframe);\n        }\n        else {\n            iframe.src = 'about:blank';\n            await resolveWhenLoaded(iframe);\n            setIFrameNode(iframe, textOrEl);\n        }\n        const printed = resolveAfterEvent();\n        launchPrint(iframe.contentWindow);\n        // Once the print dialog has been dismissed, we regain event handling,\n        // and it should be safe to discard the hidden iframe.\n        await printed;\n        parent.removeChild(iframe);\n    }\n    /**\n     * Creates a new hidden iframe and appends it to the document\n     *\n     * Modified from\n     * https://github.com/joseluisq/printd/blob/eb7948d602583c055ab6dee3ee294b6a421da4b6/src/index.ts#L24\n     */\n    function createIFrame() {\n        const el = window.document.createElement('iframe');\n        // We need both allow-modals and allow-same-origin to be able to\n        // call print in the iframe.\n        // We intentionally do not allow scripts:\n        // https://github.com/jupyterlab/jupyterlab/pull/5850#pullrequestreview-230899790\n        el.setAttribute('sandbox', 'allow-modals allow-same-origin');\n        const css = 'visibility:hidden;width:0;height:0;position:absolute;z-index:-9999;bottom:0;';\n        el.setAttribute('style', css);\n        el.setAttribute('width', '0');\n        el.setAttribute('height', '0');\n        return el;\n    }\n    /**\n     * Copies a node from the base document to the iframe.\n     */\n    function setIFrameNode(iframe, node) {\n        iframe.contentDocument.body.appendChild(node.cloneNode(true));\n        iframe.contentDocument.close();\n    }\n    /**\n     * Promise that resolves when all resources are loaded in the window.\n     */\n    function resolveWhenLoaded(iframe) {\n        return new Promise(resolve => {\n            iframe.onload = () => resolve();\n        });\n    }\n    /**\n     * A promise that resolves after the next mousedown, mousemove, or\n     * keydown event. We use this as a proxy for determining when the\n     * main window has regained control after the print dialog is removed.\n     *\n     * We can't use the usual window.onafterprint handler because we\n     * disallow Javascript execution in the print iframe.\n     */\n    function resolveAfterEvent() {\n        return new Promise(resolve => {\n            const onEvent = () => {\n                document.removeEventListener('mousemove', onEvent, true);\n                document.removeEventListener('mousedown', onEvent, true);\n                document.removeEventListener('keydown', onEvent, true);\n                resolve();\n            };\n            document.addEventListener('mousemove', onEvent, true);\n            document.addEventListener('mousedown', onEvent, true);\n            document.addEventListener('keydown', onEvent, true);\n        });\n    }\n    /**\n     * Prints a content window.\n     */\n    function launchPrint(contentWindow) {\n        const result = contentWindow.document.execCommand('print', false);\n        // execCommand won't work in firefox so we call the `print` method instead if it fails\n        // https://github.com/joseluisq/printd/blob/eb7948d602583c055ab6dee3ee294b6a421da4b6/src/index.ts#L148\n        if (!result) {\n            contentWindow.print();\n        }\n    }\n})(Printing || (Printing = {}));\n//# sourceMappingURL=printing.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/printing.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/sanitizer.js":
/*!*************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/sanitizer.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Sanitizer\": () => (/* binding */ Sanitizer),\n/* harmony export */   \"defaultSanitizer\": () => (/* binding */ defaultSanitizer)\n/* harmony export */ });\n/* harmony import */ var sanitize_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! sanitize-html */ \"../node_modules/sanitize-html/index.js\");\n/* harmony import */ var sanitize_html__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(sanitize_html__WEBPACK_IMPORTED_MODULE_0__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n// sanitize-html uses the url package, so we depend on a standalone version of\n// it which acts as a polyfill for browsers.\n\n/**\n * Helper class that contains regular expressions for inline CSS style validation.\n *\n * Which properties (and values) to allow is largely based on the Google Caja project:\n *   https://github.com/google/caja\n *\n * The regular expressions are largly based on the syntax definition found at\n * https://developer.mozilla.org/en-US/docs/Web/CSS.\n */\nclass CssProp {\n    static reg(r) {\n        return new RegExp('^' + r + '$', 'i');\n    }\n}\n/*\n * Numeric base expressions used to help build more complex regular expressions\n */\nCssProp.N = {\n    integer: `[+-]?[0-9]+`,\n    integer_pos: `[+]?[0-9]+`,\n    integer_zero_ff: `([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])`,\n    number: `[+-]?([0-9]*[.])?[0-9]+(e-?[0-9]*)?`,\n    number_pos: `[+]?([0-9]*[.])?[0-9]+(e-?[0-9]*)?`,\n    number_zero_hundred: `[+]?(([0-9]|[1-9][0-9])([.][0-9]+)?|100)`,\n    number_zero_one: `[+]?(1([.][0]+)?|0([.][0-9]+)?)`\n};\n/*\n * Base expressions of common CSS syntax elements\n */\nCssProp.B = {\n    angle: `(${CssProp.N.number}(deg|rad|grad|turn)|0)`,\n    frequency: `${CssProp.N.number}(Hz|kHz)`,\n    ident: String.raw `-?([_a-z]|[\\xA0-\\xFF]|\\\\[0-9a-f]{1,6}(\\r\\n|[ \\t\\r\\n\\f])?|\\\\[^\\r\\n\\f0-9a-f])([_a-z0-9-]|[\\xA0-\\xFF]|\\\\[0-9a-f]{1,6}(\\r\\n|[ \\t\\r\\n\\f])?|\\\\[^\\r\\n\\f0-9a-f])*`,\n    len_or_perc: `(0|${CssProp.N.number}(px|em|rem|ex|in|cm|mm|pt|pc|%))`,\n    length: `(${CssProp.N.number}(px|em|rem|ex|in|cm|mm|pt|pc)|0)`,\n    length_pos: `(${CssProp.N.number_pos}(px|em|rem|ex|in|cm|mm|pt|pc)|0)`,\n    percentage: `${CssProp.N.number}%`,\n    percentage_pos: `${CssProp.N.number_pos}%`,\n    percentage_zero_hundred: `${CssProp.N.number_zero_hundred}%`,\n    string: String.raw `(\\\"([^\\n\\r\\f\\\\\"]|\\\\\\n|\\r\\n|\\r|\\f|\\\\[0-9a-f]{1,6}(\\r\\n|[ \\t\\r\\n\\f])?|\\\\[^\\r\\n\\f0-9a-f])*\\\")|(\\'([^\\n\\r\\f\\\\']|\\\\\\n|\\r\\n|\\r|\\f|\\\\[0-9a-f]{1,6}(\\r\\n|[ \\t\\r\\n\\f])?|\\\\[^\\r\\n\\f0-9a-f])*\\')`,\n    time: `${CssProp.N.number}(s|ms)`,\n    url: `url\\\\(.*?\\\\)`,\n    z_index: `[+-]?[0-9]{1,7}`\n};\n/*\n * Atomic (i.e. not dependant on other regular expressions) sub RegEx segments\n */\nCssProp.A = {\n    absolute_size: `xx-small|x-small|small|medium|large|x-large|xx-large`,\n    attachment: `scroll|fixed|local`,\n    bg_origin: `border-box|padding-box|content-box`,\n    border_style: `none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset`,\n    box: `border-box|padding-box|content-box`,\n    display_inside: `auto|block|table|flex|grid`,\n    display_outside: `block-level|inline-level|none|table-row-group|table-header-group|table-footer-group|table-row|table-cell|table-column-group|table-column|table-caption`,\n    ending_shape: `circle|ellipse`,\n    generic_family: `serif|sans-serif|cursive|fantasy|monospace`,\n    generic_voice: `male|female|child`,\n    relative_size: `smaller|larger`,\n    repeat_style: `repeat-x|repeat-y|((?:repeat|space|round|no-repeat)(?:\\\\s*(?:repeat|space|round|no-repeat))?)`,\n    side_or_corner: `(left|right)?\\\\s*(top|bottom)?`,\n    single_animation_direction: `normal|reverse|alternate|alternate-reverse`,\n    single_animation_fill_mode: `none|forwards|backwards|both`,\n    single_animation_play_state: `running|paused`\n};\n/*\n * Color definition sub expressions\n */\nCssProp._COLOR = {\n    hex: `\\\\#(0x)?[0-9a-f]+`,\n    name: `aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|transparent|violet|wheat|white|whitesmoke|yellow|yellowgreen`,\n    rgb: String.raw `rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)`,\n    rgba: String.raw `rgba\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(${CssProp.N.integer_zero_ff}|${CssProp.N.number_zero_one}|${CssProp.B.percentage_zero_hundred})\\s*\\)`\n};\n/*\n * Compound (i.e. dependant on other (sub) regular expressions) sub RegEx segments\n */\nCssProp._C = {\n    alpha: `${CssProp.N.integer_zero_ff}|${CssProp.N.number_zero_one}|${CssProp.B.percentage_zero_hundred}`,\n    alphavalue: CssProp.N.number_zero_one,\n    bg_position: `((${CssProp.B.len_or_perc}|left|center|right|top|bottom)\\\\s*){1,4}`,\n    bg_size: `(${CssProp.B.length_pos}|${CssProp.B.percentage}|auto){1,2}|cover|contain`,\n    border_width: `thin|medium|thick|${CssProp.B.length}`,\n    bottom: `${CssProp.B.length}|auto`,\n    color: `${CssProp._COLOR.hex}|${CssProp._COLOR.rgb}|${CssProp._COLOR.rgba}|${CssProp._COLOR.name}`,\n    family_name: `${CssProp.B.string}|(${CssProp.B.ident}\\\\s*)+`,\n    image_decl: CssProp.B.url,\n    left: `${CssProp.B.length}|auto`,\n    loose_quotable_words: `(${CssProp.B.ident})+`,\n    margin_width: `${CssProp.B.len_or_perc}|auto`,\n    padding_width: `${CssProp.B.length_pos}|${CssProp.B.percentage_pos}`,\n    page_url: CssProp.B.url,\n    position: `((${CssProp.B.len_or_perc}|left|center|right|top|bottom)\\\\s*){1,4}`,\n    right: `${CssProp.B.length}|auto`,\n    shadow: '',\n    size: `closest-side|farthest-side|closest-corner|farthest-corner|${CssProp.B.length}|(${CssProp.B.len_or_perc})\\\\s+(${CssProp.B.len_or_perc})`,\n    top: `${CssProp.B.length}|auto`\n};\nCssProp._C1 = {\n    image_list: `image\\\\(\\\\s*(${CssProp.B.url})*\\\\s*(${CssProp.B.url}|${CssProp._C.color})\\\\s*\\\\)`,\n    shadow: `((${CssProp._C.color})\\\\s+((${CssProp.B.length})\\\\s*){2,4}(\\s+inset)?)|((inset\\\\s+)?((${CssProp.B.length})\\\\s*){2,4}\\\\s*(${CssProp._C.color})?)`\n};\nCssProp._C2 = {\n    bg_image: `(${CssProp.B.url}|${CssProp._C1.image_list})|none`,\n    image: `${CssProp.B.url}|${CssProp._C1.image_list}`,\n    shape: `rect\\\\(\\\\s*(${CssProp._C.top})\\\\s*,\\\\s*(${CssProp._C.right})\\\\s*,\\\\s*(${CssProp._C.bottom})\\\\s*,\\\\s*(${CssProp._C.left})\\\\s*\\\\)`\n};\nCssProp.C = Object.assign(Object.assign(Object.assign({}, CssProp._C), CssProp._C1), CssProp._C2);\n/*\n * Property value regular expressions not dependant on other sub expressions\n */\nCssProp.AP = {\n    border_collapse: `collapse|separate`,\n    box: `normal|none|contents`,\n    box_sizing: `content-box|padding-box|border-box`,\n    caption_side: `top|bottom`,\n    clear: `none|left|right|both`,\n    direction: `ltr|rtl`,\n    empty_cells: `show|hide`,\n    float: `left|right|none`,\n    font_stretch: `normal|wider|narrower|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded`,\n    font_style: `normal|italic|oblique`,\n    font_variant: `normal|small-caps`,\n    font_weight: `normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900`,\n    list_style_position: `inside|outside`,\n    list_style_type: `disc|circle|square|decimal|decimal-leading-zero|lower-roman|upper-roman|lower-greek|lower-latin|upper-latin|armenian|georgian|lower-alpha|upper-alpha|none`,\n    overflow: `visible|hidden|scroll|auto`,\n    overflow_wrap: `normal|break-word`,\n    overflow_x: `visible|hidden|scroll|auto|no-display|no-content`,\n    page_break_after: `auto|always|avoid|left|right`,\n    page_break_before: `auto|always|avoid|left|right`,\n    page_break_inside: `avoid|auto`,\n    position: `static|relative|absolute`,\n    resize: `none|both|horizontal|vertical`,\n    speak: `normal|none|spell-out`,\n    speak_header: `once|always`,\n    speak_numeral: `digits|continuous`,\n    speak_punctuation: `code|none`,\n    table_layout: `auto|fixed`,\n    text_align: `left|right|center|justify`,\n    text_decoration: `none|((underline|overline|line-through|blink)\\\\s*)+`,\n    text_transform: `capitalize|uppercase|lowercase|none`,\n    text_wrap: `normal|unrestricted|none|suppress`,\n    unicode_bidi: `normal|embed|bidi-override`,\n    visibility: `visible|hidden|collapse`,\n    white_space: `normal|pre|nowrap|pre-wrap|pre-line`,\n    word_break: `normal|keep-all|break-all`\n};\n/*\n * Compound propertiy value regular expressions (i.e. dependant on other sub expressions)\n */\nCssProp._CP = {\n    background_attachment: `${CssProp.A.attachment}(,\\\\s*${CssProp.A.attachment})*`,\n    background_color: CssProp.C.color,\n    background_origin: `${CssProp.A.box}(,\\\\s*${CssProp.A.box})*`,\n    background_repeat: `${CssProp.A.repeat_style}(,\\\\s*${CssProp.A.repeat_style})*`,\n    border: `((${CssProp.C.border_width}|${CssProp.A.border_style}|${CssProp.C.color})\\\\s*){1,3}`,\n    border_radius: `((${CssProp.B.len_or_perc})\\\\s*){1,4}(\\\\/\\\\s*((${CssProp.B.len_or_perc})\\\\s*){1,4})?`,\n    border_spacing: `${CssProp.B.length}\\\\s*(${CssProp.B.length})?`,\n    border_top_color: CssProp.C.color,\n    border_top_style: CssProp.A.border_style,\n    border_width: `((${CssProp.C.border_width})\\\\s*){1,4}`,\n    color: CssProp.C.color,\n    cursor: `(${CssProp.B.url}(\\\\s*,\\\\s*)?)*(auto|crosshair|default|pointer|move|e-resize|ne-resize|nw-resize|n-resize|se-resize|sw-resize|s-resize|w-resize|text|wait|help|progress|all-scroll|col-resize|hand|no-drop|not-allowed|row-resize|vertical-text)`,\n    display: `inline|block|list-item|run-in|inline-list-item|inline-block|table|inline-table|table-cell|table-caption|flex|inline-flex|grid|inline-grid|${CssProp.A.display_inside}|${CssProp.A.display_outside}|inherit|inline-box|inline-stack`,\n    display_outside: CssProp.A.display_outside,\n    elevation: `${CssProp.B.angle}|below|level|above|higher|lower`,\n    font_family: `(${CssProp.C.family_name}|${CssProp.A.generic_family})(,\\\\s*(${CssProp.C.family_name}|${CssProp.A.generic_family}))*`,\n    height: `${CssProp.B.length}|${CssProp.B.percentage}|auto`,\n    letter_spacing: `normal|${CssProp.B.length}`,\n    list_style_image: `${CssProp.C.image}|none`,\n    margin_right: CssProp.C.margin_width,\n    max_height: `${CssProp.B.length_pos}|${CssProp.B.percentage_pos}|none|auto`,\n    min_height: `${CssProp.B.length_pos}|${CssProp.B.percentage_pos}|auto`,\n    opacity: CssProp.C.alphavalue,\n    outline_color: `${CssProp.C.color}|invert`,\n    outline_width: CssProp.C.border_width,\n    padding: `((${CssProp.C.padding_width})\\\\s*){1,4}`,\n    padding_top: CssProp.C.padding_width,\n    pitch_range: CssProp.N.number,\n    right: `${CssProp.B.length}|${CssProp.B.percentage}|auto`,\n    stress: CssProp.N.number,\n    text_indent: `${CssProp.B.length}|${CssProp.B.percentage}`,\n    text_shadow: `none|${CssProp.C.shadow}(,\\\\s*(${CssProp.C.shadow}))*`,\n    volume: `${CssProp.N.number_pos}|${CssProp.B.percentage_pos}|silent|x-soft|soft|medium|loud|x-loud`,\n    word_wrap: CssProp.AP.overflow_wrap,\n    zoom: `normal|${CssProp.N.number_pos}|${CssProp.B.percentage_pos}`,\n    backface_visibility: CssProp.AP.visibility,\n    background_clip: `${CssProp.A.box}(,\\\\s*(${CssProp.A.box}))*`,\n    background_position: `${CssProp.C.bg_position}(,\\\\s*(${CssProp.C.bg_position}))*`,\n    border_bottom_color: CssProp.C.color,\n    border_bottom_style: CssProp.A.border_style,\n    border_color: `((${CssProp.C.color})\\\\s*){1,4}`,\n    border_left_color: CssProp.C.color,\n    border_right_color: CssProp.C.color,\n    border_style: `((${CssProp.A.border_style})\\\\s*){1,4}`,\n    border_top_left_radius: `(${CssProp.B.length}|${CssProp.B.percentage})(\\\\s*(${CssProp.B.length}|${CssProp.B.percentage}))?`,\n    border_top_width: CssProp.C.border_width,\n    box_shadow: `none|${CssProp.C.shadow}(,\\\\s*(${CssProp.C.shadow}))*`,\n    clip: `${CssProp.C.shape}|auto`,\n    display_inside: CssProp.A.display_inside,\n    font_size: `${CssProp.A.absolute_size}|${CssProp.A.relative_size}|${CssProp.B.length_pos}|${CssProp.B.percentage_pos}`,\n    line_height: `normal|${CssProp.N.number_pos}|${CssProp.B.length_pos}|${CssProp.B.percentage_pos}`,\n    margin_left: CssProp.C.margin_width,\n    max_width: `${CssProp.B.length_pos}|${CssProp.B.percentage_pos}|none|auto`,\n    outline_style: CssProp.A.border_style,\n    padding_bottom: CssProp.C.padding_width,\n    padding_right: CssProp.C.padding_width,\n    perspective: `none|${CssProp.B.length}`,\n    richness: CssProp.N.number,\n    text_overflow: `((clip|ellipsis|${CssProp.B.string})\\\\s*){1,2}`,\n    top: `${CssProp.B.length}|${CssProp.B.percentage}|auto`,\n    width: `${CssProp.B.length_pos}|${CssProp.B.percentage_pos}|auto`,\n    z_index: `auto|${CssProp.B.z_index}`,\n    // Simplified background\n    background: `(((${CssProp.C.bg_position}\\\\s*(\\\\/\\\\s*${CssProp.C.bg_size})?)|(${CssProp.A.repeat_style})|(${CssProp.A.attachment})|(${CssProp.A.bg_origin})|(${CssProp.C.bg_image})|(${CssProp.C.color}))\\\\s*)+`,\n    background_size: `${CssProp.C.bg_size}(,\\\\s*${CssProp.C.bg_size})*`,\n    border_bottom_left_radius: `(${CssProp.B.length}|${CssProp.B.percentage})(\\\\s*(${CssProp.B.length}|${CssProp.B.percentage}))?`,\n    border_bottom_width: CssProp.C.border_width,\n    border_left_style: CssProp.A.border_style,\n    border_right_style: CssProp.A.border_style,\n    border_top: `((${CssProp.C.border_width}|${CssProp.A.border_style}|${CssProp.C.color})\\\\s*){1,3}`,\n    bottom: `${CssProp.B.len_or_perc}|auto`,\n    list_style: `((${CssProp.AP.list_style_type}|${CssProp.AP.list_style_position}|${CssProp.C.image}|none})\\\\s*){1,3}`,\n    margin_top: CssProp.C.margin_width,\n    outline: `((${CssProp.C.color}|invert|${CssProp.A.border_style}|${CssProp.C.border_width})\\\\s*){1,3}`,\n    overflow_y: CssProp.AP.overflow_x,\n    pitch: `${CssProp.B.frequency}|x-low|low|medium|high|x-high`,\n    vertical_align: `baseline|sub|super|top|text-top|middle|bottom|text-bottom|${CssProp.B.len_or_perc}`,\n    word_spacing: `normal|${CssProp.B.length}`,\n    background_image: `${CssProp.C.bg_image}(,\\\\s*${CssProp.C.bg_image})*`,\n    border_bottom_right_radius: `(${CssProp.B.length}|${CssProp.B.percentage})(\\\\s*(${CssProp.B.length}|${CssProp.B.percentage}))?`,\n    border_left_width: CssProp.C.border_width,\n    border_right_width: CssProp.C.border_width,\n    left: `${CssProp.B.len_or_perc}|auto`,\n    margin_bottom: CssProp.C.margin_width,\n    pause_after: `${CssProp.B.time}|${CssProp.B.percentage}`,\n    speech_rate: `${CssProp.N.number}|x-slow|slow|medium|fast|x-fast|faster|slower`,\n    transition_duration: `${CssProp.B.time}(,\\\\s*${CssProp.B.time})*`,\n    border_bottom: `((${CssProp.C.border_width}|${CssProp.A.border_style}|${CssProp.C.color})\\\\s*){1,3}`,\n    border_right: `((${CssProp.C.border_width}|${CssProp.A.border_style}|${CssProp.C.color})\\\\s*){1,3}`,\n    margin: `((${CssProp.C.margin_width})\\\\s*){1,4}`,\n    padding_left: CssProp.C.padding_width,\n    border_left: `((${CssProp.C.border_width}|${CssProp.A.border_style}|${CssProp.C.color})\\\\s*){1,3}`,\n    quotes: `(${CssProp.B.string}\\\\s*${CssProp.B.string})+|none`,\n    border_top_right_radius: `(${CssProp.B.length}|${CssProp.B.percentage})(\\\\s*(${CssProp.B.length}|${CssProp.B.percentage}))?`,\n    min_width: `${CssProp.B.length_pos}|${CssProp.B.percentage_pos}|auto`\n};\nCssProp._CP1 = {\n    font: `(((((${CssProp.AP.font_style}|${CssProp.AP.font_variant}|${CssProp.AP.font_weight})\\\\s*){1,3})?\\\\s*(${CssProp._CP.font_size})\\\\s*(\\\\/\\\\s*(${CssProp._CP.line_height}))?\\\\s+(${CssProp._CP.font_family}))|caption|icon|menu|message-box|small-caption|status-bar)`\n};\nCssProp.CP = Object.assign(Object.assign({}, CssProp._CP), CssProp._CP1);\n// CSS Property value validation regular expressions for use with sanitize-html\nCssProp.BORDER_COLLAPSE = CssProp.reg(CssProp.AP.border_collapse);\nCssProp.BOX = CssProp.reg(CssProp.AP.box);\nCssProp.BOX_SIZING = CssProp.reg(CssProp.AP.box_sizing);\nCssProp.CAPTION_SIDE = CssProp.reg(CssProp.AP.caption_side);\nCssProp.CLEAR = CssProp.reg(CssProp.AP.clear);\nCssProp.DIRECTION = CssProp.reg(CssProp.AP.direction);\nCssProp.EMPTY_CELLS = CssProp.reg(CssProp.AP.empty_cells);\nCssProp.FLOAT = CssProp.reg(CssProp.AP.float);\nCssProp.FONT_STRETCH = CssProp.reg(CssProp.AP.font_stretch);\nCssProp.FONT_STYLE = CssProp.reg(CssProp.AP.font_style);\nCssProp.FONT_VARIANT = CssProp.reg(CssProp.AP.font_variant);\nCssProp.FONT_WEIGHT = CssProp.reg(CssProp.AP.font_weight);\nCssProp.LIST_STYLE_POSITION = CssProp.reg(CssProp.AP.list_style_position);\nCssProp.LIST_STYLE_TYPE = CssProp.reg(CssProp.AP.list_style_type);\nCssProp.OVERFLOW = CssProp.reg(CssProp.AP.overflow);\nCssProp.OVERFLOW_WRAP = CssProp.reg(CssProp.AP.overflow_wrap);\nCssProp.OVERFLOW_X = CssProp.reg(CssProp.AP.overflow_x);\nCssProp.PAGE_BREAK_AFTER = CssProp.reg(CssProp.AP.page_break_after);\nCssProp.PAGE_BREAK_BEFORE = CssProp.reg(CssProp.AP.page_break_before);\nCssProp.PAGE_BREAK_INSIDE = CssProp.reg(CssProp.AP.page_break_inside);\nCssProp.POSITION = CssProp.reg(CssProp.AP.position);\nCssProp.RESIZE = CssProp.reg(CssProp.AP.resize);\nCssProp.SPEAK = CssProp.reg(CssProp.AP.speak);\nCssProp.SPEAK_HEADER = CssProp.reg(CssProp.AP.speak_header);\nCssProp.SPEAK_NUMERAL = CssProp.reg(CssProp.AP.speak_numeral);\nCssProp.SPEAK_PUNCTUATION = CssProp.reg(CssProp.AP.speak_punctuation);\nCssProp.TABLE_LAYOUT = CssProp.reg(CssProp.AP.table_layout);\nCssProp.TEXT_ALIGN = CssProp.reg(CssProp.AP.text_align);\nCssProp.TEXT_DECORATION = CssProp.reg(CssProp.AP.text_decoration);\nCssProp.TEXT_TRANSFORM = CssProp.reg(CssProp.AP.text_transform);\nCssProp.TEXT_WRAP = CssProp.reg(CssProp.AP.text_wrap);\nCssProp.UNICODE_BIDI = CssProp.reg(CssProp.AP.unicode_bidi);\nCssProp.VISIBILITY = CssProp.reg(CssProp.AP.visibility);\nCssProp.WHITE_SPACE = CssProp.reg(CssProp.AP.white_space);\nCssProp.WORD_BREAK = CssProp.reg(CssProp.AP.word_break);\nCssProp.BACKGROUND_ATTACHMENT = CssProp.reg(CssProp.CP.background_attachment);\nCssProp.BACKGROUND_COLOR = CssProp.reg(CssProp.CP.background_color);\nCssProp.BACKGROUND_ORIGIN = CssProp.reg(CssProp.CP.background_origin);\nCssProp.BACKGROUND_REPEAT = CssProp.reg(CssProp.CP.background_repeat);\nCssProp.BORDER = CssProp.reg(CssProp.CP.border);\nCssProp.BORDER_RADIUS = CssProp.reg(CssProp.CP.border_radius);\nCssProp.BORDER_SPACING = CssProp.reg(CssProp.CP.border_spacing);\nCssProp.BORDER_TOP_COLOR = CssProp.reg(CssProp.CP.border_top_color);\nCssProp.BORDER_TOP_STYLE = CssProp.reg(CssProp.CP.border_top_style);\nCssProp.BORDER_WIDTH = CssProp.reg(CssProp.CP.border_width);\nCssProp.COLOR = CssProp.reg(CssProp.CP.color);\nCssProp.CURSOR = CssProp.reg(CssProp.CP.cursor);\nCssProp.DISPLAY = CssProp.reg(CssProp.CP.display);\nCssProp.DISPLAY_OUTSIDE = CssProp.reg(CssProp.CP.display_outside);\nCssProp.ELEVATION = CssProp.reg(CssProp.CP.elevation);\nCssProp.FONT_FAMILY = CssProp.reg(CssProp.CP.font_family);\nCssProp.HEIGHT = CssProp.reg(CssProp.CP.height);\nCssProp.LETTER_SPACING = CssProp.reg(CssProp.CP.letter_spacing);\nCssProp.LIST_STYLE_IMAGE = CssProp.reg(CssProp.CP.list_style_image);\nCssProp.MARGIN_RIGHT = CssProp.reg(CssProp.CP.margin_right);\nCssProp.MAX_HEIGHT = CssProp.reg(CssProp.CP.max_height);\nCssProp.MIN_HEIGHT = CssProp.reg(CssProp.CP.min_height);\nCssProp.OPACITY = CssProp.reg(CssProp.CP.opacity);\nCssProp.OUTLINE_COLOR = CssProp.reg(CssProp.CP.outline_color);\nCssProp.OUTLINE_WIDTH = CssProp.reg(CssProp.CP.outline_width);\nCssProp.PADDING = CssProp.reg(CssProp.CP.padding);\nCssProp.PADDING_TOP = CssProp.reg(CssProp.CP.padding_top);\nCssProp.PITCH_RANGE = CssProp.reg(CssProp.CP.pitch_range);\nCssProp.RIGHT = CssProp.reg(CssProp.CP.right);\nCssProp.STRESS = CssProp.reg(CssProp.CP.stress);\nCssProp.TEXT_INDENT = CssProp.reg(CssProp.CP.text_indent);\nCssProp.TEXT_SHADOW = CssProp.reg(CssProp.CP.text_shadow);\nCssProp.VOLUME = CssProp.reg(CssProp.CP.volume);\nCssProp.WORD_WRAP = CssProp.reg(CssProp.CP.word_wrap);\nCssProp.ZOOM = CssProp.reg(CssProp.CP.zoom);\nCssProp.BACKFACE_VISIBILITY = CssProp.reg(CssProp.CP.backface_visibility);\nCssProp.BACKGROUND_CLIP = CssProp.reg(CssProp.CP.background_clip);\nCssProp.BACKGROUND_POSITION = CssProp.reg(CssProp.CP.background_position);\nCssProp.BORDER_BOTTOM_COLOR = CssProp.reg(CssProp.CP.border_bottom_color);\nCssProp.BORDER_BOTTOM_STYLE = CssProp.reg(CssProp.CP.border_bottom_style);\nCssProp.BORDER_COLOR = CssProp.reg(CssProp.CP.border_color);\nCssProp.BORDER_LEFT_COLOR = CssProp.reg(CssProp.CP.border_left_color);\nCssProp.BORDER_RIGHT_COLOR = CssProp.reg(CssProp.CP.border_right_color);\nCssProp.BORDER_STYLE = CssProp.reg(CssProp.CP.border_style);\nCssProp.BORDER_TOP_LEFT_RADIUS = CssProp.reg(CssProp.CP.border_top_left_radius);\nCssProp.BORDER_TOP_WIDTH = CssProp.reg(CssProp.CP.border_top_width);\nCssProp.BOX_SHADOW = CssProp.reg(CssProp.CP.box_shadow);\nCssProp.CLIP = CssProp.reg(CssProp.CP.clip);\nCssProp.DISPLAY_INSIDE = CssProp.reg(CssProp.CP.display_inside);\nCssProp.FONT_SIZE = CssProp.reg(CssProp.CP.font_size);\nCssProp.LINE_HEIGHT = CssProp.reg(CssProp.CP.line_height);\nCssProp.MARGIN_LEFT = CssProp.reg(CssProp.CP.margin_left);\nCssProp.MAX_WIDTH = CssProp.reg(CssProp.CP.max_width);\nCssProp.OUTLINE_STYLE = CssProp.reg(CssProp.CP.outline_style);\nCssProp.PADDING_BOTTOM = CssProp.reg(CssProp.CP.padding_bottom);\nCssProp.PADDING_RIGHT = CssProp.reg(CssProp.CP.padding_right);\nCssProp.PERSPECTIVE = CssProp.reg(CssProp.CP.perspective);\nCssProp.RICHNESS = CssProp.reg(CssProp.CP.richness);\nCssProp.TEXT_OVERFLOW = CssProp.reg(CssProp.CP.text_overflow);\nCssProp.TOP = CssProp.reg(CssProp.CP.top);\nCssProp.WIDTH = CssProp.reg(CssProp.CP.width);\nCssProp.Z_INDEX = CssProp.reg(CssProp.CP.z_index);\nCssProp.BACKGROUND = CssProp.reg(CssProp.CP.background);\nCssProp.BACKGROUND_SIZE = CssProp.reg(CssProp.CP.background_size);\nCssProp.BORDER_BOTTOM_LEFT_RADIUS = CssProp.reg(CssProp.CP.border_bottom_left_radius);\nCssProp.BORDER_BOTTOM_WIDTH = CssProp.reg(CssProp.CP.border_bottom_width);\nCssProp.BORDER_LEFT_STYLE = CssProp.reg(CssProp.CP.border_left_style);\nCssProp.BORDER_RIGHT_STYLE = CssProp.reg(CssProp.CP.border_right_style);\nCssProp.BORDER_TOP = CssProp.reg(CssProp.CP.border_top);\nCssProp.BOTTOM = CssProp.reg(CssProp.CP.bottom);\nCssProp.LIST_STYLE = CssProp.reg(CssProp.CP.list_style);\nCssProp.MARGIN_TOP = CssProp.reg(CssProp.CP.margin_top);\nCssProp.OUTLINE = CssProp.reg(CssProp.CP.outline);\nCssProp.OVERFLOW_Y = CssProp.reg(CssProp.CP.overflow_y);\nCssProp.PITCH = CssProp.reg(CssProp.CP.pitch);\nCssProp.VERTICAL_ALIGN = CssProp.reg(CssProp.CP.vertical_align);\nCssProp.WORD_SPACING = CssProp.reg(CssProp.CP.word_spacing);\nCssProp.BACKGROUND_IMAGE = CssProp.reg(CssProp.CP.background_image);\nCssProp.BORDER_BOTTOM_RIGHT_RADIUS = CssProp.reg(CssProp.CP.border_bottom_right_radius);\nCssProp.BORDER_LEFT_WIDTH = CssProp.reg(CssProp.CP.border_left_width);\nCssProp.BORDER_RIGHT_WIDTH = CssProp.reg(CssProp.CP.border_right_width);\nCssProp.LEFT = CssProp.reg(CssProp.CP.left);\nCssProp.MARGIN_BOTTOM = CssProp.reg(CssProp.CP.margin_bottom);\nCssProp.PAUSE_AFTER = CssProp.reg(CssProp.CP.pause_after);\nCssProp.SPEECH_RATE = CssProp.reg(CssProp.CP.speech_rate);\nCssProp.TRANSITION_DURATION = CssProp.reg(CssProp.CP.transition_duration);\nCssProp.BORDER_BOTTOM = CssProp.reg(CssProp.CP.border_bottom);\nCssProp.BORDER_RIGHT = CssProp.reg(CssProp.CP.border_right);\nCssProp.MARGIN = CssProp.reg(CssProp.CP.margin);\nCssProp.PADDING_LEFT = CssProp.reg(CssProp.CP.padding_left);\nCssProp.BORDER_LEFT = CssProp.reg(CssProp.CP.border_left);\nCssProp.FONT = CssProp.reg(CssProp.CP.font);\nCssProp.QUOTES = CssProp.reg(CssProp.CP.quotes);\nCssProp.BORDER_TOP_RIGHT_RADIUS = CssProp.reg(CssProp.CP.border_top_right_radius);\nCssProp.MIN_WIDTH = CssProp.reg(CssProp.CP.min_width);\n/**\n * A class to sanitize HTML strings.\n */\nclass Sanitizer {\n    constructor() {\n        this._options = {\n            // HTML tags that are allowed to be used. Tags were extracted from Google Caja\n            allowedTags: [\n                'a',\n                'abbr',\n                'acronym',\n                'address',\n                'area',\n                'article',\n                'aside',\n                'audio',\n                'b',\n                'bdi',\n                'bdo',\n                'big',\n                'blockquote',\n                'br',\n                'button',\n                'canvas',\n                'caption',\n                'center',\n                'cite',\n                'code',\n                'col',\n                'colgroup',\n                'colspan',\n                'command',\n                'data',\n                'datalist',\n                'dd',\n                'del',\n                'details',\n                'dfn',\n                'dir',\n                'div',\n                'dl',\n                'dt',\n                'em',\n                'fieldset',\n                'figcaption',\n                'figure',\n                'font',\n                'footer',\n                'form',\n                'h1',\n                'h2',\n                'h3',\n                'h4',\n                'h5',\n                'h6',\n                'header',\n                'hgroup',\n                'hr',\n                'i',\n                // 'iframe' is allowed by Google Caja, but disallowed by default by sanitize-html\n                // , 'iframe'\n                'img',\n                'input',\n                'ins',\n                'kbd',\n                'label',\n                'legend',\n                'li',\n                'map',\n                'mark',\n                'menu',\n                'meter',\n                'nav',\n                'nobr',\n                'ol',\n                'optgroup',\n                'option',\n                'output',\n                'p',\n                'pre',\n                'progress',\n                'q',\n                'rowspan',\n                's',\n                'samp',\n                'section',\n                'select',\n                'small',\n                'source',\n                'span',\n                'strike',\n                'strong',\n                'sub',\n                'summary',\n                'sup',\n                'table',\n                'tbody',\n                'td',\n                'textarea',\n                'tfoot',\n                'th',\n                'thead',\n                'time',\n                'tr',\n                'track',\n                'tt',\n                'u',\n                'ul',\n                'var',\n                'video',\n                'wbr'\n            ],\n            // Attributes that HTML tags are allowed to have, extracted from Google Caja.\n            // See https://github.com/jupyterlab/jupyterlab/issues/1812#issuecomment-285848435\n            allowedAttributes: {\n                '*': [\n                    'class',\n                    'dir',\n                    'draggable',\n                    'hidden',\n                    'id',\n                    'inert',\n                    'itemprop',\n                    'itemref',\n                    'itemscope',\n                    'lang',\n                    'spellcheck',\n                    'style',\n                    'title',\n                    'translate'\n                ],\n                // 'rel' and 'target' were *not* allowed by Google Caja\n                a: [\n                    'accesskey',\n                    'coords',\n                    'href',\n                    'hreflang',\n                    'name',\n                    'rel',\n                    'shape',\n                    'tabindex',\n                    'target',\n                    'type'\n                ],\n                area: [\n                    'accesskey',\n                    'alt',\n                    'coords',\n                    'href',\n                    'nohref',\n                    'shape',\n                    'tabindex'\n                ],\n                // 'autoplay' was *not* allowed by Google Caja\n                audio: [\n                    'autoplay',\n                    'controls',\n                    'loop',\n                    'mediagroup',\n                    'muted',\n                    'preload',\n                    'src'\n                ],\n                bdo: ['dir'],\n                blockquote: ['cite'],\n                br: ['clear'],\n                button: [\n                    'accesskey',\n                    'data-commandlinker-args',\n                    'data-commandlinker-command',\n                    'disabled',\n                    'name',\n                    'tabindex',\n                    'type',\n                    'value'\n                ],\n                canvas: ['height', 'width'],\n                caption: ['align'],\n                col: ['align', 'char', 'charoff', 'span', 'valign', 'width'],\n                colgroup: ['align', 'char', 'charoff', 'span', 'valign', 'width'],\n                command: [\n                    'checked',\n                    'command',\n                    'disabled',\n                    'icon',\n                    'label',\n                    'radiogroup',\n                    'type'\n                ],\n                data: ['value'],\n                del: ['cite', 'datetime'],\n                details: ['open'],\n                dir: ['compact'],\n                div: ['align'],\n                dl: ['compact'],\n                fieldset: ['disabled'],\n                font: ['color', 'face', 'size'],\n                form: [\n                    'accept',\n                    'autocomplete',\n                    'enctype',\n                    'method',\n                    'name',\n                    'novalidate'\n                ],\n                h1: ['align'],\n                h2: ['align'],\n                h3: ['align'],\n                h4: ['align'],\n                h5: ['align'],\n                h6: ['align'],\n                hr: ['align', 'noshade', 'size', 'width'],\n                iframe: [\n                    'align',\n                    'frameborder',\n                    'height',\n                    'marginheight',\n                    'marginwidth',\n                    'width'\n                ],\n                img: [\n                    'align',\n                    'alt',\n                    'border',\n                    'height',\n                    'hspace',\n                    'ismap',\n                    'name',\n                    'src',\n                    'usemap',\n                    'vspace',\n                    'width'\n                ],\n                input: [\n                    'accept',\n                    'accesskey',\n                    'align',\n                    'alt',\n                    'autocomplete',\n                    'checked',\n                    'disabled',\n                    'inputmode',\n                    'ismap',\n                    'list',\n                    'max',\n                    'maxlength',\n                    'min',\n                    'multiple',\n                    'name',\n                    'placeholder',\n                    'readonly',\n                    'required',\n                    'size',\n                    'src',\n                    'step',\n                    'tabindex',\n                    'type',\n                    'usemap',\n                    'value'\n                ],\n                ins: ['cite', 'datetime'],\n                label: ['accesskey', 'for'],\n                legend: ['accesskey', 'align'],\n                li: ['type', 'value'],\n                map: ['name'],\n                menu: ['compact', 'label', 'type'],\n                meter: ['high', 'low', 'max', 'min', 'value'],\n                ol: ['compact', 'reversed', 'start', 'type'],\n                optgroup: ['disabled', 'label'],\n                option: ['disabled', 'label', 'selected', 'value'],\n                output: ['for', 'name'],\n                p: ['align'],\n                pre: ['width'],\n                progress: ['max', 'min', 'value'],\n                q: ['cite'],\n                select: [\n                    'autocomplete',\n                    'disabled',\n                    'multiple',\n                    'name',\n                    'required',\n                    'size',\n                    'tabindex'\n                ],\n                source: ['type'],\n                table: [\n                    'align',\n                    'bgcolor',\n                    'border',\n                    'cellpadding',\n                    'cellspacing',\n                    'frame',\n                    'rules',\n                    'summary',\n                    'width'\n                ],\n                tbody: ['align', 'char', 'charoff', 'valign'],\n                td: [\n                    'abbr',\n                    'align',\n                    'axis',\n                    'bgcolor',\n                    'char',\n                    'charoff',\n                    'colspan',\n                    'headers',\n                    'height',\n                    'nowrap',\n                    'rowspan',\n                    'scope',\n                    'valign',\n                    'width'\n                ],\n                textarea: [\n                    'accesskey',\n                    'autocomplete',\n                    'cols',\n                    'disabled',\n                    'inputmode',\n                    'name',\n                    'placeholder',\n                    'readonly',\n                    'required',\n                    'rows',\n                    'tabindex',\n                    'wrap'\n                ],\n                tfoot: ['align', 'char', 'charoff', 'valign'],\n                th: [\n                    'abbr',\n                    'align',\n                    'axis',\n                    'bgcolor',\n                    'char',\n                    'charoff',\n                    'colspan',\n                    'headers',\n                    'height',\n                    'nowrap',\n                    'rowspan',\n                    'scope',\n                    'valign',\n                    'width'\n                ],\n                thead: ['align', 'char', 'charoff', 'valign'],\n                tr: ['align', 'bgcolor', 'char', 'charoff', 'valign'],\n                track: ['default', 'kind', 'label', 'srclang'],\n                ul: ['compact', 'type'],\n                video: [\n                    'autoplay',\n                    'controls',\n                    'height',\n                    'loop',\n                    'mediagroup',\n                    'muted',\n                    'poster',\n                    'preload',\n                    'src',\n                    'width'\n                ]\n            },\n            // Inline CSS styles that HTML tags may have (and their allowed values)\n            allowedStyles: {\n                // To simplify the data, all styles are allowed on all tags that allow the style attribute\n                '*': {\n                    'backface-visibility': [CssProp.BACKFACE_VISIBILITY],\n                    background: [CssProp.BACKGROUND],\n                    'background-attachment': [CssProp.BACKGROUND_ATTACHMENT],\n                    'background-clip': [CssProp.BACKGROUND_CLIP],\n                    'background-color': [CssProp.BACKGROUND_COLOR],\n                    'background-image': [CssProp.BACKGROUND_IMAGE],\n                    'background-origin': [CssProp.BACKGROUND_ORIGIN],\n                    'background-position': [CssProp.BACKGROUND_POSITION],\n                    'background-repeat': [CssProp.BACKGROUND_REPEAT],\n                    'background-size': [CssProp.BACKGROUND_SIZE],\n                    border: [CssProp.BORDER],\n                    'border-bottom': [CssProp.BORDER_BOTTOM],\n                    'border-bottom-color': [CssProp.BORDER_BOTTOM_COLOR],\n                    'border-bottom-left-radius': [CssProp.BORDER_BOTTOM_LEFT_RADIUS],\n                    'border-bottom-right-radius': [CssProp.BORDER_BOTTOM_RIGHT_RADIUS],\n                    'border-bottom-style': [CssProp.BORDER_BOTTOM_STYLE],\n                    'border-bottom-width': [CssProp.BORDER_BOTTOM_WIDTH],\n                    'border-collapse': [CssProp.BORDER_COLLAPSE],\n                    'border-color': [CssProp.BORDER_COLOR],\n                    'border-left': [CssProp.BORDER_LEFT],\n                    'border-left-color': [CssProp.BORDER_LEFT_COLOR],\n                    'border-left-style': [CssProp.BORDER_LEFT_STYLE],\n                    'border-left-width': [CssProp.BORDER_LEFT_WIDTH],\n                    'border-radius': [CssProp.BORDER_RADIUS],\n                    'border-right': [CssProp.BORDER_RIGHT],\n                    'border-right-color': [CssProp.BORDER_RIGHT_COLOR],\n                    'border-right-style': [CssProp.BORDER_RIGHT_STYLE],\n                    'border-right-width': [CssProp.BORDER_RIGHT_WIDTH],\n                    'border-spacing': [CssProp.BORDER_SPACING],\n                    'border-style': [CssProp.BORDER_STYLE],\n                    'border-top': [CssProp.BORDER_TOP],\n                    'border-top-color': [CssProp.BORDER_TOP_COLOR],\n                    'border-top-left-radius': [CssProp.BORDER_TOP_LEFT_RADIUS],\n                    'border-top-right-radius': [CssProp.BORDER_TOP_RIGHT_RADIUS],\n                    'border-top-style': [CssProp.BORDER_TOP_STYLE],\n                    'border-top-width': [CssProp.BORDER_TOP_WIDTH],\n                    'border-width': [CssProp.BORDER_WIDTH],\n                    bottom: [CssProp.BOTTOM],\n                    box: [CssProp.BOX],\n                    'box-shadow': [CssProp.BOX_SHADOW],\n                    'box-sizing': [CssProp.BOX_SIZING],\n                    'caption-side': [CssProp.CAPTION_SIDE],\n                    clear: [CssProp.CLEAR],\n                    clip: [CssProp.CLIP],\n                    color: [CssProp.COLOR],\n                    cursor: [CssProp.CURSOR],\n                    direction: [CssProp.DIRECTION],\n                    display: [CssProp.DISPLAY],\n                    'display-inside': [CssProp.DISPLAY_INSIDE],\n                    'display-outside': [CssProp.DISPLAY_OUTSIDE],\n                    elevation: [CssProp.ELEVATION],\n                    'empty-cells': [CssProp.EMPTY_CELLS],\n                    float: [CssProp.FLOAT],\n                    font: [CssProp.FONT],\n                    'font-family': [CssProp.FONT_FAMILY],\n                    'font-size': [CssProp.FONT_SIZE],\n                    'font-stretch': [CssProp.FONT_STRETCH],\n                    'font-style': [CssProp.FONT_STYLE],\n                    'font-variant': [CssProp.FONT_VARIANT],\n                    'font-weight': [CssProp.FONT_WEIGHT],\n                    height: [CssProp.HEIGHT],\n                    left: [CssProp.LEFT],\n                    'letter-spacing': [CssProp.LETTER_SPACING],\n                    'line-height': [CssProp.LINE_HEIGHT],\n                    'list-style': [CssProp.LIST_STYLE],\n                    'list-style-image': [CssProp.LIST_STYLE_IMAGE],\n                    'list-style-position': [CssProp.LIST_STYLE_POSITION],\n                    'list-style-type': [CssProp.LIST_STYLE_TYPE],\n                    margin: [CssProp.MARGIN],\n                    'margin-bottom': [CssProp.MARGIN_BOTTOM],\n                    'margin-left': [CssProp.MARGIN_LEFT],\n                    'margin-right': [CssProp.MARGIN_RIGHT],\n                    'margin-top': [CssProp.MARGIN_TOP],\n                    'max-height': [CssProp.MAX_HEIGHT],\n                    'max-width': [CssProp.MAX_WIDTH],\n                    'min-height': [CssProp.MIN_HEIGHT],\n                    'min-width': [CssProp.MIN_WIDTH],\n                    opacity: [CssProp.OPACITY],\n                    outline: [CssProp.OUTLINE],\n                    'outline-color': [CssProp.OUTLINE_COLOR],\n                    'outline-style': [CssProp.OUTLINE_STYLE],\n                    'outline-width': [CssProp.OUTLINE_WIDTH],\n                    overflow: [CssProp.OVERFLOW],\n                    'overflow-wrap': [CssProp.OVERFLOW_WRAP],\n                    'overflow-x': [CssProp.OVERFLOW_X],\n                    'overflow-y': [CssProp.OVERFLOW_Y],\n                    padding: [CssProp.PADDING],\n                    'padding-bottom': [CssProp.PADDING_BOTTOM],\n                    'padding-left': [CssProp.PADDING_LEFT],\n                    'padding-right': [CssProp.PADDING_RIGHT],\n                    'padding-top': [CssProp.PADDING_TOP],\n                    'page-break-after': [CssProp.PAGE_BREAK_AFTER],\n                    'page-break-before': [CssProp.PAGE_BREAK_BEFORE],\n                    'page-break-inside': [CssProp.PAGE_BREAK_INSIDE],\n                    'pause-after': [CssProp.PAUSE_AFTER],\n                    perspective: [CssProp.PERSPECTIVE],\n                    pitch: [CssProp.PITCH],\n                    'pitch-range': [CssProp.PITCH_RANGE],\n                    position: [CssProp.POSITION],\n                    quotes: [CssProp.QUOTES],\n                    resize: [CssProp.RESIZE],\n                    richness: [CssProp.RICHNESS],\n                    right: [CssProp.RIGHT],\n                    speak: [CssProp.SPEAK],\n                    'speak-header': [CssProp.SPEAK_HEADER],\n                    'speak-numeral': [CssProp.SPEAK_NUMERAL],\n                    'speak-punctuation': [CssProp.SPEAK_PUNCTUATION],\n                    'speech-rate': [CssProp.SPEECH_RATE],\n                    stress: [CssProp.STRESS],\n                    'table-layout': [CssProp.TABLE_LAYOUT],\n                    'text-align': [CssProp.TEXT_ALIGN],\n                    'text-decoration': [CssProp.TEXT_DECORATION],\n                    'text-indent': [CssProp.TEXT_INDENT],\n                    'text-overflow': [CssProp.TEXT_OVERFLOW],\n                    'text-shadow': [CssProp.TEXT_SHADOW],\n                    'text-transform': [CssProp.TEXT_TRANSFORM],\n                    'text-wrap': [CssProp.TEXT_WRAP],\n                    top: [CssProp.TOP],\n                    'unicode-bidi': [CssProp.UNICODE_BIDI],\n                    'vertical-align': [CssProp.VERTICAL_ALIGN],\n                    visibility: [CssProp.VISIBILITY],\n                    volume: [CssProp.VOLUME],\n                    'white-space': [CssProp.WHITE_SPACE],\n                    width: [CssProp.WIDTH],\n                    'word-break': [CssProp.WORD_BREAK],\n                    'word-spacing': [CssProp.WORD_SPACING],\n                    'word-wrap': [CssProp.WORD_WRAP],\n                    'z-index': [CssProp.Z_INDEX],\n                    zoom: [CssProp.ZOOM]\n                }\n            },\n            transformTags: {\n                // Set the \"rel\" attribute for <a> tags to \"nofollow\".\n                a: sanitize_html__WEBPACK_IMPORTED_MODULE_0___default().simpleTransform('a', { rel: 'nofollow' }),\n                // Set the \"disabled\" attribute for <input> tags.\n                input: sanitize_html__WEBPACK_IMPORTED_MODULE_0___default().simpleTransform('input', { disabled: 'disabled' })\n            },\n            allowedSchemesByTag: {\n                // Allow 'attachment:' img src (used for markdown cell attachments).\n                img: sanitize_html__WEBPACK_IMPORTED_MODULE_0___default().defaults.allowedSchemes.concat(['attachment'])\n            },\n            // Override of the default option, so we can skip 'src' attribute validation.\n            // 'src' Attributes are validated to be URIs, which does not allow for embedded (image) data.\n            // Since embedded data is no longer deemed to be a threat, validation can be skipped.\n            // See https://github.com/jupyterlab/jupyterlab/issues/5183\n            allowedSchemesAppliedToAttributes: ['href', 'cite']\n        };\n    }\n    /**\n     * Sanitize an HTML string.\n     *\n     * @param dirty - The dirty text.\n     *\n     * @param options - The optional sanitization options.\n     *\n     * @returns The sanitized string.\n     */\n    sanitize(dirty, options) {\n        return sanitize_html__WEBPACK_IMPORTED_MODULE_0___default()(dirty, Object.assign(Object.assign({}, this._options), (options || {})));\n    }\n}\n/**\n * The default instance of an `ISanitizer` meant for use by user code.\n */\nconst defaultSanitizer = new Sanitizer();\n//# sourceMappingURL=sanitizer.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/sanitizer.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/sessioncontext.js":
/*!******************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/sessioncontext.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SessionContext\": () => (/* binding */ SessionContext),\n/* harmony export */   \"sessionContextDialogs\": () => (/* binding */ sessionContextDialogs)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/coreutils */ \"webpack/sharing/consume/default/@jupyterlab/coreutils/@jupyterlab/coreutils\");\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/translation */ \"webpack/sharing/consume/default/@jupyterlab/translation/@jupyterlab/translation\");\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lumino_algorithm__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @lumino/algorithm */ \"webpack/sharing/consume/default/@lumino/algorithm/@lumino/algorithm\");\n/* harmony import */ var _lumino_algorithm__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_lumino_algorithm__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @lumino/signaling */ \"webpack/sharing/consume/default/@lumino/signaling/@lumino/signaling\");\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_lumino_signaling__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _dialog__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./dialog */ \"../node_modules/@jupyterlab/apputils/lib/dialog.js\");\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n\n\n\n\n\n/**\n * The default implementation for a session context object.\n */\nclass SessionContext {\n    /**\n     * Construct a new session context.\n     */\n    constructor(options) {\n        var _a, _b, _c, _d;\n        this._path = '';\n        this._name = '';\n        this._type = '';\n        this._prevKernelName = '';\n        this._isDisposed = false;\n        this._disposed = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_4__.Signal(this);\n        this._session = null;\n        this._ready = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_3__.PromiseDelegate();\n        this._initializing = false;\n        this._initStarted = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_3__.PromiseDelegate();\n        this._initPromise = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_3__.PromiseDelegate();\n        this._isReady = false;\n        this._isTerminating = false;\n        this._isRestarting = false;\n        this._kernelChanged = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_4__.Signal(this);\n        this._sessionChanged = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_4__.Signal(this);\n        this._statusChanged = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_4__.Signal(this);\n        this._connectionStatusChanged = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_4__.Signal(this);\n        this._iopubMessage = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_4__.Signal(this);\n        this._unhandledMessage = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_4__.Signal(this);\n        this._propertyChanged = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_4__.Signal(this);\n        this._dialog = null;\n        this._busyDisposable = null;\n        this._pendingKernelName = '';\n        this._pendingSessionRequest = '';\n        this.sessionManager = options.sessionManager;\n        this.specsManager = options.specsManager;\n        this.translator = options.translator || _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__.nullTranslator;\n        this._trans = this.translator.load('jupyterlab');\n        this._path = (_a = options.path) !== null && _a !== void 0 ? _a : _lumino_coreutils__WEBPACK_IMPORTED_MODULE_3__.UUID.uuid4();\n        this._type = (_b = options.type) !== null && _b !== void 0 ? _b : '';\n        this._name = (_c = options.name) !== null && _c !== void 0 ? _c : '';\n        this._setBusy = options.setBusy;\n        this._kernelPreference = (_d = options.kernelPreference) !== null && _d !== void 0 ? _d : {};\n    }\n    /**\n     * The current session connection.\n     */\n    get session() {\n        var _a;\n        return (_a = this._session) !== null && _a !== void 0 ? _a : null;\n    }\n    /**\n     * The session path.\n     *\n     * #### Notes\n     * Typically `.session.path` should be used. This attribute is useful if\n     * there is no current session.\n     */\n    get path() {\n        return this._path;\n    }\n    /**\n     * The session type.\n     *\n     * #### Notes\n     * Typically `.session.type` should be used. This attribute is useful if\n     * there is no current session.\n     */\n    get type() {\n        return this._type;\n    }\n    /**\n     * The session name.\n     *\n     * #### Notes\n     * Typically `.session.name` should be used. This attribute is useful if\n     * there is no current session.\n     */\n    get name() {\n        return this._name;\n    }\n    /**\n     * A signal emitted when the kernel connection changes, proxied from the session connection.\n     */\n    get kernelChanged() {\n        return this._kernelChanged;\n    }\n    /**\n     * A signal emitted when the session connection changes.\n     */\n    get sessionChanged() {\n        return this._sessionChanged;\n    }\n    /**\n     * A signal emitted when the kernel status changes, proxied from the kernel.\n     */\n    get statusChanged() {\n        return this._statusChanged;\n    }\n    /**\n     * A signal emitted when the kernel status changes, proxied from the kernel.\n     */\n    get connectionStatusChanged() {\n        return this._connectionStatusChanged;\n    }\n    /**\n     * A signal emitted for iopub kernel messages, proxied from the kernel.\n     */\n    get iopubMessage() {\n        return this._iopubMessage;\n    }\n    /**\n     * A signal emitted for an unhandled kernel message, proxied from the kernel.\n     */\n    get unhandledMessage() {\n        return this._unhandledMessage;\n    }\n    /**\n     * A signal emitted when a session property changes, proxied from the current session.\n     */\n    get propertyChanged() {\n        return this._propertyChanged;\n    }\n    /**\n     * The kernel preference of this client session.\n     *\n     * This is used when selecting a new kernel, and should reflect the sort of\n     * kernel the activity prefers.\n     */\n    get kernelPreference() {\n        return this._kernelPreference;\n    }\n    set kernelPreference(value) {\n        this._kernelPreference = value;\n    }\n    /**\n     * Whether the context is ready.\n     */\n    get isReady() {\n        return this._isReady;\n    }\n    /**\n     * A promise that is fulfilled when the context is ready.\n     */\n    get ready() {\n        return this._ready.promise;\n    }\n    /**\n     * Whether the context is terminating.\n     */\n    get isTerminating() {\n        return this._isTerminating;\n    }\n    /**\n     * Whether the context is restarting.\n     */\n    get isRestarting() {\n        return this._isRestarting;\n    }\n    /**\n     * Whether the kernel is \"No Kernel\" or not.\n     *\n     * #### Notes\n     * As the displayed name is translated, this can be used directly.\n     */\n    get hasNoKernel() {\n        return this.kernelDisplayName === this.noKernelName;\n    }\n    /**\n     * The display name of the current kernel, or a sensible alternative.\n     *\n     * #### Notes\n     * This is a convenience function to have a consistent sensible name for the\n     * kernel.\n     */\n    get kernelDisplayName() {\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n        const kernel = (_a = this.session) === null || _a === void 0 ? void 0 : _a.kernel;\n        if (this._pendingKernelName === this.noKernelName) {\n            return this.noKernelName;\n        }\n        if (!kernel &&\n            !this.isReady &&\n            this.kernelPreference.canStart !== false &&\n            this.kernelPreference.shouldStart !== false) {\n            let name = this._pendingKernelName ||\n                SessionContext.getDefaultKernel({\n                    specs: this.specsManager.specs,\n                    sessions: this.sessionManager.running(),\n                    preference: this.kernelPreference\n                }) ||\n                '';\n            if (name) {\n                name = (_d = (_c = (_b = this.specsManager.specs) === null || _b === void 0 ? void 0 : _b.kernelspecs[name]) === null || _c === void 0 ? void 0 : _c.display_name) !== null && _d !== void 0 ? _d : name;\n                return name;\n            }\n            return this.noKernelName;\n        }\n        if (this._pendingKernelName) {\n            return ((_g = (_f = (_e = this.specsManager.specs) === null || _e === void 0 ? void 0 : _e.kernelspecs[this._pendingKernelName]) === null || _f === void 0 ? void 0 : _f.display_name) !== null && _g !== void 0 ? _g : this._pendingKernelName);\n        }\n        if (!kernel) {\n            return this.noKernelName;\n        }\n        return ((_k = (_j = (_h = this.specsManager.specs) === null || _h === void 0 ? void 0 : _h.kernelspecs[kernel.name]) === null || _j === void 0 ? void 0 : _j.display_name) !== null && _k !== void 0 ? _k : kernel.name);\n    }\n    /**\n     * A sensible status to display\n     *\n     * #### Notes\n     * This combines the status and connection status into a single status for\n     * the user.\n     */\n    get kernelDisplayStatus() {\n        var _a, _b;\n        const kernel = (_a = this.session) === null || _a === void 0 ? void 0 : _a.kernel;\n        if (this._isTerminating) {\n            return 'terminating';\n        }\n        if (this._isRestarting) {\n            return 'restarting';\n        }\n        if (this._pendingKernelName === this.noKernelName) {\n            return 'idle';\n        }\n        if (!kernel && this._pendingKernelName) {\n            return 'initializing';\n        }\n        if (!kernel &&\n            !this.isReady &&\n            this.kernelPreference.canStart !== false &&\n            this.kernelPreference.shouldStart !== false) {\n            return 'initializing';\n        }\n        return ((_b = ((kernel === null || kernel === void 0 ? void 0 : kernel.connectionStatus) === 'connected'\n            ? kernel === null || kernel === void 0 ? void 0 : kernel.status : kernel === null || kernel === void 0 ? void 0 : kernel.connectionStatus)) !== null && _b !== void 0 ? _b : 'unknown');\n    }\n    /**\n     * The name of the previously started kernel.\n     */\n    get prevKernelName() {\n        return this._prevKernelName;\n    }\n    /**\n     * Test whether the context is disposed.\n     */\n    get isDisposed() {\n        return this._isDisposed;\n    }\n    /**\n     * A signal emitted when the poll is disposed.\n     */\n    get disposed() {\n        return this._disposed;\n    }\n    /**\n     * Get the constant displayed name for \"No Kernel\"\n     */\n    get noKernelName() {\n        return this._trans.__('No Kernel');\n    }\n    /**\n     * Dispose of the resources held by the context.\n     */\n    dispose() {\n        if (this._isDisposed) {\n            return;\n        }\n        this._isDisposed = true;\n        this._disposed.emit();\n        if (this._session) {\n            if (this.kernelPreference.shutdownOnDispose) {\n                // Fire and forget the session shutdown request\n                this.sessionManager.shutdown(this._session.id).catch(reason => {\n                    console.error(`Kernel not shut down ${reason}`);\n                });\n            }\n            // Dispose the session connection\n            this._session.dispose();\n            this._session = null;\n        }\n        if (this._dialog) {\n            this._dialog.dispose();\n        }\n        if (this._busyDisposable) {\n            this._busyDisposable.dispose();\n            this._busyDisposable = null;\n        }\n        _lumino_signaling__WEBPACK_IMPORTED_MODULE_4__.Signal.clearData(this);\n    }\n    /**\n     * Restart the current Kernel.\n     *\n     * @returns A promise that resolves when the kernel is restarted.\n     */\n    async restartKernel() {\n        var _a, _b, _c, _d, _e, _f;\n        const kernel = ((_a = this.session) === null || _a === void 0 ? void 0 : _a.kernel) || null;\n        this._isRestarting = true;\n        this._isReady = false;\n        this._statusChanged.emit('restarting');\n        await ((_c = (_b = this.session) === null || _b === void 0 ? void 0 : _b.kernel) === null || _c === void 0 ? void 0 : _c.restart());\n        this._isRestarting = false;\n        this._isReady = true;\n        this._statusChanged.emit(((_e = (_d = this.session) === null || _d === void 0 ? void 0 : _d.kernel) === null || _e === void 0 ? void 0 : _e.status) || 'unknown');\n        this._kernelChanged.emit({\n            name: 'kernel',\n            oldValue: kernel,\n            newValue: ((_f = this.session) === null || _f === void 0 ? void 0 : _f.kernel) || null\n        });\n    }\n    /**\n     * Change the current kernel associated with the session.\n     */\n    async changeKernel(options = {}) {\n        if (this.isDisposed) {\n            throw new Error('Disposed');\n        }\n        // Wait for the initialization method to try\n        // and start its kernel first to ensure consistent\n        // ordering.\n        await this._initStarted.promise;\n        return this._changeKernel(options);\n    }\n    /**\n     * Kill the kernel and shutdown the session.\n     *\n     * @returns A promise that resolves when the session is shut down.\n     */\n    async shutdown() {\n        if (this.isDisposed || !this._initializing) {\n            return;\n        }\n        await this._initStarted.promise;\n        this._pendingSessionRequest = '';\n        this._pendingKernelName = this.noKernelName;\n        return this._shutdownSession();\n    }\n    /**\n     * Initialize the session context\n     *\n     * @returns A promise that resolves with whether to ask the user to select a kernel.\n     *\n     * #### Notes\n     * If a server session exists on the current path, we will connect to it.\n     * If preferences include disabling `canStart` or `shouldStart`, no\n     * server session will be started.\n     * If a kernel id is given, we attempt to start a session with that id.\n     * If a default kernel is available, we connect to it.\n     * Otherwise we ask the user to select a kernel.\n     */\n    async initialize() {\n        if (this._initializing) {\n            return this._initPromise.promise;\n        }\n        this._initializing = true;\n        const needsSelection = await this._initialize();\n        if (!needsSelection) {\n            this._isReady = true;\n            this._ready.resolve(undefined);\n        }\n        if (!this._pendingSessionRequest) {\n            this._initStarted.resolve(void 0);\n        }\n        this._initPromise.resolve(needsSelection);\n        return needsSelection;\n    }\n    /**\n     * Inner initialize function that doesn't handle promises.\n     * This makes it easier to consolidate promise handling logic.\n     */\n    async _initialize() {\n        const manager = this.sessionManager;\n        await manager.ready;\n        await manager.refreshRunning();\n        const model = (0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_2__.find)(manager.running(), item => {\n            return item.path === this._path;\n        });\n        if (model) {\n            try {\n                const session = manager.connectTo({ model });\n                this._handleNewSession(session);\n            }\n            catch (err) {\n                void this._handleSessionError(err);\n                return Promise.reject(err);\n            }\n        }\n        return await this._startIfNecessary();\n    }\n    /**\n     * Shut down the current session.\n     */\n    async _shutdownSession() {\n        const session = this._session;\n        this._isTerminating = true;\n        this._isReady = false;\n        this._statusChanged.emit('terminating');\n        await (session === null || session === void 0 ? void 0 : session.shutdown());\n        this._isTerminating = false;\n        session === null || session === void 0 ? void 0 : session.dispose();\n        this._session = null;\n        const kernel = (session === null || session === void 0 ? void 0 : session.kernel) || null;\n        this._statusChanged.emit('unknown');\n        this._kernelChanged.emit({\n            name: 'kernel',\n            oldValue: kernel,\n            newValue: null\n        });\n        this._sessionChanged.emit({\n            name: 'session',\n            oldValue: session,\n            newValue: null\n        });\n    }\n    /**\n     * Start the session if necessary.\n     *\n     * @returns Whether to ask the user to pick a kernel.\n     */\n    async _startIfNecessary() {\n        var _a;\n        const preference = this.kernelPreference;\n        if (this.isDisposed || ((_a = this.session) === null || _a === void 0 ? void 0 : _a.kernel) ||\n            preference.shouldStart === false ||\n            preference.canStart === false) {\n            // Not necessary to start a kernel\n            return false;\n        }\n        let options;\n        if (preference.id) {\n            options = { id: preference.id };\n        }\n        else {\n            const name = SessionContext.getDefaultKernel({\n                specs: this.specsManager.specs,\n                sessions: this.sessionManager.running(),\n                preference\n            });\n            if (name) {\n                options = { name };\n            }\n        }\n        if (options) {\n            try {\n                await this._changeKernel(options);\n                return false;\n            }\n            catch (err) {\n                /* no-op */\n            }\n        }\n        // Always fall back to selecting a kernel\n        return true;\n    }\n    /**\n     * Change the kernel.\n     */\n    async _changeKernel(model = {}, isInit = false) {\n        if (model.name) {\n            this._pendingKernelName = model.name;\n        }\n        if (this._session && !this._isTerminating) {\n            await this._shutdownSession();\n        }\n        else if (!this._session) {\n            this._kernelChanged.emit({\n                name: 'kernel',\n                oldValue: null,\n                newValue: null\n            });\n        }\n        // Guarantee that the initialized kernel\n        // will be started first.\n        if (!this._pendingSessionRequest) {\n            this._initStarted.resolve(void 0);\n        }\n        // Use a UUID for the path to overcome a race condition on the server\n        // where it will re-use a session for a given path but only after\n        // the kernel finishes starting.\n        // We later switch to the real path below.\n        // Use the correct directory so the kernel will be started in that directory.\n        const dirName = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.PathExt.dirname(this._path);\n        const requestId = (this._pendingSessionRequest = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.PathExt.join(dirName, _lumino_coreutils__WEBPACK_IMPORTED_MODULE_3__.UUID.uuid4()));\n        try {\n            this._statusChanged.emit('starting');\n            const session = await this.sessionManager.startNew({\n                path: requestId,\n                type: this._type,\n                name: this._name,\n                kernel: model\n            });\n            // Handle a preempt.\n            if (this._pendingSessionRequest !== session.path) {\n                await session.shutdown();\n                session.dispose();\n                return null;\n            }\n            // Change to the real path.\n            await session.setPath(this._path);\n            // Update the name in case it has changed since we launched the session.\n            await session.setName(this._name);\n            if (this._session && !this._isTerminating) {\n                await this._shutdownSession();\n            }\n            return this._handleNewSession(session);\n        }\n        catch (err) {\n            void this._handleSessionError(err);\n            throw err;\n        }\n    }\n    /**\n     * Handle a new session object.\n     */\n    _handleNewSession(session) {\n        var _a, _b, _c;\n        if (this.isDisposed) {\n            throw Error('Disposed');\n        }\n        if (!this._isReady) {\n            this._isReady = true;\n            this._ready.resolve(undefined);\n        }\n        if (this._session) {\n            this._session.dispose();\n        }\n        this._session = session;\n        this._pendingKernelName = '';\n        if (session) {\n            this._prevKernelName = (_b = (_a = session.kernel) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '';\n            session.disposed.connect(this._onSessionDisposed, this);\n            session.propertyChanged.connect(this._onPropertyChanged, this);\n            session.kernelChanged.connect(this._onKernelChanged, this);\n            session.statusChanged.connect(this._onStatusChanged, this);\n            session.connectionStatusChanged.connect(this._onConnectionStatusChanged, this);\n            session.iopubMessage.connect(this._onIopubMessage, this);\n            session.unhandledMessage.connect(this._onUnhandledMessage, this);\n            if (session.path !== this._path) {\n                this._onPropertyChanged(session, 'path');\n            }\n            if (session.name !== this._name) {\n                this._onPropertyChanged(session, 'name');\n            }\n            if (session.type !== this._type) {\n                this._onPropertyChanged(session, 'type');\n            }\n        }\n        // Any existing session/kernel connection was disposed above when the session was\n        // disposed, so the oldValue should be null.\n        this._sessionChanged.emit({\n            name: 'session',\n            oldValue: null,\n            newValue: session\n        });\n        this._kernelChanged.emit({\n            oldValue: null,\n            newValue: (session === null || session === void 0 ? void 0 : session.kernel) || null,\n            name: 'kernel'\n        });\n        this._statusChanged.emit(((_c = session === null || session === void 0 ? void 0 : session.kernel) === null || _c === void 0 ? void 0 : _c.status) || 'unknown');\n        return (session === null || session === void 0 ? void 0 : session.kernel) || null;\n    }\n    /**\n     * Handle an error in session startup.\n     */\n    async _handleSessionError(err) {\n        this._handleNewSession(null);\n        let traceback = '';\n        let message = '';\n        try {\n            traceback = err.traceback;\n            message = err.message;\n        }\n        catch (err) {\n            // no-op\n        }\n        const body = (react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", null,\n            message && react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"pre\", null, message),\n            traceback && (react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"details\", { className: \"jp-mod-wide\" },\n                react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"pre\", null, traceback)))));\n        const dialog = (this._dialog = new _dialog__WEBPACK_IMPORTED_MODULE_7__.Dialog({\n            title: this._trans.__('Error Starting Kernel'),\n            body,\n            buttons: [_dialog__WEBPACK_IMPORTED_MODULE_7__.Dialog.okButton()]\n        }));\n        await dialog.launch();\n        this._dialog = null;\n    }\n    /**\n     * Handle a session termination.\n     */\n    _onSessionDisposed() {\n        if (this._session) {\n            const oldValue = this._session;\n            this._session = null;\n            const newValue = this._session;\n            this._sessionChanged.emit({ name: 'session', oldValue, newValue });\n        }\n    }\n    /**\n     * Handle a change to a session property.\n     */\n    _onPropertyChanged(sender, property) {\n        switch (property) {\n            case 'path':\n                this._path = sender.path;\n                break;\n            case 'name':\n                this._name = sender.name;\n                break;\n            case 'type':\n                this._type = sender.type;\n                break;\n            default:\n                throw new Error(`unrecognized property ${property}`);\n        }\n        this._propertyChanged.emit(property);\n    }\n    /**\n     * Handle a change to the kernel.\n     */\n    _onKernelChanged(sender, args) {\n        this._kernelChanged.emit(args);\n    }\n    /**\n     * Handle a change to the session status.\n     */\n    _onStatusChanged(sender, status) {\n        // Set that this kernel is busy, if we haven't already\n        // If we have already, and now we aren't busy, dispose\n        // of the busy disposable.\n        if (this._setBusy) {\n            if (status === 'busy') {\n                if (!this._busyDisposable) {\n                    this._busyDisposable = this._setBusy();\n                }\n            }\n            else {\n                if (this._busyDisposable) {\n                    this._busyDisposable.dispose();\n                    this._busyDisposable = null;\n                }\n            }\n        }\n        // Proxy the signal\n        this._statusChanged.emit(status);\n    }\n    /**\n     * Handle a change to the session status.\n     */\n    _onConnectionStatusChanged(sender, status) {\n        // Proxy the signal\n        this._connectionStatusChanged.emit(status);\n    }\n    /**\n     * Handle an iopub message.\n     */\n    _onIopubMessage(sender, message) {\n        this._iopubMessage.emit(message);\n    }\n    /**\n     * Handle an unhandled message.\n     */\n    _onUnhandledMessage(sender, message) {\n        this._unhandledMessage.emit(message);\n    }\n}\n/**\n * A namespace for `SessionContext` statics.\n */\n(function (SessionContext) {\n    /**\n     * Get the default kernel name given select options.\n     */\n    function getDefaultKernel(options) {\n        return Private.getDefaultKernel(options);\n    }\n    SessionContext.getDefaultKernel = getDefaultKernel;\n})(SessionContext || (SessionContext = {}));\n/**\n * The default implementation of the client session dialog provider.\n */\nconst sessionContextDialogs = {\n    /**\n     * Select a kernel for the session.\n     */\n    async selectKernel(sessionContext, translator) {\n        if (sessionContext.isDisposed) {\n            return Promise.resolve();\n        }\n        translator = translator || _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__.nullTranslator;\n        const trans = translator.load('jupyterlab');\n        // If there is no existing kernel, offer the option\n        // to keep no kernel.\n        let label = trans.__('Cancel');\n        if (sessionContext.hasNoKernel) {\n            label = sessionContext.kernelDisplayName;\n        }\n        const buttons = [\n            _dialog__WEBPACK_IMPORTED_MODULE_7__.Dialog.cancelButton({ label }),\n            _dialog__WEBPACK_IMPORTED_MODULE_7__.Dialog.okButton({ label: trans.__('Select') })\n        ];\n        const dialog = new _dialog__WEBPACK_IMPORTED_MODULE_7__.Dialog({\n            title: trans.__('Select Kernel'),\n            body: new Private.KernelSelector(sessionContext, translator),\n            buttons\n        });\n        const result = await dialog.launch();\n        if (sessionContext.isDisposed || !result.button.accept) {\n            return;\n        }\n        const model = result.value;\n        if (model === null && !sessionContext.hasNoKernel) {\n            return sessionContext.shutdown();\n        }\n        if (model) {\n            await sessionContext.changeKernel(model);\n        }\n    },\n    /**\n     * Restart the session.\n     *\n     * @returns A promise that resolves with whether the kernel has restarted.\n     *\n     * #### Notes\n     * If there is a running kernel, present a dialog.\n     * If there is no kernel, we start a kernel with the last run\n     * kernel name and resolves with `true`.\n     */\n    async restart(sessionContext, translator) {\n        var _a;\n        translator = translator || _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__.nullTranslator;\n        const trans = translator.load('jupyterlab');\n        await sessionContext.initialize();\n        if (sessionContext.isDisposed) {\n            throw new Error('session already disposed');\n        }\n        const kernel = (_a = sessionContext.session) === null || _a === void 0 ? void 0 : _a.kernel;\n        if (!kernel && sessionContext.prevKernelName) {\n            await sessionContext.changeKernel({\n                name: sessionContext.prevKernelName\n            });\n            return true;\n        }\n        // Bail if there is no previous kernel to start.\n        if (!kernel) {\n            throw new Error('No kernel to restart');\n        }\n        const restartBtn = _dialog__WEBPACK_IMPORTED_MODULE_7__.Dialog.warnButton({ label: 'Restart' });\n        const result = await (0,_dialog__WEBPACK_IMPORTED_MODULE_7__.showDialog)({\n            title: trans.__('Restart Kernel?'),\n            body: trans.__('Do you want to restart the current kernel? All variables will be lost.'),\n            buttons: [_dialog__WEBPACK_IMPORTED_MODULE_7__.Dialog.cancelButton(), restartBtn]\n        });\n        if (kernel.isDisposed) {\n            return false;\n        }\n        if (result.button.accept) {\n            await sessionContext.restartKernel();\n            return true;\n        }\n        return false;\n    }\n};\n/**\n * The namespace for module private data.\n */\nvar Private;\n(function (Private) {\n    /**\n     * A widget that provides a kernel selection.\n     */\n    class KernelSelector extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_5__.Widget {\n        /**\n         * Create a new kernel selector widget.\n         */\n        constructor(sessionContext, translator) {\n            super({ node: createSelectorNode(sessionContext, translator) });\n        }\n        /**\n         * Get the value of the kernel selector widget.\n         */\n        getValue() {\n            const selector = this.node.querySelector('select');\n            return JSON.parse(selector.value);\n        }\n    }\n    Private.KernelSelector = KernelSelector;\n    /**\n     * Create a node for a kernel selector widget.\n     */\n    function createSelectorNode(sessionContext, translator) {\n        // Create the dialog body.\n        translator = translator || _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__.nullTranslator;\n        const trans = translator.load('jupyterlab');\n        const body = document.createElement('div');\n        const text = document.createElement('label');\n        text.textContent = `${trans.__('Select kernel for:')} \"${sessionContext.name}\"`;\n        body.appendChild(text);\n        const options = getKernelSearch(sessionContext);\n        const selector = document.createElement('select');\n        populateKernelSelect(selector, options, translator, !sessionContext.hasNoKernel ? sessionContext.kernelDisplayName : null);\n        body.appendChild(selector);\n        return body;\n    }\n    /**\n     * Get the default kernel name given select options.\n     */\n    function getDefaultKernel(options) {\n        var _a;\n        const { specs, preference } = options;\n        const { name, language, shouldStart, canStart, autoStartDefault } = preference;\n        if (!specs || shouldStart === false || canStart === false) {\n            return null;\n        }\n        const defaultName = autoStartDefault ? specs.default : null;\n        if (!name && !language) {\n            return defaultName;\n        }\n        // Look for an exact match of a spec name.\n        for (const specName in specs.kernelspecs) {\n            if (specName === name) {\n                return name;\n            }\n        }\n        // Bail if there is no language.\n        if (!language) {\n            return defaultName;\n        }\n        // Check for a single kernel matching the language.\n        const matches = [];\n        for (const specName in specs.kernelspecs) {\n            const kernelLanguage = (_a = specs.kernelspecs[specName]) === null || _a === void 0 ? void 0 : _a.language;\n            if (language === kernelLanguage) {\n                matches.push(specName);\n            }\n        }\n        if (matches.length === 1) {\n            const specName = matches[0];\n            console.warn('No exact match found for ' +\n                specName +\n                ', using kernel ' +\n                specName +\n                ' that matches ' +\n                'language=' +\n                language);\n            return specName;\n        }\n        // No matches found.\n        return defaultName;\n    }\n    Private.getDefaultKernel = getDefaultKernel;\n    /**\n     * Populate a kernel select node for the session.\n     */\n    function populateKernelSelect(node, options, translator, currentKernelDisplayName = null) {\n        while (node.firstChild) {\n            node.removeChild(node.firstChild);\n        }\n        const { preference, sessions, specs } = options;\n        const { name, id, language, canStart, shouldStart } = preference;\n        translator = translator || _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__.nullTranslator;\n        const trans = translator.load('jupyterlab');\n        if (!specs || canStart === false) {\n            node.appendChild(optionForNone(translator));\n            node.value = 'null';\n            node.disabled = true;\n            return;\n        }\n        node.disabled = false;\n        // Create mappings of display names and languages for kernel name.\n        const displayNames = Object.create(null);\n        const languages = Object.create(null);\n        for (const name in specs.kernelspecs) {\n            const spec = specs.kernelspecs[name];\n            displayNames[name] = spec.display_name;\n            languages[name] = spec.language;\n        }\n        // Handle a kernel by name.\n        const names = [];\n        if (name && name in specs.kernelspecs) {\n            names.push(name);\n        }\n        // Then look by language.\n        if (language) {\n            for (const specName in specs.kernelspecs) {\n                if (name !== specName && languages[specName] === language) {\n                    names.push(specName);\n                }\n            }\n        }\n        // Use the default kernel if no kernels were found.\n        if (!names.length) {\n            names.push(specs.default);\n        }\n        // Handle a preferred kernels in order of display name.\n        const preferred = document.createElement('optgroup');\n        preferred.label = trans.__('Start Preferred Kernel');\n        names.sort((a, b) => displayNames[a].localeCompare(displayNames[b]));\n        for (const name of names) {\n            preferred.appendChild(optionForName(name, displayNames[name]));\n        }\n        if (preferred.firstChild) {\n            node.appendChild(preferred);\n        }\n        // Add an option for no kernel\n        node.appendChild(optionForNone());\n        const other = document.createElement('optgroup');\n        other.label = trans.__('Start Other Kernel');\n        // Add the rest of the kernel names in alphabetical order.\n        const otherNames = [];\n        for (const specName in specs.kernelspecs) {\n            if (names.indexOf(specName) !== -1) {\n                continue;\n            }\n            otherNames.push(specName);\n        }\n        otherNames.sort((a, b) => displayNames[a].localeCompare(displayNames[b]));\n        for (const otherName of otherNames) {\n            other.appendChild(optionForName(otherName, displayNames[otherName]));\n        }\n        // Add a separator option if there were any other names.\n        if (otherNames.length) {\n            node.appendChild(other);\n        }\n        // Handle the default value.\n        if (shouldStart === false) {\n            node.value = 'null';\n        }\n        else {\n            let selectedIndex = 0;\n            if (currentKernelDisplayName) {\n                // Select current kernel by default.\n                selectedIndex = [...node.options].findIndex(option => option.text === currentKernelDisplayName);\n                selectedIndex = Math.max(selectedIndex, 0);\n            }\n            node.selectedIndex = selectedIndex;\n        }\n        // Bail if there are no sessions.\n        if (!sessions) {\n            return;\n        }\n        // Add the sessions using the preferred language first.\n        const matchingSessions = [];\n        const otherSessions = [];\n        (0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_2__.each)(sessions, session => {\n            var _a;\n            if (language &&\n                session.kernel &&\n                languages[session.kernel.name] === language &&\n                session.kernel.id !== id) {\n                matchingSessions.push(session);\n            }\n            else if (((_a = session.kernel) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n                otherSessions.push(session);\n            }\n        });\n        const matching = document.createElement('optgroup');\n        matching.label = trans.__('Use Kernel from Preferred Session');\n        node.appendChild(matching);\n        if (matchingSessions.length) {\n            matchingSessions.sort((a, b) => {\n                return a.path.localeCompare(b.path);\n            });\n            (0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_2__.each)(matchingSessions, session => {\n                const name = session.kernel ? displayNames[session.kernel.name] : '';\n                matching.appendChild(optionForSession(session, name, translator));\n            });\n        }\n        const otherSessionsNode = document.createElement('optgroup');\n        otherSessionsNode.label = trans.__('Use Kernel from Other Session');\n        node.appendChild(otherSessionsNode);\n        if (otherSessions.length) {\n            otherSessions.sort((a, b) => {\n                return a.path.localeCompare(b.path);\n            });\n            (0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_2__.each)(otherSessions, session => {\n                const name = session.kernel\n                    ? displayNames[session.kernel.name] || session.kernel.name\n                    : '';\n                otherSessionsNode.appendChild(optionForSession(session, name, translator));\n            });\n        }\n    }\n    Private.populateKernelSelect = populateKernelSelect;\n    /**\n     * Get the kernel search options given a session context and session manager.\n     */\n    function getKernelSearch(sessionContext) {\n        return {\n            specs: sessionContext.specsManager.specs,\n            sessions: sessionContext.sessionManager.running(),\n            preference: sessionContext.kernelPreference\n        };\n    }\n    /**\n     * Create an option element for a kernel name.\n     */\n    function optionForName(name, displayName) {\n        const option = document.createElement('option');\n        option.text = displayName;\n        option.value = JSON.stringify({ name });\n        return option;\n    }\n    /**\n     * Create an option for no kernel.\n     */\n    function optionForNone(translator) {\n        translator = translator || _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__.nullTranslator;\n        const trans = translator.load('jupyterlab');\n        const group = document.createElement('optgroup');\n        group.label = trans.__('Use No Kernel');\n        const option = document.createElement('option');\n        option.text = trans.__('No Kernel');\n        option.value = 'null';\n        group.appendChild(option);\n        return group;\n    }\n    /**\n     * Create an option element for a session.\n     */\n    function optionForSession(session, displayName, translator) {\n        var _a, _b;\n        translator = translator || _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__.nullTranslator;\n        const trans = translator.load('jupyterlab');\n        const option = document.createElement('option');\n        const sessionName = session.name || _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.PathExt.basename(session.path);\n        option.text = sessionName;\n        option.value = JSON.stringify({ id: (_a = session.kernel) === null || _a === void 0 ? void 0 : _a.id });\n        option.title =\n            `${trans.__('Path:')} ${session.path}\\n` +\n                `${trans.__('Name:')} ${sessionName}\\n` +\n                `${trans.__('Kernel Name:')} ${displayName}\\n` +\n                `${trans.__('Kernel Id:')} ${(_b = session.kernel) === null || _b === void 0 ? void 0 : _b.id}`;\n        return option;\n    }\n})(Private || (Private = {}));\n//# sourceMappingURL=sessioncontext.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/sessioncontext.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/spinner.js":
/*!***********************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/spinner.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Spinner\": () => (/* binding */ Spinner)\n/* harmony export */ });\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_0__);\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n/**\n * The spinner class.\n */\nclass Spinner extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_0__.Widget {\n    /**\n     * Construct a spinner widget.\n     */\n    constructor() {\n        super();\n        this.addClass('jp-Spinner');\n        this.node.tabIndex = -1;\n        const content = document.createElement('div');\n        content.className = 'jp-SpinnerContent';\n        this.node.appendChild(content);\n    }\n    /**\n     * Handle `'activate-request'` messages.\n     */\n    onActivateRequest(msg) {\n        this.node.focus();\n    }\n}\n//# sourceMappingURL=spinner.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/spinner.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/splash.js":
/*!**********************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/splash.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ISplashScreen\": () => (/* binding */ ISplashScreen)\n/* harmony export */ });\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n/* tslint:disable */\n/**\n * The main menu token.\n */\nconst ISplashScreen = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.Token('@jupyterlab/apputils:ISplashScreen');\n//# sourceMappingURL=splash.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/splash.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/styling.js":
/*!***********************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/styling.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Styling\": () => (/* binding */ Styling)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/ui-components */ \"webpack/sharing/consume/default/@jupyterlab/ui-components/@jupyterlab/ui-components\");\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_0__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n/**\n * A namespace for node styling.\n */\nvar Styling;\n(function (Styling) {\n    /**\n     * Style a node and its child elements with the default tag names.\n     *\n     * @param node - The base node.\n     *\n     * @param className - The optional CSS class to add to styled nodes.\n     */\n    function styleNode(node, className = '') {\n        styleNodeByTag(node, 'select', className);\n        styleNodeByTag(node, 'textarea', className);\n        styleNodeByTag(node, 'input', className);\n        styleNodeByTag(node, 'button', className);\n    }\n    Styling.styleNode = styleNode;\n    /**\n     * Style a node and its elements that have a given tag name.\n     *\n     * @param node - The base node.\n     *\n     * @param tagName - The html tag name to style.\n     *\n     * @param className - The optional CSS class to add to styled nodes.\n     */\n    function styleNodeByTag(node, tagName, className = '') {\n        if (node.localName === tagName) {\n            node.classList.add('jp-mod-styled');\n        }\n        if (node.localName === 'select') {\n            wrapSelect(node);\n        }\n        const nodes = node.getElementsByTagName(tagName);\n        for (let i = 0; i < nodes.length; i++) {\n            const child = nodes[i];\n            child.classList.add('jp-mod-styled');\n            if (className) {\n                child.classList.add(className);\n            }\n            if (tagName === 'select') {\n                wrapSelect(child);\n            }\n        }\n    }\n    Styling.styleNodeByTag = styleNodeByTag;\n    /**\n     * Wrap a select node.\n     */\n    function wrapSelect(node) {\n        const wrapper = document.createElement('div');\n        wrapper.classList.add('jp-select-wrapper');\n        node.addEventListener('focus', Private.onFocus);\n        node.addEventListener('blur', Private.onFocus);\n        node.classList.add('jp-mod-styled');\n        if (node.parentElement) {\n            node.parentElement.replaceChild(wrapper, node);\n        }\n        wrapper.appendChild(node);\n        // add the icon node\n        wrapper.appendChild(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_0__.caretDownEmptyIcon.element({\n            tag: 'span',\n            stylesheet: 'select',\n            right: '8px',\n            top: '5px',\n            width: '18px'\n        }));\n        return wrapper;\n    }\n    Styling.wrapSelect = wrapSelect;\n})(Styling || (Styling = {}));\n/**\n * The namespace for module private data.\n */\nvar Private;\n(function (Private) {\n    /**\n     * Handle a focus event on a styled select.\n     */\n    function onFocus(event) {\n        const target = event.target;\n        const parent = target.parentElement;\n        if (!parent) {\n            return;\n        }\n        if (event.type === 'focus') {\n            parent.classList.add('jp-mod-focused');\n        }\n        else {\n            parent.classList.remove('jp-mod-focused');\n        }\n    }\n    Private.onFocus = onFocus;\n})(Private || (Private = {}));\n//# sourceMappingURL=styling.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/styling.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/thememanager.js":
/*!****************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/thememanager.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ThemeManager\": () => (/* binding */ ThemeManager)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/coreutils */ \"webpack/sharing/consume/default/@jupyterlab/coreutils/@jupyterlab/coreutils\");\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/translation */ \"webpack/sharing/consume/default/@jupyterlab/translation/@jupyterlab/translation\");\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lumino_algorithm__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @lumino/algorithm */ \"webpack/sharing/consume/default/@lumino/algorithm/@lumino/algorithm\");\n/* harmony import */ var _lumino_algorithm__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_lumino_algorithm__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _lumino_disposable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @lumino/disposable */ \"webpack/sharing/consume/default/@lumino/disposable/@lumino/disposable\");\n/* harmony import */ var _lumino_disposable__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_lumino_disposable__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @lumino/signaling */ \"webpack/sharing/consume/default/@lumino/signaling/@lumino/signaling\");\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_lumino_signaling__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _dialog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dialog */ \"../node_modules/@jupyterlab/apputils/lib/dialog.js\");\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n\n\n\n/**\n * The number of milliseconds between theme loading attempts.\n */\nconst REQUEST_INTERVAL = 75;\n/**\n * The number of times to attempt to load a theme before giving up.\n */\nconst REQUEST_THRESHOLD = 20;\n/**\n * A class that provides theme management.\n */\nclass ThemeManager {\n    /**\n     * Construct a new theme manager.\n     */\n    constructor(options) {\n        this._current = null;\n        this._links = [];\n        this._overrides = {};\n        this._overrideProps = {};\n        this._outstanding = null;\n        this._pending = 0;\n        this._requests = {};\n        this._themes = {};\n        this._themeChanged = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_4__.Signal(this);\n        const { host, key, splash, url } = options;\n        this.translator = options.translator || _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__.nullTranslator;\n        this._trans = this.translator.load('jupyterlab');\n        const registry = options.settings;\n        this._base = url;\n        this._host = host;\n        this._splash = splash || null;\n        void registry.load(key).then(settings => {\n            this._settings = settings;\n            // set up css overrides once we have a pointer to the settings schema\n            this._initOverrideProps();\n            this._settings.changed.connect(this._loadSettings, this);\n            this._loadSettings();\n        });\n    }\n    /**\n     * Get the name of the current theme.\n     */\n    get theme() {\n        return this._current;\n    }\n    /**\n     * The names of the registered themes.\n     */\n    get themes() {\n        return Object.keys(this._themes);\n    }\n    /**\n     * A signal fired when the application theme changes.\n     */\n    get themeChanged() {\n        return this._themeChanged;\n    }\n    /**\n     * Get the value of a CSS variable from its key.\n     *\n     * @param key - A Jupyterlab CSS variable, without the leading '--jp-'.\n     *\n     * @return value - The current value of the Jupyterlab CSS variable\n     */\n    getCSS(key) {\n        var _a;\n        return ((_a = this._overrides[key]) !== null && _a !== void 0 ? _a : getComputedStyle(document.documentElement).getPropertyValue(`--jp-${key}`));\n    }\n    /**\n     * Load a theme CSS file by path.\n     *\n     * @param path - The path of the file to load.\n     */\n    loadCSS(path) {\n        const base = this._base;\n        const href = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.URLExt.isLocal(path) ? _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.URLExt.join(base, path) : path;\n        const links = this._links;\n        return new Promise((resolve, reject) => {\n            const link = document.createElement('link');\n            link.setAttribute('rel', 'stylesheet');\n            link.setAttribute('type', 'text/css');\n            link.setAttribute('href', href);\n            link.addEventListener('load', () => {\n                resolve(undefined);\n            });\n            link.addEventListener('error', () => {\n                reject(`Stylesheet failed to load: ${href}`);\n            });\n            document.body.appendChild(link);\n            links.push(link);\n            // add any css overrides to document\n            this.loadCSSOverrides();\n        });\n    }\n    /**\n     * Loads all current CSS overrides from settings. If an override has been\n     * removed or is invalid, this function unloads it instead.\n     */\n    loadCSSOverrides() {\n        var _a;\n        const newOverrides = (_a = this._settings.user['overrides']) !== null && _a !== void 0 ? _a : {};\n        // iterate over the union of current and new CSS override keys\n        Object.keys(Object.assign(Object.assign({}, this._overrides), newOverrides)).forEach(key => {\n            const val = newOverrides[key];\n            if (val && this.validateCSS(key, val)) {\n                // validation succeeded, set the override\n                document.documentElement.style.setProperty(`--jp-${key}`, val);\n            }\n            else {\n                // if key is not present or validation failed, the override will be removed\n                delete newOverrides[key];\n                document.documentElement.style.removeProperty(`--jp-${key}`);\n            }\n        });\n        // replace the current overrides with the new ones\n        this._overrides = newOverrides;\n    }\n    /**\n     * Validate a CSS value w.r.t. a key\n     *\n     * @param key - A Jupyterlab CSS variable, without the leading '--jp-'.\n     *\n     * @param val - A candidate CSS value\n     */\n    validateCSS(key, val) {\n        // determine the css property corresponding to the key\n        const prop = this._overrideProps[key];\n        if (!prop) {\n            console.warn('CSS validation failed: could not find property corresponding to key.\\n' +\n                `key: '${key}', val: '${val}'`);\n            return false;\n        }\n        // use built-in validation once we have the corresponding property\n        if (CSS.supports(prop, val)) {\n            return true;\n        }\n        else {\n            console.warn('CSS validation failed: invalid value.\\n' +\n                `key: '${key}', val: '${val}', prop: '${prop}'`);\n            return false;\n        }\n    }\n    /**\n     * Register a theme with the theme manager.\n     *\n     * @param theme - The theme to register.\n     *\n     * @returns A disposable that can be used to unregister the theme.\n     */\n    register(theme) {\n        const { name } = theme;\n        const themes = this._themes;\n        if (themes[name]) {\n            throw new Error(`Theme already registered for ${name}`);\n        }\n        themes[name] = theme;\n        return new _lumino_disposable__WEBPACK_IMPORTED_MODULE_3__.DisposableDelegate(() => {\n            delete themes[name];\n        });\n    }\n    /**\n     * Add a CSS override to the settings.\n     */\n    setCSSOverride(key, value) {\n        return this._settings.set('overrides', Object.assign(Object.assign({}, this._overrides), { [key]: value }));\n    }\n    /**\n     * Set the current theme.\n     */\n    setTheme(name) {\n        return this._settings.set('theme', name);\n    }\n    /**\n     * Test whether a given theme is light.\n     */\n    isLight(name) {\n        return this._themes[name].isLight;\n    }\n    /**\n     * Increase a font size w.r.t. its current setting or its value in the\n     * current theme.\n     *\n     * @param key - A Jupyterlab font size CSS variable, without the leading '--jp-'.\n     */\n    incrFontSize(key) {\n        return this._incrFontSize(key, true);\n    }\n    /**\n     * Decrease a font size w.r.t. its current setting or its value in the\n     * current theme.\n     *\n     * @param key - A Jupyterlab font size CSS variable, without the leading '--jp-'.\n     */\n    decrFontSize(key) {\n        return this._incrFontSize(key, false);\n    }\n    /**\n     * Test whether a given theme styles scrollbars,\n     * and if the user has scrollbar styling enabled.\n     */\n    themeScrollbars(name) {\n        return (!!this._settings.composite['theme-scrollbars'] &&\n            !!this._themes[name].themeScrollbars);\n    }\n    /**\n     * Test if the user has scrollbar styling enabled.\n     */\n    isToggledThemeScrollbars() {\n        return !!this._settings.composite['theme-scrollbars'];\n    }\n    /**\n     * Toggle the `theme-scrollbars` setting.\n     */\n    toggleThemeScrollbars() {\n        return this._settings.set('theme-scrollbars', !this._settings.composite['theme-scrollbars']);\n    }\n    /**\n     * Get the display name of the theme.\n     */\n    getDisplayName(name) {\n        var _a, _b;\n        return (_b = (_a = this._themes[name]) === null || _a === void 0 ? void 0 : _a.displayName) !== null && _b !== void 0 ? _b : name;\n    }\n    /**\n     * Change a font size by a positive or negative increment.\n     */\n    _incrFontSize(key, add = true) {\n        var _a;\n        // get the numeric and unit parts of the current font size\n        const parts = ((_a = this.getCSS(key)) !== null && _a !== void 0 ? _a : '13px').split(/([a-zA-Z]+)/);\n        // determine the increment\n        const incr = (add ? 1 : -1) * (parts[1] === 'em' ? 0.1 : 1);\n        // increment the font size and set it as an override\n        return this.setCSSOverride(key, `${Number(parts[0]) + incr}${parts[1]}`);\n    }\n    /**\n     * Initialize the key -> property dict for the overrides\n     */\n    _initOverrideProps() {\n        const definitions = this._settings.schema.definitions;\n        const overidesSchema = definitions.cssOverrides.properties;\n        Object.keys(overidesSchema).forEach(key => {\n            // override validation is against the CSS property in the description\n            // field. Example: for key ui-font-family, .description is font-family\n            this._overrideProps[key] = overidesSchema[key].description;\n        });\n    }\n    /**\n     * Handle the current settings.\n     */\n    _loadSettings() {\n        const outstanding = this._outstanding;\n        const pending = this._pending;\n        const requests = this._requests;\n        // If another request is pending, cancel it.\n        if (pending) {\n            window.clearTimeout(pending);\n            this._pending = 0;\n        }\n        const settings = this._settings;\n        const themes = this._themes;\n        const theme = settings.composite['theme'];\n        // If another promise is outstanding, wait until it finishes before\n        // attempting to load the settings. Because outstanding promises cannot\n        // be aborted, the order in which they occur must be enforced.\n        if (outstanding) {\n            outstanding\n                .then(() => {\n                this._loadSettings();\n            })\n                .catch(() => {\n                this._loadSettings();\n            });\n            this._outstanding = null;\n            return;\n        }\n        // Increment the request counter.\n        requests[theme] = requests[theme] ? requests[theme] + 1 : 1;\n        // If the theme exists, load it right away.\n        if (themes[theme]) {\n            this._outstanding = this._loadTheme(theme);\n            delete requests[theme];\n            return;\n        }\n        // If the request has taken too long, give up.\n        if (requests[theme] > REQUEST_THRESHOLD) {\n            const fallback = settings.default('theme');\n            // Stop tracking the requests for this theme.\n            delete requests[theme];\n            if (!themes[fallback]) {\n                this._onError(this._trans.__('Neither theme %1 nor default %2 loaded.', theme, fallback));\n                return;\n            }\n            console.warn(`Could not load theme ${theme}, using default ${fallback}.`);\n            this._outstanding = this._loadTheme(fallback);\n            return;\n        }\n        // If the theme does not yet exist, attempt to wait for it.\n        this._pending = window.setTimeout(() => {\n            this._loadSettings();\n        }, REQUEST_INTERVAL);\n    }\n    /**\n     * Load the theme.\n     *\n     * #### Notes\n     * This method assumes that the `theme` exists.\n     */\n    _loadTheme(theme) {\n        const current = this._current;\n        const links = this._links;\n        const themes = this._themes;\n        const splash = this._splash\n            ? this._splash.show(themes[theme].isLight)\n            : new _lumino_disposable__WEBPACK_IMPORTED_MODULE_3__.DisposableDelegate(() => undefined);\n        // Unload any CSS files that have been loaded.\n        links.forEach(link => {\n            if (link.parentElement) {\n                link.parentElement.removeChild(link);\n            }\n        });\n        links.length = 0;\n        // Unload the previously loaded theme.\n        const old = current ? themes[current].unload() : Promise.resolve();\n        return Promise.all([old, themes[theme].load()])\n            .then(() => {\n            this._current = theme;\n            this._themeChanged.emit({\n                name: 'theme',\n                oldValue: current,\n                newValue: theme\n            });\n            // Need to force a redraw of the app here to avoid a Chrome rendering\n            // bug that can leave the scrollbars in an invalid state\n            this._host.hide();\n            // If we hide/show the widget too quickly, no redraw will happen.\n            // requestAnimationFrame delays until after the next frame render.\n            requestAnimationFrame(() => {\n                this._host.show();\n                Private.fitAll(this._host);\n                splash.dispose();\n            });\n        })\n            .catch(reason => {\n            this._onError(reason);\n            splash.dispose();\n        });\n    }\n    /**\n     * Handle a theme error.\n     */\n    _onError(reason) {\n        void (0,_dialog__WEBPACK_IMPORTED_MODULE_5__.showDialog)({\n            title: this._trans.__('Error Loading Theme'),\n            body: String(reason),\n            buttons: [_dialog__WEBPACK_IMPORTED_MODULE_5__.Dialog.okButton({ label: this._trans.__('OK') })]\n        });\n    }\n}\n/**\n * A namespace for module private data.\n */\nvar Private;\n(function (Private) {\n    /**\n     * Fit a widget and all of its children, recursively.\n     */\n    function fitAll(widget) {\n        (0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_2__.each)(widget.children(), fitAll);\n        widget.fit();\n    }\n    Private.fitAll = fitAll;\n})(Private || (Private = {}));\n//# sourceMappingURL=thememanager.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/thememanager.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/tokens.js":
/*!**********************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/tokens.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ISessionContextDialogs\": () => (/* binding */ ISessionContextDialogs),\n/* harmony export */   \"IThemeManager\": () => (/* binding */ IThemeManager),\n/* harmony export */   \"ISanitizer\": () => (/* binding */ ISanitizer)\n/* harmony export */ });\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n/* tslint:disable */\n/**\n * The session context dialogs token.\n */\nconst ISessionContextDialogs = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.Token('@jupyterlab/apputils:ISessionContextDialogs');\n/* tslint:enable */\n/* tslint:disable */\n/**\n * The theme manager token.\n */\nconst IThemeManager = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.Token('@jupyterlab/apputils:IThemeManager');\n/**\n * The sanitizer token.\n */\nconst ISanitizer = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.Token('@jupyterlab/apputils:ISanitizer');\n//# sourceMappingURL=tokens.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/tokens.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/toolbar.js":
/*!***********************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/toolbar.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Toolbar\": () => (/* binding */ Toolbar),\n/* harmony export */   \"ToolbarButtonComponent\": () => (/* binding */ ToolbarButtonComponent),\n/* harmony export */   \"addToolbarButtonClass\": () => (/* binding */ addToolbarButtonClass),\n/* harmony export */   \"ToolbarButton\": () => (/* binding */ ToolbarButton),\n/* harmony export */   \"CommandToolbarButtonComponent\": () => (/* binding */ CommandToolbarButtonComponent),\n/* harmony export */   \"addCommandToolbarButtonClass\": () => (/* binding */ addCommandToolbarButtonClass),\n/* harmony export */   \"CommandToolbarButton\": () => (/* binding */ CommandToolbarButton)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/translation */ \"webpack/sharing/consume/default/@jupyterlab/translation/@jupyterlab/translation\");\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/ui-components */ \"webpack/sharing/consume/default/@jupyterlab/ui-components/@jupyterlab/ui-components\");\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lumino_algorithm__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @lumino/algorithm */ \"webpack/sharing/consume/default/@lumino/algorithm/@lumino/algorithm\");\n/* harmony import */ var _lumino_algorithm__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_lumino_algorithm__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _lumino_commands__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @lumino/commands */ \"webpack/sharing/consume/default/@lumino/commands/@lumino/commands\");\n/* harmony import */ var _lumino_commands__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_lumino_commands__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _lumino_messaging__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @lumino/messaging */ \"webpack/sharing/consume/default/@lumino/messaging/@lumino/messaging\");\n/* harmony import */ var _lumino_messaging__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_lumino_messaging__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _lumino_properties__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @lumino/properties */ \"webpack/sharing/consume/default/@lumino/properties/@lumino/properties\");\n/* harmony import */ var _lumino_properties__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_lumino_properties__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _sessioncontext__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./sessioncontext */ \"../node_modules/@jupyterlab/apputils/lib/sessioncontext.js\");\n/* harmony import */ var _vdom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./vdom */ \"../node_modules/@jupyterlab/apputils/lib/vdom.js\");\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n\n\n\n\n\n\n\n/**\n * The class name added to toolbars.\n */\nconst TOOLBAR_CLASS = 'jp-Toolbar';\n/**\n * The class name added to toolbar items.\n */\nconst TOOLBAR_ITEM_CLASS = 'jp-Toolbar-item';\n/**\n * The class name added to toolbar kernel name text.\n */\nconst TOOLBAR_KERNEL_NAME_CLASS = 'jp-Toolbar-kernelName';\n/**\n * The class name added to toolbar spacer.\n */\nconst TOOLBAR_SPACER_CLASS = 'jp-Toolbar-spacer';\n/**\n * The class name added to toolbar kernel status icon.\n */\nconst TOOLBAR_KERNEL_STATUS_CLASS = 'jp-Toolbar-kernelStatus';\n/**\n * A layout for toolbars.\n *\n * #### Notes\n * This layout automatically collapses its height if there are no visible\n * toolbar widgets, and expands to the standard toolbar height if there are\n * visible toolbar widgets.\n */\nclass ToolbarLayout extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__.PanelLayout {\n    constructor() {\n        super(...arguments);\n        this._dirty = false;\n    }\n    /**\n     * A message handler invoked on a `'fit-request'` message.\n     *\n     * If any child widget is visible, expand the toolbar height to the normal\n     * toolbar height.\n     */\n    onFitRequest(msg) {\n        super.onFitRequest(msg);\n        if (this.parent.isAttached) {\n            // If there are any widgets not explicitly hidden, expand the toolbar to\n            // accommodate them.\n            if ((0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_2__.some)(this.widgets, w => !w.isHidden)) {\n                this.parent.node.style.minHeight = 'var(--jp-private-toolbar-height)';\n                this.parent.removeClass('jp-Toolbar-micro');\n            }\n            else {\n                this.parent.node.style.minHeight = '';\n                this.parent.addClass('jp-Toolbar-micro');\n            }\n        }\n        // Set the dirty flag to ensure only a single update occurs.\n        this._dirty = true;\n        // Notify the ancestor that it should fit immediately. This may\n        // cause a resize of the parent, fulfilling the required update.\n        if (this.parent.parent) {\n            _lumino_messaging__WEBPACK_IMPORTED_MODULE_4__.MessageLoop.sendMessage(this.parent.parent, _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__.Widget.Msg.FitRequest);\n        }\n        // If the dirty flag is still set, the parent was not resized.\n        // Trigger the required update on the parent widget immediately.\n        if (this._dirty) {\n            _lumino_messaging__WEBPACK_IMPORTED_MODULE_4__.MessageLoop.sendMessage(this.parent, _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__.Widget.Msg.UpdateRequest);\n        }\n    }\n    /**\n     * A message handler invoked on an `'update-request'` message.\n     */\n    onUpdateRequest(msg) {\n        super.onUpdateRequest(msg);\n        if (this.parent.isVisible) {\n            this._dirty = false;\n        }\n    }\n    /**\n     * A message handler invoked on a `'child-shown'` message.\n     */\n    onChildShown(msg) {\n        super.onChildShown(msg);\n        // Post a fit request for the parent widget.\n        this.parent.fit();\n    }\n    /**\n     * A message handler invoked on a `'child-hidden'` message.\n     */\n    onChildHidden(msg) {\n        super.onChildHidden(msg);\n        // Post a fit request for the parent widget.\n        this.parent.fit();\n    }\n    /**\n     * A message handler invoked on a `'before-attach'` message.\n     */\n    onBeforeAttach(msg) {\n        super.onBeforeAttach(msg);\n        // Post a fit request for the parent widget.\n        this.parent.fit();\n    }\n    /**\n     * Attach a widget to the parent's DOM node.\n     *\n     * @param index - The current index of the widget in the layout.\n     *\n     * @param widget - The widget to attach to the parent.\n     *\n     * #### Notes\n     * This is a reimplementation of the superclass method.\n     */\n    attachWidget(index, widget) {\n        super.attachWidget(index, widget);\n        // Post a fit request for the parent widget.\n        this.parent.fit();\n    }\n    /**\n     * Detach a widget from the parent's DOM node.\n     *\n     * @param index - The previous index of the widget in the layout.\n     *\n     * @param widget - The widget to detach from the parent.\n     *\n     * #### Notes\n     * This is a reimplementation of the superclass method.\n     */\n    detachWidget(index, widget) {\n        super.detachWidget(index, widget);\n        // Post a fit request for the parent widget.\n        this.parent.fit();\n    }\n}\n/**\n * A class which provides a toolbar widget.\n */\nclass Toolbar extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__.Widget {\n    /**\n     * Construct a new toolbar widget.\n     */\n    constructor() {\n        super();\n        this.addClass(TOOLBAR_CLASS);\n        this.addClass('jp-scrollbar-tiny');\n        this.layout = new ToolbarLayout();\n    }\n    /**\n     * Get an iterator over the ordered toolbar item names.\n     *\n     * @returns An iterator over the toolbar item names.\n     */\n    names() {\n        const layout = this.layout;\n        return (0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_2__.map)(layout.widgets, widget => {\n            return Private.nameProperty.get(widget);\n        });\n    }\n    /**\n     * Add an item to the end of the toolbar.\n     *\n     * @param name - The name of the widget to add to the toolbar.\n     *\n     * @param widget - The widget to add to the toolbar.\n     *\n     * @param index - The optional name of the item to insert after.\n     *\n     * @returns Whether the item was added to toolbar.  Returns false if\n     *   an item of the same name is already in the toolbar.\n     *\n     * #### Notes\n     * The item can be removed from the toolbar by setting its parent to `null`.\n     */\n    addItem(name, widget) {\n        const layout = this.layout;\n        return this.insertItem(layout.widgets.length, name, widget);\n    }\n    /**\n     * Insert an item into the toolbar at the specified index.\n     *\n     * @param index - The index at which to insert the item.\n     *\n     * @param name - The name of the item.\n     *\n     * @param widget - The widget to add.\n     *\n     * @returns Whether the item was added to the toolbar. Returns false if\n     *   an item of the same name is already in the toolbar.\n     *\n     * #### Notes\n     * The index will be clamped to the bounds of the items.\n     * The item can be removed from the toolbar by setting its parent to `null`.\n     */\n    insertItem(index, name, widget) {\n        const existing = (0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_2__.find)(this.names(), value => value === name);\n        if (existing) {\n            return false;\n        }\n        widget.addClass(TOOLBAR_ITEM_CLASS);\n        const layout = this.layout;\n        layout.insertWidget(index, widget);\n        Private.nameProperty.set(widget, name);\n        return true;\n    }\n    /**\n     * Insert an item into the toolbar at the after a target item.\n     *\n     * @param at - The target item to insert after.\n     *\n     * @param name - The name of the item.\n     *\n     * @param widget - The widget to add.\n     *\n     * @returns Whether the item was added to the toolbar. Returns false if\n     *   an item of the same name is already in the toolbar.\n     *\n     * #### Notes\n     * The index will be clamped to the bounds of the items.\n     * The item can be removed from the toolbar by setting its parent to `null`.\n     */\n    insertAfter(at, name, widget) {\n        return this._insertRelative(at, 1, name, widget);\n    }\n    /**\n     * Insert an item into the toolbar at the before a target item.\n     *\n     * @param at - The target item to insert before.\n     *\n     * @param name - The name of the item.\n     *\n     * @param widget - The widget to add.\n     *\n     * @returns Whether the item was added to the toolbar. Returns false if\n     *   an item of the same name is already in the toolbar.\n     *\n     * #### Notes\n     * The index will be clamped to the bounds of the items.\n     * The item can be removed from the toolbar by setting its parent to `null`.\n     */\n    insertBefore(at, name, widget) {\n        return this._insertRelative(at, 0, name, widget);\n    }\n    _insertRelative(at, offset, name, widget) {\n        const nameWithIndex = (0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_2__.map)(this.names(), (name, i) => {\n            return { name: name, index: i };\n        });\n        const target = (0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_2__.find)(nameWithIndex, x => x.name === at);\n        if (target) {\n            return this.insertItem(target.index + offset, name, widget);\n        }\n        return false;\n    }\n    /**\n     * Handle the DOM events for the widget.\n     *\n     * @param event - The DOM event sent to the widget.\n     *\n     * #### Notes\n     * This method implements the DOM `EventListener` interface and is\n     * called in response to events on the dock panel's node. It should\n     * not be called directly by user code.\n     */\n    handleEvent(event) {\n        switch (event.type) {\n            case 'click':\n                this.handleClick(event);\n                break;\n            default:\n                break;\n        }\n    }\n    /**\n     * Handle a DOM click event.\n     */\n    handleClick(event) {\n        // Clicking a label focuses the corresponding control\n        // that is linked with `for` attribute, so let it be.\n        if (event.target instanceof HTMLLabelElement) {\n            const forId = event.target.getAttribute('for');\n            if (forId && this.node.querySelector(`#${forId}`)) {\n                return;\n            }\n        }\n        // If this click already focused a control, let it be.\n        if (this.node.contains(document.activeElement)) {\n            return;\n        }\n        // Otherwise, activate the parent widget, which may take focus if desired.\n        if (this.parent) {\n            this.parent.activate();\n        }\n    }\n    /**\n     * Handle `after-attach` messages for the widget.\n     */\n    onAfterAttach(msg) {\n        this.node.addEventListener('click', this);\n    }\n    /**\n     * Handle `before-detach` messages for the widget.\n     */\n    onBeforeDetach(msg) {\n        this.node.removeEventListener('click', this);\n    }\n}\n/**\n * The namespace for Toolbar class statics.\n */\n(function (Toolbar) {\n    /**\n     * Create an interrupt toolbar item.\n     */\n    function createInterruptButton(sessionContext, translator) {\n        translator = translator || _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_0__.nullTranslator;\n        const trans = translator.load('jupyterlab');\n        return new ToolbarButton({\n            icon: _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1__.stopIcon,\n            onClick: () => {\n                var _a, _b;\n                void ((_b = (_a = sessionContext.session) === null || _a === void 0 ? void 0 : _a.kernel) === null || _b === void 0 ? void 0 : _b.interrupt());\n            },\n            tooltip: trans.__('Interrupt the kernel')\n        });\n    }\n    Toolbar.createInterruptButton = createInterruptButton;\n    /**\n     * Create a restart toolbar item.\n     */\n    function createRestartButton(sessionContext, dialogs, translator) {\n        translator = translator || _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_0__.nullTranslator;\n        const trans = translator.load('jupyterlab');\n        return new ToolbarButton({\n            icon: _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1__.refreshIcon,\n            onClick: () => {\n                void (dialogs !== null && dialogs !== void 0 ? dialogs : _sessioncontext__WEBPACK_IMPORTED_MODULE_8__.sessionContextDialogs).restart(sessionContext, translator);\n            },\n            tooltip: trans.__('Restart the kernel')\n        });\n    }\n    Toolbar.createRestartButton = createRestartButton;\n    /**\n     * Create a toolbar spacer item.\n     *\n     * #### Notes\n     * It is a flex spacer that separates the left toolbar items\n     * from the right toolbar items.\n     */\n    function createSpacerItem() {\n        return new Private.Spacer();\n    }\n    Toolbar.createSpacerItem = createSpacerItem;\n    /**\n     * Create a kernel name indicator item.\n     *\n     * #### Notes\n     * It will display the `'display_name`' of the session context. It can\n     * handle a change in context or kernel.\n     */\n    function createKernelNameItem(sessionContext, dialogs, translator) {\n        const el = _vdom__WEBPACK_IMPORTED_MODULE_9__.ReactWidget.create(react__WEBPACK_IMPORTED_MODULE_7__.createElement(Private.KernelNameComponent, { sessionContext: sessionContext, dialogs: dialogs !== null && dialogs !== void 0 ? dialogs : _sessioncontext__WEBPACK_IMPORTED_MODULE_8__.sessionContextDialogs, translator: translator }));\n        el.addClass('jp-KernelName');\n        return el;\n    }\n    Toolbar.createKernelNameItem = createKernelNameItem;\n    /**\n     * Create a kernel status indicator item.\n     *\n     * #### Notes\n     * It will show a busy status if the kernel status is busy.\n     * It will show the current status in the node title.\n     * It can handle a change to the context or the kernel.\n     */\n    function createKernelStatusItem(sessionContext, translator) {\n        return new Private.KernelStatus(sessionContext, translator);\n    }\n    Toolbar.createKernelStatusItem = createKernelStatusItem;\n})(Toolbar || (Toolbar = {}));\n/**\n * React component for a toolbar button.\n *\n * @param props - The props for ToolbarButtonComponent.\n */\nfunction ToolbarButtonComponent(props) {\n    var _a, _b;\n    // In some browsers, a button click event moves the focus from the main\n    // content to the button (see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus).\n    // We avoid a click event by calling preventDefault in mousedown, and\n    // we bind the button action to `mousedown`.\n    const handleMouseDown = (event) => {\n        var _a;\n        // Fire action only when left button is pressed.\n        if (event.button === 0) {\n            event.preventDefault();\n            (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props);\n        }\n    };\n    const handleKeyDown = (event) => {\n        var _a;\n        const { key } = event;\n        if (key === 'Enter' || key === ' ') {\n            (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props);\n        }\n    };\n    const handleClick = (event) => {\n        var _a;\n        if (event.button === 0) {\n            (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props);\n        }\n    };\n    return (react__WEBPACK_IMPORTED_MODULE_7__.createElement(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1__.Button, { className: props.className\n            ? props.className + ' jp-ToolbarButtonComponent'\n            : 'jp-ToolbarButtonComponent', disabled: props.enabled === false, onClick: ((_a = props.actualOnClick) !== null && _a !== void 0 ? _a : false) ? handleClick : undefined, onMouseDown: !((_b = props.actualOnClick) !== null && _b !== void 0 ? _b : false) ? handleMouseDown : undefined, onKeyDown: handleKeyDown, title: props.tooltip || props.iconLabel, minimal: true },\n        (props.icon || props.iconClass) && (react__WEBPACK_IMPORTED_MODULE_7__.createElement(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1__.LabIcon.resolveReact, { icon: props.icon, iconClass: \n            // add some extra classes for proper support of icons-as-css-background\n            (0,_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1__.classes)(props.iconClass, 'jp-Icon'), className: \"jp-ToolbarButtonComponent-icon\", tag: \"span\", stylesheet: \"toolbarButton\" })),\n        props.label && (react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"span\", { className: \"jp-ToolbarButtonComponent-label\" }, props.label))));\n}\n/**\n * Adds the toolbar button class to the toolbar widget.\n * @param w Toolbar button widget.\n */\nfunction addToolbarButtonClass(w) {\n    w.addClass('jp-ToolbarButton');\n    return w;\n}\n/**\n * Phosphor Widget version of static ToolbarButtonComponent.\n */\nclass ToolbarButton extends _vdom__WEBPACK_IMPORTED_MODULE_9__.ReactWidget {\n    /**\n     * Creates a toolbar button\n     * @param props props for underlying `ToolbarButton` component\n     */\n    constructor(props = {}) {\n        super();\n        this.props = props;\n        addToolbarButtonClass(this);\n    }\n    render() {\n        return react__WEBPACK_IMPORTED_MODULE_7__.createElement(ToolbarButtonComponent, Object.assign({}, this.props));\n    }\n}\n/**\n * React component for a toolbar button that wraps a command.\n *\n * This wraps the ToolbarButtonComponent and watches the command registry\n * for changes to the command.\n */\nfunction CommandToolbarButtonComponent(props) {\n    return (react__WEBPACK_IMPORTED_MODULE_7__.createElement(_vdom__WEBPACK_IMPORTED_MODULE_9__.UseSignal, { signal: props.commands.commandChanged, shouldUpdate: (sender, args) => (args.id === props.id && args.type === 'changed') ||\n            args.type === 'many-changed' }, () => react__WEBPACK_IMPORTED_MODULE_7__.createElement(ToolbarButtonComponent, Object.assign({}, Private.propsFromCommand(props)))));\n}\n/*\n * Adds the command toolbar button class to the command toolbar widget.\n * @param w Command toolbar button widget.\n */\nfunction addCommandToolbarButtonClass(w) {\n    w.addClass('jp-CommandToolbarButton');\n    return w;\n}\n/**\n * Phosphor Widget version of CommandToolbarButtonComponent.\n */\nclass CommandToolbarButton extends _vdom__WEBPACK_IMPORTED_MODULE_9__.ReactWidget {\n    /**\n     * Creates a command toolbar button\n     * @param props props for underlying `CommandToolbarButtonComponent` component\n     */\n    constructor(props) {\n        super();\n        this.props = props;\n        addCommandToolbarButtonClass(this);\n    }\n    render() {\n        return react__WEBPACK_IMPORTED_MODULE_7__.createElement(CommandToolbarButtonComponent, Object.assign({}, this.props));\n    }\n}\n/**\n * A namespace for private data.\n */\nvar Private;\n(function (Private) {\n    function propsFromCommand(options) {\n        const { commands, id, args } = options;\n        const iconClass = commands.iconClass(id, args);\n        const iconLabel = commands.iconLabel(id, args);\n        // DEPRECATED: remove _icon when lumino 2.0 is adopted\n        // if icon is aliasing iconClass, don't use it\n        const _icon = commands.icon(id, args);\n        const icon = _icon === iconClass ? undefined : _icon;\n        const label = commands.label(id, args);\n        let className = commands.className(id, args);\n        // Add the boolean state classes.\n        if (commands.isToggled(id, args)) {\n            className += ' lm-mod-toggled';\n        }\n        if (!commands.isVisible(id, args)) {\n            className += ' lm-mod-hidden';\n        }\n        let tooltip = commands.caption(id, args) || label || iconLabel;\n        // Shows hot keys in tooltips\n        const binding = commands.keyBindings.find(b => b.command === id);\n        if (binding) {\n            const ks = _lumino_commands__WEBPACK_IMPORTED_MODULE_3__.CommandRegistry.formatKeystroke(binding.keys.join(' '));\n            tooltip = `${tooltip} (${ks})`;\n        }\n        const onClick = () => {\n            void commands.execute(id, args);\n        };\n        const enabled = commands.isEnabled(id, args);\n        return { className, icon, iconClass, tooltip, onClick, enabled, label };\n    }\n    Private.propsFromCommand = propsFromCommand;\n    /**\n     * An attached property for the name of a toolbar item.\n     */\n    Private.nameProperty = new _lumino_properties__WEBPACK_IMPORTED_MODULE_5__.AttachedProperty({\n        name: 'name',\n        create: () => ''\n    });\n    /**\n     * A no-op function.\n     */\n    function noOp() {\n        /* no-op */\n    }\n    Private.noOp = noOp;\n    /**\n     * A spacer widget.\n     */\n    class Spacer extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__.Widget {\n        /**\n         * Construct a new spacer widget.\n         */\n        constructor() {\n            super();\n            this.addClass(TOOLBAR_SPACER_CLASS);\n        }\n    }\n    Private.Spacer = Spacer;\n    /**\n     * React component for a kernel name button.\n     *\n     * This wraps the ToolbarButtonComponent and watches the kernel\n     * session for changes.\n     */\n    function KernelNameComponent(props) {\n        const translator = props.translator || _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_0__.nullTranslator;\n        const trans = translator.load('jupyterlab');\n        const callback = () => {\n            void props.dialogs.selectKernel(props.sessionContext, translator);\n        };\n        return (react__WEBPACK_IMPORTED_MODULE_7__.createElement(_vdom__WEBPACK_IMPORTED_MODULE_9__.UseSignal, { signal: props.sessionContext.kernelChanged, initialSender: props.sessionContext }, sessionContext => (react__WEBPACK_IMPORTED_MODULE_7__.createElement(ToolbarButtonComponent, { className: TOOLBAR_KERNEL_NAME_CLASS, onClick: callback, tooltip: trans.__('Switch kernel'), label: sessionContext === null || sessionContext === void 0 ? void 0 : sessionContext.kernelDisplayName }))));\n    }\n    Private.KernelNameComponent = KernelNameComponent;\n    /**\n     * A toolbar item that displays kernel status.\n     */\n    class KernelStatus extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__.Widget {\n        /**\n         * Construct a new kernel status widget.\n         */\n        constructor(sessionContext, translator) {\n            super();\n            this.translator = translator || _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_0__.nullTranslator;\n            this._trans = this.translator.load('jupyterlab');\n            this.addClass(TOOLBAR_KERNEL_STATUS_CLASS);\n            // TODO-FIXME: this mapping is duplicated in statusbar/kernelStatus.tsx\n            this._statusNames = {\n                unknown: this._trans.__('Unknown'),\n                starting: this._trans.__('Starting'),\n                idle: this._trans.__('Idle'),\n                busy: this._trans.__('Busy'),\n                terminating: this._trans.__('Terminating'),\n                restarting: this._trans.__('Restarting'),\n                autorestarting: this._trans.__('Autorestarting'),\n                dead: this._trans.__('Dead'),\n                connected: this._trans.__('Connected'),\n                connecting: this._trans.__('Connecting'),\n                disconnected: this._trans.__('Disconnected'),\n                initializing: this._trans.__('Initializing'),\n                '': ''\n            };\n            this._onStatusChanged(sessionContext);\n            sessionContext.statusChanged.connect(this._onStatusChanged, this);\n            sessionContext.connectionStatusChanged.connect(this._onStatusChanged, this);\n        }\n        /**\n         * Handle a status on a kernel.\n         */\n        _onStatusChanged(sessionContext) {\n            if (this.isDisposed) {\n                return;\n            }\n            const status = sessionContext.kernelDisplayStatus;\n            const circleIconProps = {\n                container: this.node,\n                title: this._trans.__('Kernel %1', this._statusNames[status] || status),\n                stylesheet: 'toolbarButton',\n                alignSelf: 'normal',\n                height: '24px'\n            };\n            // set the icon\n            _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1__.LabIcon.remove(this.node);\n            if (status === 'busy' ||\n                status === 'starting' ||\n                status === 'terminating' ||\n                status === 'restarting' ||\n                status === 'initializing') {\n                _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1__.circleIcon.element(circleIconProps);\n            }\n            else if (status === 'connecting' ||\n                status === 'disconnected' ||\n                status === 'unknown') {\n                _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1__.offlineBoltIcon.element(circleIconProps);\n            }\n            else {\n                _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1__.circleEmptyIcon.element(circleIconProps);\n            }\n        }\n    }\n    Private.KernelStatus = KernelStatus;\n})(Private || (Private = {}));\n//# sourceMappingURL=toolbar.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/toolbar.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/vdom.js":
/*!********************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/vdom.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ReactWidget\": () => (/* binding */ ReactWidget),\n/* harmony export */   \"VDomRenderer\": () => (/* binding */ VDomRenderer),\n/* harmony export */   \"UseSignal\": () => (/* binding */ UseSignal),\n/* harmony export */   \"VDomModel\": () => (/* binding */ VDomModel)\n/* harmony export */ });\n/* harmony import */ var _lumino_messaging__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/messaging */ \"webpack/sharing/consume/default/@lumino/messaging/@lumino/messaging\");\n/* harmony import */ var _lumino_messaging__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_messaging__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/signaling */ \"webpack/sharing/consume/default/@lumino/signaling/@lumino/signaling\");\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_signaling__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-dom */ \"webpack/sharing/consume/default/react-dom/react-dom\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_4__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n\n\n/**\n * An abstract class for a Phosphor widget which renders a React component.\n */\nclass ReactWidget extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__.Widget {\n    /**\n     * Creates a new `ReactWidget` that renders a constant element.\n     * @param element React element to render.\n     */\n    static create(element) {\n        return new (class extends ReactWidget {\n            render() {\n                return element;\n            }\n        })();\n    }\n    /**\n     * Called to update the state of the widget.\n     *\n     * The default implementation of this method triggers\n     * VDOM based rendering by calling the `renderDOM` method.\n     */\n    onUpdateRequest(msg) {\n        this.renderPromise = this.renderDOM();\n    }\n    /**\n     * Called after the widget is attached to the DOM\n     */\n    onAfterAttach(msg) {\n        // Make *sure* the widget is rendered.\n        _lumino_messaging__WEBPACK_IMPORTED_MODULE_0__.MessageLoop.sendMessage(this, _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__.Widget.Msg.UpdateRequest);\n    }\n    /**\n     * Called before the widget is detached from the DOM.\n     */\n    onBeforeDetach(msg) {\n        // Unmount the component so it can tear down.\n        react_dom__WEBPACK_IMPORTED_MODULE_4__.unmountComponentAtNode(this.node);\n    }\n    /**\n     * Render the React nodes to the DOM.\n     *\n     * @returns a promise that resolves when the rendering is done.\n     */\n    renderDOM() {\n        return new Promise(resolve => {\n            const vnode = this.render();\n            // Split up the array/element cases so type inference chooses the right\n            // signature.\n            if (Array.isArray(vnode)) {\n                react_dom__WEBPACK_IMPORTED_MODULE_4__.render(vnode, this.node, resolve);\n            }\n            else if (vnode) {\n                react_dom__WEBPACK_IMPORTED_MODULE_4__.render(vnode, this.node, resolve);\n            }\n        });\n    }\n}\n/**\n * An abstract ReactWidget with a model.\n */\nclass VDomRenderer extends ReactWidget {\n    /**\n     * Create a new VDomRenderer\n     */\n    constructor(model) {\n        super();\n        this._modelChanged = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__.Signal(this);\n        this.model = (model !== null && model !== void 0 ? model : null);\n    }\n    /**\n     * A signal emitted when the model changes.\n     */\n    get modelChanged() {\n        return this._modelChanged;\n    }\n    /**\n     * Set the model and fire changed signals.\n     */\n    set model(newValue) {\n        if (this._model === newValue) {\n            return;\n        }\n        if (this._model) {\n            this._model.stateChanged.disconnect(this.update, this);\n        }\n        this._model = newValue;\n        if (newValue) {\n            newValue.stateChanged.connect(this.update, this);\n        }\n        this.update();\n        this._modelChanged.emit(void 0);\n    }\n    /**\n     * Get the current model.\n     */\n    get model() {\n        return this._model;\n    }\n    /**\n     * Dispose this widget.\n     */\n    dispose() {\n        if (this.isDisposed) {\n            return;\n        }\n        this._model = null;\n        super.dispose();\n    }\n}\n/**\n * UseSignal provides a way to hook up a Phosphor signal to a React element,\n * so that the element is re-rendered every time the signal fires.\n *\n * It is implemented through the \"render props\" technique, using the `children`\n * prop as a function to render, so that it can be used either as a prop or as a child\n * of this element\n * https://reactjs.org/docs/render-props.html\n *\n *\n * Example as child:\n *\n * ```\n * function LiveButton(isActiveSignal: ISignal<any, boolean>) {\n *  return (\n *    <UseSignal signal={isActiveSignal} initialArgs={True}>\n *     {(_, isActive) => <Button isActive={isActive}>}\n *    </UseSignal>\n *  )\n * }\n * ```\n *\n * Example as prop:\n *\n * ```\n * function LiveButton(isActiveSignal: ISignal<any, boolean>) {\n *  return (\n *    <UseSignal\n *      signal={isActiveSignal}\n *      initialArgs={True}\n *      children={(_, isActive) => <Button isActive={isActive}>}\n *    />\n *  )\n * }\n * ```\n */\nclass UseSignal extends react__WEBPACK_IMPORTED_MODULE_3__.Component {\n    constructor(props) {\n        super(props);\n        this.slot = (sender, args) => {\n            // skip setting new state if we have a shouldUpdate function and it returns false\n            if (this.props.shouldUpdate && !this.props.shouldUpdate(sender, args)) {\n                return;\n            }\n            this.setState({ value: [sender, args] });\n        };\n        this.state = { value: [this.props.initialSender, this.props.initialArgs] };\n    }\n    componentDidMount() {\n        this.props.signal.connect(this.slot);\n    }\n    componentWillUnmount() {\n        this.props.signal.disconnect(this.slot);\n    }\n    render() {\n        return this.props.children(...this.state.value);\n    }\n}\n/**\n * Concrete implementation of VDomRenderer model.\n */\nclass VDomModel {\n    constructor() {\n        /**\n         * A signal emitted when any model state changes.\n         */\n        this.stateChanged = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__.Signal(this);\n        this._isDisposed = false;\n    }\n    /**\n     * Test whether the model is disposed.\n     */\n    get isDisposed() {\n        return this._isDisposed;\n    }\n    /**\n     * Dispose the model.\n     */\n    dispose() {\n        if (this.isDisposed) {\n            return;\n        }\n        this._isDisposed = true;\n        _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__.Signal.clearData(this);\n    }\n}\n//# sourceMappingURL=vdom.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/vdom.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/widgettracker.js":
/*!*****************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/widgettracker.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WidgetTracker\": () => (/* binding */ WidgetTracker)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/statedb */ \"webpack/sharing/consume/default/@jupyterlab/statedb/@jupyterlab/statedb\");\n/* harmony import */ var _jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/signaling */ \"webpack/sharing/consume/default/@lumino/signaling/@lumino/signaling\");\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_signaling__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_2__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n/**\n * A class that keeps track of widget instances on an Application shell.\n *\n * @typeparam T - The type of widget being tracked. Defaults to `Widget`.\n *\n * #### Notes\n * The API surface area of this concrete implementation is substantially larger\n * than the widget tracker interface it implements. The interface is intended\n * for export by JupyterLab plugins that create widgets and have clients who may\n * wish to keep track of newly created widgets. This class, however, can be used\n * internally by plugins to restore state as well.\n */\nclass WidgetTracker {\n    /**\n     * Create a new widget tracker.\n     *\n     * @param options - The instantiation options for a widget tracker.\n     */\n    constructor(options) {\n        this._currentChanged = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__.Signal(this);\n        this._isDisposed = false;\n        this._widgetAdded = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__.Signal(this);\n        this._widgetUpdated = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__.Signal(this);\n        const focus = (this._focusTracker = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_2__.FocusTracker());\n        const pool = (this._pool = new _jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_0__.RestorablePool(options));\n        this.namespace = options.namespace;\n        focus.currentChanged.connect((_, current) => {\n            if (current.newValue !== this.currentWidget) {\n                pool.current = current.newValue;\n            }\n        }, this);\n        pool.added.connect((_, widget) => {\n            this._widgetAdded.emit(widget);\n        }, this);\n        pool.currentChanged.connect((_, widget) => {\n            // If the pool's current reference is `null` but the focus tracker has a\n            // current widget, update the pool to match the focus tracker.\n            if (widget === null && focus.currentWidget) {\n                pool.current = focus.currentWidget;\n                return;\n            }\n            this.onCurrentChanged(widget);\n            this._currentChanged.emit(widget);\n        }, this);\n        pool.updated.connect((_, widget) => {\n            this._widgetUpdated.emit(widget);\n        }, this);\n    }\n    /**\n     * A signal emitted when the current widget changes.\n     */\n    get currentChanged() {\n        return this._currentChanged;\n    }\n    /**\n     * The current widget is the most recently focused or added widget.\n     *\n     * #### Notes\n     * It is the most recently focused widget, or the most recently added\n     * widget if no widget has taken focus.\n     */\n    get currentWidget() {\n        return this._pool.current || null;\n    }\n    /**\n     * A promise resolved when the tracker has been restored.\n     */\n    get restored() {\n        return this._pool.restored;\n    }\n    /**\n     * The number of widgets held by the tracker.\n     */\n    get size() {\n        return this._pool.size;\n    }\n    /**\n     * A signal emitted when a widget is added.\n     *\n     * #### Notes\n     * This signal will only fire when a widget is added to the tracker. It will\n     * not fire if a widget is injected into the tracker.\n     */\n    get widgetAdded() {\n        return this._widgetAdded;\n    }\n    /**\n     * A signal emitted when a widget is updated.\n     */\n    get widgetUpdated() {\n        return this._widgetUpdated;\n    }\n    /**\n     * Add a new widget to the tracker.\n     *\n     * @param widget - The widget being added.\n     *\n     * #### Notes\n     * The widget passed into the tracker is added synchronously; its existence in\n     * the tracker can be checked with the `has()` method. The promise this method\n     * returns resolves after the widget has been added and saved to an underlying\n     * restoration connector, if one is available.\n     *\n     * The newly added widget becomes the current widget unless the focus tracker\n     * already had a focused widget.\n     */\n    async add(widget) {\n        this._focusTracker.add(widget);\n        await this._pool.add(widget);\n        if (!this._focusTracker.activeWidget) {\n            this._pool.current = widget;\n        }\n    }\n    /**\n     * Test whether the tracker is disposed.\n     */\n    get isDisposed() {\n        return this._isDisposed;\n    }\n    /**\n     * Dispose of the resources held by the tracker.\n     */\n    dispose() {\n        if (this.isDisposed) {\n            return;\n        }\n        this._isDisposed = true;\n        this._pool.dispose();\n        this._focusTracker.dispose();\n        _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__.Signal.clearData(this);\n    }\n    /**\n     * Find the first widget in the tracker that satisfies a filter function.\n     *\n     * @param - fn The filter function to call on each widget.\n     *\n     * #### Notes\n     * If no widget is found, the value returned is `undefined`.\n     */\n    find(fn) {\n        return this._pool.find(fn);\n    }\n    /**\n     * Iterate through each widget in the tracker.\n     *\n     * @param fn - The function to call on each widget.\n     */\n    forEach(fn) {\n        return this._pool.forEach(fn);\n    }\n    /**\n     * Filter the widgets in the tracker based on a predicate.\n     *\n     * @param fn - The function by which to filter.\n     */\n    filter(fn) {\n        return this._pool.filter(fn);\n    }\n    /**\n     * Inject a foreign widget into the widget tracker.\n     *\n     * @param widget - The widget to inject into the tracker.\n     *\n     * #### Notes\n     * Injected widgets will not have their state saved by the tracker.\n     *\n     * The primary use case for widget injection is for a plugin that offers a\n     * sub-class of an extant plugin to have its instances share the same commands\n     * as the parent plugin (since most relevant commands will use the\n     * `currentWidget` of the parent plugin's widget tracker). In this situation,\n     * the sub-class plugin may well have its own widget tracker for layout and\n     * state restoration in addition to injecting its widgets into the parent\n     * plugin's widget tracker.\n     */\n    inject(widget) {\n        return this._pool.inject(widget);\n    }\n    /**\n     * Check if this tracker has the specified widget.\n     *\n     * @param widget - The widget whose existence is being checked.\n     */\n    has(widget) {\n        return this._pool.has(widget);\n    }\n    /**\n     * Restore the widgets in this tracker's namespace.\n     *\n     * @param options - The configuration options that describe restoration.\n     *\n     * @returns A promise that resolves when restoration has completed.\n     *\n     * #### Notes\n     * This function should not typically be invoked by client code.\n     * Its primary use case is to be invoked by a restorer.\n     */\n    async restore(options) {\n        return this._pool.restore(options);\n    }\n    /**\n     * Save the restore data for a given widget.\n     *\n     * @param widget - The widget being saved.\n     */\n    async save(widget) {\n        return this._pool.save(widget);\n    }\n    /**\n     * Handle the current change event.\n     *\n     * #### Notes\n     * The default implementation is a no-op.\n     */\n    onCurrentChanged(value) {\n        /* no-op */\n    }\n}\n//# sourceMappingURL=widgettracker.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/widgettracker.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils/lib/windowresolver.js":
/*!******************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils/lib/windowresolver.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"IWindowResolver\": () => (/* binding */ IWindowResolver),\n/* harmony export */   \"WindowResolver\": () => (/* binding */ WindowResolver)\n/* harmony export */ });\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n/* tslint:disable */\n/**\n * The default window resolver token.\n */\nconst IWindowResolver = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.Token('@jupyterlab/apputils:IWindowResolver');\n/**\n * A concrete implementation of a window name resolver.\n */\nclass WindowResolver {\n    /**\n     * The resolved window name.\n     *\n     * #### Notes\n     * If the `resolve` promise has not resolved, the behavior is undefined.\n     */\n    get name() {\n        return this._name;\n    }\n    /**\n     * Resolve a window name to use as a handle among shared resources.\n     *\n     * @param candidate - The potential window name being resolved.\n     *\n     * #### Notes\n     * Typically, the name candidate should be a JupyterLab workspace name or\n     * an empty string if there is no workspace.\n     *\n     * If the returned promise rejects, a window name cannot be resolved without\n     * user intervention, which typically means navigation to a new URL.\n     */\n    resolve(candidate) {\n        return Private.resolve(candidate).then(name => {\n            this._name = name;\n        });\n    }\n}\n/*\n * A namespace for private module data.\n */\nvar Private;\n(function (Private) {\n    /**\n     * The internal prefix for private local storage keys.\n     */\n    const PREFIX = '@jupyterlab/statedb:StateDB';\n    /**\n     * The local storage beacon key.\n     */\n    const BEACON = `${PREFIX}:beacon`;\n    /**\n     * The timeout (in ms) to wait for beacon responders.\n     *\n     * #### Notes\n     * This value is a whole number between 200 and 500 in order to prevent\n     * perfect timeout collisions between multiple simultaneously opening windows\n     * that have the same URL. This is an edge case because multiple windows\n     * should not ordinarily share the same URL, but it can be contrived.\n     */\n    const TIMEOUT = Math.floor(200 + Math.random() * 300);\n    /**\n     * The local storage window key.\n     */\n    const WINDOW = `${PREFIX}:window`;\n    /**\n     * Current beacon request\n     *\n     * #### Notes\n     * We keep track of the current request so that we can ignore our own beacon\n     * requests. This is to work around a bug in Safari, where Safari sometimes\n     * triggers local storage events for changes made by the current tab. See\n     * https://github.com/jupyterlab/jupyterlab/issues/6921#issuecomment-540817283\n     * for more details.\n     */\n    let currentBeaconRequest = null;\n    /**\n     * A potential preferred default window name.\n     */\n    let candidate = null;\n    /**\n     * The window name promise.\n     */\n    const delegate = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.PromiseDelegate();\n    /**\n     * The known window names.\n     */\n    const known = {};\n    /**\n     * The window name.\n     */\n    let name = null;\n    /**\n     * Whether the name resolution has completed.\n     */\n    let resolved = false;\n    /**\n     * Start the storage event handler.\n     */\n    function initialize() {\n        // Listen to all storage events for beacons and window names.\n        window.addEventListener('storage', (event) => {\n            const { key, newValue } = event;\n            // All the keys we care about have values.\n            if (newValue === null) {\n                return;\n            }\n            // If the beacon was fired, respond with a ping.\n            if (key === BEACON &&\n                newValue !== currentBeaconRequest &&\n                candidate !== null) {\n                ping(resolved ? name : candidate);\n                return;\n            }\n            // If the window name is resolved, bail.\n            if (resolved || key !== WINDOW) {\n                return;\n            }\n            const reported = newValue.replace(/\\-\\d+$/, '');\n            // Store the reported window name.\n            known[reported] = null;\n            // If a reported window name and candidate collide, reject the candidate.\n            if (!candidate || candidate in known) {\n                reject();\n            }\n        });\n    }\n    /**\n     * Ping peers with payload.\n     */\n    function ping(payload) {\n        if (payload === null) {\n            return;\n        }\n        const { localStorage } = window;\n        localStorage.setItem(WINDOW, `${payload}-${new Date().getTime()}`);\n    }\n    /**\n     * Reject the candidate.\n     */\n    function reject() {\n        resolved = true;\n        currentBeaconRequest = null;\n        delegate.reject(`Window name candidate \"${candidate}\" already exists`);\n    }\n    /**\n     * Returns a promise that resolves with the window name used for restoration.\n     */\n    function resolve(potential) {\n        if (resolved) {\n            return delegate.promise;\n        }\n        // Set the local candidate.\n        candidate = potential;\n        if (candidate in known) {\n            reject();\n            return delegate.promise;\n        }\n        const { localStorage, setTimeout } = window;\n        // Wait until other windows have reported before claiming the candidate.\n        setTimeout(() => {\n            if (resolved) {\n                return;\n            }\n            // If the window name has not already been resolved, check one last time\n            // to confirm it is not a duplicate before resolving.\n            if (!candidate || candidate in known) {\n                return reject();\n            }\n            resolved = true;\n            currentBeaconRequest = null;\n            delegate.resolve((name = candidate));\n            ping(name);\n        }, TIMEOUT);\n        // Fire the beacon to collect other windows' names.\n        currentBeaconRequest = `${Math.random()}-${new Date().getTime()}`;\n        localStorage.setItem(BEACON, currentBeaconRequest);\n        return delegate.promise;\n    }\n    Private.resolve = resolve;\n    // Initialize the storage listener at runtime.\n    (() => {\n        initialize();\n    })();\n})(Private || (Private = {}));\n//# sourceMappingURL=windowresolver.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils/lib/windowresolver.js?");

/***/ }),

/***/ "../node_modules/deepmerge/dist/cjs.js":
/*!*********************************************!*\
  !*** ../node_modules/deepmerge/dist/cjs.js ***!
  \*********************************************/
/***/ ((module) => {

"use strict";
eval("\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/deepmerge/dist/cjs.js?");

/***/ }),

/***/ "../node_modules/dom-serializer/lib/foreignNames.js":
/*!**********************************************************!*\
  !*** ../node_modules/dom-serializer/lib/foreignNames.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.attributeNames = exports.elementNames = void 0;\nexports.elementNames = new Map([\n    [\"altglyph\", \"altGlyph\"],\n    [\"altglyphdef\", \"altGlyphDef\"],\n    [\"altglyphitem\", \"altGlyphItem\"],\n    [\"animatecolor\", \"animateColor\"],\n    [\"animatemotion\", \"animateMotion\"],\n    [\"animatetransform\", \"animateTransform\"],\n    [\"clippath\", \"clipPath\"],\n    [\"feblend\", \"feBlend\"],\n    [\"fecolormatrix\", \"feColorMatrix\"],\n    [\"fecomponenttransfer\", \"feComponentTransfer\"],\n    [\"fecomposite\", \"feComposite\"],\n    [\"feconvolvematrix\", \"feConvolveMatrix\"],\n    [\"fediffuselighting\", \"feDiffuseLighting\"],\n    [\"fedisplacementmap\", \"feDisplacementMap\"],\n    [\"fedistantlight\", \"feDistantLight\"],\n    [\"fedropshadow\", \"feDropShadow\"],\n    [\"feflood\", \"feFlood\"],\n    [\"fefunca\", \"feFuncA\"],\n    [\"fefuncb\", \"feFuncB\"],\n    [\"fefuncg\", \"feFuncG\"],\n    [\"fefuncr\", \"feFuncR\"],\n    [\"fegaussianblur\", \"feGaussianBlur\"],\n    [\"feimage\", \"feImage\"],\n    [\"femerge\", \"feMerge\"],\n    [\"femergenode\", \"feMergeNode\"],\n    [\"femorphology\", \"feMorphology\"],\n    [\"feoffset\", \"feOffset\"],\n    [\"fepointlight\", \"fePointLight\"],\n    [\"fespecularlighting\", \"feSpecularLighting\"],\n    [\"fespotlight\", \"feSpotLight\"],\n    [\"fetile\", \"feTile\"],\n    [\"feturbulence\", \"feTurbulence\"],\n    [\"foreignobject\", \"foreignObject\"],\n    [\"glyphref\", \"glyphRef\"],\n    [\"lineargradient\", \"linearGradient\"],\n    [\"radialgradient\", \"radialGradient\"],\n    [\"textpath\", \"textPath\"],\n]);\nexports.attributeNames = new Map([\n    [\"definitionurl\", \"definitionURL\"],\n    [\"attributename\", \"attributeName\"],\n    [\"attributetype\", \"attributeType\"],\n    [\"basefrequency\", \"baseFrequency\"],\n    [\"baseprofile\", \"baseProfile\"],\n    [\"calcmode\", \"calcMode\"],\n    [\"clippathunits\", \"clipPathUnits\"],\n    [\"diffuseconstant\", \"diffuseConstant\"],\n    [\"edgemode\", \"edgeMode\"],\n    [\"filterunits\", \"filterUnits\"],\n    [\"glyphref\", \"glyphRef\"],\n    [\"gradienttransform\", \"gradientTransform\"],\n    [\"gradientunits\", \"gradientUnits\"],\n    [\"kernelmatrix\", \"kernelMatrix\"],\n    [\"kernelunitlength\", \"kernelUnitLength\"],\n    [\"keypoints\", \"keyPoints\"],\n    [\"keysplines\", \"keySplines\"],\n    [\"keytimes\", \"keyTimes\"],\n    [\"lengthadjust\", \"lengthAdjust\"],\n    [\"limitingconeangle\", \"limitingConeAngle\"],\n    [\"markerheight\", \"markerHeight\"],\n    [\"markerunits\", \"markerUnits\"],\n    [\"markerwidth\", \"markerWidth\"],\n    [\"maskcontentunits\", \"maskContentUnits\"],\n    [\"maskunits\", \"maskUnits\"],\n    [\"numoctaves\", \"numOctaves\"],\n    [\"pathlength\", \"pathLength\"],\n    [\"patterncontentunits\", \"patternContentUnits\"],\n    [\"patterntransform\", \"patternTransform\"],\n    [\"patternunits\", \"patternUnits\"],\n    [\"pointsatx\", \"pointsAtX\"],\n    [\"pointsaty\", \"pointsAtY\"],\n    [\"pointsatz\", \"pointsAtZ\"],\n    [\"preservealpha\", \"preserveAlpha\"],\n    [\"preserveaspectratio\", \"preserveAspectRatio\"],\n    [\"primitiveunits\", \"primitiveUnits\"],\n    [\"refx\", \"refX\"],\n    [\"refy\", \"refY\"],\n    [\"repeatcount\", \"repeatCount\"],\n    [\"repeatdur\", \"repeatDur\"],\n    [\"requiredextensions\", \"requiredExtensions\"],\n    [\"requiredfeatures\", \"requiredFeatures\"],\n    [\"specularconstant\", \"specularConstant\"],\n    [\"specularexponent\", \"specularExponent\"],\n    [\"spreadmethod\", \"spreadMethod\"],\n    [\"startoffset\", \"startOffset\"],\n    [\"stddeviation\", \"stdDeviation\"],\n    [\"stitchtiles\", \"stitchTiles\"],\n    [\"surfacescale\", \"surfaceScale\"],\n    [\"systemlanguage\", \"systemLanguage\"],\n    [\"tablevalues\", \"tableValues\"],\n    [\"targetx\", \"targetX\"],\n    [\"targety\", \"targetY\"],\n    [\"textlength\", \"textLength\"],\n    [\"viewbox\", \"viewBox\"],\n    [\"viewtarget\", \"viewTarget\"],\n    [\"xchannelselector\", \"xChannelSelector\"],\n    [\"ychannelselector\", \"yChannelSelector\"],\n    [\"zoomandpan\", \"zoomAndPan\"],\n]);\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/dom-serializer/lib/foreignNames.js?");

/***/ }),

/***/ "../node_modules/dom-serializer/lib/index.js":
/*!***************************************************!*\
  !*** ../node_modules/dom-serializer/lib/index.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*\n * Module dependencies\n */\nvar ElementType = __importStar(__webpack_require__(/*! domelementtype */ \"../node_modules/domelementtype/lib/index.js\"));\nvar entities_1 = __webpack_require__(/*! entities */ \"../node_modules/entities/lib/index.js\");\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nvar foreignNames_1 = __webpack_require__(/*! ./foreignNames */ \"../node_modules/dom-serializer/lib/foreignNames.js\");\nvar unencodedElements = new Set([\n    \"style\",\n    \"script\",\n    \"xmp\",\n    \"iframe\",\n    \"noembed\",\n    \"noframes\",\n    \"plaintext\",\n    \"noscript\",\n]);\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n    if (!attributes)\n        return;\n    return Object.keys(attributes)\n        .map(function (key) {\n        var _a, _b;\n        var value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n        if (opts.xmlMode === \"foreign\") {\n            /* Fix up mixed-case attribute names */\n            key = (_b = foreignNames_1.attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n        }\n        if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n            return key;\n        }\n        return key + \"=\\\"\" + (opts.decodeEntities !== false\n            ? entities_1.encodeXML(value)\n            : value.replace(/\"/g, \"&quot;\")) + \"\\\"\";\n    })\n        .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nvar singleTag = new Set([\n    \"area\",\n    \"base\",\n    \"basefont\",\n    \"br\",\n    \"col\",\n    \"command\",\n    \"embed\",\n    \"frame\",\n    \"hr\",\n    \"img\",\n    \"input\",\n    \"isindex\",\n    \"keygen\",\n    \"link\",\n    \"meta\",\n    \"param\",\n    \"source\",\n    \"track\",\n    \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nfunction render(node, options) {\n    if (options === void 0) { options = {}; }\n    var nodes = \"length\" in node ? node : [node];\n    var output = \"\";\n    for (var i = 0; i < nodes.length; i++) {\n        output += renderNode(nodes[i], options);\n    }\n    return output;\n}\nexports.default = render;\nfunction renderNode(node, options) {\n    switch (node.type) {\n        case ElementType.Root:\n            return render(node.children, options);\n        case ElementType.Directive:\n        case ElementType.Doctype:\n            return renderDirective(node);\n        case ElementType.Comment:\n            return renderComment(node);\n        case ElementType.CDATA:\n            return renderCdata(node);\n        case ElementType.Script:\n        case ElementType.Style:\n        case ElementType.Tag:\n            return renderTag(node, options);\n        case ElementType.Text:\n            return renderText(node, options);\n    }\n}\nvar foreignModeIntegrationPoints = new Set([\n    \"mi\",\n    \"mo\",\n    \"mn\",\n    \"ms\",\n    \"mtext\",\n    \"annotation-xml\",\n    \"foreignObject\",\n    \"desc\",\n    \"title\",\n]);\nvar foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n    var _a;\n    // Handle SVG / MathML in HTML\n    if (opts.xmlMode === \"foreign\") {\n        /* Fix up mixed-case element names */\n        elem.name = (_a = foreignNames_1.elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n        /* Exit foreign mode at integration points */\n        if (elem.parent &&\n            foreignModeIntegrationPoints.has(elem.parent.name)) {\n            opts = __assign(__assign({}, opts), { xmlMode: false });\n        }\n    }\n    if (!opts.xmlMode && foreignElements.has(elem.name)) {\n        opts = __assign(__assign({}, opts), { xmlMode: \"foreign\" });\n    }\n    var tag = \"<\" + elem.name;\n    var attribs = formatAttributes(elem.attribs, opts);\n    if (attribs) {\n        tag += \" \" + attribs;\n    }\n    if (elem.children.length === 0 &&\n        (opts.xmlMode\n            ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n                opts.selfClosingTags !== false\n            : // User explicitly asked for self-closing tags, even in HTML mode\n                opts.selfClosingTags && singleTag.has(elem.name))) {\n        if (!opts.xmlMode)\n            tag += \" \";\n        tag += \"/>\";\n    }\n    else {\n        tag += \">\";\n        if (elem.children.length > 0) {\n            tag += render(elem.children, opts);\n        }\n        if (opts.xmlMode || !singleTag.has(elem.name)) {\n            tag += \"</\" + elem.name + \">\";\n        }\n    }\n    return tag;\n}\nfunction renderDirective(elem) {\n    return \"<\" + elem.data + \">\";\n}\nfunction renderText(elem, opts) {\n    var data = elem.data || \"\";\n    // If entities weren't decoded, no need to encode them back\n    if (opts.decodeEntities !== false &&\n        !(!opts.xmlMode &&\n            elem.parent &&\n            unencodedElements.has(elem.parent.name))) {\n        data = entities_1.encodeXML(data);\n    }\n    return data;\n}\nfunction renderCdata(elem) {\n    return \"<![CDATA[\" + elem.children[0].data + \"]]>\";\n}\nfunction renderComment(elem) {\n    return \"<!--\" + elem.data + \"-->\";\n}\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/dom-serializer/lib/index.js?");

/***/ }),

/***/ "../node_modules/domelementtype/lib/index.js":
/*!***************************************************!*\
  !*** ../node_modules/domelementtype/lib/index.js ***!
  \***************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0;\n/** Types of elements found in htmlparser2's DOM */\nvar ElementType;\n(function (ElementType) {\n    /** Type for the root element of a document */\n    ElementType[\"Root\"] = \"root\";\n    /** Type for Text */\n    ElementType[\"Text\"] = \"text\";\n    /** Type for <? ... ?> */\n    ElementType[\"Directive\"] = \"directive\";\n    /** Type for <!-- ... --> */\n    ElementType[\"Comment\"] = \"comment\";\n    /** Type for <script> tags */\n    ElementType[\"Script\"] = \"script\";\n    /** Type for <style> tags */\n    ElementType[\"Style\"] = \"style\";\n    /** Type for Any tag */\n    ElementType[\"Tag\"] = \"tag\";\n    /** Type for <![CDATA[ ... ]]> */\n    ElementType[\"CDATA\"] = \"cdata\";\n    /** Type for <!doctype ...> */\n    ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType = exports.ElementType || (exports.ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nfunction isTag(elem) {\n    return (elem.type === ElementType.Tag ||\n        elem.type === ElementType.Script ||\n        elem.type === ElementType.Style);\n}\nexports.isTag = isTag;\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexports.Root = ElementType.Root;\n/** Type for Text */\nexports.Text = ElementType.Text;\n/** Type for <? ... ?> */\nexports.Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexports.Comment = ElementType.Comment;\n/** Type for <script> tags */\nexports.Script = ElementType.Script;\n/** Type for <style> tags */\nexports.Style = ElementType.Style;\n/** Type for Any tag */\nexports.Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexports.CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexports.Doctype = ElementType.Doctype;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/domelementtype/lib/index.js?");

/***/ }),

/***/ "../node_modules/domhandler/lib/index.js":
/*!***********************************************!*\
  !*** ../node_modules/domhandler/lib/index.js ***!
  \***********************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DomHandler = void 0;\nvar domelementtype_1 = __webpack_require__(/*! domelementtype */ \"../node_modules/domelementtype/lib/index.js\");\nvar node_1 = __webpack_require__(/*! ./node */ \"../node_modules/domhandler/lib/node.js\");\n__exportStar(__webpack_require__(/*! ./node */ \"../node_modules/domhandler/lib/node.js\"), exports);\nvar reWhitespace = /\\s+/g;\n// Default options\nvar defaultOpts = {\n    normalizeWhitespace: false,\n    withStartIndices: false,\n    withEndIndices: false,\n};\nvar DomHandler = /** @class */ (function () {\n    /**\n     * @param callback Called once parsing has completed.\n     * @param options Settings for the handler.\n     * @param elementCB Callback whenever a tag is closed.\n     */\n    function DomHandler(callback, options, elementCB) {\n        /** The elements of the DOM */\n        this.dom = [];\n        /** The root element for the DOM */\n        this.root = new node_1.Document(this.dom);\n        /** Indicated whether parsing has been completed. */\n        this.done = false;\n        /** Stack of open tags. */\n        this.tagStack = [this.root];\n        /** A data node that is still being written to. */\n        this.lastNode = null;\n        /** Reference to the parser instance. Used for location information. */\n        this.parser = null;\n        // Make it possible to skip arguments, for backwards-compatibility\n        if (typeof options === \"function\") {\n            elementCB = options;\n            options = defaultOpts;\n        }\n        if (typeof callback === \"object\") {\n            options = callback;\n            callback = undefined;\n        }\n        this.callback = callback !== null && callback !== void 0 ? callback : null;\n        this.options = options !== null && options !== void 0 ? options : defaultOpts;\n        this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n    }\n    DomHandler.prototype.onparserinit = function (parser) {\n        this.parser = parser;\n    };\n    // Resets the handler back to starting state\n    DomHandler.prototype.onreset = function () {\n        var _a;\n        this.dom = [];\n        this.root = new node_1.Document(this.dom);\n        this.done = false;\n        this.tagStack = [this.root];\n        this.lastNode = null;\n        this.parser = (_a = this.parser) !== null && _a !== void 0 ? _a : null;\n    };\n    // Signals the handler that parsing is done\n    DomHandler.prototype.onend = function () {\n        if (this.done)\n            return;\n        this.done = true;\n        this.parser = null;\n        this.handleCallback(null);\n    };\n    DomHandler.prototype.onerror = function (error) {\n        this.handleCallback(error);\n    };\n    DomHandler.prototype.onclosetag = function () {\n        this.lastNode = null;\n        var elem = this.tagStack.pop();\n        if (this.options.withEndIndices) {\n            elem.endIndex = this.parser.endIndex;\n        }\n        if (this.elementCB)\n            this.elementCB(elem);\n    };\n    DomHandler.prototype.onopentag = function (name, attribs) {\n        var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : undefined;\n        var element = new node_1.Element(name, attribs, undefined, type);\n        this.addNode(element);\n        this.tagStack.push(element);\n    };\n    DomHandler.prototype.ontext = function (data) {\n        var normalizeWhitespace = this.options.normalizeWhitespace;\n        var lastNode = this.lastNode;\n        if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) {\n            if (normalizeWhitespace) {\n                lastNode.data = (lastNode.data + data).replace(reWhitespace, \" \");\n            }\n            else {\n                lastNode.data += data;\n            }\n        }\n        else {\n            if (normalizeWhitespace) {\n                data = data.replace(reWhitespace, \" \");\n            }\n            var node = new node_1.Text(data);\n            this.addNode(node);\n            this.lastNode = node;\n        }\n    };\n    DomHandler.prototype.oncomment = function (data) {\n        if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) {\n            this.lastNode.data += data;\n            return;\n        }\n        var node = new node_1.Comment(data);\n        this.addNode(node);\n        this.lastNode = node;\n    };\n    DomHandler.prototype.oncommentend = function () {\n        this.lastNode = null;\n    };\n    DomHandler.prototype.oncdatastart = function () {\n        var text = new node_1.Text(\"\");\n        var node = new node_1.NodeWithChildren(domelementtype_1.ElementType.CDATA, [text]);\n        this.addNode(node);\n        text.parent = node;\n        this.lastNode = text;\n    };\n    DomHandler.prototype.oncdataend = function () {\n        this.lastNode = null;\n    };\n    DomHandler.prototype.onprocessinginstruction = function (name, data) {\n        var node = new node_1.ProcessingInstruction(name, data);\n        this.addNode(node);\n    };\n    DomHandler.prototype.handleCallback = function (error) {\n        if (typeof this.callback === \"function\") {\n            this.callback(error, this.dom);\n        }\n        else if (error) {\n            throw error;\n        }\n    };\n    DomHandler.prototype.addNode = function (node) {\n        var parent = this.tagStack[this.tagStack.length - 1];\n        var previousSibling = parent.children[parent.children.length - 1];\n        if (this.options.withStartIndices) {\n            node.startIndex = this.parser.startIndex;\n        }\n        if (this.options.withEndIndices) {\n            node.endIndex = this.parser.endIndex;\n        }\n        parent.children.push(node);\n        if (previousSibling) {\n            node.prev = previousSibling;\n            previousSibling.next = node;\n        }\n        node.parent = parent;\n        this.lastNode = null;\n    };\n    return DomHandler;\n}());\nexports.DomHandler = DomHandler;\nexports.default = DomHandler;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/domhandler/lib/index.js?");

/***/ }),

/***/ "../node_modules/domhandler/lib/node.js":
/*!**********************************************!*\
  !*** ../node_modules/domhandler/lib/node.js ***!
  \**********************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0;\nvar domelementtype_1 = __webpack_require__(/*! domelementtype */ \"../node_modules/domelementtype/lib/index.js\");\nvar nodeTypes = new Map([\n    [domelementtype_1.ElementType.Tag, 1],\n    [domelementtype_1.ElementType.Script, 1],\n    [domelementtype_1.ElementType.Style, 1],\n    [domelementtype_1.ElementType.Directive, 1],\n    [domelementtype_1.ElementType.Text, 3],\n    [domelementtype_1.ElementType.CDATA, 4],\n    [domelementtype_1.ElementType.Comment, 8],\n    [domelementtype_1.ElementType.Root, 9],\n]);\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nvar Node = /** @class */ (function () {\n    /**\n     *\n     * @param type The type of the node.\n     */\n    function Node(type) {\n        this.type = type;\n        /** Parent of the node */\n        this.parent = null;\n        /** Previous sibling */\n        this.prev = null;\n        /** Next sibling */\n        this.next = null;\n        /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n        this.startIndex = null;\n        /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n        this.endIndex = null;\n    }\n    Object.defineProperty(Node.prototype, \"nodeType\", {\n        // Read-only aliases\n        get: function () {\n            var _a;\n            return (_a = nodeTypes.get(this.type)) !== null && _a !== void 0 ? _a : 1;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Node.prototype, \"parentNode\", {\n        // Read-write aliases for properties\n        get: function () {\n            return this.parent;\n        },\n        set: function (parent) {\n            this.parent = parent;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Node.prototype, \"previousSibling\", {\n        get: function () {\n            return this.prev;\n        },\n        set: function (prev) {\n            this.prev = prev;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Node.prototype, \"nextSibling\", {\n        get: function () {\n            return this.next;\n        },\n        set: function (next) {\n            this.next = next;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Clone this node, and optionally its children.\n     *\n     * @param recursive Clone child nodes as well.\n     * @returns A clone of the node.\n     */\n    Node.prototype.cloneNode = function (recursive) {\n        if (recursive === void 0) { recursive = false; }\n        return cloneNode(this, recursive);\n    };\n    return Node;\n}());\nexports.Node = Node;\nvar DataNode = /** @class */ (function (_super) {\n    __extends(DataNode, _super);\n    /**\n     * @param type The type of the node\n     * @param data The content of the data node\n     */\n    function DataNode(type, data) {\n        var _this = _super.call(this, type) || this;\n        _this.data = data;\n        return _this;\n    }\n    Object.defineProperty(DataNode.prototype, \"nodeValue\", {\n        get: function () {\n            return this.data;\n        },\n        set: function (data) {\n            this.data = data;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return DataNode;\n}(Node));\nexports.DataNode = DataNode;\nvar Text = /** @class */ (function (_super) {\n    __extends(Text, _super);\n    function Text(data) {\n        return _super.call(this, domelementtype_1.ElementType.Text, data) || this;\n    }\n    return Text;\n}(DataNode));\nexports.Text = Text;\nvar Comment = /** @class */ (function (_super) {\n    __extends(Comment, _super);\n    function Comment(data) {\n        return _super.call(this, domelementtype_1.ElementType.Comment, data) || this;\n    }\n    return Comment;\n}(DataNode));\nexports.Comment = Comment;\nvar ProcessingInstruction = /** @class */ (function (_super) {\n    __extends(ProcessingInstruction, _super);\n    function ProcessingInstruction(name, data) {\n        var _this = _super.call(this, domelementtype_1.ElementType.Directive, data) || this;\n        _this.name = name;\n        return _this;\n    }\n    return ProcessingInstruction;\n}(DataNode));\nexports.ProcessingInstruction = ProcessingInstruction;\n/**\n * A `Node` that can have children.\n */\nvar NodeWithChildren = /** @class */ (function (_super) {\n    __extends(NodeWithChildren, _super);\n    /**\n     * @param type Type of the node.\n     * @param children Children of the node. Only certain node types can have children.\n     */\n    function NodeWithChildren(type, children) {\n        var _this = _super.call(this, type) || this;\n        _this.children = children;\n        return _this;\n    }\n    Object.defineProperty(NodeWithChildren.prototype, \"firstChild\", {\n        // Aliases\n        get: function () {\n            var _a;\n            return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NodeWithChildren.prototype, \"lastChild\", {\n        get: function () {\n            return this.children.length > 0\n                ? this.children[this.children.length - 1]\n                : null;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NodeWithChildren.prototype, \"childNodes\", {\n        get: function () {\n            return this.children;\n        },\n        set: function (children) {\n            this.children = children;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return NodeWithChildren;\n}(Node));\nexports.NodeWithChildren = NodeWithChildren;\nvar Document = /** @class */ (function (_super) {\n    __extends(Document, _super);\n    function Document(children) {\n        return _super.call(this, domelementtype_1.ElementType.Root, children) || this;\n    }\n    return Document;\n}(NodeWithChildren));\nexports.Document = Document;\nvar Element = /** @class */ (function (_super) {\n    __extends(Element, _super);\n    /**\n     * @param name Name of the tag, eg. `div`, `span`.\n     * @param attribs Object mapping attribute names to attribute values.\n     * @param children Children of the node.\n     */\n    function Element(name, attribs, children, type) {\n        if (children === void 0) { children = []; }\n        if (type === void 0) { type = name === \"script\"\n            ? domelementtype_1.ElementType.Script\n            : name === \"style\"\n                ? domelementtype_1.ElementType.Style\n                : domelementtype_1.ElementType.Tag; }\n        var _this = _super.call(this, type, children) || this;\n        _this.name = name;\n        _this.attribs = attribs;\n        return _this;\n    }\n    Object.defineProperty(Element.prototype, \"tagName\", {\n        // DOM Level 1 aliases\n        get: function () {\n            return this.name;\n        },\n        set: function (name) {\n            this.name = name;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Element.prototype, \"attributes\", {\n        get: function () {\n            var _this = this;\n            return Object.keys(this.attribs).map(function (name) {\n                var _a, _b;\n                return ({\n                    name: name,\n                    value: _this.attribs[name],\n                    namespace: (_a = _this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n                    prefix: (_b = _this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n                });\n            });\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return Element;\n}(NodeWithChildren));\nexports.Element = Element;\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nfunction isTag(node) {\n    return domelementtype_1.isTag(node);\n}\nexports.isTag = isTag;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nfunction isCDATA(node) {\n    return node.type === domelementtype_1.ElementType.CDATA;\n}\nexports.isCDATA = isCDATA;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nfunction isText(node) {\n    return node.type === domelementtype_1.ElementType.Text;\n}\nexports.isText = isText;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nfunction isComment(node) {\n    return node.type === domelementtype_1.ElementType.Comment;\n}\nexports.isComment = isComment;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDirective(node) {\n    return node.type === domelementtype_1.ElementType.Directive;\n}\nexports.isDirective = isDirective;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDocument(node) {\n    return node.type === domelementtype_1.ElementType.Root;\n}\nexports.isDocument = isDocument;\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `NodeWithChildren` (has children), `false` otherwise.\n */\nfunction hasChildren(node) {\n    return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\nexports.hasChildren = hasChildren;\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nfunction cloneNode(node, recursive) {\n    if (recursive === void 0) { recursive = false; }\n    var result;\n    if (isText(node)) {\n        result = new Text(node.data);\n    }\n    else if (isComment(node)) {\n        result = new Comment(node.data);\n    }\n    else if (isTag(node)) {\n        var children = recursive ? cloneChildren(node.children) : [];\n        var clone_1 = new Element(node.name, __assign({}, node.attribs), children);\n        children.forEach(function (child) { return (child.parent = clone_1); });\n        if (node[\"x-attribsNamespace\"]) {\n            clone_1[\"x-attribsNamespace\"] = __assign({}, node[\"x-attribsNamespace\"]);\n        }\n        if (node[\"x-attribsPrefix\"]) {\n            clone_1[\"x-attribsPrefix\"] = __assign({}, node[\"x-attribsPrefix\"]);\n        }\n        result = clone_1;\n    }\n    else if (isCDATA(node)) {\n        var children = recursive ? cloneChildren(node.children) : [];\n        var clone_2 = new NodeWithChildren(domelementtype_1.ElementType.CDATA, children);\n        children.forEach(function (child) { return (child.parent = clone_2); });\n        result = clone_2;\n    }\n    else if (isDocument(node)) {\n        var children = recursive ? cloneChildren(node.children) : [];\n        var clone_3 = new Document(children);\n        children.forEach(function (child) { return (child.parent = clone_3); });\n        if (node[\"x-mode\"]) {\n            clone_3[\"x-mode\"] = node[\"x-mode\"];\n        }\n        result = clone_3;\n    }\n    else if (isDirective(node)) {\n        var instruction = new ProcessingInstruction(node.name, node.data);\n        if (node[\"x-name\"] != null) {\n            instruction[\"x-name\"] = node[\"x-name\"];\n            instruction[\"x-publicId\"] = node[\"x-publicId\"];\n            instruction[\"x-systemId\"] = node[\"x-systemId\"];\n        }\n        result = instruction;\n    }\n    else {\n        throw new Error(\"Not implemented yet: \" + node.type);\n    }\n    result.startIndex = node.startIndex;\n    result.endIndex = node.endIndex;\n    return result;\n}\nexports.cloneNode = cloneNode;\nfunction cloneChildren(childs) {\n    var children = childs.map(function (child) { return cloneNode(child, true); });\n    for (var i = 1; i < children.length; i++) {\n        children[i].prev = children[i - 1];\n        children[i - 1].next = children[i];\n    }\n    return children;\n}\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/domhandler/lib/node.js?");

/***/ }),

/***/ "../node_modules/domutils/lib/helpers.js":
/*!***********************************************!*\
  !*** ../node_modules/domutils/lib/helpers.js ***!
  \***********************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.uniqueSort = exports.compareDocumentPosition = exports.removeSubsets = void 0;\nvar domhandler_1 = __webpack_require__(/*! domhandler */ \"../node_modules/domhandler/lib/index.js\");\n/**\n * Given an array of nodes, remove any member that is contained by another.\n *\n * @param nodes Nodes to filter.\n * @returns Remaining nodes that aren't subtrees of each other.\n */\nfunction removeSubsets(nodes) {\n    var idx = nodes.length;\n    /*\n     * Check if each node (or one of its ancestors) is already contained in the\n     * array.\n     */\n    while (--idx >= 0) {\n        var node = nodes[idx];\n        /*\n         * Remove the node if it is not unique.\n         * We are going through the array from the end, so we only\n         * have to check nodes that preceed the node under consideration in the array.\n         */\n        if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n            nodes.splice(idx, 1);\n            continue;\n        }\n        for (var ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n            if (nodes.includes(ancestor)) {\n                nodes.splice(idx, 1);\n                break;\n            }\n        }\n    }\n    return nodes;\n}\nexports.removeSubsets = removeSubsets;\n/**\n * Compare the position of one node against another node in any other document.\n * The return value is a bitmask with the following values:\n *\n * Document order:\n * > There is an ordering, document order, defined on all the nodes in the\n * > document corresponding to the order in which the first character of the\n * > XML representation of each node occurs in the XML representation of the\n * > document after expansion of general entities. Thus, the document element\n * > node will be the first node. Element nodes occur before their children.\n * > Thus, document order orders element nodes in order of the occurrence of\n * > their start-tag in the XML (after expansion of entities). The attribute\n * > nodes of an element occur after the element and before its children. The\n * > relative order of attribute nodes is implementation-dependent./\n *\n * Source:\n * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n *\n * @param nodeA The first node to use in the comparison\n * @param nodeB The second node to use in the comparison\n * @returns A bitmask describing the input nodes' relative position.\n *\n * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n * a description of these values.\n */\nfunction compareDocumentPosition(nodeA, nodeB) {\n    var aParents = [];\n    var bParents = [];\n    if (nodeA === nodeB) {\n        return 0;\n    }\n    var current = domhandler_1.hasChildren(nodeA) ? nodeA : nodeA.parent;\n    while (current) {\n        aParents.unshift(current);\n        current = current.parent;\n    }\n    current = domhandler_1.hasChildren(nodeB) ? nodeB : nodeB.parent;\n    while (current) {\n        bParents.unshift(current);\n        current = current.parent;\n    }\n    var maxIdx = Math.min(aParents.length, bParents.length);\n    var idx = 0;\n    while (idx < maxIdx && aParents[idx] === bParents[idx]) {\n        idx++;\n    }\n    if (idx === 0) {\n        return 1 /* DISCONNECTED */;\n    }\n    var sharedParent = aParents[idx - 1];\n    var siblings = sharedParent.children;\n    var aSibling = aParents[idx];\n    var bSibling = bParents[idx];\n    if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n        if (sharedParent === nodeB) {\n            return 4 /* FOLLOWING */ | 16 /* CONTAINED_BY */;\n        }\n        return 4 /* FOLLOWING */;\n    }\n    if (sharedParent === nodeA) {\n        return 2 /* PRECEDING */ | 8 /* CONTAINS */;\n    }\n    return 2 /* PRECEDING */;\n}\nexports.compareDocumentPosition = compareDocumentPosition;\n/**\n * Sort an array of nodes based on their relative position in the document and\n * remove any duplicate nodes. If the array contains nodes that do not belong\n * to the same document, sort order is unspecified.\n *\n * @param nodes Array of DOM nodes.\n * @returns Collection of unique nodes, sorted in document order.\n */\nfunction uniqueSort(nodes) {\n    nodes = nodes.filter(function (node, i, arr) { return !arr.includes(node, i + 1); });\n    nodes.sort(function (a, b) {\n        var relative = compareDocumentPosition(a, b);\n        if (relative & 2 /* PRECEDING */) {\n            return -1;\n        }\n        else if (relative & 4 /* FOLLOWING */) {\n            return 1;\n        }\n        return 0;\n    });\n    return nodes;\n}\nexports.uniqueSort = uniqueSort;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/domutils/lib/helpers.js?");

/***/ }),

/***/ "../node_modules/domutils/lib/index.js":
/*!*********************************************!*\
  !*** ../node_modules/domutils/lib/index.js ***!
  \*********************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.hasChildren = exports.isDocument = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = void 0;\n__exportStar(__webpack_require__(/*! ./stringify */ \"../node_modules/domutils/lib/stringify.js\"), exports);\n__exportStar(__webpack_require__(/*! ./traversal */ \"../node_modules/domutils/lib/traversal.js\"), exports);\n__exportStar(__webpack_require__(/*! ./manipulation */ \"../node_modules/domutils/lib/manipulation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./querying */ \"../node_modules/domutils/lib/querying.js\"), exports);\n__exportStar(__webpack_require__(/*! ./legacy */ \"../node_modules/domutils/lib/legacy.js\"), exports);\n__exportStar(__webpack_require__(/*! ./helpers */ \"../node_modules/domutils/lib/helpers.js\"), exports);\nvar domhandler_1 = __webpack_require__(/*! domhandler */ \"../node_modules/domhandler/lib/index.js\");\nObject.defineProperty(exports, \"isTag\", ({ enumerable: true, get: function () { return domhandler_1.isTag; } }));\nObject.defineProperty(exports, \"isCDATA\", ({ enumerable: true, get: function () { return domhandler_1.isCDATA; } }));\nObject.defineProperty(exports, \"isText\", ({ enumerable: true, get: function () { return domhandler_1.isText; } }));\nObject.defineProperty(exports, \"isComment\", ({ enumerable: true, get: function () { return domhandler_1.isComment; } }));\nObject.defineProperty(exports, \"isDocument\", ({ enumerable: true, get: function () { return domhandler_1.isDocument; } }));\nObject.defineProperty(exports, \"hasChildren\", ({ enumerable: true, get: function () { return domhandler_1.hasChildren; } }));\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/domutils/lib/index.js?");

/***/ }),

/***/ "../node_modules/domutils/lib/legacy.js":
/*!**********************************************!*\
  !*** ../node_modules/domutils/lib/legacy.js ***!
  \**********************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.getElementsByTagType = exports.getElementsByTagName = exports.getElementById = exports.getElements = exports.testElement = void 0;\nvar domhandler_1 = __webpack_require__(/*! domhandler */ \"../node_modules/domhandler/lib/index.js\");\nvar querying_1 = __webpack_require__(/*! ./querying */ \"../node_modules/domutils/lib/querying.js\");\nvar Checks = {\n    tag_name: function (name) {\n        if (typeof name === \"function\") {\n            return function (elem) { return domhandler_1.isTag(elem) && name(elem.name); };\n        }\n        else if (name === \"*\") {\n            return domhandler_1.isTag;\n        }\n        return function (elem) { return domhandler_1.isTag(elem) && elem.name === name; };\n    },\n    tag_type: function (type) {\n        if (typeof type === \"function\") {\n            return function (elem) { return type(elem.type); };\n        }\n        return function (elem) { return elem.type === type; };\n    },\n    tag_contains: function (data) {\n        if (typeof data === \"function\") {\n            return function (elem) { return domhandler_1.isText(elem) && data(elem.data); };\n        }\n        return function (elem) { return domhandler_1.isText(elem) && elem.data === data; };\n    },\n};\n/**\n * @param attrib Attribute to check.\n * @param value Attribute value to look for.\n * @returns A function to check whether the a node has an attribute with a particular value.\n */\nfunction getAttribCheck(attrib, value) {\n    if (typeof value === \"function\") {\n        return function (elem) { return domhandler_1.isTag(elem) && value(elem.attribs[attrib]); };\n    }\n    return function (elem) { return domhandler_1.isTag(elem) && elem.attribs[attrib] === value; };\n}\n/**\n * @param a First function to combine.\n * @param b Second function to combine.\n * @returns A function taking a node and returning `true` if either\n * of the input functions returns `true` for the node.\n */\nfunction combineFuncs(a, b) {\n    return function (elem) { return a(elem) || b(elem); };\n}\n/**\n * @param options An object describing nodes to look for.\n * @returns A function executing all checks in `options` and returning `true`\n * if any of them match a node.\n */\nfunction compileTest(options) {\n    var funcs = Object.keys(options).map(function (key) {\n        var value = options[key];\n        return key in Checks\n            ? Checks[key](value)\n            : getAttribCheck(key, value);\n    });\n    return funcs.length === 0 ? null : funcs.reduce(combineFuncs);\n}\n/**\n * @param options An object describing nodes to look for.\n * @param node The element to test.\n * @returns Whether the element matches the description in `options`.\n */\nfunction testElement(options, node) {\n    var test = compileTest(options);\n    return test ? test(node) : true;\n}\nexports.testElement = testElement;\n/**\n * @param options An object describing nodes to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes that match `options`.\n */\nfunction getElements(options, nodes, recurse, limit) {\n    if (limit === void 0) { limit = Infinity; }\n    var test = compileTest(options);\n    return test ? querying_1.filter(test, nodes, recurse, limit) : [];\n}\nexports.getElements = getElements;\n/**\n * @param id The unique ID attribute value to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @returns The node with the supplied ID.\n */\nfunction getElementById(id, nodes, recurse) {\n    if (recurse === void 0) { recurse = true; }\n    if (!Array.isArray(nodes))\n        nodes = [nodes];\n    return querying_1.findOne(getAttribCheck(\"id\", id), nodes, recurse);\n}\nexports.getElementById = getElementById;\n/**\n * @param tagName Tag name to search for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `tagName`.\n */\nfunction getElementsByTagName(tagName, nodes, recurse, limit) {\n    if (recurse === void 0) { recurse = true; }\n    if (limit === void 0) { limit = Infinity; }\n    return querying_1.filter(Checks.tag_name(tagName), nodes, recurse, limit);\n}\nexports.getElementsByTagName = getElementsByTagName;\n/**\n * @param type Element type to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `type`.\n */\nfunction getElementsByTagType(type, nodes, recurse, limit) {\n    if (recurse === void 0) { recurse = true; }\n    if (limit === void 0) { limit = Infinity; }\n    return querying_1.filter(Checks.tag_type(type), nodes, recurse, limit);\n}\nexports.getElementsByTagType = getElementsByTagType;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/domutils/lib/legacy.js?");

/***/ }),

/***/ "../node_modules/domutils/lib/manipulation.js":
/*!****************************************************!*\
  !*** ../node_modules/domutils/lib/manipulation.js ***!
  \****************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.prepend = exports.prependChild = exports.append = exports.appendChild = exports.replaceElement = exports.removeElement = void 0;\n/**\n * Remove an element from the dom\n *\n * @param elem The element to be removed\n */\nfunction removeElement(elem) {\n    if (elem.prev)\n        elem.prev.next = elem.next;\n    if (elem.next)\n        elem.next.prev = elem.prev;\n    if (elem.parent) {\n        var childs = elem.parent.children;\n        childs.splice(childs.lastIndexOf(elem), 1);\n    }\n}\nexports.removeElement = removeElement;\n/**\n * Replace an element in the dom\n *\n * @param elem The element to be replaced\n * @param replacement The element to be added\n */\nfunction replaceElement(elem, replacement) {\n    var prev = (replacement.prev = elem.prev);\n    if (prev) {\n        prev.next = replacement;\n    }\n    var next = (replacement.next = elem.next);\n    if (next) {\n        next.prev = replacement;\n    }\n    var parent = (replacement.parent = elem.parent);\n    if (parent) {\n        var childs = parent.children;\n        childs[childs.lastIndexOf(elem)] = replacement;\n    }\n}\nexports.replaceElement = replaceElement;\n/**\n * Append a child to an element.\n *\n * @param elem The element to append to.\n * @param child The element to be added as a child.\n */\nfunction appendChild(elem, child) {\n    removeElement(child);\n    child.next = null;\n    child.parent = elem;\n    if (elem.children.push(child) > 1) {\n        var sibling = elem.children[elem.children.length - 2];\n        sibling.next = child;\n        child.prev = sibling;\n    }\n    else {\n        child.prev = null;\n    }\n}\nexports.appendChild = appendChild;\n/**\n * Append an element after another.\n *\n * @param elem The element to append after.\n * @param next The element be added.\n */\nfunction append(elem, next) {\n    removeElement(next);\n    var parent = elem.parent;\n    var currNext = elem.next;\n    next.next = currNext;\n    next.prev = elem;\n    elem.next = next;\n    next.parent = parent;\n    if (currNext) {\n        currNext.prev = next;\n        if (parent) {\n            var childs = parent.children;\n            childs.splice(childs.lastIndexOf(currNext), 0, next);\n        }\n    }\n    else if (parent) {\n        parent.children.push(next);\n    }\n}\nexports.append = append;\n/**\n * Prepend a child to an element.\n *\n * @param elem The element to prepend before.\n * @param child The element to be added as a child.\n */\nfunction prependChild(elem, child) {\n    removeElement(child);\n    child.parent = elem;\n    child.prev = null;\n    if (elem.children.unshift(child) !== 1) {\n        var sibling = elem.children[1];\n        sibling.prev = child;\n        child.next = sibling;\n    }\n    else {\n        child.next = null;\n    }\n}\nexports.prependChild = prependChild;\n/**\n * Prepend an element before another.\n *\n * @param elem The element to prepend before.\n * @param prev The element be added.\n */\nfunction prepend(elem, prev) {\n    removeElement(prev);\n    var parent = elem.parent;\n    if (parent) {\n        var childs = parent.children;\n        childs.splice(childs.indexOf(elem), 0, prev);\n    }\n    if (elem.prev) {\n        elem.prev.next = prev;\n    }\n    prev.parent = parent;\n    prev.prev = elem.prev;\n    prev.next = elem;\n    elem.prev = prev;\n}\nexports.prepend = prepend;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/domutils/lib/manipulation.js?");

/***/ }),

/***/ "../node_modules/domutils/lib/querying.js":
/*!************************************************!*\
  !*** ../node_modules/domutils/lib/querying.js ***!
  \************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.findAll = exports.existsOne = exports.findOne = exports.findOneChild = exports.find = exports.filter = void 0;\nvar domhandler_1 = __webpack_require__(/*! domhandler */ \"../node_modules/domhandler/lib/index.js\");\n/**\n * Search a node and its children for nodes passing a test function.\n *\n * @param test Function to test nodes on.\n * @param node Node to search. Will be included in the result set if it matches.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nfunction filter(test, node, recurse, limit) {\n    if (recurse === void 0) { recurse = true; }\n    if (limit === void 0) { limit = Infinity; }\n    if (!Array.isArray(node))\n        node = [node];\n    return find(test, node, recurse, limit);\n}\nexports.filter = filter;\n/**\n * Search an array of node and its children for nodes passing a test function.\n *\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nfunction find(test, nodes, recurse, limit) {\n    var result = [];\n    for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n        var elem = nodes_1[_i];\n        if (test(elem)) {\n            result.push(elem);\n            if (--limit <= 0)\n                break;\n        }\n        if (recurse && domhandler_1.hasChildren(elem) && elem.children.length > 0) {\n            var children = find(test, elem.children, recurse, limit);\n            result.push.apply(result, children);\n            limit -= children.length;\n            if (limit <= 0)\n                break;\n        }\n    }\n    return result;\n}\nexports.find = find;\n/**\n * Finds the first element inside of an array that matches a test function.\n *\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns The first node in the array that passes `test`.\n */\nfunction findOneChild(test, nodes) {\n    return nodes.find(test);\n}\nexports.findOneChild = findOneChild;\n/**\n * Finds one element in a tree that passes a test.\n *\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @param recurse Also consider child nodes.\n * @returns The first child node that passes `test`.\n */\nfunction findOne(test, nodes, recurse) {\n    if (recurse === void 0) { recurse = true; }\n    var elem = null;\n    for (var i = 0; i < nodes.length && !elem; i++) {\n        var checked = nodes[i];\n        if (!domhandler_1.isTag(checked)) {\n            continue;\n        }\n        else if (test(checked)) {\n            elem = checked;\n        }\n        else if (recurse && checked.children.length > 0) {\n            elem = findOne(test, checked.children);\n        }\n    }\n    return elem;\n}\nexports.findOne = findOne;\n/**\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns Whether a tree of nodes contains at least one node passing a test.\n */\nfunction existsOne(test, nodes) {\n    return nodes.some(function (checked) {\n        return domhandler_1.isTag(checked) &&\n            (test(checked) ||\n                (checked.children.length > 0 &&\n                    existsOne(test, checked.children)));\n    });\n}\nexports.existsOne = existsOne;\n/**\n * Search and array of nodes and its children for nodes passing a test function.\n *\n * Same as `find`, only with less options, leading to reduced complexity.\n *\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns All nodes passing `test`.\n */\nfunction findAll(test, nodes) {\n    var _a;\n    var result = [];\n    var stack = nodes.filter(domhandler_1.isTag);\n    var elem;\n    while ((elem = stack.shift())) {\n        var children = (_a = elem.children) === null || _a === void 0 ? void 0 : _a.filter(domhandler_1.isTag);\n        if (children && children.length > 0) {\n            stack.unshift.apply(stack, children);\n        }\n        if (test(elem))\n            result.push(elem);\n    }\n    return result;\n}\nexports.findAll = findAll;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/domutils/lib/querying.js?");

/***/ }),

/***/ "../node_modules/domutils/lib/stringify.js":
/*!*************************************************!*\
  !*** ../node_modules/domutils/lib/stringify.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.getText = exports.getInnerHTML = exports.getOuterHTML = void 0;\nvar domhandler_1 = __webpack_require__(/*! domhandler */ \"../node_modules/domhandler/lib/index.js\");\nvar dom_serializer_1 = __importDefault(__webpack_require__(/*! dom-serializer */ \"../node_modules/dom-serializer/lib/index.js\"));\n/**\n * @param node Node to get the outer HTML of.\n * @param options Options for serialization.\n * @deprecated Use the `dom-serializer` module directly.\n * @returns `node`'s outer HTML.\n */\nfunction getOuterHTML(node, options) {\n    return dom_serializer_1.default(node, options);\n}\nexports.getOuterHTML = getOuterHTML;\n/**\n * @param node Node to get the inner HTML of.\n * @param options Options for serialization.\n * @deprecated Use the `dom-serializer` module directly.\n * @returns `node`'s inner HTML.\n */\nfunction getInnerHTML(node, options) {\n    return domhandler_1.hasChildren(node)\n        ? node.children.map(function (node) { return getOuterHTML(node, options); }).join(\"\")\n        : \"\";\n}\nexports.getInnerHTML = getInnerHTML;\n/**\n * Get a node's inner text.\n *\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n */\nfunction getText(node) {\n    if (Array.isArray(node))\n        return node.map(getText).join(\"\");\n    if (domhandler_1.isTag(node))\n        return node.name === \"br\" ? \"\\n\" : getText(node.children);\n    if (domhandler_1.isCDATA(node))\n        return getText(node.children);\n    if (domhandler_1.isText(node))\n        return node.data;\n    return \"\";\n}\nexports.getText = getText;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/domutils/lib/stringify.js?");

/***/ }),

/***/ "../node_modules/domutils/lib/traversal.js":
/*!*************************************************!*\
  !*** ../node_modules/domutils/lib/traversal.js ***!
  \*************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.prevElementSibling = exports.nextElementSibling = exports.getName = exports.hasAttrib = exports.getAttributeValue = exports.getSiblings = exports.getParent = exports.getChildren = void 0;\nvar domhandler_1 = __webpack_require__(/*! domhandler */ \"../node_modules/domhandler/lib/index.js\");\nvar emptyArray = [];\n/**\n * Get a node's children.\n *\n * @param elem Node to get the children of.\n * @returns `elem`'s children, or an empty array.\n */\nfunction getChildren(elem) {\n    var _a;\n    return (_a = elem.children) !== null && _a !== void 0 ? _a : emptyArray;\n}\nexports.getChildren = getChildren;\n/**\n * Get a node's parent.\n *\n * @param elem Node to get the parent of.\n * @returns `elem`'s parent node.\n */\nfunction getParent(elem) {\n    return elem.parent || null;\n}\nexports.getParent = getParent;\n/**\n * Gets an elements siblings, including the element itself.\n *\n * Attempts to get the children through the element's parent first.\n * If we don't have a parent (the element is a root node),\n * we walk the element's `prev` & `next` to get all remaining nodes.\n *\n * @param elem Element to get the siblings of.\n * @returns `elem`'s siblings.\n */\nfunction getSiblings(elem) {\n    var _a, _b;\n    var parent = getParent(elem);\n    if (parent != null)\n        return getChildren(parent);\n    var siblings = [elem];\n    var prev = elem.prev, next = elem.next;\n    while (prev != null) {\n        siblings.unshift(prev);\n        (_a = prev, prev = _a.prev);\n    }\n    while (next != null) {\n        siblings.push(next);\n        (_b = next, next = _b.next);\n    }\n    return siblings;\n}\nexports.getSiblings = getSiblings;\n/**\n * Gets an attribute from an element.\n *\n * @param elem Element to check.\n * @param name Attribute name to retrieve.\n * @returns The element's attribute value, or `undefined`.\n */\nfunction getAttributeValue(elem, name) {\n    var _a;\n    return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];\n}\nexports.getAttributeValue = getAttributeValue;\n/**\n * Checks whether an element has an attribute.\n *\n * @param elem Element to check.\n * @param name Attribute name to look for.\n * @returns Returns whether `elem` has the attribute `name`.\n */\nfunction hasAttrib(elem, name) {\n    return (elem.attribs != null &&\n        Object.prototype.hasOwnProperty.call(elem.attribs, name) &&\n        elem.attribs[name] != null);\n}\nexports.hasAttrib = hasAttrib;\n/**\n * Get the tag name of an element.\n *\n * @param elem The element to get the name for.\n * @returns The tag name of `elem`.\n */\nfunction getName(elem) {\n    return elem.name;\n}\nexports.getName = getName;\n/**\n * Returns the next element sibling of a node.\n *\n * @param elem The element to get the next sibling of.\n * @returns `elem`'s next sibling that is a tag.\n */\nfunction nextElementSibling(elem) {\n    var _a;\n    var next = elem.next;\n    while (next !== null && !domhandler_1.isTag(next))\n        (_a = next, next = _a.next);\n    return next;\n}\nexports.nextElementSibling = nextElementSibling;\n/**\n * Returns the previous element sibling of a node.\n *\n * @param elem The element to get the previous sibling of.\n * @returns `elem`'s previous sibling that is a tag.\n */\nfunction prevElementSibling(elem) {\n    var _a;\n    var prev = elem.prev;\n    while (prev !== null && !domhandler_1.isTag(prev))\n        (_a = prev, prev = _a.prev);\n    return prev;\n}\nexports.prevElementSibling = prevElementSibling;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/domutils/lib/traversal.js?");

/***/ }),

/***/ "../node_modules/entities/lib/decode.js":
/*!**********************************************!*\
  !*** ../node_modules/entities/lib/decode.js ***!
  \**********************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;\nvar entities_json_1 = __importDefault(__webpack_require__(/*! ./maps/entities.json */ \"../node_modules/entities/lib/maps/entities.json\"));\nvar legacy_json_1 = __importDefault(__webpack_require__(/*! ./maps/legacy.json */ \"../node_modules/entities/lib/maps/legacy.json\"));\nvar xml_json_1 = __importDefault(__webpack_require__(/*! ./maps/xml.json */ \"../node_modules/entities/lib/maps/xml.json\"));\nvar decode_codepoint_1 = __importDefault(__webpack_require__(/*! ./decode_codepoint */ \"../node_modules/entities/lib/decode_codepoint.js\"));\nvar strictEntityRe = /&(?:[a-zA-Z0-9]+|#[xX][\\da-fA-F]+|#\\d+);/g;\nexports.decodeXML = getStrictDecoder(xml_json_1.default);\nexports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);\nfunction getStrictDecoder(map) {\n    var replace = getReplacer(map);\n    return function (str) { return String(str).replace(strictEntityRe, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\nexports.decodeHTML = (function () {\n    var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n    var keys = Object.keys(entities_json_1.default).sort(sorter);\n    for (var i = 0, j = 0; i < keys.length; i++) {\n        if (legacy[j] === keys[i]) {\n            keys[i] += \";?\";\n            j++;\n        }\n        else {\n            keys[i] += \";\";\n        }\n    }\n    var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n    var replace = getReplacer(entities_json_1.default);\n    function replacer(str) {\n        if (str.substr(-1) !== \";\")\n            str += \";\";\n        return replace(str);\n    }\n    // TODO consider creating a merged map\n    return function (str) { return String(str).replace(re, replacer); };\n})();\nfunction getReplacer(map) {\n    return function replace(str) {\n        if (str.charAt(1) === \"#\") {\n            var secondChar = str.charAt(2);\n            if (secondChar === \"X\" || secondChar === \"x\") {\n                return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n            }\n            return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n        }\n        // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n        return map[str.slice(1, -1)] || str;\n    };\n}\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/entities/lib/decode.js?");

/***/ }),

/***/ "../node_modules/entities/lib/decode_codepoint.js":
/*!********************************************************!*\
  !*** ../node_modules/entities/lib/decode_codepoint.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nvar decode_json_1 = __importDefault(__webpack_require__(/*! ./maps/decode.json */ \"../node_modules/entities/lib/maps/decode.json\"));\n// Adapted from https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nvar fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.fromCodePoint ||\n    function (codePoint) {\n        var output = \"\";\n        if (codePoint > 0xffff) {\n            codePoint -= 0x10000;\n            output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n            codePoint = 0xdc00 | (codePoint & 0x3ff);\n        }\n        output += String.fromCharCode(codePoint);\n        return output;\n    };\nfunction decodeCodePoint(codePoint) {\n    if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n        return \"\\uFFFD\";\n    }\n    if (codePoint in decode_json_1.default) {\n        codePoint = decode_json_1.default[codePoint];\n    }\n    return fromCodePoint(codePoint);\n}\nexports.default = decodeCodePoint;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/entities/lib/decode_codepoint.js?");

/***/ }),

/***/ "../node_modules/entities/lib/encode.js":
/*!**********************************************!*\
  !*** ../node_modules/entities/lib/encode.js ***!
  \**********************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = void 0;\nvar xml_json_1 = __importDefault(__webpack_require__(/*! ./maps/xml.json */ \"../node_modules/entities/lib/maps/xml.json\"));\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n */\nexports.encodeXML = getASCIIEncoder(inverseXML);\nvar entities_json_1 = __importDefault(__webpack_require__(/*! ./maps/entities.json */ \"../node_modules/entities/lib/maps/entities.json\"));\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\n/**\n * Encodes all entities and non-ASCII characters in the input.\n *\n * This includes characters that are valid ASCII characters in HTML documents.\n * For example `#` will be encoded as `&num;`. To get a more compact output,\n * consider using the `encodeNonAsciiHTML` function.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n */\nexports.encodeHTML = getInverse(inverseHTML, htmlReplacer);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in HTML\n * documents using HTML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n */\nexports.encodeNonAsciiHTML = getASCIIEncoder(inverseHTML);\nfunction getInverseObj(obj) {\n    return Object.keys(obj)\n        .sort()\n        .reduce(function (inverse, name) {\n        inverse[obj[name]] = \"&\" + name + \";\";\n        return inverse;\n    }, {});\n}\nfunction getInverseReplacer(inverse) {\n    var single = [];\n    var multiple = [];\n    for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n        var k = _a[_i];\n        if (k.length === 1) {\n            // Add value to single array\n            single.push(\"\\\\\" + k);\n        }\n        else {\n            // Add value to multiple array\n            multiple.push(k);\n        }\n    }\n    // Add ranges to single characters.\n    single.sort();\n    for (var start = 0; start < single.length - 1; start++) {\n        // Find the end of a run of characters\n        var end = start;\n        while (end < single.length - 1 &&\n            single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {\n            end += 1;\n        }\n        var count = 1 + end - start;\n        // We want to replace at least three characters\n        if (count < 3)\n            continue;\n        single.splice(start, count, single[start] + \"-\" + single[end]);\n    }\n    multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n    return new RegExp(multiple.join(\"|\"), \"g\");\n}\n// /[^\\0-\\x7F]/gu\nvar reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\nvar getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n    ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        function (str) { return str.codePointAt(0); }\n    : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n        function (c) {\n            return (c.charCodeAt(0) - 0xd800) * 0x400 +\n                c.charCodeAt(1) -\n                0xdc00 +\n                0x10000;\n        };\nfunction singleCharReplacer(c) {\n    return \"&#x\" + (c.length > 1 ? getCodePoint(c) : c.charCodeAt(0))\n        .toString(16)\n        .toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n    return function (data) {\n        return data\n            .replace(re, function (name) { return inverse[name]; })\n            .replace(reNonASCII, singleCharReplacer);\n    };\n}\nvar reEscapeChars = new RegExp(xmlReplacer.source + \"|\" + reNonASCII.source, \"g\");\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `&#xfc;`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nfunction escape(data) {\n    return data.replace(reEscapeChars, singleCharReplacer);\n}\nexports.escape = escape;\n/**\n * Encodes all characters not valid in XML documents using numeric hexadecimal\n * reference (eg. `&#xfc;`).\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nfunction escapeUTF8(data) {\n    return data.replace(xmlReplacer, singleCharReplacer);\n}\nexports.escapeUTF8 = escapeUTF8;\nfunction getASCIIEncoder(obj) {\n    return function (data) {\n        return data.replace(reEscapeChars, function (c) { return obj[c] || singleCharReplacer(c); });\n    };\n}\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/entities/lib/encode.js?");

/***/ }),

/***/ "../node_modules/entities/lib/index.js":
/*!*********************************************!*\
  !*** ../node_modules/entities/lib/index.js ***!
  \*********************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.encodeHTML5 = exports.encodeHTML4 = exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = void 0;\nvar decode_1 = __webpack_require__(/*! ./decode */ \"../node_modules/entities/lib/decode.js\");\nvar encode_1 = __webpack_require__(/*! ./encode */ \"../node_modules/entities/lib/encode.js\");\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeXML` or `decodeHTML` directly.\n */\nfunction decode(data, level) {\n    return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);\n}\nexports.decode = decode;\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeHTMLStrict` or `decodeXML` directly.\n */\nfunction decodeStrict(data, level) {\n    return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);\n}\nexports.decodeStrict = decodeStrict;\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `encodeHTML`, `encodeXML` or `encodeNonAsciiHTML` directly.\n */\nfunction encode(data, level) {\n    return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);\n}\nexports.encode = encode;\nvar encode_2 = __webpack_require__(/*! ./encode */ \"../node_modules/entities/lib/encode.js\");\nObject.defineProperty(exports, \"encodeXML\", ({ enumerable: true, get: function () { return encode_2.encodeXML; } }));\nObject.defineProperty(exports, \"encodeHTML\", ({ enumerable: true, get: function () { return encode_2.encodeHTML; } }));\nObject.defineProperty(exports, \"encodeNonAsciiHTML\", ({ enumerable: true, get: function () { return encode_2.encodeNonAsciiHTML; } }));\nObject.defineProperty(exports, \"escape\", ({ enumerable: true, get: function () { return encode_2.escape; } }));\nObject.defineProperty(exports, \"escapeUTF8\", ({ enumerable: true, get: function () { return encode_2.escapeUTF8; } }));\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"encodeHTML4\", ({ enumerable: true, get: function () { return encode_2.encodeHTML; } }));\nObject.defineProperty(exports, \"encodeHTML5\", ({ enumerable: true, get: function () { return encode_2.encodeHTML; } }));\nvar decode_2 = __webpack_require__(/*! ./decode */ \"../node_modules/entities/lib/decode.js\");\nObject.defineProperty(exports, \"decodeXML\", ({ enumerable: true, get: function () { return decode_2.decodeXML; } }));\nObject.defineProperty(exports, \"decodeHTML\", ({ enumerable: true, get: function () { return decode_2.decodeHTML; } }));\nObject.defineProperty(exports, \"decodeHTMLStrict\", ({ enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } }));\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"decodeHTML4\", ({ enumerable: true, get: function () { return decode_2.decodeHTML; } }));\nObject.defineProperty(exports, \"decodeHTML5\", ({ enumerable: true, get: function () { return decode_2.decodeHTML; } }));\nObject.defineProperty(exports, \"decodeHTML4Strict\", ({ enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } }));\nObject.defineProperty(exports, \"decodeHTML5Strict\", ({ enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } }));\nObject.defineProperty(exports, \"decodeXMLStrict\", ({ enumerable: true, get: function () { return decode_2.decodeXML; } }));\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/entities/lib/index.js?");

/***/ }),

/***/ "../node_modules/entities/lib/maps/decode.json":
/*!*****************************************************!*\
  !*** ../node_modules/entities/lib/maps/decode.json ***!
  \*****************************************************/
/***/ ((module) => {

"use strict";
eval("module.exports = JSON.parse('{\"0\":65533,\"128\":8364,\"130\":8218,\"131\":402,\"132\":8222,\"133\":8230,\"134\":8224,\"135\":8225,\"136\":710,\"137\":8240,\"138\":352,\"139\":8249,\"140\":338,\"142\":381,\"145\":8216,\"146\":8217,\"147\":8220,\"148\":8221,\"149\":8226,\"150\":8211,\"151\":8212,\"152\":732,\"153\":8482,\"154\":353,\"155\":8250,\"156\":339,\"158\":382,\"159\":376}');\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/entities/lib/maps/decode.json?");

/***/ }),

/***/ "../node_modules/entities/lib/maps/entities.json":
/*!*******************************************************!*\
  !*** ../node_modules/entities/lib/maps/entities.json ***!
  \*******************************************************/
/***/ ((module) => {

"use strict";
eval("module.exports = JSON.parse('{\"Aacute\":\"Á\",\"aacute\":\"á\",\"Abreve\":\"Ă\",\"abreve\":\"ă\",\"ac\":\"∾\",\"acd\":\"∿\",\"acE\":\"∾̳\",\"Acirc\":\"Â\",\"acirc\":\"â\",\"acute\":\"´\",\"Acy\":\"А\",\"acy\":\"а\",\"AElig\":\"Æ\",\"aelig\":\"æ\",\"af\":\"⁡\",\"Afr\":\"𝔄\",\"afr\":\"𝔞\",\"Agrave\":\"À\",\"agrave\":\"à\",\"alefsym\":\"ℵ\",\"aleph\":\"ℵ\",\"Alpha\":\"Α\",\"alpha\":\"α\",\"Amacr\":\"Ā\",\"amacr\":\"ā\",\"amalg\":\"⨿\",\"amp\":\"&\",\"AMP\":\"&\",\"andand\":\"⩕\",\"And\":\"⩓\",\"and\":\"∧\",\"andd\":\"⩜\",\"andslope\":\"⩘\",\"andv\":\"⩚\",\"ang\":\"∠\",\"ange\":\"⦤\",\"angle\":\"∠\",\"angmsdaa\":\"⦨\",\"angmsdab\":\"⦩\",\"angmsdac\":\"⦪\",\"angmsdad\":\"⦫\",\"angmsdae\":\"⦬\",\"angmsdaf\":\"⦭\",\"angmsdag\":\"⦮\",\"angmsdah\":\"⦯\",\"angmsd\":\"∡\",\"angrt\":\"∟\",\"angrtvb\":\"⊾\",\"angrtvbd\":\"⦝\",\"angsph\":\"∢\",\"angst\":\"Å\",\"angzarr\":\"⍼\",\"Aogon\":\"Ą\",\"aogon\":\"ą\",\"Aopf\":\"𝔸\",\"aopf\":\"𝕒\",\"apacir\":\"⩯\",\"ap\":\"≈\",\"apE\":\"⩰\",\"ape\":\"≊\",\"apid\":\"≋\",\"apos\":\"\\'\",\"ApplyFunction\":\"⁡\",\"approx\":\"≈\",\"approxeq\":\"≊\",\"Aring\":\"Å\",\"aring\":\"å\",\"Ascr\":\"𝒜\",\"ascr\":\"𝒶\",\"Assign\":\"≔\",\"ast\":\"*\",\"asymp\":\"≈\",\"asympeq\":\"≍\",\"Atilde\":\"Ã\",\"atilde\":\"ã\",\"Auml\":\"Ä\",\"auml\":\"ä\",\"awconint\":\"∳\",\"awint\":\"⨑\",\"backcong\":\"≌\",\"backepsilon\":\"϶\",\"backprime\":\"‵\",\"backsim\":\"∽\",\"backsimeq\":\"⋍\",\"Backslash\":\"∖\",\"Barv\":\"⫧\",\"barvee\":\"⊽\",\"barwed\":\"⌅\",\"Barwed\":\"⌆\",\"barwedge\":\"⌅\",\"bbrk\":\"⎵\",\"bbrktbrk\":\"⎶\",\"bcong\":\"≌\",\"Bcy\":\"Б\",\"bcy\":\"б\",\"bdquo\":\"„\",\"becaus\":\"∵\",\"because\":\"∵\",\"Because\":\"∵\",\"bemptyv\":\"⦰\",\"bepsi\":\"϶\",\"bernou\":\"ℬ\",\"Bernoullis\":\"ℬ\",\"Beta\":\"Β\",\"beta\":\"β\",\"beth\":\"ℶ\",\"between\":\"≬\",\"Bfr\":\"𝔅\",\"bfr\":\"𝔟\",\"bigcap\":\"⋂\",\"bigcirc\":\"◯\",\"bigcup\":\"⋃\",\"bigodot\":\"⨀\",\"bigoplus\":\"⨁\",\"bigotimes\":\"⨂\",\"bigsqcup\":\"⨆\",\"bigstar\":\"★\",\"bigtriangledown\":\"▽\",\"bigtriangleup\":\"△\",\"biguplus\":\"⨄\",\"bigvee\":\"⋁\",\"bigwedge\":\"⋀\",\"bkarow\":\"⤍\",\"blacklozenge\":\"⧫\",\"blacksquare\":\"▪\",\"blacktriangle\":\"▴\",\"blacktriangledown\":\"▾\",\"blacktriangleleft\":\"◂\",\"blacktriangleright\":\"▸\",\"blank\":\"␣\",\"blk12\":\"▒\",\"blk14\":\"░\",\"blk34\":\"▓\",\"block\":\"█\",\"bne\":\"=⃥\",\"bnequiv\":\"≡⃥\",\"bNot\":\"⫭\",\"bnot\":\"⌐\",\"Bopf\":\"𝔹\",\"bopf\":\"𝕓\",\"bot\":\"⊥\",\"bottom\":\"⊥\",\"bowtie\":\"⋈\",\"boxbox\":\"⧉\",\"boxdl\":\"┐\",\"boxdL\":\"╕\",\"boxDl\":\"╖\",\"boxDL\":\"╗\",\"boxdr\":\"┌\",\"boxdR\":\"╒\",\"boxDr\":\"╓\",\"boxDR\":\"╔\",\"boxh\":\"─\",\"boxH\":\"═\",\"boxhd\":\"┬\",\"boxHd\":\"╤\",\"boxhD\":\"╥\",\"boxHD\":\"╦\",\"boxhu\":\"┴\",\"boxHu\":\"╧\",\"boxhU\":\"╨\",\"boxHU\":\"╩\",\"boxminus\":\"⊟\",\"boxplus\":\"⊞\",\"boxtimes\":\"⊠\",\"boxul\":\"┘\",\"boxuL\":\"╛\",\"boxUl\":\"╜\",\"boxUL\":\"╝\",\"boxur\":\"└\",\"boxuR\":\"╘\",\"boxUr\":\"╙\",\"boxUR\":\"╚\",\"boxv\":\"│\",\"boxV\":\"║\",\"boxvh\":\"┼\",\"boxvH\":\"╪\",\"boxVh\":\"╫\",\"boxVH\":\"╬\",\"boxvl\":\"┤\",\"boxvL\":\"╡\",\"boxVl\":\"╢\",\"boxVL\":\"╣\",\"boxvr\":\"├\",\"boxvR\":\"╞\",\"boxVr\":\"╟\",\"boxVR\":\"╠\",\"bprime\":\"‵\",\"breve\":\"˘\",\"Breve\":\"˘\",\"brvbar\":\"¦\",\"bscr\":\"𝒷\",\"Bscr\":\"ℬ\",\"bsemi\":\"⁏\",\"bsim\":\"∽\",\"bsime\":\"⋍\",\"bsolb\":\"⧅\",\"bsol\":\"\\\\\\\\\",\"bsolhsub\":\"⟈\",\"bull\":\"•\",\"bullet\":\"•\",\"bump\":\"≎\",\"bumpE\":\"⪮\",\"bumpe\":\"≏\",\"Bumpeq\":\"≎\",\"bumpeq\":\"≏\",\"Cacute\":\"Ć\",\"cacute\":\"ć\",\"capand\":\"⩄\",\"capbrcup\":\"⩉\",\"capcap\":\"⩋\",\"cap\":\"∩\",\"Cap\":\"⋒\",\"capcup\":\"⩇\",\"capdot\":\"⩀\",\"CapitalDifferentialD\":\"ⅅ\",\"caps\":\"∩︀\",\"caret\":\"⁁\",\"caron\":\"ˇ\",\"Cayleys\":\"ℭ\",\"ccaps\":\"⩍\",\"Ccaron\":\"Č\",\"ccaron\":\"č\",\"Ccedil\":\"Ç\",\"ccedil\":\"ç\",\"Ccirc\":\"Ĉ\",\"ccirc\":\"ĉ\",\"Cconint\":\"∰\",\"ccups\":\"⩌\",\"ccupssm\":\"⩐\",\"Cdot\":\"Ċ\",\"cdot\":\"ċ\",\"cedil\":\"¸\",\"Cedilla\":\"¸\",\"cemptyv\":\"⦲\",\"cent\":\"¢\",\"centerdot\":\"·\",\"CenterDot\":\"·\",\"cfr\":\"𝔠\",\"Cfr\":\"ℭ\",\"CHcy\":\"Ч\",\"chcy\":\"ч\",\"check\":\"✓\",\"checkmark\":\"✓\",\"Chi\":\"Χ\",\"chi\":\"χ\",\"circ\":\"ˆ\",\"circeq\":\"≗\",\"circlearrowleft\":\"↺\",\"circlearrowright\":\"↻\",\"circledast\":\"⊛\",\"circledcirc\":\"⊚\",\"circleddash\":\"⊝\",\"CircleDot\":\"⊙\",\"circledR\":\"®\",\"circledS\":\"Ⓢ\",\"CircleMinus\":\"⊖\",\"CirclePlus\":\"⊕\",\"CircleTimes\":\"⊗\",\"cir\":\"○\",\"cirE\":\"⧃\",\"cire\":\"≗\",\"cirfnint\":\"⨐\",\"cirmid\":\"⫯\",\"cirscir\":\"⧂\",\"ClockwiseContourIntegral\":\"∲\",\"CloseCurlyDoubleQuote\":\"”\",\"CloseCurlyQuote\":\"’\",\"clubs\":\"♣\",\"clubsuit\":\"♣\",\"colon\":\":\",\"Colon\":\"∷\",\"Colone\":\"⩴\",\"colone\":\"≔\",\"coloneq\":\"≔\",\"comma\":\",\",\"commat\":\"@\",\"comp\":\"∁\",\"compfn\":\"∘\",\"complement\":\"∁\",\"complexes\":\"ℂ\",\"cong\":\"≅\",\"congdot\":\"⩭\",\"Congruent\":\"≡\",\"conint\":\"∮\",\"Conint\":\"∯\",\"ContourIntegral\":\"∮\",\"copf\":\"𝕔\",\"Copf\":\"ℂ\",\"coprod\":\"∐\",\"Coproduct\":\"∐\",\"copy\":\"©\",\"COPY\":\"©\",\"copysr\":\"℗\",\"CounterClockwiseContourIntegral\":\"∳\",\"crarr\":\"↵\",\"cross\":\"✗\",\"Cross\":\"⨯\",\"Cscr\":\"𝒞\",\"cscr\":\"𝒸\",\"csub\":\"⫏\",\"csube\":\"⫑\",\"csup\":\"⫐\",\"csupe\":\"⫒\",\"ctdot\":\"⋯\",\"cudarrl\":\"⤸\",\"cudarrr\":\"⤵\",\"cuepr\":\"⋞\",\"cuesc\":\"⋟\",\"cularr\":\"↶\",\"cularrp\":\"⤽\",\"cupbrcap\":\"⩈\",\"cupcap\":\"⩆\",\"CupCap\":\"≍\",\"cup\":\"∪\",\"Cup\":\"⋓\",\"cupcup\":\"⩊\",\"cupdot\":\"⊍\",\"cupor\":\"⩅\",\"cups\":\"∪︀\",\"curarr\":\"↷\",\"curarrm\":\"⤼\",\"curlyeqprec\":\"⋞\",\"curlyeqsucc\":\"⋟\",\"curlyvee\":\"⋎\",\"curlywedge\":\"⋏\",\"curren\":\"¤\",\"curvearrowleft\":\"↶\",\"curvearrowright\":\"↷\",\"cuvee\":\"⋎\",\"cuwed\":\"⋏\",\"cwconint\":\"∲\",\"cwint\":\"∱\",\"cylcty\":\"⌭\",\"dagger\":\"†\",\"Dagger\":\"‡\",\"daleth\":\"ℸ\",\"darr\":\"↓\",\"Darr\":\"↡\",\"dArr\":\"⇓\",\"dash\":\"‐\",\"Dashv\":\"⫤\",\"dashv\":\"⊣\",\"dbkarow\":\"⤏\",\"dblac\":\"˝\",\"Dcaron\":\"Ď\",\"dcaron\":\"ď\",\"Dcy\":\"Д\",\"dcy\":\"д\",\"ddagger\":\"‡\",\"ddarr\":\"⇊\",\"DD\":\"ⅅ\",\"dd\":\"ⅆ\",\"DDotrahd\":\"⤑\",\"ddotseq\":\"⩷\",\"deg\":\"°\",\"Del\":\"∇\",\"Delta\":\"Δ\",\"delta\":\"δ\",\"demptyv\":\"⦱\",\"dfisht\":\"⥿\",\"Dfr\":\"𝔇\",\"dfr\":\"𝔡\",\"dHar\":\"⥥\",\"dharl\":\"⇃\",\"dharr\":\"⇂\",\"DiacriticalAcute\":\"´\",\"DiacriticalDot\":\"˙\",\"DiacriticalDoubleAcute\":\"˝\",\"DiacriticalGrave\":\"`\",\"DiacriticalTilde\":\"˜\",\"diam\":\"⋄\",\"diamond\":\"⋄\",\"Diamond\":\"⋄\",\"diamondsuit\":\"♦\",\"diams\":\"♦\",\"die\":\"¨\",\"DifferentialD\":\"ⅆ\",\"digamma\":\"ϝ\",\"disin\":\"⋲\",\"div\":\"÷\",\"divide\":\"÷\",\"divideontimes\":\"⋇\",\"divonx\":\"⋇\",\"DJcy\":\"Ђ\",\"djcy\":\"ђ\",\"dlcorn\":\"⌞\",\"dlcrop\":\"⌍\",\"dollar\":\"$\",\"Dopf\":\"𝔻\",\"dopf\":\"𝕕\",\"Dot\":\"¨\",\"dot\":\"˙\",\"DotDot\":\"⃜\",\"doteq\":\"≐\",\"doteqdot\":\"≑\",\"DotEqual\":\"≐\",\"dotminus\":\"∸\",\"dotplus\":\"∔\",\"dotsquare\":\"⊡\",\"doublebarwedge\":\"⌆\",\"DoubleContourIntegral\":\"∯\",\"DoubleDot\":\"¨\",\"DoubleDownArrow\":\"⇓\",\"DoubleLeftArrow\":\"⇐\",\"DoubleLeftRightArrow\":\"⇔\",\"DoubleLeftTee\":\"⫤\",\"DoubleLongLeftArrow\":\"⟸\",\"DoubleLongLeftRightArrow\":\"⟺\",\"DoubleLongRightArrow\":\"⟹\",\"DoubleRightArrow\":\"⇒\",\"DoubleRightTee\":\"⊨\",\"DoubleUpArrow\":\"⇑\",\"DoubleUpDownArrow\":\"⇕\",\"DoubleVerticalBar\":\"∥\",\"DownArrowBar\":\"⤓\",\"downarrow\":\"↓\",\"DownArrow\":\"↓\",\"Downarrow\":\"⇓\",\"DownArrowUpArrow\":\"⇵\",\"DownBreve\":\"̑\",\"downdownarrows\":\"⇊\",\"downharpoonleft\":\"⇃\",\"downharpoonright\":\"⇂\",\"DownLeftRightVector\":\"⥐\",\"DownLeftTeeVector\":\"⥞\",\"DownLeftVectorBar\":\"⥖\",\"DownLeftVector\":\"↽\",\"DownRightTeeVector\":\"⥟\",\"DownRightVectorBar\":\"⥗\",\"DownRightVector\":\"⇁\",\"DownTeeArrow\":\"↧\",\"DownTee\":\"⊤\",\"drbkarow\":\"⤐\",\"drcorn\":\"⌟\",\"drcrop\":\"⌌\",\"Dscr\":\"𝒟\",\"dscr\":\"𝒹\",\"DScy\":\"Ѕ\",\"dscy\":\"ѕ\",\"dsol\":\"⧶\",\"Dstrok\":\"Đ\",\"dstrok\":\"đ\",\"dtdot\":\"⋱\",\"dtri\":\"▿\",\"dtrif\":\"▾\",\"duarr\":\"⇵\",\"duhar\":\"⥯\",\"dwangle\":\"⦦\",\"DZcy\":\"Џ\",\"dzcy\":\"џ\",\"dzigrarr\":\"⟿\",\"Eacute\":\"É\",\"eacute\":\"é\",\"easter\":\"⩮\",\"Ecaron\":\"Ě\",\"ecaron\":\"ě\",\"Ecirc\":\"Ê\",\"ecirc\":\"ê\",\"ecir\":\"≖\",\"ecolon\":\"≕\",\"Ecy\":\"Э\",\"ecy\":\"э\",\"eDDot\":\"⩷\",\"Edot\":\"Ė\",\"edot\":\"ė\",\"eDot\":\"≑\",\"ee\":\"ⅇ\",\"efDot\":\"≒\",\"Efr\":\"𝔈\",\"efr\":\"𝔢\",\"eg\":\"⪚\",\"Egrave\":\"È\",\"egrave\":\"è\",\"egs\":\"⪖\",\"egsdot\":\"⪘\",\"el\":\"⪙\",\"Element\":\"∈\",\"elinters\":\"⏧\",\"ell\":\"ℓ\",\"els\":\"⪕\",\"elsdot\":\"⪗\",\"Emacr\":\"Ē\",\"emacr\":\"ē\",\"empty\":\"∅\",\"emptyset\":\"∅\",\"EmptySmallSquare\":\"◻\",\"emptyv\":\"∅\",\"EmptyVerySmallSquare\":\"▫\",\"emsp13\":\" \",\"emsp14\":\" \",\"emsp\":\" \",\"ENG\":\"Ŋ\",\"eng\":\"ŋ\",\"ensp\":\" \",\"Eogon\":\"Ę\",\"eogon\":\"ę\",\"Eopf\":\"𝔼\",\"eopf\":\"𝕖\",\"epar\":\"⋕\",\"eparsl\":\"⧣\",\"eplus\":\"⩱\",\"epsi\":\"ε\",\"Epsilon\":\"Ε\",\"epsilon\":\"ε\",\"epsiv\":\"ϵ\",\"eqcirc\":\"≖\",\"eqcolon\":\"≕\",\"eqsim\":\"≂\",\"eqslantgtr\":\"⪖\",\"eqslantless\":\"⪕\",\"Equal\":\"⩵\",\"equals\":\"=\",\"EqualTilde\":\"≂\",\"equest\":\"≟\",\"Equilibrium\":\"⇌\",\"equiv\":\"≡\",\"equivDD\":\"⩸\",\"eqvparsl\":\"⧥\",\"erarr\":\"⥱\",\"erDot\":\"≓\",\"escr\":\"ℯ\",\"Escr\":\"ℰ\",\"esdot\":\"≐\",\"Esim\":\"⩳\",\"esim\":\"≂\",\"Eta\":\"Η\",\"eta\":\"η\",\"ETH\":\"Ð\",\"eth\":\"ð\",\"Euml\":\"Ë\",\"euml\":\"ë\",\"euro\":\"€\",\"excl\":\"!\",\"exist\":\"∃\",\"Exists\":\"∃\",\"expectation\":\"ℰ\",\"exponentiale\":\"ⅇ\",\"ExponentialE\":\"ⅇ\",\"fallingdotseq\":\"≒\",\"Fcy\":\"Ф\",\"fcy\":\"ф\",\"female\":\"♀\",\"ffilig\":\"ﬃ\",\"fflig\":\"ﬀ\",\"ffllig\":\"ﬄ\",\"Ffr\":\"𝔉\",\"ffr\":\"𝔣\",\"filig\":\"ﬁ\",\"FilledSmallSquare\":\"◼\",\"FilledVerySmallSquare\":\"▪\",\"fjlig\":\"fj\",\"flat\":\"♭\",\"fllig\":\"ﬂ\",\"fltns\":\"▱\",\"fnof\":\"ƒ\",\"Fopf\":\"𝔽\",\"fopf\":\"𝕗\",\"forall\":\"∀\",\"ForAll\":\"∀\",\"fork\":\"⋔\",\"forkv\":\"⫙\",\"Fouriertrf\":\"ℱ\",\"fpartint\":\"⨍\",\"frac12\":\"½\",\"frac13\":\"⅓\",\"frac14\":\"¼\",\"frac15\":\"⅕\",\"frac16\":\"⅙\",\"frac18\":\"⅛\",\"frac23\":\"⅔\",\"frac25\":\"⅖\",\"frac34\":\"¾\",\"frac35\":\"⅗\",\"frac38\":\"⅜\",\"frac45\":\"⅘\",\"frac56\":\"⅚\",\"frac58\":\"⅝\",\"frac78\":\"⅞\",\"frasl\":\"⁄\",\"frown\":\"⌢\",\"fscr\":\"𝒻\",\"Fscr\":\"ℱ\",\"gacute\":\"ǵ\",\"Gamma\":\"Γ\",\"gamma\":\"γ\",\"Gammad\":\"Ϝ\",\"gammad\":\"ϝ\",\"gap\":\"⪆\",\"Gbreve\":\"Ğ\",\"gbreve\":\"ğ\",\"Gcedil\":\"Ģ\",\"Gcirc\":\"Ĝ\",\"gcirc\":\"ĝ\",\"Gcy\":\"Г\",\"gcy\":\"г\",\"Gdot\":\"Ġ\",\"gdot\":\"ġ\",\"ge\":\"≥\",\"gE\":\"≧\",\"gEl\":\"⪌\",\"gel\":\"⋛\",\"geq\":\"≥\",\"geqq\":\"≧\",\"geqslant\":\"⩾\",\"gescc\":\"⪩\",\"ges\":\"⩾\",\"gesdot\":\"⪀\",\"gesdoto\":\"⪂\",\"gesdotol\":\"⪄\",\"gesl\":\"⋛︀\",\"gesles\":\"⪔\",\"Gfr\":\"𝔊\",\"gfr\":\"𝔤\",\"gg\":\"≫\",\"Gg\":\"⋙\",\"ggg\":\"⋙\",\"gimel\":\"ℷ\",\"GJcy\":\"Ѓ\",\"gjcy\":\"ѓ\",\"gla\":\"⪥\",\"gl\":\"≷\",\"glE\":\"⪒\",\"glj\":\"⪤\",\"gnap\":\"⪊\",\"gnapprox\":\"⪊\",\"gne\":\"⪈\",\"gnE\":\"≩\",\"gneq\":\"⪈\",\"gneqq\":\"≩\",\"gnsim\":\"⋧\",\"Gopf\":\"𝔾\",\"gopf\":\"𝕘\",\"grave\":\"`\",\"GreaterEqual\":\"≥\",\"GreaterEqualLess\":\"⋛\",\"GreaterFullEqual\":\"≧\",\"GreaterGreater\":\"⪢\",\"GreaterLess\":\"≷\",\"GreaterSlantEqual\":\"⩾\",\"GreaterTilde\":\"≳\",\"Gscr\":\"𝒢\",\"gscr\":\"ℊ\",\"gsim\":\"≳\",\"gsime\":\"⪎\",\"gsiml\":\"⪐\",\"gtcc\":\"⪧\",\"gtcir\":\"⩺\",\"gt\":\">\",\"GT\":\">\",\"Gt\":\"≫\",\"gtdot\":\"⋗\",\"gtlPar\":\"⦕\",\"gtquest\":\"⩼\",\"gtrapprox\":\"⪆\",\"gtrarr\":\"⥸\",\"gtrdot\":\"⋗\",\"gtreqless\":\"⋛\",\"gtreqqless\":\"⪌\",\"gtrless\":\"≷\",\"gtrsim\":\"≳\",\"gvertneqq\":\"≩︀\",\"gvnE\":\"≩︀\",\"Hacek\":\"ˇ\",\"hairsp\":\" \",\"half\":\"½\",\"hamilt\":\"ℋ\",\"HARDcy\":\"Ъ\",\"hardcy\":\"ъ\",\"harrcir\":\"⥈\",\"harr\":\"↔\",\"hArr\":\"⇔\",\"harrw\":\"↭\",\"Hat\":\"^\",\"hbar\":\"ℏ\",\"Hcirc\":\"Ĥ\",\"hcirc\":\"ĥ\",\"hearts\":\"♥\",\"heartsuit\":\"♥\",\"hellip\":\"…\",\"hercon\":\"⊹\",\"hfr\":\"𝔥\",\"Hfr\":\"ℌ\",\"HilbertSpace\":\"ℋ\",\"hksearow\":\"⤥\",\"hkswarow\":\"⤦\",\"hoarr\":\"⇿\",\"homtht\":\"∻\",\"hookleftarrow\":\"↩\",\"hookrightarrow\":\"↪\",\"hopf\":\"𝕙\",\"Hopf\":\"ℍ\",\"horbar\":\"―\",\"HorizontalLine\":\"─\",\"hscr\":\"𝒽\",\"Hscr\":\"ℋ\",\"hslash\":\"ℏ\",\"Hstrok\":\"Ħ\",\"hstrok\":\"ħ\",\"HumpDownHump\":\"≎\",\"HumpEqual\":\"≏\",\"hybull\":\"⁃\",\"hyphen\":\"‐\",\"Iacute\":\"Í\",\"iacute\":\"í\",\"ic\":\"⁣\",\"Icirc\":\"Î\",\"icirc\":\"î\",\"Icy\":\"И\",\"icy\":\"и\",\"Idot\":\"İ\",\"IEcy\":\"Е\",\"iecy\":\"е\",\"iexcl\":\"¡\",\"iff\":\"⇔\",\"ifr\":\"𝔦\",\"Ifr\":\"ℑ\",\"Igrave\":\"Ì\",\"igrave\":\"ì\",\"ii\":\"ⅈ\",\"iiiint\":\"⨌\",\"iiint\":\"∭\",\"iinfin\":\"⧜\",\"iiota\":\"℩\",\"IJlig\":\"Ĳ\",\"ijlig\":\"ĳ\",\"Imacr\":\"Ī\",\"imacr\":\"ī\",\"image\":\"ℑ\",\"ImaginaryI\":\"ⅈ\",\"imagline\":\"ℐ\",\"imagpart\":\"ℑ\",\"imath\":\"ı\",\"Im\":\"ℑ\",\"imof\":\"⊷\",\"imped\":\"Ƶ\",\"Implies\":\"⇒\",\"incare\":\"℅\",\"in\":\"∈\",\"infin\":\"∞\",\"infintie\":\"⧝\",\"inodot\":\"ı\",\"intcal\":\"⊺\",\"int\":\"∫\",\"Int\":\"∬\",\"integers\":\"ℤ\",\"Integral\":\"∫\",\"intercal\":\"⊺\",\"Intersection\":\"⋂\",\"intlarhk\":\"⨗\",\"intprod\":\"⨼\",\"InvisibleComma\":\"⁣\",\"InvisibleTimes\":\"⁢\",\"IOcy\":\"Ё\",\"iocy\":\"ё\",\"Iogon\":\"Į\",\"iogon\":\"į\",\"Iopf\":\"𝕀\",\"iopf\":\"𝕚\",\"Iota\":\"Ι\",\"iota\":\"ι\",\"iprod\":\"⨼\",\"iquest\":\"¿\",\"iscr\":\"𝒾\",\"Iscr\":\"ℐ\",\"isin\":\"∈\",\"isindot\":\"⋵\",\"isinE\":\"⋹\",\"isins\":\"⋴\",\"isinsv\":\"⋳\",\"isinv\":\"∈\",\"it\":\"⁢\",\"Itilde\":\"Ĩ\",\"itilde\":\"ĩ\",\"Iukcy\":\"І\",\"iukcy\":\"і\",\"Iuml\":\"Ï\",\"iuml\":\"ï\",\"Jcirc\":\"Ĵ\",\"jcirc\":\"ĵ\",\"Jcy\":\"Й\",\"jcy\":\"й\",\"Jfr\":\"𝔍\",\"jfr\":\"𝔧\",\"jmath\":\"ȷ\",\"Jopf\":\"𝕁\",\"jopf\":\"𝕛\",\"Jscr\":\"𝒥\",\"jscr\":\"𝒿\",\"Jsercy\":\"Ј\",\"jsercy\":\"ј\",\"Jukcy\":\"Є\",\"jukcy\":\"є\",\"Kappa\":\"Κ\",\"kappa\":\"κ\",\"kappav\":\"ϰ\",\"Kcedil\":\"Ķ\",\"kcedil\":\"ķ\",\"Kcy\":\"К\",\"kcy\":\"к\",\"Kfr\":\"𝔎\",\"kfr\":\"𝔨\",\"kgreen\":\"ĸ\",\"KHcy\":\"Х\",\"khcy\":\"х\",\"KJcy\":\"Ќ\",\"kjcy\":\"ќ\",\"Kopf\":\"𝕂\",\"kopf\":\"𝕜\",\"Kscr\":\"𝒦\",\"kscr\":\"𝓀\",\"lAarr\":\"⇚\",\"Lacute\":\"Ĺ\",\"lacute\":\"ĺ\",\"laemptyv\":\"⦴\",\"lagran\":\"ℒ\",\"Lambda\":\"Λ\",\"lambda\":\"λ\",\"lang\":\"⟨\",\"Lang\":\"⟪\",\"langd\":\"⦑\",\"langle\":\"⟨\",\"lap\":\"⪅\",\"Laplacetrf\":\"ℒ\",\"laquo\":\"«\",\"larrb\":\"⇤\",\"larrbfs\":\"⤟\",\"larr\":\"←\",\"Larr\":\"↞\",\"lArr\":\"⇐\",\"larrfs\":\"⤝\",\"larrhk\":\"↩\",\"larrlp\":\"↫\",\"larrpl\":\"⤹\",\"larrsim\":\"⥳\",\"larrtl\":\"↢\",\"latail\":\"⤙\",\"lAtail\":\"⤛\",\"lat\":\"⪫\",\"late\":\"⪭\",\"lates\":\"⪭︀\",\"lbarr\":\"⤌\",\"lBarr\":\"⤎\",\"lbbrk\":\"❲\",\"lbrace\":\"{\",\"lbrack\":\"[\",\"lbrke\":\"⦋\",\"lbrksld\":\"⦏\",\"lbrkslu\":\"⦍\",\"Lcaron\":\"Ľ\",\"lcaron\":\"ľ\",\"Lcedil\":\"Ļ\",\"lcedil\":\"ļ\",\"lceil\":\"⌈\",\"lcub\":\"{\",\"Lcy\":\"Л\",\"lcy\":\"л\",\"ldca\":\"⤶\",\"ldquo\":\"“\",\"ldquor\":\"„\",\"ldrdhar\":\"⥧\",\"ldrushar\":\"⥋\",\"ldsh\":\"↲\",\"le\":\"≤\",\"lE\":\"≦\",\"LeftAngleBracket\":\"⟨\",\"LeftArrowBar\":\"⇤\",\"leftarrow\":\"←\",\"LeftArrow\":\"←\",\"Leftarrow\":\"⇐\",\"LeftArrowRightArrow\":\"⇆\",\"leftarrowtail\":\"↢\",\"LeftCeiling\":\"⌈\",\"LeftDoubleBracket\":\"⟦\",\"LeftDownTeeVector\":\"⥡\",\"LeftDownVectorBar\":\"⥙\",\"LeftDownVector\":\"⇃\",\"LeftFloor\":\"⌊\",\"leftharpoondown\":\"↽\",\"leftharpoonup\":\"↼\",\"leftleftarrows\":\"⇇\",\"leftrightarrow\":\"↔\",\"LeftRightArrow\":\"↔\",\"Leftrightarrow\":\"⇔\",\"leftrightarrows\":\"⇆\",\"leftrightharpoons\":\"⇋\",\"leftrightsquigarrow\":\"↭\",\"LeftRightVector\":\"⥎\",\"LeftTeeArrow\":\"↤\",\"LeftTee\":\"⊣\",\"LeftTeeVector\":\"⥚\",\"leftthreetimes\":\"⋋\",\"LeftTriangleBar\":\"⧏\",\"LeftTriangle\":\"⊲\",\"LeftTriangleEqual\":\"⊴\",\"LeftUpDownVector\":\"⥑\",\"LeftUpTeeVector\":\"⥠\",\"LeftUpVectorBar\":\"⥘\",\"LeftUpVector\":\"↿\",\"LeftVectorBar\":\"⥒\",\"LeftVector\":\"↼\",\"lEg\":\"⪋\",\"leg\":\"⋚\",\"leq\":\"≤\",\"leqq\":\"≦\",\"leqslant\":\"⩽\",\"lescc\":\"⪨\",\"les\":\"⩽\",\"lesdot\":\"⩿\",\"lesdoto\":\"⪁\",\"lesdotor\":\"⪃\",\"lesg\":\"⋚︀\",\"lesges\":\"⪓\",\"lessapprox\":\"⪅\",\"lessdot\":\"⋖\",\"lesseqgtr\":\"⋚\",\"lesseqqgtr\":\"⪋\",\"LessEqualGreater\":\"⋚\",\"LessFullEqual\":\"≦\",\"LessGreater\":\"≶\",\"lessgtr\":\"≶\",\"LessLess\":\"⪡\",\"lesssim\":\"≲\",\"LessSlantEqual\":\"⩽\",\"LessTilde\":\"≲\",\"lfisht\":\"⥼\",\"lfloor\":\"⌊\",\"Lfr\":\"𝔏\",\"lfr\":\"𝔩\",\"lg\":\"≶\",\"lgE\":\"⪑\",\"lHar\":\"⥢\",\"lhard\":\"↽\",\"lharu\":\"↼\",\"lharul\":\"⥪\",\"lhblk\":\"▄\",\"LJcy\":\"Љ\",\"ljcy\":\"љ\",\"llarr\":\"⇇\",\"ll\":\"≪\",\"Ll\":\"⋘\",\"llcorner\":\"⌞\",\"Lleftarrow\":\"⇚\",\"llhard\":\"⥫\",\"lltri\":\"◺\",\"Lmidot\":\"Ŀ\",\"lmidot\":\"ŀ\",\"lmoustache\":\"⎰\",\"lmoust\":\"⎰\",\"lnap\":\"⪉\",\"lnapprox\":\"⪉\",\"lne\":\"⪇\",\"lnE\":\"≨\",\"lneq\":\"⪇\",\"lneqq\":\"≨\",\"lnsim\":\"⋦\",\"loang\":\"⟬\",\"loarr\":\"⇽\",\"lobrk\":\"⟦\",\"longleftarrow\":\"⟵\",\"LongLeftArrow\":\"⟵\",\"Longleftarrow\":\"⟸\",\"longleftrightarrow\":\"⟷\",\"LongLeftRightArrow\":\"⟷\",\"Longleftrightarrow\":\"⟺\",\"longmapsto\":\"⟼\",\"longrightarrow\":\"⟶\",\"LongRightArrow\":\"⟶\",\"Longrightarrow\":\"⟹\",\"looparrowleft\":\"↫\",\"looparrowright\":\"↬\",\"lopar\":\"⦅\",\"Lopf\":\"𝕃\",\"lopf\":\"𝕝\",\"loplus\":\"⨭\",\"lotimes\":\"⨴\",\"lowast\":\"∗\",\"lowbar\":\"_\",\"LowerLeftArrow\":\"↙\",\"LowerRightArrow\":\"↘\",\"loz\":\"◊\",\"lozenge\":\"◊\",\"lozf\":\"⧫\",\"lpar\":\"(\",\"lparlt\":\"⦓\",\"lrarr\":\"⇆\",\"lrcorner\":\"⌟\",\"lrhar\":\"⇋\",\"lrhard\":\"⥭\",\"lrm\":\"‎\",\"lrtri\":\"⊿\",\"lsaquo\":\"‹\",\"lscr\":\"𝓁\",\"Lscr\":\"ℒ\",\"lsh\":\"↰\",\"Lsh\":\"↰\",\"lsim\":\"≲\",\"lsime\":\"⪍\",\"lsimg\":\"⪏\",\"lsqb\":\"[\",\"lsquo\":\"‘\",\"lsquor\":\"‚\",\"Lstrok\":\"Ł\",\"lstrok\":\"ł\",\"ltcc\":\"⪦\",\"ltcir\":\"⩹\",\"lt\":\"<\",\"LT\":\"<\",\"Lt\":\"≪\",\"ltdot\":\"⋖\",\"lthree\":\"⋋\",\"ltimes\":\"⋉\",\"ltlarr\":\"⥶\",\"ltquest\":\"⩻\",\"ltri\":\"◃\",\"ltrie\":\"⊴\",\"ltrif\":\"◂\",\"ltrPar\":\"⦖\",\"lurdshar\":\"⥊\",\"luruhar\":\"⥦\",\"lvertneqq\":\"≨︀\",\"lvnE\":\"≨︀\",\"macr\":\"¯\",\"male\":\"♂\",\"malt\":\"✠\",\"maltese\":\"✠\",\"Map\":\"⤅\",\"map\":\"↦\",\"mapsto\":\"↦\",\"mapstodown\":\"↧\",\"mapstoleft\":\"↤\",\"mapstoup\":\"↥\",\"marker\":\"▮\",\"mcomma\":\"⨩\",\"Mcy\":\"М\",\"mcy\":\"м\",\"mdash\":\"—\",\"mDDot\":\"∺\",\"measuredangle\":\"∡\",\"MediumSpace\":\" \",\"Mellintrf\":\"ℳ\",\"Mfr\":\"𝔐\",\"mfr\":\"𝔪\",\"mho\":\"℧\",\"micro\":\"µ\",\"midast\":\"*\",\"midcir\":\"⫰\",\"mid\":\"∣\",\"middot\":\"·\",\"minusb\":\"⊟\",\"minus\":\"−\",\"minusd\":\"∸\",\"minusdu\":\"⨪\",\"MinusPlus\":\"∓\",\"mlcp\":\"⫛\",\"mldr\":\"…\",\"mnplus\":\"∓\",\"models\":\"⊧\",\"Mopf\":\"𝕄\",\"mopf\":\"𝕞\",\"mp\":\"∓\",\"mscr\":\"𝓂\",\"Mscr\":\"ℳ\",\"mstpos\":\"∾\",\"Mu\":\"Μ\",\"mu\":\"μ\",\"multimap\":\"⊸\",\"mumap\":\"⊸\",\"nabla\":\"∇\",\"Nacute\":\"Ń\",\"nacute\":\"ń\",\"nang\":\"∠⃒\",\"nap\":\"≉\",\"napE\":\"⩰̸\",\"napid\":\"≋̸\",\"napos\":\"ŉ\",\"napprox\":\"≉\",\"natural\":\"♮\",\"naturals\":\"ℕ\",\"natur\":\"♮\",\"nbsp\":\" \",\"nbump\":\"≎̸\",\"nbumpe\":\"≏̸\",\"ncap\":\"⩃\",\"Ncaron\":\"Ň\",\"ncaron\":\"ň\",\"Ncedil\":\"Ņ\",\"ncedil\":\"ņ\",\"ncong\":\"≇\",\"ncongdot\":\"⩭̸\",\"ncup\":\"⩂\",\"Ncy\":\"Н\",\"ncy\":\"н\",\"ndash\":\"–\",\"nearhk\":\"⤤\",\"nearr\":\"↗\",\"neArr\":\"⇗\",\"nearrow\":\"↗\",\"ne\":\"≠\",\"nedot\":\"≐̸\",\"NegativeMediumSpace\":\"​\",\"NegativeThickSpace\":\"​\",\"NegativeThinSpace\":\"​\",\"NegativeVeryThinSpace\":\"​\",\"nequiv\":\"≢\",\"nesear\":\"⤨\",\"nesim\":\"≂̸\",\"NestedGreaterGreater\":\"≫\",\"NestedLessLess\":\"≪\",\"NewLine\":\"\\\\n\",\"nexist\":\"∄\",\"nexists\":\"∄\",\"Nfr\":\"𝔑\",\"nfr\":\"𝔫\",\"ngE\":\"≧̸\",\"nge\":\"≱\",\"ngeq\":\"≱\",\"ngeqq\":\"≧̸\",\"ngeqslant\":\"⩾̸\",\"nges\":\"⩾̸\",\"nGg\":\"⋙̸\",\"ngsim\":\"≵\",\"nGt\":\"≫⃒\",\"ngt\":\"≯\",\"ngtr\":\"≯\",\"nGtv\":\"≫̸\",\"nharr\":\"↮\",\"nhArr\":\"⇎\",\"nhpar\":\"⫲\",\"ni\":\"∋\",\"nis\":\"⋼\",\"nisd\":\"⋺\",\"niv\":\"∋\",\"NJcy\":\"Њ\",\"njcy\":\"њ\",\"nlarr\":\"↚\",\"nlArr\":\"⇍\",\"nldr\":\"‥\",\"nlE\":\"≦̸\",\"nle\":\"≰\",\"nleftarrow\":\"↚\",\"nLeftarrow\":\"⇍\",\"nleftrightarrow\":\"↮\",\"nLeftrightarrow\":\"⇎\",\"nleq\":\"≰\",\"nleqq\":\"≦̸\",\"nleqslant\":\"⩽̸\",\"nles\":\"⩽̸\",\"nless\":\"≮\",\"nLl\":\"⋘̸\",\"nlsim\":\"≴\",\"nLt\":\"≪⃒\",\"nlt\":\"≮\",\"nltri\":\"⋪\",\"nltrie\":\"⋬\",\"nLtv\":\"≪̸\",\"nmid\":\"∤\",\"NoBreak\":\"⁠\",\"NonBreakingSpace\":\" \",\"nopf\":\"𝕟\",\"Nopf\":\"ℕ\",\"Not\":\"⫬\",\"not\":\"¬\",\"NotCongruent\":\"≢\",\"NotCupCap\":\"≭\",\"NotDoubleVerticalBar\":\"∦\",\"NotElement\":\"∉\",\"NotEqual\":\"≠\",\"NotEqualTilde\":\"≂̸\",\"NotExists\":\"∄\",\"NotGreater\":\"≯\",\"NotGreaterEqual\":\"≱\",\"NotGreaterFullEqual\":\"≧̸\",\"NotGreaterGreater\":\"≫̸\",\"NotGreaterLess\":\"≹\",\"NotGreaterSlantEqual\":\"⩾̸\",\"NotGreaterTilde\":\"≵\",\"NotHumpDownHump\":\"≎̸\",\"NotHumpEqual\":\"≏̸\",\"notin\":\"∉\",\"notindot\":\"⋵̸\",\"notinE\":\"⋹̸\",\"notinva\":\"∉\",\"notinvb\":\"⋷\",\"notinvc\":\"⋶\",\"NotLeftTriangleBar\":\"⧏̸\",\"NotLeftTriangle\":\"⋪\",\"NotLeftTriangleEqual\":\"⋬\",\"NotLess\":\"≮\",\"NotLessEqual\":\"≰\",\"NotLessGreater\":\"≸\",\"NotLessLess\":\"≪̸\",\"NotLessSlantEqual\":\"⩽̸\",\"NotLessTilde\":\"≴\",\"NotNestedGreaterGreater\":\"⪢̸\",\"NotNestedLessLess\":\"⪡̸\",\"notni\":\"∌\",\"notniva\":\"∌\",\"notnivb\":\"⋾\",\"notnivc\":\"⋽\",\"NotPrecedes\":\"⊀\",\"NotPrecedesEqual\":\"⪯̸\",\"NotPrecedesSlantEqual\":\"⋠\",\"NotReverseElement\":\"∌\",\"NotRightTriangleBar\":\"⧐̸\",\"NotRightTriangle\":\"⋫\",\"NotRightTriangleEqual\":\"⋭\",\"NotSquareSubset\":\"⊏̸\",\"NotSquareSubsetEqual\":\"⋢\",\"NotSquareSuperset\":\"⊐̸\",\"NotSquareSupersetEqual\":\"⋣\",\"NotSubset\":\"⊂⃒\",\"NotSubsetEqual\":\"⊈\",\"NotSucceeds\":\"⊁\",\"NotSucceedsEqual\":\"⪰̸\",\"NotSucceedsSlantEqual\":\"⋡\",\"NotSucceedsTilde\":\"≿̸\",\"NotSuperset\":\"⊃⃒\",\"NotSupersetEqual\":\"⊉\",\"NotTilde\":\"≁\",\"NotTildeEqual\":\"≄\",\"NotTildeFullEqual\":\"≇\",\"NotTildeTilde\":\"≉\",\"NotVerticalBar\":\"∤\",\"nparallel\":\"∦\",\"npar\":\"∦\",\"nparsl\":\"⫽⃥\",\"npart\":\"∂̸\",\"npolint\":\"⨔\",\"npr\":\"⊀\",\"nprcue\":\"⋠\",\"nprec\":\"⊀\",\"npreceq\":\"⪯̸\",\"npre\":\"⪯̸\",\"nrarrc\":\"⤳̸\",\"nrarr\":\"↛\",\"nrArr\":\"⇏\",\"nrarrw\":\"↝̸\",\"nrightarrow\":\"↛\",\"nRightarrow\":\"⇏\",\"nrtri\":\"⋫\",\"nrtrie\":\"⋭\",\"nsc\":\"⊁\",\"nsccue\":\"⋡\",\"nsce\":\"⪰̸\",\"Nscr\":\"𝒩\",\"nscr\":\"𝓃\",\"nshortmid\":\"∤\",\"nshortparallel\":\"∦\",\"nsim\":\"≁\",\"nsime\":\"≄\",\"nsimeq\":\"≄\",\"nsmid\":\"∤\",\"nspar\":\"∦\",\"nsqsube\":\"⋢\",\"nsqsupe\":\"⋣\",\"nsub\":\"⊄\",\"nsubE\":\"⫅̸\",\"nsube\":\"⊈\",\"nsubset\":\"⊂⃒\",\"nsubseteq\":\"⊈\",\"nsubseteqq\":\"⫅̸\",\"nsucc\":\"⊁\",\"nsucceq\":\"⪰̸\",\"nsup\":\"⊅\",\"nsupE\":\"⫆̸\",\"nsupe\":\"⊉\",\"nsupset\":\"⊃⃒\",\"nsupseteq\":\"⊉\",\"nsupseteqq\":\"⫆̸\",\"ntgl\":\"≹\",\"Ntilde\":\"Ñ\",\"ntilde\":\"ñ\",\"ntlg\":\"≸\",\"ntriangleleft\":\"⋪\",\"ntrianglelefteq\":\"⋬\",\"ntriangleright\":\"⋫\",\"ntrianglerighteq\":\"⋭\",\"Nu\":\"Ν\",\"nu\":\"ν\",\"num\":\"#\",\"numero\":\"№\",\"numsp\":\" \",\"nvap\":\"≍⃒\",\"nvdash\":\"⊬\",\"nvDash\":\"⊭\",\"nVdash\":\"⊮\",\"nVDash\":\"⊯\",\"nvge\":\"≥⃒\",\"nvgt\":\">⃒\",\"nvHarr\":\"⤄\",\"nvinfin\":\"⧞\",\"nvlArr\":\"⤂\",\"nvle\":\"≤⃒\",\"nvlt\":\"<⃒\",\"nvltrie\":\"⊴⃒\",\"nvrArr\":\"⤃\",\"nvrtrie\":\"⊵⃒\",\"nvsim\":\"∼⃒\",\"nwarhk\":\"⤣\",\"nwarr\":\"↖\",\"nwArr\":\"⇖\",\"nwarrow\":\"↖\",\"nwnear\":\"⤧\",\"Oacute\":\"Ó\",\"oacute\":\"ó\",\"oast\":\"⊛\",\"Ocirc\":\"Ô\",\"ocirc\":\"ô\",\"ocir\":\"⊚\",\"Ocy\":\"О\",\"ocy\":\"о\",\"odash\":\"⊝\",\"Odblac\":\"Ő\",\"odblac\":\"ő\",\"odiv\":\"⨸\",\"odot\":\"⊙\",\"odsold\":\"⦼\",\"OElig\":\"Œ\",\"oelig\":\"œ\",\"ofcir\":\"⦿\",\"Ofr\":\"𝔒\",\"ofr\":\"𝔬\",\"ogon\":\"˛\",\"Ograve\":\"Ò\",\"ograve\":\"ò\",\"ogt\":\"⧁\",\"ohbar\":\"⦵\",\"ohm\":\"Ω\",\"oint\":\"∮\",\"olarr\":\"↺\",\"olcir\":\"⦾\",\"olcross\":\"⦻\",\"oline\":\"‾\",\"olt\":\"⧀\",\"Omacr\":\"Ō\",\"omacr\":\"ō\",\"Omega\":\"Ω\",\"omega\":\"ω\",\"Omicron\":\"Ο\",\"omicron\":\"ο\",\"omid\":\"⦶\",\"ominus\":\"⊖\",\"Oopf\":\"𝕆\",\"oopf\":\"𝕠\",\"opar\":\"⦷\",\"OpenCurlyDoubleQuote\":\"“\",\"OpenCurlyQuote\":\"‘\",\"operp\":\"⦹\",\"oplus\":\"⊕\",\"orarr\":\"↻\",\"Or\":\"⩔\",\"or\":\"∨\",\"ord\":\"⩝\",\"order\":\"ℴ\",\"orderof\":\"ℴ\",\"ordf\":\"ª\",\"ordm\":\"º\",\"origof\":\"⊶\",\"oror\":\"⩖\",\"orslope\":\"⩗\",\"orv\":\"⩛\",\"oS\":\"Ⓢ\",\"Oscr\":\"𝒪\",\"oscr\":\"ℴ\",\"Oslash\":\"Ø\",\"oslash\":\"ø\",\"osol\":\"⊘\",\"Otilde\":\"Õ\",\"otilde\":\"õ\",\"otimesas\":\"⨶\",\"Otimes\":\"⨷\",\"otimes\":\"⊗\",\"Ouml\":\"Ö\",\"ouml\":\"ö\",\"ovbar\":\"⌽\",\"OverBar\":\"‾\",\"OverBrace\":\"⏞\",\"OverBracket\":\"⎴\",\"OverParenthesis\":\"⏜\",\"para\":\"¶\",\"parallel\":\"∥\",\"par\":\"∥\",\"parsim\":\"⫳\",\"parsl\":\"⫽\",\"part\":\"∂\",\"PartialD\":\"∂\",\"Pcy\":\"П\",\"pcy\":\"п\",\"percnt\":\"%\",\"period\":\".\",\"permil\":\"‰\",\"perp\":\"⊥\",\"pertenk\":\"‱\",\"Pfr\":\"𝔓\",\"pfr\":\"𝔭\",\"Phi\":\"Φ\",\"phi\":\"φ\",\"phiv\":\"ϕ\",\"phmmat\":\"ℳ\",\"phone\":\"☎\",\"Pi\":\"Π\",\"pi\":\"π\",\"pitchfork\":\"⋔\",\"piv\":\"ϖ\",\"planck\":\"ℏ\",\"planckh\":\"ℎ\",\"plankv\":\"ℏ\",\"plusacir\":\"⨣\",\"plusb\":\"⊞\",\"pluscir\":\"⨢\",\"plus\":\"+\",\"plusdo\":\"∔\",\"plusdu\":\"⨥\",\"pluse\":\"⩲\",\"PlusMinus\":\"±\",\"plusmn\":\"±\",\"plussim\":\"⨦\",\"plustwo\":\"⨧\",\"pm\":\"±\",\"Poincareplane\":\"ℌ\",\"pointint\":\"⨕\",\"popf\":\"𝕡\",\"Popf\":\"ℙ\",\"pound\":\"£\",\"prap\":\"⪷\",\"Pr\":\"⪻\",\"pr\":\"≺\",\"prcue\":\"≼\",\"precapprox\":\"⪷\",\"prec\":\"≺\",\"preccurlyeq\":\"≼\",\"Precedes\":\"≺\",\"PrecedesEqual\":\"⪯\",\"PrecedesSlantEqual\":\"≼\",\"PrecedesTilde\":\"≾\",\"preceq\":\"⪯\",\"precnapprox\":\"⪹\",\"precneqq\":\"⪵\",\"precnsim\":\"⋨\",\"pre\":\"⪯\",\"prE\":\"⪳\",\"precsim\":\"≾\",\"prime\":\"′\",\"Prime\":\"″\",\"primes\":\"ℙ\",\"prnap\":\"⪹\",\"prnE\":\"⪵\",\"prnsim\":\"⋨\",\"prod\":\"∏\",\"Product\":\"∏\",\"profalar\":\"⌮\",\"profline\":\"⌒\",\"profsurf\":\"⌓\",\"prop\":\"∝\",\"Proportional\":\"∝\",\"Proportion\":\"∷\",\"propto\":\"∝\",\"prsim\":\"≾\",\"prurel\":\"⊰\",\"Pscr\":\"𝒫\",\"pscr\":\"𝓅\",\"Psi\":\"Ψ\",\"psi\":\"ψ\",\"puncsp\":\" \",\"Qfr\":\"𝔔\",\"qfr\":\"𝔮\",\"qint\":\"⨌\",\"qopf\":\"𝕢\",\"Qopf\":\"ℚ\",\"qprime\":\"⁗\",\"Qscr\":\"𝒬\",\"qscr\":\"𝓆\",\"quaternions\":\"ℍ\",\"quatint\":\"⨖\",\"quest\":\"?\",\"questeq\":\"≟\",\"quot\":\"\\\\\"\",\"QUOT\":\"\\\\\"\",\"rAarr\":\"⇛\",\"race\":\"∽̱\",\"Racute\":\"Ŕ\",\"racute\":\"ŕ\",\"radic\":\"√\",\"raemptyv\":\"⦳\",\"rang\":\"⟩\",\"Rang\":\"⟫\",\"rangd\":\"⦒\",\"range\":\"⦥\",\"rangle\":\"⟩\",\"raquo\":\"»\",\"rarrap\":\"⥵\",\"rarrb\":\"⇥\",\"rarrbfs\":\"⤠\",\"rarrc\":\"⤳\",\"rarr\":\"→\",\"Rarr\":\"↠\",\"rArr\":\"⇒\",\"rarrfs\":\"⤞\",\"rarrhk\":\"↪\",\"rarrlp\":\"↬\",\"rarrpl\":\"⥅\",\"rarrsim\":\"⥴\",\"Rarrtl\":\"⤖\",\"rarrtl\":\"↣\",\"rarrw\":\"↝\",\"ratail\":\"⤚\",\"rAtail\":\"⤜\",\"ratio\":\"∶\",\"rationals\":\"ℚ\",\"rbarr\":\"⤍\",\"rBarr\":\"⤏\",\"RBarr\":\"⤐\",\"rbbrk\":\"❳\",\"rbrace\":\"}\",\"rbrack\":\"]\",\"rbrke\":\"⦌\",\"rbrksld\":\"⦎\",\"rbrkslu\":\"⦐\",\"Rcaron\":\"Ř\",\"rcaron\":\"ř\",\"Rcedil\":\"Ŗ\",\"rcedil\":\"ŗ\",\"rceil\":\"⌉\",\"rcub\":\"}\",\"Rcy\":\"Р\",\"rcy\":\"р\",\"rdca\":\"⤷\",\"rdldhar\":\"⥩\",\"rdquo\":\"”\",\"rdquor\":\"”\",\"rdsh\":\"↳\",\"real\":\"ℜ\",\"realine\":\"ℛ\",\"realpart\":\"ℜ\",\"reals\":\"ℝ\",\"Re\":\"ℜ\",\"rect\":\"▭\",\"reg\":\"®\",\"REG\":\"®\",\"ReverseElement\":\"∋\",\"ReverseEquilibrium\":\"⇋\",\"ReverseUpEquilibrium\":\"⥯\",\"rfisht\":\"⥽\",\"rfloor\":\"⌋\",\"rfr\":\"𝔯\",\"Rfr\":\"ℜ\",\"rHar\":\"⥤\",\"rhard\":\"⇁\",\"rharu\":\"⇀\",\"rharul\":\"⥬\",\"Rho\":\"Ρ\",\"rho\":\"ρ\",\"rhov\":\"ϱ\",\"RightAngleBracket\":\"⟩\",\"RightArrowBar\":\"⇥\",\"rightarrow\":\"→\",\"RightArrow\":\"→\",\"Rightarrow\":\"⇒\",\"RightArrowLeftArrow\":\"⇄\",\"rightarrowtail\":\"↣\",\"RightCeiling\":\"⌉\",\"RightDoubleBracket\":\"⟧\",\"RightDownTeeVector\":\"⥝\",\"RightDownVectorBar\":\"⥕\",\"RightDownVector\":\"⇂\",\"RightFloor\":\"⌋\",\"rightharpoondown\":\"⇁\",\"rightharpoonup\":\"⇀\",\"rightleftarrows\":\"⇄\",\"rightleftharpoons\":\"⇌\",\"rightrightarrows\":\"⇉\",\"rightsquigarrow\":\"↝\",\"RightTeeArrow\":\"↦\",\"RightTee\":\"⊢\",\"RightTeeVector\":\"⥛\",\"rightthreetimes\":\"⋌\",\"RightTriangleBar\":\"⧐\",\"RightTriangle\":\"⊳\",\"RightTriangleEqual\":\"⊵\",\"RightUpDownVector\":\"⥏\",\"RightUpTeeVector\":\"⥜\",\"RightUpVectorBar\":\"⥔\",\"RightUpVector\":\"↾\",\"RightVectorBar\":\"⥓\",\"RightVector\":\"⇀\",\"ring\":\"˚\",\"risingdotseq\":\"≓\",\"rlarr\":\"⇄\",\"rlhar\":\"⇌\",\"rlm\":\"‏\",\"rmoustache\":\"⎱\",\"rmoust\":\"⎱\",\"rnmid\":\"⫮\",\"roang\":\"⟭\",\"roarr\":\"⇾\",\"robrk\":\"⟧\",\"ropar\":\"⦆\",\"ropf\":\"𝕣\",\"Ropf\":\"ℝ\",\"roplus\":\"⨮\",\"rotimes\":\"⨵\",\"RoundImplies\":\"⥰\",\"rpar\":\")\",\"rpargt\":\"⦔\",\"rppolint\":\"⨒\",\"rrarr\":\"⇉\",\"Rrightarrow\":\"⇛\",\"rsaquo\":\"›\",\"rscr\":\"𝓇\",\"Rscr\":\"ℛ\",\"rsh\":\"↱\",\"Rsh\":\"↱\",\"rsqb\":\"]\",\"rsquo\":\"’\",\"rsquor\":\"’\",\"rthree\":\"⋌\",\"rtimes\":\"⋊\",\"rtri\":\"▹\",\"rtrie\":\"⊵\",\"rtrif\":\"▸\",\"rtriltri\":\"⧎\",\"RuleDelayed\":\"⧴\",\"ruluhar\":\"⥨\",\"rx\":\"℞\",\"Sacute\":\"Ś\",\"sacute\":\"ś\",\"sbquo\":\"‚\",\"scap\":\"⪸\",\"Scaron\":\"Š\",\"scaron\":\"š\",\"Sc\":\"⪼\",\"sc\":\"≻\",\"sccue\":\"≽\",\"sce\":\"⪰\",\"scE\":\"⪴\",\"Scedil\":\"Ş\",\"scedil\":\"ş\",\"Scirc\":\"Ŝ\",\"scirc\":\"ŝ\",\"scnap\":\"⪺\",\"scnE\":\"⪶\",\"scnsim\":\"⋩\",\"scpolint\":\"⨓\",\"scsim\":\"≿\",\"Scy\":\"С\",\"scy\":\"с\",\"sdotb\":\"⊡\",\"sdot\":\"⋅\",\"sdote\":\"⩦\",\"searhk\":\"⤥\",\"searr\":\"↘\",\"seArr\":\"⇘\",\"searrow\":\"↘\",\"sect\":\"§\",\"semi\":\";\",\"seswar\":\"⤩\",\"setminus\":\"∖\",\"setmn\":\"∖\",\"sext\":\"✶\",\"Sfr\":\"𝔖\",\"sfr\":\"𝔰\",\"sfrown\":\"⌢\",\"sharp\":\"♯\",\"SHCHcy\":\"Щ\",\"shchcy\":\"щ\",\"SHcy\":\"Ш\",\"shcy\":\"ш\",\"ShortDownArrow\":\"↓\",\"ShortLeftArrow\":\"←\",\"shortmid\":\"∣\",\"shortparallel\":\"∥\",\"ShortRightArrow\":\"→\",\"ShortUpArrow\":\"↑\",\"shy\":\"­\",\"Sigma\":\"Σ\",\"sigma\":\"σ\",\"sigmaf\":\"ς\",\"sigmav\":\"ς\",\"sim\":\"∼\",\"simdot\":\"⩪\",\"sime\":\"≃\",\"simeq\":\"≃\",\"simg\":\"⪞\",\"simgE\":\"⪠\",\"siml\":\"⪝\",\"simlE\":\"⪟\",\"simne\":\"≆\",\"simplus\":\"⨤\",\"simrarr\":\"⥲\",\"slarr\":\"←\",\"SmallCircle\":\"∘\",\"smallsetminus\":\"∖\",\"smashp\":\"⨳\",\"smeparsl\":\"⧤\",\"smid\":\"∣\",\"smile\":\"⌣\",\"smt\":\"⪪\",\"smte\":\"⪬\",\"smtes\":\"⪬︀\",\"SOFTcy\":\"Ь\",\"softcy\":\"ь\",\"solbar\":\"⌿\",\"solb\":\"⧄\",\"sol\":\"/\",\"Sopf\":\"𝕊\",\"sopf\":\"𝕤\",\"spades\":\"♠\",\"spadesuit\":\"♠\",\"spar\":\"∥\",\"sqcap\":\"⊓\",\"sqcaps\":\"⊓︀\",\"sqcup\":\"⊔\",\"sqcups\":\"⊔︀\",\"Sqrt\":\"√\",\"sqsub\":\"⊏\",\"sqsube\":\"⊑\",\"sqsubset\":\"⊏\",\"sqsubseteq\":\"⊑\",\"sqsup\":\"⊐\",\"sqsupe\":\"⊒\",\"sqsupset\":\"⊐\",\"sqsupseteq\":\"⊒\",\"square\":\"□\",\"Square\":\"□\",\"SquareIntersection\":\"⊓\",\"SquareSubset\":\"⊏\",\"SquareSubsetEqual\":\"⊑\",\"SquareSuperset\":\"⊐\",\"SquareSupersetEqual\":\"⊒\",\"SquareUnion\":\"⊔\",\"squarf\":\"▪\",\"squ\":\"□\",\"squf\":\"▪\",\"srarr\":\"→\",\"Sscr\":\"𝒮\",\"sscr\":\"𝓈\",\"ssetmn\":\"∖\",\"ssmile\":\"⌣\",\"sstarf\":\"⋆\",\"Star\":\"⋆\",\"star\":\"☆\",\"starf\":\"★\",\"straightepsilon\":\"ϵ\",\"straightphi\":\"ϕ\",\"strns\":\"¯\",\"sub\":\"⊂\",\"Sub\":\"⋐\",\"subdot\":\"⪽\",\"subE\":\"⫅\",\"sube\":\"⊆\",\"subedot\":\"⫃\",\"submult\":\"⫁\",\"subnE\":\"⫋\",\"subne\":\"⊊\",\"subplus\":\"⪿\",\"subrarr\":\"⥹\",\"subset\":\"⊂\",\"Subset\":\"⋐\",\"subseteq\":\"⊆\",\"subseteqq\":\"⫅\",\"SubsetEqual\":\"⊆\",\"subsetneq\":\"⊊\",\"subsetneqq\":\"⫋\",\"subsim\":\"⫇\",\"subsub\":\"⫕\",\"subsup\":\"⫓\",\"succapprox\":\"⪸\",\"succ\":\"≻\",\"succcurlyeq\":\"≽\",\"Succeeds\":\"≻\",\"SucceedsEqual\":\"⪰\",\"SucceedsSlantEqual\":\"≽\",\"SucceedsTilde\":\"≿\",\"succeq\":\"⪰\",\"succnapprox\":\"⪺\",\"succneqq\":\"⪶\",\"succnsim\":\"⋩\",\"succsim\":\"≿\",\"SuchThat\":\"∋\",\"sum\":\"∑\",\"Sum\":\"∑\",\"sung\":\"♪\",\"sup1\":\"¹\",\"sup2\":\"²\",\"sup3\":\"³\",\"sup\":\"⊃\",\"Sup\":\"⋑\",\"supdot\":\"⪾\",\"supdsub\":\"⫘\",\"supE\":\"⫆\",\"supe\":\"⊇\",\"supedot\":\"⫄\",\"Superset\":\"⊃\",\"SupersetEqual\":\"⊇\",\"suphsol\":\"⟉\",\"suphsub\":\"⫗\",\"suplarr\":\"⥻\",\"supmult\":\"⫂\",\"supnE\":\"⫌\",\"supne\":\"⊋\",\"supplus\":\"⫀\",\"supset\":\"⊃\",\"Supset\":\"⋑\",\"supseteq\":\"⊇\",\"supseteqq\":\"⫆\",\"supsetneq\":\"⊋\",\"supsetneqq\":\"⫌\",\"supsim\":\"⫈\",\"supsub\":\"⫔\",\"supsup\":\"⫖\",\"swarhk\":\"⤦\",\"swarr\":\"↙\",\"swArr\":\"⇙\",\"swarrow\":\"↙\",\"swnwar\":\"⤪\",\"szlig\":\"ß\",\"Tab\":\"\\\\t\",\"target\":\"⌖\",\"Tau\":\"Τ\",\"tau\":\"τ\",\"tbrk\":\"⎴\",\"Tcaron\":\"Ť\",\"tcaron\":\"ť\",\"Tcedil\":\"Ţ\",\"tcedil\":\"ţ\",\"Tcy\":\"Т\",\"tcy\":\"т\",\"tdot\":\"⃛\",\"telrec\":\"⌕\",\"Tfr\":\"𝔗\",\"tfr\":\"𝔱\",\"there4\":\"∴\",\"therefore\":\"∴\",\"Therefore\":\"∴\",\"Theta\":\"Θ\",\"theta\":\"θ\",\"thetasym\":\"ϑ\",\"thetav\":\"ϑ\",\"thickapprox\":\"≈\",\"thicksim\":\"∼\",\"ThickSpace\":\"  \",\"ThinSpace\":\" \",\"thinsp\":\" \",\"thkap\":\"≈\",\"thksim\":\"∼\",\"THORN\":\"Þ\",\"thorn\":\"þ\",\"tilde\":\"˜\",\"Tilde\":\"∼\",\"TildeEqual\":\"≃\",\"TildeFullEqual\":\"≅\",\"TildeTilde\":\"≈\",\"timesbar\":\"⨱\",\"timesb\":\"⊠\",\"times\":\"×\",\"timesd\":\"⨰\",\"tint\":\"∭\",\"toea\":\"⤨\",\"topbot\":\"⌶\",\"topcir\":\"⫱\",\"top\":\"⊤\",\"Topf\":\"𝕋\",\"topf\":\"𝕥\",\"topfork\":\"⫚\",\"tosa\":\"⤩\",\"tprime\":\"‴\",\"trade\":\"™\",\"TRADE\":\"™\",\"triangle\":\"▵\",\"triangledown\":\"▿\",\"triangleleft\":\"◃\",\"trianglelefteq\":\"⊴\",\"triangleq\":\"≜\",\"triangleright\":\"▹\",\"trianglerighteq\":\"⊵\",\"tridot\":\"◬\",\"trie\":\"≜\",\"triminus\":\"⨺\",\"TripleDot\":\"⃛\",\"triplus\":\"⨹\",\"trisb\":\"⧍\",\"tritime\":\"⨻\",\"trpezium\":\"⏢\",\"Tscr\":\"𝒯\",\"tscr\":\"𝓉\",\"TScy\":\"Ц\",\"tscy\":\"ц\",\"TSHcy\":\"Ћ\",\"tshcy\":\"ћ\",\"Tstrok\":\"Ŧ\",\"tstrok\":\"ŧ\",\"twixt\":\"≬\",\"twoheadleftarrow\":\"↞\",\"twoheadrightarrow\":\"↠\",\"Uacute\":\"Ú\",\"uacute\":\"ú\",\"uarr\":\"↑\",\"Uarr\":\"↟\",\"uArr\":\"⇑\",\"Uarrocir\":\"⥉\",\"Ubrcy\":\"Ў\",\"ubrcy\":\"ў\",\"Ubreve\":\"Ŭ\",\"ubreve\":\"ŭ\",\"Ucirc\":\"Û\",\"ucirc\":\"û\",\"Ucy\":\"У\",\"ucy\":\"у\",\"udarr\":\"⇅\",\"Udblac\":\"Ű\",\"udblac\":\"ű\",\"udhar\":\"⥮\",\"ufisht\":\"⥾\",\"Ufr\":\"𝔘\",\"ufr\":\"𝔲\",\"Ugrave\":\"Ù\",\"ugrave\":\"ù\",\"uHar\":\"⥣\",\"uharl\":\"↿\",\"uharr\":\"↾\",\"uhblk\":\"▀\",\"ulcorn\":\"⌜\",\"ulcorner\":\"⌜\",\"ulcrop\":\"⌏\",\"ultri\":\"◸\",\"Umacr\":\"Ū\",\"umacr\":\"ū\",\"uml\":\"¨\",\"UnderBar\":\"_\",\"UnderBrace\":\"⏟\",\"UnderBracket\":\"⎵\",\"UnderParenthesis\":\"⏝\",\"Union\":\"⋃\",\"UnionPlus\":\"⊎\",\"Uogon\":\"Ų\",\"uogon\":\"ų\",\"Uopf\":\"𝕌\",\"uopf\":\"𝕦\",\"UpArrowBar\":\"⤒\",\"uparrow\":\"↑\",\"UpArrow\":\"↑\",\"Uparrow\":\"⇑\",\"UpArrowDownArrow\":\"⇅\",\"updownarrow\":\"↕\",\"UpDownArrow\":\"↕\",\"Updownarrow\":\"⇕\",\"UpEquilibrium\":\"⥮\",\"upharpoonleft\":\"↿\",\"upharpoonright\":\"↾\",\"uplus\":\"⊎\",\"UpperLeftArrow\":\"↖\",\"UpperRightArrow\":\"↗\",\"upsi\":\"υ\",\"Upsi\":\"ϒ\",\"upsih\":\"ϒ\",\"Upsilon\":\"Υ\",\"upsilon\":\"υ\",\"UpTeeArrow\":\"↥\",\"UpTee\":\"⊥\",\"upuparrows\":\"⇈\",\"urcorn\":\"⌝\",\"urcorner\":\"⌝\",\"urcrop\":\"⌎\",\"Uring\":\"Ů\",\"uring\":\"ů\",\"urtri\":\"◹\",\"Uscr\":\"𝒰\",\"uscr\":\"𝓊\",\"utdot\":\"⋰\",\"Utilde\":\"Ũ\",\"utilde\":\"ũ\",\"utri\":\"▵\",\"utrif\":\"▴\",\"uuarr\":\"⇈\",\"Uuml\":\"Ü\",\"uuml\":\"ü\",\"uwangle\":\"⦧\",\"vangrt\":\"⦜\",\"varepsilon\":\"ϵ\",\"varkappa\":\"ϰ\",\"varnothing\":\"∅\",\"varphi\":\"ϕ\",\"varpi\":\"ϖ\",\"varpropto\":\"∝\",\"varr\":\"↕\",\"vArr\":\"⇕\",\"varrho\":\"ϱ\",\"varsigma\":\"ς\",\"varsubsetneq\":\"⊊︀\",\"varsubsetneqq\":\"⫋︀\",\"varsupsetneq\":\"⊋︀\",\"varsupsetneqq\":\"⫌︀\",\"vartheta\":\"ϑ\",\"vartriangleleft\":\"⊲\",\"vartriangleright\":\"⊳\",\"vBar\":\"⫨\",\"Vbar\":\"⫫\",\"vBarv\":\"⫩\",\"Vcy\":\"В\",\"vcy\":\"в\",\"vdash\":\"⊢\",\"vDash\":\"⊨\",\"Vdash\":\"⊩\",\"VDash\":\"⊫\",\"Vdashl\":\"⫦\",\"veebar\":\"⊻\",\"vee\":\"∨\",\"Vee\":\"⋁\",\"veeeq\":\"≚\",\"vellip\":\"⋮\",\"verbar\":\"|\",\"Verbar\":\"‖\",\"vert\":\"|\",\"Vert\":\"‖\",\"VerticalBar\":\"∣\",\"VerticalLine\":\"|\",\"VerticalSeparator\":\"❘\",\"VerticalTilde\":\"≀\",\"VeryThinSpace\":\" \",\"Vfr\":\"𝔙\",\"vfr\":\"𝔳\",\"vltri\":\"⊲\",\"vnsub\":\"⊂⃒\",\"vnsup\":\"⊃⃒\",\"Vopf\":\"𝕍\",\"vopf\":\"𝕧\",\"vprop\":\"∝\",\"vrtri\":\"⊳\",\"Vscr\":\"𝒱\",\"vscr\":\"𝓋\",\"vsubnE\":\"⫋︀\",\"vsubne\":\"⊊︀\",\"vsupnE\":\"⫌︀\",\"vsupne\":\"⊋︀\",\"Vvdash\":\"⊪\",\"vzigzag\":\"⦚\",\"Wcirc\":\"Ŵ\",\"wcirc\":\"ŵ\",\"wedbar\":\"⩟\",\"wedge\":\"∧\",\"Wedge\":\"⋀\",\"wedgeq\":\"≙\",\"weierp\":\"℘\",\"Wfr\":\"𝔚\",\"wfr\":\"𝔴\",\"Wopf\":\"𝕎\",\"wopf\":\"𝕨\",\"wp\":\"℘\",\"wr\":\"≀\",\"wreath\":\"≀\",\"Wscr\":\"𝒲\",\"wscr\":\"𝓌\",\"xcap\":\"⋂\",\"xcirc\":\"◯\",\"xcup\":\"⋃\",\"xdtri\":\"▽\",\"Xfr\":\"𝔛\",\"xfr\":\"𝔵\",\"xharr\":\"⟷\",\"xhArr\":\"⟺\",\"Xi\":\"Ξ\",\"xi\":\"ξ\",\"xlarr\":\"⟵\",\"xlArr\":\"⟸\",\"xmap\":\"⟼\",\"xnis\":\"⋻\",\"xodot\":\"⨀\",\"Xopf\":\"𝕏\",\"xopf\":\"𝕩\",\"xoplus\":\"⨁\",\"xotime\":\"⨂\",\"xrarr\":\"⟶\",\"xrArr\":\"⟹\",\"Xscr\":\"𝒳\",\"xscr\":\"𝓍\",\"xsqcup\":\"⨆\",\"xuplus\":\"⨄\",\"xutri\":\"△\",\"xvee\":\"⋁\",\"xwedge\":\"⋀\",\"Yacute\":\"Ý\",\"yacute\":\"ý\",\"YAcy\":\"Я\",\"yacy\":\"я\",\"Ycirc\":\"Ŷ\",\"ycirc\":\"ŷ\",\"Ycy\":\"Ы\",\"ycy\":\"ы\",\"yen\":\"¥\",\"Yfr\":\"𝔜\",\"yfr\":\"𝔶\",\"YIcy\":\"Ї\",\"yicy\":\"ї\",\"Yopf\":\"𝕐\",\"yopf\":\"𝕪\",\"Yscr\":\"𝒴\",\"yscr\":\"𝓎\",\"YUcy\":\"Ю\",\"yucy\":\"ю\",\"yuml\":\"ÿ\",\"Yuml\":\"Ÿ\",\"Zacute\":\"Ź\",\"zacute\":\"ź\",\"Zcaron\":\"Ž\",\"zcaron\":\"ž\",\"Zcy\":\"З\",\"zcy\":\"з\",\"Zdot\":\"Ż\",\"zdot\":\"ż\",\"zeetrf\":\"ℨ\",\"ZeroWidthSpace\":\"​\",\"Zeta\":\"Ζ\",\"zeta\":\"ζ\",\"zfr\":\"𝔷\",\"Zfr\":\"ℨ\",\"ZHcy\":\"Ж\",\"zhcy\":\"ж\",\"zigrarr\":\"⇝\",\"zopf\":\"𝕫\",\"Zopf\":\"ℤ\",\"Zscr\":\"𝒵\",\"zscr\":\"𝓏\",\"zwj\":\"‍\",\"zwnj\":\"‌\"}');\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/entities/lib/maps/entities.json?");

/***/ }),

/***/ "../node_modules/entities/lib/maps/legacy.json":
/*!*****************************************************!*\
  !*** ../node_modules/entities/lib/maps/legacy.json ***!
  \*****************************************************/
/***/ ((module) => {

"use strict";
eval("module.exports = JSON.parse('{\"Aacute\":\"Á\",\"aacute\":\"á\",\"Acirc\":\"Â\",\"acirc\":\"â\",\"acute\":\"´\",\"AElig\":\"Æ\",\"aelig\":\"æ\",\"Agrave\":\"À\",\"agrave\":\"à\",\"amp\":\"&\",\"AMP\":\"&\",\"Aring\":\"Å\",\"aring\":\"å\",\"Atilde\":\"Ã\",\"atilde\":\"ã\",\"Auml\":\"Ä\",\"auml\":\"ä\",\"brvbar\":\"¦\",\"Ccedil\":\"Ç\",\"ccedil\":\"ç\",\"cedil\":\"¸\",\"cent\":\"¢\",\"copy\":\"©\",\"COPY\":\"©\",\"curren\":\"¤\",\"deg\":\"°\",\"divide\":\"÷\",\"Eacute\":\"É\",\"eacute\":\"é\",\"Ecirc\":\"Ê\",\"ecirc\":\"ê\",\"Egrave\":\"È\",\"egrave\":\"è\",\"ETH\":\"Ð\",\"eth\":\"ð\",\"Euml\":\"Ë\",\"euml\":\"ë\",\"frac12\":\"½\",\"frac14\":\"¼\",\"frac34\":\"¾\",\"gt\":\">\",\"GT\":\">\",\"Iacute\":\"Í\",\"iacute\":\"í\",\"Icirc\":\"Î\",\"icirc\":\"î\",\"iexcl\":\"¡\",\"Igrave\":\"Ì\",\"igrave\":\"ì\",\"iquest\":\"¿\",\"Iuml\":\"Ï\",\"iuml\":\"ï\",\"laquo\":\"«\",\"lt\":\"<\",\"LT\":\"<\",\"macr\":\"¯\",\"micro\":\"µ\",\"middot\":\"·\",\"nbsp\":\" \",\"not\":\"¬\",\"Ntilde\":\"Ñ\",\"ntilde\":\"ñ\",\"Oacute\":\"Ó\",\"oacute\":\"ó\",\"Ocirc\":\"Ô\",\"ocirc\":\"ô\",\"Ograve\":\"Ò\",\"ograve\":\"ò\",\"ordf\":\"ª\",\"ordm\":\"º\",\"Oslash\":\"Ø\",\"oslash\":\"ø\",\"Otilde\":\"Õ\",\"otilde\":\"õ\",\"Ouml\":\"Ö\",\"ouml\":\"ö\",\"para\":\"¶\",\"plusmn\":\"±\",\"pound\":\"£\",\"quot\":\"\\\\\"\",\"QUOT\":\"\\\\\"\",\"raquo\":\"»\",\"reg\":\"®\",\"REG\":\"®\",\"sect\":\"§\",\"shy\":\"­\",\"sup1\":\"¹\",\"sup2\":\"²\",\"sup3\":\"³\",\"szlig\":\"ß\",\"THORN\":\"Þ\",\"thorn\":\"þ\",\"times\":\"×\",\"Uacute\":\"Ú\",\"uacute\":\"ú\",\"Ucirc\":\"Û\",\"ucirc\":\"û\",\"Ugrave\":\"Ù\",\"ugrave\":\"ù\",\"uml\":\"¨\",\"Uuml\":\"Ü\",\"uuml\":\"ü\",\"Yacute\":\"Ý\",\"yacute\":\"ý\",\"yen\":\"¥\",\"yuml\":\"ÿ\"}');\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/entities/lib/maps/legacy.json?");

/***/ }),

/***/ "../node_modules/entities/lib/maps/xml.json":
/*!**************************************************!*\
  !*** ../node_modules/entities/lib/maps/xml.json ***!
  \**************************************************/
/***/ ((module) => {

"use strict";
eval("module.exports = JSON.parse('{\"amp\":\"&\",\"apos\":\"\\'\",\"gt\":\">\",\"lt\":\"<\",\"quot\":\"\\\\\"\"}');\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/entities/lib/maps/xml.json?");

/***/ }),

/***/ "../node_modules/htmlparser2/lib/FeedHandler.js":
/*!******************************************************!*\
  !*** ../node_modules/htmlparser2/lib/FeedHandler.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.parseFeed = exports.FeedHandler = void 0;\nvar domhandler_1 = __importDefault(__webpack_require__(/*! domhandler */ \"../node_modules/domhandler/lib/index.js\"));\nvar DomUtils = __importStar(__webpack_require__(/*! domutils */ \"../node_modules/domutils/lib/index.js\"));\nvar Parser_1 = __webpack_require__(/*! ./Parser */ \"../node_modules/htmlparser2/lib/Parser.js\");\nvar FeedItemMediaMedium;\n(function (FeedItemMediaMedium) {\n    FeedItemMediaMedium[FeedItemMediaMedium[\"image\"] = 0] = \"image\";\n    FeedItemMediaMedium[FeedItemMediaMedium[\"audio\"] = 1] = \"audio\";\n    FeedItemMediaMedium[FeedItemMediaMedium[\"video\"] = 2] = \"video\";\n    FeedItemMediaMedium[FeedItemMediaMedium[\"document\"] = 3] = \"document\";\n    FeedItemMediaMedium[FeedItemMediaMedium[\"executable\"] = 4] = \"executable\";\n})(FeedItemMediaMedium || (FeedItemMediaMedium = {}));\nvar FeedItemMediaExpression;\n(function (FeedItemMediaExpression) {\n    FeedItemMediaExpression[FeedItemMediaExpression[\"sample\"] = 0] = \"sample\";\n    FeedItemMediaExpression[FeedItemMediaExpression[\"full\"] = 1] = \"full\";\n    FeedItemMediaExpression[FeedItemMediaExpression[\"nonstop\"] = 2] = \"nonstop\";\n})(FeedItemMediaExpression || (FeedItemMediaExpression = {}));\n// TODO: Consume data as it is coming in\nvar FeedHandler = /** @class */ (function (_super) {\n    __extends(FeedHandler, _super);\n    /**\n     *\n     * @param callback\n     * @param options\n     */\n    function FeedHandler(callback, options) {\n        var _this = this;\n        if (typeof callback === \"object\") {\n            callback = undefined;\n            options = callback;\n        }\n        _this = _super.call(this, callback, options) || this;\n        return _this;\n    }\n    FeedHandler.prototype.onend = function () {\n        var _a, _b;\n        var feedRoot = getOneElement(isValidFeed, this.dom);\n        if (!feedRoot) {\n            this.handleCallback(new Error(\"couldn't find root of feed\"));\n            return;\n        }\n        var feed = {};\n        if (feedRoot.name === \"feed\") {\n            var childs = feedRoot.children;\n            feed.type = \"atom\";\n            addConditionally(feed, \"id\", \"id\", childs);\n            addConditionally(feed, \"title\", \"title\", childs);\n            var href = getAttribute(\"href\", getOneElement(\"link\", childs));\n            if (href) {\n                feed.link = href;\n            }\n            addConditionally(feed, \"description\", \"subtitle\", childs);\n            var updated = fetch(\"updated\", childs);\n            if (updated) {\n                feed.updated = new Date(updated);\n            }\n            addConditionally(feed, \"author\", \"email\", childs, true);\n            feed.items = getElements(\"entry\", childs).map(function (item) {\n                var entry = {};\n                var children = item.children;\n                addConditionally(entry, \"id\", \"id\", children);\n                addConditionally(entry, \"title\", \"title\", children);\n                var href = getAttribute(\"href\", getOneElement(\"link\", children));\n                if (href) {\n                    entry.link = href;\n                }\n                var description = fetch(\"summary\", children) || fetch(\"content\", children);\n                if (description) {\n                    entry.description = description;\n                }\n                var pubDate = fetch(\"updated\", children);\n                if (pubDate) {\n                    entry.pubDate = new Date(pubDate);\n                }\n                entry.media = getMediaElements(children);\n                return entry;\n            });\n        }\n        else {\n            var childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n            feed.type = feedRoot.name.substr(0, 3);\n            feed.id = \"\";\n            addConditionally(feed, \"title\", \"title\", childs);\n            addConditionally(feed, \"link\", \"link\", childs);\n            addConditionally(feed, \"description\", \"description\", childs);\n            var updated = fetch(\"lastBuildDate\", childs);\n            if (updated) {\n                feed.updated = new Date(updated);\n            }\n            addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n            feed.items = getElements(\"item\", feedRoot.children).map(function (item) {\n                var entry = {};\n                var children = item.children;\n                addConditionally(entry, \"id\", \"guid\", children);\n                addConditionally(entry, \"title\", \"title\", children);\n                addConditionally(entry, \"link\", \"link\", children);\n                addConditionally(entry, \"description\", \"description\", children);\n                var pubDate = fetch(\"pubDate\", children);\n                if (pubDate)\n                    entry.pubDate = new Date(pubDate);\n                entry.media = getMediaElements(children);\n                return entry;\n            });\n        }\n        this.feed = feed;\n        this.handleCallback(null);\n    };\n    return FeedHandler;\n}(domhandler_1.default));\nexports.FeedHandler = FeedHandler;\nfunction getMediaElements(where) {\n    return getElements(\"media:content\", where).map(function (elem) {\n        var media = {\n            medium: elem.attribs.medium,\n            isDefault: !!elem.attribs.isDefault,\n        };\n        if (elem.attribs.url) {\n            media.url = elem.attribs.url;\n        }\n        if (elem.attribs.fileSize) {\n            media.fileSize = parseInt(elem.attribs.fileSize, 10);\n        }\n        if (elem.attribs.type) {\n            media.type = elem.attribs.type;\n        }\n        if (elem.attribs.expression) {\n            media.expression = elem.attribs\n                .expression;\n        }\n        if (elem.attribs.bitrate) {\n            media.bitrate = parseInt(elem.attribs.bitrate, 10);\n        }\n        if (elem.attribs.framerate) {\n            media.framerate = parseInt(elem.attribs.framerate, 10);\n        }\n        if (elem.attribs.samplingrate) {\n            media.samplingrate = parseInt(elem.attribs.samplingrate, 10);\n        }\n        if (elem.attribs.channels) {\n            media.channels = parseInt(elem.attribs.channels, 10);\n        }\n        if (elem.attribs.duration) {\n            media.duration = parseInt(elem.attribs.duration, 10);\n        }\n        if (elem.attribs.height) {\n            media.height = parseInt(elem.attribs.height, 10);\n        }\n        if (elem.attribs.width) {\n            media.width = parseInt(elem.attribs.width, 10);\n        }\n        if (elem.attribs.lang) {\n            media.lang = elem.attribs.lang;\n        }\n        return media;\n    });\n}\nfunction getElements(tagName, where) {\n    return DomUtils.getElementsByTagName(tagName, where, true);\n}\nfunction getOneElement(tagName, node) {\n    return DomUtils.getElementsByTagName(tagName, node, true, 1)[0];\n}\nfunction fetch(tagName, where, recurse) {\n    if (recurse === void 0) { recurse = false; }\n    return DomUtils.getText(DomUtils.getElementsByTagName(tagName, where, recurse, 1)).trim();\n}\nfunction getAttribute(name, elem) {\n    if (!elem) {\n        return null;\n    }\n    var attribs = elem.attribs;\n    return attribs[name];\n}\nfunction addConditionally(obj, prop, what, where, recurse) {\n    if (recurse === void 0) { recurse = false; }\n    var tmp = fetch(what, where, recurse);\n    if (tmp)\n        obj[prop] = tmp;\n}\nfunction isValidFeed(value) {\n    return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n/**\n * Parse a feed.\n *\n * @param feed The feed that should be parsed, as a string.\n * @param options Optionally, options for parsing. When using this option, you should set `xmlMode` to `true`.\n */\nfunction parseFeed(feed, options) {\n    if (options === void 0) { options = { xmlMode: true }; }\n    var handler = new FeedHandler(options);\n    new Parser_1.Parser(handler, options).end(feed);\n    return handler.feed;\n}\nexports.parseFeed = parseFeed;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/htmlparser2/lib/FeedHandler.js?");

/***/ }),

/***/ "../node_modules/htmlparser2/lib/Parser.js":
/*!*************************************************!*\
  !*** ../node_modules/htmlparser2/lib/Parser.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Parser = void 0;\nvar Tokenizer_1 = __importDefault(__webpack_require__(/*! ./Tokenizer */ \"../node_modules/htmlparser2/lib/Tokenizer.js\"));\nvar formTags = new Set([\n    \"input\",\n    \"option\",\n    \"optgroup\",\n    \"select\",\n    \"button\",\n    \"datalist\",\n    \"textarea\",\n]);\nvar pTag = new Set([\"p\"]);\nvar openImpliesClose = {\n    tr: new Set([\"tr\", \"th\", \"td\"]),\n    th: new Set([\"th\"]),\n    td: new Set([\"thead\", \"th\", \"td\"]),\n    body: new Set([\"head\", \"link\", \"script\"]),\n    li: new Set([\"li\"]),\n    p: pTag,\n    h1: pTag,\n    h2: pTag,\n    h3: pTag,\n    h4: pTag,\n    h5: pTag,\n    h6: pTag,\n    select: formTags,\n    input: formTags,\n    output: formTags,\n    button: formTags,\n    datalist: formTags,\n    textarea: formTags,\n    option: new Set([\"option\"]),\n    optgroup: new Set([\"optgroup\", \"option\"]),\n    dd: new Set([\"dt\", \"dd\"]),\n    dt: new Set([\"dt\", \"dd\"]),\n    address: pTag,\n    article: pTag,\n    aside: pTag,\n    blockquote: pTag,\n    details: pTag,\n    div: pTag,\n    dl: pTag,\n    fieldset: pTag,\n    figcaption: pTag,\n    figure: pTag,\n    footer: pTag,\n    form: pTag,\n    header: pTag,\n    hr: pTag,\n    main: pTag,\n    nav: pTag,\n    ol: pTag,\n    pre: pTag,\n    section: pTag,\n    table: pTag,\n    ul: pTag,\n    rt: new Set([\"rt\", \"rp\"]),\n    rp: new Set([\"rt\", \"rp\"]),\n    tbody: new Set([\"thead\", \"tbody\"]),\n    tfoot: new Set([\"thead\", \"tbody\"]),\n};\nvar voidElements = new Set([\n    \"area\",\n    \"base\",\n    \"basefont\",\n    \"br\",\n    \"col\",\n    \"command\",\n    \"embed\",\n    \"frame\",\n    \"hr\",\n    \"img\",\n    \"input\",\n    \"isindex\",\n    \"keygen\",\n    \"link\",\n    \"meta\",\n    \"param\",\n    \"source\",\n    \"track\",\n    \"wbr\",\n]);\nvar foreignContextElements = new Set([\"math\", \"svg\"]);\nvar htmlIntegrationElements = new Set([\n    \"mi\",\n    \"mo\",\n    \"mn\",\n    \"ms\",\n    \"mtext\",\n    \"annotation-xml\",\n    \"foreignObject\",\n    \"desc\",\n    \"title\",\n]);\nvar reNameEnd = /\\s|\\//;\nvar Parser = /** @class */ (function () {\n    function Parser(cbs, options) {\n        if (options === void 0) { options = {}; }\n        var _a, _b, _c, _d, _e;\n        /** The start index of the last event. */\n        this.startIndex = 0;\n        /** The end index of the last event. */\n        this.endIndex = null;\n        this.tagname = \"\";\n        this.attribname = \"\";\n        this.attribvalue = \"\";\n        this.attribs = null;\n        this.stack = [];\n        this.foreignContext = [];\n        this.options = options;\n        this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n        this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode;\n        this.lowerCaseAttributeNames =\n            (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode;\n        this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer_1.default)(this.options, this);\n        (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this);\n    }\n    Parser.prototype.updatePosition = function (initialOffset) {\n        if (this.endIndex === null) {\n            if (this.tokenizer.sectionStart <= initialOffset) {\n                this.startIndex = 0;\n            }\n            else {\n                this.startIndex = this.tokenizer.sectionStart - initialOffset;\n            }\n        }\n        else {\n            this.startIndex = this.endIndex + 1;\n        }\n        this.endIndex = this.tokenizer.getAbsoluteIndex();\n    };\n    // Tokenizer event handlers\n    Parser.prototype.ontext = function (data) {\n        var _a, _b;\n        this.updatePosition(1);\n        this.endIndex--;\n        (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n    };\n    Parser.prototype.onopentagname = function (name) {\n        var _a, _b;\n        if (this.lowerCaseTagNames) {\n            name = name.toLowerCase();\n        }\n        this.tagname = name;\n        if (!this.options.xmlMode &&\n            Object.prototype.hasOwnProperty.call(openImpliesClose, name)) {\n            var el = void 0;\n            while (this.stack.length > 0 &&\n                openImpliesClose[name].has((el = this.stack[this.stack.length - 1]))) {\n                this.onclosetag(el);\n            }\n        }\n        if (this.options.xmlMode || !voidElements.has(name)) {\n            this.stack.push(name);\n            if (foreignContextElements.has(name)) {\n                this.foreignContext.push(true);\n            }\n            else if (htmlIntegrationElements.has(name)) {\n                this.foreignContext.push(false);\n            }\n        }\n        (_b = (_a = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a, name);\n        if (this.cbs.onopentag)\n            this.attribs = {};\n    };\n    Parser.prototype.onopentagend = function () {\n        var _a, _b;\n        this.updatePosition(1);\n        if (this.attribs) {\n            (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs);\n            this.attribs = null;\n        }\n        if (!this.options.xmlMode &&\n            this.cbs.onclosetag &&\n            voidElements.has(this.tagname)) {\n            this.cbs.onclosetag(this.tagname);\n        }\n        this.tagname = \"\";\n    };\n    Parser.prototype.onclosetag = function (name) {\n        this.updatePosition(1);\n        if (this.lowerCaseTagNames) {\n            name = name.toLowerCase();\n        }\n        if (foreignContextElements.has(name) ||\n            htmlIntegrationElements.has(name)) {\n            this.foreignContext.pop();\n        }\n        if (this.stack.length &&\n            (this.options.xmlMode || !voidElements.has(name))) {\n            var pos = this.stack.lastIndexOf(name);\n            if (pos !== -1) {\n                if (this.cbs.onclosetag) {\n                    pos = this.stack.length - pos;\n                    while (pos--) {\n                        // We know the stack has sufficient elements.\n                        this.cbs.onclosetag(this.stack.pop());\n                    }\n                }\n                else\n                    this.stack.length = pos;\n            }\n            else if (name === \"p\" && !this.options.xmlMode) {\n                this.onopentagname(name);\n                this.closeCurrentTag();\n            }\n        }\n        else if (!this.options.xmlMode && (name === \"br\" || name === \"p\")) {\n            this.onopentagname(name);\n            this.closeCurrentTag();\n        }\n    };\n    Parser.prototype.onselfclosingtag = function () {\n        if (this.options.xmlMode ||\n            this.options.recognizeSelfClosing ||\n            this.foreignContext[this.foreignContext.length - 1]) {\n            this.closeCurrentTag();\n        }\n        else {\n            this.onopentagend();\n        }\n    };\n    Parser.prototype.closeCurrentTag = function () {\n        var _a, _b;\n        var name = this.tagname;\n        this.onopentagend();\n        /*\n         * Self-closing tags will be on the top of the stack\n         * (cheaper check than in onclosetag)\n         */\n        if (this.stack[this.stack.length - 1] === name) {\n            (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name);\n            this.stack.pop();\n        }\n    };\n    Parser.prototype.onattribname = function (name) {\n        if (this.lowerCaseAttributeNames) {\n            name = name.toLowerCase();\n        }\n        this.attribname = name;\n    };\n    Parser.prototype.onattribdata = function (value) {\n        this.attribvalue += value;\n    };\n    Parser.prototype.onattribend = function (quote) {\n        var _a, _b;\n        (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote);\n        if (this.attribs &&\n            !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n            this.attribs[this.attribname] = this.attribvalue;\n        }\n        this.attribname = \"\";\n        this.attribvalue = \"\";\n    };\n    Parser.prototype.getInstructionName = function (value) {\n        var idx = value.search(reNameEnd);\n        var name = idx < 0 ? value : value.substr(0, idx);\n        if (this.lowerCaseTagNames) {\n            name = name.toLowerCase();\n        }\n        return name;\n    };\n    Parser.prototype.ondeclaration = function (value) {\n        if (this.cbs.onprocessinginstruction) {\n            var name_1 = this.getInstructionName(value);\n            this.cbs.onprocessinginstruction(\"!\" + name_1, \"!\" + value);\n        }\n    };\n    Parser.prototype.onprocessinginstruction = function (value) {\n        if (this.cbs.onprocessinginstruction) {\n            var name_2 = this.getInstructionName(value);\n            this.cbs.onprocessinginstruction(\"?\" + name_2, \"?\" + value);\n        }\n    };\n    Parser.prototype.oncomment = function (value) {\n        var _a, _b, _c, _d;\n        this.updatePosition(4);\n        (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n        (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n    };\n    Parser.prototype.oncdata = function (value) {\n        var _a, _b, _c, _d, _e, _f;\n        this.updatePosition(1);\n        if (this.options.xmlMode || this.options.recognizeCDATA) {\n            (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n            (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n            (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);\n        }\n        else {\n            this.oncomment(\"[CDATA[\" + value + \"]]\");\n        }\n    };\n    Parser.prototype.onerror = function (err) {\n        var _a, _b;\n        (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n    };\n    Parser.prototype.onend = function () {\n        var _a, _b;\n        if (this.cbs.onclosetag) {\n            for (var i = this.stack.length; i > 0; this.cbs.onclosetag(this.stack[--i]))\n                ;\n        }\n        (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n    };\n    /**\n     * Resets the parser to a blank state, ready to parse a new HTML document\n     */\n    Parser.prototype.reset = function () {\n        var _a, _b, _c, _d;\n        (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n        this.tokenizer.reset();\n        this.tagname = \"\";\n        this.attribname = \"\";\n        this.attribs = null;\n        this.stack = [];\n        (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n    };\n    /**\n     * Resets the parser, then parses a complete document and\n     * pushes it to the handler.\n     *\n     * @param data Document to parse.\n     */\n    Parser.prototype.parseComplete = function (data) {\n        this.reset();\n        this.end(data);\n    };\n    /**\n     * Parses a chunk of data and calls the corresponding callbacks.\n     *\n     * @param chunk Chunk to parse.\n     */\n    Parser.prototype.write = function (chunk) {\n        this.tokenizer.write(chunk);\n    };\n    /**\n     * Parses the end of the buffer and clears the stack, calls onend.\n     *\n     * @param chunk Optional final chunk to parse.\n     */\n    Parser.prototype.end = function (chunk) {\n        this.tokenizer.end(chunk);\n    };\n    /**\n     * Pauses parsing. The parser won't emit events until `resume` is called.\n     */\n    Parser.prototype.pause = function () {\n        this.tokenizer.pause();\n    };\n    /**\n     * Resumes parsing after `pause` was called.\n     */\n    Parser.prototype.resume = function () {\n        this.tokenizer.resume();\n    };\n    /**\n     * Alias of `write`, for backwards compatibility.\n     *\n     * @param chunk Chunk to parse.\n     * @deprecated\n     */\n    Parser.prototype.parseChunk = function (chunk) {\n        this.write(chunk);\n    };\n    /**\n     * Alias of `end`, for backwards compatibility.\n     *\n     * @param chunk Optional final chunk to parse.\n     * @deprecated\n     */\n    Parser.prototype.done = function (chunk) {\n        this.end(chunk);\n    };\n    return Parser;\n}());\nexports.Parser = Parser;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/htmlparser2/lib/Parser.js?");

/***/ }),

/***/ "../node_modules/htmlparser2/lib/Tokenizer.js":
/*!****************************************************!*\
  !*** ../node_modules/htmlparser2/lib/Tokenizer.js ***!
  \****************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nvar decode_codepoint_1 = __importDefault(__webpack_require__(/*! entities/lib/decode_codepoint */ \"../node_modules/entities/lib/decode_codepoint.js\"));\nvar entities_json_1 = __importDefault(__webpack_require__(/*! entities/lib/maps/entities.json */ \"../node_modules/entities/lib/maps/entities.json\"));\nvar legacy_json_1 = __importDefault(__webpack_require__(/*! entities/lib/maps/legacy.json */ \"../node_modules/entities/lib/maps/legacy.json\"));\nvar xml_json_1 = __importDefault(__webpack_require__(/*! entities/lib/maps/xml.json */ \"../node_modules/entities/lib/maps/xml.json\"));\nfunction whitespace(c) {\n    return c === \" \" || c === \"\\n\" || c === \"\\t\" || c === \"\\f\" || c === \"\\r\";\n}\nfunction isASCIIAlpha(c) {\n    return (c >= \"a\" && c <= \"z\") || (c >= \"A\" && c <= \"Z\");\n}\nfunction ifElseState(upper, SUCCESS, FAILURE) {\n    var lower = upper.toLowerCase();\n    if (upper === lower) {\n        return function (t, c) {\n            if (c === lower) {\n                t._state = SUCCESS;\n            }\n            else {\n                t._state = FAILURE;\n                t._index--;\n            }\n        };\n    }\n    return function (t, c) {\n        if (c === lower || c === upper) {\n            t._state = SUCCESS;\n        }\n        else {\n            t._state = FAILURE;\n            t._index--;\n        }\n    };\n}\nfunction consumeSpecialNameChar(upper, NEXT_STATE) {\n    var lower = upper.toLowerCase();\n    return function (t, c) {\n        if (c === lower || c === upper) {\n            t._state = NEXT_STATE;\n        }\n        else {\n            t._state = 3 /* InTagName */;\n            t._index--; // Consume the token again\n        }\n    };\n}\nvar stateBeforeCdata1 = ifElseState(\"C\", 24 /* BeforeCdata2 */, 16 /* InDeclaration */);\nvar stateBeforeCdata2 = ifElseState(\"D\", 25 /* BeforeCdata3 */, 16 /* InDeclaration */);\nvar stateBeforeCdata3 = ifElseState(\"A\", 26 /* BeforeCdata4 */, 16 /* InDeclaration */);\nvar stateBeforeCdata4 = ifElseState(\"T\", 27 /* BeforeCdata5 */, 16 /* InDeclaration */);\nvar stateBeforeCdata5 = ifElseState(\"A\", 28 /* BeforeCdata6 */, 16 /* InDeclaration */);\nvar stateBeforeScript1 = consumeSpecialNameChar(\"R\", 35 /* BeforeScript2 */);\nvar stateBeforeScript2 = consumeSpecialNameChar(\"I\", 36 /* BeforeScript3 */);\nvar stateBeforeScript3 = consumeSpecialNameChar(\"P\", 37 /* BeforeScript4 */);\nvar stateBeforeScript4 = consumeSpecialNameChar(\"T\", 38 /* BeforeScript5 */);\nvar stateAfterScript1 = ifElseState(\"R\", 40 /* AfterScript2 */, 1 /* Text */);\nvar stateAfterScript2 = ifElseState(\"I\", 41 /* AfterScript3 */, 1 /* Text */);\nvar stateAfterScript3 = ifElseState(\"P\", 42 /* AfterScript4 */, 1 /* Text */);\nvar stateAfterScript4 = ifElseState(\"T\", 43 /* AfterScript5 */, 1 /* Text */);\nvar stateBeforeStyle1 = consumeSpecialNameChar(\"Y\", 45 /* BeforeStyle2 */);\nvar stateBeforeStyle2 = consumeSpecialNameChar(\"L\", 46 /* BeforeStyle3 */);\nvar stateBeforeStyle3 = consumeSpecialNameChar(\"E\", 47 /* BeforeStyle4 */);\nvar stateAfterStyle1 = ifElseState(\"Y\", 49 /* AfterStyle2 */, 1 /* Text */);\nvar stateAfterStyle2 = ifElseState(\"L\", 50 /* AfterStyle3 */, 1 /* Text */);\nvar stateAfterStyle3 = ifElseState(\"E\", 51 /* AfterStyle4 */, 1 /* Text */);\nvar stateBeforeSpecialT = consumeSpecialNameChar(\"I\", 54 /* BeforeTitle1 */);\nvar stateBeforeTitle1 = consumeSpecialNameChar(\"T\", 55 /* BeforeTitle2 */);\nvar stateBeforeTitle2 = consumeSpecialNameChar(\"L\", 56 /* BeforeTitle3 */);\nvar stateBeforeTitle3 = consumeSpecialNameChar(\"E\", 57 /* BeforeTitle4 */);\nvar stateAfterSpecialTEnd = ifElseState(\"I\", 58 /* AfterTitle1 */, 1 /* Text */);\nvar stateAfterTitle1 = ifElseState(\"T\", 59 /* AfterTitle2 */, 1 /* Text */);\nvar stateAfterTitle2 = ifElseState(\"L\", 60 /* AfterTitle3 */, 1 /* Text */);\nvar stateAfterTitle3 = ifElseState(\"E\", 61 /* AfterTitle4 */, 1 /* Text */);\nvar stateBeforeEntity = ifElseState(\"#\", 63 /* BeforeNumericEntity */, 64 /* InNamedEntity */);\nvar stateBeforeNumericEntity = ifElseState(\"X\", 66 /* InHexEntity */, 65 /* InNumericEntity */);\nvar Tokenizer = /** @class */ (function () {\n    function Tokenizer(options, cbs) {\n        var _a;\n        /** The current state the tokenizer is in. */\n        this._state = 1 /* Text */;\n        /** The read buffer. */\n        this.buffer = \"\";\n        /** The beginning of the section that is currently being read. */\n        this.sectionStart = 0;\n        /** The index within the buffer that we are currently looking at. */\n        this._index = 0;\n        /**\n         * Data that has already been processed will be removed from the buffer occasionally.\n         * `_bufferOffset` keeps track of how many characters have been removed, to make sure position information is accurate.\n         */\n        this.bufferOffset = 0;\n        /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */\n        this.baseState = 1 /* Text */;\n        /** For special parsing behavior inside of script and style tags. */\n        this.special = 1 /* None */;\n        /** Indicates whether the tokenizer has been paused. */\n        this.running = true;\n        /** Indicates whether the tokenizer has finished running / `.end` has been called. */\n        this.ended = false;\n        this.cbs = cbs;\n        this.xmlMode = !!(options === null || options === void 0 ? void 0 : options.xmlMode);\n        this.decodeEntities = (_a = options === null || options === void 0 ? void 0 : options.decodeEntities) !== null && _a !== void 0 ? _a : true;\n    }\n    Tokenizer.prototype.reset = function () {\n        this._state = 1 /* Text */;\n        this.buffer = \"\";\n        this.sectionStart = 0;\n        this._index = 0;\n        this.bufferOffset = 0;\n        this.baseState = 1 /* Text */;\n        this.special = 1 /* None */;\n        this.running = true;\n        this.ended = false;\n    };\n    Tokenizer.prototype.write = function (chunk) {\n        if (this.ended)\n            this.cbs.onerror(Error(\".write() after done!\"));\n        this.buffer += chunk;\n        this.parse();\n    };\n    Tokenizer.prototype.end = function (chunk) {\n        if (this.ended)\n            this.cbs.onerror(Error(\".end() after done!\"));\n        if (chunk)\n            this.write(chunk);\n        this.ended = true;\n        if (this.running)\n            this.finish();\n    };\n    Tokenizer.prototype.pause = function () {\n        this.running = false;\n    };\n    Tokenizer.prototype.resume = function () {\n        this.running = true;\n        if (this._index < this.buffer.length) {\n            this.parse();\n        }\n        if (this.ended) {\n            this.finish();\n        }\n    };\n    /**\n     * The current index within all of the written data.\n     */\n    Tokenizer.prototype.getAbsoluteIndex = function () {\n        return this.bufferOffset + this._index;\n    };\n    Tokenizer.prototype.stateText = function (c) {\n        if (c === \"<\") {\n            if (this._index > this.sectionStart) {\n                this.cbs.ontext(this.getSection());\n            }\n            this._state = 2 /* BeforeTagName */;\n            this.sectionStart = this._index;\n        }\n        else if (this.decodeEntities &&\n            c === \"&\" &&\n            (this.special === 1 /* None */ || this.special === 4 /* Title */)) {\n            if (this._index > this.sectionStart) {\n                this.cbs.ontext(this.getSection());\n            }\n            this.baseState = 1 /* Text */;\n            this._state = 62 /* BeforeEntity */;\n            this.sectionStart = this._index;\n        }\n    };\n    /**\n     * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n     *\n     * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n     * We allow anything that wouldn't end the tag.\n     */\n    Tokenizer.prototype.isTagStartChar = function (c) {\n        return (isASCIIAlpha(c) ||\n            (this.xmlMode && !whitespace(c) && c !== \"/\" && c !== \">\"));\n    };\n    Tokenizer.prototype.stateBeforeTagName = function (c) {\n        if (c === \"/\") {\n            this._state = 5 /* BeforeClosingTagName */;\n        }\n        else if (c === \"<\") {\n            this.cbs.ontext(this.getSection());\n            this.sectionStart = this._index;\n        }\n        else if (c === \">\" ||\n            this.special !== 1 /* None */ ||\n            whitespace(c)) {\n            this._state = 1 /* Text */;\n        }\n        else if (c === \"!\") {\n            this._state = 15 /* BeforeDeclaration */;\n            this.sectionStart = this._index + 1;\n        }\n        else if (c === \"?\") {\n            this._state = 17 /* InProcessingInstruction */;\n            this.sectionStart = this._index + 1;\n        }\n        else if (!this.isTagStartChar(c)) {\n            this._state = 1 /* Text */;\n        }\n        else {\n            this._state =\n                !this.xmlMode && (c === \"s\" || c === \"S\")\n                    ? 32 /* BeforeSpecialS */\n                    : !this.xmlMode && (c === \"t\" || c === \"T\")\n                        ? 52 /* BeforeSpecialT */\n                        : 3 /* InTagName */;\n            this.sectionStart = this._index;\n        }\n    };\n    Tokenizer.prototype.stateInTagName = function (c) {\n        if (c === \"/\" || c === \">\" || whitespace(c)) {\n            this.emitToken(\"onopentagname\");\n            this._state = 8 /* BeforeAttributeName */;\n            this._index--;\n        }\n    };\n    Tokenizer.prototype.stateBeforeClosingTagName = function (c) {\n        if (whitespace(c)) {\n            // Ignore\n        }\n        else if (c === \">\") {\n            this._state = 1 /* Text */;\n        }\n        else if (this.special !== 1 /* None */) {\n            if (this.special !== 4 /* Title */ && (c === \"s\" || c === \"S\")) {\n                this._state = 33 /* BeforeSpecialSEnd */;\n            }\n            else if (this.special === 4 /* Title */ &&\n                (c === \"t\" || c === \"T\")) {\n                this._state = 53 /* BeforeSpecialTEnd */;\n            }\n            else {\n                this._state = 1 /* Text */;\n                this._index--;\n            }\n        }\n        else if (!this.isTagStartChar(c)) {\n            this._state = 20 /* InSpecialComment */;\n            this.sectionStart = this._index;\n        }\n        else {\n            this._state = 6 /* InClosingTagName */;\n            this.sectionStart = this._index;\n        }\n    };\n    Tokenizer.prototype.stateInClosingTagName = function (c) {\n        if (c === \">\" || whitespace(c)) {\n            this.emitToken(\"onclosetag\");\n            this._state = 7 /* AfterClosingTagName */;\n            this._index--;\n        }\n    };\n    Tokenizer.prototype.stateAfterClosingTagName = function (c) {\n        // Skip everything until \">\"\n        if (c === \">\") {\n            this._state = 1 /* Text */;\n            this.sectionStart = this._index + 1;\n        }\n    };\n    Tokenizer.prototype.stateBeforeAttributeName = function (c) {\n        if (c === \">\") {\n            this.cbs.onopentagend();\n            this._state = 1 /* Text */;\n            this.sectionStart = this._index + 1;\n        }\n        else if (c === \"/\") {\n            this._state = 4 /* InSelfClosingTag */;\n        }\n        else if (!whitespace(c)) {\n            this._state = 9 /* InAttributeName */;\n            this.sectionStart = this._index;\n        }\n    };\n    Tokenizer.prototype.stateInSelfClosingTag = function (c) {\n        if (c === \">\") {\n            this.cbs.onselfclosingtag();\n            this._state = 1 /* Text */;\n            this.sectionStart = this._index + 1;\n            this.special = 1 /* None */; // Reset special state, in case of self-closing special tags\n        }\n        else if (!whitespace(c)) {\n            this._state = 8 /* BeforeAttributeName */;\n            this._index--;\n        }\n    };\n    Tokenizer.prototype.stateInAttributeName = function (c) {\n        if (c === \"=\" || c === \"/\" || c === \">\" || whitespace(c)) {\n            this.cbs.onattribname(this.getSection());\n            this.sectionStart = -1;\n            this._state = 10 /* AfterAttributeName */;\n            this._index--;\n        }\n    };\n    Tokenizer.prototype.stateAfterAttributeName = function (c) {\n        if (c === \"=\") {\n            this._state = 11 /* BeforeAttributeValue */;\n        }\n        else if (c === \"/\" || c === \">\") {\n            this.cbs.onattribend(undefined);\n            this._state = 8 /* BeforeAttributeName */;\n            this._index--;\n        }\n        else if (!whitespace(c)) {\n            this.cbs.onattribend(undefined);\n            this._state = 9 /* InAttributeName */;\n            this.sectionStart = this._index;\n        }\n    };\n    Tokenizer.prototype.stateBeforeAttributeValue = function (c) {\n        if (c === '\"') {\n            this._state = 12 /* InAttributeValueDq */;\n            this.sectionStart = this._index + 1;\n        }\n        else if (c === \"'\") {\n            this._state = 13 /* InAttributeValueSq */;\n            this.sectionStart = this._index + 1;\n        }\n        else if (!whitespace(c)) {\n            this._state = 14 /* InAttributeValueNq */;\n            this.sectionStart = this._index;\n            this._index--; // Reconsume token\n        }\n    };\n    Tokenizer.prototype.handleInAttributeValue = function (c, quote) {\n        if (c === quote) {\n            this.emitToken(\"onattribdata\");\n            this.cbs.onattribend(quote);\n            this._state = 8 /* BeforeAttributeName */;\n        }\n        else if (this.decodeEntities && c === \"&\") {\n            this.emitToken(\"onattribdata\");\n            this.baseState = this._state;\n            this._state = 62 /* BeforeEntity */;\n            this.sectionStart = this._index;\n        }\n    };\n    Tokenizer.prototype.stateInAttributeValueDoubleQuotes = function (c) {\n        this.handleInAttributeValue(c, '\"');\n    };\n    Tokenizer.prototype.stateInAttributeValueSingleQuotes = function (c) {\n        this.handleInAttributeValue(c, \"'\");\n    };\n    Tokenizer.prototype.stateInAttributeValueNoQuotes = function (c) {\n        if (whitespace(c) || c === \">\") {\n            this.emitToken(\"onattribdata\");\n            this.cbs.onattribend(null);\n            this._state = 8 /* BeforeAttributeName */;\n            this._index--;\n        }\n        else if (this.decodeEntities && c === \"&\") {\n            this.emitToken(\"onattribdata\");\n            this.baseState = this._state;\n            this._state = 62 /* BeforeEntity */;\n            this.sectionStart = this._index;\n        }\n    };\n    Tokenizer.prototype.stateBeforeDeclaration = function (c) {\n        this._state =\n            c === \"[\"\n                ? 23 /* BeforeCdata1 */\n                : c === \"-\"\n                    ? 18 /* BeforeComment */\n                    : 16 /* InDeclaration */;\n    };\n    Tokenizer.prototype.stateInDeclaration = function (c) {\n        if (c === \">\") {\n            this.cbs.ondeclaration(this.getSection());\n            this._state = 1 /* Text */;\n            this.sectionStart = this._index + 1;\n        }\n    };\n    Tokenizer.prototype.stateInProcessingInstruction = function (c) {\n        if (c === \">\") {\n            this.cbs.onprocessinginstruction(this.getSection());\n            this._state = 1 /* Text */;\n            this.sectionStart = this._index + 1;\n        }\n    };\n    Tokenizer.prototype.stateBeforeComment = function (c) {\n        if (c === \"-\") {\n            this._state = 19 /* InComment */;\n            this.sectionStart = this._index + 1;\n        }\n        else {\n            this._state = 16 /* InDeclaration */;\n        }\n    };\n    Tokenizer.prototype.stateInComment = function (c) {\n        if (c === \"-\")\n            this._state = 21 /* AfterComment1 */;\n    };\n    Tokenizer.prototype.stateInSpecialComment = function (c) {\n        if (c === \">\") {\n            this.cbs.oncomment(this.buffer.substring(this.sectionStart, this._index));\n            this._state = 1 /* Text */;\n            this.sectionStart = this._index + 1;\n        }\n    };\n    Tokenizer.prototype.stateAfterComment1 = function (c) {\n        if (c === \"-\") {\n            this._state = 22 /* AfterComment2 */;\n        }\n        else {\n            this._state = 19 /* InComment */;\n        }\n    };\n    Tokenizer.prototype.stateAfterComment2 = function (c) {\n        if (c === \">\") {\n            // Remove 2 trailing chars\n            this.cbs.oncomment(this.buffer.substring(this.sectionStart, this._index - 2));\n            this._state = 1 /* Text */;\n            this.sectionStart = this._index + 1;\n        }\n        else if (c !== \"-\") {\n            this._state = 19 /* InComment */;\n        }\n        // Else: stay in AFTER_COMMENT_2 (`--->`)\n    };\n    Tokenizer.prototype.stateBeforeCdata6 = function (c) {\n        if (c === \"[\") {\n            this._state = 29 /* InCdata */;\n            this.sectionStart = this._index + 1;\n        }\n        else {\n            this._state = 16 /* InDeclaration */;\n            this._index--;\n        }\n    };\n    Tokenizer.prototype.stateInCdata = function (c) {\n        if (c === \"]\")\n            this._state = 30 /* AfterCdata1 */;\n    };\n    Tokenizer.prototype.stateAfterCdata1 = function (c) {\n        if (c === \"]\")\n            this._state = 31 /* AfterCdata2 */;\n        else\n            this._state = 29 /* InCdata */;\n    };\n    Tokenizer.prototype.stateAfterCdata2 = function (c) {\n        if (c === \">\") {\n            // Remove 2 trailing chars\n            this.cbs.oncdata(this.buffer.substring(this.sectionStart, this._index - 2));\n            this._state = 1 /* Text */;\n            this.sectionStart = this._index + 1;\n        }\n        else if (c !== \"]\") {\n            this._state = 29 /* InCdata */;\n        }\n        // Else: stay in AFTER_CDATA_2 (`]]]>`)\n    };\n    Tokenizer.prototype.stateBeforeSpecialS = function (c) {\n        if (c === \"c\" || c === \"C\") {\n            this._state = 34 /* BeforeScript1 */;\n        }\n        else if (c === \"t\" || c === \"T\") {\n            this._state = 44 /* BeforeStyle1 */;\n        }\n        else {\n            this._state = 3 /* InTagName */;\n            this._index--; // Consume the token again\n        }\n    };\n    Tokenizer.prototype.stateBeforeSpecialSEnd = function (c) {\n        if (this.special === 2 /* Script */ && (c === \"c\" || c === \"C\")) {\n            this._state = 39 /* AfterScript1 */;\n        }\n        else if (this.special === 3 /* Style */ && (c === \"t\" || c === \"T\")) {\n            this._state = 48 /* AfterStyle1 */;\n        }\n        else\n            this._state = 1 /* Text */;\n    };\n    Tokenizer.prototype.stateBeforeSpecialLast = function (c, special) {\n        if (c === \"/\" || c === \">\" || whitespace(c)) {\n            this.special = special;\n        }\n        this._state = 3 /* InTagName */;\n        this._index--; // Consume the token again\n    };\n    Tokenizer.prototype.stateAfterSpecialLast = function (c, sectionStartOffset) {\n        if (c === \">\" || whitespace(c)) {\n            this.special = 1 /* None */;\n            this._state = 6 /* InClosingTagName */;\n            this.sectionStart = this._index - sectionStartOffset;\n            this._index--; // Reconsume the token\n        }\n        else\n            this._state = 1 /* Text */;\n    };\n    // For entities terminated with a semicolon\n    Tokenizer.prototype.parseFixedEntity = function (map) {\n        if (map === void 0) { map = this.xmlMode ? xml_json_1.default : entities_json_1.default; }\n        // Offset = 1\n        if (this.sectionStart + 1 < this._index) {\n            var entity = this.buffer.substring(this.sectionStart + 1, this._index);\n            if (Object.prototype.hasOwnProperty.call(map, entity)) {\n                this.emitPartial(map[entity]);\n                this.sectionStart = this._index + 1;\n            }\n        }\n    };\n    // Parses legacy entities (without trailing semicolon)\n    Tokenizer.prototype.parseLegacyEntity = function () {\n        var start = this.sectionStart + 1;\n        // The max length of legacy entities is 6\n        var limit = Math.min(this._index - start, 6);\n        while (limit >= 2) {\n            // The min length of legacy entities is 2\n            var entity = this.buffer.substr(start, limit);\n            if (Object.prototype.hasOwnProperty.call(legacy_json_1.default, entity)) {\n                this.emitPartial(legacy_json_1.default[entity]);\n                this.sectionStart += limit + 1;\n                return;\n            }\n            limit--;\n        }\n    };\n    Tokenizer.prototype.stateInNamedEntity = function (c) {\n        if (c === \";\") {\n            this.parseFixedEntity();\n            // Retry as legacy entity if entity wasn't parsed\n            if (this.baseState === 1 /* Text */ &&\n                this.sectionStart + 1 < this._index &&\n                !this.xmlMode) {\n                this.parseLegacyEntity();\n            }\n            this._state = this.baseState;\n        }\n        else if ((c < \"0\" || c > \"9\") && !isASCIIAlpha(c)) {\n            if (this.xmlMode || this.sectionStart + 1 === this._index) {\n                // Ignore\n            }\n            else if (this.baseState !== 1 /* Text */) {\n                if (c !== \"=\") {\n                    // Parse as legacy entity, without allowing additional characters.\n                    this.parseFixedEntity(legacy_json_1.default);\n                }\n            }\n            else {\n                this.parseLegacyEntity();\n            }\n            this._state = this.baseState;\n            this._index--;\n        }\n    };\n    Tokenizer.prototype.decodeNumericEntity = function (offset, base, strict) {\n        var sectionStart = this.sectionStart + offset;\n        if (sectionStart !== this._index) {\n            // Parse entity\n            var entity = this.buffer.substring(sectionStart, this._index);\n            var parsed = parseInt(entity, base);\n            this.emitPartial(decode_codepoint_1.default(parsed));\n            this.sectionStart = strict ? this._index + 1 : this._index;\n        }\n        this._state = this.baseState;\n    };\n    Tokenizer.prototype.stateInNumericEntity = function (c) {\n        if (c === \";\") {\n            this.decodeNumericEntity(2, 10, true);\n        }\n        else if (c < \"0\" || c > \"9\") {\n            if (!this.xmlMode) {\n                this.decodeNumericEntity(2, 10, false);\n            }\n            else {\n                this._state = this.baseState;\n            }\n            this._index--;\n        }\n    };\n    Tokenizer.prototype.stateInHexEntity = function (c) {\n        if (c === \";\") {\n            this.decodeNumericEntity(3, 16, true);\n        }\n        else if ((c < \"a\" || c > \"f\") &&\n            (c < \"A\" || c > \"F\") &&\n            (c < \"0\" || c > \"9\")) {\n            if (!this.xmlMode) {\n                this.decodeNumericEntity(3, 16, false);\n            }\n            else {\n                this._state = this.baseState;\n            }\n            this._index--;\n        }\n    };\n    Tokenizer.prototype.cleanup = function () {\n        if (this.sectionStart < 0) {\n            this.buffer = \"\";\n            this.bufferOffset += this._index;\n            this._index = 0;\n        }\n        else if (this.running) {\n            if (this._state === 1 /* Text */) {\n                if (this.sectionStart !== this._index) {\n                    this.cbs.ontext(this.buffer.substr(this.sectionStart));\n                }\n                this.buffer = \"\";\n                this.bufferOffset += this._index;\n                this._index = 0;\n            }\n            else if (this.sectionStart === this._index) {\n                // The section just started\n                this.buffer = \"\";\n                this.bufferOffset += this._index;\n                this._index = 0;\n            }\n            else {\n                // Remove everything unnecessary\n                this.buffer = this.buffer.substr(this.sectionStart);\n                this._index -= this.sectionStart;\n                this.bufferOffset += this.sectionStart;\n            }\n            this.sectionStart = 0;\n        }\n    };\n    /**\n     * Iterates through the buffer, calling the function corresponding to the current state.\n     *\n     * States that are more likely to be hit are higher up, as a performance improvement.\n     */\n    Tokenizer.prototype.parse = function () {\n        while (this._index < this.buffer.length && this.running) {\n            var c = this.buffer.charAt(this._index);\n            if (this._state === 1 /* Text */) {\n                this.stateText(c);\n            }\n            else if (this._state === 12 /* InAttributeValueDq */) {\n                this.stateInAttributeValueDoubleQuotes(c);\n            }\n            else if (this._state === 9 /* InAttributeName */) {\n                this.stateInAttributeName(c);\n            }\n            else if (this._state === 19 /* InComment */) {\n                this.stateInComment(c);\n            }\n            else if (this._state === 20 /* InSpecialComment */) {\n                this.stateInSpecialComment(c);\n            }\n            else if (this._state === 8 /* BeforeAttributeName */) {\n                this.stateBeforeAttributeName(c);\n            }\n            else if (this._state === 3 /* InTagName */) {\n                this.stateInTagName(c);\n            }\n            else if (this._state === 6 /* InClosingTagName */) {\n                this.stateInClosingTagName(c);\n            }\n            else if (this._state === 2 /* BeforeTagName */) {\n                this.stateBeforeTagName(c);\n            }\n            else if (this._state === 10 /* AfterAttributeName */) {\n                this.stateAfterAttributeName(c);\n            }\n            else if (this._state === 13 /* InAttributeValueSq */) {\n                this.stateInAttributeValueSingleQuotes(c);\n            }\n            else if (this._state === 11 /* BeforeAttributeValue */) {\n                this.stateBeforeAttributeValue(c);\n            }\n            else if (this._state === 5 /* BeforeClosingTagName */) {\n                this.stateBeforeClosingTagName(c);\n            }\n            else if (this._state === 7 /* AfterClosingTagName */) {\n                this.stateAfterClosingTagName(c);\n            }\n            else if (this._state === 32 /* BeforeSpecialS */) {\n                this.stateBeforeSpecialS(c);\n            }\n            else if (this._state === 21 /* AfterComment1 */) {\n                this.stateAfterComment1(c);\n            }\n            else if (this._state === 14 /* InAttributeValueNq */) {\n                this.stateInAttributeValueNoQuotes(c);\n            }\n            else if (this._state === 4 /* InSelfClosingTag */) {\n                this.stateInSelfClosingTag(c);\n            }\n            else if (this._state === 16 /* InDeclaration */) {\n                this.stateInDeclaration(c);\n            }\n            else if (this._state === 15 /* BeforeDeclaration */) {\n                this.stateBeforeDeclaration(c);\n            }\n            else if (this._state === 22 /* AfterComment2 */) {\n                this.stateAfterComment2(c);\n            }\n            else if (this._state === 18 /* BeforeComment */) {\n                this.stateBeforeComment(c);\n            }\n            else if (this._state === 33 /* BeforeSpecialSEnd */) {\n                this.stateBeforeSpecialSEnd(c);\n            }\n            else if (this._state === 53 /* BeforeSpecialTEnd */) {\n                stateAfterSpecialTEnd(this, c);\n            }\n            else if (this._state === 39 /* AfterScript1 */) {\n                stateAfterScript1(this, c);\n            }\n            else if (this._state === 40 /* AfterScript2 */) {\n                stateAfterScript2(this, c);\n            }\n            else if (this._state === 41 /* AfterScript3 */) {\n                stateAfterScript3(this, c);\n            }\n            else if (this._state === 34 /* BeforeScript1 */) {\n                stateBeforeScript1(this, c);\n            }\n            else if (this._state === 35 /* BeforeScript2 */) {\n                stateBeforeScript2(this, c);\n            }\n            else if (this._state === 36 /* BeforeScript3 */) {\n                stateBeforeScript3(this, c);\n            }\n            else if (this._state === 37 /* BeforeScript4 */) {\n                stateBeforeScript4(this, c);\n            }\n            else if (this._state === 38 /* BeforeScript5 */) {\n                this.stateBeforeSpecialLast(c, 2 /* Script */);\n            }\n            else if (this._state === 42 /* AfterScript4 */) {\n                stateAfterScript4(this, c);\n            }\n            else if (this._state === 43 /* AfterScript5 */) {\n                this.stateAfterSpecialLast(c, 6);\n            }\n            else if (this._state === 44 /* BeforeStyle1 */) {\n                stateBeforeStyle1(this, c);\n            }\n            else if (this._state === 29 /* InCdata */) {\n                this.stateInCdata(c);\n            }\n            else if (this._state === 45 /* BeforeStyle2 */) {\n                stateBeforeStyle2(this, c);\n            }\n            else if (this._state === 46 /* BeforeStyle3 */) {\n                stateBeforeStyle3(this, c);\n            }\n            else if (this._state === 47 /* BeforeStyle4 */) {\n                this.stateBeforeSpecialLast(c, 3 /* Style */);\n            }\n            else if (this._state === 48 /* AfterStyle1 */) {\n                stateAfterStyle1(this, c);\n            }\n            else if (this._state === 49 /* AfterStyle2 */) {\n                stateAfterStyle2(this, c);\n            }\n            else if (this._state === 50 /* AfterStyle3 */) {\n                stateAfterStyle3(this, c);\n            }\n            else if (this._state === 51 /* AfterStyle4 */) {\n                this.stateAfterSpecialLast(c, 5);\n            }\n            else if (this._state === 52 /* BeforeSpecialT */) {\n                stateBeforeSpecialT(this, c);\n            }\n            else if (this._state === 54 /* BeforeTitle1 */) {\n                stateBeforeTitle1(this, c);\n            }\n            else if (this._state === 55 /* BeforeTitle2 */) {\n                stateBeforeTitle2(this, c);\n            }\n            else if (this._state === 56 /* BeforeTitle3 */) {\n                stateBeforeTitle3(this, c);\n            }\n            else if (this._state === 57 /* BeforeTitle4 */) {\n                this.stateBeforeSpecialLast(c, 4 /* Title */);\n            }\n            else if (this._state === 58 /* AfterTitle1 */) {\n                stateAfterTitle1(this, c);\n            }\n            else if (this._state === 59 /* AfterTitle2 */) {\n                stateAfterTitle2(this, c);\n            }\n            else if (this._state === 60 /* AfterTitle3 */) {\n                stateAfterTitle3(this, c);\n            }\n            else if (this._state === 61 /* AfterTitle4 */) {\n                this.stateAfterSpecialLast(c, 5);\n            }\n            else if (this._state === 17 /* InProcessingInstruction */) {\n                this.stateInProcessingInstruction(c);\n            }\n            else if (this._state === 64 /* InNamedEntity */) {\n                this.stateInNamedEntity(c);\n            }\n            else if (this._state === 23 /* BeforeCdata1 */) {\n                stateBeforeCdata1(this, c);\n            }\n            else if (this._state === 62 /* BeforeEntity */) {\n                stateBeforeEntity(this, c);\n            }\n            else if (this._state === 24 /* BeforeCdata2 */) {\n                stateBeforeCdata2(this, c);\n            }\n            else if (this._state === 25 /* BeforeCdata3 */) {\n                stateBeforeCdata3(this, c);\n            }\n            else if (this._state === 30 /* AfterCdata1 */) {\n                this.stateAfterCdata1(c);\n            }\n            else if (this._state === 31 /* AfterCdata2 */) {\n                this.stateAfterCdata2(c);\n            }\n            else if (this._state === 26 /* BeforeCdata4 */) {\n                stateBeforeCdata4(this, c);\n            }\n            else if (this._state === 27 /* BeforeCdata5 */) {\n                stateBeforeCdata5(this, c);\n            }\n            else if (this._state === 28 /* BeforeCdata6 */) {\n                this.stateBeforeCdata6(c);\n            }\n            else if (this._state === 66 /* InHexEntity */) {\n                this.stateInHexEntity(c);\n            }\n            else if (this._state === 65 /* InNumericEntity */) {\n                this.stateInNumericEntity(c);\n                // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n            }\n            else if (this._state === 63 /* BeforeNumericEntity */) {\n                stateBeforeNumericEntity(this, c);\n            }\n            else {\n                this.cbs.onerror(Error(\"unknown _state\"), this._state);\n            }\n            this._index++;\n        }\n        this.cleanup();\n    };\n    Tokenizer.prototype.finish = function () {\n        // If there is remaining data, emit it in a reasonable way\n        if (this.sectionStart < this._index) {\n            this.handleTrailingData();\n        }\n        this.cbs.onend();\n    };\n    Tokenizer.prototype.handleTrailingData = function () {\n        var data = this.buffer.substr(this.sectionStart);\n        if (this._state === 29 /* InCdata */ ||\n            this._state === 30 /* AfterCdata1 */ ||\n            this._state === 31 /* AfterCdata2 */) {\n            this.cbs.oncdata(data);\n        }\n        else if (this._state === 19 /* InComment */ ||\n            this._state === 21 /* AfterComment1 */ ||\n            this._state === 22 /* AfterComment2 */) {\n            this.cbs.oncomment(data);\n        }\n        else if (this._state === 64 /* InNamedEntity */ && !this.xmlMode) {\n            this.parseLegacyEntity();\n            if (this.sectionStart < this._index) {\n                this._state = this.baseState;\n                this.handleTrailingData();\n            }\n        }\n        else if (this._state === 65 /* InNumericEntity */ && !this.xmlMode) {\n            this.decodeNumericEntity(2, 10, false);\n            if (this.sectionStart < this._index) {\n                this._state = this.baseState;\n                this.handleTrailingData();\n            }\n        }\n        else if (this._state === 66 /* InHexEntity */ && !this.xmlMode) {\n            this.decodeNumericEntity(3, 16, false);\n            if (this.sectionStart < this._index) {\n                this._state = this.baseState;\n                this.handleTrailingData();\n            }\n        }\n        else if (this._state !== 3 /* InTagName */ &&\n            this._state !== 8 /* BeforeAttributeName */ &&\n            this._state !== 11 /* BeforeAttributeValue */ &&\n            this._state !== 10 /* AfterAttributeName */ &&\n            this._state !== 9 /* InAttributeName */ &&\n            this._state !== 13 /* InAttributeValueSq */ &&\n            this._state !== 12 /* InAttributeValueDq */ &&\n            this._state !== 14 /* InAttributeValueNq */ &&\n            this._state !== 6 /* InClosingTagName */) {\n            this.cbs.ontext(data);\n        }\n        /*\n         * Else, ignore remaining data\n         * TODO add a way to remove current tag\n         */\n    };\n    Tokenizer.prototype.getSection = function () {\n        return this.buffer.substring(this.sectionStart, this._index);\n    };\n    Tokenizer.prototype.emitToken = function (name) {\n        this.cbs[name](this.getSection());\n        this.sectionStart = -1;\n    };\n    Tokenizer.prototype.emitPartial = function (value) {\n        if (this.baseState !== 1 /* Text */) {\n            this.cbs.onattribdata(value); // TODO implement the new event\n        }\n        else {\n            this.cbs.ontext(value);\n        }\n    };\n    return Tokenizer;\n}());\nexports.default = Tokenizer;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/htmlparser2/lib/Tokenizer.js?");

/***/ }),

/***/ "../node_modules/htmlparser2/lib/index.js":
/*!************************************************!*\
  !*** ../node_modules/htmlparser2/lib/index.js ***!
  \************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RssHandler = exports.DefaultHandler = exports.DomUtils = exports.ElementType = exports.Tokenizer = exports.createDomStream = exports.parseDOM = exports.parseDocument = exports.DomHandler = exports.Parser = void 0;\nvar Parser_1 = __webpack_require__(/*! ./Parser */ \"../node_modules/htmlparser2/lib/Parser.js\");\nObject.defineProperty(exports, \"Parser\", ({ enumerable: true, get: function () { return Parser_1.Parser; } }));\nvar domhandler_1 = __webpack_require__(/*! domhandler */ \"../node_modules/domhandler/lib/index.js\");\nObject.defineProperty(exports, \"DomHandler\", ({ enumerable: true, get: function () { return domhandler_1.DomHandler; } }));\nObject.defineProperty(exports, \"DefaultHandler\", ({ enumerable: true, get: function () { return domhandler_1.DomHandler; } }));\n// Helper methods\n/**\n * Parses the data, returns the resulting document.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n */\nfunction parseDocument(data, options) {\n    var handler = new domhandler_1.DomHandler(undefined, options);\n    new Parser_1.Parser(handler, options).end(data);\n    return handler.root;\n}\nexports.parseDocument = parseDocument;\n/**\n * Parses data, returns an array of the root nodes.\n *\n * Note that the root nodes still have a `Document` node as their parent.\n * Use `parseDocument` to get the `Document` node instead.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n * @deprecated Use `parseDocument` instead.\n */\nfunction parseDOM(data, options) {\n    return parseDocument(data, options).children;\n}\nexports.parseDOM = parseDOM;\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param cb A callback that will be called once parsing has been completed.\n * @param options Optional options for the parser and DOM builder.\n * @param elementCb An optional callback that will be called every time a tag has been completed inside of the DOM.\n */\nfunction createDomStream(cb, options, elementCb) {\n    var handler = new domhandler_1.DomHandler(cb, options, elementCb);\n    return new Parser_1.Parser(handler, options);\n}\nexports.createDomStream = createDomStream;\nvar Tokenizer_1 = __webpack_require__(/*! ./Tokenizer */ \"../node_modules/htmlparser2/lib/Tokenizer.js\");\nObject.defineProperty(exports, \"Tokenizer\", ({ enumerable: true, get: function () { return __importDefault(Tokenizer_1).default; } }));\nvar ElementType = __importStar(__webpack_require__(/*! domelementtype */ \"../node_modules/domelementtype/lib/index.js\"));\nexports.ElementType = ElementType;\n/*\n * All of the following exports exist for backwards-compatibility.\n * They should probably be removed eventually.\n */\n__exportStar(__webpack_require__(/*! ./FeedHandler */ \"../node_modules/htmlparser2/lib/FeedHandler.js\"), exports);\nexports.DomUtils = __importStar(__webpack_require__(/*! domutils */ \"../node_modules/domutils/lib/index.js\"));\nvar FeedHandler_1 = __webpack_require__(/*! ./FeedHandler */ \"../node_modules/htmlparser2/lib/FeedHandler.js\");\nObject.defineProperty(exports, \"RssHandler\", ({ enumerable: true, get: function () { return FeedHandler_1.FeedHandler; } }));\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/htmlparser2/lib/index.js?");

/***/ }),

/***/ "../node_modules/klona/dist/index.js":
/*!*******************************************!*\
  !*** ../node_modules/klona/dist/index.js ***!
  \*******************************************/
/***/ ((__unused_webpack_module, exports) => {

eval("function klona(x) {\n\tif (typeof x !== 'object') return x;\n\n\tvar k, tmp, str=Object.prototype.toString.call(x);\n\n\tif (str === '[object Object]') {\n\t\tif (x.constructor !== Object && typeof x.constructor === 'function') {\n\t\t\ttmp = new x.constructor();\n\t\t\tfor (k in x) {\n\t\t\t\tif (tmp.hasOwnProperty(k) && tmp[k] !== x[k]) {\n\t\t\t\t\ttmp[k] = klona(x[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\ttmp = {}; // null\n\t\t\tfor (k in x) {\n\t\t\t\tif (k === '__proto__') {\n\t\t\t\t\tObject.defineProperty(tmp, k, {\n\t\t\t\t\t\tvalue: klona(x[k]),\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\twritable: true,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\ttmp[k] = klona(x[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn tmp;\n\t}\n\n\tif (str === '[object Array]') {\n\t\tk = x.length;\n\t\tfor (tmp=Array(k); k--;) {\n\t\t\ttmp[k] = klona(x[k]);\n\t\t}\n\t\treturn tmp;\n\t}\n\n\tif (str === '[object Set]') {\n\t\ttmp = new Set;\n\t\tx.forEach(function (val) {\n\t\t\ttmp.add(klona(val));\n\t\t});\n\t\treturn tmp;\n\t}\n\n\tif (str === '[object Map]') {\n\t\ttmp = new Map;\n\t\tx.forEach(function (val, key) {\n\t\t\ttmp.set(klona(key), klona(val));\n\t\t});\n\t\treturn tmp;\n\t}\n\n\tif (str === '[object Date]') {\n\t\treturn new Date(+x);\n\t}\n\n\tif (str === '[object RegExp]') {\n\t\ttmp = new RegExp(x.source, x.flags);\n\t\ttmp.lastIndex = x.lastIndex;\n\t\treturn tmp;\n\t}\n\n\tif (str === '[object DataView]') {\n\t\treturn new x.constructor( klona(x.buffer) );\n\t}\n\n\tif (str === '[object ArrayBuffer]') {\n\t\treturn x.slice(0);\n\t}\n\n\t// ArrayBuffer.isView(x)\n\t// ~> `new` bcuz `Buffer.slice` => ref\n\tif (str.slice(-6) === 'Array]') {\n\t\treturn new x.constructor(x);\n\t}\n\n\treturn x;\n}\n\nexports.klona = klona;\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/klona/dist/index.js?");

/***/ }),

/***/ "../node_modules/nanoid/non-secure/index.cjs":
/*!***************************************************!*\
  !*** ../node_modules/nanoid/non-secure/index.cjs ***!
  \***************************************************/
/***/ ((module) => {

eval("// This alphabet uses `A-Za-z0-9_-` symbols. The genetic algorithm helped\n// optimize the gzip compression for this alphabet.\nlet urlAlphabet =\n  'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW'\n\nlet customAlphabet = (alphabet, size) => {\n  return () => {\n    let id = ''\n    // A compact alternative for `for (var i = 0; i < step; i++)`.\n    let i = size\n    while (i--) {\n      // `| 0` is more compact and faster than `Math.floor()`.\n      id += alphabet[(Math.random() * alphabet.length) | 0]\n    }\n    return id\n  }\n}\n\nlet nanoid = (size = 21) => {\n  let id = ''\n  // A compact alternative for `for (var i = 0; i < step; i++)`.\n  let i = size\n  while (i--) {\n    // `| 0` is more compact and faster than `Math.floor()`.\n    id += urlAlphabet[(Math.random() * 64) | 0]\n  }\n  return id\n}\n\nmodule.exports = { nanoid, customAlphabet }\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/nanoid/non-secure/index.cjs?");

/***/ }),

/***/ "../node_modules/parse-srcset/src/parse-srcset.js":
/*!********************************************************!*\
  !*** ../node_modules/parse-srcset/src/parse-srcset.js ***!
  \********************************************************/
/***/ (function(module, exports) {

eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Srcset Parser\n *\n * By Alex Bell |  MIT License\n *\n * JS Parser for the string value that appears in markup <img srcset=\"here\">\n *\n * @returns Array [{url: _, d: _, w: _, h:_}, ...]\n *\n * Based super duper closely on the reference algorithm at:\n * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n *\n * Most comments are copied in directly from the spec\n * (except for comments in parens).\n */\n\n(function (root, factory) {\n\tif (true) {\n\t\t// AMD. Register as an anonymous module.\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n}(this, function () {\n\n\t// 1. Let input be the value passed to this algorithm.\n\treturn function (input) {\n\n\t\t// UTILITY FUNCTIONS\n\n\t\t// Manual is faster than RegEx\n\t\t// http://bjorn.tipling.com/state-and-regular-expressions-in-javascript\n\t\t// http://jsperf.com/whitespace-character/5\n\t\tfunction isSpace(c) {\n\t\t\treturn (c === \"\\u0020\" || // space\n\t\t\tc === \"\\u0009\" || // horizontal tab\n\t\t\tc === \"\\u000A\" || // new line\n\t\t\tc === \"\\u000C\" || // form feed\n\t\t\tc === \"\\u000D\");  // carriage return\n\t\t}\n\n\t\tfunction collectCharacters(regEx) {\n\t\t\tvar chars,\n\t\t\t\tmatch = regEx.exec(input.substring(pos));\n\t\t\tif (match) {\n\t\t\t\tchars = match[ 0 ];\n\t\t\t\tpos += chars.length;\n\t\t\t\treturn chars;\n\t\t\t}\n\t\t}\n\n\t\tvar inputLength = input.length,\n\n\t\t\t// (Don't use \\s, to avoid matching non-breaking space)\n\t\t\tregexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n\t\t\tregexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n\t\t\tregexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n\t\t\tregexTrailingCommas = /[,]+$/,\n\t\t\tregexNonNegativeInteger = /^\\d+$/,\n\n\t\t\t// ( Positive or negative or unsigned integers or decimals, without or without exponents.\n\t\t\t// Must include at least one digit.\n\t\t\t// According to spec tests any decimal point must be followed by a digit.\n\t\t\t// No leading plus sign is allowed.)\n\t\t\t// https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n\t\t\tregexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,\n\n\t\t\turl,\n\t\t\tdescriptors,\n\t\t\tcurrentDescriptor,\n\t\t\tstate,\n\t\t\tc,\n\n\t\t\t// 2. Let position be a pointer into input, initially pointing at the start\n\t\t\t//    of the string.\n\t\t\tpos = 0,\n\n\t\t\t// 3. Let candidates be an initially empty source set.\n\t\t\tcandidates = [];\n\n\t\t// 4. Splitting loop: Collect a sequence of characters that are space\n\t\t//    characters or U+002C COMMA characters. If any U+002C COMMA characters\n\t\t//    were collected, that is a parse error.\n\t\twhile (true) {\n\t\t\tcollectCharacters(regexLeadingCommasOrSpaces);\n\n\t\t\t// 5. If position is past the end of input, return candidates and abort these steps.\n\t\t\tif (pos >= inputLength) {\n\t\t\t\treturn candidates; // (we're done, this is the sole return path)\n\t\t\t}\n\n\t\t\t// 6. Collect a sequence of characters that are not space characters,\n\t\t\t//    and let that be url.\n\t\t\turl = collectCharacters(regexLeadingNotSpaces);\n\n\t\t\t// 7. Let descriptors be a new empty list.\n\t\t\tdescriptors = [];\n\n\t\t\t// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n\t\t\t//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n\t\t\t//         more than one character, that is a parse error.\n\t\t\tif (url.slice(-1) === \",\") {\n\t\t\t\turl = url.replace(regexTrailingCommas, \"\");\n\t\t\t\t// (Jump ahead to step 9 to skip tokenization and just push the candidate).\n\t\t\t\tparseDescriptors();\n\n\t\t\t\t//\tOtherwise, follow these substeps:\n\t\t\t} else {\n\t\t\t\ttokenize();\n\t\t\t} // (close else of step 8)\n\n\t\t\t// 16. Return to the step labeled splitting loop.\n\t\t} // (Close of big while loop.)\n\n\t\t/**\n\t\t * Tokenizes descriptor properties prior to parsing\n\t\t * Returns undefined.\n\t\t */\n\t\tfunction tokenize() {\n\n\t\t\t// 8.1. Descriptor tokeniser: Skip whitespace\n\t\t\tcollectCharacters(regexLeadingSpaces);\n\n\t\t\t// 8.2. Let current descriptor be the empty string.\n\t\t\tcurrentDescriptor = \"\";\n\n\t\t\t// 8.3. Let state be in descriptor.\n\t\t\tstate = \"in descriptor\";\n\n\t\t\twhile (true) {\n\n\t\t\t\t// 8.4. Let c be the character at position.\n\t\t\t\tc = input.charAt(pos);\n\n\t\t\t\t//  Do the following depending on the value of state.\n\t\t\t\t//  For the purpose of this step, \"EOF\" is a special character representing\n\t\t\t\t//  that position is past the end of input.\n\n\t\t\t\t// In descriptor\n\t\t\t\tif (state === \"in descriptor\") {\n\t\t\t\t\t// Do the following, depending on the value of c:\n\n\t\t\t\t\t// Space character\n\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t// descriptors and let current descriptor be the empty string.\n\t\t\t\t\t// Set state to after descriptor.\n\t\t\t\t\tif (isSpace(c)) {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t\tcurrentDescriptor = \"\";\n\t\t\t\t\t\t\tstate = \"after descriptor\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// U+002C COMMA (,)\n\t\t\t\t\t\t// Advance position to the next character in input. If current descriptor\n\t\t\t\t\t\t// is not empty, append current descriptor to descriptors. Jump to the step\n\t\t\t\t\t\t// labeled descriptor parser.\n\t\t\t\t\t} else if (c === \",\") {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// U+0028 LEFT PARENTHESIS (()\n\t\t\t\t\t\t// Append c to current descriptor. Set state to in parens.\n\t\t\t\t\t} else if (c === \"\\u0028\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in parens\";\n\n\t\t\t\t\t\t// EOF\n\t\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t\t// descriptors. Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\t\t\t\t\t// (end \"in descriptor\"\n\n\t\t\t\t\t// In parens\n\t\t\t\t} else if (state === \"in parens\") {\n\n\t\t\t\t\t// U+0029 RIGHT PARENTHESIS ())\n\t\t\t\t\t// Append c to current descriptor. Set state to in descriptor.\n\t\t\t\t\tif (c === \")\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in descriptor\";\n\n\t\t\t\t\t\t// EOF\n\t\t\t\t\t\t// Append current descriptor to descriptors. Jump to the step labeled\n\t\t\t\t\t\t// descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\n\t\t\t\t\t// After descriptor\n\t\t\t\t} else if (state === \"after descriptor\") {\n\n\t\t\t\t\t// Do the following, depending on the value of c:\n\t\t\t\t\t// Space character: Stay in this state.\n\t\t\t\t\tif (isSpace(c)) {\n\n\t\t\t\t\t\t// EOF: Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Set state to in descriptor. Set position to the previous character in input.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"in descriptor\";\n\t\t\t\t\t\tpos -= 1;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Advance position to the next character in input.\n\t\t\t\tpos += 1;\n\n\t\t\t\t// Repeat this step.\n\t\t\t} // (close while true loop)\n\t\t}\n\n\t\t/**\n\t\t * Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t * @return undefined\n\t\t */\n\t\t// Declared outside of the while loop so that it's only created once.\n\t\tfunction parseDescriptors() {\n\n\t\t\t// 9. Descriptor parser: Let error be no.\n\t\t\tvar pError = false,\n\n\t\t\t\t// 10. Let width be absent.\n\t\t\t\t// 11. Let density be absent.\n\t\t\t\t// 12. Let future-compat-h be absent. (We're implementing it now as h)\n\t\t\t\tw, d, h, i,\n\t\t\t\tcandidate = {},\n\t\t\t\tdesc, lastChar, value, intVal, floatVal;\n\n\t\t\t// 13. For each descriptor in descriptors, run the appropriate set of steps\n\t\t\t// from the following list:\n\t\t\tfor (i = 0 ; i < descriptors.length; i++) {\n\t\t\t\tdesc = descriptors[ i ];\n\n\t\t\t\tlastChar = desc[ desc.length - 1 ];\n\t\t\t\tvalue = desc.substring(0, desc.length - 1);\n\t\t\t\tintVal = parseInt(value, 10);\n\t\t\t\tfloatVal = parseFloat(value);\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0077 LATIN SMALL LETTER W character\n\t\t\t\tif (regexNonNegativeInteger.test(value) && (lastChar === \"w\")) {\n\n\t\t\t\t\t// If width and density are not both absent, then let error be yes.\n\t\t\t\t\tif (w || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes.\n\t\t\t\t\t// Otherwise, let width be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {w = intVal;}\n\n\t\t\t\t\t// If the descriptor consists of a valid floating-point number followed by\n\t\t\t\t\t// a U+0078 LATIN SMALL LETTER X character\n\t\t\t\t} else if (regexFloatingPoint.test(value) && (lastChar === \"x\")) {\n\n\t\t\t\t\t// If width, density and future-compat-h are not all absent, then let error\n\t\t\t\t\t// be yes.\n\t\t\t\t\tif (w || d || h) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing floating-point number values to the descriptor.\n\t\t\t\t\t// If the result is less than zero, let error be yes. Otherwise, let density\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (floatVal < 0) {pError = true;} else {d = floatVal;}\n\n\t\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t\t// a U+0068 LATIN SMALL LETTER H character\n\t\t\t\t} else if (regexNonNegativeInteger.test(value) && (lastChar === \"h\")) {\n\n\t\t\t\t\t// If height and density are not both absent, then let error be yes.\n\t\t\t\t\tif (h || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes. Otherwise, let future-compat-h\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {h = intVal;}\n\n\t\t\t\t\t// Anything else, Let error be yes.\n\t\t\t\t} else {pError = true;}\n\t\t\t} // (close step 13 for loop)\n\n\t\t\t// 15. If error is still no, then append a new image source to candidates whose\n\t\t\t// URL is url, associated with a width width if not absent and a pixel\n\t\t\t// density density if not absent. Otherwise, there is a parse error.\n\t\t\tif (!pError) {\n\t\t\t\tcandidate.url = url;\n\t\t\t\tif (w) { candidate.w = w;}\n\t\t\t\tif (d) { candidate.d = d;}\n\t\t\t\tif (h) { candidate.h = h;}\n\t\t\t\tcandidates.push(candidate);\n\t\t\t} else if (console && console.log) {\n\t\t\t\tconsole.log(\"Invalid srcset descriptor found in '\" +\n\t\t\t\t\tinput + \"' at '\" + desc + \"'.\");\n\t\t\t}\n\t\t} // (close parseDescriptors fn)\n\n\t}\n}));\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/parse-srcset/src/parse-srcset.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/at-rule.js":
/*!**********************************************!*\
  !*** ../node_modules/postcss/lib/at-rule.js ***!
  \**********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet Container = __webpack_require__(/*! ./container */ \"../node_modules/postcss/lib/container.js\")\n\nclass AtRule extends Container {\n  constructor(defaults) {\n    super(defaults)\n    this.type = 'atrule'\n  }\n\n  append(...children) {\n    if (!this.proxyOf.nodes) this.nodes = []\n    return super.append(...children)\n  }\n\n  prepend(...children) {\n    if (!this.proxyOf.nodes) this.nodes = []\n    return super.prepend(...children)\n  }\n}\n\nmodule.exports = AtRule\nAtRule.default = AtRule\n\nContainer.registerAtRule(AtRule)\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/at-rule.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/comment.js":
/*!**********************************************!*\
  !*** ../node_modules/postcss/lib/comment.js ***!
  \**********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet Node = __webpack_require__(/*! ./node */ \"../node_modules/postcss/lib/node.js\")\n\nclass Comment extends Node {\n  constructor(defaults) {\n    super(defaults)\n    this.type = 'comment'\n  }\n}\n\nmodule.exports = Comment\nComment.default = Comment\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/comment.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/container.js":
/*!************************************************!*\
  !*** ../node_modules/postcss/lib/container.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet Declaration = __webpack_require__(/*! ./declaration */ \"../node_modules/postcss/lib/declaration.js\")\nlet { isClean } = __webpack_require__(/*! ./symbols */ \"../node_modules/postcss/lib/symbols.js\")\nlet Comment = __webpack_require__(/*! ./comment */ \"../node_modules/postcss/lib/comment.js\")\nlet Node = __webpack_require__(/*! ./node */ \"../node_modules/postcss/lib/node.js\")\n\nlet parse, Rule, AtRule\n\nfunction cleanSource(nodes) {\n  return nodes.map(i => {\n    if (i.nodes) i.nodes = cleanSource(i.nodes)\n    delete i.source\n    return i\n  })\n}\n\nfunction markDirtyUp(node) {\n  node[isClean] = false\n  if (node.proxyOf.nodes) {\n    for (let i of node.proxyOf.nodes) {\n      markDirtyUp(i)\n    }\n  }\n}\n\n// istanbul ignore next\nfunction rebuild(node) {\n  if (node.type === 'atrule') {\n    Object.setPrototypeOf(node, AtRule.prototype)\n  } else if (node.type === 'rule') {\n    Object.setPrototypeOf(node, Rule.prototype)\n  } else if (node.type === 'decl') {\n    Object.setPrototypeOf(node, Declaration.prototype)\n  } else if (node.type === 'comment') {\n    Object.setPrototypeOf(node, Comment.prototype)\n  }\n\n  if (node.nodes) {\n    node.nodes.forEach(child => {\n      rebuild(child)\n    })\n  }\n}\n\nclass Container extends Node {\n  push(child) {\n    child.parent = this\n    this.proxyOf.nodes.push(child)\n    return this\n  }\n\n  each(callback) {\n    if (!this.proxyOf.nodes) return undefined\n    let iterator = this.getIterator()\n\n    let index, result\n    while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n      index = this.indexes[iterator]\n      result = callback(this.proxyOf.nodes[index], index)\n      if (result === false) break\n\n      this.indexes[iterator] += 1\n    }\n\n    delete this.indexes[iterator]\n    return result\n  }\n\n  walk(callback) {\n    return this.each((child, i) => {\n      let result\n      try {\n        result = callback(child, i)\n      } catch (e) {\n        throw child.addToError(e)\n      }\n      if (result !== false && child.walk) {\n        result = child.walk(callback)\n      }\n\n      return result\n    })\n  }\n\n  walkDecls(prop, callback) {\n    if (!callback) {\n      callback = prop\n      return this.walk((child, i) => {\n        if (child.type === 'decl') {\n          return callback(child, i)\n        }\n      })\n    }\n    if (prop instanceof RegExp) {\n      return this.walk((child, i) => {\n        if (child.type === 'decl' && prop.test(child.prop)) {\n          return callback(child, i)\n        }\n      })\n    }\n    return this.walk((child, i) => {\n      if (child.type === 'decl' && child.prop === prop) {\n        return callback(child, i)\n      }\n    })\n  }\n\n  walkRules(selector, callback) {\n    if (!callback) {\n      callback = selector\n\n      return this.walk((child, i) => {\n        if (child.type === 'rule') {\n          return callback(child, i)\n        }\n      })\n    }\n    if (selector instanceof RegExp) {\n      return this.walk((child, i) => {\n        if (child.type === 'rule' && selector.test(child.selector)) {\n          return callback(child, i)\n        }\n      })\n    }\n    return this.walk((child, i) => {\n      if (child.type === 'rule' && child.selector === selector) {\n        return callback(child, i)\n      }\n    })\n  }\n\n  walkAtRules(name, callback) {\n    if (!callback) {\n      callback = name\n      return this.walk((child, i) => {\n        if (child.type === 'atrule') {\n          return callback(child, i)\n        }\n      })\n    }\n    if (name instanceof RegExp) {\n      return this.walk((child, i) => {\n        if (child.type === 'atrule' && name.test(child.name)) {\n          return callback(child, i)\n        }\n      })\n    }\n    return this.walk((child, i) => {\n      if (child.type === 'atrule' && child.name === name) {\n        return callback(child, i)\n      }\n    })\n  }\n\n  walkComments(callback) {\n    return this.walk((child, i) => {\n      if (child.type === 'comment') {\n        return callback(child, i)\n      }\n    })\n  }\n\n  append(...children) {\n    for (let child of children) {\n      let nodes = this.normalize(child, this.last)\n      for (let node of nodes) this.proxyOf.nodes.push(node)\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  prepend(...children) {\n    children = children.reverse()\n    for (let child of children) {\n      let nodes = this.normalize(child, this.first, 'prepend').reverse()\n      for (let node of nodes) this.proxyOf.nodes.unshift(node)\n      for (let id in this.indexes) {\n        this.indexes[id] = this.indexes[id] + nodes.length\n      }\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  cleanRaws(keepBetween) {\n    super.cleanRaws(keepBetween)\n    if (this.nodes) {\n      for (let node of this.nodes) node.cleanRaws(keepBetween)\n    }\n  }\n\n  insertBefore(exist, add) {\n    exist = this.index(exist)\n\n    let type = exist === 0 ? 'prepend' : false\n    let nodes = this.normalize(add, this.proxyOf.nodes[exist], type).reverse()\n    for (let node of nodes) this.proxyOf.nodes.splice(exist, 0, node)\n\n    let index\n    for (let id in this.indexes) {\n      index = this.indexes[id]\n      if (exist <= index) {\n        this.indexes[id] = index + nodes.length\n      }\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  insertAfter(exist, add) {\n    exist = this.index(exist)\n\n    let nodes = this.normalize(add, this.proxyOf.nodes[exist]).reverse()\n    for (let node of nodes) this.proxyOf.nodes.splice(exist + 1, 0, node)\n\n    let index\n    for (let id in this.indexes) {\n      index = this.indexes[id]\n      if (exist < index) {\n        this.indexes[id] = index + nodes.length\n      }\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  removeChild(child) {\n    child = this.index(child)\n    this.proxyOf.nodes[child].parent = undefined\n    this.proxyOf.nodes.splice(child, 1)\n\n    let index\n    for (let id in this.indexes) {\n      index = this.indexes[id]\n      if (index >= child) {\n        this.indexes[id] = index - 1\n      }\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  removeAll() {\n    for (let node of this.proxyOf.nodes) node.parent = undefined\n    this.proxyOf.nodes = []\n\n    this.markDirty()\n\n    return this\n  }\n\n  replaceValues(pattern, opts, callback) {\n    if (!callback) {\n      callback = opts\n      opts = {}\n    }\n\n    this.walkDecls(decl => {\n      if (opts.props && !opts.props.includes(decl.prop)) return\n      if (opts.fast && !decl.value.includes(opts.fast)) return\n\n      decl.value = decl.value.replace(pattern, callback)\n    })\n\n    this.markDirty()\n\n    return this\n  }\n\n  every(condition) {\n    return this.nodes.every(condition)\n  }\n\n  some(condition) {\n    return this.nodes.some(condition)\n  }\n\n  index(child) {\n    if (typeof child === 'number') return child\n    if (child.proxyOf) child = child.proxyOf\n    return this.proxyOf.nodes.indexOf(child)\n  }\n\n  get first() {\n    if (!this.proxyOf.nodes) return undefined\n    return this.proxyOf.nodes[0]\n  }\n\n  get last() {\n    if (!this.proxyOf.nodes) return undefined\n    return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]\n  }\n\n  normalize(nodes, sample) {\n    if (typeof nodes === 'string') {\n      nodes = cleanSource(parse(nodes).nodes)\n    } else if (Array.isArray(nodes)) {\n      nodes = nodes.slice(0)\n      for (let i of nodes) {\n        if (i.parent) i.parent.removeChild(i, 'ignore')\n      }\n    } else if (nodes.type === 'root') {\n      nodes = nodes.nodes.slice(0)\n      for (let i of nodes) {\n        if (i.parent) i.parent.removeChild(i, 'ignore')\n      }\n    } else if (nodes.type) {\n      nodes = [nodes]\n    } else if (nodes.prop) {\n      if (typeof nodes.value === 'undefined') {\n        throw new Error('Value field is missed in node creation')\n      } else if (typeof nodes.value !== 'string') {\n        nodes.value = String(nodes.value)\n      }\n      nodes = [new Declaration(nodes)]\n    } else if (nodes.selector) {\n      nodes = [new Rule(nodes)]\n    } else if (nodes.name) {\n      nodes = [new AtRule(nodes)]\n    } else if (nodes.text) {\n      nodes = [new Comment(nodes)]\n    } else {\n      throw new Error('Unknown node type in node creation')\n    }\n\n    let processed = nodes.map(i => {\n      // istanbul ignore next\n      if (typeof i.markDirty !== 'function') rebuild(i)\n      i = i.proxyOf\n      if (i.parent) i.parent.removeChild(i)\n      if (i[isClean]) markDirtyUp(i)\n      if (typeof i.raws.before === 'undefined') {\n        if (sample && typeof sample.raws.before !== 'undefined') {\n          i.raws.before = sample.raws.before.replace(/\\S/g, '')\n        }\n      }\n      i.parent = this\n      return i\n    })\n\n    return processed\n  }\n\n  getProxyProcessor() {\n    return {\n      set(node, prop, value) {\n        if (node[prop] === value) return true\n        node[prop] = value\n        if (prop === 'name' || prop === 'params' || prop === 'selector') {\n          node.markDirty()\n        }\n        return true\n      },\n\n      get(node, prop) {\n        if (prop === 'proxyOf') {\n          return node\n        } else if (!node[prop]) {\n          return node[prop]\n        } else if (\n          prop === 'each' ||\n          (typeof prop === 'string' && prop.startsWith('walk'))\n        ) {\n          return (...args) => {\n            return node[prop](\n              ...args.map(i => {\n                if (typeof i === 'function') {\n                  return (child, index) => i(child.toProxy(), index)\n                } else {\n                  return i\n                }\n              })\n            )\n          }\n        } else if (prop === 'every' || prop === 'some') {\n          return cb => {\n            return node[prop]((child, ...other) =>\n              cb(child.toProxy(), ...other)\n            )\n          }\n        } else if (prop === 'root') {\n          return () => node.root().toProxy()\n        } else if (prop === 'nodes') {\n          return node.nodes.map(i => i.toProxy())\n        } else if (prop === 'first' || prop === 'last') {\n          return node[prop].toProxy()\n        } else {\n          return node[prop]\n        }\n      }\n    }\n  }\n\n  getIterator() {\n    if (!this.lastEach) this.lastEach = 0\n    if (!this.indexes) this.indexes = {}\n\n    this.lastEach += 1\n    let iterator = this.lastEach\n    this.indexes[iterator] = 0\n\n    return iterator\n  }\n}\n\nContainer.registerParse = dependant => {\n  parse = dependant\n}\n\nContainer.registerRule = dependant => {\n  Rule = dependant\n}\n\nContainer.registerAtRule = dependant => {\n  AtRule = dependant\n}\n\nmodule.exports = Container\nContainer.default = Container\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/container.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/css-syntax-error.js":
/*!*******************************************************!*\
  !*** ../node_modules/postcss/lib/css-syntax-error.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet { red, bold, gray, options: colorette } = __webpack_require__(/*! colorette */ \"?6d15\")\n\nlet terminalHighlight = __webpack_require__(/*! ./terminal-highlight */ \"?61f1\")\n\nclass CssSyntaxError extends Error {\n  constructor(message, line, column, source, file, plugin) {\n    super(message)\n    this.name = 'CssSyntaxError'\n    this.reason = message\n\n    if (file) {\n      this.file = file\n    }\n    if (source) {\n      this.source = source\n    }\n    if (plugin) {\n      this.plugin = plugin\n    }\n    if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n      this.line = line\n      this.column = column\n    }\n\n    this.setMessage()\n\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, CssSyntaxError)\n    }\n  }\n\n  setMessage() {\n    this.message = this.plugin ? this.plugin + ': ' : ''\n    this.message += this.file ? this.file : '<css input>'\n    if (typeof this.line !== 'undefined') {\n      this.message += ':' + this.line + ':' + this.column\n    }\n    this.message += ': ' + this.reason\n  }\n\n  showSourceCode(color) {\n    if (!this.source) return ''\n\n    let css = this.source\n    if (color == null) color = colorette.enabled\n    if (terminalHighlight) {\n      if (color) css = terminalHighlight(css)\n    }\n\n    let lines = css.split(/\\r?\\n/)\n    let start = Math.max(this.line - 3, 0)\n    let end = Math.min(this.line + 2, lines.length)\n\n    let maxWidth = String(end).length\n\n    let mark, aside\n    if (color) {\n      mark = text => bold(red(text))\n      aside = text => gray(text)\n    } else {\n      mark = aside = str => str\n    }\n\n    return lines\n      .slice(start, end)\n      .map((line, index) => {\n        let number = start + 1 + index\n        let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '\n        if (number === this.line) {\n          let spacing =\n            aside(gutter.replace(/\\d/g, ' ')) +\n            line.slice(0, this.column - 1).replace(/[^\\t]/g, ' ')\n          return mark('>') + aside(gutter) + line + '\\n ' + spacing + mark('^')\n        }\n        return ' ' + aside(gutter) + line\n      })\n      .join('\\n')\n  }\n\n  toString() {\n    let code = this.showSourceCode()\n    if (code) {\n      code = '\\n\\n' + code + '\\n'\n    }\n    return this.name + ': ' + this.message + code\n  }\n}\n\nmodule.exports = CssSyntaxError\nCssSyntaxError.default = CssSyntaxError\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/css-syntax-error.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/declaration.js":
/*!**************************************************!*\
  !*** ../node_modules/postcss/lib/declaration.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet Node = __webpack_require__(/*! ./node */ \"../node_modules/postcss/lib/node.js\")\n\nclass Declaration extends Node {\n  constructor(defaults) {\n    if (\n      defaults &&\n      typeof defaults.value !== 'undefined' &&\n      typeof defaults.value !== 'string'\n    ) {\n      defaults = { ...defaults, value: String(defaults.value) }\n    }\n    super(defaults)\n    this.type = 'decl'\n  }\n\n  get variable() {\n    return this.prop.startsWith('--') || this.prop[0] === '$'\n  }\n}\n\nmodule.exports = Declaration\nDeclaration.default = Declaration\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/declaration.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/fromJSON.js":
/*!***********************************************!*\
  !*** ../node_modules/postcss/lib/fromJSON.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet Declaration = __webpack_require__(/*! ./declaration */ \"../node_modules/postcss/lib/declaration.js\")\nlet PreviousMap = __webpack_require__(/*! ./previous-map */ \"../node_modules/postcss/lib/previous-map.js\")\nlet Comment = __webpack_require__(/*! ./comment */ \"../node_modules/postcss/lib/comment.js\")\nlet AtRule = __webpack_require__(/*! ./at-rule */ \"../node_modules/postcss/lib/at-rule.js\")\nlet Input = __webpack_require__(/*! ./input */ \"../node_modules/postcss/lib/input.js\")\nlet Root = __webpack_require__(/*! ./root */ \"../node_modules/postcss/lib/root.js\")\nlet Rule = __webpack_require__(/*! ./rule */ \"../node_modules/postcss/lib/rule.js\")\n\nfunction fromJSON(json, inputs) {\n  if (Array.isArray(json)) return json.map(n => fromJSON(n))\n\n  let { inputs: ownInputs, ...defaults } = json\n  if (ownInputs) {\n    inputs = []\n    for (let input of ownInputs) {\n      let inputHydrated = { ...input, __proto__: Input.prototype }\n      if (inputHydrated.map) {\n        inputHydrated.map = {\n          ...inputHydrated.map,\n          __proto__: PreviousMap.prototype\n        }\n      }\n      inputs.push(inputHydrated)\n    }\n  }\n  if (defaults.nodes) {\n    defaults.nodes = json.nodes.map(n => fromJSON(n, inputs))\n  }\n  if (defaults.source) {\n    let { inputId, ...source } = defaults.source\n    defaults.source = source\n    if (inputId != null) {\n      defaults.source.input = inputs[inputId]\n    }\n  }\n  if (defaults.type === 'root') {\n    return new Root(defaults)\n  } else if (defaults.type === 'decl') {\n    return new Declaration(defaults)\n  } else if (defaults.type === 'rule') {\n    return new Rule(defaults)\n  } else if (defaults.type === 'comment') {\n    return new Comment(defaults)\n  } else if (defaults.type === 'atrule') {\n    return new AtRule(defaults)\n  } else {\n    throw new Error('Unknown node type: ' + json.type)\n  }\n}\n\nmodule.exports = fromJSON\nfromJSON.default = fromJSON\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/fromJSON.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/input.js":
/*!********************************************!*\
  !*** ../node_modules/postcss/lib/input.js ***!
  \********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet { fileURLToPath, pathToFileURL } = __webpack_require__(/*! url */ \"?2a77\")\nlet { resolve, isAbsolute } = __webpack_require__(/*! path */ \"?9055\")\nlet { SourceMapConsumer, SourceMapGenerator } = __webpack_require__(/*! source-map */ \"?1b37\")\nlet { nanoid } = __webpack_require__(/*! nanoid/non-secure */ \"../node_modules/nanoid/non-secure/index.cjs\")\n\nlet terminalHighlight = __webpack_require__(/*! ./terminal-highlight */ \"?61f1\")\nlet CssSyntaxError = __webpack_require__(/*! ./css-syntax-error */ \"../node_modules/postcss/lib/css-syntax-error.js\")\nlet PreviousMap = __webpack_require__(/*! ./previous-map */ \"../node_modules/postcss/lib/previous-map.js\")\n\nlet fromOffsetCache = Symbol('fromOffset cache')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(resolve && isAbsolute)\n\nclass Input {\n  constructor(css, opts = {}) {\n    if (\n      css === null ||\n      typeof css === 'undefined' ||\n      (typeof css === 'object' && !css.toString)\n    ) {\n      throw new Error(`PostCSS received ${css} instead of CSS string`)\n    }\n\n    this.css = css.toString()\n\n    if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n      this.hasBOM = true\n      this.css = this.css.slice(1)\n    } else {\n      this.hasBOM = false\n    }\n\n    if (opts.from) {\n      if (\n        !pathAvailable ||\n        /^\\w+:\\/\\//.test(opts.from) ||\n        isAbsolute(opts.from)\n      ) {\n        this.file = opts.from\n      } else {\n        this.file = resolve(opts.from)\n      }\n    }\n\n    if (pathAvailable && sourceMapAvailable) {\n      let map = new PreviousMap(this.css, opts)\n      if (map.text) {\n        this.map = map\n        let file = map.consumer().file\n        if (!this.file && file) this.file = this.mapResolve(file)\n      }\n    }\n\n    if (!this.file) {\n      this.id = '<input css ' + nanoid(6) + '>'\n    }\n    if (this.map) this.map.file = this.from\n  }\n\n  fromOffset(offset) {\n    let lastLine, lineToIndex\n    if (!this[fromOffsetCache]) {\n      let lines = this.css.split('\\n')\n      lineToIndex = new Array(lines.length)\n      let prevIndex = 0\n\n      for (let i = 0, l = lines.length; i < l; i++) {\n        lineToIndex[i] = prevIndex\n        prevIndex += lines[i].length + 1\n      }\n\n      this[fromOffsetCache] = lineToIndex\n    } else {\n      lineToIndex = this[fromOffsetCache]\n    }\n    lastLine = lineToIndex[lineToIndex.length - 1]\n\n    let min = 0\n    if (offset >= lastLine) {\n      min = lineToIndex.length - 1\n    } else {\n      let max = lineToIndex.length - 2\n      let mid\n      while (min < max) {\n        mid = min + ((max - min) >> 1)\n        if (offset < lineToIndex[mid]) {\n          max = mid - 1\n        } else if (offset >= lineToIndex[mid + 1]) {\n          min = mid + 1\n        } else {\n          min = mid\n          break\n        }\n      }\n    }\n    return {\n      line: min + 1,\n      col: offset - lineToIndex[min] + 1\n    }\n  }\n\n  error(message, line, column, opts = {}) {\n    let result\n    if (!column) {\n      let pos = this.fromOffset(line)\n      line = pos.line\n      column = pos.col\n    }\n    let origin = this.origin(line, column)\n    if (origin) {\n      result = new CssSyntaxError(\n        message,\n        origin.line,\n        origin.column,\n        origin.source,\n        origin.file,\n        opts.plugin\n      )\n    } else {\n      result = new CssSyntaxError(\n        message,\n        line,\n        column,\n        this.css,\n        this.file,\n        opts.plugin\n      )\n    }\n\n    result.input = { line, column, source: this.css }\n    if (this.file) {\n      if (pathToFileURL) {\n        result.input.url = pathToFileURL(this.file).toString()\n      }\n      result.input.file = this.file\n    }\n\n    return result\n  }\n\n  origin(line, column) {\n    if (!this.map) return false\n    let consumer = this.map.consumer()\n\n    let from = consumer.originalPositionFor({ line, column })\n    if (!from.source) return false\n\n    let fromUrl\n\n    if (isAbsolute(from.source)) {\n      fromUrl = pathToFileURL(from.source)\n    } else {\n      fromUrl = new URL(\n        from.source,\n        this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n      )\n    }\n\n    let result = {\n      url: fromUrl.toString(),\n      line: from.line,\n      column: from.column\n    }\n\n    if (fromUrl.protocol === 'file:') {\n      if (fileURLToPath) {\n        result.file = fileURLToPath(fromUrl)\n      } else {\n        // istanbul ignore next\n        throw new Error(`file: protocol is not available in this PostCSS build`)\n      }\n    }\n\n    let source = consumer.sourceContentFor(from.source)\n    if (source) result.source = source\n\n    return result\n  }\n\n  mapResolve(file) {\n    if (/^\\w+:\\/\\//.test(file)) {\n      return file\n    }\n    return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file)\n  }\n\n  get from() {\n    return this.file || this.id\n  }\n\n  toJSON() {\n    let json = {}\n    for (let name of ['hasBOM', 'css', 'file', 'id']) {\n      if (this[name] != null) {\n        json[name] = this[name]\n      }\n    }\n    if (this.map) {\n      json.map = { ...this.map }\n      if (json.map.consumerCache) {\n        json.map.consumerCache = undefined\n      }\n    }\n    return json\n  }\n}\n\nmodule.exports = Input\nInput.default = Input\n\nif (terminalHighlight && terminalHighlight.registerInput) {\n  terminalHighlight.registerInput(Input)\n}\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/input.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/lazy-result.js":
/*!**************************************************!*\
  !*** ../node_modules/postcss/lib/lazy-result.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet MapGenerator = __webpack_require__(/*! ./map-generator */ \"../node_modules/postcss/lib/map-generator.js\")\nlet { isClean } = __webpack_require__(/*! ./symbols */ \"../node_modules/postcss/lib/symbols.js\")\nlet stringify = __webpack_require__(/*! ./stringify */ \"../node_modules/postcss/lib/stringify.js\")\nlet warnOnce = __webpack_require__(/*! ./warn-once */ \"../node_modules/postcss/lib/warn-once.js\")\nlet Result = __webpack_require__(/*! ./result */ \"../node_modules/postcss/lib/result.js\")\nlet parse = __webpack_require__(/*! ./parse */ \"../node_modules/postcss/lib/parse.js\")\nlet Root = __webpack_require__(/*! ./root */ \"../node_modules/postcss/lib/root.js\")\n\nconst TYPE_TO_CLASS_NAME = {\n  root: 'Root',\n  atrule: 'AtRule',\n  rule: 'Rule',\n  decl: 'Declaration',\n  comment: 'Comment'\n}\n\nconst PLUGIN_PROPS = {\n  postcssPlugin: true,\n  prepare: true,\n  Once: true,\n  Root: true,\n  Declaration: true,\n  Rule: true,\n  AtRule: true,\n  Comment: true,\n  DeclarationExit: true,\n  RuleExit: true,\n  AtRuleExit: true,\n  CommentExit: true,\n  RootExit: true,\n  OnceExit: true\n}\n\nconst NOT_VISITORS = {\n  postcssPlugin: true,\n  prepare: true,\n  Once: true\n}\n\nconst CHILDREN = 0\n\nfunction isPromise(obj) {\n  return typeof obj === 'object' && typeof obj.then === 'function'\n}\n\nfunction getEvents(node) {\n  let key = false\n  let type = TYPE_TO_CLASS_NAME[node.type]\n  if (node.type === 'decl') {\n    key = node.prop.toLowerCase()\n  } else if (node.type === 'atrule') {\n    key = node.name.toLowerCase()\n  }\n\n  if (key && node.append) {\n    return [\n      type,\n      type + '-' + key,\n      CHILDREN,\n      type + 'Exit',\n      type + 'Exit-' + key\n    ]\n  } else if (key) {\n    return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key]\n  } else if (node.append) {\n    return [type, CHILDREN, type + 'Exit']\n  } else {\n    return [type, type + 'Exit']\n  }\n}\n\nfunction toStack(node) {\n  let events\n  if (node.type === 'root') {\n    events = ['Root', CHILDREN, 'RootExit']\n  } else {\n    events = getEvents(node)\n  }\n\n  return {\n    node,\n    events,\n    eventIndex: 0,\n    visitors: [],\n    visitorIndex: 0,\n    iterator: 0\n  }\n}\n\nfunction cleanMarks(node) {\n  node[isClean] = false\n  if (node.nodes) node.nodes.forEach(i => cleanMarks(i))\n  return node\n}\n\nlet postcss = {}\n\nclass LazyResult {\n  constructor(processor, css, opts) {\n    this.stringified = false\n    this.processed = false\n\n    let root\n    if (typeof css === 'object' && css !== null && css.type === 'root') {\n      root = cleanMarks(css)\n    } else if (css instanceof LazyResult || css instanceof Result) {\n      root = cleanMarks(css.root)\n      if (css.map) {\n        if (typeof opts.map === 'undefined') opts.map = {}\n        if (!opts.map.inline) opts.map.inline = false\n        opts.map.prev = css.map\n      }\n    } else {\n      let parser = parse\n      if (opts.syntax) parser = opts.syntax.parse\n      if (opts.parser) parser = opts.parser\n      if (parser.parse) parser = parser.parse\n\n      try {\n        root = parser(css, opts)\n      } catch (error) {\n        this.processed = true\n        this.error = error\n      }\n    }\n\n    this.result = new Result(processor, root, opts)\n    this.helpers = { ...postcss, result: this.result, postcss }\n    this.plugins = this.processor.plugins.map(plugin => {\n      if (typeof plugin === 'object' && plugin.prepare) {\n        return { ...plugin, ...plugin.prepare(this.result) }\n      } else {\n        return plugin\n      }\n    })\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'LazyResult'\n  }\n\n  get processor() {\n    return this.result.processor\n  }\n\n  get opts() {\n    return this.result.opts\n  }\n\n  get css() {\n    return this.stringify().css\n  }\n\n  get content() {\n    return this.stringify().content\n  }\n\n  get map() {\n    return this.stringify().map\n  }\n\n  get root() {\n    return this.sync().root\n  }\n\n  get messages() {\n    return this.sync().messages\n  }\n\n  warnings() {\n    return this.sync().warnings()\n  }\n\n  toString() {\n    return this.css\n  }\n\n  then(onFulfilled, onRejected) {\n    if (true) {\n      if (!('from' in this.opts)) {\n        warnOnce(\n          'Without `from` option PostCSS could generate wrong source map ' +\n            'and will not find Browserslist config. Set it to CSS file path ' +\n            'or to `undefined` to prevent this warning.'\n        )\n      }\n    }\n    return this.async().then(onFulfilled, onRejected)\n  }\n\n  catch(onRejected) {\n    return this.async().catch(onRejected)\n  }\n\n  finally(onFinally) {\n    return this.async().then(onFinally, onFinally)\n  }\n\n  async() {\n    if (this.error) return Promise.reject(this.error)\n    if (this.processed) return Promise.resolve(this.result)\n    if (!this.processing) {\n      this.processing = this.runAsync()\n    }\n    return this.processing\n  }\n\n  sync() {\n    if (this.error) throw this.error\n    if (this.processed) return this.result\n    this.processed = true\n\n    if (this.processing) {\n      throw this.getAsyncError()\n    }\n\n    for (let plugin of this.plugins) {\n      let promise = this.runOnRoot(plugin)\n      if (isPromise(promise)) {\n        throw this.getAsyncError()\n      }\n    }\n\n    this.prepareVisitors()\n    if (this.hasListener) {\n      let root = this.result.root\n      while (!root[isClean]) {\n        root[isClean] = true\n        this.walkSync(root)\n      }\n      if (this.listeners.OnceExit) {\n        this.visitSync(this.listeners.OnceExit, root)\n      }\n    }\n\n    return this.result\n  }\n\n  stringify() {\n    if (this.error) throw this.error\n    if (this.stringified) return this.result\n    this.stringified = true\n\n    this.sync()\n\n    let opts = this.result.opts\n    let str = stringify\n    if (opts.syntax) str = opts.syntax.stringify\n    if (opts.stringifier) str = opts.stringifier\n    if (str.stringify) str = str.stringify\n\n    let map = new MapGenerator(str, this.result.root, this.result.opts)\n    let data = map.generate()\n    this.result.css = data[0]\n    this.result.map = data[1]\n\n    return this.result\n  }\n\n  walkSync(node) {\n    node[isClean] = true\n    let events = getEvents(node)\n    for (let event of events) {\n      if (event === CHILDREN) {\n        if (node.nodes) {\n          node.each(child => {\n            if (!child[isClean]) this.walkSync(child)\n          })\n        }\n      } else {\n        let visitors = this.listeners[event]\n        if (visitors) {\n          if (this.visitSync(visitors, node.toProxy())) return\n        }\n      }\n    }\n  }\n\n  visitSync(visitors, node) {\n    for (let [plugin, visitor] of visitors) {\n      this.result.lastPlugin = plugin\n      let promise\n      try {\n        promise = visitor(node, this.helpers)\n      } catch (e) {\n        throw this.handleError(e, node.proxyOf)\n      }\n      if (node.type !== 'root' && !node.parent) return true\n      if (isPromise(promise)) {\n        throw this.getAsyncError()\n      }\n    }\n  }\n\n  runOnRoot(plugin) {\n    this.result.lastPlugin = plugin\n    try {\n      if (typeof plugin === 'object' && plugin.Once) {\n        return plugin.Once(this.result.root, this.helpers)\n      } else if (typeof plugin === 'function') {\n        return plugin(this.result.root, this.result)\n      }\n    } catch (error) {\n      throw this.handleError(error)\n    }\n  }\n\n  getAsyncError() {\n    throw new Error('Use process(css).then(cb) to work with async plugins')\n  }\n\n  handleError(error, node) {\n    let plugin = this.result.lastPlugin\n    try {\n      if (node) node.addToError(error)\n      this.error = error\n      if (error.name === 'CssSyntaxError' && !error.plugin) {\n        error.plugin = plugin.postcssPlugin\n        error.setMessage()\n      } else if (plugin.postcssVersion) {\n        if (true) {\n          let pluginName = plugin.postcssPlugin\n          let pluginVer = plugin.postcssVersion\n          let runtimeVer = this.result.processor.version\n          let a = pluginVer.split('.')\n          let b = runtimeVer.split('.')\n\n          if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n            console.error(\n              'Unknown error from PostCSS plugin. Your current PostCSS ' +\n                'version is ' +\n                runtimeVer +\n                ', but ' +\n                pluginName +\n                ' uses ' +\n                pluginVer +\n                '. Perhaps this is the source of the error below.'\n            )\n          }\n        }\n      }\n    } catch (err) {\n      // istanbul ignore next\n      if (console && console.error) console.error(err)\n    }\n    return error\n  }\n\n  async runAsync() {\n    this.plugin = 0\n    for (let i = 0; i < this.plugins.length; i++) {\n      let plugin = this.plugins[i]\n      let promise = this.runOnRoot(plugin)\n      if (isPromise(promise)) {\n        try {\n          await promise\n        } catch (error) {\n          throw this.handleError(error)\n        }\n      }\n    }\n\n    this.prepareVisitors()\n    if (this.hasListener) {\n      let root = this.result.root\n      while (!root[isClean]) {\n        root[isClean] = true\n        let stack = [toStack(root)]\n        while (stack.length > 0) {\n          let promise = this.visitTick(stack)\n          if (isPromise(promise)) {\n            try {\n              await promise\n            } catch (e) {\n              let node = stack[stack.length - 1].node\n              throw this.handleError(e, node)\n            }\n          }\n        }\n      }\n\n      if (this.listeners.OnceExit) {\n        for (let [plugin, visitor] of this.listeners.OnceExit) {\n          this.result.lastPlugin = plugin\n          try {\n            await visitor(root, this.helpers)\n          } catch (e) {\n            throw this.handleError(e)\n          }\n        }\n      }\n    }\n\n    this.processed = true\n    return this.stringify()\n  }\n\n  prepareVisitors() {\n    this.listeners = {}\n    let add = (plugin, type, cb) => {\n      if (!this.listeners[type]) this.listeners[type] = []\n      this.listeners[type].push([plugin, cb])\n    }\n    for (let plugin of this.plugins) {\n      if (typeof plugin === 'object') {\n        for (let event in plugin) {\n          if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n            throw new Error(\n              `Unknown event ${event} in ${plugin.postcssPlugin}. ` +\n                `Try to update PostCSS (${this.processor.version} now).`\n            )\n          }\n          if (!NOT_VISITORS[event]) {\n            if (typeof plugin[event] === 'object') {\n              for (let filter in plugin[event]) {\n                if (filter === '*') {\n                  add(plugin, event, plugin[event][filter])\n                } else {\n                  add(\n                    plugin,\n                    event + '-' + filter.toLowerCase(),\n                    plugin[event][filter]\n                  )\n                }\n              }\n            } else if (typeof plugin[event] === 'function') {\n              add(plugin, event, plugin[event])\n            }\n          }\n        }\n      }\n    }\n    this.hasListener = Object.keys(this.listeners).length > 0\n  }\n\n  visitTick(stack) {\n    let visit = stack[stack.length - 1]\n    let { node, visitors } = visit\n\n    if (node.type !== 'root' && !node.parent) {\n      stack.pop()\n      return\n    }\n\n    if (visitors.length > 0 && visit.visitorIndex < visitors.length) {\n      let [plugin, visitor] = visitors[visit.visitorIndex]\n      visit.visitorIndex += 1\n      if (visit.visitorIndex === visitors.length) {\n        visit.visitors = []\n        visit.visitorIndex = 0\n      }\n      this.result.lastPlugin = plugin\n      try {\n        return visitor(node.toProxy(), this.helpers)\n      } catch (e) {\n        throw this.handleError(e, node)\n      }\n    }\n\n    if (visit.iterator !== 0) {\n      let iterator = visit.iterator\n      let child\n      while ((child = node.nodes[node.indexes[iterator]])) {\n        node.indexes[iterator] += 1\n        if (!child[isClean]) {\n          child[isClean] = true\n          stack.push(toStack(child))\n          return\n        }\n      }\n      visit.iterator = 0\n      delete node.indexes[iterator]\n    }\n\n    let events = visit.events\n    while (visit.eventIndex < events.length) {\n      let event = events[visit.eventIndex]\n      visit.eventIndex += 1\n      if (event === CHILDREN) {\n        if (node.nodes && node.nodes.length) {\n          node[isClean] = true\n          visit.iterator = node.getIterator()\n        }\n        return\n      } else if (this.listeners[event]) {\n        visit.visitors = this.listeners[event]\n        return\n      }\n    }\n    stack.pop()\n  }\n}\n\nLazyResult.registerPostcss = dependant => {\n  postcss = dependant\n}\n\nmodule.exports = LazyResult\nLazyResult.default = LazyResult\n\nRoot.registerLazyResult(LazyResult)\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/lazy-result.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/list.js":
/*!*******************************************!*\
  !*** ../node_modules/postcss/lib/list.js ***!
  \*******************************************/
/***/ ((module) => {

"use strict";
eval("\n\nlet list = {\n  split(string, separators, last) {\n    let array = []\n    let current = ''\n    let split = false\n\n    let func = 0\n    let quote = false\n    let escape = false\n\n    for (let letter of string) {\n      if (escape) {\n        escape = false\n      } else if (letter === '\\\\') {\n        escape = true\n      } else if (quote) {\n        if (letter === quote) {\n          quote = false\n        }\n      } else if (letter === '\"' || letter === \"'\") {\n        quote = letter\n      } else if (letter === '(') {\n        func += 1\n      } else if (letter === ')') {\n        if (func > 0) func -= 1\n      } else if (func === 0) {\n        if (separators.includes(letter)) split = true\n      }\n\n      if (split) {\n        if (current !== '') array.push(current.trim())\n        current = ''\n        split = false\n      } else {\n        current += letter\n      }\n    }\n\n    if (last || current !== '') array.push(current.trim())\n    return array\n  },\n\n  space(string) {\n    let spaces = [' ', '\\n', '\\t']\n    return list.split(string, spaces)\n  },\n\n  comma(string) {\n    return list.split(string, [','], true)\n  }\n}\n\nmodule.exports = list\nlist.default = list\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/list.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/map-generator.js":
/*!****************************************************!*\
  !*** ../node_modules/postcss/lib/map-generator.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet { dirname, resolve, relative, sep } = __webpack_require__(/*! path */ \"?9055\")\nlet { pathToFileURL } = __webpack_require__(/*! url */ \"?2a77\")\nlet { SourceMapConsumer, SourceMapGenerator } = __webpack_require__(/*! source-map */ \"?1b37\")\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(dirname && resolve && relative && sep)\n\nclass MapGenerator {\n  constructor(stringify, root, opts) {\n    this.stringify = stringify\n    this.mapOpts = opts.map || {}\n    this.root = root\n    this.opts = opts\n  }\n\n  isMap() {\n    if (typeof this.opts.map !== 'undefined') {\n      return !!this.opts.map\n    }\n    return this.previous().length > 0\n  }\n\n  previous() {\n    if (!this.previousMaps) {\n      this.previousMaps = []\n      this.root.walk(node => {\n        if (node.source && node.source.input.map) {\n          let map = node.source.input.map\n          if (!this.previousMaps.includes(map)) {\n            this.previousMaps.push(map)\n          }\n        }\n      })\n    }\n\n    return this.previousMaps\n  }\n\n  isInline() {\n    if (typeof this.mapOpts.inline !== 'undefined') {\n      return this.mapOpts.inline\n    }\n\n    let annotation = this.mapOpts.annotation\n    if (typeof annotation !== 'undefined' && annotation !== true) {\n      return false\n    }\n\n    if (this.previous().length) {\n      return this.previous().some(i => i.inline)\n    }\n    return true\n  }\n\n  isSourcesContent() {\n    if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n      return this.mapOpts.sourcesContent\n    }\n    if (this.previous().length) {\n      return this.previous().some(i => i.withContent())\n    }\n    return true\n  }\n\n  clearAnnotation() {\n    if (this.mapOpts.annotation === false) return\n\n    let node\n    for (let i = this.root.nodes.length - 1; i >= 0; i--) {\n      node = this.root.nodes[i]\n      if (node.type !== 'comment') continue\n      if (node.text.indexOf('# sourceMappingURL=') === 0) {\n        this.root.removeChild(i)\n      }\n    }\n  }\n\n  setSourcesContent() {\n    let already = {}\n    this.root.walk(node => {\n      if (node.source) {\n        let from = node.source.input.from\n        if (from && !already[from]) {\n          already[from] = true\n          this.map.setSourceContent(\n            this.toUrl(this.path(from)),\n            node.source.input.css\n          )\n        }\n      }\n    })\n  }\n\n  applyPrevMaps() {\n    for (let prev of this.previous()) {\n      let from = this.toUrl(this.path(prev.file))\n      let root = prev.root || dirname(prev.file)\n      let map\n\n      if (this.mapOpts.sourcesContent === false) {\n        map = new SourceMapConsumer(prev.text)\n        if (map.sourcesContent) {\n          map.sourcesContent = map.sourcesContent.map(() => null)\n        }\n      } else {\n        map = prev.consumer()\n      }\n\n      this.map.applySourceMap(map, from, this.toUrl(this.path(root)))\n    }\n  }\n\n  isAnnotation() {\n    if (this.isInline()) {\n      return true\n    }\n    if (typeof this.mapOpts.annotation !== 'undefined') {\n      return this.mapOpts.annotation\n    }\n    if (this.previous().length) {\n      return this.previous().some(i => i.annotation)\n    }\n    return true\n  }\n\n  toBase64(str) {\n    if (Buffer) {\n      return Buffer.from(str).toString('base64')\n    } else {\n      // istanbul ignore next\n      return window.btoa(unescape(encodeURIComponent(str)))\n    }\n  }\n\n  addAnnotation() {\n    let content\n\n    if (this.isInline()) {\n      content =\n        'data:application/json;base64,' + this.toBase64(this.map.toString())\n    } else if (typeof this.mapOpts.annotation === 'string') {\n      content = this.mapOpts.annotation\n    } else if (typeof this.mapOpts.annotation === 'function') {\n      content = this.mapOpts.annotation(this.opts.to, this.root)\n    } else {\n      content = this.outputFile() + '.map'\n    }\n\n    let eol = '\\n'\n    if (this.css.includes('\\r\\n')) eol = '\\r\\n'\n\n    this.css += eol + '/*# sourceMappingURL=' + content + ' */'\n  }\n\n  outputFile() {\n    if (this.opts.to) {\n      return this.path(this.opts.to)\n    }\n    if (this.opts.from) {\n      return this.path(this.opts.from)\n    }\n    return 'to.css'\n  }\n\n  generateMap() {\n    this.generateString()\n    if (this.isSourcesContent()) this.setSourcesContent()\n    if (this.previous().length > 0) this.applyPrevMaps()\n    if (this.isAnnotation()) this.addAnnotation()\n\n    if (this.isInline()) {\n      return [this.css]\n    }\n    return [this.css, this.map]\n  }\n\n  path(file) {\n    if (file.indexOf('<') === 0) return file\n    if (/^\\w+:\\/\\//.test(file)) return file\n    if (this.mapOpts.absolute) return file\n\n    let from = this.opts.to ? dirname(this.opts.to) : '.'\n\n    if (typeof this.mapOpts.annotation === 'string') {\n      from = dirname(resolve(from, this.mapOpts.annotation))\n    }\n\n    file = relative(from, file)\n    return file\n  }\n\n  toUrl(path) {\n    if (sep === '\\\\') {\n      // istanbul ignore next\n      path = path.replace(/\\\\/g, '/')\n    }\n    return encodeURI(path).replace(/[#?]/g, encodeURIComponent)\n  }\n\n  sourcePath(node) {\n    if (this.mapOpts.from) {\n      return this.toUrl(this.mapOpts.from)\n    } else if (this.mapOpts.absolute) {\n      if (pathToFileURL) {\n        return pathToFileURL(node.source.input.from).toString()\n      } else {\n        // istanbul ignore next\n        throw new Error(\n          '`map.absolute` option is not available in this PostCSS build'\n        )\n      }\n    } else {\n      return this.toUrl(this.path(node.source.input.from))\n    }\n  }\n\n  generateString() {\n    this.css = ''\n    this.map = new SourceMapGenerator({ file: this.outputFile() })\n\n    let line = 1\n    let column = 1\n\n    let noSource = '<no source>'\n    let mapping = {\n      source: '',\n      generated: { line: 0, column: 0 },\n      original: { line: 0, column: 0 }\n    }\n\n    let lines, last\n    this.stringify(this.root, (str, node, type) => {\n      this.css += str\n\n      if (node && type !== 'end') {\n        mapping.generated.line = line\n        mapping.generated.column = column - 1\n        if (node.source && node.source.start) {\n          mapping.source = this.sourcePath(node)\n          mapping.original.line = node.source.start.line\n          mapping.original.column = node.source.start.column - 1\n          this.map.addMapping(mapping)\n        } else {\n          mapping.source = noSource\n          mapping.original.line = 1\n          mapping.original.column = 0\n          this.map.addMapping(mapping)\n        }\n      }\n\n      lines = str.match(/\\n/g)\n      if (lines) {\n        line += lines.length\n        last = str.lastIndexOf('\\n')\n        column = str.length - last\n      } else {\n        column += str.length\n      }\n\n      if (node && type !== 'start') {\n        let p = node.parent || { raws: {} }\n        if (node.type !== 'decl' || node !== p.last || p.raws.semicolon) {\n          if (node.source && node.source.end) {\n            mapping.source = this.sourcePath(node)\n            mapping.original.line = node.source.end.line\n            mapping.original.column = node.source.end.column - 1\n            mapping.generated.line = line\n            mapping.generated.column = column - 2\n            this.map.addMapping(mapping)\n          } else {\n            mapping.source = noSource\n            mapping.original.line = 1\n            mapping.original.column = 0\n            mapping.generated.line = line\n            mapping.generated.column = column - 1\n            this.map.addMapping(mapping)\n          }\n        }\n      }\n    })\n  }\n\n  generate() {\n    this.clearAnnotation()\n\n    if (pathAvailable && sourceMapAvailable && this.isMap()) {\n      return this.generateMap()\n    }\n\n    let result = ''\n    this.stringify(this.root, i => {\n      result += i\n    })\n    return [result]\n  }\n}\n\nmodule.exports = MapGenerator\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/map-generator.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/node.js":
/*!*******************************************!*\
  !*** ../node_modules/postcss/lib/node.js ***!
  \*******************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet CssSyntaxError = __webpack_require__(/*! ./css-syntax-error */ \"../node_modules/postcss/lib/css-syntax-error.js\")\nlet Stringifier = __webpack_require__(/*! ./stringifier */ \"../node_modules/postcss/lib/stringifier.js\")\nlet { isClean } = __webpack_require__(/*! ./symbols */ \"../node_modules/postcss/lib/symbols.js\")\nlet stringify = __webpack_require__(/*! ./stringify */ \"../node_modules/postcss/lib/stringify.js\")\n\nfunction cloneNode(obj, parent) {\n  let cloned = new obj.constructor()\n\n  for (let i in obj) {\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) {\n      // istanbul ignore next\n      continue\n    }\n    if (i === 'proxyCache') continue\n    let value = obj[i]\n    let type = typeof value\n\n    if (i === 'parent' && type === 'object') {\n      if (parent) cloned[i] = parent\n    } else if (i === 'source') {\n      cloned[i] = value\n    } else if (Array.isArray(value)) {\n      cloned[i] = value.map(j => cloneNode(j, cloned))\n    } else {\n      if (type === 'object' && value !== null) value = cloneNode(value)\n      cloned[i] = value\n    }\n  }\n\n  return cloned\n}\n\nclass Node {\n  constructor(defaults = {}) {\n    this.raws = {}\n    this[isClean] = false\n\n    for (let name in defaults) {\n      if (name === 'nodes') {\n        this.nodes = []\n        for (let node of defaults[name]) {\n          if (typeof node.clone === 'function') {\n            this.append(node.clone())\n          } else {\n            this.append(node)\n          }\n        }\n      } else {\n        this[name] = defaults[name]\n      }\n    }\n  }\n\n  error(message, opts = {}) {\n    if (this.source) {\n      let pos = this.positionBy(opts)\n      return this.source.input.error(message, pos.line, pos.column, opts)\n    }\n    return new CssSyntaxError(message)\n  }\n\n  warn(result, text, opts) {\n    let data = { node: this }\n    for (let i in opts) data[i] = opts[i]\n    return result.warn(text, data)\n  }\n\n  remove() {\n    if (this.parent) {\n      this.parent.removeChild(this)\n    }\n    this.parent = undefined\n    return this\n  }\n\n  toString(stringifier = stringify) {\n    if (stringifier.stringify) stringifier = stringifier.stringify\n    let result = ''\n    stringifier(this, i => {\n      result += i\n    })\n    return result\n  }\n\n  clone(overrides = {}) {\n    let cloned = cloneNode(this)\n    for (let name in overrides) {\n      cloned[name] = overrides[name]\n    }\n    return cloned\n  }\n\n  cloneBefore(overrides = {}) {\n    let cloned = this.clone(overrides)\n    this.parent.insertBefore(this, cloned)\n    return cloned\n  }\n\n  cloneAfter(overrides = {}) {\n    let cloned = this.clone(overrides)\n    this.parent.insertAfter(this, cloned)\n    return cloned\n  }\n\n  replaceWith(...nodes) {\n    if (this.parent) {\n      let bookmark = this\n      let foundSelf = false\n      for (let node of nodes) {\n        if (node === this) {\n          foundSelf = true\n        } else if (foundSelf) {\n          this.parent.insertAfter(bookmark, node)\n          bookmark = node\n        } else {\n          this.parent.insertBefore(bookmark, node)\n        }\n      }\n\n      if (!foundSelf) {\n        this.remove()\n      }\n    }\n\n    return this\n  }\n\n  next() {\n    if (!this.parent) return undefined\n    let index = this.parent.index(this)\n    return this.parent.nodes[index + 1]\n  }\n\n  prev() {\n    if (!this.parent) return undefined\n    let index = this.parent.index(this)\n    return this.parent.nodes[index - 1]\n  }\n\n  before(add) {\n    this.parent.insertBefore(this, add)\n    return this\n  }\n\n  after(add) {\n    this.parent.insertAfter(this, add)\n    return this\n  }\n\n  root() {\n    let result = this\n    while (result.parent) result = result.parent\n    return result\n  }\n\n  raw(prop, defaultType) {\n    let str = new Stringifier()\n    return str.raw(this, prop, defaultType)\n  }\n\n  cleanRaws(keepBetween) {\n    delete this.raws.before\n    delete this.raws.after\n    if (!keepBetween) delete this.raws.between\n  }\n\n  toJSON(_, inputs) {\n    let fixed = {}\n    let emitInputs = inputs == null\n    inputs = inputs || new Map()\n    let inputsNextIndex = 0\n\n    for (let name in this) {\n      if (!Object.prototype.hasOwnProperty.call(this, name)) {\n        // istanbul ignore next\n        continue\n      }\n      if (name === 'parent' || name === 'proxyCache') continue\n      let value = this[name]\n\n      if (Array.isArray(value)) {\n        fixed[name] = value.map(i => {\n          if (typeof i === 'object' && i.toJSON) {\n            return i.toJSON(null, inputs)\n          } else {\n            return i\n          }\n        })\n      } else if (typeof value === 'object' && value.toJSON) {\n        fixed[name] = value.toJSON(null, inputs)\n      } else if (name === 'source') {\n        let inputId = inputs.get(value.input)\n        if (inputId == null) {\n          inputId = inputsNextIndex\n          inputs.set(value.input, inputsNextIndex)\n          inputsNextIndex++\n        }\n        fixed[name] = {\n          inputId,\n          start: value.start,\n          end: value.end\n        }\n      } else {\n        fixed[name] = value\n      }\n    }\n\n    if (emitInputs) {\n      fixed.inputs = [...inputs.keys()].map(input => input.toJSON())\n    }\n\n    return fixed\n  }\n\n  positionInside(index) {\n    let string = this.toString()\n    let column = this.source.start.column\n    let line = this.source.start.line\n\n    for (let i = 0; i < index; i++) {\n      if (string[i] === '\\n') {\n        column = 1\n        line += 1\n      } else {\n        column += 1\n      }\n    }\n\n    return { line, column }\n  }\n\n  positionBy(opts) {\n    let pos = this.source.start\n    if (opts.index) {\n      pos = this.positionInside(opts.index)\n    } else if (opts.word) {\n      let index = this.toString().indexOf(opts.word)\n      if (index !== -1) pos = this.positionInside(index)\n    }\n    return pos\n  }\n\n  getProxyProcessor() {\n    return {\n      set(node, prop, value) {\n        if (node[prop] === value) return true\n        node[prop] = value\n        if (\n          prop === 'prop' ||\n          prop === 'value' ||\n          prop === 'name' ||\n          prop === 'params' ||\n          prop === 'important' ||\n          prop === 'text'\n        ) {\n          node.markDirty()\n        }\n        return true\n      },\n\n      get(node, prop) {\n        if (prop === 'proxyOf') {\n          return node\n        } else if (prop === 'root') {\n          return () => node.root().toProxy()\n        } else {\n          return node[prop]\n        }\n      }\n    }\n  }\n\n  toProxy() {\n    if (!this.proxyCache) {\n      this.proxyCache = new Proxy(this, this.getProxyProcessor())\n    }\n    return this.proxyCache\n  }\n\n  addToError(error) {\n    error.postcssNode = this\n    if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n      let s = this.source\n      error.stack = error.stack.replace(\n        /\\n\\s{4}at /,\n        `$&${s.input.from}:${s.start.line}:${s.start.column}$&`\n      )\n    }\n    return error\n  }\n\n  markDirty() {\n    if (this[isClean]) {\n      this[isClean] = false\n      let next = this\n      while ((next = next.parent)) {\n        next[isClean] = false\n      }\n    }\n  }\n\n  get proxyOf() {\n    return this\n  }\n}\n\nmodule.exports = Node\nNode.default = Node\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/node.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/parse.js":
/*!********************************************!*\
  !*** ../node_modules/postcss/lib/parse.js ***!
  \********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet Container = __webpack_require__(/*! ./container */ \"../node_modules/postcss/lib/container.js\")\nlet Parser = __webpack_require__(/*! ./parser */ \"../node_modules/postcss/lib/parser.js\")\nlet Input = __webpack_require__(/*! ./input */ \"../node_modules/postcss/lib/input.js\")\n\nfunction parse(css, opts) {\n  let input = new Input(css, opts)\n  let parser = new Parser(input)\n  try {\n    parser.parse()\n  } catch (e) {\n    if (true) {\n      if (e.name === 'CssSyntaxError' && opts && opts.from) {\n        if (/\\.scss$/i.test(opts.from)) {\n          e.message +=\n            '\\nYou tried to parse SCSS with ' +\n            'the standard CSS parser; ' +\n            'try again with the postcss-scss parser'\n        } else if (/\\.sass/i.test(opts.from)) {\n          e.message +=\n            '\\nYou tried to parse Sass with ' +\n            'the standard CSS parser; ' +\n            'try again with the postcss-sass parser'\n        } else if (/\\.less$/i.test(opts.from)) {\n          e.message +=\n            '\\nYou tried to parse Less with ' +\n            'the standard CSS parser; ' +\n            'try again with the postcss-less parser'\n        }\n      }\n    }\n    throw e\n  }\n\n  return parser.root\n}\n\nmodule.exports = parse\nparse.default = parse\n\nContainer.registerParse(parse)\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/parse.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/parser.js":
/*!*********************************************!*\
  !*** ../node_modules/postcss/lib/parser.js ***!
  \*********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet Declaration = __webpack_require__(/*! ./declaration */ \"../node_modules/postcss/lib/declaration.js\")\nlet tokenizer = __webpack_require__(/*! ./tokenize */ \"../node_modules/postcss/lib/tokenize.js\")\nlet Comment = __webpack_require__(/*! ./comment */ \"../node_modules/postcss/lib/comment.js\")\nlet AtRule = __webpack_require__(/*! ./at-rule */ \"../node_modules/postcss/lib/at-rule.js\")\nlet Root = __webpack_require__(/*! ./root */ \"../node_modules/postcss/lib/root.js\")\nlet Rule = __webpack_require__(/*! ./rule */ \"../node_modules/postcss/lib/rule.js\")\n\nclass Parser {\n  constructor(input) {\n    this.input = input\n\n    this.root = new Root()\n    this.current = this.root\n    this.spaces = ''\n    this.semicolon = false\n    this.customProperty = false\n\n    this.createTokenizer()\n    this.root.source = { input, start: { offset: 0, line: 1, column: 1 } }\n  }\n\n  createTokenizer() {\n    this.tokenizer = tokenizer(this.input)\n  }\n\n  parse() {\n    let token\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken()\n\n      switch (token[0]) {\n        case 'space':\n          this.spaces += token[1]\n          break\n\n        case ';':\n          this.freeSemicolon(token)\n          break\n\n        case '}':\n          this.end(token)\n          break\n\n        case 'comment':\n          this.comment(token)\n          break\n\n        case 'at-word':\n          this.atrule(token)\n          break\n\n        case '{':\n          this.emptyRule(token)\n          break\n\n        default:\n          this.other(token)\n          break\n      }\n    }\n    this.endFile()\n  }\n\n  comment(token) {\n    let node = new Comment()\n    this.init(node, token[2])\n    node.source.end = this.getPosition(token[3] || token[2])\n\n    let text = token[1].slice(2, -2)\n    if (/^\\s*$/.test(text)) {\n      node.text = ''\n      node.raws.left = text\n      node.raws.right = ''\n    } else {\n      let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/)\n      node.text = match[2]\n      node.raws.left = match[1]\n      node.raws.right = match[3]\n    }\n  }\n\n  emptyRule(token) {\n    let node = new Rule()\n    this.init(node, token[2])\n    node.selector = ''\n    node.raws.between = ''\n    this.current = node\n  }\n\n  other(start) {\n    let end = false\n    let type = null\n    let colon = false\n    let bracket = null\n    let brackets = []\n    let customProperty = start[1].startsWith('--')\n\n    let tokens = []\n    let token = start\n    while (token) {\n      type = token[0]\n      tokens.push(token)\n\n      if (type === '(' || type === '[') {\n        if (!bracket) bracket = token\n        brackets.push(type === '(' ? ')' : ']')\n      } else if (customProperty && colon && type === '{') {\n        if (!bracket) bracket = token\n        brackets.push('}')\n      } else if (brackets.length === 0) {\n        if (type === ';') {\n          if (colon) {\n            this.decl(tokens, customProperty)\n            return\n          } else {\n            break\n          }\n        } else if (type === '{') {\n          this.rule(tokens)\n          return\n        } else if (type === '}') {\n          this.tokenizer.back(tokens.pop())\n          end = true\n          break\n        } else if (type === ':') {\n          colon = true\n        }\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop()\n        if (brackets.length === 0) bracket = null\n      }\n\n      token = this.tokenizer.nextToken()\n    }\n\n    if (this.tokenizer.endOfFile()) end = true\n    if (brackets.length > 0) this.unclosedBracket(bracket)\n\n    if (end && colon) {\n      while (tokens.length) {\n        token = tokens[tokens.length - 1][0]\n        if (token !== 'space' && token !== 'comment') break\n        this.tokenizer.back(tokens.pop())\n      }\n      this.decl(tokens, customProperty)\n    } else {\n      this.unknownWord(tokens)\n    }\n  }\n\n  rule(tokens) {\n    tokens.pop()\n\n    let node = new Rule()\n    this.init(node, tokens[0][2])\n\n    node.raws.between = this.spacesAndCommentsFromEnd(tokens)\n    this.raw(node, 'selector', tokens)\n    this.current = node\n  }\n\n  decl(tokens, customProperty) {\n    let node = new Declaration()\n    this.init(node, tokens[0][2])\n\n    let last = tokens[tokens.length - 1]\n    if (last[0] === ';') {\n      this.semicolon = true\n      tokens.pop()\n    }\n    node.source.end = this.getPosition(last[3] || last[2])\n\n    while (tokens[0][0] !== 'word') {\n      if (tokens.length === 1) this.unknownWord(tokens)\n      node.raws.before += tokens.shift()[1]\n    }\n    node.source.start = this.getPosition(tokens[0][2])\n\n    node.prop = ''\n    while (tokens.length) {\n      let type = tokens[0][0]\n      if (type === ':' || type === 'space' || type === 'comment') {\n        break\n      }\n      node.prop += tokens.shift()[1]\n    }\n\n    node.raws.between = ''\n\n    let token\n    while (tokens.length) {\n      token = tokens.shift()\n\n      if (token[0] === ':') {\n        node.raws.between += token[1]\n        break\n      } else {\n        if (token[0] === 'word' && /\\w/.test(token[1])) {\n          this.unknownWord([token])\n        }\n        node.raws.between += token[1]\n      }\n    }\n\n    if (node.prop[0] === '_' || node.prop[0] === '*') {\n      node.raws.before += node.prop[0]\n      node.prop = node.prop.slice(1)\n    }\n    let firstSpaces = this.spacesAndCommentsFromStart(tokens)\n    this.precheckMissedSemicolon(tokens)\n\n    for (let i = tokens.length - 1; i >= 0; i--) {\n      token = tokens[i]\n      if (token[1].toLowerCase() === '!important') {\n        node.important = true\n        let string = this.stringFrom(tokens, i)\n        string = this.spacesFromEnd(tokens) + string\n        if (string !== ' !important') node.raws.important = string\n        break\n      } else if (token[1].toLowerCase() === 'important') {\n        let cache = tokens.slice(0)\n        let str = ''\n        for (let j = i; j > 0; j--) {\n          let type = cache[j][0]\n          if (str.trim().indexOf('!') === 0 && type !== 'space') {\n            break\n          }\n          str = cache.pop()[1] + str\n        }\n        if (str.trim().indexOf('!') === 0) {\n          node.important = true\n          node.raws.important = str\n          tokens = cache\n        }\n      }\n\n      if (token[0] !== 'space' && token[0] !== 'comment') {\n        break\n      }\n    }\n\n    let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment')\n    this.raw(node, 'value', tokens)\n    if (hasWord) {\n      node.raws.between += firstSpaces\n    } else {\n      node.value = firstSpaces + node.value\n    }\n\n    if (node.value.includes(':') && !customProperty) {\n      this.checkMissedSemicolon(tokens)\n    }\n  }\n\n  atrule(token) {\n    let node = new AtRule()\n    node.name = token[1].slice(1)\n    if (node.name === '') {\n      this.unnamedAtrule(node, token)\n    }\n    this.init(node, token[2])\n\n    let type\n    let prev\n    let shift\n    let last = false\n    let open = false\n    let params = []\n    let brackets = []\n\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken()\n      type = token[0]\n\n      if (type === '(' || type === '[') {\n        brackets.push(type === '(' ? ')' : ']')\n      } else if (type === '{' && brackets.length > 0) {\n        brackets.push('}')\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop()\n      }\n\n      if (brackets.length === 0) {\n        if (type === ';') {\n          node.source.end = this.getPosition(token[2])\n          this.semicolon = true\n          break\n        } else if (type === '{') {\n          open = true\n          break\n        } else if (type === '}') {\n          if (params.length > 0) {\n            shift = params.length - 1\n            prev = params[shift]\n            while (prev && prev[0] === 'space') {\n              prev = params[--shift]\n            }\n            if (prev) {\n              node.source.end = this.getPosition(prev[3] || prev[2])\n            }\n          }\n          this.end(token)\n          break\n        } else {\n          params.push(token)\n        }\n      } else {\n        params.push(token)\n      }\n\n      if (this.tokenizer.endOfFile()) {\n        last = true\n        break\n      }\n    }\n\n    node.raws.between = this.spacesAndCommentsFromEnd(params)\n    if (params.length) {\n      node.raws.afterName = this.spacesAndCommentsFromStart(params)\n      this.raw(node, 'params', params)\n      if (last) {\n        token = params[params.length - 1]\n        node.source.end = this.getPosition(token[3] || token[2])\n        this.spaces = node.raws.between\n        node.raws.between = ''\n      }\n    } else {\n      node.raws.afterName = ''\n      node.params = ''\n    }\n\n    if (open) {\n      node.nodes = []\n      this.current = node\n    }\n  }\n\n  end(token) {\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon\n    }\n    this.semicolon = false\n\n    this.current.raws.after = (this.current.raws.after || '') + this.spaces\n    this.spaces = ''\n\n    if (this.current.parent) {\n      this.current.source.end = this.getPosition(token[2])\n      this.current = this.current.parent\n    } else {\n      this.unexpectedClose(token)\n    }\n  }\n\n  endFile() {\n    if (this.current.parent) this.unclosedBlock()\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon\n    }\n    this.current.raws.after = (this.current.raws.after || '') + this.spaces\n  }\n\n  freeSemicolon(token) {\n    this.spaces += token[1]\n    if (this.current.nodes) {\n      let prev = this.current.nodes[this.current.nodes.length - 1]\n      if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n        prev.raws.ownSemicolon = this.spaces\n        this.spaces = ''\n      }\n    }\n  }\n\n  // Helpers\n\n  getPosition(offset) {\n    let pos = this.input.fromOffset(offset)\n    return {\n      offset,\n      line: pos.line,\n      column: pos.col\n    }\n  }\n\n  init(node, offset) {\n    this.current.push(node)\n    node.source = {\n      start: this.getPosition(offset),\n      input: this.input\n    }\n    node.raws.before = this.spaces\n    this.spaces = ''\n    if (node.type !== 'comment') this.semicolon = false\n  }\n\n  raw(node, prop, tokens) {\n    let token, type\n    let length = tokens.length\n    let value = ''\n    let clean = true\n    let next, prev\n    let pattern = /^([#.|])?(\\w)+/i\n\n    for (let i = 0; i < length; i += 1) {\n      token = tokens[i]\n      type = token[0]\n\n      if (type === 'comment' && node.type === 'rule') {\n        prev = tokens[i - 1]\n        next = tokens[i + 1]\n\n        if (\n          prev[0] !== 'space' &&\n          next[0] !== 'space' &&\n          pattern.test(prev[1]) &&\n          pattern.test(next[1])\n        ) {\n          value += token[1]\n        } else {\n          clean = false\n        }\n\n        continue\n      }\n\n      if (type === 'comment' || (type === 'space' && i === length - 1)) {\n        clean = false\n      } else {\n        value += token[1]\n      }\n    }\n    if (!clean) {\n      let raw = tokens.reduce((all, i) => all + i[1], '')\n      node.raws[prop] = { value, raw }\n    }\n    node[prop] = value\n  }\n\n  spacesAndCommentsFromEnd(tokens) {\n    let lastTokenType\n    let spaces = ''\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0]\n      if (lastTokenType !== 'space' && lastTokenType !== 'comment') break\n      spaces = tokens.pop()[1] + spaces\n    }\n    return spaces\n  }\n\n  spacesAndCommentsFromStart(tokens) {\n    let next\n    let spaces = ''\n    while (tokens.length) {\n      next = tokens[0][0]\n      if (next !== 'space' && next !== 'comment') break\n      spaces += tokens.shift()[1]\n    }\n    return spaces\n  }\n\n  spacesFromEnd(tokens) {\n    let lastTokenType\n    let spaces = ''\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0]\n      if (lastTokenType !== 'space') break\n      spaces = tokens.pop()[1] + spaces\n    }\n    return spaces\n  }\n\n  stringFrom(tokens, from) {\n    let result = ''\n    for (let i = from; i < tokens.length; i++) {\n      result += tokens[i][1]\n    }\n    tokens.splice(from, tokens.length - from)\n    return result\n  }\n\n  colon(tokens) {\n    let brackets = 0\n    let token, type, prev\n    for (let [i, element] of tokens.entries()) {\n      token = element\n      type = token[0]\n\n      if (type === '(') {\n        brackets += 1\n      }\n      if (type === ')') {\n        brackets -= 1\n      }\n      if (brackets === 0 && type === ':') {\n        if (!prev) {\n          this.doubleColon(token)\n        } else if (prev[0] === 'word' && prev[1] === 'progid') {\n          continue\n        } else {\n          return i\n        }\n      }\n\n      prev = token\n    }\n    return false\n  }\n\n  // Errors\n\n  unclosedBracket(bracket) {\n    throw this.input.error('Unclosed bracket', bracket[2])\n  }\n\n  unknownWord(tokens) {\n    throw this.input.error('Unknown word', tokens[0][2])\n  }\n\n  unexpectedClose(token) {\n    throw this.input.error('Unexpected }', token[2])\n  }\n\n  unclosedBlock() {\n    let pos = this.current.source.start\n    throw this.input.error('Unclosed block', pos.line, pos.column)\n  }\n\n  doubleColon(token) {\n    throw this.input.error('Double colon', token[2])\n  }\n\n  unnamedAtrule(node, token) {\n    throw this.input.error('At-rule without name', token[2])\n  }\n\n  precheckMissedSemicolon(/* tokens */) {\n    // Hook for Safe Parser\n  }\n\n  checkMissedSemicolon(tokens) {\n    let colon = this.colon(tokens)\n    if (colon === false) return\n\n    let founded = 0\n    let token\n    for (let j = colon - 1; j >= 0; j--) {\n      token = tokens[j]\n      if (token[0] !== 'space') {\n        founded += 1\n        if (founded === 2) break\n      }\n    }\n    throw this.input.error('Missed semicolon', token[2])\n  }\n}\n\nmodule.exports = Parser\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/parser.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/postcss.js":
/*!**********************************************!*\
  !*** ../node_modules/postcss/lib/postcss.js ***!
  \**********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("/* provided dependency */ var process = __webpack_require__(/*! process/browser */ \"../node_modules/process/browser.js\");\n\n\nlet CssSyntaxError = __webpack_require__(/*! ./css-syntax-error */ \"../node_modules/postcss/lib/css-syntax-error.js\")\nlet Declaration = __webpack_require__(/*! ./declaration */ \"../node_modules/postcss/lib/declaration.js\")\nlet LazyResult = __webpack_require__(/*! ./lazy-result */ \"../node_modules/postcss/lib/lazy-result.js\")\nlet Container = __webpack_require__(/*! ./container */ \"../node_modules/postcss/lib/container.js\")\nlet Processor = __webpack_require__(/*! ./processor */ \"../node_modules/postcss/lib/processor.js\")\nlet stringify = __webpack_require__(/*! ./stringify */ \"../node_modules/postcss/lib/stringify.js\")\nlet fromJSON = __webpack_require__(/*! ./fromJSON */ \"../node_modules/postcss/lib/fromJSON.js\")\nlet Warning = __webpack_require__(/*! ./warning */ \"../node_modules/postcss/lib/warning.js\")\nlet Comment = __webpack_require__(/*! ./comment */ \"../node_modules/postcss/lib/comment.js\")\nlet AtRule = __webpack_require__(/*! ./at-rule */ \"../node_modules/postcss/lib/at-rule.js\")\nlet Result = __webpack_require__(/*! ./result.js */ \"../node_modules/postcss/lib/result.js\")\nlet Input = __webpack_require__(/*! ./input */ \"../node_modules/postcss/lib/input.js\")\nlet parse = __webpack_require__(/*! ./parse */ \"../node_modules/postcss/lib/parse.js\")\nlet list = __webpack_require__(/*! ./list */ \"../node_modules/postcss/lib/list.js\")\nlet Rule = __webpack_require__(/*! ./rule */ \"../node_modules/postcss/lib/rule.js\")\nlet Root = __webpack_require__(/*! ./root */ \"../node_modules/postcss/lib/root.js\")\nlet Node = __webpack_require__(/*! ./node */ \"../node_modules/postcss/lib/node.js\")\n\nfunction postcss(...plugins) {\n  if (plugins.length === 1 && Array.isArray(plugins[0])) {\n    plugins = plugins[0]\n  }\n  return new Processor(plugins)\n}\n\npostcss.plugin = function plugin(name, initializer) {\n  if (console && console.warn) {\n    console.warn(\n      name +\n        ': postcss.plugin was deprecated. Migration guide:\\n' +\n        'https://evilmartians.com/chronicles/postcss-8-plugin-migration'\n    )\n    if (process.env.LANG && process.env.LANG.startsWith('cn')) {\n      // istanbul ignore next\n      console.warn(\n        name +\n          ': 里面 postcss.plugin 被弃用. 迁移指南:\\n' +\n          'https://www.w3ctech.com/topic/2226'\n      )\n    }\n  }\n  function creator(...args) {\n    let transformer = initializer(...args)\n    transformer.postcssPlugin = name\n    transformer.postcssVersion = new Processor().version\n    return transformer\n  }\n\n  let cache\n  Object.defineProperty(creator, 'postcss', {\n    get() {\n      if (!cache) cache = creator()\n      return cache\n    }\n  })\n\n  creator.process = function (css, processOpts, pluginOpts) {\n    return postcss([creator(pluginOpts)]).process(css, processOpts)\n  }\n\n  return creator\n}\n\npostcss.stringify = stringify\npostcss.parse = parse\npostcss.fromJSON = fromJSON\npostcss.list = list\n\npostcss.comment = defaults => new Comment(defaults)\npostcss.atRule = defaults => new AtRule(defaults)\npostcss.decl = defaults => new Declaration(defaults)\npostcss.rule = defaults => new Rule(defaults)\npostcss.root = defaults => new Root(defaults)\n\npostcss.CssSyntaxError = CssSyntaxError\npostcss.Declaration = Declaration\npostcss.Container = Container\npostcss.Comment = Comment\npostcss.Warning = Warning\npostcss.AtRule = AtRule\npostcss.Result = Result\npostcss.Input = Input\npostcss.Rule = Rule\npostcss.Root = Root\npostcss.Node = Node\n\nLazyResult.registerPostcss(postcss)\n\nmodule.exports = postcss\npostcss.default = postcss\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/postcss.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/previous-map.js":
/*!***************************************************!*\
  !*** ../node_modules/postcss/lib/previous-map.js ***!
  \***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet { existsSync, readFileSync } = __webpack_require__(/*! fs */ \"?08fb\")\nlet { dirname, join } = __webpack_require__(/*! path */ \"?9055\")\nlet { SourceMapConsumer, SourceMapGenerator } = __webpack_require__(/*! source-map */ \"?1b37\")\n\nfunction fromBase64(str) {\n  if (Buffer) {\n    return Buffer.from(str, 'base64').toString()\n  } else {\n    // istanbul ignore next\n    return window.atob(str)\n  }\n}\n\nclass PreviousMap {\n  constructor(css, opts) {\n    if (opts.map === false) return\n    this.loadAnnotation(css)\n    this.inline = this.startWith(this.annotation, 'data:')\n\n    let prev = opts.map ? opts.map.prev : undefined\n    let text = this.loadMap(opts.from, prev)\n    if (!this.mapFile && opts.from) {\n      this.mapFile = opts.from\n    }\n    if (this.mapFile) this.root = dirname(this.mapFile)\n    if (text) this.text = text\n  }\n\n  consumer() {\n    if (!this.consumerCache) {\n      this.consumerCache = new SourceMapConsumer(this.text)\n    }\n    return this.consumerCache\n  }\n\n  withContent() {\n    return !!(\n      this.consumer().sourcesContent &&\n      this.consumer().sourcesContent.length > 0\n    )\n  }\n\n  startWith(string, start) {\n    if (!string) return false\n    return string.substr(0, start.length) === start\n  }\n\n  getAnnotationURL(sourceMapString) {\n    return sourceMapString\n      .match(/\\/\\*\\s*# sourceMappingURL=((?:(?!sourceMappingURL=).)*)\\*\\//)[1]\n      .trim()\n  }\n\n  loadAnnotation(css) {\n    let annotations = css.match(\n      /\\/\\*\\s*# sourceMappingURL=(?:(?!sourceMappingURL=).)*\\*\\//gm\n    )\n\n    if (annotations && annotations.length > 0) {\n      // Locate the last sourceMappingURL to avoid picking up\n      // sourceMappingURLs from comments, strings, etc.\n      let lastAnnotation = annotations[annotations.length - 1]\n      if (lastAnnotation) {\n        this.annotation = this.getAnnotationURL(lastAnnotation)\n      }\n    }\n  }\n\n  decodeInline(text) {\n    let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/\n    let baseUri = /^data:application\\/json;base64,/\n    let charsetUri = /^data:application\\/json;charset=utf-?8,/\n    let uri = /^data:application\\/json,/\n\n    if (charsetUri.test(text) || uri.test(text)) {\n      return decodeURIComponent(text.substr(RegExp.lastMatch.length))\n    }\n\n    if (baseCharsetUri.test(text) || baseUri.test(text)) {\n      return fromBase64(text.substr(RegExp.lastMatch.length))\n    }\n\n    let encoding = text.match(/data:application\\/json;([^,]+),/)[1]\n    throw new Error('Unsupported source map encoding ' + encoding)\n  }\n\n  loadFile(path) {\n    this.root = dirname(path)\n    if (existsSync(path)) {\n      this.mapFile = path\n      return readFileSync(path, 'utf-8').toString().trim()\n    }\n  }\n\n  loadMap(file, prev) {\n    if (prev === false) return false\n\n    if (prev) {\n      if (typeof prev === 'string') {\n        return prev\n      } else if (typeof prev === 'function') {\n        let prevPath = prev(file)\n        if (prevPath) {\n          let map = this.loadFile(prevPath)\n          if (!map) {\n            throw new Error(\n              'Unable to load previous source map: ' + prevPath.toString()\n            )\n          }\n          return map\n        }\n      } else if (prev instanceof SourceMapConsumer) {\n        return SourceMapGenerator.fromSourceMap(prev).toString()\n      } else if (prev instanceof SourceMapGenerator) {\n        return prev.toString()\n      } else if (this.isMap(prev)) {\n        return JSON.stringify(prev)\n      } else {\n        throw new Error(\n          'Unsupported previous source map format: ' + prev.toString()\n        )\n      }\n    } else if (this.inline) {\n      return this.decodeInline(this.annotation)\n    } else if (this.annotation) {\n      let map = this.annotation\n      if (file) map = join(dirname(file), map)\n      return this.loadFile(map)\n    }\n  }\n\n  isMap(map) {\n    if (typeof map !== 'object') return false\n    return (\n      typeof map.mappings === 'string' ||\n      typeof map._mappings === 'string' ||\n      Array.isArray(map.sections)\n    )\n  }\n}\n\nmodule.exports = PreviousMap\nPreviousMap.default = PreviousMap\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/previous-map.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/processor.js":
/*!************************************************!*\
  !*** ../node_modules/postcss/lib/processor.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet LazyResult = __webpack_require__(/*! ./lazy-result */ \"../node_modules/postcss/lib/lazy-result.js\")\nlet Root = __webpack_require__(/*! ./root */ \"../node_modules/postcss/lib/root.js\")\n\nclass Processor {\n  constructor(plugins = []) {\n    this.version = '8.2.15'\n    this.plugins = this.normalize(plugins)\n  }\n\n  use(plugin) {\n    this.plugins = this.plugins.concat(this.normalize([plugin]))\n    return this\n  }\n\n  process(css, opts = {}) {\n    if (\n      this.plugins.length === 0 &&\n      opts.parser === opts.stringifier &&\n      !opts.hideNothingWarning\n    ) {\n      if (true) {\n        if (typeof console !== 'undefined' && console.warn) {\n          console.warn(\n            'You did not set any plugins, parser, or stringifier. ' +\n              'Right now, PostCSS does nothing. Pick plugins for your case ' +\n              'on https://www.postcss.parts/ and use them in postcss.config.js.'\n          )\n        }\n      }\n    }\n    return new LazyResult(this, css, opts)\n  }\n\n  normalize(plugins) {\n    let normalized = []\n    for (let i of plugins) {\n      if (i.postcss === true) {\n        i = i()\n      } else if (i.postcss) {\n        i = i.postcss\n      }\n\n      if (typeof i === 'object' && Array.isArray(i.plugins)) {\n        normalized = normalized.concat(i.plugins)\n      } else if (typeof i === 'object' && i.postcssPlugin) {\n        normalized.push(i)\n      } else if (typeof i === 'function') {\n        normalized.push(i)\n      } else if (typeof i === 'object' && (i.parse || i.stringify)) {\n        if (true) {\n          throw new Error(\n            'PostCSS syntaxes cannot be used as plugins. Instead, please use ' +\n              'one of the syntax/parser/stringifier options as outlined ' +\n              'in your PostCSS runner documentation.'\n          )\n        }\n      } else {\n        throw new Error(i + ' is not a PostCSS plugin')\n      }\n    }\n    return normalized\n  }\n}\n\nmodule.exports = Processor\nProcessor.default = Processor\n\nRoot.registerProcessor(Processor)\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/processor.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/result.js":
/*!*********************************************!*\
  !*** ../node_modules/postcss/lib/result.js ***!
  \*********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet Warning = __webpack_require__(/*! ./warning */ \"../node_modules/postcss/lib/warning.js\")\n\nclass Result {\n  constructor(processor, root, opts) {\n    this.processor = processor\n    this.messages = []\n    this.root = root\n    this.opts = opts\n    this.css = undefined\n    this.map = undefined\n  }\n\n  toString() {\n    return this.css\n  }\n\n  warn(text, opts = {}) {\n    if (!opts.plugin) {\n      if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n        opts.plugin = this.lastPlugin.postcssPlugin\n      }\n    }\n\n    let warning = new Warning(text, opts)\n    this.messages.push(warning)\n\n    return warning\n  }\n\n  warnings() {\n    return this.messages.filter(i => i.type === 'warning')\n  }\n\n  get content() {\n    return this.css\n  }\n}\n\nmodule.exports = Result\nResult.default = Result\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/result.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/root.js":
/*!*******************************************!*\
  !*** ../node_modules/postcss/lib/root.js ***!
  \*******************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet Container = __webpack_require__(/*! ./container */ \"../node_modules/postcss/lib/container.js\")\n\nlet LazyResult, Processor\n\nclass Root extends Container {\n  constructor(defaults) {\n    super(defaults)\n    this.type = 'root'\n    if (!this.nodes) this.nodes = []\n  }\n\n  removeChild(child, ignore) {\n    let index = this.index(child)\n\n    if (!ignore && index === 0 && this.nodes.length > 1) {\n      this.nodes[1].raws.before = this.nodes[index].raws.before\n    }\n\n    return super.removeChild(child)\n  }\n\n  normalize(child, sample, type) {\n    let nodes = super.normalize(child)\n\n    if (sample) {\n      if (type === 'prepend') {\n        if (this.nodes.length > 1) {\n          sample.raws.before = this.nodes[1].raws.before\n        } else {\n          delete sample.raws.before\n        }\n      } else if (this.first !== sample) {\n        for (let node of nodes) {\n          node.raws.before = sample.raws.before\n        }\n      }\n    }\n\n    return nodes\n  }\n\n  toResult(opts = {}) {\n    let lazy = new LazyResult(new Processor(), this, opts)\n    return lazy.stringify()\n  }\n}\n\nRoot.registerLazyResult = dependant => {\n  LazyResult = dependant\n}\n\nRoot.registerProcessor = dependant => {\n  Processor = dependant\n}\n\nmodule.exports = Root\nRoot.default = Root\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/root.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/rule.js":
/*!*******************************************!*\
  !*** ../node_modules/postcss/lib/rule.js ***!
  \*******************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet Container = __webpack_require__(/*! ./container */ \"../node_modules/postcss/lib/container.js\")\nlet list = __webpack_require__(/*! ./list */ \"../node_modules/postcss/lib/list.js\")\n\nclass Rule extends Container {\n  constructor(defaults) {\n    super(defaults)\n    this.type = 'rule'\n    if (!this.nodes) this.nodes = []\n  }\n\n  get selectors() {\n    return list.comma(this.selector)\n  }\n\n  set selectors(values) {\n    let match = this.selector ? this.selector.match(/,\\s*/) : null\n    let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen')\n    this.selector = values.join(sep)\n  }\n}\n\nmodule.exports = Rule\nRule.default = Rule\n\nContainer.registerRule(Rule)\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/rule.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/stringifier.js":
/*!**************************************************!*\
  !*** ../node_modules/postcss/lib/stringifier.js ***!
  \**************************************************/
/***/ ((module) => {

"use strict";
eval("\n\nconst DEFAULT_RAW = {\n  colon: ': ',\n  indent: '    ',\n  beforeDecl: '\\n',\n  beforeRule: '\\n',\n  beforeOpen: ' ',\n  beforeClose: '\\n',\n  beforeComment: '\\n',\n  after: '\\n',\n  emptyBody: '',\n  commentLeft: ' ',\n  commentRight: ' ',\n  semicolon: false\n}\n\nfunction capitalize(str) {\n  return str[0].toUpperCase() + str.slice(1)\n}\n\nclass Stringifier {\n  constructor(builder) {\n    this.builder = builder\n  }\n\n  stringify(node, semicolon) {\n    /* istanbul ignore if */\n    if (!this[node.type]) {\n      throw new Error(\n        'Unknown AST node type ' +\n          node.type +\n          '. ' +\n          'Maybe you need to change PostCSS stringifier.'\n      )\n    }\n    this[node.type](node, semicolon)\n  }\n\n  root(node) {\n    this.body(node)\n    if (node.raws.after) this.builder(node.raws.after)\n  }\n\n  comment(node) {\n    let left = this.raw(node, 'left', 'commentLeft')\n    let right = this.raw(node, 'right', 'commentRight')\n    this.builder('/*' + left + node.text + right + '*/', node)\n  }\n\n  decl(node, semicolon) {\n    let between = this.raw(node, 'between', 'colon')\n    let string = node.prop + between + this.rawValue(node, 'value')\n\n    if (node.important) {\n      string += node.raws.important || ' !important'\n    }\n\n    if (semicolon) string += ';'\n    this.builder(string, node)\n  }\n\n  rule(node) {\n    this.block(node, this.rawValue(node, 'selector'))\n    if (node.raws.ownSemicolon) {\n      this.builder(node.raws.ownSemicolon, node, 'end')\n    }\n  }\n\n  atrule(node, semicolon) {\n    let name = '@' + node.name\n    let params = node.params ? this.rawValue(node, 'params') : ''\n\n    if (typeof node.raws.afterName !== 'undefined') {\n      name += node.raws.afterName\n    } else if (params) {\n      name += ' '\n    }\n\n    if (node.nodes) {\n      this.block(node, name + params)\n    } else {\n      let end = (node.raws.between || '') + (semicolon ? ';' : '')\n      this.builder(name + params + end, node)\n    }\n  }\n\n  body(node) {\n    let last = node.nodes.length - 1\n    while (last > 0) {\n      if (node.nodes[last].type !== 'comment') break\n      last -= 1\n    }\n\n    let semicolon = this.raw(node, 'semicolon')\n    for (let i = 0; i < node.nodes.length; i++) {\n      let child = node.nodes[i]\n      let before = this.raw(child, 'before')\n      if (before) this.builder(before)\n      this.stringify(child, last !== i || semicolon)\n    }\n  }\n\n  block(node, start) {\n    let between = this.raw(node, 'between', 'beforeOpen')\n    this.builder(start + between + '{', node, 'start')\n\n    let after\n    if (node.nodes && node.nodes.length) {\n      this.body(node)\n      after = this.raw(node, 'after')\n    } else {\n      after = this.raw(node, 'after', 'emptyBody')\n    }\n\n    if (after) this.builder(after)\n    this.builder('}', node, 'end')\n  }\n\n  raw(node, own, detect) {\n    let value\n    if (!detect) detect = own\n\n    // Already had\n    if (own) {\n      value = node.raws[own]\n      if (typeof value !== 'undefined') return value\n    }\n\n    let parent = node.parent\n\n    // Hack for first rule in CSS\n    if (detect === 'before') {\n      if (!parent || (parent.type === 'root' && parent.first === node)) {\n        return ''\n      }\n    }\n\n    // Floating child without parent\n    if (!parent) return DEFAULT_RAW[detect]\n\n    // Detect style by other nodes\n    let root = node.root()\n    if (!root.rawCache) root.rawCache = {}\n    if (typeof root.rawCache[detect] !== 'undefined') {\n      return root.rawCache[detect]\n    }\n\n    if (detect === 'before' || detect === 'after') {\n      return this.beforeAfter(node, detect)\n    } else {\n      let method = 'raw' + capitalize(detect)\n      if (this[method]) {\n        value = this[method](root, node)\n      } else {\n        root.walk(i => {\n          value = i.raws[own]\n          if (typeof value !== 'undefined') return false\n        })\n      }\n    }\n\n    if (typeof value === 'undefined') value = DEFAULT_RAW[detect]\n\n    root.rawCache[detect] = value\n    return value\n  }\n\n  rawSemicolon(root) {\n    let value\n    root.walk(i => {\n      if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n        value = i.raws.semicolon\n        if (typeof value !== 'undefined') return false\n      }\n    })\n    return value\n  }\n\n  rawEmptyBody(root) {\n    let value\n    root.walk(i => {\n      if (i.nodes && i.nodes.length === 0) {\n        value = i.raws.after\n        if (typeof value !== 'undefined') return false\n      }\n    })\n    return value\n  }\n\n  rawIndent(root) {\n    if (root.raws.indent) return root.raws.indent\n    let value\n    root.walk(i => {\n      let p = i.parent\n      if (p && p !== root && p.parent && p.parent === root) {\n        if (typeof i.raws.before !== 'undefined') {\n          let parts = i.raws.before.split('\\n')\n          value = parts[parts.length - 1]\n          value = value.replace(/\\S/g, '')\n          return false\n        }\n      }\n    })\n    return value\n  }\n\n  rawBeforeComment(root, node) {\n    let value\n    root.walkComments(i => {\n      if (typeof i.raws.before !== 'undefined') {\n        value = i.raws.before\n        if (value.includes('\\n')) {\n          value = value.replace(/[^\\n]+$/, '')\n        }\n        return false\n      }\n    })\n    if (typeof value === 'undefined') {\n      value = this.raw(node, null, 'beforeDecl')\n    } else if (value) {\n      value = value.replace(/\\S/g, '')\n    }\n    return value\n  }\n\n  rawBeforeDecl(root, node) {\n    let value\n    root.walkDecls(i => {\n      if (typeof i.raws.before !== 'undefined') {\n        value = i.raws.before\n        if (value.includes('\\n')) {\n          value = value.replace(/[^\\n]+$/, '')\n        }\n        return false\n      }\n    })\n    if (typeof value === 'undefined') {\n      value = this.raw(node, null, 'beforeRule')\n    } else if (value) {\n      value = value.replace(/\\S/g, '')\n    }\n    return value\n  }\n\n  rawBeforeRule(root) {\n    let value\n    root.walk(i => {\n      if (i.nodes && (i.parent !== root || root.first !== i)) {\n        if (typeof i.raws.before !== 'undefined') {\n          value = i.raws.before\n          if (value.includes('\\n')) {\n            value = value.replace(/[^\\n]+$/, '')\n          }\n          return false\n        }\n      }\n    })\n    if (value) value = value.replace(/\\S/g, '')\n    return value\n  }\n\n  rawBeforeClose(root) {\n    let value\n    root.walk(i => {\n      if (i.nodes && i.nodes.length > 0) {\n        if (typeof i.raws.after !== 'undefined') {\n          value = i.raws.after\n          if (value.includes('\\n')) {\n            value = value.replace(/[^\\n]+$/, '')\n          }\n          return false\n        }\n      }\n    })\n    if (value) value = value.replace(/\\S/g, '')\n    return value\n  }\n\n  rawBeforeOpen(root) {\n    let value\n    root.walk(i => {\n      if (i.type !== 'decl') {\n        value = i.raws.between\n        if (typeof value !== 'undefined') return false\n      }\n    })\n    return value\n  }\n\n  rawColon(root) {\n    let value\n    root.walkDecls(i => {\n      if (typeof i.raws.between !== 'undefined') {\n        value = i.raws.between.replace(/[^\\s:]/g, '')\n        return false\n      }\n    })\n    return value\n  }\n\n  beforeAfter(node, detect) {\n    let value\n    if (node.type === 'decl') {\n      value = this.raw(node, null, 'beforeDecl')\n    } else if (node.type === 'comment') {\n      value = this.raw(node, null, 'beforeComment')\n    } else if (detect === 'before') {\n      value = this.raw(node, null, 'beforeRule')\n    } else {\n      value = this.raw(node, null, 'beforeClose')\n    }\n\n    let buf = node.parent\n    let depth = 0\n    while (buf && buf.type !== 'root') {\n      depth += 1\n      buf = buf.parent\n    }\n\n    if (value.includes('\\n')) {\n      let indent = this.raw(node, null, 'indent')\n      if (indent.length) {\n        for (let step = 0; step < depth; step++) value += indent\n      }\n    }\n\n    return value\n  }\n\n  rawValue(node, prop) {\n    let value = node[prop]\n    let raw = node.raws[prop]\n    if (raw && raw.value === value) {\n      return raw.raw\n    }\n\n    return value\n  }\n}\n\nmodule.exports = Stringifier\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/stringifier.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/stringify.js":
/*!************************************************!*\
  !*** ../node_modules/postcss/lib/stringify.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
eval("\n\nlet Stringifier = __webpack_require__(/*! ./stringifier */ \"../node_modules/postcss/lib/stringifier.js\")\n\nfunction stringify(node, builder) {\n  let str = new Stringifier(builder)\n  str.stringify(node)\n}\n\nmodule.exports = stringify\nstringify.default = stringify\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/stringify.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/symbols.js":
/*!**********************************************!*\
  !*** ../node_modules/postcss/lib/symbols.js ***!
  \**********************************************/
/***/ ((module) => {

"use strict";
eval("\n\nmodule.exports.isClean = Symbol('isClean')\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/symbols.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/tokenize.js":
/*!***********************************************!*\
  !*** ../node_modules/postcss/lib/tokenize.js ***!
  \***********************************************/
/***/ ((module) => {

"use strict";
eval("\n\nconst SINGLE_QUOTE = \"'\".charCodeAt(0)\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0)\nconst BACKSLASH = '\\\\'.charCodeAt(0)\nconst SLASH = '/'.charCodeAt(0)\nconst NEWLINE = '\\n'.charCodeAt(0)\nconst SPACE = ' '.charCodeAt(0)\nconst FEED = '\\f'.charCodeAt(0)\nconst TAB = '\\t'.charCodeAt(0)\nconst CR = '\\r'.charCodeAt(0)\nconst OPEN_SQUARE = '['.charCodeAt(0)\nconst CLOSE_SQUARE = ']'.charCodeAt(0)\nconst OPEN_PARENTHESES = '('.charCodeAt(0)\nconst CLOSE_PARENTHESES = ')'.charCodeAt(0)\nconst OPEN_CURLY = '{'.charCodeAt(0)\nconst CLOSE_CURLY = '}'.charCodeAt(0)\nconst SEMICOLON = ';'.charCodeAt(0)\nconst ASTERISK = '*'.charCodeAt(0)\nconst COLON = ':'.charCodeAt(0)\nconst AT = '@'.charCodeAt(0)\n\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g\nconst RE_BAD_BRACKET = /.[\\n\"'(/\\\\]/\nconst RE_HEX_ESCAPE = /[\\da-f]/i\n\nmodule.exports = function tokenizer(input, options = {}) {\n  let css = input.css.valueOf()\n  let ignore = options.ignoreErrors\n\n  let code, next, quote, content, escape\n  let escaped, escapePos, prev, n, currentToken\n\n  let length = css.length\n  let pos = 0\n  let buffer = []\n  let returned = []\n\n  function position() {\n    return pos\n  }\n\n  function unclosed(what) {\n    throw input.error('Unclosed ' + what, pos)\n  }\n\n  function endOfFile() {\n    return returned.length === 0 && pos >= length\n  }\n\n  function nextToken(opts) {\n    if (returned.length) return returned.pop()\n    if (pos >= length) return\n\n    let ignoreUnclosed = opts ? opts.ignoreUnclosed : false\n\n    code = css.charCodeAt(pos)\n\n    switch (code) {\n      case NEWLINE:\n      case SPACE:\n      case TAB:\n      case CR:\n      case FEED: {\n        next = pos\n        do {\n          next += 1\n          code = css.charCodeAt(next)\n        } while (\n          code === SPACE ||\n          code === NEWLINE ||\n          code === TAB ||\n          code === CR ||\n          code === FEED\n        )\n\n        currentToken = ['space', css.slice(pos, next)]\n        pos = next - 1\n        break\n      }\n\n      case OPEN_SQUARE:\n      case CLOSE_SQUARE:\n      case OPEN_CURLY:\n      case CLOSE_CURLY:\n      case COLON:\n      case SEMICOLON:\n      case CLOSE_PARENTHESES: {\n        let controlChar = String.fromCharCode(code)\n        currentToken = [controlChar, controlChar, pos]\n        break\n      }\n\n      case OPEN_PARENTHESES: {\n        prev = buffer.length ? buffer.pop()[1] : ''\n        n = css.charCodeAt(pos + 1)\n        if (\n          prev === 'url' &&\n          n !== SINGLE_QUOTE &&\n          n !== DOUBLE_QUOTE &&\n          n !== SPACE &&\n          n !== NEWLINE &&\n          n !== TAB &&\n          n !== FEED &&\n          n !== CR\n        ) {\n          next = pos\n          do {\n            escaped = false\n            next = css.indexOf(')', next + 1)\n            if (next === -1) {\n              if (ignore || ignoreUnclosed) {\n                next = pos\n                break\n              } else {\n                unclosed('bracket')\n              }\n            }\n            escapePos = next\n            while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n              escapePos -= 1\n              escaped = !escaped\n            }\n          } while (escaped)\n\n          currentToken = ['brackets', css.slice(pos, next + 1), pos, next]\n\n          pos = next\n        } else {\n          next = css.indexOf(')', pos + 1)\n          content = css.slice(pos, next + 1)\n\n          if (next === -1 || RE_BAD_BRACKET.test(content)) {\n            currentToken = ['(', '(', pos]\n          } else {\n            currentToken = ['brackets', content, pos, next]\n            pos = next\n          }\n        }\n\n        break\n      }\n\n      case SINGLE_QUOTE:\n      case DOUBLE_QUOTE: {\n        quote = code === SINGLE_QUOTE ? \"'\" : '\"'\n        next = pos\n        do {\n          escaped = false\n          next = css.indexOf(quote, next + 1)\n          if (next === -1) {\n            if (ignore || ignoreUnclosed) {\n              next = pos + 1\n              break\n            } else {\n              unclosed('string')\n            }\n          }\n          escapePos = next\n          while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n            escapePos -= 1\n            escaped = !escaped\n          }\n        } while (escaped)\n\n        currentToken = ['string', css.slice(pos, next + 1), pos, next]\n        pos = next\n        break\n      }\n\n      case AT: {\n        RE_AT_END.lastIndex = pos + 1\n        RE_AT_END.test(css)\n        if (RE_AT_END.lastIndex === 0) {\n          next = css.length - 1\n        } else {\n          next = RE_AT_END.lastIndex - 2\n        }\n\n        currentToken = ['at-word', css.slice(pos, next + 1), pos, next]\n\n        pos = next\n        break\n      }\n\n      case BACKSLASH: {\n        next = pos\n        escape = true\n        while (css.charCodeAt(next + 1) === BACKSLASH) {\n          next += 1\n          escape = !escape\n        }\n        code = css.charCodeAt(next + 1)\n        if (\n          escape &&\n          code !== SLASH &&\n          code !== SPACE &&\n          code !== NEWLINE &&\n          code !== TAB &&\n          code !== CR &&\n          code !== FEED\n        ) {\n          next += 1\n          if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n            while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n              next += 1\n            }\n            if (css.charCodeAt(next + 1) === SPACE) {\n              next += 1\n            }\n          }\n        }\n\n        currentToken = ['word', css.slice(pos, next + 1), pos, next]\n\n        pos = next\n        break\n      }\n\n      default: {\n        if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n          next = css.indexOf('*/', pos + 2) + 1\n          if (next === 0) {\n            if (ignore || ignoreUnclosed) {\n              next = css.length\n            } else {\n              unclosed('comment')\n            }\n          }\n\n          currentToken = ['comment', css.slice(pos, next + 1), pos, next]\n          pos = next\n        } else {\n          RE_WORD_END.lastIndex = pos + 1\n          RE_WORD_END.test(css)\n          if (RE_WORD_END.lastIndex === 0) {\n            next = css.length - 1\n          } else {\n            next = RE_WORD_END.lastIndex - 2\n          }\n\n          currentToken = ['word', css.slice(pos, next + 1), pos, next]\n          buffer.push(currentToken)\n          pos = next\n        }\n\n        break\n      }\n    }\n\n    pos++\n    return currentToken\n  }\n\n  function back(token) {\n    returned.push(token)\n  }\n\n  return {\n    back,\n    nextToken,\n    endOfFile,\n    position\n  }\n}\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/tokenize.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/warn-once.js":
/*!************************************************!*\
  !*** ../node_modules/postcss/lib/warn-once.js ***!
  \************************************************/
/***/ ((module) => {

"use strict";
eval("\n\nlet printed = {}\n\nmodule.exports = function warnOnce(message) {\n  if (printed[message]) return\n  printed[message] = true\n\n  if (typeof console !== 'undefined' && console.warn) {\n    console.warn(message)\n  }\n}\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/warn-once.js?");

/***/ }),

/***/ "../node_modules/postcss/lib/warning.js":
/*!**********************************************!*\
  !*** ../node_modules/postcss/lib/warning.js ***!
  \**********************************************/
/***/ ((module) => {

"use strict";
eval("\n\nclass Warning {\n  constructor(text, opts = {}) {\n    this.type = 'warning'\n    this.text = text\n\n    if (opts.node && opts.node.source) {\n      let pos = opts.node.positionBy(opts)\n      this.line = pos.line\n      this.column = pos.column\n    }\n\n    for (let opt in opts) this[opt] = opts[opt]\n  }\n\n  toString() {\n    if (this.node) {\n      return this.node.error(this.text, {\n        plugin: this.plugin,\n        index: this.index,\n        word: this.word\n      }).message\n    }\n\n    if (this.plugin) {\n      return this.plugin + ': ' + this.text\n    }\n\n    return this.text\n  }\n}\n\nmodule.exports = Warning\nWarning.default = Warning\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/postcss/lib/warning.js?");

/***/ }),

/***/ "../node_modules/process/browser.js":
/*!******************************************!*\
  !*** ../node_modules/process/browser.js ***!
  \******************************************/
/***/ ((module) => {

eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/process/browser.js?");

/***/ }),

/***/ "../node_modules/sanitize-html/index.js":
/*!**********************************************!*\
  !*** ../node_modules/sanitize-html/index.js ***!
  \**********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

eval("const htmlparser = __webpack_require__(/*! htmlparser2 */ \"../node_modules/htmlparser2/lib/index.js\");\nconst escapeStringRegexp = __webpack_require__(/*! escape-string-regexp */ \"../node_modules/sanitize-html/node_modules/escape-string-regexp/index.js\");\nconst { klona } = __webpack_require__(/*! klona */ \"../node_modules/klona/dist/index.js\");\nconst { isPlainObject } = __webpack_require__(/*! is-plain-object */ \"../node_modules/sanitize-html/node_modules/is-plain-object/dist/is-plain-object.js\");\nconst deepmerge = __webpack_require__(/*! deepmerge */ \"../node_modules/deepmerge/dist/cjs.js\");\nconst parseSrcset = __webpack_require__(/*! parse-srcset */ \"../node_modules/parse-srcset/src/parse-srcset.js\");\nconst { parse: postcssParse } = __webpack_require__(/*! postcss */ \"../node_modules/postcss/lib/postcss.js\");\n// Tags that can conceivably represent stand-alone media.\nconst mediaTags = [\n  'img', 'audio', 'video', 'picture', 'svg',\n  'object', 'map', 'iframe', 'embed'\n];\n// Tags that are inherently vulnerable to being used in XSS attacks.\nconst vulnerableTags = [ 'script', 'style' ];\n\nfunction each(obj, cb) {\n  if (obj) {\n    Object.keys(obj).forEach(function (key) {\n      cb(obj[key], key);\n    });\n  }\n}\n\n// Avoid false positives with .__proto__, .hasOwnProperty, etc.\nfunction has(obj, key) {\n  return ({}).hasOwnProperty.call(obj, key);\n}\n\n// Returns those elements of `a` for which `cb(a)` returns truthy\nfunction filter(a, cb) {\n  const n = [];\n  each(a, function(v) {\n    if (cb(v)) {\n      n.push(v);\n    }\n  });\n  return n;\n}\n\nfunction isEmptyObject(obj) {\n  for (const key in obj) {\n    if (has(obj, key)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction stringifySrcset(parsedSrcset) {\n  return parsedSrcset.map(function(part) {\n    if (!part.url) {\n      throw new Error('URL missing');\n    }\n\n    return (\n      part.url +\n      (part.w ? ` ${part.w}w` : '') +\n      (part.h ? ` ${part.h}h` : '') +\n      (part.d ? ` ${part.d}x` : '')\n    );\n  }).join(', ');\n}\n\nmodule.exports = sanitizeHtml;\n\n// A valid attribute name.\n// We use a tolerant definition based on the set of strings defined by\n// html.spec.whatwg.org/multipage/parsing.html#before-attribute-name-state\n// and html.spec.whatwg.org/multipage/parsing.html#attribute-name-state .\n// The characters accepted are ones which can be appended to the attribute\n// name buffer without triggering a parse error:\n//   * unexpected-equals-sign-before-attribute-name\n//   * unexpected-null-character\n//   * unexpected-character-in-attribute-name\n// We exclude the empty string because it's impossible to get to the after\n// attribute name state with an empty attribute name buffer.\nconst VALID_HTML_ATTRIBUTE_NAME = /^[^\\0\\t\\n\\f\\r /<=>]+$/;\n\n// Ignore the _recursing flag; it's there for recursive\n// invocation as a guard against this exploit:\n// https://github.com/fb55/htmlparser2/issues/105\n\nfunction sanitizeHtml(html, options, _recursing) {\n  let result = '';\n  // Used for hot swapping the result variable with an empty string in order to \"capture\" the text written to it.\n  let tempResult = '';\n\n  function Frame(tag, attribs) {\n    const that = this;\n    this.tag = tag;\n    this.attribs = attribs || {};\n    this.tagPosition = result.length;\n    this.text = ''; // Node inner text\n    this.mediaChildren = [];\n\n    this.updateParentNodeText = function() {\n      if (stack.length) {\n        const parentFrame = stack[stack.length - 1];\n        parentFrame.text += that.text;\n      }\n    };\n\n    this.updateParentNodeMediaChildren = function() {\n      if (stack.length && mediaTags.includes(this.tag)) {\n        const parentFrame = stack[stack.length - 1];\n        parentFrame.mediaChildren.push(this.tag);\n      }\n    };\n  }\n\n  options = Object.assign({}, sanitizeHtml.defaults, options);\n  options.parser = Object.assign({}, htmlParserDefaults, options.parser);\n\n  // vulnerableTags\n  vulnerableTags.forEach(function (tag) {\n    if (\n      options.allowedTags && options.allowedTags.indexOf(tag) > -1 &&\n      !options.allowVulnerableTags\n    ) {\n      console.warn(`\\n\\n⚠️ Your \\`allowedTags\\` option includes, \\`${tag}\\`, which is inherently\\nvulnerable to XSS attacks. Please remove it from \\`allowedTags\\`.\\nOr, to disable this warning, add the \\`allowVulnerableTags\\` option\\nand ensure you are accounting for this risk.\\n\\n`);\n    }\n  });\n\n  // Tags that contain something other than HTML, or where discarding\n  // the text when the tag is disallowed makes sense for other reasons.\n  // If we are not allowing these tags, we should drop their content too.\n  // For other tags you would drop the tag but keep its content.\n  const nonTextTagsArray = options.nonTextTags || [\n    'script',\n    'style',\n    'textarea',\n    'option'\n  ];\n  let allowedAttributesMap;\n  let allowedAttributesGlobMap;\n  if (options.allowedAttributes) {\n    allowedAttributesMap = {};\n    allowedAttributesGlobMap = {};\n    each(options.allowedAttributes, function(attributes, tag) {\n      allowedAttributesMap[tag] = [];\n      const globRegex = [];\n      attributes.forEach(function(obj) {\n        if (typeof obj === 'string' && obj.indexOf('*') >= 0) {\n          globRegex.push(escapeStringRegexp(obj).replace(/\\\\\\*/g, '.*'));\n        } else {\n          allowedAttributesMap[tag].push(obj);\n        }\n      });\n      allowedAttributesGlobMap[tag] = new RegExp('^(' + globRegex.join('|') + ')$');\n    });\n  }\n  const allowedClassesMap = {};\n  each(options.allowedClasses, function(classes, tag) {\n    // Implicitly allows the class attribute\n    if (allowedAttributesMap) {\n      if (!has(allowedAttributesMap, tag)) {\n        allowedAttributesMap[tag] = [];\n      }\n      allowedAttributesMap[tag].push('class');\n    }\n\n    allowedClassesMap[tag] = classes;\n  });\n\n  const transformTagsMap = {};\n  let transformTagsAll;\n  each(options.transformTags, function(transform, tag) {\n    let transFun;\n    if (typeof transform === 'function') {\n      transFun = transform;\n    } else if (typeof transform === 'string') {\n      transFun = sanitizeHtml.simpleTransform(transform);\n    }\n    if (tag === '*') {\n      transformTagsAll = transFun;\n    } else {\n      transformTagsMap[tag] = transFun;\n    }\n  });\n\n  let depth;\n  let stack;\n  let skipMap;\n  let transformMap;\n  let skipText;\n  let skipTextDepth;\n  let addedText = false;\n\n  initializeState();\n\n  const parser = new htmlparser.Parser({\n    onopentag: function(name, attribs) {\n      // If `enforceHtmlBoundary` is `true` and this has found the opening\n      // `html` tag, reset the state.\n      if (options.enforceHtmlBoundary && name === 'html') {\n        initializeState();\n      }\n\n      if (skipText) {\n        skipTextDepth++;\n        return;\n      }\n      const frame = new Frame(name, attribs);\n      stack.push(frame);\n\n      let skip = false;\n      const hasText = !!frame.text;\n      let transformedTag;\n      if (has(transformTagsMap, name)) {\n        transformedTag = transformTagsMap[name](name, attribs);\n\n        frame.attribs = attribs = transformedTag.attribs;\n\n        if (transformedTag.text !== undefined) {\n          frame.innerText = transformedTag.text;\n        }\n\n        if (name !== transformedTag.tagName) {\n          frame.name = name = transformedTag.tagName;\n          transformMap[depth] = transformedTag.tagName;\n        }\n      }\n      if (transformTagsAll) {\n        transformedTag = transformTagsAll(name, attribs);\n\n        frame.attribs = attribs = transformedTag.attribs;\n        if (name !== transformedTag.tagName) {\n          frame.name = name = transformedTag.tagName;\n          transformMap[depth] = transformedTag.tagName;\n        }\n      }\n\n      if ((options.allowedTags && options.allowedTags.indexOf(name) === -1) || (options.disallowedTagsMode === 'recursiveEscape' && !isEmptyObject(skipMap)) || (options.nestingLimit != null && depth >= options.nestingLimit)) {\n        skip = true;\n        skipMap[depth] = true;\n        if (options.disallowedTagsMode === 'discard') {\n          if (nonTextTagsArray.indexOf(name) !== -1) {\n            skipText = true;\n            skipTextDepth = 1;\n          }\n        }\n        skipMap[depth] = true;\n      }\n      depth++;\n      if (skip) {\n        if (options.disallowedTagsMode === 'discard') {\n          // We want the contents but not this tag\n          return;\n        }\n        tempResult = result;\n        result = '';\n      }\n      result += '<' + name;\n      if (!allowedAttributesMap || has(allowedAttributesMap, name) || allowedAttributesMap['*']) {\n        each(attribs, function(value, a) {\n          if (!VALID_HTML_ATTRIBUTE_NAME.test(a)) {\n            // This prevents part of an attribute name in the output from being\n            // interpreted as the end of an attribute, or end of a tag.\n            delete frame.attribs[a];\n            return;\n          }\n          let parsed;\n          // check allowedAttributesMap for the element and attribute and modify the value\n          // as necessary if there are specific values defined.\n          let passedAllowedAttributesMapCheck = false;\n          if (!allowedAttributesMap ||\n            (has(allowedAttributesMap, name) && allowedAttributesMap[name].indexOf(a) !== -1) ||\n            (allowedAttributesMap['*'] && allowedAttributesMap['*'].indexOf(a) !== -1) ||\n            (has(allowedAttributesGlobMap, name) && allowedAttributesGlobMap[name].test(a)) ||\n            (allowedAttributesGlobMap['*'] && allowedAttributesGlobMap['*'].test(a))) {\n            passedAllowedAttributesMapCheck = true;\n          } else if (allowedAttributesMap && allowedAttributesMap[name]) {\n            for (const o of allowedAttributesMap[name]) {\n              if (isPlainObject(o) && o.name && (o.name === a)) {\n                passedAllowedAttributesMapCheck = true;\n                let newValue = '';\n                if (o.multiple === true) {\n                  // verify the values that are allowed\n                  const splitStrArray = value.split(' ');\n                  for (const s of splitStrArray) {\n                    if (o.values.indexOf(s) !== -1) {\n                      if (newValue === '') {\n                        newValue = s;\n                      } else {\n                        newValue += ' ' + s;\n                      }\n                    }\n                  }\n                } else if (o.values.indexOf(value) >= 0) {\n                  // verified an allowed value matches the entire attribute value\n                  newValue = value;\n                }\n                value = newValue;\n              }\n            }\n          }\n          if (passedAllowedAttributesMapCheck) {\n            if (options.allowedSchemesAppliedToAttributes.indexOf(a) !== -1) {\n              if (naughtyHref(name, value)) {\n                delete frame.attribs[a];\n                return;\n              }\n            }\n            if (name === 'iframe' && a === 'src') {\n              let allowed = true;\n              try {\n                // Chrome accepts \\ as a substitute for / in the // at the\n                // start of a URL, so rewrite accordingly to prevent exploit.\n                // Also drop any whitespace at that point in the URL\n                value = value.replace(/^(\\w+:)?\\s*[\\\\/]\\s*[\\\\/]/, '$1//');\n                if (value.startsWith('relative:')) {\n                  // An attempt to exploit our workaround for base URLs being\n                  // mandatory for relative URL validation in the WHATWG\n                  // URL parser, reject it\n                  throw new Error('relative: exploit attempt');\n                }\n                // naughtyHref is in charge of whether protocol relative URLs\n                // are cool. Here we are concerned just with allowed hostnames and\n                // whether to allow relative URLs.\n                //\n                // Build a placeholder \"base URL\" against which any reasonable\n                // relative URL may be parsed successfully\n                let base = 'relative://relative-site';\n                for (let i = 0; (i < 100); i++) {\n                  base += `/${i}`;\n                }\n                const parsed = new URL(value, base);\n                const isRelativeUrl = parsed && parsed.hostname === 'relative-site' && parsed.protocol === 'relative:';\n                if (isRelativeUrl) {\n                  // default value of allowIframeRelativeUrls is true\n                  // unless allowedIframeHostnames or allowedIframeDomains specified\n                  allowed = has(options, 'allowIframeRelativeUrls')\n                    ? options.allowIframeRelativeUrls\n                    : (!options.allowedIframeHostnames && !options.allowedIframeDomains);\n                } else if (options.allowedIframeHostnames || options.allowedIframeDomains) {\n                  const allowedHostname = (options.allowedIframeHostnames || []).find(function (hostname) {\n                    return hostname === parsed.hostname;\n                  });\n                  const allowedDomain = (options.allowedIframeDomains || []).find(function(domain) {\n                    return parsed.hostname === domain || parsed.hostname.endsWith(`.${domain}`);\n                  });\n                  allowed = allowedHostname || allowedDomain;\n                }\n              } catch (e) {\n                // Unparseable iframe src\n                allowed = false;\n              }\n              if (!allowed) {\n                delete frame.attribs[a];\n                return;\n              }\n            }\n            if (a === 'srcset') {\n              try {\n                parsed = parseSrcset(value);\n                parsed.forEach(function(value) {\n                  if (naughtyHref('srcset', value.url)) {\n                    value.evil = true;\n                  }\n                });\n                parsed = filter(parsed, function(v) {\n                  return !v.evil;\n                });\n                if (!parsed.length) {\n                  delete frame.attribs[a];\n                  return;\n                } else {\n                  value = stringifySrcset(filter(parsed, function(v) {\n                    return !v.evil;\n                  }));\n                  frame.attribs[a] = value;\n                }\n              } catch (e) {\n                // Unparseable srcset\n                delete frame.attribs[a];\n                return;\n              }\n            }\n            if (a === 'class') {\n              const allowedSpecificClasses = allowedClassesMap[name];\n              const allowedWildcardClasses = allowedClassesMap['*'];\n              if (allowedSpecificClasses && allowedWildcardClasses) {\n                value = filterClasses(value, deepmerge(allowedSpecificClasses, allowedWildcardClasses));\n              } else {\n                value = filterClasses(value, allowedSpecificClasses || allowedWildcardClasses);\n              }\n              if (!value.length) {\n                delete frame.attribs[a];\n                return;\n              }\n            }\n            if (a === 'style') {\n              try {\n                const abstractSyntaxTree = postcssParse(name + ' {' + value + '}');\n                const filteredAST = filterCss(abstractSyntaxTree, options.allowedStyles);\n\n                value = stringifyStyleAttributes(filteredAST);\n\n                if (value.length === 0) {\n                  delete frame.attribs[a];\n                  return;\n                }\n              } catch (e) {\n                delete frame.attribs[a];\n                return;\n              }\n            }\n            result += ' ' + a;\n            if (value && value.length) {\n              result += '=\"' + escapeHtml(value, true) + '\"';\n            }\n          } else {\n            delete frame.attribs[a];\n          }\n        });\n      }\n      if (options.selfClosing.indexOf(name) !== -1) {\n        result += ' />';\n      } else {\n        result += '>';\n        if (frame.innerText && !hasText && !options.textFilter) {\n          result += escapeHtml(frame.innerText);\n          addedText = true;\n        }\n      }\n      if (skip) {\n        result = tempResult + escapeHtml(result);\n        tempResult = '';\n      }\n    },\n    ontext: function(text) {\n      if (skipText) {\n        return;\n      }\n      const lastFrame = stack[stack.length - 1];\n      let tag;\n\n      if (lastFrame) {\n        tag = lastFrame.tag;\n        // If inner text was set by transform function then let's use it\n        text = lastFrame.innerText !== undefined ? lastFrame.innerText : text;\n      }\n\n      if (options.disallowedTagsMode === 'discard' && ((tag === 'script') || (tag === 'style'))) {\n        // htmlparser2 gives us these as-is. Escaping them ruins the content. Allowing\n        // script tags is, by definition, game over for XSS protection, so if that's\n        // your concern, don't allow them. The same is essentially true for style tags\n        // which have their own collection of XSS vectors.\n        result += text;\n      } else {\n        const escaped = escapeHtml(text, false);\n        if (options.textFilter && !addedText) {\n          result += options.textFilter(escaped, tag);\n        } else if (!addedText) {\n          result += escaped;\n        }\n      }\n      if (stack.length) {\n        const frame = stack[stack.length - 1];\n        frame.text += text;\n      }\n    },\n    onclosetag: function(name) {\n\n      if (skipText) {\n        skipTextDepth--;\n        if (!skipTextDepth) {\n          skipText = false;\n        } else {\n          return;\n        }\n      }\n\n      const frame = stack.pop();\n      if (!frame) {\n        // Do not crash on bad markup\n        return;\n      }\n      skipText = options.enforceHtmlBoundary ? name === 'html' : false;\n      depth--;\n      const skip = skipMap[depth];\n      if (skip) {\n        delete skipMap[depth];\n        if (options.disallowedTagsMode === 'discard') {\n          frame.updateParentNodeText();\n          return;\n        }\n        tempResult = result;\n        result = '';\n      }\n\n      if (transformMap[depth]) {\n        name = transformMap[depth];\n        delete transformMap[depth];\n      }\n\n      if (options.exclusiveFilter && options.exclusiveFilter(frame)) {\n        result = result.substr(0, frame.tagPosition);\n        return;\n      }\n\n      frame.updateParentNodeMediaChildren();\n      frame.updateParentNodeText();\n\n      if (options.selfClosing.indexOf(name) !== -1) {\n        // Already output />\n        if (skip) {\n          result = tempResult;\n          tempResult = '';\n        }\n        return;\n      }\n\n      result += '</' + name + '>';\n      if (skip) {\n        result = tempResult + escapeHtml(result);\n        tempResult = '';\n      }\n    }\n  }, options.parser);\n  parser.write(html);\n  parser.end();\n\n  return result;\n\n  function initializeState() {\n    result = '';\n    depth = 0;\n    stack = [];\n    skipMap = {};\n    transformMap = {};\n    skipText = false;\n    skipTextDepth = 0;\n  }\n\n  function escapeHtml(s, quote) {\n    if (typeof (s) !== 'string') {\n      s = s + '';\n    }\n    if (options.parser.decodeEntities) {\n      s = s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n      if (quote) {\n        s = s.replace(/\"/g, '&quot;');\n      }\n    }\n    // TODO: this is inadequate because it will pass `&0;`. This approach\n    // will not work, each & must be considered with regard to whether it\n    // is followed by a 100% syntactically valid entity or not, and escaped\n    // if it is not. If this bothers you, don't set parser.decodeEntities\n    // to false. (The default is true.)\n    s = s.replace(/&(?![a-zA-Z0-9#]{1,20};)/g, '&amp;') // Match ampersands not part of existing HTML entity\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;');\n    if (quote) {\n      s = s.replace(/\"/g, '&quot;');\n    }\n    return s;\n  }\n\n  function naughtyHref(name, href) {\n    // Browsers ignore character codes of 32 (space) and below in a surprising\n    // number of situations. Start reading here:\n    // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet#Embedded_tab\n    // eslint-disable-next-line no-control-regex\n    href = href.replace(/[\\x00-\\x20]+/g, '');\n    // Clobber any comments in URLs, which the browser might\n    // interpret inside an XML data island, allowing\n    // a javascript: URL to be snuck through\n    href = href.replace(/<!--.*?-->/g, '');\n    // Case insensitive so we don't get faked out by JAVASCRIPT #1\n    // Allow more characters after the first so we don't get faked\n    // out by certain schemes browsers accept\n    const matches = href.match(/^([a-zA-Z][a-zA-Z0-9.\\-+]*):/);\n    if (!matches) {\n      // Protocol-relative URL starting with any combination of '/' and '\\'\n      if (href.match(/^[/\\\\]{2}/)) {\n        return !options.allowProtocolRelative;\n      }\n\n      // No scheme\n      return false;\n    }\n    const scheme = matches[1].toLowerCase();\n\n    if (has(options.allowedSchemesByTag, name)) {\n      return options.allowedSchemesByTag[name].indexOf(scheme) === -1;\n    }\n\n    return !options.allowedSchemes || options.allowedSchemes.indexOf(scheme) === -1;\n  }\n\n  /**\n   * Filters user input css properties by whitelisted regex attributes.\n   *\n   * @param {object} abstractSyntaxTree  - Object representation of CSS attributes.\n   * @property {array[Declaration]} abstractSyntaxTree.nodes[0] - Each object cointains prop and value key, i.e { prop: 'color', value: 'red' }.\n   * @param {object} allowedStyles       - Keys are properties (i.e color), value is list of permitted regex rules (i.e /green/i).\n   * @return {object}                    - Abstract Syntax Tree with filtered style attributes.\n   */\n  function filterCss(abstractSyntaxTree, allowedStyles) {\n    if (!allowedStyles) {\n      return abstractSyntaxTree;\n    }\n\n    const filteredAST = klona(abstractSyntaxTree);\n    const astRules = abstractSyntaxTree.nodes[0];\n    let selectedRule;\n\n    // Merge global and tag-specific styles into new AST.\n    if (allowedStyles[astRules.selector] && allowedStyles['*']) {\n      selectedRule = deepmerge(\n        allowedStyles[astRules.selector],\n        allowedStyles['*']\n      );\n    } else {\n      selectedRule = allowedStyles[astRules.selector] || allowedStyles['*'];\n    }\n\n    if (selectedRule) {\n      filteredAST.nodes[0].nodes = astRules.nodes.reduce(filterDeclarations(selectedRule), []);\n    }\n\n    return filteredAST;\n  }\n\n  /**\n   * Extracts the style attribues from an AbstractSyntaxTree and formats those\n   * values in the inline style attribute format.\n   *\n   * @param  {AbstractSyntaxTree} filteredAST\n   * @return {string}             - Example: \"color:yellow;text-align:center;font-family:helvetica;\"\n   */\n  function stringifyStyleAttributes(filteredAST) {\n    return filteredAST.nodes[0].nodes\n      .reduce(function(extractedAttributes, attributeObject) {\n        extractedAttributes.push(\n          attributeObject.prop + ':' + attributeObject.value\n        );\n        return extractedAttributes;\n      }, [])\n      .join(';');\n  }\n\n  /**\n    * Filters the existing attributes for the given property. Discards any attributes\n    * which don't match the whitelist.\n    *\n    * @param  {object} selectedRule             - Example: { color: red, font-family: helvetica }\n    * @param  {array} allowedDeclarationsList   - List of declarations which pass whitelisting.\n    * @param  {object} attributeObject          - Object representing the current css property.\n    * @property {string} attributeObject.type   - Typically 'declaration'.\n    * @property {string} attributeObject.prop   - The CSS property, i.e 'color'.\n    * @property {string} attributeObject.value  - The corresponding value to the css property, i.e 'red'.\n    * @return {function}                        - When used in Array.reduce, will return an array of Declaration objects\n    */\n  function filterDeclarations(selectedRule) {\n    return function (allowedDeclarationsList, attributeObject) {\n      // If this property is whitelisted...\n      if (has(selectedRule, attributeObject.prop)) {\n        const matchesRegex = selectedRule[attributeObject.prop].some(function(regularExpression) {\n          return regularExpression.test(attributeObject.value);\n        });\n\n        if (matchesRegex) {\n          allowedDeclarationsList.push(attributeObject);\n        }\n      }\n      return allowedDeclarationsList;\n    };\n  }\n\n  function filterClasses(classes, allowed) {\n    if (!allowed) {\n      // The class attribute is allowed without filtering on this tag\n      return classes;\n    }\n    classes = classes.split(/\\s+/);\n    return classes.filter(function(clss) {\n      return allowed.indexOf(clss) !== -1;\n    }).join(' ');\n  }\n}\n\n// Defaults are accessible to you so that you can use them as a starting point\n// programmatically if you wish\n\nconst htmlParserDefaults = {\n  decodeEntities: true\n};\nsanitizeHtml.defaults = {\n  allowedTags: [\n    // Sections derived from MDN element categories and limited to the more\n    // benign categories.\n    // https://developer.mozilla.org/en-US/docs/Web/HTML/Element\n    // Content sectioning\n    'address', 'article', 'aside', 'footer', 'header',\n    'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hgroup',\n    'main', 'nav', 'section',\n    // Text content\n    'blockquote', 'dd', 'div', 'dl', 'dt', 'figcaption', 'figure',\n    'hr', 'li', 'main', 'ol', 'p', 'pre', 'ul',\n    // Inline text semantics\n    'a', 'abbr', 'b', 'bdi', 'bdo', 'br', 'cite', 'code', 'data', 'dfn',\n    'em', 'i', 'kbd', 'mark', 'q',\n    'rb', 'rp', 'rt', 'rtc', 'ruby',\n    's', 'samp', 'small', 'span', 'strong', 'sub', 'sup', 'time', 'u', 'var', 'wbr',\n    // Table content\n    'caption', 'col', 'colgroup', 'table', 'tbody', 'td', 'tfoot', 'th',\n    'thead', 'tr'\n  ],\n  disallowedTagsMode: 'discard',\n  allowedAttributes: {\n    a: [ 'href', 'name', 'target' ],\n    // We don't currently allow img itself by default, but this\n    // would make sense if we did. You could add srcset here,\n    // and if you do the URL is checked for safety\n    img: [ 'src' ]\n  },\n  // Lots of these won't come up by default because we don't allow them\n  selfClosing: [ 'img', 'br', 'hr', 'area', 'base', 'basefont', 'input', 'link', 'meta' ],\n  // URL schemes we permit\n  allowedSchemes: [ 'http', 'https', 'ftp', 'mailto', 'tel' ],\n  allowedSchemesByTag: {},\n  allowedSchemesAppliedToAttributes: [ 'href', 'src', 'cite' ],\n  allowProtocolRelative: true,\n  enforceHtmlBoundary: false\n};\n\nsanitizeHtml.simpleTransform = function(newTagName, newAttribs, merge) {\n  merge = (merge === undefined) ? true : merge;\n  newAttribs = newAttribs || {};\n\n  return function(tagName, attribs) {\n    let attrib;\n    if (merge) {\n      for (attrib in newAttribs) {\n        attribs[attrib] = newAttribs[attrib];\n      }\n    } else {\n      attribs = newAttribs;\n    }\n\n    return {\n      tagName: newTagName,\n      attribs: attribs\n    };\n  };\n};\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/sanitize-html/index.js?");

/***/ }),

/***/ "../node_modules/sanitize-html/node_modules/escape-string-regexp/index.js":
/*!********************************************************************************!*\
  !*** ../node_modules/sanitize-html/node_modules/escape-string-regexp/index.js ***!
  \********************************************************************************/
/***/ ((module) => {

"use strict";
eval("\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a \\unnnn escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n};\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/sanitize-html/node_modules/escape-string-regexp/index.js?");

/***/ }),

/***/ "../node_modules/sanitize-html/node_modules/is-plain-object/dist/is-plain-object.js":
/*!******************************************************************************************!*\
  !*** ../node_modules/sanitize-html/node_modules/is-plain-object/dist/is-plain-object.js ***!
  \******************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n\n/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n  return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n  var ctor,prot;\n\n  if (isObject(o) === false) return false;\n\n  // If has modified constructor\n  ctor = o.constructor;\n  if (ctor === undefined) return true;\n\n  // If has modified prototype\n  prot = ctor.prototype;\n  if (isObject(prot) === false) return false;\n\n  // If constructor does not have an Object-specific method\n  if (prot.hasOwnProperty('isPrototypeOf') === false) {\n    return false;\n  }\n\n  // Most likely a plain Object\n  return true;\n}\n\nexports.isPlainObject = isPlainObject;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/sanitize-html/node_modules/is-plain-object/dist/is-plain-object.js?");

/***/ })

}]);